@effect-tui/react 0.12.3 → 0.13.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 (69) hide show
  1. package/README.md +21 -1
  2. package/dist/src/dev.d.ts +22 -32
  3. package/dist/src/dev.d.ts.map +1 -1
  4. package/dist/src/dev.js +42 -96
  5. package/dist/src/dev.js.map +1 -1
  6. package/dist/src/hooks/index.d.ts +3 -0
  7. package/dist/src/hooks/index.d.ts.map +1 -1
  8. package/dist/src/hooks/index.js +1 -0
  9. package/dist/src/hooks/index.js.map +1 -1
  10. package/dist/src/hooks/use-mouse.d.ts +10 -1
  11. package/dist/src/hooks/use-mouse.d.ts.map +1 -1
  12. package/dist/src/hooks/use-mouse.js +10 -2
  13. package/dist/src/hooks/use-mouse.js.map +1 -1
  14. package/dist/src/hooks/use-paste.d.ts +13 -3
  15. package/dist/src/hooks/use-paste.d.ts.map +1 -1
  16. package/dist/src/hooks/use-paste.js +15 -5
  17. package/dist/src/hooks/use-paste.js.map +1 -1
  18. package/dist/src/hooks/use-scroll.d.ts +59 -24
  19. package/dist/src/hooks/use-scroll.d.ts.map +1 -1
  20. package/dist/src/hooks/use-scroll.js +238 -79
  21. package/dist/src/hooks/use-scroll.js.map +1 -1
  22. package/dist/src/hooks/use-shortcut.d.ts +16 -0
  23. package/dist/src/hooks/use-shortcut.d.ts.map +1 -0
  24. package/dist/src/hooks/use-shortcut.js +29 -0
  25. package/dist/src/hooks/use-shortcut.js.map +1 -0
  26. package/dist/src/hosts/scroll.d.ts +4 -0
  27. package/dist/src/hosts/scroll.d.ts.map +1 -1
  28. package/dist/src/hosts/scroll.js +18 -2
  29. package/dist/src/hosts/scroll.js.map +1 -1
  30. package/dist/src/index.d.ts +6 -4
  31. package/dist/src/index.d.ts.map +1 -1
  32. package/dist/src/index.js +3 -2
  33. package/dist/src/index.js.map +1 -1
  34. package/dist/src/renderer/input/InputProcessor.d.ts.map +1 -1
  35. package/dist/src/renderer/input/InputProcessor.js +8 -1
  36. package/dist/src/renderer/input/InputProcessor.js.map +1 -1
  37. package/dist/src/renderer/lifecycle/EventBus.d.ts +2 -2
  38. package/dist/src/renderer/lifecycle/EventBus.d.ts.map +1 -1
  39. package/dist/src/renderer/lifecycle/EventBus.js +13 -1
  40. package/dist/src/renderer/lifecycle/EventBus.js.map +1 -1
  41. package/dist/src/renderer-types.d.ts +8 -1
  42. package/dist/src/renderer-types.d.ts.map +1 -1
  43. package/dist/src/renderer.d.ts +13 -2
  44. package/dist/src/renderer.d.ts.map +1 -1
  45. package/dist/src/renderer.js +48 -7
  46. package/dist/src/renderer.js.map +1 -1
  47. package/dist/src/shortcuts.d.ts +15 -0
  48. package/dist/src/shortcuts.d.ts.map +1 -0
  49. package/dist/src/shortcuts.js +149 -0
  50. package/dist/src/shortcuts.js.map +1 -0
  51. package/dist/src/test/mock-streams.d.ts.map +1 -1
  52. package/dist/src/test/mock-streams.js +0 -3
  53. package/dist/src/test/mock-streams.js.map +1 -1
  54. package/dist/tsconfig.tsbuildinfo +1 -1
  55. package/package.json +2 -2
  56. package/src/dev.tsx +59 -107
  57. package/src/hooks/index.ts +3 -0
  58. package/src/hooks/use-mouse.ts +19 -3
  59. package/src/hooks/use-paste.ts +24 -5
  60. package/src/hooks/use-scroll.ts +345 -105
  61. package/src/hooks/use-shortcut.ts +54 -0
  62. package/src/hosts/scroll.ts +21 -2
  63. package/src/index.ts +19 -6
  64. package/src/renderer/input/InputProcessor.ts +8 -1
  65. package/src/renderer/lifecycle/EventBus.ts +14 -4
  66. package/src/renderer-types.ts +9 -1
  67. package/src/renderer.ts +96 -9
  68. package/src/shortcuts.ts +180 -0
  69. package/src/test/mock-streams.ts +0 -3
