@promptctl/rich-js 0.1.0 → 0.3.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 (158) hide show
  1. package/README.md +29 -15
  2. package/dist/core/cells.d.ts +83 -3
  3. package/dist/core/cells.d.ts.map +1 -1
  4. package/dist/core/cells.js +113 -1
  5. package/dist/core/cells.js.map +1 -1
  6. package/dist/core/console.d.ts +0 -1
  7. package/dist/core/console.d.ts.map +1 -1
  8. package/dist/core/console.js +20 -16
  9. package/dist/core/console.js.map +1 -1
  10. package/dist/core/highlighter.d.ts.map +1 -1
  11. package/dist/core/highlighter.js.map +1 -1
  12. package/dist/core/oklch.d.ts +106 -0
  13. package/dist/core/oklch.d.ts.map +1 -0
  14. package/dist/core/oklch.js +221 -0
  15. package/dist/core/oklch.js.map +1 -0
  16. package/dist/core/render.d.ts +26 -7
  17. package/dist/core/render.d.ts.map +1 -1
  18. package/dist/core/render.js +83 -15
  19. package/dist/core/render.js.map +1 -1
  20. package/dist/core/segment.d.ts +14 -1
  21. package/dist/core/segment.d.ts.map +1 -1
  22. package/dist/core/segment.js +28 -3
  23. package/dist/core/segment.js.map +1 -1
  24. package/dist/core/style.d.ts +11 -2
  25. package/dist/core/style.d.ts.map +1 -1
  26. package/dist/core/style.js +31 -18
  27. package/dist/core/style.js.map +1 -1
  28. package/dist/core/text.d.ts +20 -0
  29. package/dist/core/text.d.ts.map +1 -1
  30. package/dist/core/text.js +31 -0
  31. package/dist/core/text.js.map +1 -1
  32. package/dist/index.d.ts +11 -4
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +12 -3
  35. package/dist/index.js.map +1 -1
  36. package/dist/renderables/columns.d.ts.map +1 -1
  37. package/dist/renderables/columns.js +15 -22
  38. package/dist/renderables/columns.js.map +1 -1
  39. package/dist/renderables/layout.d.ts.map +1 -1
  40. package/dist/renderables/layout.js +8 -29
  41. package/dist/renderables/layout.js.map +1 -1
  42. package/dist/renderables/live.d.ts.map +1 -1
  43. package/dist/renderables/live.js +8 -7
  44. package/dist/renderables/live.js.map +1 -1
  45. package/dist/renderables/panel.d.ts +34 -0
  46. package/dist/renderables/panel.d.ts.map +1 -1
  47. package/dist/renderables/panel.js +66 -23
  48. package/dist/renderables/panel.js.map +1 -1
  49. package/dist/template-bindings/helpers.d.ts +25 -0
  50. package/dist/template-bindings/helpers.d.ts.map +1 -0
  51. package/dist/template-bindings/helpers.js +31 -0
  52. package/dist/template-bindings/helpers.js.map +1 -0
  53. package/dist/template-bindings/index.d.ts +57 -18
  54. package/dist/template-bindings/index.d.ts.map +1 -1
  55. package/dist/template-bindings/index.js +83 -18
  56. package/dist/template-bindings/index.js.map +1 -1
  57. package/dist/template-bindings/palette-funcs.d.ts +76 -0
  58. package/dist/template-bindings/palette-funcs.d.ts.map +1 -0
  59. package/dist/template-bindings/palette-funcs.js +157 -0
  60. package/dist/template-bindings/palette-funcs.js.map +1 -0
  61. package/dist/template-bindings/style-funcs.d.ts.map +1 -1
  62. package/dist/template-bindings/style-funcs.js +33 -27
  63. package/dist/template-bindings/style-funcs.js.map +1 -1
  64. package/dist/themes/colorMath.d.ts +40 -0
  65. package/dist/themes/colorMath.d.ts.map +1 -1
  66. package/dist/themes/colorMath.js +82 -1
  67. package/dist/themes/colorMath.js.map +1 -1
  68. package/dist/themes/data/catppuccin-frappe.d.ts +4 -0
  69. package/dist/themes/data/catppuccin-frappe.d.ts.map +1 -0
  70. package/dist/themes/data/catppuccin-frappe.js +159 -0
  71. package/dist/themes/data/catppuccin-frappe.js.map +1 -0
  72. package/dist/themes/data/catppuccin-macchiato.d.ts +4 -0
  73. package/dist/themes/data/catppuccin-macchiato.d.ts.map +1 -0
  74. package/dist/themes/data/catppuccin-macchiato.js +159 -0
  75. package/dist/themes/data/catppuccin-macchiato.js.map +1 -0
  76. package/dist/themes/data/cyberpunk.d.ts +18 -0
  77. package/dist/themes/data/cyberpunk.d.ts.map +1 -0
  78. package/dist/themes/data/cyberpunk.js +192 -0
  79. package/dist/themes/data/cyberpunk.js.map +1 -0
  80. package/dist/themes/data/default.d.ts +4 -0
  81. package/dist/themes/data/default.d.ts.map +1 -0
  82. package/dist/themes/data/default.js +159 -0
  83. package/dist/themes/data/default.js.map +1 -0
  84. package/dist/themes/data/index.d.ts +10 -3
  85. package/dist/themes/data/index.d.ts.map +1 -1
  86. package/dist/themes/data/index.js +24 -7
  87. package/dist/themes/data/index.js.map +1 -1
  88. package/dist/themes/data/svg-export.d.ts +4 -0
  89. package/dist/themes/data/svg-export.d.ts.map +1 -0
  90. package/dist/themes/data/svg-export.js +159 -0
  91. package/dist/themes/data/svg-export.js.map +1 -0
  92. package/dist/themes/data/types.d.ts +4 -3
  93. package/dist/themes/data/types.d.ts.map +1 -1
  94. package/dist/themes/registry.d.ts +29 -2
  95. package/dist/themes/registry.d.ts.map +1 -1
  96. package/dist/themes/registry.js +62 -12
  97. package/dist/themes/registry.js.map +1 -1
  98. package/dist/themes/terminalThemes.d.ts +29 -20
  99. package/dist/themes/terminalThemes.d.ts.map +1 -1
  100. package/dist/themes/terminalThemes.js +50 -249
  101. package/dist/themes/terminalThemes.js.map +1 -1
  102. package/dist/themes/transpose.d.ts +88 -0
  103. package/dist/themes/transpose.d.ts.map +1 -0
  104. package/dist/themes/transpose.js +139 -0
  105. package/dist/themes/transpose.js.map +1 -0
  106. package/dist/widgets/button.d.ts +8 -5
  107. package/dist/widgets/button.d.ts.map +1 -1
  108. package/dist/widgets/button.js +36 -11
  109. package/dist/widgets/button.js.map +1 -1
  110. package/dist/widgets/checkbox.d.ts +1 -2
  111. package/dist/widgets/checkbox.d.ts.map +1 -1
  112. package/dist/widgets/checkbox.js +20 -7
  113. package/dist/widgets/checkbox.js.map +1 -1
  114. package/dist/widgets/dropdown.d.ts +4 -3
  115. package/dist/widgets/dropdown.d.ts.map +1 -1
  116. package/dist/widgets/dropdown.js +109 -27
  117. package/dist/widgets/dropdown.js.map +1 -1
  118. package/dist/widgets/event-router.d.ts +6 -3
  119. package/dist/widgets/event-router.d.ts.map +1 -1
  120. package/dist/widgets/event-router.js +179 -68
  121. package/dist/widgets/event-router.js.map +1 -1
  122. package/dist/widgets/focus-manager.d.ts +2 -1
  123. package/dist/widgets/focus-manager.d.ts.map +1 -1
  124. package/dist/widgets/focus-manager.js +28 -9
  125. package/dist/widgets/focus-manager.js.map +1 -1
  126. package/dist/widgets/index.d.ts +2 -2
  127. package/dist/widgets/index.d.ts.map +1 -1
  128. package/dist/widgets/index.js +1 -1
  129. package/dist/widgets/index.js.map +1 -1
  130. package/dist/widgets/screen.d.ts +2 -0
  131. package/dist/widgets/screen.d.ts.map +1 -1
  132. package/dist/widgets/screen.js +148 -45
  133. package/dist/widgets/screen.js.map +1 -1
  134. package/dist/widgets/slider.d.ts +6 -3
  135. package/dist/widgets/slider.d.ts.map +1 -1
  136. package/dist/widgets/slider.js +34 -10
  137. package/dist/widgets/slider.js.map +1 -1
  138. package/dist/widgets/static-item.d.ts +1 -1
  139. package/dist/widgets/static-item.d.ts.map +1 -1
  140. package/dist/widgets/static-item.js +12 -13
  141. package/dist/widgets/static-item.js.map +1 -1
  142. package/dist/widgets/text-input.d.ts +239 -13
  143. package/dist/widgets/text-input.d.ts.map +1 -1
  144. package/dist/widgets/text-input.js +1004 -74
  145. package/dist/widgets/text-input.js.map +1 -1
  146. package/dist/widgets/toggle.d.ts +1 -2
  147. package/dist/widgets/toggle.d.ts.map +1 -1
  148. package/dist/widgets/toggle.js +20 -8
  149. package/dist/widgets/toggle.js.map +1 -1
  150. package/dist/widgets/types.d.ts +21 -4
  151. package/dist/widgets/types.d.ts.map +1 -1
  152. package/dist/widgets/types.js +19 -0
  153. package/dist/widgets/types.js.map +1 -1
  154. package/dist/widgets/widget-base.d.ts +1 -0
  155. package/dist/widgets/widget-base.d.ts.map +1 -1
  156. package/dist/widgets/widget-base.js +24 -7
  157. package/dist/widgets/widget-base.js.map +1 -1
  158. package/package.json +5 -3
