@effect-tui/react 0.6.3 → 0.8.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.
- package/dist/jsx-runtime.d.ts +4 -1
- package/dist/jsx-runtime.d.ts.map +1 -1
- package/dist/src/components/ListView.d.ts +3 -1
- package/dist/src/components/ListView.d.ts.map +1 -1
- package/dist/src/components/ListView.js +38 -11
- package/dist/src/components/ListView.js.map +1 -1
- package/dist/src/console/ConsoleCapture.d.ts +19 -0
- package/dist/src/console/ConsoleCapture.d.ts.map +1 -1
- package/dist/src/console/ConsoleCapture.js +132 -9
- package/dist/src/console/ConsoleCapture.js.map +1 -1
- package/dist/src/hooks/use-scroll.d.ts +5 -3
- package/dist/src/hooks/use-scroll.d.ts.map +1 -1
- package/dist/src/hooks/use-scroll.js +4 -2
- package/dist/src/hooks/use-scroll.js.map +1 -1
- package/dist/src/hosts/index.d.ts +1 -1
- package/dist/src/hosts/index.d.ts.map +1 -1
- package/dist/src/hosts/index.js +3 -2
- package/dist/src/hosts/index.js.map +1 -1
- package/dist/src/hosts/scroll.d.ts +5 -0
- package/dist/src/hosts/scroll.d.ts.map +1 -1
- package/dist/src/hosts/scroll.js +10 -0
- package/dist/src/hosts/scroll.js.map +1 -1
- package/dist/src/hosts/text.d.ts +48 -1
- package/dist/src/hosts/text.d.ts.map +1 -1
- package/dist/src/hosts/text.js +200 -5
- package/dist/src/hosts/text.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/remote/Procedures.d.ts +11 -0
- package/dist/src/remote/Procedures.d.ts.map +1 -1
- package/dist/src/remote/Procedures.js +17 -1
- package/dist/src/remote/Procedures.js.map +1 -1
- package/dist/src/remote/Router.d.ts +12 -1
- package/dist/src/remote/Router.d.ts.map +1 -1
- package/dist/src/remote/Router.js +1 -0
- package/dist/src/remote/Router.js.map +1 -1
- package/dist/src/remote/index.d.ts.map +1 -1
- package/dist/src/remote/index.js +14 -0
- package/dist/src/remote/index.js.map +1 -1
- package/dist/src/renderer.d.ts.map +1 -1
- package/dist/src/renderer.js +9 -1
- package/dist/src/renderer.js.map +1 -1
- package/dist/src/test/render-tui.js +2 -2
- package/dist/src/test/render-tui.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/jsx-runtime.ts +2 -1
- package/package.json +2 -2
- package/src/components/ListView.tsx +50 -13
- package/src/console/ConsoleCapture.ts +151 -9
- package/src/hooks/use-scroll.ts +9 -5
- package/src/hosts/index.ts +13 -2
- package/src/hosts/scroll.ts +13 -0
- package/src/hosts/text.ts +242 -5
- package/src/index.ts +1 -1
- package/src/remote/Procedures.ts +19 -1
- package/src/remote/Router.ts +14 -1
- package/src/remote/index.ts +15 -1
- package/src/renderer.ts +9 -1
- package/src/test/render-tui.ts +2 -2
package/dist/jsx-runtime.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { OverlayProps } from "./src/hosts/overlay.js";
|
|
|
8
8
|
import type { OverlayItemProps } from "./src/hosts/overlay-item.js";
|
|
9
9
|
import type { ScrollProps } from "./src/hosts/scroll.js";
|
|
10
10
|
import type { SpacerProps } from "./src/hosts/spacer.js";
|
|
11
|
-
import type { StyledTextProps, TextProps } from "./src/hosts/text.js";
|
|
11
|
+
import type { SpanProps, StyledTextProps, TextProps } from "./src/hosts/text.js";
|
|
12
12
|
import type { VStackProps } from "./src/hosts/vstack.js";
|
|
13
13
|
import type { ZStackProps } from "./src/hosts/zstack.js";
|
|
14
14
|
declare const JSX: {};
|
|
@@ -30,6 +30,9 @@ export declare namespace JSX {
|
|
|
30
30
|
text: TextProps & {
|
|
31
31
|
children?: React.ReactNode;
|
|
32
32
|
};
|
|
33
|
+
span: SpanProps & {
|
|
34
|
+
children?: React.ReactNode;
|
|
35
|
+
};
|
|
33
36
|
styledtext: StyledTextProps;
|
|
34
37
|
spacer: SpacerProps;
|
|
35
38
|
vstack: VStackProps & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../jsx-runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAGvD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../jsx-runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAGvD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGxD,QAAA,MAAM,GAAG,IAAK,CAAA;AACd,OAAO,EAAE,GAAG,EAAE,CAAA;AAEd,MAAM,CAAC,OAAO,WAAW,GAAG,CAAC;IAC5B,KAAY,OAAO,GAAG,KAAK,CAAC,SAAS,CAAA;IAErC,UAAiB,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,SAAS,CAAA;KACzB;IAED,UAAiB,yBAAyB;QACzC,KAAK,EAAE,EAAE,CAAA;KACT;IAED,UAAiB,wBAAwB;QACxC,QAAQ,EAAE,EAAE,CAAA;KACZ;IAED,UAAiB,mBAAoB,SAAQ,KAAK,CAAC,UAAU;KAAG;IAGhE,UAAiB,iBAAkB,SAAQ,KAAK,CAAC,GAAG,CAAC,iBAAiB;QAErE,IAAI,EAAE,SAAS,GAAG;YAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;SAAE,CAAA;QAChD,IAAI,EAAE,SAAS,GAAG;YAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;SAAE,CAAA;QAChD,UAAU,EAAE,eAAe,CAAA;QAC3B,MAAM,EAAE,WAAW,CAAA;QACnB,MAAM,EAAE,WAAW,GAAG;YAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;YAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,CAAA;QACxE,MAAM,EAAE,WAAW,GAAG;YAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;SAAE,CAAA;QACpD,MAAM,EAAE,WAAW,GAAG;YAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;SAAE,CAAA;QACpD,GAAG,EAAE,QAAQ,GAAG;YAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;SAAE,CAAA;QAC9C,MAAM,EAAE,WAAW,CAAA;QACnB,SAAS,EAAE,cAAc,CAAA;QACzB,MAAM,EAAE,WAAW,GAAG;YAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;SAAE,CAAA;QACpD,OAAO,EAAE,YAAY,GAAG;YAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;SAAE,CAAA;QACtD,WAAW,EAAE,gBAAgB,GAAG;YAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;SAAE,CAAA;KAC9D;CACD"}
|
|
@@ -18,6 +18,8 @@ export interface ListViewProps<T> {
|
|
|
18
18
|
emptyContent?: ReactNode;
|
|
19
19
|
/** Number of extra items to render above/below viewport for smooth scrolling (default: 3) */
|
|
20
20
|
overscan?: number;
|
|
21
|
+
/** Called when an item is clicked. Receives the item index. */
|
|
22
|
+
onItemClick?: (index: number) => void;
|
|
21
23
|
/** @internal */
|
|
22
24
|
__debugViewportMeasured?: boolean;
|
|
23
25
|
/** @internal */
|
|
@@ -63,5 +65,5 @@ export interface ListViewProps<T> {
|
|
|
63
65
|
* )
|
|
64
66
|
* ```
|
|
65
67
|
*/
|
|
66
|
-
export declare function ListView<T>({ items, selectedIndex, renderItem, keyExtractor, itemHeight, scrollPadding, showScrollbar, emptyContent, overscan, __debugViewportMeasured, __debugViewportSize, __debugContentSize, }: ListViewProps<T>): ReactNode;
|
|
68
|
+
export declare function ListView<T>({ items, selectedIndex, renderItem, keyExtractor, itemHeight, scrollPadding, showScrollbar, emptyContent, overscan, onItemClick, __debugViewportMeasured, __debugViewportSize, __debugContentSize, }: ListViewProps<T>): ReactNode;
|
|
67
69
|
//# sourceMappingURL=ListView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../../src/components/ListView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../../src/components/ListView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtC,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,sBAAsB;IACtB,KAAK,EAAE,SAAS,CAAC,EAAE,CAAA;IACnB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,oCAAoC;IACpC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAA;IACtE,uCAAuC;IACvC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAA;IACzD,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,gBAAgB;IAChB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,gBAAgB;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAC3B,KAAK,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAc,EACd,aAAiB,EACjB,aAAoB,EACpB,YAAY,EACZ,QAAY,EACZ,WAAW,EACX,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GAClB,EAAE,aAAa,CAAC,CAAC,CAAC,aAwGlB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "@effect-tui/react/jsx-runtime";
|
|
2
|
-
import { useEffect, useRef } from "react";
|
|
2
|
+
import { useEffect, useLayoutEffect, useRef } from "react";
|
|
3
|
+
import { useMouse } from "../hooks/use-mouse.js";
|
|
3
4
|
import { useScroll } from "../hooks/use-scroll.js";
|
|
4
5
|
/**
|
|
5
6
|
* A virtualized scrolling list view with selection and scroll-into-view behavior.
|
|
@@ -39,7 +40,7 @@ import { useScroll } from "../hooks/use-scroll.js";
|
|
|
39
40
|
* )
|
|
40
41
|
* ```
|
|
41
42
|
*/
|
|
42
|
-
export function ListView({ items, selectedIndex, renderItem, keyExtractor, itemHeight = 1, scrollPadding = 0, showScrollbar = true, emptyContent, overscan = 3, __debugViewportMeasured, __debugViewportSize, __debugContentSize, }) {
|
|
43
|
+
export function ListView({ items, selectedIndex, renderItem, keyExtractor, itemHeight = 1, scrollPadding = 0, showScrollbar = true, emptyContent, overscan = 3, onItemClick, __debugViewportMeasured, __debugViewportSize, __debugContentSize, }) {
|
|
43
44
|
const totalHeight = items.length * itemHeight;
|
|
44
45
|
const { state, scrollProps, scrollToVisible } = useScroll({
|
|
45
46
|
enableKeyboard: false, // Parent handles keyboard for selection
|
|
@@ -49,19 +50,40 @@ export function ListView({ items, selectedIndex, renderItem, keyExtractor, itemH
|
|
|
49
50
|
});
|
|
50
51
|
const viewportMeasured = __debugViewportMeasured ?? state.viewportMeasured;
|
|
51
52
|
const viewportSize = __debugViewportSize ?? state.viewportSize;
|
|
53
|
+
// Track scroll container rect for hit testing
|
|
54
|
+
const rectRef = useRef(null);
|
|
55
|
+
// Handle mouse clicks on items
|
|
56
|
+
useMouse((mouse) => {
|
|
57
|
+
if (!onItemClick || !rectRef.current)
|
|
58
|
+
return;
|
|
59
|
+
const { x, y, w, h } = rectRef.current;
|
|
60
|
+
// Check if click is inside the scroll container
|
|
61
|
+
if (mouse.x < x || mouse.x >= x + w || mouse.y < y || mouse.y >= y + h)
|
|
62
|
+
return;
|
|
63
|
+
// Calculate which item was clicked
|
|
64
|
+
const localY = mouse.y - y;
|
|
65
|
+
const contentY = localY + state.offset;
|
|
66
|
+
const clickedIndex = Math.floor(contentY / itemHeight);
|
|
67
|
+
// Validate index is in range
|
|
68
|
+
if (clickedIndex >= 0 && clickedIndex < items.length) {
|
|
69
|
+
onItemClick(clickedIndex);
|
|
70
|
+
}
|
|
71
|
+
}, { action: "press", button: "left" });
|
|
52
72
|
// Track previous selection to detect changes
|
|
53
73
|
const prevSelectedRef = useRef(selectedIndex);
|
|
54
74
|
// Scroll to keep selection visible when it changes
|
|
55
|
-
|
|
75
|
+
// useLayoutEffect runs before paint - prevents visible "jump" when navigating
|
|
76
|
+
useLayoutEffect(() => {
|
|
56
77
|
if (selectedIndex !== prevSelectedRef.current) {
|
|
57
78
|
prevSelectedRef.current = selectedIndex;
|
|
58
|
-
|
|
79
|
+
// Pass totalHeight to avoid stale contentSize issues when jumping to end
|
|
80
|
+
scrollToVisible(selectedIndex, itemHeight, scrollPadding, totalHeight);
|
|
59
81
|
}
|
|
60
|
-
}, [selectedIndex, itemHeight, scrollPadding, scrollToVisible]);
|
|
82
|
+
}, [selectedIndex, itemHeight, scrollPadding, scrollToVisible, totalHeight]);
|
|
61
83
|
// Also scroll on initial render if selection is not 0
|
|
62
84
|
useEffect(() => {
|
|
63
85
|
if (selectedIndex > 0) {
|
|
64
|
-
scrollToVisible(selectedIndex, itemHeight, scrollPadding);
|
|
86
|
+
scrollToVisible(selectedIndex, itemHeight, scrollPadding, totalHeight);
|
|
65
87
|
}
|
|
66
88
|
// Only run on mount
|
|
67
89
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -70,20 +92,25 @@ export function ListView({ items, selectedIndex, renderItem, keyExtractor, itemH
|
|
|
70
92
|
return _jsx(_Fragment, { children: emptyContent });
|
|
71
93
|
}
|
|
72
94
|
// Calculate visible range for virtualization
|
|
95
|
+
// Before viewport is measured, render a reasonable default (not all items!)
|
|
73
96
|
const startIndex = viewportMeasured
|
|
74
97
|
? Math.max(0, Math.floor(state.offset / itemHeight) - overscan)
|
|
75
98
|
: 0;
|
|
76
99
|
const endIndex = viewportMeasured
|
|
77
100
|
? Math.min(items.length, Math.ceil((state.offset + viewportSize) / itemHeight) + overscan)
|
|
78
|
-
: items.length;
|
|
101
|
+
: Math.min(items.length, 50);
|
|
79
102
|
// Calculate spacer heights for virtual scrolling
|
|
80
|
-
const topSpacerHeight =
|
|
81
|
-
const bottomSpacerHeight =
|
|
103
|
+
const topSpacerHeight = startIndex * itemHeight;
|
|
104
|
+
const bottomSpacerHeight = Math.max(0, totalHeight - endIndex * itemHeight);
|
|
82
105
|
// Get visible slice of items
|
|
83
106
|
const visibleItems = items.slice(startIndex, endIndex);
|
|
84
|
-
|
|
107
|
+
// Handler to track scroll container rect for click detection
|
|
108
|
+
const handleRect = (x, y, w, h) => {
|
|
109
|
+
rectRef.current = { x, y, w, h };
|
|
110
|
+
};
|
|
111
|
+
return (_jsx("scroll", { ...scrollProps, showScrollbar: showScrollbar, onRect: handleRect, children: _jsxs("vstack", { children: [_jsx("box", { height: topSpacerHeight }, "top-spacer"), visibleItems.map((item, i) => {
|
|
85
112
|
const actualIndex = startIndex + i;
|
|
86
113
|
return (_jsx("vstack", { children: renderItem(item, actualIndex, actualIndex === selectedIndex) }, keyExtractor(item, actualIndex)));
|
|
87
|
-
}),
|
|
114
|
+
}), _jsx("box", { height: bottomSpacerHeight }, "bottom-spacer")] }) }));
|
|
88
115
|
}
|
|
89
116
|
//# sourceMappingURL=ListView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListView.js","sourceRoot":"","sources":["../../../src/components/ListView.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ListView.js","sourceRoot":"","sources":["../../../src/components/ListView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,16 +21,35 @@ export declare class ConsoleCapture extends EventEmitter {
|
|
|
21
21
|
private originalConsole;
|
|
22
22
|
private active;
|
|
23
23
|
private maxEntries;
|
|
24
|
+
private inConsoleMethod;
|
|
25
|
+
private inRendererWrite;
|
|
24
26
|
constructor(options?: {
|
|
25
27
|
maxEntries?: number;
|
|
26
28
|
});
|
|
29
|
+
/**
|
|
30
|
+
* Write directly to stdout, bypassing capture.
|
|
31
|
+
* Used by the TUI renderer to output to terminal.
|
|
32
|
+
*/
|
|
33
|
+
writeToTerminal(data: string | Uint8Array): boolean;
|
|
27
34
|
get isActive(): boolean;
|
|
28
35
|
getEntries(): LogEntry[];
|
|
29
36
|
clear(): void;
|
|
30
37
|
activate(): void;
|
|
31
38
|
deactivate(): void;
|
|
32
39
|
private appendToConsole;
|
|
40
|
+
private captureRawOutput;
|
|
41
|
+
private detectLogLevel;
|
|
33
42
|
writeToOriginal(level: LogLevel, ...args: unknown[]): void;
|
|
34
43
|
}
|
|
35
44
|
export declare function getConsoleCapture(): ConsoleCapture;
|
|
45
|
+
/**
|
|
46
|
+
* Write directly to the terminal, bypassing console capture.
|
|
47
|
+
* Used by the TUI renderer to output to terminal without being captured.
|
|
48
|
+
*/
|
|
49
|
+
export declare function writeToTerminal(data: string | Uint8Array): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Create a wrapped stdout that bypasses console capture.
|
|
52
|
+
* Returns a write function compatible with TuiWriteStream.
|
|
53
|
+
*/
|
|
54
|
+
export declare function createTerminalWriter(): typeof process.stdout.write;
|
|
36
55
|
//# sourceMappingURL=ConsoleCapture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleCapture.d.ts","sourceRoot":"","sources":["../../../src/console/ConsoleCapture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConsoleCapture.d.ts","sourceRoot":"","sources":["../../../src/console/ConsoleCapture.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAQ1C,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAElE,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,QAAQ;IACxB,SAAS,EAAE,IAAI,CAAA;IACf,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,QAAQ,CAAC,EAAE,cAAc,CAAA;CACzB;AA4ED,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IAChC,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;CAChC;AAOD,qBAAa,cAAe,SAAQ,YAAY;IAC/C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAAQ;IAE1B,OAAO,CAAC,eAAe,CAAQ;IAE/B,OAAO,CAAC,eAAe,CAAQ;gBAEnB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAK7C;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO;IASnD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,UAAU,IAAI,QAAQ,EAAE;IAIxB,KAAK,IAAI,IAAI;IAIb,QAAQ,IAAI,IAAI;IAyGhB,UAAU,IAAI,IAAI;IAYlB,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,cAAc;IAgBtB,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAoB1D;AAQD,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAElE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAQlE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Console capture singleton for TUI debugging
|
|
2
|
-
// Intercepts console.log/info/warn/error/debug
|
|
2
|
+
// Intercepts console.log/info/warn/error/debug AND process.stdout/stderr.write
|
|
3
|
+
// to capture ALL output including Effect.log, third-party libraries, etc.
|
|
3
4
|
import { Console } from "node:console";
|
|
4
5
|
import { EventEmitter } from "node:events";
|
|
5
6
|
import { Writable } from "node:stream";
|
|
@@ -64,15 +65,36 @@ class CapturedWritableStream extends Writable {
|
|
|
64
65
|
return process.stdout.getColorDepth?.() || 8;
|
|
65
66
|
}
|
|
66
67
|
}
|
|
68
|
+
// Store the ORIGINAL stdout/stderr write functions at module load time
|
|
69
|
+
// This ensures the renderer can always write to the terminal even when capture is active
|
|
70
|
+
const originalStdoutWrite = process.stdout.write.bind(process.stdout);
|
|
71
|
+
const originalStderrWrite = process.stderr.write.bind(process.stderr);
|
|
67
72
|
export class ConsoleCapture extends EventEmitter {
|
|
68
73
|
entries = [];
|
|
69
74
|
originalConsole = null;
|
|
70
75
|
active = false;
|
|
71
76
|
maxEntries;
|
|
77
|
+
// Track if current write is from our console methods (to avoid double-capture)
|
|
78
|
+
inConsoleMethod = false;
|
|
79
|
+
// Track if current write is from the TUI renderer (should bypass capture)
|
|
80
|
+
inRendererWrite = false;
|
|
72
81
|
constructor(options) {
|
|
73
82
|
super();
|
|
74
83
|
this.maxEntries = options?.maxEntries ?? 1000;
|
|
75
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Write directly to stdout, bypassing capture.
|
|
87
|
+
* Used by the TUI renderer to output to terminal.
|
|
88
|
+
*/
|
|
89
|
+
writeToTerminal(data) {
|
|
90
|
+
this.inRendererWrite = true;
|
|
91
|
+
try {
|
|
92
|
+
return originalStdoutWrite(data);
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
this.inRendererWrite = false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
76
98
|
get isActive() {
|
|
77
99
|
return this.active;
|
|
78
100
|
}
|
|
@@ -87,6 +109,37 @@ export class ConsoleCapture extends EventEmitter {
|
|
|
87
109
|
return;
|
|
88
110
|
// Store original console
|
|
89
111
|
this.originalConsole = globalThis.console;
|
|
112
|
+
// Intercept stdout.write - captures Effect.log, printf, etc.
|
|
113
|
+
process.stdout.write = ((chunk, encodingOrCallback, callback) => {
|
|
114
|
+
// If this write is from renderer or console methods, pass through
|
|
115
|
+
if (this.inRendererWrite) {
|
|
116
|
+
return originalStdoutWrite(chunk, encodingOrCallback, callback);
|
|
117
|
+
}
|
|
118
|
+
// Capture if not from our console methods (avoid double-capture)
|
|
119
|
+
if (!this.inConsoleMethod) {
|
|
120
|
+
const text = typeof chunk === "string" ? chunk : chunk.toString();
|
|
121
|
+
this.captureRawOutput(text, "stdout");
|
|
122
|
+
}
|
|
123
|
+
// Don't write to real stdout - TUI owns the terminal
|
|
124
|
+
const cb = typeof encodingOrCallback === "function" ? encodingOrCallback : callback;
|
|
125
|
+
if (cb)
|
|
126
|
+
cb();
|
|
127
|
+
return true;
|
|
128
|
+
});
|
|
129
|
+
// Intercept stderr.write
|
|
130
|
+
process.stderr.write = ((chunk, encodingOrCallback, callback) => {
|
|
131
|
+
if (this.inRendererWrite) {
|
|
132
|
+
return originalStderrWrite(chunk, encodingOrCallback, callback);
|
|
133
|
+
}
|
|
134
|
+
if (!this.inConsoleMethod) {
|
|
135
|
+
const text = typeof chunk === "string" ? chunk : chunk.toString();
|
|
136
|
+
this.captureRawOutput(text, "stderr");
|
|
137
|
+
}
|
|
138
|
+
const cb = typeof encodingOrCallback === "function" ? encodingOrCallback : callback;
|
|
139
|
+
if (cb)
|
|
140
|
+
cb();
|
|
141
|
+
return true;
|
|
142
|
+
});
|
|
90
143
|
// Create mock streams for the new console
|
|
91
144
|
const mockStdout = new CapturedWritableStream();
|
|
92
145
|
const mockStderr = new CapturedWritableStream();
|
|
@@ -142,32 +195,86 @@ export class ConsoleCapture extends EventEmitter {
|
|
|
142
195
|
deactivate() {
|
|
143
196
|
if (!this.active || !this.originalConsole)
|
|
144
197
|
return;
|
|
198
|
+
// Restore original stdout/stderr write methods
|
|
199
|
+
process.stdout.write = originalStdoutWrite;
|
|
200
|
+
process.stderr.write = originalStderrWrite;
|
|
145
201
|
globalThis.console = this.originalConsole;
|
|
146
202
|
this.originalConsole = null;
|
|
147
203
|
this.active = false;
|
|
148
204
|
}
|
|
149
205
|
appendToConsole(level, args) {
|
|
150
|
-
|
|
151
|
-
|
|
206
|
+
// Mark that we're in a console method to avoid double-capture from stdout/stderr
|
|
207
|
+
this.inConsoleMethod = true;
|
|
208
|
+
try {
|
|
209
|
+
const location = captureCallerLocation();
|
|
210
|
+
const message = util.format(...args);
|
|
211
|
+
const entry = {
|
|
212
|
+
timestamp: new Date(),
|
|
213
|
+
level,
|
|
214
|
+
message,
|
|
215
|
+
args,
|
|
216
|
+
location,
|
|
217
|
+
};
|
|
218
|
+
// Enforce max entries
|
|
219
|
+
if (this.entries.length >= this.maxEntries) {
|
|
220
|
+
this.entries.shift();
|
|
221
|
+
}
|
|
222
|
+
this.entries.push(entry);
|
|
223
|
+
// Emit events
|
|
224
|
+
this.emit("entry", entry);
|
|
225
|
+
// Only emit error event if there are listeners (avoid unhandled error exception)
|
|
226
|
+
if (level === "ERROR" && this.listenerCount("error") > 0) {
|
|
227
|
+
this.emit("error", entry);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
this.inConsoleMethod = false;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// Capture raw output from stdout/stderr (for Effect.log, third-party libs, etc.)
|
|
235
|
+
captureRawOutput(text, stream) {
|
|
236
|
+
// Skip empty output
|
|
237
|
+
if (!text.trim())
|
|
238
|
+
return;
|
|
239
|
+
// Parse Effect log format: timestamp level fiber message
|
|
240
|
+
// Example: "timestamp=2024-01-15T10:30:00.000Z level=INFO fiber=#0 message=Hello"
|
|
241
|
+
// Or the pretty format with ANSI colors
|
|
242
|
+
const level = this.detectLogLevel(text, stream);
|
|
243
|
+
// Strip ANSI codes for the stored message
|
|
244
|
+
const cleanText = text.replace(/\x1b\[[0-9;]*m/g, "").trim();
|
|
152
245
|
const entry = {
|
|
153
246
|
timestamp: new Date(),
|
|
154
247
|
level,
|
|
155
|
-
message,
|
|
156
|
-
args,
|
|
157
|
-
location
|
|
248
|
+
message: cleanText,
|
|
249
|
+
args: [text], // Keep original with ANSI for potential future use
|
|
250
|
+
// No location for raw output - we can't get stack trace here
|
|
158
251
|
};
|
|
159
|
-
// Enforce max entries
|
|
160
252
|
if (this.entries.length >= this.maxEntries) {
|
|
161
253
|
this.entries.shift();
|
|
162
254
|
}
|
|
163
255
|
this.entries.push(entry);
|
|
164
|
-
// Emit events
|
|
165
256
|
this.emit("entry", entry);
|
|
166
|
-
// Only emit error event if there are listeners (avoid unhandled error exception)
|
|
167
257
|
if (level === "ERROR" && this.listenerCount("error") > 0) {
|
|
168
258
|
this.emit("error", entry);
|
|
169
259
|
}
|
|
170
260
|
}
|
|
261
|
+
// Detect log level from raw output text
|
|
262
|
+
detectLogLevel(text, stream) {
|
|
263
|
+
const upperText = text.toUpperCase();
|
|
264
|
+
// Effect log format detection
|
|
265
|
+
if (upperText.includes("LEVEL=ERROR") || upperText.includes("[ERROR]"))
|
|
266
|
+
return "ERROR";
|
|
267
|
+
if (upperText.includes("LEVEL=WARN") || upperText.includes("[WARN]"))
|
|
268
|
+
return "WARN";
|
|
269
|
+
if (upperText.includes("LEVEL=INFO") || upperText.includes("[INFO]"))
|
|
270
|
+
return "INFO";
|
|
271
|
+
if (upperText.includes("LEVEL=DEBUG") || upperText.includes("[DEBUG]"))
|
|
272
|
+
return "DEBUG";
|
|
273
|
+
// stderr is typically error output
|
|
274
|
+
if (stream === "stderr")
|
|
275
|
+
return "ERROR";
|
|
276
|
+
return "LOG";
|
|
277
|
+
}
|
|
171
278
|
// Also expose write to original console for debugging the capture itself
|
|
172
279
|
writeToOriginal(level, ...args) {
|
|
173
280
|
if (!this.originalConsole)
|
|
@@ -201,6 +308,22 @@ export function getConsoleCapture() {
|
|
|
201
308
|
}
|
|
202
309
|
return instance;
|
|
203
310
|
}
|
|
311
|
+
/**
|
|
312
|
+
* Write directly to the terminal, bypassing console capture.
|
|
313
|
+
* Used by the TUI renderer to output to terminal without being captured.
|
|
314
|
+
*/
|
|
315
|
+
export function writeToTerminal(data) {
|
|
316
|
+
return originalStdoutWrite(data);
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Create a wrapped stdout that bypasses console capture.
|
|
320
|
+
* Returns a write function compatible with TuiWriteStream.
|
|
321
|
+
*/
|
|
322
|
+
export function createTerminalWriter() {
|
|
323
|
+
return ((chunk, encodingOrCallback, callback) => {
|
|
324
|
+
return originalStdoutWrite(chunk, encodingOrCallback, callback);
|
|
325
|
+
});
|
|
326
|
+
}
|
|
204
327
|
// Clean up on process exit
|
|
205
328
|
process.on("exit", () => {
|
|
206
329
|
if (instance?.isActive) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleCapture.js","sourceRoot":"","sources":["../../../src/console/ConsoleCapture.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"ConsoleCapture.js","sourceRoot":"","sources":["../../../src/console/ConsoleCapture.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,+EAA+E;AAC/E,0EAA0E;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAsBjC,gEAAgE;AAChE,6BAA6B;AAC7B,gEAAgE;AAEhE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;AAEzB,SAAS,SAAS,CAAC,IAAY;IAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAA;IACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,KAAK,CAAA;IAClD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,qBAAqB;IAC7B,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAA;IACvB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAA;IACvB,IAAI,CAAC,KAAK;QAAE,OAAM;IAElB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAExC,uBAAuB;IACvB,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,CAAC,CAAA;IAEpH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAE3B,kCAAkC;QAClC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAAE,SAAQ;QAEvD,mFAAmF;QACnF,MAAM,EAAE,GAAG,0DAA0D,CAAA;QACrE,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE9B,IAAI,KAAK,EAAE,CAAC;YACX,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;YACpB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACrB,CAAC;YAED,2CAA2C;YAC3C,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,OAAO;oBACN,IAAI;oBACJ,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACxB,CAAA;YACF,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC;AAED,gEAAgE;AAChE,2CAA2C;AAC3C,gEAAgE;AAEhE,MAAM,sBAAuB,SAAQ,QAAQ;IAC5C,KAAK,GAAG,IAAI,CAAA;IACZ,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;IACtC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;IAEvB,MAAM,CAAC,MAAc,EAAE,SAAyB,EAAE,QAAwC;QAClG,sDAAsD;QACtD,QAAQ,EAAE,CAAA;IACX,CAAC;IAED,aAAa;QACZ,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;CACD;AAWD,uEAAuE;AACvE,yFAAyF;AACzF,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AACrE,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAErE,MAAM,OAAO,cAAe,SAAQ,YAAY;IACvC,OAAO,GAAe,EAAE,CAAA;IACxB,eAAe,GAA0B,IAAI,CAAA;IAC7C,MAAM,GAAG,KAAK,CAAA;IACd,UAAU,CAAQ;IAC1B,+EAA+E;IACvE,eAAe,GAAG,KAAK,CAAA;IAC/B,0EAA0E;IAClE,eAAe,GAAG,KAAK,CAAA;IAE/B,YAAY,OAAiC;QAC5C,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAA;IAC9C,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,IAAyB;QACxC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC;YACJ,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;QAC7B,CAAC;IACF,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;IAED,UAAU;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;IACzB,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,QAAQ;QACP,IAAI,IAAI,CAAC,MAAM;YAAE,OAAM;QAEvB,yBAAyB;QACzB,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,OAAO,CAAA;QAEzC,6DAA6D;QAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CACvB,KAA0B,EAC1B,kBAAoE,EACpE,QAAuC,EAC7B,EAAE;YACZ,kEAAkE;YAClE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,OAAO,mBAAmB,CAAC,KAAK,EAAE,kBAAoC,EAAE,QAAQ,CAAC,CAAA;YAClF,CAAC;YACD,iEAAiE;YACjE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;gBACjE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACtC,CAAC;YACD,qDAAqD;YACrD,MAAM,EAAE,GAAG,OAAO,kBAAkB,KAAK,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAA;YACnF,IAAI,EAAE;gBAAE,EAAE,EAAE,CAAA;YACZ,OAAO,IAAI,CAAA;QACZ,CAAC,CAAgC,CAAA;QAEjC,yBAAyB;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CACvB,KAA0B,EAC1B,kBAAoE,EACpE,QAAuC,EAC7B,EAAE;YACZ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,OAAO,mBAAmB,CAAC,KAAK,EAAE,kBAAoC,EAAE,QAAQ,CAAC,CAAA;YAClF,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;gBACjE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YACtC,CAAC;YACD,MAAM,EAAE,GAAG,OAAO,kBAAkB,KAAK,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAA;YACnF,IAAI,EAAE;gBAAE,EAAE,EAAE,CAAA;YACZ,OAAO,IAAI,CAAA;QACZ,CAAC,CAAgC,CAAA;QAEjC,0CAA0C;QAC1C,MAAM,UAAU,GAAG,IAAI,sBAAsB,EAAE,CAAA;QAC/C,MAAM,UAAU,GAAG,IAAI,sBAAsB,EAAE,CAAA;QAE/C,yCAAyC;QACzC,sDAAsD;QACtD,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC;YAC/B,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAI;YACf,cAAc,EAAE;gBACf,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,EAAE;gBACf,KAAK,EAAE,CAAC;aACR;SACD,CAAmB,CAAA;QAEpB,qEAAqE;QACrE,4EAA4E;QAC5E,MAAM,aAAa,GAAG;YACrB,QAAQ;YACR,OAAO;YACP,OAAO;YACP,YAAY;YACZ,KAAK;YACL,QAAQ;YACR,OAAO;YACP,gBAAgB;YAChB,UAAU;YACV,OAAO;YACP,MAAM;YACN,SAAS;YACT,SAAS;YACT,WAAW;YACX,OAAO;YACP,SAAS;YACT,YAAY;SACH,CAAA;QAEV,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACpC,IAAI,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACpC,CAAC;gBAAC,WAAkD,CAAC,MAAM,CAAC,GAC3D,IAAI,CAAC,eACL,CAAC,MAAM,CAAC,CAAA;YACV,CAAC;QACF,CAAC;QAED,6CAA6C;QAC7C,UAAU,CAAC,OAAO,GAAG,WAAW,CAAA;QAEhC,8BAA8B;QAC9B,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACvE,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACzE,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACzE,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC3E,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAE3E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACnB,CAAC;IAED,UAAU;QACT,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAM;QAEjD,+CAA+C;QAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAA;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAA;QAE1C,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAA;QACzC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACpB,CAAC;IAEO,eAAe,CAAC,KAAe,EAAE,IAAe;QACvD,iFAAiF;QACjF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAA;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;YAEpC,MAAM,KAAK,GAAa;gBACvB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,KAAK;gBACL,OAAO;gBACP,IAAI;gBACJ,QAAQ;aACR,CAAA;YAED,sBAAsB;YACtB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;YACrB,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAExB,cAAc;YACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YACzB,iFAAiF;YACjF,IAAI,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAC1B,CAAC;QACF,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;QAC7B,CAAC;IACF,CAAC;IAED,iFAAiF;IACzE,gBAAgB,CAAC,IAAY,EAAE,MAA2B;QACjE,oBAAoB;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAM;QAExB,yDAAyD;QACzD,kFAAkF;QAClF,wCAAwC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAE/C,0CAA0C;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAE5D,MAAM,KAAK,GAAa;YACvB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,KAAK;YACL,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,mDAAmD;YACjE,6DAA6D;SAC7D,CAAA;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAExB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACzB,IAAI,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC1B,CAAC;IACF,CAAC;IAED,wCAAwC;IAChC,cAAc,CAAC,IAAY,EAAE,MAA2B;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAEpC,8BAA8B;QAC9B,IAAI,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,OAAO,CAAA;QACtF,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAA;QACnF,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAA;QACnF,IAAI,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,OAAO,CAAA;QAEtF,mCAAmC;QACnC,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAA;QAEvC,OAAO,KAAK,CAAA;IACb,CAAC;IAED,yEAAyE;IACzE,eAAe,CAAC,KAAe,EAAE,GAAG,IAAe;QAClD,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAM;QACjC,QAAQ,KAAK,EAAE,CAAC;YACf,KAAK,KAAK;gBACT,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;gBACjC,MAAK;YACN,KAAK,MAAM;gBACV,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;gBAClC,MAAK;YACN,KAAK,MAAM;gBACV,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;gBAClC,MAAK;YACN,KAAK,OAAO;gBACX,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;gBACnC,MAAK;YACN,KAAK,OAAO;gBACX,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;gBACnC,MAAK;QACP,CAAC;IACF,CAAC;CACD;AAED,gEAAgE;AAChE,qBAAqB;AACrB,gEAAgE;AAEhE,IAAI,QAAQ,GAA0B,IAAI,CAAA;AAE1C,MAAM,UAAU,iBAAiB;IAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAA;IAChC,CAAC;IACD,OAAO,QAAQ,CAAA;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAyB;IACxD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IACnC,OAAO,CAAC,CACP,KAA0B,EAC1B,kBAAoE,EACpE,QAAuC,EAC7B,EAAE;QACZ,OAAO,mBAAmB,CAAC,KAAK,EAAE,kBAAoC,EAAE,QAAQ,CAAC,CAAA;IAClF,CAAC,CAAgC,CAAA;AAClC,CAAC;AAED,2BAA2B;AAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;IACvB,IAAI,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACxB,QAAQ,CAAC,UAAU,EAAE,CAAA;IACtB,CAAC;AACF,CAAC,CAAC,CAAA"}
|
|
@@ -17,9 +17,9 @@ export interface ScrollState {
|
|
|
17
17
|
export interface UseScrollOptions {
|
|
18
18
|
/** Scroll axis: "vertical" (default) or "horizontal" */
|
|
19
19
|
axis?: "vertical" | "horizontal";
|
|
20
|
-
/** Initial viewport size override (useful for tests) */
|
|
20
|
+
/** @internal Initial viewport size override (useful for tests) */
|
|
21
21
|
initialViewportSize?: number;
|
|
22
|
-
/** Initial content size override (useful for tests) */
|
|
22
|
+
/** @internal Initial content size override (useful for tests) */
|
|
23
23
|
initialContentSize?: number;
|
|
24
24
|
/** Initial scroll offset */
|
|
25
25
|
initialOffset?: number;
|
|
@@ -53,14 +53,16 @@ export interface UseScrollReturn {
|
|
|
53
53
|
* @param position - The position (row/col index or pixel offset)
|
|
54
54
|
* @param itemSize - Size of each item (default: 1 for row-based lists)
|
|
55
55
|
* @param padding - Extra padding around the item (default: 0)
|
|
56
|
+
* @param totalSize - Optional known total content size (avoids stale state issues)
|
|
56
57
|
*/
|
|
57
|
-
scrollToVisible: (position: number, itemSize?: number, padding?: number) => void;
|
|
58
|
+
scrollToVisible: (position: number, itemSize?: number, padding?: number, totalSize?: number) => void;
|
|
58
59
|
/** Props to spread on <scroll> element */
|
|
59
60
|
scrollProps: {
|
|
60
61
|
offset: number;
|
|
61
62
|
axis: "vertical" | "horizontal";
|
|
62
63
|
onContentSize: (width: number, height: number) => void;
|
|
63
64
|
onViewportSize: (width: number, height: number) => void;
|
|
65
|
+
onRect?: (x: number, y: number, w: number, h: number) => void;
|
|
64
66
|
};
|
|
65
67
|
}
|
|
66
68
|
/**
|
|
@@ -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,
|
|
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,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,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;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,eAAe,CAiOzE"}
|
|
@@ -193,17 +193,19 @@ export function useScroll(options = {}) {
|
|
|
193
193
|
useKeyboard(handleKey);
|
|
194
194
|
// Scroll to make a position visible (for keeping selection in view)
|
|
195
195
|
// Uses refs to avoid changing on every scroll - only triggers when selection changes
|
|
196
|
-
const scrollToVisible = useCallback((position, itemSize = 1, padding = 0) => {
|
|
196
|
+
const scrollToVisible = useCallback((position, itemSize = 1, padding = 0, totalSize) => {
|
|
197
197
|
const currentOffset = offsetRef.current;
|
|
198
198
|
const itemStart = position * itemSize;
|
|
199
199
|
const itemEnd = itemStart + itemSize;
|
|
200
|
+
// Use provided totalSize if available (more accurate than potentially stale contentSize)
|
|
201
|
+
const effectiveContentSize = totalSize ?? contentSize;
|
|
200
202
|
// If item is above viewport, scroll up to show it
|
|
201
203
|
if (itemStart < currentOffset + padding) {
|
|
202
204
|
setOffset(Math.max(0, itemStart - padding));
|
|
203
205
|
}
|
|
204
206
|
// If item is below viewport, scroll down to show it
|
|
205
207
|
else if (itemEnd > currentOffset + viewportSize - padding) {
|
|
206
|
-
const currentMaxOffset = Math.max(0,
|
|
208
|
+
const currentMaxOffset = Math.max(0, effectiveContentSize - viewportSize);
|
|
207
209
|
setOffset(Math.min(currentMaxOffset, itemEnd - viewportSize + padding));
|
|
208
210
|
}
|
|
209
211
|
}, [viewportSize, contentSize, setOffset]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-scroll.js","sourceRoot":"","sources":["../../../src/hooks/use-scroll.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAG3E,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAW/C;;;;GAIG;AACH,MAAM,gBAAgB;IASZ;IARD,YAAY,GAAG,CAAC,CAAA;IAChB,eAAe,GAAa,EAAE,CAAA;IACrB,WAAW,GAAG,CAAC,CAAA;IACf,aAAa,GAAG,GAAG,CAAA;IACpC,sEAAsE;IACrD,eAAe,GAAG,CAAC,CAAA;IAEpC,YACS,OAIJ,EAAE;QAJE,SAAI,GAAJ,IAAI,CAIN;IACJ,CAAC;IAEJ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAA;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA;QAElD,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAA;QAEjE,gCAAgC;QAChC,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAChD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;YACvB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;YACzB,OAAO,CAAC,CAAA;QACT,CAAC;QAED,2CAA2C;QAC3C,IAAI,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAA;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC7B,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACpD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAC7B,CAAC;QAED,wDAAwD;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA;QAEjG,sDAAsD;QACtD,MAAM,iBAAiB,GAAG,GAAG,CAAA;QAC7B,MAAM,QAAQ,GAAG,iBAAiB,GAAG,WAAW,CAAA;QAEhD,0BAA0B;QAC1B,MAAM,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAA;QACxB,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAE5C,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;IAC1B,CAAC;CACD;
|
|
1
|
+
{"version":3,"file":"use-scroll.js","sourceRoot":"","sources":["../../../src/hooks/use-scroll.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ export { OverlayItemHost, type OverlayItemProps } from "./overlay-item.js";
|
|
|
11
11
|
export { ScrollHost, type ScrollProps } from "./scroll.js";
|
|
12
12
|
export { SingleChildHost } from "./single-child.js";
|
|
13
13
|
export { SpacerHost, type SpacerProps } from "./spacer.js";
|
|
14
|
-
export { RawTextHost, StyledTextHost, TextHost, type StyledSpan, type StyledTextProps, type TextProps } from "./text.js";
|
|
14
|
+
export { RawTextHost, SpanHost, StyledTextHost, TextHost, type SpanProps, type SpanStyle, type StyledSpan, type StyledTextProps, type TextProps, } from "./text.js";
|
|
15
15
|
export { VStackHost, type VStackProps } from "./vstack.js";
|
|
16
16
|
export { ZStackHost, type ZStackProps } from "./zstack.js";
|
|
17
17
|
export declare const hostRegistry: Record<string, new (props: any, ctx: HostContext) => BaseHost>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AASzC,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AASzC,OAAO,EAAE,WAAW,EAAsC,MAAM,WAAW,CAAA;AAI3E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EACN,WAAW,EACX,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,SAAS,GACd,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAI1D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,KAAK,QAAQ,CAcvF,CAAA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,CAM/F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAE9E"}
|
package/dist/src/hosts/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { OverlayHost } from "./overlay.js";
|
|
|
6
6
|
import { OverlayItemHost } from "./overlay-item.js";
|
|
7
7
|
import { ScrollHost } from "./scroll.js";
|
|
8
8
|
import { SpacerHost } from "./spacer.js";
|
|
9
|
-
import { RawTextHost, StyledTextHost, TextHost } from "./text.js";
|
|
9
|
+
import { RawTextHost, SpanHost, StyledTextHost, TextHost } from "./text.js";
|
|
10
10
|
import { VStackHost } from "./vstack.js";
|
|
11
11
|
import { ZStackHost } from "./zstack.js";
|
|
12
12
|
export { BaseHost } from "./base.js";
|
|
@@ -19,13 +19,14 @@ export { OverlayItemHost } from "./overlay-item.js";
|
|
|
19
19
|
export { ScrollHost } from "./scroll.js";
|
|
20
20
|
export { SingleChildHost } from "./single-child.js";
|
|
21
21
|
export { SpacerHost } from "./spacer.js";
|
|
22
|
-
export { RawTextHost, StyledTextHost, TextHost } from "./text.js";
|
|
22
|
+
export { RawTextHost, SpanHost, StyledTextHost, TextHost, } from "./text.js";
|
|
23
23
|
export { VStackHost } from "./vstack.js";
|
|
24
24
|
export { ZStackHost } from "./zstack.js";
|
|
25
25
|
// Use any to allow specialized props on each host type
|
|
26
26
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
27
|
export const hostRegistry = {
|
|
28
28
|
text: TextHost,
|
|
29
|
+
span: SpanHost,
|
|
29
30
|
styledtext: StyledTextHost,
|
|
30
31
|
spacer: SpacerHost,
|
|
31
32
|
vstack: VStackHost,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,UAAU,EAAsC,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAuB,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAqB,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAyB,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EACN,WAAW,EACX,QAAQ,EACR,cAAc,EACd,QAAQ,GAMR,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAE1D,uDAAuD;AACvD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,YAAY,GAAmE;IAC3F,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,cAAc;IAC1B,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,OAAO;IACZ,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,aAAa;IACxB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,WAAW;IACpB,WAAW,EAAE,eAAe;CAC5B,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAkB,EAAE,GAAgB;IACpF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,GAAgB;IAChE,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAClC,CAAC"}
|