take4-console 0.15.1 → 0.25.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 (63) hide show
  1. package/CHANGELOG.md +360 -0
  2. package/dist/Screen/InterfaceBuilder.d.mts +15 -4
  3. package/dist/Screen/InterfaceBuilder.d.mts.map +1 -1
  4. package/dist/Screen/InterfaceBuilder.mjs +104 -8
  5. package/dist/Screen/InterfaceBuilder.mjs.map +1 -1
  6. package/dist/Screen/Pos.d.mts +12 -0
  7. package/dist/Screen/Pos.d.mts.map +1 -1
  8. package/dist/Screen/Pos.mjs +23 -1
  9. package/dist/Screen/Pos.mjs.map +1 -1
  10. package/dist/Screen/Screen.d.mts +77 -3
  11. package/dist/Screen/Screen.d.mts.map +1 -1
  12. package/dist/Screen/Screen.mjs +168 -3
  13. package/dist/Screen/Screen.mjs.map +1 -1
  14. package/dist/Screen/Size.d.mts +49 -6
  15. package/dist/Screen/Size.d.mts.map +1 -1
  16. package/dist/Screen/Size.mjs +81 -7
  17. package/dist/Screen/Size.mjs.map +1 -1
  18. package/dist/Screen/Window.d.mts +131 -20
  19. package/dist/Screen/Window.d.mts.map +1 -1
  20. package/dist/Screen/Window.mjs +474 -57
  21. package/dist/Screen/Window.mjs.map +1 -1
  22. package/dist/Screen/WindowManager.d.mts +85 -5
  23. package/dist/Screen/WindowManager.d.mts.map +1 -1
  24. package/dist/Screen/WindowManager.mjs +279 -26
  25. package/dist/Screen/WindowManager.mjs.map +1 -1
  26. package/dist/Screen/controls/ListBox.d.mts +34 -12
  27. package/dist/Screen/controls/ListBox.d.mts.map +1 -1
  28. package/dist/Screen/controls/ListBox.mjs +127 -25
  29. package/dist/Screen/controls/ListBox.mjs.map +1 -1
  30. package/dist/Screen/controls/TextArea.d.mts +15 -1
  31. package/dist/Screen/controls/TextArea.d.mts.map +1 -1
  32. package/dist/Screen/controls/TextArea.mjs +74 -1
  33. package/dist/Screen/controls/TextArea.mjs.map +1 -1
  34. package/dist/Screen/controls/TextBox.d.mts +13 -1
  35. package/dist/Screen/controls/TextBox.d.mts.map +1 -1
  36. package/dist/Screen/controls/TextBox.mjs +36 -1
  37. package/dist/Screen/controls/TextBox.mjs.map +1 -1
  38. package/dist/Screen/textWidth.d.mts +13 -0
  39. package/dist/Screen/textWidth.d.mts.map +1 -0
  40. package/dist/Screen/textWidth.mjs +188 -0
  41. package/dist/Screen/textWidth.mjs.map +1 -0
  42. package/dist/Screen/types.d.mts +336 -20
  43. package/dist/Screen/types.d.mts.map +1 -1
  44. package/dist/Screen/types.mjs.map +1 -1
  45. package/dist/index.d.mts +3 -2
  46. package/dist/index.d.mts.map +1 -1
  47. package/dist/index.mjs +3 -1
  48. package/dist/index.mjs.map +1 -1
  49. package/package.json +1 -1
  50. package/src/Screen/InterfaceBuilder.mts +116 -20
  51. package/src/Screen/Pos.mts +24 -1
  52. package/src/Screen/Screen.mts +192 -4
  53. package/src/Screen/Size.mts +97 -12
  54. package/src/Screen/Window.mts +463 -63
  55. package/src/Screen/WindowManager.mts +301 -29
  56. package/src/Screen/controls/ListBox.mts +151 -32
  57. package/src/Screen/controls/TextArea.mts +82 -1
  58. package/src/Screen/controls/TextBox.mts +40 -1
  59. package/src/Screen/textWidth.mts +186 -0
  60. package/src/Screen/types.mts +328 -23
  61. package/src/demo.mts +232 -20
  62. package/src/index.mts +23 -3
  63. package/src/layout.yaml +56 -24
@@ -1,5 +1,7 @@
1
1
  import type { Pos } from './Pos.mjs';
2
2
  import type { Size } from './Size.mjs';
3
+ import type { Window } from './Window.mjs';
4
+ import type { StyleRegistry } from './StyleRegistry.mjs';
3
5
  /** Text and background color, expressed as ANSI color number (0–255) or hex string (e.g. '#ff0000'). */
4
6
  export type Color = number | string;
5
7
  /** Name of the default background style used by windows and controls. */
@@ -48,8 +50,60 @@ export interface TerminalSize {
48
50
  width: number;
49
51
  height: number;
50
52
  }