@@ -60,10 +60,11 @@ import { observable, action } from "mobx";
60
60
  import { Segment } from "../core/segment.js";
61
61
  import { Style } from "../core/style.js";
62
62
  import { ColorSpec } from "../core/color.js";
63
+ import { cellLen, setCellSize, splitText, asCellCol } from "../core/cells.js";
63
64
  import { DEFAULT_TERMINAL_THEME } from "../themes/terminalThemes.js";
64
65
  import { WidgetBase } from "./widget-base.js";
65
66
  let Dropdown = (() => {
66
- var _a;
67
+ var _a, _b;
67
68
  let _classSuper = WidgetBase;
68
69
  let _instanceExtraInitializers = [];
69
70
  let _options_decorators;
@@ -81,9 +82,13 @@ let Dropdown = (() => {
81
82
  let _filter_decorators;
82
83
  let _filter_initializers = [];
83
84
  let _filter_extraInitializers = [];
85
+ let __theme_decorators;
86
+ let __theme_initializers = [];
87
+ let __theme_extraInitializers = [];
88
+ let _setTheme_decorators;
84
89
  let _handleKey_decorators;
85
90
  let _handleMouse_decorators;
86
- let _setHovered_decorators;
91
+ let _handleFocus_decorators;
87
92
  return class Dropdown extends _classSuper {
88
93
  static {
89
94
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
@@ -92,17 +97,21 @@ let Dropdown = (() => {
92
97
  _expanded_decorators = [observable];
93
98
  _highlightedIndex_decorators = [observable];
94
99
  _filter_decorators = [observable];
100
+ __theme_decorators = [(_b = observable).ref.bind(_b)];
101
+ _setTheme_decorators = [action];
95
102
  _handleKey_decorators = [action];
96
103
  _handleMouse_decorators = [action];
97
- _setHovered_decorators = [action];
104
+ _handleFocus_decorators = [action];
98
105
  __esDecorate(this, null, _options_decorators, { kind: "accessor", name: "options", static: false, private: false, access: { has: obj => "options" in obj, get: obj => obj.options, set: (obj, value) => { obj.options = value; } }, metadata: _metadata }, _options_initializers, _options_extraInitializers);
99
106
  __esDecorate(this, null, _selectedIndex_decorators, { kind: "accessor", name: "selectedIndex", static: false, private: false, access: { has: obj => "selectedIndex" in obj, get: obj => obj.selectedIndex, set: (obj, value) => { obj.selectedIndex = value; } }, metadata: _metadata }, _selectedIndex_initializers, _selectedIndex_extraInitializers);
100
107
  __esDecorate(this, null, _expanded_decorators, { kind: "accessor", name: "expanded", static: false, private: false, access: { has: obj => "expanded" in obj, get: obj => obj.expanded, set: (obj, value) => { obj.expanded = value; } }, metadata: _metadata }, _expanded_initializers, _expanded_extraInitializers);
101
108
  __esDecorate(this, null, _highlightedIndex_decorators, { kind: "accessor", name: "highlightedIndex", static: false, private: false, access: { has: obj => "highlightedIndex" in obj, get: obj => obj.highlightedIndex, set: (obj, value) => { obj.highlightedIndex = value; } }, metadata: _metadata }, _highlightedIndex_initializers, _highlightedIndex_extraInitializers);
102
109
  __esDecorate(this, null, _filter_decorators, { kind: "accessor", name: "filter", static: false, private: false, access: { has: obj => "filter" in obj, get: obj => obj.filter, set: (obj, value) => { obj.filter = value; } }, metadata: _metadata }, _filter_initializers, _filter_extraInitializers);
110
+ __esDecorate(this, null, __theme_decorators, { kind: "accessor", name: "_theme", static: false, private: false, access: { has: obj => "_theme" in obj, get: obj => obj._theme, set: (obj, value) => { obj._theme = value; } }, metadata: _metadata }, __theme_initializers, __theme_extraInitializers);
111
+ __esDecorate(this, null, _setTheme_decorators, { kind: "method", name: "setTheme", static: false, private: false, access: { has: obj => "setTheme" in obj, get: obj => obj.setTheme }, metadata: _metadata }, null, _instanceExtraInitializers);
103
112
  __esDecorate(this, null, _handleKey_decorators, { kind: "method", name: "handleKey", static: false, private: false, access: { has: obj => "handleKey" in obj, get: obj => obj.handleKey }, metadata: _metadata }, null, _instanceExtraInitializers);
104
113
  __esDecorate(this, null, _handleMouse_decorators, { kind: "method", name: "handleMouse", static: false, private: false, access: { has: obj => "handleMouse" in obj, get: obj => obj.handleMouse }, metadata: _metadata }, null, _instanceExtraInitializers);
105
- __esDecorate(this, null, _setHovered_decorators, { kind: "method", name: "setHovered", static: false, private: false, access: { has: obj => "setHovered" in obj, get: obj => obj.setHovered }, metadata: _metadata }, null, _instanceExtraInitializers);
114
+ __esDecorate(this, null, _handleFocus_decorators, { kind: "method", name: "handleFocus", static: false, private: false, access: { has: obj => "handleFocus" in obj, get: obj => obj.handleFocus }, metadata: _metadata }, null, _instanceExtraInitializers);
106
115
  if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
107
116
  }
108
117
  id = __runInitializers(this, _instanceExtraInitializers);
@@ -135,16 +144,38 @@ let Dropdown = (() => {
135
144
  }
136
145
  return result;
137
146
  }
138
- _theme = __runInitializers(this, _filter_extraInitializers);
147
+ #_theme_accessor_storage = (__runInitializers(this, _filter_extraInitializers), __runInitializers(this, __theme_initializers, void 0));
148
+ // [LAW:types-are-the-program] @observable.ref so setTheme() triggers a
149
+ // re-render — render() and resolvePalette() read _theme.palette, so the
150
+ // theme reference must participate in MobX reactivity.
151
+ get _theme() { return this.#_theme_accessor_storage; }
152
+ set _theme(value) { this.#_theme_accessor_storage = value; }
139
153
  constructor(options) {
140
154
  super();
155
+ __runInitializers(this, __theme_extraInitializers);
141
156
  this.id = options.id ?? `dropdown-${Math.random().toString(36).slice(2, 8)}`;
142
157
  this.options = [...options.options];
143
- this.selectedIndex = options.selectedIndex ?? 0;
158
+ // [LAW:types-are-the-program] selectedIndex must point to a valid
159
+ // option (or be 0 for the empty-options case). Clamp at the trust
160
+ // boundary so headerText / render / commit logic can all assume
161
+ // validity. Empty options is allowed — render falls back to an
162
+ // empty label and commit is a no-op until options are populated.
163
+ this.selectedIndex = this.clampIndex(options.selectedIndex ?? 0);
144
164
  this.highlightedIndex = this.selectedIndex;
145
165
  this.disabled = options.disabled ?? false;
146
166
  this._theme = options.theme ?? DEFAULT_TERMINAL_THEME;
147
167
  }
168
+ // [LAW:single-enforcer] One place owns "is this index valid for the
169
+ // current options". selectedIndex and options are public observables —
170
+ // external code can move them out of range. Anywhere internal code
171
+ // seeds highlightedIndex from selectedIndex (constructor + every
172
+ // expand path), route through this clamp so the seeded value is
173
+ // always a legal option index (or 0 for empty options).
174
+ clampIndex(n) {
175
+ if (this.options.length === 0)
176
+ return 0;
177
+ return Math.max(0, Math.min(n, this.options.length - 1));
178
+ }
148
179
  setTheme(theme) { this._theme = theme; }
149
180
  // --- Event handlers ---
150
181
  handleKey(event) {
@@ -159,7 +190,8 @@ let Dropdown = (() => {
159
190
  // enter/space remain the explicit "open with selection seeded" gesture.
160
191
  if (event.key === "enter" || event.key === "space") {
161
192
  this.expanded = true;
162
- this.highlightedIndex = this.selectedIndex;
193
+ this.highlightedIndex = this.clampIndex(this.selectedIndex);
194
+ event.stop();
163
195
  return;
164
196
  }
165
197
  // Any other printable char auto-expands and starts filtering.
@@ -167,6 +199,7 @@ let Dropdown = (() => {
167
199
  this.expanded = true;
168
200
  this.filter = this.filter + event.character;
169
201
  this.highlightedIndex = 0;
202
+ event.stop();
170
203
  }
171
204
  return;
172
205
  }
@@ -174,16 +207,19 @@ let Dropdown = (() => {
174
207
  switch (event.key) {
175
208
  case "up":
176
209
  this.highlightedIndex = Math.max(0, this.highlightedIndex - 1);
210
+ event.stop();
177
211
  return;
178
212
  case "down": {
179
213
  const max = Math.max(0, this.filteredOptions.length - 1);
180
214
  this.highlightedIndex = Math.min(max, this.highlightedIndex + 1);
215
+ event.stop();
181
216
  return;
182
217
  }
183
218
  case "enter": {
184
219
  // [LAW:one-source-of-truth] Map filtered position → canonical idx.
185
220
  // No-op when filteredOptions is empty (highlighted is undefined).
186
221
  const picked = this.filteredOptions[this.highlightedIndex];
222
+ event.stop();
187
223
  if (picked === undefined)
188
224
  return;
189
225
  this.selectedIndex = picked.idx;
@@ -197,16 +233,30 @@ let Dropdown = (() => {
197
233
  // Single-step: clear filter + collapse.
198
234
  this.filter = "";
199
235
  this.expanded = false;
236
+ event.stop();
200
237
  return;
201
238
  case "backspace":
202
239
  // [LAW:dataflow-not-control-flow] slice(0,-1) on "" is "" — no guard.
203
240
  this.filter = this.filter.slice(0, -1);
204
241
  this.highlightedIndex = 0;
242
+ event.stop();
243
+ return;
244
+ case "tab":
245
+ // First Tab while expanded cancels (clear filter + collapse) and
246
+ // KEEPS focus on the dropdown. event.stop() halts the chain so
247
+ // FocusManager's normal-priority Tab handler never runs — focus
248
+ // traversal only happens on the *next* Tab press, when this widget
249
+ // is collapsed and no longer stops the event. Shift direction is
250
+ // ignored: both Tab and Shift+Tab cancel.
251
+ this.filter = "";
252
+ this.expanded = false;
253
+ event.stop();
205
254
  return;
206
255
  }
207
256
  if (isPrintable) {
208
257
  this.filter = this.filter + event.character;
209
258
  this.highlightedIndex = 0;
259
+ event.stop();
210
260
  }
211
261
  }
212
262
  handleMouse(event) {
@@ -224,7 +274,7 @@ let Dropdown = (() => {
224
274
  if (!this.expanded) {
225
275
  if (inside) {
226
276
  this.expanded = true;
227
- this.highlightedIndex = this.selectedIndex;
277
+ this.highlightedIndex = this.clampIndex(this.selectedIndex);
228
278
  }
229
279
  return;
230
280
  }
@@ -252,14 +302,28 @@ let Dropdown = (() => {
252
302
  this.emitChange();
253
303
  this.emitSubmit();
254
304
  }
255
- // --- Hover mutator (router fast-path) ---
256
- setHovered(value) { this.hovered = value; }
305
+ // [LAW:single-enforcer] FocusManager is the single dispatcher of focus
306
+ // transitions; overriding handleFocus here catches every blur path (Tab
307
+ // cycling, programmatic focus, unregister) so the overlay cannot outlive
308
+ // the widget's focus. Collapse is the data; no separate "should I close"
309
+ // branch lives at the router or elsewhere.
310
+ handleFocus(event) {
311
+ super.handleFocus(event);
312
+ if (event.type === "blur") {
313
+ this.filter = "";
314
+ this.expanded = false;
315
+ }
316
+ }
257
317
  // --- Rendering ---
258
318
  render(options) {
259
319
  // Header only — the inline footprint that flow layout sees. Always
260
320
  // 1 row regardless of `expanded`/`filter`. Option rows live in
261
321
  // renderOverlay. Width invariant: maxLabelLen + 4.
262
322
  const arrowChar = options.asciiOnly ? "v" : "▾";
323
+ // [LAW:one-source-of-truth] render() owns the asciiOnly switch; the
324
+ // caret character flows into headerText as data rather than headerText
325
+ // re-reading the option flag. Same arrow / caret resolution path.
326
+ const caret = this.focused ? (options.asciiOnly ? "|" : "│") : "";
263
327
  const maxLabelLen = this.maxLabelLen();
264
328
  const baseStyle = this.disabled
265
329
  ? new Style({ color: "#666666", bgcolor: "#333333", dim: true })
@@ -268,7 +332,7 @@ let Dropdown = (() => {
268
332
  bgcolor: this.resolvePalette("surface"),
269
333
  underline: this.focused,
270
334
  });
271
- const headerLabel = this.headerText(maxLabelLen);
335
+ const headerLabel = this.headerText(maxLabelLen, caret);
272
336
  return [
273
337
  new Segment("[", baseStyle),
274
338
  new Segment(`${headerLabel} ${arrowChar}`, baseStyle),
@@ -278,14 +342,28 @@ let Dropdown = (() => {
278
342
  // [LAW:dataflow-not-control-flow] One header text function; the data
279
343
  // (filter empty vs not) chooses between selected-label and query+cursor.
280
344
  // Both branches yield exactly maxLabelLen cells — width invariant.
281
- headerText(maxLabelLen) {
345
+ // Selected label is centered; filter input is left-aligned so the caret
346
+ // doesn't jitter horizontally while typing.
347
+ //
348
+ // [LAW:one-source-of-truth] All width math is in terminal cells via
349
+ // cellLen / setCellSize / splitText — plain `.length` would miscount
350
+ // wide / emoji characters and break the width invariant.
351
+ headerText(maxLabelLen, caret) {
282
352
  if (this.filter === "") {
283
- return (this.options[this.selectedIndex] ?? "").padEnd(maxLabelLen, " ");
353
+ const raw = this.options[this.selectedIndex] ?? "";
354
+ const w = cellLen(raw);
355
+ if (w >= maxLabelLen)
356
+ return setCellSize(raw, asCellCol(maxLabelLen));
357
+ const pad = maxLabelLen - w;
358
+ const left = Math.floor(pad / 2);
359
+ const right = pad - left;
360
+ return " ".repeat(left) + raw + " ".repeat(right);
284
361
  }
285
- const cursor = this.focused ? "│" : "";
286
- const filterRoom = Math.max(0, maxLabelLen - cursor.length);
287
- const filterText = this.filter.slice(0, filterRoom);
288
- return (filterText + cursor).padEnd(maxLabelLen, " ");
362
+ // Leading space gives the filter input a small gutter from the [ chrome,
363
+ // matching the visual breathing room of the centered label.
364
+ const filterRoom = Math.max(0, maxLabelLen - cellLen(caret) - 1);
365
+ const [filterText] = splitText(this.filter, asCellCol(filterRoom));
366
+ return setCellSize(" " + filterText + caret, asCellCol(maxLabelLen));
289
367
  }
290
368
  renderOverlay(_options) {
291
369
  if (!this.expanded)
@@ -304,7 +382,7 @@ let Dropdown = (() => {
304
382
  }
305
383
  renderNoMatchRow(maxLabelLen) {
306
384
  // Right-clipped + padded so width matches a normal option row.
307
- const text = "(no matches)".slice(0, maxLabelLen).padEnd(maxLabelLen, " ");
385
+ const text = setCellSize("(no matches)", asCellCol(maxLabelLen));
308
386
  const inner = ` ${text} `;
309
387
  const style = this.disabled
310
388
  ? new Style({ color: "#666666", bgcolor: "#333333", dim: true })
@@ -314,15 +392,17 @@ let Dropdown = (() => {
314
392
  dim: true,
315
393
  });
316
394
  return [
317
- new Segment("[", style),
395
+ new Segment(" ", style),
318
396
  new Segment(inner, style),
319
- new Segment("]", style),
397
+ new Segment(" ", style),
320
398
  ];
321
399
  }
322
400
  renderOptionRow(entry, fpos, maxLabelLen) {
323
- // Row: "[ " + label.padEnd(maxLabelLen) + " ]"
401
+ // Row: " " + label.padEnd(maxLabelLen) + " "
324
402
  // Width = 1 + 1 + maxLabelLen + 1 + 1 = maxLabelLen + 4.
325
- const label = entry.label.padEnd(maxLabelLen, " ");
403
+ // Overlay rows are unbracketed — selection/highlight are conveyed by bg
404
+ // color; the header keeps [ ] as its focus-indicator chrome.
405
+ const label = setCellSize(entry.label, asCellCol(maxLabelLen));
326
406
  const inner = ` ${label} `;
327
407
  const isSelected = entry.idx === this.selectedIndex;
328
408
  const isHighlighted = fpos === this.highlightedIndex;
@@ -345,16 +425,18 @@ let Dropdown = (() => {
345
425
  bgcolor: this.resolvePalette("surface"),
346
426
  });
347
427
  return [
348
- new Segment("[", rowStyle),
428
+ new Segment(" ", rowStyle),
349
429
  new Segment(inner, rowStyle),
350
- new Segment("]", rowStyle),
430
+ new Segment(" ", rowStyle),
351
431
  ];
352
432
  }
353
433
  maxLabelLen() {
354
434
  let m = 0;
355
- for (const label of this.options)
356
- if (label.length > m)
357
- m = label.length;
435
+ for (const label of this.options) {
436
+ const w = cellLen(label);
437
+ if (w > m)
438
+ m = w;
439
+ }
358
440
  return m;
359
441
  }
360
442
  measure(_options) {
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../src/widgets/dropdown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../src/widgets/dropdown.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,9 @@
16
16
  * router defers emission via setImmediate. The next chunk cancels the timer
17
17
  * if it extends the sequence. Tests can call `flush()` to drain synchronously.
18
18
  */
19
- import type { Screen, FocusManager, InteractiveWidget, KeyEvent, WidgetMouseEvent, Unsubscribe } from "./types.js";
19
+ import { KeyEvent } from "./types.js";
20
+ import type { Screen, FocusManager, InteractiveWidget, WidgetMouseEvent, KeyHandlerOptions, Unsubscribe } from "./types.js";
21
+ type KeyHandler = (event: KeyEvent) => void;
20
22
  type WidgetSource = {
21
23
  focusManager: FocusManager;
22
24
  getWidgets: () => readonly InteractiveWidget[];
@@ -49,12 +51,13 @@ export declare class EventRouter {
49
51
  private running;
50
52
  private dataListener;
51
53
  private escTimer;
52
- private readonly keyHandlers;
54
+ private capturedWidget;
55
+ private readonly keyChain;
53
56
  private readonly mouseHandlers;
54
57
  constructor(options: EventRouterOptions);
55
58
  start(): void;
56
59
  stop(): void;
57
- onKey(handler: (event: KeyEvent) => void): Unsubscribe;
60
+ onKey(handler: KeyHandler, options?: KeyHandlerOptions): Unsubscribe;
58
61
  onMouse(handler: (event: WidgetMouseEvent) => void): Unsubscribe;
59
62
  /** Feed a chunk of bytes (or a string of bytes) into the parser. */
60
63
  feed(chunk: Buffer | string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"event-router.d.ts","sourceRoot":"","sources":["../../src/widgets/event-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,KAAK,YAAY,GAAG;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,SAAS,iBAAiB,EAAE,CAAC;CAChD,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG;QAC9B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;QACvC,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA+ED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IAExC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAiD;IACrE,OAAO,CAAC,QAAQ,CAA8C;IAE9D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IACpE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;gBAElE,OAAO,EAAE,kBAAkB;IAiBvC,KAAK,IAAI,IAAI;IAsBb,IAAI,IAAI,IAAI;IAqBZ,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,WAAW;IAKtD,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,WAAW;IAOhE,oEAAoE;IACpE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkBlC,oDAAoD;IACpD,KAAK,IAAI,IAAI;IAab,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,UAAU;IA6ClB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,UAAU;IAuDlB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;CAyBtB"}
1
+ {"version":3,"file":"event-router.d.ts","sourceRoot":"","sources":["../../src/widgets/event-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAEjB,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAM5C,KAAK,YAAY,GAAG;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,SAAS,iBAAiB,EAAE,CAAC;CAChD,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG;QAC9B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;QACvC,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA+ED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IAExC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAiD;IACrE,OAAO,CAAC,QAAQ,CAA8C;IAM9D,OAAO,CAAC,cAAc,CAAkC;IAKxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;gBAElE,OAAO,EAAE,kBAAkB;IAyBvC,KAAK,IAAI,IAAI;IAiBb,IAAI,IAAI,IAAI;IAiCZ,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,WAAW;IAYpE,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,WAAW;IAOhE,oEAAoE;IACpE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkBlC,oDAAoD;IACpD,KAAK,IAAI,IAAI;IAab,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,UAAU;IA6ClB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,aAAa;IA2ErB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,UAAU;IA2DlB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,aAAa;CA+BtB"}