@effect-tui/react 0.12.3 → 0.14.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 (170) hide show
  1. package/README.md +31 -7
  2. package/dist/jsx-runtime.d.ts +1 -2
  3. package/dist/jsx-runtime.d.ts.map +1 -1
  4. package/dist/src/components/Markdown.js +7 -7
  5. package/dist/src/components/Markdown.js.map +1 -1
  6. package/dist/src/components/MultilineTextInput.d.ts.map +1 -1
  7. package/dist/src/components/MultilineTextInput.js +11 -0
  8. package/dist/src/components/MultilineTextInput.js.map +1 -1
  9. package/dist/src/components/TextInput.d.ts.map +1 -1
  10. package/dist/src/components/TextInput.js +15 -0
  11. package/dist/src/components/TextInput.js.map +1 -1
  12. package/dist/src/dev.d.ts +22 -32
  13. package/dist/src/dev.d.ts.map +1 -1
  14. package/dist/src/dev.js +42 -96
  15. package/dist/src/dev.js.map +1 -1
  16. package/dist/src/hooks/index.d.ts +3 -0
  17. package/dist/src/hooks/index.d.ts.map +1 -1
  18. package/dist/src/hooks/index.js +1 -0
  19. package/dist/src/hooks/index.js.map +1 -1
  20. package/dist/src/hooks/use-mouse.d.ts +10 -1
  21. package/dist/src/hooks/use-mouse.d.ts.map +1 -1
  22. package/dist/src/hooks/use-mouse.js +10 -2
  23. package/dist/src/hooks/use-mouse.js.map +1 -1
  24. package/dist/src/hooks/use-paste.d.ts +13 -3
  25. package/dist/src/hooks/use-paste.d.ts.map +1 -1
  26. package/dist/src/hooks/use-paste.js +15 -5
  27. package/dist/src/hooks/use-paste.js.map +1 -1
  28. package/dist/src/hooks/use-scroll.d.ts +59 -24
  29. package/dist/src/hooks/use-scroll.d.ts.map +1 -1
  30. package/dist/src/hooks/use-scroll.js +238 -79
  31. package/dist/src/hooks/use-scroll.js.map +1 -1
  32. package/dist/src/hooks/use-shortcut.d.ts +16 -0
  33. package/dist/src/hooks/use-shortcut.d.ts.map +1 -0
  34. package/dist/src/hooks/use-shortcut.js +29 -0
  35. package/dist/src/hooks/use-shortcut.js.map +1 -0
  36. package/dist/src/hosts/base.d.ts +16 -0
  37. package/dist/src/hosts/base.d.ts.map +1 -1
  38. package/dist/src/hosts/base.js +30 -0
  39. package/dist/src/hosts/base.js.map +1 -1
  40. package/dist/src/hosts/box.d.ts.map +1 -1
  41. package/dist/src/hosts/box.js +7 -8
  42. package/dist/src/hosts/box.js.map +1 -1
  43. package/dist/src/hosts/canvas.d.ts.map +1 -1
  44. package/dist/src/hosts/canvas.js +5 -3
  45. package/dist/src/hosts/canvas.js.map +1 -1
  46. package/dist/src/hosts/codeblock.d.ts.map +1 -1
  47. package/dist/src/hosts/codeblock.js +5 -4
  48. package/dist/src/hosts/codeblock.js.map +1 -1
  49. package/dist/src/hosts/flex-container.d.ts.map +1 -1
  50. package/dist/src/hosts/flex-container.js +5 -8
  51. package/dist/src/hosts/flex-container.js.map +1 -1
  52. package/dist/src/hosts/index.d.ts +1 -1
  53. package/dist/src/hosts/index.d.ts.map +1 -1
  54. package/dist/src/hosts/index.js +2 -3
  55. package/dist/src/hosts/index.js.map +1 -1
  56. package/dist/src/hosts/overlay-item.js +2 -2
  57. package/dist/src/hosts/overlay-item.js.map +1 -1
  58. package/dist/src/hosts/overlay.d.ts.map +1 -1
  59. package/dist/src/hosts/overlay.js +6 -11
  60. package/dist/src/hosts/overlay.js.map +1 -1
  61. package/dist/src/hosts/scroll.d.ts +8 -0
  62. package/dist/src/hosts/scroll.d.ts.map +1 -1
  63. package/dist/src/hosts/scroll.js +50 -26
  64. package/dist/src/hosts/scroll.js.map +1 -1
  65. package/dist/src/hosts/spacer.d.ts.map +1 -1
  66. package/dist/src/hosts/spacer.js +1 -3
  67. package/dist/src/hosts/spacer.js.map +1 -1
  68. package/dist/src/hosts/text.d.ts +24 -45
  69. package/dist/src/hosts/text.d.ts.map +1 -1
  70. package/dist/src/hosts/text.js +69 -215
  71. package/dist/src/hosts/text.js.map +1 -1
  72. package/dist/src/hosts/zstack.d.ts.map +1 -1
  73. package/dist/src/hosts/zstack.js +4 -10
  74. package/dist/src/hosts/zstack.js.map +1 -1
  75. package/dist/src/index.d.ts +6 -4
  76. package/dist/src/index.d.ts.map +1 -1
  77. package/dist/src/index.js +3 -2
  78. package/dist/src/index.js.map +1 -1
  79. package/dist/src/reconciler/types.d.ts +2 -0
  80. package/dist/src/reconciler/types.d.ts.map +1 -1
  81. package/dist/src/renderer/core/FrameBuilder.d.ts.map +1 -1
  82. package/dist/src/renderer/core/FrameBuilder.js +2 -0
  83. package/dist/src/renderer/core/FrameBuilder.js.map +1 -1
  84. package/dist/src/renderer/input/InputProcessor.d.ts.map +1 -1
  85. package/dist/src/renderer/input/InputProcessor.js +13 -3
  86. package/dist/src/renderer/input/InputProcessor.js.map +1 -1
  87. package/dist/src/renderer/lifecycle/EventBus.d.ts +2 -2
  88. package/dist/src/renderer/lifecycle/EventBus.d.ts.map +1 -1
  89. package/dist/src/renderer/lifecycle/EventBus.js +13 -1
  90. package/dist/src/renderer/lifecycle/EventBus.js.map +1 -1
  91. package/dist/src/renderer/lifecycle/RenderCache.d.ts +3 -0
  92. package/dist/src/renderer/lifecycle/RenderCache.d.ts.map +1 -0
  93. package/dist/src/renderer/lifecycle/RenderCache.js +9 -0
  94. package/dist/src/renderer/lifecycle/RenderCache.js.map +1 -0
  95. package/dist/src/renderer/lifecycle/index.d.ts +1 -0
  96. package/dist/src/renderer/lifecycle/index.d.ts.map +1 -1
  97. package/dist/src/renderer/lifecycle/index.js +1 -0
  98. package/dist/src/renderer/lifecycle/index.js.map +1 -1
  99. package/dist/src/renderer-types.d.ts +9 -2
  100. package/dist/src/renderer-types.d.ts.map +1 -1
  101. package/dist/src/renderer.d.ts +13 -2
  102. package/dist/src/renderer.d.ts.map +1 -1
  103. package/dist/src/renderer.js +42 -11
  104. package/dist/src/renderer.js.map +1 -1
  105. package/dist/src/shortcuts.d.ts +15 -0
  106. package/dist/src/shortcuts.d.ts.map +1 -0
  107. package/dist/src/shortcuts.js +149 -0
  108. package/dist/src/shortcuts.js.map +1 -0
  109. package/dist/src/test/mock-streams.d.ts.map +1 -1
  110. package/dist/src/test/mock-streams.js +0 -3
  111. package/dist/src/test/mock-streams.js.map +1 -1
  112. package/dist/src/test/render-tui.d.ts.map +1 -1
  113. package/dist/src/test/render-tui.js +1 -0
  114. package/dist/src/test/render-tui.js.map +1 -1
  115. package/dist/src/utils/alignment.d.ts +4 -0
  116. package/dist/src/utils/alignment.d.ts.map +1 -1
  117. package/dist/src/utils/alignment.js +12 -0
  118. package/dist/src/utils/alignment.js.map +1 -1
  119. package/dist/src/utils/index.d.ts +3 -2
  120. package/dist/src/utils/index.d.ts.map +1 -1
  121. package/dist/src/utils/index.js +3 -2
  122. package/dist/src/utils/index.js.map +1 -1
  123. package/dist/src/utils/styles.d.ts +6 -1
  124. package/dist/src/utils/styles.d.ts.map +1 -1
  125. package/dist/src/utils/styles.js +9 -0
  126. package/dist/src/utils/styles.js.map +1 -1
  127. package/dist/src/utils/text-wrap.d.ts +10 -0
  128. package/dist/src/utils/text-wrap.d.ts.map +1 -0
  129. package/dist/src/utils/text-wrap.js +64 -0
  130. package/dist/src/utils/text-wrap.js.map +1 -0
  131. package/dist/tsconfig.tsbuildinfo +1 -1
  132. package/jsx-runtime.ts +1 -2
  133. package/package.json +2 -2
  134. package/src/components/Markdown.tsx +7 -7
  135. package/src/components/MultilineTextInput.tsx +14 -0
  136. package/src/components/TextInput.tsx +18 -0
  137. package/src/dev.tsx +59 -107
  138. package/src/hooks/index.ts +3 -0
  139. package/src/hooks/use-mouse.ts +19 -3
  140. package/src/hooks/use-paste.ts +24 -5
  141. package/src/hooks/use-scroll.ts +345 -105
  142. package/src/hooks/use-shortcut.ts +54 -0
  143. package/src/hosts/base.ts +35 -0
  144. package/src/hosts/box.ts +7 -8
  145. package/src/hosts/canvas.ts +5 -3
  146. package/src/hosts/codeblock.ts +5 -4
  147. package/src/hosts/flex-container.ts +5 -7
  148. package/src/hosts/index.ts +1 -4
  149. package/src/hosts/overlay-item.ts +2 -2
  150. package/src/hosts/overlay.ts +6 -12
  151. package/src/hosts/scroll.ts +55 -26
  152. package/src/hosts/spacer.ts +1 -3
  153. package/src/hosts/text.ts +89 -256
  154. package/src/hosts/zstack.ts +4 -11
  155. package/src/index.ts +19 -6
  156. package/src/reconciler/types.ts +3 -0
  157. package/src/renderer/core/FrameBuilder.ts +3 -0
  158. package/src/renderer/input/InputProcessor.ts +13 -3
  159. package/src/renderer/lifecycle/EventBus.ts +14 -4
  160. package/src/renderer/lifecycle/RenderCache.ts +13 -0
  161. package/src/renderer/lifecycle/index.ts +1 -0
  162. package/src/renderer-types.ts +10 -2
  163. package/src/renderer.ts +85 -14
  164. package/src/shortcuts.ts +180 -0
  165. package/src/test/mock-streams.ts +0 -3
  166. package/src/test/render-tui.ts +1 -0
  167. package/src/utils/alignment.ts +18 -0
  168. package/src/utils/index.ts +3 -1
  169. package/src/utils/styles.ts +18 -1
  170. package/src/utils/text-wrap.ts +66 -0