@@ -1,30 +1,63 @@
1
+ import type { ScrollProps } from "../hosts/scroll.js";
1
2
  export interface ScrollState {
2
- /** Current scroll offset (pixels from start) */
3
+ /** Current scroll offset (pixels from start) for the primary axis */
3
4
  offset: number;
4
- /** Maximum scroll offset */
5
+ /** Maximum scroll offset for the primary axis */
5
6
  maxOffset: number;
6
- /** Viewport height (or width for horizontal) */
7
+ /** Viewport size for the primary axis */
7
8
  viewportSize: number;
8
- /** Whether viewport size has been measured by the host */
9
+ /** Whether viewport size has been measured by the host (primary axis) */
9
10
  viewportMeasured: boolean;
10
- /** Total content size */
11
+ /** Total content size for the primary axis */
11
12
  contentSize: number;
12
- /** Whether we're at the start edge */
13
+ /** Whether we're at the start edge (primary axis) */
13
14
  atStart: boolean;
14
- /** Whether we're at the end edge */
15
+ /** Whether we're at the end edge (primary axis) */
15
16
  atEnd: boolean;
17
+ /** Current horizontal offset (pixels from start) */
18
+ offsetX: number;
19
+ /** Maximum horizontal offset */
20
+ maxOffsetX: number;
21
+ /** Horizontal viewport size */
22
+ viewportSizeX: number;
23
+ /** Whether horizontal viewport size has been measured */
24
+ viewportMeasuredX: boolean;
25
+ /** Total horizontal content size */
26
+ contentSizeX: number;
27
+ /** Whether we're at the horizontal start edge */
28
+ atStartX: boolean;
29
+ /** Whether we're at the horizontal end edge */
30
+ atEndX: boolean;
16
31
  }
