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,14 +1,20 @@
1
1
  import { Window } from '../Window.mjs';
2
2
  import { getRegistry } from '../RegistryHolder.mjs';
3
- /** A scrollable list of single-line items. The selected item is highlighted and may
4
- * be moved with arrow keys, PgUp/PgDn, and Home/End. Emits onChange whenever the
5
- * selection index changes via keyboard. Appearance follows the same built-in style
6
- * naming scheme as the other focusable controls. */
3
+ /** A scrollable list of items. Generic over the item type T (default: string).
4
+ * The selected item is highlighted and may be moved with arrow keys, PgUp/PgDn,
5
+ * and Home/End. Emits onChange whenever the selection index changes via keyboard.
6
+ * Consumers may customise per-row rendering via `renderItem`, which returns either a
7
+ * plain string (single left-aligned segment) or an array of styled ListBoxRowSegment
8
+ * entries supporting `left`/`right`/`fill` alignment. Appearance follows the same
9
+ * built-in style naming scheme as the other focusable controls. */
7
10
  export class ListBox extends Window {
8
11
  items;
9
12
  selectedIndex;
10
13
  scrollTop;
11
14
  onChange;
15
+ renderItem;
16
+ rowHeight;
17
+ keyFn;
12
18
  selectedStyleId;
13
19
  focusedSelStyle;
14
20
  /** Creates a ListBox from window properties and optional control-specific properties.
@@ -20,6 +26,9 @@ export class ListBox extends Window {
20
26
  });
21
27
  this.items = cp?.items ?? [];
22
28
  this.onChange = cp?.onChange;
29
+ this.renderItem = cp?.renderItem;
30
+ this.rowHeight = Math.max(1, cp?.rowHeight ?? 1);
31
+ this.keyFn = cp?.keyFn;
23
32
  this.scrollTop = 0;
24
33
  this.selectedIndex = cp?.selectedIndex ?? (this.items.length > 0 ? 0 : -1);
25
34
  // Selected row: muted highlight when unfocused, bright inverse when focused.
@@ -50,18 +59,30 @@ export class ListBox extends Window {
50
59
  getSelectedIndex() {
51
60
  return this.selectedIndex;
52
61
  }
53
- /** Returns the currently selected item string, or undefined when nothing is selected. */
62
+ /** Returns the currently selected item, or undefined when nothing is selected. */
54
63
  getSelectedItem() {
55
64
  if (this.selectedIndex < 0 || this.selectedIndex >= this.items.length)
56
65
  return undefined;
57
66
  return this.items[this.selectedIndex];
58
67
  }
68
+ /** Replaces the per-row renderer after construction. Pass undefined to restore default behaviour. */
69
+ setRenderItem(fn) {
70
+ this.renderItem = fn;
71
+ }
72
+ /** Returns the configured row height in cells. */
73
+ getRowHeight() {
74
+ return this.rowHeight;
75
+ }
76
+ /** Returns the stable key for an item, computed via the configured keyFn (falls back to String(item)). */
77
+ getItemKey(item) {
78
+ return this.keyFn ? this.keyFn(item) : String(item);
79
+ }
59
80
  /** Processes a key press: arrow keys, Home/End, PgUp/PgDn move the selection. */
60
81
  handleKey(key) {
61
82
  if (this.disabled || this.items.length === 0)
62
83
  return;
63
84
  const prev = this.selectedIndex;
64
- const pageSz = Math.max(1, this.getInnerSize().height);
85
+ const pageSz = Math.max(1, this.getVisibleRowCount());
65
86
  switch (key) {
66
87
  case '\x1b[A': // Up arrow
67
88
  this.selectedIndex = Math.max(0, this.selectedIndex - 1);
@@ -91,9 +112,13 @@ export class ListBox extends Window {
91
112
  this.onChange?.(this.selectedIndex, this.items[this.selectedIndex]);
92
113
  }
93
114
  }
115
+ /** Returns the number of item slots that fit in the current inner area (>= 1). */
116
+ getVisibleRowCount() {
117
+ return Math.max(1, Math.floor(this.getInnerSize().height / this.rowHeight));
118
+ }
94
119
  /** Adjusts scrollTop so that the selected index remains within the visible window. */
95
120
  ensureVisible() {
96
- const visibleRows = Math.max(1, this.getInnerSize().height);
121
+ const visibleRows = this.getVisibleRowCount();
97
122
  if (this.selectedIndex < this.scrollTop) {
98
123
  this.scrollTop = this.selectedIndex;
99
124
  }
@@ -104,7 +129,7 @@ export class ListBox extends Window {
104
129
  const maxScroll = Math.max(0, this.items.length - visibleRows);
105
130
  this.scrollTop = Math.max(0, Math.min(maxScroll, this.scrollTop));
106
131
  }
107
- /** Rebuilds the list: renders visible rows with styles. */
132
+ /** Rebuilds the list: renders visible rows with styles and optional custom renderer. */
108
133
  render() {
109
134
  this.clear();
110
135
  const { width, height } = this.getInnerSize();
@@ -113,26 +138,103 @@ export class ListBox extends Window {
113
138
  return;
114
139
  }
115
140
  this.ensureVisible();
116
- const visibleCount = Math.min(height, this.items.length - this.scrollTop);
117
- for (let row = 0; row < visibleCount; row++) {
118
- const itemIndex = this.scrollTop + row;
119
- const rawText = this.items[itemIndex];
120
- // Truncate to fit width; pad with spaces so the highlight covers the whole row.
121
- const text = rawText.length > width ? rawText.slice(0, width) : rawText;
122
- const padded = text + ' '.repeat(width - text.length);
123
- let style;
124
- if (this.disabled) {
125
- style = this.disabledStyleId;
126
- }
127
- else if (itemIndex === this.selectedIndex) {
128
- style = this.focused ? this.focusedSelStyle : this.selectedStyleId;
141
+ const slotCount = this.getVisibleRowCount();
142
+ const visibleCount = Math.min(slotCount, this.items.length - this.scrollTop);
143
+ for (let slot = 0; slot < visibleCount; slot++) {
144
+ const itemIndex = this.scrollTop + slot;
145
+ const item = this.items[itemIndex];
146
+ const topRow = slot * this.rowHeight;
147
+ // Pick the base row style from the current focus/selection/disabled state.
148
+ const baseStyle = this.pickRowStyle(itemIndex);
149
+ // Paint every row of this slot with the base style so selection highlights span the full slot.
150
+ for (let r = 0; r < this.rowHeight && topRow + r < height; r++) {
151
+ this.writeText(' '.repeat(width), { x: 0, y: topRow + r, style: baseStyle });
129
152
  }
130
- else {
131
- style = this.normalStyleId;
132
- }
133
- this.writeText(padded, { x: 0, y: row, style });
153
+ const segments = this.resolveSegments(item, {
154
+ index: itemIndex,
155
+ focused: this.focused,
156
+ selected: itemIndex === this.selectedIndex,
157
+ width,
158
+ });
159
+ this.drawRowSegments(topRow, segments, width, baseStyle);
134
160
  }
135
161
  super.render();
136
162
  }
163
+ /** Returns the row-level base style ID for the given item index. */
164
+ pickRowStyle(itemIndex) {
165
+ if (this.disabled)
166
+ return this.disabledStyleId;
167
+ if (itemIndex === this.selectedIndex) {
168
+ return this.focused ? this.focusedSelStyle : this.selectedStyleId;
169
+ }
170
+ return this.normalStyleId;
171
+ }
172
+ /** Invokes the configured renderItem (or a default stringifier) and normalises the result into segments. */
173
+ resolveSegments(item, ctx) {
174
+ const out = this.renderItem
175
+ ? this.renderItem(item, ctx)
176
+ : String(item);
177
+ if (typeof out === 'string') {
178
+ return [{ text: out, align: 'left' }];
179
+ }
180
+ return out;
181
+ }
182
+ /** Draws a single row's segments onto the inner area at the given top row. */
183
+ drawRowSegments(topRow, segments, width, baseStyle) {
184
+ const left = [];
185
+ const right = [];
186
+ let fill;
187
+ for (const seg of segments) {
188
+ const align = seg.align ?? 'left';
189
+ if (align === 'left')
190
+ left.push(seg);
191
+ else if (align === 'right')
192
+ right.push(seg);
193
+ else if (align === 'fill' && !fill)
194
+ fill = seg;
195
+ }
196
+ // Render left-aligned segments left-to-right starting at column 0.
197
+ let leftCursor = 0;
198
+ for (const seg of left) {
199
+ if (leftCursor >= width)
200
+ break;
201
+ const available = width - leftCursor;
202
+ const text = seg.text.length > available ? seg.text.slice(0, available) : seg.text;
203
+ const style = this.segmentStyle(seg, baseStyle);
204
+ this.writeText(text, { x: leftCursor, y: topRow, style });
205
+ leftCursor += text.length;
206
+ }
207
+ // Measure right-aligned segments and render them starting at their computed offset.
208
+ let rightWidth = 0;
209
+ for (const seg of right)
210
+ rightWidth += seg.text.length;
211
+ let rightCursor = Math.max(leftCursor, width - rightWidth);
212
+ for (const seg of right) {
213
+ if (rightCursor >= width)
214
+ break;
215
+ const available = width - rightCursor;
216
+ const text = seg.text.length > available ? seg.text.slice(0, available) : seg.text;
217
+ const style = this.segmentStyle(seg, baseStyle);
218
+ this.writeText(text, { x: rightCursor, y: topRow, style });
219
+ rightCursor += text.length;
220
+ }
221
+ // Render the single fill segment (if any) between the left and right groups.
222
+ if (fill) {
223
+ const fillStart = leftCursor;
224
+ const fillEnd = Math.max(fillStart, width - rightWidth);
225
+ const fillWidth = fillEnd - fillStart;
226
+ if (fillWidth > 0) {
227
+ const text = fill.text.length >= fillWidth
228
+ ? fill.text.slice(0, fillWidth)
229
+ : fill.text + ' '.repeat(fillWidth - fill.text.length);
230
+ const style = this.segmentStyle(fill, baseStyle);
231
+ this.writeText(text, { x: fillStart, y: topRow, style });
232
+ }
233
+ }
234
+ }
235
+ /** Merges a segment's optional style onto the row's base style, preserving the highlight background. */
236
+ segmentStyle(seg, baseStyle) {
237
+ return seg.style !== undefined ? this.registry.merge(baseStyle, seg.style) : baseStyle;
238
+ }
137
239
  }
138
240
  //# sourceMappingURL=ListBox.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListBox.mjs","sourceRoot":"","sources":["../../../src/Screen/controls/ListBox.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListBox.mjs","sourceRoot":"","sources":["../../../src/Screen/controls/ListBox.mts"],"names":[],"mappings":"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"}
@@ -10,11 +10,25 @@ export declare class TextArea extends Window {
10
10
  private placeholder;
11
11
  private placeholderStyleId;
12
12
  private cursorStyleId;
13
+ private onChange?;
14
+ private onSubmit?;
15
+ private onKeyDown?;
16
+ private insertTabAsSpaces;
17
+ private ctrlDDeletesForward;
13
18
  /** Creates a TextArea from window properties and optional control-specific properties.
14
19
  * Uses the global StyleRegistry set by the Screen constructor. */
15
20
  constructor(wp: WindowProperties, cp?: TextAreaProperties);
16
- /** Replaces the current value; cursor and scroll are clamped to fit. */
21
+ /** Replaces the current value; cursor and scroll are clamped to fit. Does NOT fire onChange. */
17
22
  setValue(text: string): void;
23
+ /** Replaces the onChange callback. */
24
+ setOnChange(fn?: (value: string) => void): void;
25
+ /** Replaces the onSubmit callback. */
26
+ setOnSubmit(fn?: (value: string) => void): void;
27
+ /** Replaces the onKeyDown pre-dispatch hook. */
28
+ setOnKeyDown(fn?: (key: string) => boolean | void): void;
29
+ /** Opt-in to Tab interception: when `insertTabAsSpaces > 0`, the
30
+ * WindowManager forwards Tab to handleKey() instead of cycling focus. */
31
+ capturesTab(): boolean;
18
32
  /** Returns the current text value (lines joined with '\n'). */
19
33
  getValue(): string;
20
34
  /** Sets the cursor to the given position (clamped to valid range). */
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.d.mts","sourceRoot":"","sources":["../../../src/Screen/controls/TextArea.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAW,MAAM,cAAc,CAAC;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC;8EAC8E;AAC9E,qBAAa,QAAS,SAAQ,MAAM;IACnC,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,aAAa,CAAU;IAE/B;uEACmE;gBAChD,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,kBAAkB;IAyBhE,wEAAwE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOnC,+DAA+D;IACxD,QAAQ,IAAI,MAAM;IAIzB,sEAAsE;IAC/D,SAAS,CAAC,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAMrD,qDAAqD;IAC9C,SAAS,IAAI;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAI5C;;;;oEAIgE;IACzD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAyEnC,kEAAkE;IAClD,MAAM,IAAI,IAAI;IAgC9B,6EAA6E;IAC7E,OAAO,CAAC,WAAW;CAanB"}
1
+ {"version":3,"file":"TextArea.d.mts","sourceRoot":"","sources":["../../../src/Screen/controls/TextArea.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAW,MAAM,cAAc,CAAC;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC;8EAC8E;AAC9E,qBAAa,QAAS,SAAQ,MAAM;IACnC,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,aAAa,CAAU;IAE/B,OAAO,CAAC,QAAQ,CAAC,CAA0B;IAC3C,OAAO,CAAC,QAAQ,CAAC,CAA0B;IAC3C,OAAO,CAAC,SAAS,CAAC,CAAkC;IACpD,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,mBAAmB,CAAU;IAErC;uEACmE;gBAChD,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,kBAAkB;IA+BhE,gGAAgG;IACzF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOnC,sCAAsC;IAC/B,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAItD,sCAAsC;IAC/B,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAItD,gDAAgD;IACzC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI;IAI/D;8EAC0E;IACnE,WAAW,IAAI,OAAO;IAI7B,+DAA+D;IACxD,QAAQ,IAAI,MAAM;IAIzB,sEAAsE;IAC/D,SAAS,CAAC,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAMrD,qDAAqD;IAC9C,SAAS,IAAI;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAI5C;;;;oEAIgE;IACzD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAyHnC,kEAAkE;IAClD,MAAM,IAAI,IAAI;IAgC9B,6EAA6E;IAC7E,OAAO,CAAC,WAAW;CAanB"}
@@ -11,6 +11,11 @@ export class TextArea extends Window {
11
11
  placeholder;
12
12
  placeholderStyleId;
13
13
  cursorStyleId;
14
+ onChange;
15
+ onSubmit;
16
+ onKeyDown;
17
+ insertTabAsSpaces;
18
+ ctrlDDeletesForward;
14
19
  /** Creates a TextArea from window properties and optional control-specific properties.
15
20
  * Uses the global StyleRegistry set by the Screen constructor. */
16
21
  constructor(wp, cp) {
@@ -28,18 +33,40 @@ export class TextArea extends Window {
28
33
  x: 0,
29
34
  };
30
35
  this.cursor.x = Math.max(0, Math.min(rawCursor.x, this.lines[this.cursor.y].length));
36
+ this.onChange = cp?.onChange;
37
+ this.onSubmit = cp?.onSubmit;
38
+ this.onKeyDown = cp?.onKeyDown;
39
+ this.insertTabAsSpaces = Math.max(0, cp?.insertTabAsSpaces ?? 0);
40
+ this.ctrlDDeletesForward = cp?.ctrlDDeletesForward ?? false;
31
41
  const reg = getRegistry();
32
42
  this.placeholderStyleId = reg.getNamed(BUILTIN_TEXT_PLACEHOLDER);
33
43
  this.cursorStyleId = reg.getNamed(BUILTIN_CURSOR);
34
44
  this.clampScroll();
35
45
  }
36
- /** Replaces the current value; cursor and scroll are clamped to fit. */
46
+ /** Replaces the current value; cursor and scroll are clamped to fit. Does NOT fire onChange. */
37
47
  setValue(text) {
38
48
  this.lines = text.split('\n');
39
49
  this.cursor.y = Math.min(this.cursor.y, this.lines.length - 1);
40
50
  this.cursor.x = Math.min(this.cursor.x, this.lines[this.cursor.y].length);
41
51
  this.clampScroll();
42
52
  }
53
+ /** Replaces the onChange callback. */
54
+ setOnChange(fn) {
55
+ this.onChange = fn;
56
+ }
57
+ /** Replaces the onSubmit callback. */
58
+ setOnSubmit(fn) {
59
+ this.onSubmit = fn;
60
+ }
61
+ /** Replaces the onKeyDown pre-dispatch hook. */
62
+ setOnKeyDown(fn) {
63
+ this.onKeyDown = fn;
64
+ }
65
+ /** Opt-in to Tab interception: when `insertTabAsSpaces > 0`, the
66
+ * WindowManager forwards Tab to handleKey() instead of cycling focus. */
67
+ capturesTab() {
68
+ return this.insertTabAsSpaces > 0;
69
+ }
43
70
  /** Returns the current text value (lines joined with '\n'). */
44
71
  getValue() {
45
72
  return this.lines.join('\n');
@@ -62,6 +89,50 @@ export class TextArea extends Window {
62
89
  handleKey(key) {
63
90
  if (this.disabled)
64
91
  return;
92
+ // Give the caller a chance to intercept before built-in logic runs.
93
+ if (this.onKeyDown?.(key) === true) {
94
+ this.clampScroll();
95
+ return;
96
+ }
97
+ const before = this.getValue();
98
+ // Tab → soft-tab insert when configured, otherwise pass-through.
99
+ if ((key === '\t' || key === 'tab') && this.insertTabAsSpaces > 0) {
100
+ const spaces = ' '.repeat(this.insertTabAsSpaces);
101
+ const lineTab = this.lines[this.cursor.y];
102
+ this.lines[this.cursor.y] = lineTab.slice(0, this.cursor.x) + spaces + lineTab.slice(this.cursor.x);
103
+ this.cursor.x += spaces.length;
104
+ this.clampScroll();
105
+ if (this.getValue() !== before)
106
+ this.onChange?.(this.getValue());
107
+ return;
108
+ }
109
+ if (key === '\t' || key === 'tab') {
110
+ // insertTabAsSpaces === 0 → leave Tab for WindowManager focus cycling.
111
+ return;
112
+ }
113
+ // Ctrl+D forward-delete when enabled — same behaviour as \x1b[3~.
114
+ if (key === '\x04' && this.ctrlDDeletesForward) {
115
+ const lineD = this.lines[this.cursor.y];
116
+ if (this.cursor.x < lineD.length) {
117
+ this.lines[this.cursor.y] = lineD.slice(0, this.cursor.x) + lineD.slice(this.cursor.x + 1);
118
+ }
119
+ else if (this.cursor.y < this.lines.length - 1) {
120
+ this.lines[this.cursor.y] = lineD + this.lines[this.cursor.y + 1];
121
+ this.lines.splice(this.cursor.y + 1, 1);
122
+ }
123
+ this.clampScroll();
124
+ if (this.getValue() !== before)
125
+ this.onChange?.(this.getValue());
126
+ return;
127
+ }
128
+ // Ctrl+Enter submits without inserting a newline. In xterm this arrives
129
+ // as '\x1b\r' (ESC + CR) or '\n' depending on terminal; we treat the
130
+ // explicit alias 'ctrl+enter' plus '\n' (LF on its own) as the submit
131
+ // key, keeping plain '\r' for newline insertion.
132
+ if (key === 'ctrl+enter') {
133
+ this.onSubmit?.(this.getValue());
134
+ return;
135
+ }
65
136
  const line = this.lines[this.cursor.y];
66
137
  switch (key) {
67
138
  case '\x7f':
@@ -146,6 +217,8 @@ export class TextArea extends Window {
146
217
  }
147
218
  }
148
219
  this.clampScroll();
220
+ if (this.getValue() !== before)
221
+ this.onChange?.(this.getValue());
149
222
  }
150
223
  /** Rebuilds the TextArea: renders visible lines, draws cursor. */
151
224
  render() {
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.mjs","sourceRoot":"","sources":["../../../src/Screen/controls/TextArea.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD;8EAC8E;AAC9E,MAAM,OAAO,QAAS,SAAQ,MAAM;IAC3B,KAAK,CAAW;IAChB,MAAM,CAA2B;IACjC,OAAO,CAAS;IAChB,OAAO,CAAS;IAChB,WAAW,CAAS;IACpB,kBAAkB,CAAU;IAC5B,aAAa,CAAU;IAE/B;uEACmE;IACnE,YAAmB,EAAoB,EAAE,EAAuB;QAC/D,KAAK,CAAC;YACL,GAAG,EAAE;YACL,aAAa,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;SACpF,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAS,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG,EAAE,EAAE,WAAW,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,GAAO,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,GAAO,CAAC,CAAC;QAErB,MAAM,SAAS,GAAG,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG;YACb,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5D,CAAC,EAAE,CAAC;SACJ,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAErF,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAE,CAAC;QAClE,IAAI,CAAC,aAAa,GAAQ,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAE,CAAC;QAExD,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED,wEAAwE;IACjE,QAAQ,CAAC,IAAY;QAC3B,IAAI,CAAC,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED,+DAA+D;IACxD,QAAQ;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,sEAAsE;IAC/D,SAAS,CAAC,GAA6B;QAC7C,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED,qDAAqD;IAC9C,SAAS;QACf,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED;;;;oEAIgE;IACzD,SAAS,CAAC,GAAW;QAC3B,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvC,QAAQ,GAAG,EAAE,CAAC;YACb,KAAK,MAAM,CAAC;YAAC,KAAK,IAAI,CAAC;YAAC,KAAK,WAAW;gBACvC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACzF,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC3C,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;oBAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;oBAC5C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACpC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACjB,CAAC;gBACD,MAAM;YACP,KAAK,SAAS,CAAC;YAAC,KAAK,QAAQ;gBAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1F,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzC,CAAC;gBACD,MAAM;YACP,KAAK,IAAI,CAAC;YAAC,KAAK,IAAI,CAAC;YAAC,KAAK,OAAO;gBACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzD,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;gBAClB,MAAM;YACP,KAAK,QAAQ,CAAC;YAAC,KAAK,MAAM;gBACzB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9B,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAClD,CAAC;gBACD,MAAM;YACP,KAAK,QAAQ,CAAC;YAAC,KAAK,OAAO;gBAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClD,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;gBACD,MAAM;YACP,KAAK,QAAQ,CAAC;YAAC,KAAK,IAAI;gBACvB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC3E,CAAC;gBACD,MAAM;YACP,KAAK,QAAQ,CAAC;YAAC,KAAK,MAAM;gBACzB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC3E,CAAC;gBACD,MAAM;YACP,KAAK,QAAQ,CAAC;YAAC,KAAK,MAAM;gBACzB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;gBAClB,MAAM;YACP,KAAK,QAAQ,CAAC;YAAC,KAAK,KAAK;gBACxB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACjD,MAAM;YACP;gBACC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;oBACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC3F,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACjB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED,kEAAkE;IAClD,MAAM;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAa,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1E,MAAM,OAAO,GAAa,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAE9E,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACP,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;gBACnC,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;oBAAE,MAAM;gBACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;gBAC9E,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YAClG,CAAC;QACF,CAAC;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7C,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,GAAG,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC;gBACzE,MAAM,UAAU,GAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;gBACpE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAChF,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5E,CAAC;QACF,CAAC;QAED,KAAK,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,6EAA6E;IACrE,WAAW;QAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"TextArea.mjs","sourceRoot":"","sources":["../../../src/Screen/controls/TextArea.mts"],"names":[],"mappings":"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"}
@@ -10,11 +10,23 @@ export declare class TextBox extends Window {
10
10
  private placeholder;
11
11
  private placeholderStyleId;
12
12
  private cursorStyleId;
13
+ /** Invoked after every value change driven by handleKey. Not called by setValue. */
14
+ private onChange?;
15
+ /** Invoked when Enter is pressed while focused. */
16
+ private onSubmit?;
17
+ /** Pre-dispatch hook — return true to short-circuit built-in handling. */
18
+ private onKeyDown?;
13
19
  /** Creates a TextBox from window properties and optional control-specific properties.
14
20
  * Uses the global StyleRegistry set by the Screen constructor. */
15
21
  constructor(wp: WindowProperties, cp?: TextBoxProperties);
16
- /** Replaces the current value; clamps cursor and scroll to fit. */
22
+ /** Replaces the current value; clamps cursor and scroll to fit. Does NOT fire onChange. */
17
23
  setValue(value: string): void;
24
+ /** Replaces the onChange callback (passing undefined clears it). */
25
+ setOnChange(fn?: (value: string) => void): void;
26
+ /** Replaces the onSubmit callback. */
27
+ setOnSubmit(fn?: (value: string) => void): void;
28
+ /** Replaces the onKeyDown pre-dispatch hook. */
29
+ setOnKeyDown(fn?: (key: string) => boolean | void): void;
18
30
  /** Returns the current text value. */
19
31
  getValue(): string;
20
32
  /** Sets the cursor to the given character index (clamped to valid range). */
@@ -1 +1 @@
1
- {"version":3,"file":"TextBox.d.mts","sourceRoot":"","sources":["../../../src/Screen/controls/TextBox.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAW,MAAM,cAAc,CAAC;AAEjF,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC;;8EAE8E;AAC9E,qBAAa,OAAQ,SAAQ,MAAM;IAClC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,aAAa,CAAU;IAE/B;uEACmE;gBAChD,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,iBAAiB;IAoB/D,mEAAmE;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMpC,sCAAsC;IAC/B,QAAQ,IAAI,MAAM;IAIzB,6EAA6E;IACtE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKnC,kDAAkD;IAC3C,SAAS,IAAI,MAAM;IAI1B;;;;6EAIyE;IAClE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAmCnC,uEAAuE;IACvD,MAAM,IAAI,IAAI;IA2B9B,0EAA0E;IAC1E,OAAO,CAAC,WAAW;CAQnB"}
1
+ {"version":3,"file":"TextBox.d.mts","sourceRoot":"","sources":["../../../src/Screen/controls/TextBox.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAW,MAAM,cAAc,CAAC;AAEjF,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC;;8EAE8E;AAC9E,qBAAa,OAAQ,SAAQ,MAAM;IAClC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,aAAa,CAAU;IAE/B,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,CAA0B;IAC3C,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,CAA0B;IAC3C,0EAA0E;IAC1E,OAAO,CAAC,SAAS,CAAC,CAAkC;IAEpD;uEACmE;gBAChD,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,iBAAiB;IAwB/D,2FAA2F;IACpF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMpC,oEAAoE;IAC7D,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAItD,sCAAsC;IAC/B,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAItD,gDAAgD;IACzC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI;IAI/D,sCAAsC;IAC/B,QAAQ,IAAI,MAAM;IAIzB,6EAA6E;IACtE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKnC,kDAAkD;IAC3C,SAAS,IAAI,MAAM;IAI1B;;;;6EAIyE;IAClE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAgDnC,uEAAuE;IACvD,MAAM,IAAI,IAAI;IA2B9B,0EAA0E;IAC1E,OAAO,CAAC,WAAW;CAQnB"}
@@ -11,6 +11,12 @@ export class TextBox extends Window {
11
11
  placeholder;
12
12
  placeholderStyleId;
13
13
  cursorStyleId;
14
+ /** Invoked after every value change driven by handleKey. Not called by setValue. */
15
+ onChange;
16
+ /** Invoked when Enter is pressed while focused. */
17
+ onSubmit;
18
+ /** Pre-dispatch hook — return true to short-circuit built-in handling. */
19
+ onKeyDown;
14
20
  /** Creates a TextBox from window properties and optional control-specific properties.
15
21
  * Uses the global StyleRegistry set by the Screen constructor. */
16
22
  constructor(wp, cp) {
@@ -24,17 +30,32 @@ export class TextBox extends Window {
24
30
  this.cursor = cp?.cursor !== undefined
25
31
  ? Math.max(0, Math.min(cp.cursor, this.value.length))
26
32
  : this.value.length;
33
+ this.onChange = cp?.onChange;
34
+ this.onSubmit = cp?.onSubmit;
35
+ this.onKeyDown = cp?.onKeyDown;
27
36
  const reg = getRegistry();
28
37
  this.placeholderStyleId = reg.getNamed(BUILTIN_TEXT_PLACEHOLDER);
29
38
  this.cursorStyleId = reg.getNamed(BUILTIN_CURSOR);
30
39
  this.clampScroll();
31
40
  }
32
- /** Replaces the current value; clamps cursor and scroll to fit. */
41
+ /** Replaces the current value; clamps cursor and scroll to fit. Does NOT fire onChange. */
33
42
  setValue(value) {
34
43
  this.value = value;
35
44
  this.cursor = Math.min(this.cursor, value.length);
36
45
  this.clampScroll();
37
46
  }
47
+ /** Replaces the onChange callback (passing undefined clears it). */
48
+ setOnChange(fn) {
49
+ this.onChange = fn;
50
+ }
51
+ /** Replaces the onSubmit callback. */
52
+ setOnSubmit(fn) {
53
+ this.onSubmit = fn;
54
+ }
55
+ /** Replaces the onKeyDown pre-dispatch hook. */
56
+ setOnKeyDown(fn) {
57
+ this.onKeyDown = fn;
58
+ }
38
59
  /** Returns the current text value. */
39
60
  getValue() {
40
61
  return this.value;
@@ -56,7 +77,19 @@ export class TextBox extends Window {
56
77
  handleKey(key) {
57
78
  if (this.disabled)
58
79
  return;
80
+ // Give the caller a chance to intercept before built-in logic runs.
81
+ if (this.onKeyDown?.(key) === true) {
82
+ this.clampScroll();
83
+ return;
84
+ }
85
+ const before = this.value;
59
86
  switch (key) {
87
+ case '\r':
88
+ case '\n':
89
+ case 'enter':
90
+ this.onSubmit?.(this.value);
91
+ this.clampScroll();
92
+ return; // Enter never mutates value by itself in TextBox.
60
93
  case '\x7f':
61
94
  case '\b':
62
95
  case 'backspace':
@@ -96,6 +129,8 @@ export class TextBox extends Window {
96
129
  }
97
130
  }
98
131
  this.clampScroll();
132
+ if (this.value !== before)
133
+ this.onChange?.(this.value);
99
134
  }
100
135
  /** Rebuilds the TextBox: renders text or placeholder, draws cursor. */
101
136
  render() {
@@ -1 +1 @@
1
- {"version":3,"file":"TextBox.mjs","sourceRoot":"","sources":["../../../src/Screen/controls/TextBox.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TextBox.mjs","sourceRoot":"","sources":["../../../src/Screen/controls/TextBox.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** Sets the display width used for codepoints in the Unicode Private Use Areas
2
+ * (U+E000–F8FF, U+F0000–FFFFD, U+100000–10FFFD). NerdFonts glyphs typically
3
+ * render as one cell; some patched fonts render them as two cells. Default: 1. */
4
+ export declare const setPuaWidth: (width: 1 | 2) => void;
5
+ /** Returns the currently configured Private Use Area width. */
6
+ export declare const getPuaWidth: () => 1 | 2;
7
+ /** Returns the display width (0, 1 or 2 cells) of a single Unicode codepoint. */
8
+ export declare const charWidth: (codepoint: number) => 0 | 1 | 2;
9
+ /** Returns the total display width of a string in monospace terminal cells.
10
+ * Iterates by codepoint, so surrogate pairs are counted once with their
11
+ * combined width (typically 2 for emoji and supplementary CJK). */
12
+ export declare const stringWidth: (str: string) => number;
13
+ //# sourceMappingURL=textWidth.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textWidth.d.mts","sourceRoot":"","sources":["../../src/Screen/textWidth.mts"],"names":[],"mappings":"AAgBA;;mFAEmF;AACnF,eAAO,MAAM,WAAW,GAAI,OAAO,CAAC,GAAG,CAAC,KAAG,IAE1C,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,WAAW,QAAO,CAAC,GAAG,CAAa,CAAC;AA8IjD,iFAAiF;AACjF,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,KAAG,CAAC,GAAG,CAAC,GAAG,CASrD,CAAC;AAEF;;oEAEoE;AACpE,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MAIzC,CAAC"}