51
- /** Box-drawing character style for window borders. */
52
- export type BorderStyle = 'single' | 'double' | 'rounded';
53
+ /** Constructor options for Screen. All fields are optional; defaults preserve
54
+ * the pre-0.19.0 behaviour where Screen does not touch the terminal state on
55
+ * construction (WindowManager.run/stop handle alt-screen and cursor hiding).
56
+ * Setting any flag here lets a Screen-only consumer (no WindowManager) opt
57
+ * into the same lifecycle semantics without writing the boilerplate by hand. */
58
+ export interface ScreenOptions {
59
+ /** Switch to the terminal's alternate screen buffer on construction and
60
+ * restore the primary buffer on dispose() / process exit. Default: false. */
61
+ altScreen?: boolean;
62
+ /** Hide the hardware cursor on construction and restore on dispose() /
63
+ * process exit. Default: false. */
64
+ hideCursor?: boolean;
65
+ /** Soft cap on render frequency in frames per second. Stored on the Screen
66
+ * for inspection; full enforcement (frame coalescing) lands with backlog
67
+ * item P2-47. Default: undefined (uncapped). */
68
+ targetFps?: number;
69
+ }
70
+ /** Statistics emitted by the Screen 'frame' event after each render() call. */
71
+ export interface ScreenFrameStats {
72
+ /** Wall-clock duration of the render() call in milliseconds. */
73
+ ms: number;
74
+ }
75
+ /** Box-drawing character style for window borders.
76
+ * - 'single' ─│┌┐└┘ classic light box drawing
77
+ * - 'double' ═║╔╗╚╝ double-line box drawing
78
+ * - 'rounded' ─│╭╮╰╯ light box with rounded corners
79
+ * - 'thick' ━┃┏┓┗┛ heavy / bold box drawing
80
+ * - 'dashed' ╌╎┌┐└┘ dashed lines with light corners
81
+ * - 'ascii' -|+ plain ASCII fallback for non-Unicode terminals
82
+ * - 'none' placeholder equivalent to no border (no insets, no painting). */
83
+ export type BorderStyle = 'single' | 'double' | 'rounded' | 'thick' | 'dashed' | 'ascii' | 'none';
84
+ /** Glyphs used to draw a window border. The four corners and the two edge
85
+ * characters are mandatory; T-junctions and the cross are optional and only
86
+ * used by composite controls (tables, split panes) that draw inner lines. */
87
+ export interface BorderChars {
88
+ /** Horizontal edge glyph (top and bottom rows). */
89
+ horizontal: string;
90
+ /** Vertical edge glyph (left and right columns). */
91
+ vertical: string;
92
+ topLeft: string;
93
+ topRight: string;
94
+ bottomLeft: string;
95
+ bottomRight: string;
96
+ /** T-junction joining a horizontal line to the right side of a vertical line. */
97
+ verticalLeft?: string;
98
+ /** T-junction joining a horizontal line to the left side of a vertical line. */
99
+ verticalRight?: string;
100
+ /** T-junction joining a vertical line to the bottom of a horizontal line. */
101
+ horizontalTop?: string;
102
+ /** T-junction joining a vertical line to the top of a horizontal line. */
103
+ horizontalBottom?: string;
104
+ /** Four-way intersection. */
105
+ cross?: string;
106
+ }
53
107
  /** Per-side border configuration. */