17
32
  export interface UseScrollOptions {
18
- /** Scroll axis: "vertical" (default) or "horizontal" */
19
- axis?: "vertical" | "horizontal";
20
- /** Controlled content size (skips host measurement when provided) */
33
+ /** Scroll axis: "vertical" (default), "horizontal", or "both" */
34
+ axis?: "vertical" | "horizontal" | "both";
35
+ /** Controlled content size for the primary axis (skips host measurement when provided) */
21
36
  contentSize?: number;
37
+ /** Controlled content width (skips host measurement when provided) */
38
+ contentWidth?: number;
39
+ /** Controlled content height (skips host measurement when provided) */
40
+ contentHeight?: number;
22
41
  /** @internal Initial viewport size override (useful for tests) */
23
42
  initialViewportSize?: number;
43
+ /** @internal Initial viewport width override (useful for tests) */
44
+ initialViewportWidth?: number;
45
+ /** @internal Initial viewport height override (useful for tests) */
46
+ initialViewportHeight?: number;
24
47
  /** @internal Initial content size override (useful for tests) */
25
48
  initialContentSize?: number;
26
- /** Initial scroll offset */
49
+ /** @internal Initial content width override (useful for tests) */
50
+ initialContentWidth?: number;
51
+ /** @internal Initial content height override (useful for tests) */
52
+ initialContentHeight?: number;
53
+ /** Initial scroll offset for the primary axis */
27
54
  initialOffset?: number;
55
+ /** Initial horizontal scroll offset */
56
+ initialOffsetX?: number;
57
+ /** Alignment when content is smaller than viewport */
58
+ align?: "start" | "end";
59
+ /** Whether to show scrollbars */
60
+ showScrollbar?: boolean;
28
61
  /** Enable keyboard navigation (default: true) */
29
62
  enableKeyboard?: boolean;
30
63
  /** Enable mouse wheel (default: true) */
@@ -41,14 +74,22 @@ export interface UseScrollOptions {
41
74
  export interface UseScrollReturn {
42
75
  /** Current scroll state */
43
76
  state: ScrollState;
44
- /** Set scroll offset directly */
77
+ /** Set scroll offset directly (primary axis) */
45
78
  setOffset: (offset: number) => void;
46
- /** Scroll by delta pixels */
79
+ /** Set horizontal scroll offset directly */
80
+ setOffsetX: (offsetX: number) => void;
81
+ /** Scroll by delta pixels (primary axis) */
47
82
  scrollBy: (delta: number) => void;
48
- /** Scroll to start */
83
+ /** Scroll by delta pixels horizontally */
84
+ scrollByX: (delta: number) => void;
85
+ /** Scroll to start (primary axis) */
49
86
  scrollToStart: () => void;
50
- /** Scroll to end */
87
+ /** Scroll to end (primary axis) */
51
88
  scrollToEnd: () => void;
89
+ /** Scroll to horizontal start */
90
+ scrollToStartX: () => void;
91
+ /** Scroll to horizontal end */
92
+ scrollToEndX: () => void;
52
93
  /**
53
94
  * Scroll to make a position visible in the viewport.
54
95
  * Useful for keeping a selected item in view.
@@ -56,17 +97,11 @@ export interface UseScrollReturn {
56
97
  * @param itemSize - Size of each item (default: 1 for row-based lists)
57
98
  * @param padding - Extra padding around the item (default: 0)
58
99
  * @param totalSize - Optional known total content size (avoids stale state issues)
100
+ * @param axis - Axis to scroll (defaults to vertical)
59
101
  */
60
- scrollToVisible: (position: number, itemSize?: number, padding?: number, totalSize?: number) => void;
102
+ scrollToVisible: (position: number, itemSize?: number, padding?: number, totalSize?: number, axis?: "vertical" | "horizontal") => void;
61
103
  /** Props to spread on <scroll> element */
62
- scrollProps: {
63
- offset: number;
64
- axis: "vertical" | "horizontal";
65
- onContentSize: (width: number, height: number) => void;
66
- onViewportSize: (width: number, height: number) => void;
67
- onEffectiveOffset?: (offset: number) => void;
68
- onRect?: (x: number, y: number, w: number, h: number) => void;
69
- };
104
+ scrollProps: ScrollProps;
70
105
  }
71
106
  /**
72
107
  * Hook for managing scroll state with keyboard/mouse input.
@@ -1 +1 @@
1
- {"version":3,"file":"use-scroll.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-scroll.ts"],"names":[],"mappings":"AAsFA,MAAM,WAAW,WAAW;IAC3B,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAA;IACd,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAA;IACpB,0DAA0D;IAC1D,gBAAgB,EAAE,OAAO,CAAA;IACzB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,oCAAoC;IACpC,KAAK,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,gBAAgB;IAChC,wDAAwD;IACxD,IAAI,CAAC,EAAE,UAAU,GAAG,YAAY,CAAA;IAChC,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iDAAiD;IACjD,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC/B,2BAA2B;IAC3B,KAAK,EAAE,WAAW,CAAA;IAClB,iCAAiC;IACjC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,6BAA6B;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,sBAAsB;IACtB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,oBAAoB;IACpB,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB;;;;;;;OAOG;IACH,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACpG,0CAA0C;IAC1C,WAAW,EAAE;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,UAAU,GAAG,YAAY,CAAA;QAC/B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;QACtD,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;QACvD,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;QAC5C,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAC7D,CAAA;CACD;AAsED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,eAAe,CAkOzE"}
1
+ {"version":3,"file":"use-scroll.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-scroll.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAmFrD,MAAM,WAAW,WAAW;IAC3B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAA;IACjB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAA;IACpB,yEAAyE;IACzE,gBAAgB,EAAE,OAAO,CAAA;IACzB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAA;IAChB,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAA;IACd,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAA;IACf,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,yDAAyD;IACzD,iBAAiB,EAAE,OAAO,CAAA;IAC1B,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,iDAAiD;IACjD,QAAQ,EAAE,OAAO,CAAA;IACjB,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAChC,iEAAiE;IACjE,IAAI,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAA;IACzC,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,sDAAsD;IACtD,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACvB,iCAAiC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iDAAiD;IACjD,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC/B,2BAA2B;IAC3B,KAAK,EAAE,WAAW,CAAA;IAClB,gDAAgD;IAChD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,4CAA4C;IAC5C,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,4CAA4C;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,0CAA0C;IAC1C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,qCAAqC;IACrC,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,mCAAmC;IACnC,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,iCAAiC;IACjC,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,+BAA+B;IAC/B,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB;;;;;;;;OAQG;IACH,eAAe,EAAE,CAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,UAAU,GAAG,YAAY,KAC5B,IAAI,CAAA;IACT,0CAA0C;IAC1C,WAAW,EAAE,WAAW,CAAA;CACxB;AAsED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,eAAe,CAyazE"}
@@ -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"}