@@ -129,101 +129,216 @@ const reduceScroll = (state, action) => {
129
129
  * ```
130
130
  */
131
131
  export function useScroll(options = {}) {
132
- const { axis = "vertical", contentSize: controlledContentSize, initialViewportSize, initialContentSize, initialOffset = 0, enableKeyboard = true, enableMouseWheel = true, enableAcceleration = true, sticky = false, arrowSpeed = 1, pageSpeed = 0.5, } = options;
132
+ const { axis = "vertical", contentSize, contentWidth, contentHeight, initialViewportSize, initialViewportWidth, initialViewportHeight, initialContentSize, initialContentWidth, initialContentHeight, initialOffset = 0, initialOffsetX = 0, align = "start", showScrollbar = true, enableKeyboard = true, enableMouseWheel = true, enableAcceleration = true, sticky = false, arrowSpeed = 1, pageSpeed = 0.5, } = options;
133
133
  const { width: termWidth, height: termHeight } = useTerminalSize();
134
- const baseViewportSize = initialViewportSize ?? (axis === "vertical" ? termHeight : termWidth);
135
- const baseContentSize = controlledContentSize ?? initialContentSize ?? 0;
136
- const [internal, dispatch] = useReducer(reduceScroll, {
137
- offset: clampOffset(initialOffset, baseContentSize, baseViewportSize),
138
- contentSize: baseContentSize,
139
- viewportSize: baseViewportSize,
134
+ const enableY = axis === "vertical" || axis === "both";
135
+ const enableX = axis === "horizontal" || axis === "both";
136
+ const primaryAxis = axis === "horizontal" ? "horizontal" : "vertical";
137
+ const controlledContentHeight = contentHeight ?? (axis !== "horizontal" ? contentSize : undefined);
138
+ const controlledContentWidth = contentWidth ?? (axis === "horizontal" ? contentSize : undefined);
139
+ const baseViewportHeight = initialViewportHeight ?? (axis !== "horizontal" ? initialViewportSize : undefined) ?? termHeight;
140
+ const baseViewportWidth = initialViewportWidth ?? (axis === "horizontal" ? initialViewportSize : undefined) ?? termWidth;
141
+ const baseContentHeight = controlledContentHeight ?? initialContentHeight ?? (axis !== "horizontal" ? initialContentSize : undefined) ?? 0;
142
+ const baseContentWidth = controlledContentWidth ?? initialContentWidth ?? (axis === "horizontal" ? initialContentSize : undefined) ?? 0;
143
+ const initialOffsetY = axis === "horizontal" ? 0 : initialOffset;
144
+ const initialOffsetXResolved = axis === "horizontal" ? initialOffset : initialOffsetX;
145
+ const [internalY, dispatchY] = useReducer(reduceScroll, {
146
+ offset: clampOffset(initialOffsetY, baseContentHeight, baseViewportHeight),
147
+ contentSize: baseContentHeight,
148
+ viewportSize: baseViewportHeight,
140
149
  viewportMeasured: false,
141
150
  sticky,
142
151
  });
143
- const stateRef = useRef(internal);
144
- stateRef.current = internal;
145
- const viewportSizeRef = useRef(baseViewportSize);
152
+ const [internalX, dispatchX] = useReducer(reduceScroll, {
153
+ offset: clampOffset(initialOffsetXResolved, baseContentWidth, baseViewportWidth),
154
+ contentSize: baseContentWidth,
155
+ viewportSize: baseViewportWidth,
156
+ viewportMeasured: false,
157
+ sticky,
158
+ });
159
+ const stateYRef = useRef(internalY);
160
+ const stateXRef = useRef(internalX);
161
+ stateYRef.current = internalY;
162
+ stateXRef.current = internalX;
163
+ const viewportYRef = useRef(baseViewportHeight);
164
+ const viewportXRef = useRef(baseViewportWidth);
146
165
  // Scroll acceleration
147
- const accel = useMemo(() => (enableAcceleration ? new MacOSScrollAccel() : { tick: () => 1, reset: () => { } }), [enableAcceleration]);
166
+ const accelY = useMemo(() => (enableAcceleration ? new MacOSScrollAccel() : { tick: () => 1, reset: () => { } }), [enableAcceleration]);
167
+ const accelX = useMemo(() => (enableAcceleration ? new MacOSScrollAccel() : { tick: () => 1, reset: () => { } }), [enableAcceleration]);
148
168
  // Fractional accumulator for smooth sub-pixel scrolling
149
- const accumulatorRef = useRef(0);
169
+ const accumulatorYRef = useRef(0);
170
+ const accumulatorXRef = useRef(0);
150
171
  // Keep sticky state in sync when options change
151
172
  useLayoutEffect(() => {
152
- dispatch({ type: "set-sticky", sticky });
173
+ dispatchY({ type: "set-sticky", sticky });
174
+ dispatchX({ type: "set-sticky", sticky });
153
175
  }, [sticky]);
154
176
  // Scroll by delta with accumulator for fractional scrolling
155
177
  // Uses functional state updates to avoid stale closures during rapid scrolling
156
- const scrollBy = useCallback((delta) => {
157
- accumulatorRef.current += delta;
158
- const integerDelta = Math.trunc(accumulatorRef.current);
178
+ const scrollByY = useCallback((delta) => {
179
+ if (!enableY)
180
+ return;
181
+ accumulatorYRef.current += delta;
182
+ const integerDelta = Math.trunc(accumulatorYRef.current);
159
183
  if (integerDelta !== 0) {
160
- dispatch({ type: "scroll-by", delta: integerDelta });
161
- accumulatorRef.current -= integerDelta;
184
+ dispatchY({ type: "scroll-by", delta: integerDelta });
185
+ accumulatorYRef.current -= integerDelta;
186
+ }
187
+ }, [dispatchY, enableY]);
188
+ const scrollByX = useCallback((delta) => {
189
+ if (!enableX)
190
+ return;
191
+ accumulatorXRef.current += delta;
192
+ const integerDelta = Math.trunc(accumulatorXRef.current);
193
+ if (integerDelta !== 0) {
194
+ dispatchX({ type: "scroll-by", delta: integerDelta });
195
+ accumulatorXRef.current -= integerDelta;
196
+ }
197
+ }, [dispatchX, enableX]);
198
+ const scrollBy = useCallback((delta) => {
199
+ if (primaryAxis === "horizontal") {
200
+ scrollByX(delta);
201
+ }
202
+ else {
203
+ scrollByY(delta);
162
204
  }
163
- }, [dispatch]);
205
+ }, [primaryAxis, scrollByX, scrollByY]);
206
+ const scrollToStartY = useCallback(() => {
207
+ dispatchY({ type: "set-offset", offset: 0 });
208
+ accumulatorYRef.current = 0;
209
+ accelY.reset();
210
+ }, [dispatchY, accelY]);
211
+ const scrollToStartX = useCallback(() => {
212
+ dispatchX({ type: "set-offset", offset: 0 });
213
+ accumulatorXRef.current = 0;
214
+ accelX.reset();
215
+ }, [dispatchX, accelX]);
164
216
  const scrollToStart = useCallback(() => {
165
- dispatch({ type: "set-offset", offset: 0 });
166
- accumulatorRef.current = 0;
167
- accel.reset();
168
- }, [dispatch, accel]);
169
- const scrollToEnd = useCallback(() => {
170
- const current = stateRef.current;
217
+ if (primaryAxis === "horizontal") {
218
+ scrollToStartX();
219
+ }
220
+ else {
221
+ scrollToStartY();
222
+ }
223
+ }, [primaryAxis, scrollToStartX, scrollToStartY]);
224
+ const scrollToEndY = useCallback(() => {
225
+ const current = stateYRef.current;
171
226
  const maxOffset = Math.max(0, current.contentSize - current.viewportSize);
172
- dispatch({ type: "set-offset", offset: maxOffset });
173
- accumulatorRef.current = 0;
174
- accel.reset();
175
- }, [dispatch, accel]);
227
+ dispatchY({ type: "set-offset", offset: maxOffset });
228
+ accumulatorYRef.current = 0;
229
+ accelY.reset();
230
+ }, [dispatchY, accelY]);
231
+ const scrollToEndX = useCallback(() => {
232
+ const current = stateXRef.current;
233
+ const maxOffset = Math.max(0, current.contentSize - current.viewportSize);
234
+ dispatchX({ type: "set-offset", offset: maxOffset });
235
+ accumulatorXRef.current = 0;
236
+ accelX.reset();
237
+ }, [dispatchX, accelX]);
238
+ const scrollToEnd = useCallback(() => {
239
+ if (primaryAxis === "horizontal") {
240
+ scrollToEndX();
241
+ }
242
+ else {
243
+ scrollToEndY();
244
+ }
245
+ }, [primaryAxis, scrollToEndX, scrollToEndY]);
176
246
  // Handle content size changes (for sticky scroll)
177
247
  const handleContentSize = useCallback((width, height) => {
178
- if (controlledContentSize !== undefined)
248
+ if (enableY && controlledContentHeight === undefined) {
249
+ dispatchY({ type: "set-content", size: height });
250
+ }
251
+ if (enableX && controlledContentWidth === undefined) {
252
+ dispatchX({ type: "set-content", size: width });
253
+ }
254
+ }, [controlledContentHeight, controlledContentWidth, dispatchX, dispatchY, enableX, enableY]);
255
+ useLayoutEffect(() => {
256
+ if (!enableY || controlledContentHeight === undefined)
179
257
  return;
180
- const newSize = axis === "vertical" ? height : width;
181
- dispatch({ type: "set-content", size: newSize });
182
- }, [axis, controlledContentSize]);
258
+ dispatchY({ type: "set-content", size: controlledContentHeight });
259
+ }, [controlledContentHeight, dispatchY, enableY]);
183
260
  useLayoutEffect(() => {
184
- if (controlledContentSize === undefined)
261
+ if (!enableX || controlledContentWidth === undefined)
185
262
  return;
186
- dispatch({ type: "set-content", size: controlledContentSize });
187
- }, [controlledContentSize]);
263
+ dispatchX({ type: "set-content", size: controlledContentWidth });
264
+ }, [controlledContentWidth, dispatchX, enableX]);
188
265
  // Handle viewport size changes (reported by scroll component)
189
266
  const handleViewportSize = useCallback((width, height) => {
190
- const newSize = axis === "vertical" ? height : width;
191
- viewportSizeRef.current = newSize;
192
- dispatch({ type: "set-viewport", size: newSize });
193
- }, [axis, dispatch]);
267
+ if (enableY) {
268
+ viewportYRef.current = height;
269
+ dispatchY({ type: "set-viewport", size: height });
270
+ }
271
+ if (enableX) {
272
+ viewportXRef.current = width;
273
+ dispatchX({ type: "set-viewport", size: width });
274
+ }
275
+ }, [dispatchX, dispatchY, enableX, enableY]);
194
276
  // Keyboard handler
195
277
  const handleKey = useCallback((key) => {
196
278
  // Mouse wheel comes as pageup/pagedown with meta=true
197
279
  // Handle separately from keyboard since enableKeyboard shouldn't disable mouse
198
280
  if (key.meta && enableMouseWheel && (key.name === "pageup" || key.name === "pagedown")) {
199
- const multiplier = accel.tick();
281
+ const multiplier = primaryAxis === "horizontal" && !enableY ? accelX.tick() : accelY.tick();
200
282
  const delta = Math.ceil(arrowSpeed * multiplier);
201
- scrollBy(key.name === "pageup" ? -delta : delta);
283
+ if (axis === "horizontal") {
284
+ scrollByX(key.name === "pageup" ? -delta : delta);
285
+ }
286
+ else {
287
+ scrollByY(key.name === "pageup" ? -delta : delta);
288
+ }
202
289
  return;
203
290
  }
204
291
  if (!enableKeyboard)
205
292
  return;
206
- const isVertical = axis === "vertical";
207
- const upKey = isVertical ? "up" : "left";
208
- const downKey = isVertical ? "down" : "right";
293
+ if (axis === "horizontal") {
294
+ switch (key.name) {
295
+ case "left":
296
+ scrollByX(-arrowSpeed);
297
+ break;
298
+ case "right":
299
+ scrollByX(arrowSpeed);
300
+ break;
301
+ case "pageup":
302
+ scrollByX(-Math.floor(viewportXRef.current * pageSpeed));
303
+ break;
304
+ case "pagedown":
305
+ scrollByX(Math.floor(viewportXRef.current * pageSpeed));
306
+ break;
307
+ case "home":
308
+ scrollToStartX();
309
+ break;
310
+ case "end":
311
+ scrollToEndX();
312
+ break;
313
+ }
314
+ return;
315
+ }
209
316
  switch (key.name) {
210
- case upKey:
211
- scrollBy(-arrowSpeed);
317
+ case "up":
318
+ scrollByY(-arrowSpeed);
319
+ break;
320
+ case "down":
321
+ scrollByY(arrowSpeed);
322
+ break;
323
+ case "left":
324
+ if (axis === "both")
325
+ scrollByX(-arrowSpeed);
212
326
  break;
213
- case downKey:
214
- scrollBy(arrowSpeed);
327
+ case "right":
328
+ if (axis === "both")
329
+ scrollByX(arrowSpeed);
215
330
  break;
216
331
  case "pageup":
217
- scrollBy(-Math.floor(viewportSizeRef.current * pageSpeed));
332
+ scrollByY(-Math.floor(viewportYRef.current * pageSpeed));
218
333
  break;
219
334
  case "pagedown":
220
- scrollBy(Math.floor(viewportSizeRef.current * pageSpeed));
335
+ scrollByY(Math.floor(viewportYRef.current * pageSpeed));
221
336
  break;
222
337
  case "home":
223
- scrollToStart();
338
+ scrollToStartY();
224
339
  break;
225
340
  case "end":
226
- scrollToEnd();
341
+ scrollToEndY();
227
342
  break;
228
343
  }
229
344
  }, [
@@ -232,20 +347,27 @@ export function useScroll(options = {}) {
232
347
  arrowSpeed,
233
348
  pageSpeed,
234
349
  enableMouseWheel,
235
- accel,
236
- scrollBy,
237
- scrollToStart,
238
- scrollToEnd,
350
+ accelX,
351
+ accelY,
352
+ enableY,
353
+ primaryAxis,
354
+ scrollByX,
355
+ scrollByY,
356
+ scrollToEndX,
357
+ scrollToEndY,
358
+ scrollToStartX,
359
+ scrollToStartY,
239
360
  ]);
240
361
  useKeyboard(handleKey);
241
362
  // Scroll to make a position visible (for keeping selection in view)
242
363
  // Uses refs to avoid stale closures, but re-creates when viewport size changes
243
364
  // so selection effects can re-run after measurement updates.
244
365
  // Bypasses clampOffset because it uses totalSize for accurate clamping
245
- const scrollToVisible = useCallback((position, itemSize = 1, padding = 0, totalSize) => {
246
- const current = stateRef.current;
366
+ const scrollToVisible = useCallback((position, itemSize = 1, padding = 0, totalSize, axisOverride = "vertical") => {
367
+ const useHorizontal = axisOverride === "horizontal";
368
+ const current = useHorizontal ? stateXRef.current : stateYRef.current;
247
369
  const currentOffset = current.offset;
248
- const currentViewportSize = viewportSizeRef.current;
370
+ const currentViewportSize = useHorizontal ? viewportXRef.current : viewportYRef.current;
249
371
  const itemStart = position * itemSize;
250
372
  const itemEnd = itemStart + itemSize;
251
373
  // Use provided totalSize if available (more accurate than potentially stale contentSize)
@@ -255,48 +377,85 @@ export function useScroll(options = {}) {
255
377
  // If item is above viewport, scroll up to show it
256
378
  if (isAbove) {
257
379
  const newOffset = Math.max(0, itemStart - padding);
258
- dispatch({ type: "set-offset", offset: newOffset });
380
+ (useHorizontal ? dispatchX : dispatchY)({ type: "set-offset", offset: newOffset });
259
381
  }
260
382
  // If item is below viewport, scroll down to show it
261
383
  else if (isBelow) {
262
384
  const currentMaxOffset = Math.max(0, effectiveContentSize - currentViewportSize);
263
385
  const newOffset = Math.min(currentMaxOffset, itemEnd - currentViewportSize + padding);
264
- dispatch({ type: "set-offset", offset: newOffset });
386
+ (useHorizontal ? dispatchX : dispatchY)({ type: "set-offset", offset: newOffset });
265
387
  }
266
- }, [dispatch]);
388
+ }, [dispatchX, dispatchY]);
389
+ const setOffsetY = useCallback((newOffset) => {
390
+ dispatchY({ type: "set-offset", offset: newOffset });
391
+ }, [dispatchY]);
392
+ const setOffsetX = useCallback((newOffset) => {
393
+ dispatchX({ type: "set-offset", offset: newOffset });
394
+ }, [dispatchX]);
267
395
  const setOffset = useCallback((newOffset) => {
268
- dispatch({ type: "set-offset", offset: newOffset });
269
- }, [dispatch]);
396
+ if (primaryAxis === "horizontal") {
397
+ setOffsetX(newOffset);
398
+ }
399
+ else {
400
+ setOffsetY(newOffset);
401
+ }
402
+ }, [primaryAxis, setOffsetX, setOffsetY]);
270
403
  // Calculate derived state
271
- const maxOffset = Math.max(0, internal.contentSize - internal.viewportSize);
272
- const atStart = internal.offset <= 0;
273
- const atEnd = internal.offset >= maxOffset;
404
+ const maxOffsetY = Math.max(0, internalY.contentSize - internalY.viewportSize);
405
+ const maxOffsetX = Math.max(0, internalX.contentSize - internalX.viewportSize);
406
+ const atStartY = internalY.offset <= 0;
407
+ const atEndY = internalY.offset >= maxOffsetY;
408
+ const atStartX = internalX.offset <= 0;
409
+ const atEndX = internalX.offset >= maxOffsetX;
410
+ const primaryState = primaryAxis === "horizontal" ? internalX : internalY;
411
+ const primaryMaxOffset = primaryAxis === "horizontal" ? maxOffsetX : maxOffsetY;
412
+ const primaryAtStart = primaryAxis === "horizontal" ? atStartX : atStartY;
413
+ const primaryAtEnd = primaryAxis === "horizontal" ? atEndX : atEndY;
274
414
  const state = {
275
- offset: internal.offset,
276
- maxOffset,
277
- viewportSize: internal.viewportSize,
278
- viewportMeasured: internal.viewportMeasured,
279
- contentSize: internal.contentSize,
280
- atStart,
281
- atEnd,
415
+ offset: primaryState.offset,
416
+ maxOffset: primaryMaxOffset,
417
+ viewportSize: primaryState.viewportSize,
418
+ viewportMeasured: primaryState.viewportMeasured,
419
+ contentSize: primaryState.contentSize,
420
+ atStart: primaryAtStart,
421
+ atEnd: primaryAtEnd,
422
+ offsetX: internalX.offset,
423
+ maxOffsetX,
424
+ viewportSizeX: internalX.viewportSize,
425
+ viewportMeasuredX: internalX.viewportMeasured,
426
+ contentSizeX: internalX.contentSize,
427
+ atStartX,
428
+ atEndX,
282
429
  };
283
430
  // Handle effective offset sync from host (when sticky adjusts the offset)
284
431
  const handleEffectiveOffset = useCallback((effectiveOffset) => {
285
- dispatch({ type: "sync-effective-offset", offset: effectiveOffset });
286
- }, [dispatch]);
432
+ dispatchY({ type: "sync-effective-offset", offset: effectiveOffset });
433
+ }, [dispatchY]);
434
+ const handleEffectiveOffsetX = useCallback((effectiveOffsetX) => {
435
+ dispatchX({ type: "sync-effective-offset", offset: effectiveOffsetX });
436
+ }, [dispatchX]);
287
437
  const scrollProps = {
288
- offset: internal.offset,
438
+ offset: enableY ? internalY.offset : 0,
439
+ offsetX: enableX ? internalX.offset : 0,
289
440
  axis,
441
+ align,
442
+ sticky,
443
+ showScrollbar,
290
444
  onContentSize: handleContentSize,
291
445
  onViewportSize: handleViewportSize,
292
- onEffectiveOffset: handleEffectiveOffset,
446
+ onEffectiveOffset: enableY ? handleEffectiveOffset : undefined,
447
+ onEffectiveOffsetX: enableX ? handleEffectiveOffsetX : undefined,
293
448
  };
294
449
  return {
295
450
  state,
296
451
  setOffset,
452
+ setOffsetX,
297
453
  scrollBy,
454
+ scrollByX,
298
455
  scrollToStart,
299
456
  scrollToEnd,
457
+ scrollToStartX,
458
+ scrollToEndX,
300
459
  scrollToVisible,
301
460
  scrollProps,
302
461
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-scroll.js","sourceRoot":"","sources":["../../../src/hooks/use-scroll.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-scroll.js","sourceRoot":"","sources":["../../../src/hooks/use-scroll.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { KeyMsg } from "@effect-tui/core";
2
+ export type ShortcutHandler = (key: KeyMsg) => void;
3
+ export type ShortcutMap = Record<string, ShortcutHandler>;
4
+ export type UseShortcutOptions = {
5
+ /** Which phase to listen for; defaults to "press" and treats missing phase as "press". */
6
+ phase?: "press" | "repeat" | "release" | "any";
7
+ /** Require that unspecified modifiers are not pressed (default: true). */
8
+ exact?: boolean;
9
+ /**
10
+ * If true, call preventDefault when available before invoking handler.
11
+ * This stops further renderer-level handlers.
12
+ */
13
+ stopPropagation?: boolean;
14
+ };
15
+ export declare function useShortcut(shortcuts: ShortcutMap, options?: UseShortcutOptions): void;
16
+ //# sourceMappingURL=use-shortcut.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-shortcut.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-shortcut.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAK9C,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;AAEnD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;AAEzD,MAAM,MAAM,kBAAkB,GAAG;IAChC,0FAA0F;IAC1F,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAA;IAC9C,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAOD,wBAAgB,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,kBAAuB,GAAG,IAAI,CA2B1F"}
@@ -0,0 +1,29 @@
1
+ import { useRef } from "react";
2
+ import { isKey } from "../shortcuts.js";
3
+ import { useKeyboard } from "./use-keyboard.js";
4
+ export function useShortcut(shortcuts, options = {}) {
5
+ const entriesRef = useRef([]);
6
+ const matchOptionsRef = useRef({ exact: options.exact ?? true });
7
+ const stopRef = useRef(options.stopPropagation ?? false);
8
+ entriesRef.current = Object.entries(shortcuts).map(([shortcut, handler]) => ({
9
+ shortcut,
10
+ handler,
11
+ }));
12
+ matchOptionsRef.current = { exact: options.exact ?? true };
13
+ stopRef.current = options.stopPropagation ?? false;
14
+ useKeyboard((key) => {
15
+ const entries = entriesRef.current;
16
+ const matchOptions = matchOptionsRef.current;
17
+ const stop = stopRef.current;
18
+ for (const entry of entries) {
19
+ if (!isKey(key, entry.shortcut, matchOptions))
20
+ continue;
21
+ if (stop && key.preventDefault)
22
+ key.preventDefault();
23
+ entry.handler(key);
24
+ if (stop)
25
+ break;
26
+ }
27
+ }, { phase: options.phase });
28
+ }
29
+ //# sourceMappingURL=use-shortcut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-shortcut.js","sourceRoot":"","sources":["../../../src/hooks/use-shortcut.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,EAA4C,MAAM,iBAAiB,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAuB/C,MAAM,UAAU,WAAW,CAAC,SAAsB,EAAE,UAA8B,EAAE;IACnF,MAAM,UAAU,GAAG,MAAM,CAAgB,EAAE,CAAC,CAAA;IAC5C,MAAM,eAAe,GAAG,MAAM,CAAuB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,CAAA;IACtF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC,CAAA;IAExD,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,QAAQ;QACR,OAAO;KACP,CAAC,CAAC,CAAA;IACH,eAAe,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAA;IAC1D,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,eAAe,IAAI,KAAK,CAAA;IAElD,WAAW,CACV,CAAC,GAAG,EAAE,EAAE;QACP,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;QAClC,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAA;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAA;QAE5B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC;gBAAE,SAAQ;YACvD,IAAI,IAAI,IAAI,GAAG,CAAC,cAAc;gBAAE,GAAG,CAAC,cAAc,EAAE,CAAA;YACpD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAClB,IAAI,IAAI;gBAAE,MAAK;QAChB,CAAC;IACF,CAAC,EACD,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CACxB,CAAA;AACF,CAAC"}
@@ -34,6 +34,12 @@ export declare abstract class BaseHost implements HostInstance {
34
34
  protected ctx: HostContext;
35
35
  private _springSubscriptions?;
36
36
  constructor(type: string, _props: CommonProps, ctx: HostContext);
37
+ /**
38
+ * Optional pre-frame hook. BaseHost will call prepareSelf() and then recurse into children.
39
+ */
40
+ prepareFrame(): void;
41
+ /** Override in subclasses to precompute caches once per frame. */
42
+ protected prepareSelf(): void;
37
43
  /**
38
44
  * Resolve a prop that may be a MotionValue/ColorMotionValue.
39
45
  * If it's a spring, subscribes to changes and returns current value.
@@ -54,6 +60,11 @@ export declare abstract class BaseHost implements HostInstance {
54
60
  abstract measure(maxW: number, maxH: number): Size;
55
61
  abstract render(buffer: CellBuffer, palette: Palette): void;
56
62
  layout(rect: Rect): void;
63
+ /**
64
+ * Apply frame constraints and update this.rect.
65
+ * Returns the constrained rect for convenience in subclasses.
66
+ */
67
+ protected layoutWithConstraints(rect: Rect): Rect;
57
68
  /**
58
69
  * Apply frame constraints to a proposed size before passing to children.
59
70
  *
@@ -102,6 +113,11 @@ export declare abstract class BaseHost implements HostInstance {
102
113
  */
103
114
  protected constrainResult(size: Size): Size;
104
115
  updateProps(props: Record<string, unknown>): void;
116
+ /**
117
+ * Apply a default greedy value when the prop is omitted.
118
+ * Subclasses with greedy defaults should call this after super.updateProps().
119
+ */
120
+ protected applyGreedyDefault(props: Record<string, unknown>, fallback: number): void;
105
121
  destroy(): void;
106
122
  appendChild(child: HostInstance): void;
107
123
  removeChild(child: HostInstance): void;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/hosts/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/hosts/base.ts"],"names":[],"mappings":"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"}
@@ -90,6 +90,19 @@ export class BaseHost {
90
90
  // because JavaScript field initializers run AFTER parent constructor,
91
91
  // which would overwrite any values set here.
92
92
  }
93
+ /**
94
+ * Optional pre-frame hook. BaseHost will call prepareSelf() and then recurse into children.
95
+ */
96
+ prepareFrame() {
97
+ this.prepareSelf();
98
+ for (const child of this.children) {
99
+ child.prepareFrame?.();
100
+ }
101
+ }
102
+ /** Override in subclasses to precompute caches once per frame. */
103
+ prepareSelf() {
104
+ // Default no-op
105
+ }
93
106
  /**
94
107
  * Resolve a prop that may be a MotionValue/ColorMotionValue.
95
108
  * If it's a spring, subscribes to changes and returns current value.
@@ -156,6 +169,13 @@ export class BaseHost {
156
169
  this._springSubscriptions.clear();
157
170
  }
158
171
  layout(rect) {
172
+ this.layoutWithConstraints(rect);
173
+ }
174
+ /**
175
+ * Apply frame constraints and update this.rect.
176
+ * Returns the constrained rect for convenience in subclasses.
177
+ */
178
+ layoutWithConstraints(rect) {
159
179
  // Apply frame constraints to the assigned rect
160
180
  let { w, h } = rect;
161
181
  // Fixed width/height override
@@ -179,6 +199,7 @@ export class BaseHost {
179
199
  this._lastLayoutH = h;
180
200
  this.onLayout({ width: w, height: h, x: rect.x, y: rect.y });
181
201
  }
202
+ return this.rect;
182
203
  }
183
204
  /**
184
205
  * Apply frame constraints to a proposed size before passing to children.
@@ -290,6 +311,15 @@ export class BaseHost {
290
311
  // onLayout callback
291
312
  this.onLayout = typeof props.onLayout === "function" ? props.onLayout : undefined;
292
313
  }
314
+ /**
315
+ * Apply a default greedy value when the prop is omitted.
316
+ * Subclasses with greedy defaults should call this after super.updateProps().
317
+ */
318
+ applyGreedyDefault(props, fallback) {
319
+ if (!("greedy" in props)) {
320
+ this.greedy = fallback;
321
+ }
322
+ }
293
323
  destroy() {
294
324
  this.clearSpringSubscriptions();
295
325
  // Override in subclasses if cleanup needed