54
108
  export interface WindowBorder {
55
109
  top?: boolean;
@@ -60,6 +114,10 @@ export interface WindowBorder {
60
114
  style?: BorderStyle;
61
115
  /** Border color. Default: inherits from cell. */
62
116
  color?: Color;
117
+ /** Optional per-glyph overrides applied on top of the chosen `style`'s char set.
118
+ * Useful for swapping individual characters (e.g. a custom corner) without
119
+ * redefining the entire set. */
120
+ chars?: Partial<BorderChars>;
63
121
  }
64
122
  /** Common properties shared by Window and all controls. Passed as the first constructor parameter. */
65
123
  export interface WindowProperties {
@@ -81,8 +139,38 @@ export interface WindowProperties {
81
139
  disabled?: boolean;
82
140
  /** Text label displayed by the control. Default: ''. */
83
141
  label?: string;
142
+ /** Layout algorithm applied to the direct children of this window. Default:
143
+ * 'absolute' (pre-0.24 behaviour — each child is positioned by its Pos/Size).
144
+ * Setting this to 'row', 'column', or 'grid' enables flex-style auto-layout:
145
+ * the engine distributes the inner area, honours `gap` / `padding` /
146
+ * `alignItems` / `justifyContent`, and grows children with `Size.flex(...)`
147
+ * to fill remaining space. */
148
+ layout?: LayoutMode;
149
+ /** Spacing (in cells) inserted between adjacent children when `layout` is
150
+ * 'row', 'column', or 'grid'. Ignored by 'absolute' layout. Default: 0. */
151
+ gap?: number;
152
+ /** Extra inset applied inside the border — children are laid out within the
153
+ * padded inner area, and `getInnerSize()` / `getInnerOffset()` reflect the
154
+ * padding as well as the border. Default: 0 on every side. */
155
+ padding?: PaddingSpec;
156
+ /** Number of columns for `layout: 'grid'`. Children are placed row-major,
157
+ * so `gridColumns` implicitly determines the number of rows from the child
158
+ * count. Default: 1. */
159
+ gridColumns?: number;
160
+ /** Cross-axis alignment for `layout: 'row'` or `layout: 'column'`.
161
+ * Default: 'stretch' (children are stretched to fill the cross axis). */
162
+ alignItems?: AlignItems;
163
+ /** Main-axis distribution of leftover space for `layout: 'row'` / `'column'`
164
+ * when no child consumes it via flex-grow. Default: 'start'. */
165
+ justifyContent?: JustifyContent;
84
166
  }
85
- /** Internal per-axis position spec used by Pos. */
167
+ /** Internal per-axis position spec used by Pos.
168
+ * - 'start' / 'end' / 'pct' / 'center' are resolved against the parent's
169
+ * inner area by the regular absolute-layout path.
170
+ * - 'flex' marks the child as belonging to a flex layout slot; the final
171
+ * (x, y) is computed by the parent's layout engine (see `WindowProperties.layout`).
172
+ * The `order` field lets users reorder flex children without changing the
173
+ * addChild() insertion order. */
86
174
  export type AxisSpec = {
87
175
  mode: 'start';
88
176
  value: number;
@@ -94,24 +182,94 @@ export type AxisSpec = {
94
182
  value: number;
95
183
  } | {
96
184
  mode: 'center';
185
+ } | {
186
+ mode: 'flex';
187
+ order: number;
188
+ };
189
+ /** Basis value stored inside `{ mode: 'flex' }` DimSpec entries. Supports
190
+ * absolute pixel values and parent-relative percentages. */
191
+ export type FlexBasis = {
192
+ kind: 'abs';
193
+ value: number;
194
+ } | {
195
+ kind: 'pct';
196
+ value: number;
97
197
  };
98
- /** Internal per-axis size spec used by Size. */
198
+ /** Internal per-axis size spec used by Size.
199
+ * - 'abs' / 'pct' mirror the pre-flex behaviour (fixed pixels or % of parent).
200
+ * - 'flex' marks the child as a flex item; the parent's layout engine
201
+ * distributes the inner area in proportion to `grow` and shrinks in
202
+ * proportion to `shrink` when space is tight. `basis` is the starting
203
+ * main-axis size before distribution (default `{ kind: 'abs', value: 0 }`).
204
+ * - 'content' marks the child as auto-sized; the layout engine measures the
205
+ * child's natural size (its current Region dimensions) and uses that. */
99
206
  export type DimSpec = {
100
207
  mode: 'abs';
101
208
  value: number;
102
209
  } | {
103
210
  mode: 'pct';
104
211
  value: number;
212
+ } | {
213
+ mode: 'flex';
214
+ grow: number;
215
+ shrink: number;
216
+ basis: FlexBasis;
217
+ } | {
218
+ mode: 'content';
105
219
  };
220
+ /** Layout algorithm applied to a window's direct children.
221
+ * - 'absolute' (default): each child is positioned/sized via its own Pos/Size,
222
+ * matching the pre-0.24 behaviour — existing layouts continue to work unchanged.
223
+ * - 'row' : children flow horizontally; main axis = width, cross axis = height.
224
+ * - 'column' : children flow vertically; main axis = height, cross axis = width.
225
+ * - 'grid' : children are placed in a uniform N-column grid (see `gridColumns`). */
226
+ export type LayoutMode = 'absolute' | 'row' | 'column' | 'grid';
227
+ /** Cross-axis alignment for flex layouts (row/column). Default: 'stretch'. */
228
+ export type AlignItems = 'start' | 'center' | 'end' | 'stretch';
229
+ /** Main-axis distribution of leftover space when no flex-grow child consumes it.
230
+ * Default: 'start'. */
231
+ export type JustifyContent = 'start' | 'center' | 'end' | 'space-between' | 'space-around';
232
+ /** Resolved per-side padding values (in cells). */
233
+ export interface Padding {
234
+ top: number;
235
+ right: number;
236
+ bottom: number;
237
+ left: number;
238
+ }
239
+ /** User-supplied padding: a uniform number, a [vertical, horizontal] tuple, or
240
+ * a partial per-side record (missing sides default to 0). */
241
+ export type PaddingSpec = number | [number, number] | Partial<Padding>;
106
242
  /** Options for Window.writeText() – position defaults to (0, 0). */
107
243
  export interface WriteTextOptions {
108
244
  /** Column to start writing at. Default: 0. */
109
245
  x?: number;
110
246
  /** Row to start writing at. Default: 0. */
111
247
  y?: number;
112
- /** Style ID registered in a StyleRegistry. Default: 0 (no style). */
248
+ /** Base style ID merged under every segment's style. Default: auto-picked
249
+ * from disabled/focused/normal state (see Window.writeText()). */
113
250
  style?: StyleId;
114
251
  }
252
+ /** A single inline-styled segment accepted by Window.writeText(). The cursor
253
+ * advances across consecutive segments without resetting, so segments flow
254
+ * inline on the same row like a rich-text span.
255
+ * - `style` is a pre-registered StyleId (merged with the base style).
256
+ * - `attrs` is registered on the fly (convenience, avoids pre-registering).
257
+ * - When both are present, `style` wins; when neither is present the base style applies. */
258
+ export interface WriteTextSegment {
259
+ /** Literal text for this segment. May contain '\n' which resets the cursor
260
+ * to the starting column and advances to the next row. */
261
+ text: string;
262
+ /** Optional pre-registered style ID merged with the base style. */
263
+ style?: StyleId;
264
+ /** Optional inline CellAttributes; registered into the StyleRegistry automatically. */
265
+ attrs?: CellAttributes;
266
+ }
267
+ /** Input accepted by Window.writeText().
268
+ * - A plain string keeps the pre-0.18.0 behaviour: one style for the whole text.
269
+ * - An array of segments applies per-segment styles while the cursor flows across
270
+ * them; each segment's style is merged with the base style.
271
+ * - An empty array is a no-op. */
272
+ export type WriteTextInput = string | WriteTextSegment[];
115
273
  /** Control-specific properties for the Button control. */
116
274
  export interface ButtonProperties {
117
275
  /** Called when the button is activated (Enter or Space while focused). */
@@ -125,6 +283,16 @@ export interface TextBoxProperties {
125
283
  placeholder?: string;
126
284
  /** Initial cursor position (character index). Default: end of value. */
127
285
  cursor?: number;
286
+ /** Fires after every value change driven by `handleKey` (typing, backspace,
287
+ * delete, paste of a single char, …). Not fired by `setValue`. */
288
+ onChange?: (value: string) => void;
289
+ /** Fires when the user presses Enter (`\r` / `\n`) while the TextBox has
290
+ * focus. The current value is passed unchanged. */
291
+ onSubmit?: (value: string) => void;
292
+ /** Pre-dispatch hook: runs before the built-in `handleKey` logic. Return
293
+ * `true` to mark the key as handled — the default behaviour (inserting,
294
+ * moving cursor, deleting, …) is then skipped. */
295
+ onKeyDown?: (key: string) => boolean | void;
128
296
  }
129
297
  /** Control-specific properties for the TextArea control. */
130
298
  export interface TextAreaProperties {
@@ -137,6 +305,22 @@ export interface TextAreaProperties {
137
305
  x: number;
138
306
  y: number;
139
307
  };
308
+ /** Fires after every value change driven by `handleKey`. Not fired by
309
+ * `setValue`. */
310
+ onChange?: (value: string) => void;
311
+ /** Fires when the user submits — by default Ctrl+Enter. Plain Enter still
312
+ * inserts a newline. */
313
+ onSubmit?: (value: string) => void;
314
+ /** Pre-dispatch hook: runs before the built-in `handleKey` logic. Return
315
+ * `true` to short-circuit the default behaviour for this key. */
316
+ onKeyDown?: (key: string) => boolean | void;
317
+ /** When > 0, Tab inserts that many space characters instead of cycling
318
+ * focus. When 0 (default) Tab passes through unchanged so the
319
+ * WindowManager sees it. */
320
+ insertTabAsSpaces?: number;
321
+ /** When true, Ctrl+D deletes the character to the right of the cursor
322
+ * (or joins with the next line at end of line). Default: false. */
323
+ ctrlDDeletesForward?: boolean;
140
324
  }
141
325
  /** Control-specific properties for the Checkbox control. */
142
326
  export interface CheckboxProperties {
@@ -192,14 +376,46 @@ export interface LineChartProperties {
192
376
  /** ANSI color number for the line. Default: 75. */
193
377
  color?: number;
194
378
  }
195
- /** Control-specific properties for the ListBox control. */
196
- export interface ListBoxProperties {
379
+ /** Context passed to ListBox.renderItem() for a single row. */
380
+ export interface ListBoxRenderContext {
381
+ /** 0-based index of the item in the list. */
382
+ index: number;
383
+ /** Whether the owning ListBox currently has keyboard focus. */
384
+ focused: boolean;
385
+ /** Whether this particular row is the selected one. */
386
+ selected: boolean;
387
+ /** Inner width (in cells) available for the row. */
388
+ width: number;
389
+ }
390
+ /** A single styled text segment produced by ListBox.renderItem(). */
391
+ export interface ListBoxRowSegment {
392
+ /** Literal text drawn into the row at the segment's computed position. */
393
+ text: string;
394
+ /** Optional style ID merged onto the row's base (selection) style. */
395
+ style?: StyleId;
396
+ /** Horizontal alignment within the row. Default: 'left'.
397
+ * - 'left' segments are laid out left-to-right from column 0.
398
+ * - 'right' segments are flushed to the right edge of the row.
399
+ * - 'fill' segment occupies the remaining space between the left and right groups.
400
+ * Only the first 'fill' segment in a row is honoured. */
401
+ align?: 'left' | 'right' | 'fill';
402
+ }
403
+ /** Return type of ListBox.renderItem(). A plain string is treated as a single left-aligned segment. */
404
+ export type ListBoxRowSegments = string | ListBoxRowSegment[];
405
+ /** Control-specific properties for the ListBox control. Generic over the item type. */
406
+ export interface ListBoxProperties<T = string> {
197
407
  /** Initial items shown in the list. Default: []. */
198
- items?: string[];
408
+ items?: T[];
199
409
  /** Initial selected index, or -1 for no selection. Default: 0 if items is non-empty, else -1. */
200
410
  selectedIndex?: number;
201
411
  /** Called when the selected index changes via handleKey(). */
202
- onChange?: (index: number, item: string) => void;
412
+ onChange?: (index: number, item: T) => void;
413
+ /** Optional per-row renderer returning styled segments. Default: single text segment (item.toString()). */
414
+ renderItem?: (item: T, ctx: ListBoxRenderContext) => ListBoxRowSegments;
415
+ /** Row height in cells. Default: 1. Items occupy this many consecutive rows in the viewport. */
416
+ rowHeight?: number;
417
+ /** Stable key for reconciliation — currently stored only; future use: preserve scroll/selection across setItems(). */
418
+ keyFn?: (item: T) => string;
203
419
  }
204
420
  /** Control-specific properties for the Tabs control. */
205
421
  export interface TabsProperties {
@@ -247,8 +463,14 @@ export interface BarChartProperties {
247
463
  }
248
464
  /** A single axis value: absolute number, edge-relative negative, or percentage string ("N%"). */
249
465
  export type YamlAxisValue = number | string;
250
- /** YAML position specification for a window. */
251
- export type YamlPosSpec = 'center' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | {
466
+ /** YAML position specification for a window.
467
+ * - Shorthand strings ('center', 'topLeft', …, 'flex') map to the matching
468
+ * `Pos` static factory with no arguments.
469
+ * - `{ preset, offset? }` maps to `Pos.top/left/right/bottom(offset)`.
470
+ * - `{ flex: N }` is shorthand for `Pos.flex(N)` so authors can set a layout
471
+ * order from YAML.
472
+ * - `{ x, y }` defers to the two-argument `new Pos(x, y)` constructor. */
473
+ export type YamlPosSpec = 'center' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'flex' | {
252
474
  preset: 'top';
253
475
  offset?: YamlAxisValue;
254
476
  } | {
@@ -260,18 +482,42 @@ export type YamlPosSpec = 'center' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bo
260
482
  } | {
261
483
  preset: 'bottom';
262
484
  offset?: YamlAxisValue;
485
+ } | {
486
+ flex: number;
263
487
  } | {
264
488
  x: YamlAxisValue;
265
489
  y: YamlAxisValue;
266
490
  };
267
- /** YAML size specification for a window. */
268
- export type YamlSizeSpec = 'fill' | {
491
+ /** YAML size specification for a window.
492
+ * - `'fill'`, `'flex'`, `'content'` map to the matching zero-arg
493
+ * `Size.fill()` / `Size.flex()` / `Size.content()` factories.
494
+ * - `{ fillWidth }` / `{ fillHeight }` mirror the pre-0.24 shorthands.
495
+ * - `{ flex: { grow?, shrink?, basis? } }` builds `Size.flex(grow, shrink, basis)`.
496
+ * - `{ width, height }` maps to `new Size(width, height)`; the axis values may
497
+ * themselves be literal numbers, "N%" strings, `'flex'`/`'content'` strings,
498
+ * or `{ flex: {...} }` / `{ content: true }` objects for per-axis control. */
499
+ export type YamlDimValue = YamlAxisValue | 'flex' | 'content' | {
500
+ flex: {
501
+ grow?: number;
502
+ shrink?: number;
503
+ basis?: YamlAxisValue;
504
+ };
505
+ } | {
506
+ content: true;
507
+ };
508
+ export type YamlSizeSpec = 'fill' | 'flex' | 'content' | {
269
509
  fillWidth: YamlAxisValue;
270
510
  } | {
271
511
  fillHeight: YamlAxisValue;
272
512
  } | {
273
- width: YamlAxisValue;
274
- height: YamlAxisValue;
513
+ flex: {
514
+ grow?: number;
515
+ shrink?: number;
516
+ basis?: YamlAxisValue;
517
+ };
518
+ } | {
519
+ width: YamlDimValue;
520
+ height: YamlDimValue;
275
521
  };
276
522
  /** Control type tags supported by InterfaceBuilder. */
277
523
  export type YamlWindowType = 'window' | 'button' | 'textbox' | 'textarea' | 'checkbox' | 'radio' | 'statusled' | 'progressbar' | 'progressbarv' | 'linechart' | 'barchart' | 'listbox' | 'tabs' | 'sparkline' | 'spinner';
@@ -284,8 +530,9 @@ export interface YamlStyleDef extends CellAttributes {
284
530
  export interface YamlWindowDef {
285
531
  /** Optional identifier for retrieving the built window from the result map. */
286
532
  id?: string;
287
- /** Widget type. Defaults to 'window'. */
288
- type?: YamlWindowType;
533
+ /** Widget type. Defaults to 'window'. May be a built-in tag or a custom
534
+ * name registered via `InterfaceBuilder.registerType()`. */
535
+ type?: YamlWindowType | (string & {});
289
536
  /** Position within the parent. Defaults to { x: 0, y: 0 }. */
290
537
  pos?: YamlPosSpec;
291
538
  /** Dimensions of the window. Required for window/button/textbox/textarea; ignored for checkbox/radio (auto-sized). */
@@ -316,6 +563,16 @@ export interface YamlWindowDef {
316
563
  onPress?: string;
317
564
  /** Callback ID registered via InterfaceBuilder.registerCallback() — fired on value change. */
318
565
  onChange?: string;
566
+ /** Callback ID registered via InterfaceBuilder.registerCallback() — fired on submit
567
+ * (Enter in TextBox; `ctrl+enter` in TextArea). */
568
+ onSubmit?: string;
569
+ /** Pre-dispatch hook callback ID — fired before the built-in handleKey logic
570
+ * in TextBox / TextArea; handler returning `true` short-circuits default. */
571
+ onKeyDown?: string;
572
+ /** TextArea: when > 0, Tab inserts that many spaces instead of cycling focus. */
573
+ insertTabAsSpaces?: number;
574
+ /** TextArea: when true, Ctrl+D deletes the character to the right of the cursor. */
575
+ ctrlDDeletesForward?: boolean;
319
576
  /** LED state ('ok' | 'warn' | 'error' | 'off') — used by statusled. */
320
577
  state?: 'ok' | 'warn' | 'error' | 'off';
321
578
  /** Whether to show a percentage label over a progress bar. Default: true. */
@@ -354,7 +611,43 @@ export interface YamlWindowDef {
354
611
  running?: boolean;
355
612
  /** Tab index this child belongs to when its parent is a Tabs control. */
356
613
  tab?: number;
614
+ /** Layout algorithm for direct children — 'absolute' / 'row' / 'column' / 'grid'. */
615
+ layout?: 'absolute' | 'row' | 'column' | 'grid';
616
+ /** Spacing (in cells) between adjacent children for flex / grid layouts. */
617
+ gap?: number;
618
+ /** Padding inside the border: uniform number, [vertical, horizontal] tuple,
619
+ * or a partial per-side record. */
620
+ padding?: number | [number, number] | {
621
+ top?: number;
622
+ right?: number;
623
+ bottom?: number;
624
+ left?: number;
625
+ };
626
+ /** Number of columns for `layout: grid`. */
627
+ gridColumns?: number;
628
+ /** Cross-axis alignment for `layout: row|column`. */
629
+ alignItems?: 'start' | 'center' | 'end' | 'stretch';
630
+ /** Main-axis distribution of leftover space for `layout: row|column`. */
631
+ justifyContent?: 'start' | 'center' | 'end' | 'space-between' | 'space-around';
632
+ /** Free-form property bag for user-registered custom types. Built-in types
633
+ * ignore this field; custom factories read it via `node.props`. */
634
+ props?: Record<string, unknown>;
635
+ }
636
+ /** Context passed to factories registered via `InterfaceBuilder.registerType`.
637
+ * Exposes pre-resolved common window properties plus the active style registry
638
+ * so factories can compose their own control-specific options. */
639
+ export interface CustomTypeContext {
640
+ /** Common window properties resolved from the YAML node (pos/size/border/…). */
641
+ wp: WindowProperties;
642
+ /** The style registry the builder is writing into. */
643
+ registry: StyleRegistry;
644
+ /** Looks up a callback registered via `InterfaceBuilder.registerCallback`. */
645
+ resolveCallback: (id: string | undefined) => ((...args: unknown[]) => void) | undefined;
357
646
  }
647
+ /** Signature for a custom type factory registered via
648
+ * `InterfaceBuilder.registerType`. The factory receives the raw YAML node
649
+ * together with a resolved `ctx.wp` and must return the constructed window. */
650
+ export type CustomTypeFactory = (node: YamlWindowDef, ctx: CustomTypeContext) => Window;
358
651
  /** Top-level YAML layout document consumed by InterfaceBuilder. */
359
652
  export interface YamlLayout {
360
653
  /** Named style definitions registered before windows are built. */
@@ -368,6 +661,10 @@ export interface Focusable {
368
661
  setFocused(focused: boolean): void;
369
662
  isDisabled(): boolean;
370
663
  handleKey?(key: string): void;
664
+ /** If present and returns `true`, the WindowManager skips Tab focus
665
+ * navigation and dispatches Tab to `handleKey` instead. Used by controls
666
+ * that consume Tab themselves (e.g. `TextArea` with `insertTabAsSpaces`). */
667
+ capturesTab?(): boolean;
371
668
  }
372
669
  /** Mouse event emitted by the terminal (SGR or X10 protocol). */
373
670
  export interface TerminalMouseEvent {
@@ -383,14 +680,33 @@ export interface TerminalMouseEvent {
383
680
  alt?: boolean;
384
681
  ctrl?: boolean;
385
682
  }
683
+ /** Context passed to global key handlers (`onKey`, `bindKey`). */
684
+ export interface KeyContext {
685
+ /** The control that currently has focus, or null when none. */
686
+ focusedControl: (Focusable & Window) | null;
687
+ /** True when at least one modal dialog is open. */
688
+ inDialog: boolean;
689
+ /** Nesting level of the dialog stack (0 = main context). */
690
+ dialogDepth: number;
691
+ }
692
+ /** Signature for handlers registered via `WindowManager.bindKey`.
693
+ * Returning `true` marks the key as consumed — further handlers, exit keys,
694
+ * focus navigation, and dispatch to the focused control are all skipped. */
695
+ export type KeyBindHandler = (ctx: KeyContext) => boolean | void;
386
696
  /** Constructor options for WindowManager. */
387
697
  export interface WindowManagerOptions {
388
- /** Key strings that trigger application exit. Default: ['\x03'] (Ctrl+C). */
698
+ /** Key strings that trigger application exit. Default: ['\x03'] (Ctrl+C).
699
+ * Exit keys are checked **after** `onKey` / `bindKey` handlers; a handler
700
+ * returning `true` prevents the exit from firing. */
389
701
  exitKeys?: string[];
390
702
  /** Called after the input loop stops and the terminal state is restored. */
391
703
  onExit?: () => void;
392
- /** Called for every raw key string before it is dispatched to a control. */
393
- onKey?: (key: string) => void;
704
+ /** Called for every raw key string before it is dispatched to a control.
705
+ * Return `true` to mark the key as consumed — it will then **not** be
706
+ * checked against `exitKeys`, will not trigger focus navigation, and will
707
+ * not be dispatched to the focused control. Return `false` / `void` to
708
+ * keep the previous pass-through behaviour. */
709
+ onKey?: (key: string, ctx: KeyContext) => boolean | void;
394
710
  /** Called for every mouse event when mouse support is enabled. */
395
711
  onMouse?: (event: TerminalMouseEvent) => void;
396
712
  /** Enable mouse click tracking (SGR protocol). Default: false. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../src/Screen/types.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../src/Screen/types.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/Screen/types.mts"],"names":[],"mappings":"AAMA,iFAAiF;AAEjF,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAY,mBAAmB,CAAC;AAC9D,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAe,gBAAgB,CAAC;AAC3D,8CAA8C;AAC9C,MAAM,CAAC,MAAM,sBAAsB,GAAO,wBAAwB,CAAC;AACnE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,uBAAuB,GAAM,yBAAyB,CAAC;AACpE,sDAAsD;AACtD,MAAM,CAAC,MAAM,YAAY,GAAiB,cAAc,CAAC;AACzD,uDAAuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAS,sBAAsB,CAAC;AACjE,wDAAwD;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAQ,uBAAuB,CAAC;AAClE,sEAAsE;AACtE,MAAM,CAAC,MAAM,wBAAwB,GAAK,0BAA0B,CAAC;AACrE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAAS,sBAAsB,CAAC;AACjE,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/Screen/types.mts"],"names":[],"mappings":"AAQA,iFAAiF;AAEjF,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAY,mBAAmB,CAAC;AAC9D,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAe,gBAAgB,CAAC;AAC3D,8CAA8C;AAC9C,MAAM,CAAC,MAAM,sBAAsB,GAAO,wBAAwB,CAAC;AACnE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,uBAAuB,GAAM,yBAAyB,CAAC;AACpE,sDAAsD;AACtD,MAAM,CAAC,MAAM,YAAY,GAAiB,cAAc,CAAC;AACzD,uDAAuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAS,sBAAsB,CAAC;AACjE,wDAAwD;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAQ,uBAAuB,CAAC;AAClE,sEAAsE;AACtE,MAAM,CAAC,MAAM,wBAAwB,GAAK,0BAA0B,CAAC;AACrE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,oBAAoB,GAAS,sBAAsB,CAAC;AACjE,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAe,gBAAgB,CAAC"}
package/dist/index.d.mts CHANGED
@@ -5,7 +5,7 @@ export { StyleRegistry } from './Screen/StyleRegistry.mjs';
5
5
  export { WindowManager } from './Screen/WindowManager.mjs';
6
6
  export { Pos } from './Screen/Pos.mjs';
7
7
  export { Pct, pct } from './Screen/Pos.mjs';
8
- export { Size } from './Screen/Size.mjs';
8
+ export { Size, FlexDim, ContentDim, flex, content } from './Screen/Size.mjs';
9
9
  export { Button } from './Screen/controls/Button.mjs';
10
10
  export { TextBox } from './Screen/controls/TextBox.mjs';
11
11
  export { TextArea } from './Screen/controls/TextArea.mjs';
@@ -21,6 +21,7 @@ export { BarChart } from './Screen/controls/BarChart.mjs';
21
21
  export { Sparkline } from './Screen/controls/Sparkline.mjs';
22
22
  export { Spinner } from './Screen/controls/Spinner.mjs';
23
23
  export { InterfaceBuilder } from './Screen/InterfaceBuilder.mjs';
24
+ export { charWidth, stringWidth, setPuaWidth, getPuaWidth } from './Screen/textWidth.mjs';
24
25
  export { BUILTIN_WINDOW_BG, BUILTIN_BORDER, BUILTIN_BORDER_FOCUSED, BUILTIN_BORDER_DISABLED, BUILTIN_TEXT, BUILTIN_TEXT_FOCUSED, BUILTIN_TEXT_DISABLED, BUILTIN_TEXT_PLACEHOLDER, BUILTIN_TEXT_CHECKED, BUILTIN_CURSOR, } from './Screen/types.mjs';
25
- export type { Color, StyleId, Cell, CellAttributes, TerminalSize, AxisSpec, DimSpec, BorderStyle, WindowBorder, WindowProperties, WriteTextOptions, ButtonProperties, TextBoxProperties, TextAreaProperties, CheckboxProperties, RadioProperties, StatusLEDProperties, ProgressBarProperties, ProgressBarVProperties, LineChartProperties, BarChartProperties, ListBoxProperties, TabsProperties, SparklineProperties, SpinnerProperties, Focusable, TerminalMouseEvent, WindowManagerOptions, YamlAxisValue, YamlPosSpec, YamlSizeSpec, YamlWindowType, YamlStyleDef, YamlWindowDef, YamlLayout, } from './Screen/types.mjs';
26
+ export type { Color, StyleId, Cell, CellAttributes, TerminalSize, ScreenOptions, ScreenFrameStats, AxisSpec, DimSpec, FlexBasis, LayoutMode, AlignItems, JustifyContent, Padding, PaddingSpec, BorderStyle, BorderChars, WindowBorder, WindowProperties, WriteTextOptions, WriteTextSegment, WriteTextInput, ButtonProperties, TextBoxProperties, TextAreaProperties, CheckboxProperties, RadioProperties, StatusLEDProperties, ProgressBarProperties, ProgressBarVProperties, LineChartProperties, BarChartProperties, ListBoxProperties, ListBoxRenderContext, ListBoxRowSegment, ListBoxRowSegments, TabsProperties, SparklineProperties, SpinnerProperties, Focusable, TerminalMouseEvent, WindowManagerOptions, YamlAxisValue, YamlPosSpec, YamlSizeSpec, YamlWindowType, YamlStyleDef, YamlWindowDef, YamlLayout, CustomTypeContext, CustomTypeFactory, } from './Screen/types.mjs';
26
27
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAYA,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAO,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAO,4BAA4B,CAAC;AAG5D,OAAO,EAAE,GAAG,EAAE,MAAiB,kBAAkB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAY,kBAAkB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAgB,mBAAmB,CAAC;AAGnD,OAAO,EAAE,MAAM,EAAE,MAAc,8BAA8B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAe,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAgB,4BAA4B,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAS,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAQ,oCAAoC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EACN,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,GACd,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAEX,KAAK,EACL,OAAO,EACP,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,OAAO,EAGP,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAGhB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAGjB,SAAS,EACT,kBAAkB,EAClB,oBAAoB,EAGpB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,GACV,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAYA,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAO,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAO,4BAA4B,CAAC;AAG5D,OAAO,EAAE,GAAG,EAAE,MAAiC,kBAAkB,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAA4B,kBAAkB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EACzB,IAAI,EAAE,OAAO,EAAE,MAAuB,mBAAmB,CAAC;AAGnE,OAAO,EAAE,MAAM,EAAE,MAAc,8BAA8B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAe,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAgB,4BAA4B,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAS,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAQ,oCAAoC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1F,OAAO,EACN,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,GACd,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAEX,KAAK,EACL,OAAO,EACP,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,cAAc,EACd,OAAO,EACP,WAAW,EAGX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EAGd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAGjB,SAAS,EACT,kBAAkB,EAClB,oBAAoB,EAGpB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,oBAAoB,CAAC"}
package/dist/index.mjs CHANGED
@@ -17,7 +17,7 @@ export { WindowManager } from './Screen/WindowManager.mjs';
17
17
  // ── Geometry ──────────────────────────────────────────────────────────────────
18
18
  export { Pos } from './Screen/Pos.mjs';
19
19
  export { Pct, pct } from './Screen/Pos.mjs';
20
- export { Size } from './Screen/Size.mjs';
20
+ export { Size, FlexDim, ContentDim, flex, content } from './Screen/Size.mjs';
21
21
  // ── Interactive controls ──────────────────────────────────────────────────────
22
22
  export { Button } from './Screen/controls/Button.mjs';
23
23
  export { TextBox } from './Screen/controls/TextBox.mjs';
@@ -36,6 +36,8 @@ export { Sparkline } from './Screen/controls/Sparkline.mjs';
36
36
  export { Spinner } from './Screen/controls/Spinner.mjs';
37
37
  // ── YAML layout builder ───────────────────────────────────────────────────────
38
38
  export { InterfaceBuilder } from './Screen/InterfaceBuilder.mjs';
39
+ // ── Unicode text width helpers ────────────────────────────────────────────────
40
+ export { charWidth, stringWidth, setPuaWidth, getPuaWidth } from './Screen/textWidth.mjs';
39
41
  // ── Built-in style name constants ─────────────────────────────────────────────
40
42
  export { BUILTIN_WINDOW_BG, BUILTIN_BORDER, BUILTIN_BORDER_FOCUSED, BUILTIN_BORDER_DISABLED, BUILTIN_TEXT, BUILTIN_TEXT_FOCUSED, BUILTIN_TEXT_DISABLED, BUILTIN_TEXT_PLACEHOLDER, BUILTIN_TEXT_CHECKED, BUILTIN_CURSOR, } from './Screen/types.mjs';
41
43
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,EAAE;AACF,kBAAkB;AAClB,EAAE;AACF,yEAAyE;AACzE,mEAAmE;AACnE,EAAE;AAEF,iFAAiF;AACjF,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAO,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAO,4BAA4B,CAAC;AAE5D,iFAAiF;AACjF,OAAO,EAAE,GAAG,EAAE,MAAiB,kBAAkB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAY,kBAAkB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAgB,mBAAmB,CAAC;AAEnD,iFAAiF;AACjF,OAAO,EAAE,MAAM,EAAE,MAAc,8BAA8B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAe,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAgB,4BAA4B,CAAC;AAE5D,iFAAiF;AACjF,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAS,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAQ,oCAAoC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAE/D,iFAAiF;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,iFAAiF;AACjF,OAAO,EACN,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,GACd,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,EAAE;AACF,kBAAkB;AAClB,EAAE;AACF,yEAAyE;AACzE,mEAAmE;AACnE,EAAE;AAEF,iFAAiF;AACjF,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAc,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAO,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAO,4BAA4B,CAAC;AAE5D,iFAAiF;AACjF,OAAO,EAAE,GAAG,EAAE,MAAiC,kBAAkB,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAA4B,kBAAkB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EACzB,IAAI,EAAE,OAAO,EAAE,MAAuB,mBAAmB,CAAC;AAEnE,iFAAiF;AACjF,OAAO,EAAE,MAAM,EAAE,MAAc,8BAA8B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAe,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAgB,4BAA4B,CAAC;AAE5D,iFAAiF;AACjF,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAS,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAQ,oCAAoC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAY,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAW,iCAAiC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAa,+BAA+B,CAAC;AAE/D,iFAAiF;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,iFAAiF;AACjF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1F,iFAAiF;AACjF,OAAO,EACN,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,GACd,MAAM,oBAAoB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "take4-console",
3
- "version": "0.15.1",
3
+ "version": "0.25.0",
4
4
  "description": "A terminal cell-grid rendering library for Node.js — windowed UI with styles, borders, layouts, keyboard/mouse input, and a YAML layout builder.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.mjs",