@nuvin/ink 6.5.1-alpha.1 → 6.5.2-test-scroll
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/build/components/Box.d.ts +3 -3
- package/build/components/ScrollBox.d.ts +62 -0
- package/build/components/ScrollBox.js +80 -0
- package/build/components/ScrollBox.js.map +1 -0
- package/build/dom.d.ts +7 -0
- package/build/dom.js.map +1 -1
- package/build/hooks/use-scroll.d.ts +86 -0
- package/build/hooks/use-scroll.js +63 -0
- package/build/hooks/use-scroll.js.map +1 -0
- package/build/index.d.ts +4 -0
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/ink.d.ts +1 -1
- package/build/ink.js +40 -40
- package/build/ink.js.map +1 -1
- package/build/render-node-to-output.d.ts +5 -0
- package/build/render-node-to-output.js +48 -11
- package/build/render-node-to-output.js.map +1 -1
- package/build/styles.d.ts +3 -3
- package/package.json +6 -3
|
@@ -80,9 +80,9 @@ declare const Box: React.ForwardRefExoticComponent<{
|
|
|
80
80
|
readonly borderBottomDimColor?: boolean | undefined;
|
|
81
81
|
readonly borderLeftDimColor?: boolean | undefined;
|
|
82
82
|
readonly borderRightDimColor?: boolean | undefined;
|
|
83
|
-
readonly overflow?: "visible" | "hidden" | undefined;
|
|
84
|
-
readonly overflowX?: "visible" | "hidden" | undefined;
|
|
85
|
-
readonly overflowY?: "visible" | "hidden" | undefined;
|
|
83
|
+
readonly overflow?: "visible" | "hidden" | "scroll" | undefined;
|
|
84
|
+
readonly overflowX?: "visible" | "hidden" | "scroll" | undefined;
|
|
85
|
+
readonly overflowY?: "visible" | "hidden" | "scroll" | undefined;
|
|
86
86
|
readonly backgroundColor?: import("type-fest").LiteralUnion<import("ansi-styles").ForegroundColorName, string> | undefined;
|
|
87
87
|
} & {
|
|
88
88
|
/**
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type DOMElement } from '../dom.js';
|
|
3
|
+
import { type Props as BoxProps } from './Box.js';
|
|
4
|
+
import { type UseScrollReturn } from '../hooks/use-scroll.js';
|
|
5
|
+
export interface ScrollBoxProps extends BoxProps {
|
|
6
|
+
/**
|
|
7
|
+
* Enable horizontal scrolling
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
scrollX?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Enable vertical scrolling
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
scrollY?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Width of the scrollable content (needed for horizontal scrolling)
|
|
18
|
+
*/
|
|
19
|
+
contentWidth?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Height of the scrollable content (needed for vertical scrolling)
|
|
22
|
+
*/
|
|
23
|
+
contentHeight?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Initial scroll position (x, y)
|
|
26
|
+
* @default [0, 0]
|
|
27
|
+
*/
|
|
28
|
+
initialScroll?: [number, number];
|
|
29
|
+
/**
|
|
30
|
+
* Callback when scroll position changes
|
|
31
|
+
*/
|
|
32
|
+
onScroll?: (scrollState: UseScrollReturn) => void;
|
|
33
|
+
}
|
|
34
|
+
export interface ScrollBoxRef {
|
|
35
|
+
/**
|
|
36
|
+
* Reference to the underlying DOM element
|
|
37
|
+
*/
|
|
38
|
+
ref: DOMElement | null;
|
|
39
|
+
/**
|
|
40
|
+
* Scroll control methods and state
|
|
41
|
+
*/
|
|
42
|
+
scroll: UseScrollReturn;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A scrollable container component that supports overflow="scroll"
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```tsx
|
|
49
|
+
* <ScrollBox
|
|
50
|
+
* width={20}
|
|
51
|
+
* height={10}
|
|
52
|
+
* overflow="scroll"
|
|
53
|
+
* contentHeight={50}
|
|
54
|
+
* >
|
|
55
|
+
* {longContent}
|
|
56
|
+
* </ScrollBox>
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
declare const ScrollBox: React.ForwardRefExoticComponent<ScrollBoxProps & {
|
|
60
|
+
children?: React.ReactNode | undefined;
|
|
61
|
+
} & React.RefAttributes<ScrollBoxRef>>;
|
|
62
|
+
export default ScrollBox;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import React, { forwardRef, useRef, useEffect, useImperativeHandle } from 'react';
|
|
2
|
+
import Box from './Box.js';
|
|
3
|
+
import { useScroll } from '../hooks/use-scroll.js';
|
|
4
|
+
/**
|
|
5
|
+
* A scrollable container component that supports overflow="scroll"
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* <ScrollBox
|
|
10
|
+
* width={20}
|
|
11
|
+
* height={10}
|
|
12
|
+
* overflow="scroll"
|
|
13
|
+
* contentHeight={50}
|
|
14
|
+
* >
|
|
15
|
+
* {longContent}
|
|
16
|
+
* </ScrollBox>
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
const ScrollBox = forwardRef(({ children, scrollX = false, scrollY = false, contentWidth, contentHeight, initialScroll = [0, 0], onScroll, width, height, overflow = 'visible', overflowX, overflowY, ...boxProps }, ref) => {
|
|
20
|
+
const boxRef = useRef(null);
|
|
21
|
+
// Determine if scrolling should be enabled based on overflow props
|
|
22
|
+
const shouldScrollX = scrollX || overflowX === 'scroll' || overflow === 'scroll';
|
|
23
|
+
const shouldScrollY = scrollY || overflowY === 'scroll' || overflow === 'scroll';
|
|
24
|
+
// Default to vertical scrolling if scroll is requested but no direction specified
|
|
25
|
+
const finalScrollY = shouldScrollY || (scrollY && !shouldScrollX);
|
|
26
|
+
const finalScrollX = shouldScrollX;
|
|
27
|
+
// Calculate content dimensions from props or measure children
|
|
28
|
+
const containerWidth = typeof width === 'number' ? width : 0;
|
|
29
|
+
const containerHeight = typeof height === 'number' ? height : 0;
|
|
30
|
+
const scrollOptions = {
|
|
31
|
+
scrollX: finalScrollX,
|
|
32
|
+
scrollY: finalScrollY,
|
|
33
|
+
contentWidth: contentWidth || containerWidth,
|
|
34
|
+
contentHeight: contentHeight || containerHeight,
|
|
35
|
+
containerWidth,
|
|
36
|
+
containerHeight,
|
|
37
|
+
};
|
|
38
|
+
const scroll = useScroll(scrollOptions);
|
|
39
|
+
// Override the initial scroll position with the prop values
|
|
40
|
+
if (finalScrollX) {
|
|
41
|
+
scroll.scrollLeft = initialScroll[0];
|
|
42
|
+
}
|
|
43
|
+
if (finalScrollY) {
|
|
44
|
+
scroll.scrollTop = initialScroll[1];
|
|
45
|
+
}
|
|
46
|
+
// Notify parent of scroll changes
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (onScroll) {
|
|
49
|
+
onScroll(scroll);
|
|
50
|
+
}
|
|
51
|
+
}, [scroll.scrollLeft, scroll.scrollTop, onScroll]);
|
|
52
|
+
// Expose ref with scroll state and methods
|
|
53
|
+
useImperativeHandle(ref, () => ({
|
|
54
|
+
ref: boxRef.current,
|
|
55
|
+
scroll,
|
|
56
|
+
}), [scroll]);
|
|
57
|
+
// Update the DOM element with scroll offset
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
if (boxRef.current && (finalScrollX || finalScrollY)) {
|
|
60
|
+
boxRef.current.internal_scrollOffset = {
|
|
61
|
+
x: finalScrollX ? scroll.scrollLeft : 0,
|
|
62
|
+
y: finalScrollY ? scroll.scrollTop : 0,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}, [scroll.scrollLeft, scroll.scrollTop, finalScrollX, finalScrollY]);
|
|
66
|
+
// Determine the appropriate overflow value - use a separate approach
|
|
67
|
+
// by setting the internal_scrollOffset directly on the DOM element
|
|
68
|
+
const allBoxProps = {
|
|
69
|
+
width,
|
|
70
|
+
height,
|
|
71
|
+
overflow: (finalScrollX || finalScrollY) ? 'scroll' : overflow,
|
|
72
|
+
overflowX: finalScrollX ? 'scroll' : overflowX,
|
|
73
|
+
overflowY: finalScrollY ? 'scroll' : overflowY,
|
|
74
|
+
...boxProps
|
|
75
|
+
};
|
|
76
|
+
return (React.createElement(Box, { ref: boxRef, ...allBoxProps }, children));
|
|
77
|
+
});
|
|
78
|
+
ScrollBox.displayName = 'ScrollBox';
|
|
79
|
+
export default ScrollBox;
|
|
80
|
+
//# sourceMappingURL=ScrollBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollBox.js","sourceRoot":"","sources":["../../src/components/ScrollBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAyB,MAAM,OAAO,CAAC;AAExG,OAAO,GAA6B,MAAM,UAAU,CAAC;AACrD,OAAO,EAAC,SAAS,EAA2C,MAAM,wBAAwB,CAAC;AAiD3F;;;;;;;;;;;;;;GAcG;AACH,MAAM,SAAS,GAAG,UAAU,CAC3B,CACC,EACC,QAAQ,EACR,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,KAAK,EACf,YAAY,EACZ,aAAa,EACb,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,MAAM,EACN,QAAQ,GAAG,SAAS,EACpB,SAAS,EACT,SAAS,EACT,GAAG,QAAQ,EACX,EACD,GAAG,EACF,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,CAAa,IAAI,CAAC,CAAC;IAExC,mEAAmE;IACnE,MAAM,aAAa,GAAG,OAAO,IAAI,SAAS,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC;IACjF,MAAM,aAAa,GAAG,OAAO,IAAI,SAAS,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC;IAEjF,kFAAkF;IAClF,MAAM,YAAY,GAAG,aAAa,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,aAAa,CAAC;IAEnC,8DAA8D;IAC9D,MAAM,cAAc,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,aAAa,GAAkB;QACpC,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,YAAY;QACrB,YAAY,EAAE,YAAY,IAAI,cAAc;QAC5C,aAAa,EAAE,aAAa,IAAI,eAAe;QAC/C,cAAc;QACd,eAAe;KACf,CAAC;IAEF,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAExC,4DAA4D;IAC5D,IAAI,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,kCAAkC;IAClC,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;IACF,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEpD,2CAA2C;IAC3C,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/B,GAAG,EAAE,MAAM,CAAC,OAAO;QACnB,MAAM;KACN,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEd,4CAA4C;IAC5C,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,OAAO,CAAC,qBAAqB,GAAG;gBACtC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aACtC,CAAC;QACH,CAAC;IACF,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAErE,qEAAqE;IACtE,mEAAmE;IACnE,MAAM,WAAW,GAAG;QACnB,KAAK;QACL,MAAM;QACN,QAAQ,EAAE,CAAC,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,QAAe,CAAC,CAAC,CAAC,QAAQ;QACrE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,QAAe,CAAC,CAAC,CAAC,SAAS;QACrD,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,QAAe,CAAC,CAAC,CAAC,SAAS;QACrD,GAAG,QAAQ;KACX,CAAC;IAEF,OAAO,CACN,oBAAC,GAAG,IACH,GAAG,EAAE,MAAM,KACP,WAAW,IAEd,QAAQ,CACJ,CACN,CAAC;AACH,CAAC,CACD,CAAC;AAEF,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AAEpC,eAAe,SAAS,CAAC"}
|
package/build/dom.d.ts
CHANGED
|
@@ -29,6 +29,13 @@ export type DOMElement = {
|
|
|
29
29
|
selected?: boolean;
|
|
30
30
|
};
|
|
31
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Internal scroll offset for scrollable containers
|
|
34
|
+
*/
|
|
35
|
+
internal_scrollOffset?: {
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
};
|
|
32
39
|
isStaticDirty?: boolean;
|
|
33
40
|
staticNode?: DOMElement;
|
|
34
41
|
onComputeLayout?: () => void;
|
package/build/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA,OAAO,IAA6B,MAAM,aAAa,CAAC;AACxD,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAE5C,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,eAAe,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export interface ScrollOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Enable horizontal scrolling
|
|
4
|
+
* @default false
|
|
5
|
+
*/
|
|
6
|
+
scrollX?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Enable vertical scrolling
|
|
9
|
+
* @default false
|
|
10
|
+
*/
|
|
11
|
+
scrollY?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Width of the scrollable content (needed for horizontal scrolling)
|
|
14
|
+
*/
|
|
15
|
+
contentWidth?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Height of the scrollable content (needed for vertical scrolling)
|
|
18
|
+
*/
|
|
19
|
+
contentHeight?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Width of the visible container
|
|
22
|
+
*/
|
|
23
|
+
containerWidth?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Height of the visible container
|
|
26
|
+
*/
|
|
27
|
+
containerHeight?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface ScrollState {
|
|
30
|
+
/**
|
|
31
|
+
* Current horizontal scroll position
|
|
32
|
+
*/
|
|
33
|
+
scrollLeft: number;
|
|
34
|
+
/**
|
|
35
|
+
* Current vertical scroll position
|
|
36
|
+
*/
|
|
37
|
+
scrollTop: number;
|
|
38
|
+
/**
|
|
39
|
+
* Maximum horizontal scroll position
|
|
40
|
+
*/
|
|
41
|
+
maxScrollLeft: number;
|
|
42
|
+
/**
|
|
43
|
+
* Maximum vertical scroll position
|
|
44
|
+
*/
|
|
45
|
+
maxScrollTop: number;
|
|
46
|
+
/**
|
|
47
|
+
* Whether horizontal scrolling is possible
|
|
48
|
+
*/
|
|
49
|
+
canScrollX: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Whether vertical scrolling is possible
|
|
52
|
+
*/
|
|
53
|
+
canScrollY: boolean;
|
|
54
|
+
}
|
|
55
|
+
export interface ScrollActions {
|
|
56
|
+
/**
|
|
57
|
+
* Scroll to a specific horizontal position
|
|
58
|
+
*/
|
|
59
|
+
scrollTo: (x: number, y?: number) => void;
|
|
60
|
+
/**
|
|
61
|
+
* Scroll by a relative amount
|
|
62
|
+
*/
|
|
63
|
+
scrollBy: (deltaX: number, deltaY: number) => void;
|
|
64
|
+
/**
|
|
65
|
+
* Scroll to the top
|
|
66
|
+
*/
|
|
67
|
+
scrollToTop: () => void;
|
|
68
|
+
/**
|
|
69
|
+
* Scroll to the bottom
|
|
70
|
+
*/
|
|
71
|
+
scrollToBottom: () => void;
|
|
72
|
+
/**
|
|
73
|
+
* Scroll to the left
|
|
74
|
+
*/
|
|
75
|
+
scrollToLeft: () => void;
|
|
76
|
+
/**
|
|
77
|
+
* Scroll to the right
|
|
78
|
+
*/
|
|
79
|
+
scrollToRight: () => void;
|
|
80
|
+
}
|
|
81
|
+
export type UseScrollReturn = ScrollState & ScrollActions;
|
|
82
|
+
/**
|
|
83
|
+
* Hook for managing scroll state in scrollable containers
|
|
84
|
+
*/
|
|
85
|
+
export declare const useScroll: (options?: ScrollOptions) => UseScrollReturn;
|
|
86
|
+
export default useScroll;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { useState, useCallback } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Hook for managing scroll state in scrollable containers
|
|
4
|
+
*/
|
|
5
|
+
export const useScroll = (options = {}) => {
|
|
6
|
+
const { scrollX = false, scrollY = false, contentWidth = 0, contentHeight = 0, containerWidth = 0, containerHeight = 0, } = options;
|
|
7
|
+
const [scrollLeft, setScrollLeft] = useState(0);
|
|
8
|
+
const [scrollTop, setScrollTop] = useState(0);
|
|
9
|
+
// Calculate maximum scroll positions
|
|
10
|
+
const maxScrollLeft = Math.max(0, contentWidth - containerWidth);
|
|
11
|
+
const maxScrollTop = Math.max(0, contentHeight - containerHeight);
|
|
12
|
+
// Calculate whether scrolling is possible
|
|
13
|
+
const canScrollX = scrollX && maxScrollLeft > 0;
|
|
14
|
+
const canScrollY = scrollY && maxScrollTop > 0;
|
|
15
|
+
const scrollTo = useCallback((x, y) => {
|
|
16
|
+
if (scrollX) {
|
|
17
|
+
setScrollLeft(Math.max(0, Math.min(maxScrollLeft, x)));
|
|
18
|
+
}
|
|
19
|
+
if (scrollY && typeof y === 'number') {
|
|
20
|
+
setScrollTop(Math.max(0, Math.min(maxScrollTop, y)));
|
|
21
|
+
}
|
|
22
|
+
}, [scrollX, scrollY, maxScrollLeft, maxScrollTop]);
|
|
23
|
+
const scrollBy = useCallback((deltaX, deltaY) => {
|
|
24
|
+
setScrollLeft(prev => {
|
|
25
|
+
if (!scrollX)
|
|
26
|
+
return prev;
|
|
27
|
+
return Math.max(0, Math.min(maxScrollLeft, prev + deltaX));
|
|
28
|
+
});
|
|
29
|
+
setScrollTop(prev => {
|
|
30
|
+
if (!scrollY)
|
|
31
|
+
return prev;
|
|
32
|
+
return Math.max(0, Math.min(maxScrollTop, prev + deltaY));
|
|
33
|
+
});
|
|
34
|
+
}, [scrollX, scrollY, maxScrollLeft, maxScrollTop]);
|
|
35
|
+
const scrollToTop = useCallback(() => {
|
|
36
|
+
setScrollTop(0);
|
|
37
|
+
}, []);
|
|
38
|
+
const scrollToBottom = useCallback(() => {
|
|
39
|
+
setScrollTop(maxScrollTop);
|
|
40
|
+
}, [maxScrollTop]);
|
|
41
|
+
const scrollToLeft = useCallback(() => {
|
|
42
|
+
setScrollLeft(0);
|
|
43
|
+
}, []);
|
|
44
|
+
const scrollToRight = useCallback(() => {
|
|
45
|
+
setScrollLeft(maxScrollLeft);
|
|
46
|
+
}, [maxScrollLeft]);
|
|
47
|
+
return {
|
|
48
|
+
scrollLeft,
|
|
49
|
+
scrollTop,
|
|
50
|
+
maxScrollLeft,
|
|
51
|
+
maxScrollTop,
|
|
52
|
+
canScrollX,
|
|
53
|
+
canScrollY,
|
|
54
|
+
scrollTo,
|
|
55
|
+
scrollBy,
|
|
56
|
+
scrollToTop,
|
|
57
|
+
scrollToBottom,
|
|
58
|
+
scrollToLeft,
|
|
59
|
+
scrollToRight,
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
export default useScroll;
|
|
63
|
+
//# sourceMappingURL=use-scroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-scroll.js","sourceRoot":"","sources":["../../src/hooks/use-scroll.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export type { RenderOptions, Instance } from './render.js';
|
|
|
2
2
|
export { default as render } from './render.js';
|
|
3
3
|
export type { Props as BoxProps } from './components/Box.js';
|
|
4
4
|
export { default as Box } from './components/Box.js';
|
|
5
|
+
export type { ScrollBoxProps, ScrollBoxRef } from './components/ScrollBox.js';
|
|
6
|
+
export { default as ScrollBox } from './components/ScrollBox.js';
|
|
5
7
|
export type { Props as TextProps } from './components/Text.js';
|
|
6
8
|
export { default as Text } from './components/Text.js';
|
|
7
9
|
export type { Props as AppProps } from './components/AppContext.js';
|
|
@@ -24,5 +26,7 @@ export { default as useStderr } from './hooks/use-stderr.js';
|
|
|
24
26
|
export { default as useFocus } from './hooks/use-focus.js';
|
|
25
27
|
export { default as useFocusManager } from './hooks/use-focus-manager.js';
|
|
26
28
|
export { default as useIsScreenReaderEnabled } from './hooks/use-is-screen-reader-enabled.js';
|
|
29
|
+
export type { UseScrollReturn, ScrollOptions } from './hooks/use-scroll.js';
|
|
30
|
+
export { default as useScroll } from './hooks/use-scroll.js';
|
|
27
31
|
export { default as measureElement } from './measure-element.js';
|
|
28
32
|
export type { DOMElement } from './dom.js';
|
package/build/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as render } from './render.js';
|
|
2
2
|
export { default as Box } from './components/Box.js';
|
|
3
|
+
export { default as ScrollBox } from './components/ScrollBox.js';
|
|
3
4
|
export { default as Text } from './components/Text.js';
|
|
4
5
|
export { default as Static } from './components/Static.js';
|
|
5
6
|
export { default as Transform } from './components/Transform.js';
|
|
@@ -13,5 +14,6 @@ export { default as useStderr } from './hooks/use-stderr.js';
|
|
|
13
14
|
export { default as useFocus } from './hooks/use-focus.js';
|
|
14
15
|
export { default as useFocusManager } from './hooks/use-focus-manager.js';
|
|
15
16
|
export { default as useIsScreenReaderEnabled } from './hooks/use-is-screen-reader-enabled.js';
|
|
17
|
+
export { default as useScroll } from './hooks/use-scroll.js';
|
|
16
18
|
export { default as measureElement } from './measure-element.js';
|
|
17
19
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAC,OAAO,IAAI,GAAG,EAAC,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,sBAAsB,CAAC;AAMrD,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,OAAO,IAAI,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAC,OAAO,IAAI,wBAAwB,EAAC,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAC,OAAO,IAAI,GAAG,EAAC,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,sBAAsB,CAAC;AAMrD,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,OAAO,IAAI,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAC,OAAO,IAAI,wBAAwB,EAAC,MAAM,yCAAyC,CAAC;AAE5F,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,sBAAsB,CAAC"}
|
package/build/ink.d.ts
CHANGED
package/build/ink.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import React from
|
|
3
|
-
import { throttle } from
|
|
4
|
-
import ansiEscapes from
|
|
5
|
-
import isInCi from
|
|
6
|
-
import autoBind from
|
|
7
|
-
import signalExit from
|
|
8
|
-
import patchConsole from
|
|
9
|
-
import { LegacyRoot } from
|
|
10
|
-
import Yoga from
|
|
11
|
-
import wrapAnsi from
|
|
12
|
-
import reconciler from
|
|
13
|
-
import render from
|
|
14
|
-
import * as dom from
|
|
15
|
-
import logUpdate from
|
|
16
|
-
import instances from
|
|
17
|
-
import App from
|
|
18
|
-
import { accessibilityContext as AccessibilityContext } from
|
|
1
|
+
import process from 'node:process';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { throttle } from 'es-toolkit/compat';
|
|
4
|
+
import ansiEscapes from 'ansi-escapes';
|
|
5
|
+
import isInCi from 'is-in-ci';
|
|
6
|
+
import autoBind from 'auto-bind';
|
|
7
|
+
import signalExit from 'signal-exit';
|
|
8
|
+
import patchConsole from 'patch-console';
|
|
9
|
+
import { LegacyRoot } from 'react-reconciler/constants.js';
|
|
10
|
+
import Yoga from 'yoga-layout';
|
|
11
|
+
import wrapAnsi from 'wrap-ansi';
|
|
12
|
+
import reconciler from './reconciler.js';
|
|
13
|
+
import render from './renderer.js';
|
|
14
|
+
import * as dom from './dom.js';
|
|
15
|
+
import logUpdate from './log-update.js';
|
|
16
|
+
import instances from './instances.js';
|
|
17
|
+
import App from './components/App.js';
|
|
18
|
+
import { accessibilityContext as AccessibilityContext } from './components/AccessibilityContext.js';
|
|
19
19
|
const noop = () => { };
|
|
20
20
|
export default class Ink {
|
|
21
21
|
options;
|
|
@@ -38,11 +38,11 @@ export default class Ink {
|
|
|
38
38
|
constructor(options) {
|
|
39
39
|
autoBind(this);
|
|
40
40
|
this.options = options;
|
|
41
|
-
this.rootNode = dom.createNode(
|
|
41
|
+
this.rootNode = dom.createNode('ink-root');
|
|
42
42
|
this.rootNode.onComputeLayout = this.calculateLayout;
|
|
43
43
|
this.isScreenReaderEnabled =
|
|
44
44
|
options.isScreenReaderEnabled ??
|
|
45
|
-
process.env[
|
|
45
|
+
process.env['INK_SCREEN_READER'] === 'true';
|
|
46
46
|
const unthrottled = options.debug || this.isScreenReaderEnabled;
|
|
47
47
|
const maxFps = options.maxFps ?? 30;
|
|
48
48
|
const renderThrottleMs = maxFps > 0 ? Math.max(1, Math.ceil(1000 / maxFps)) : 0;
|
|
@@ -65,32 +65,32 @@ export default class Ink {
|
|
|
65
65
|
// Ignore last render after unmounting a tree to prevent empty output before exit
|
|
66
66
|
this.isUnmounted = false;
|
|
67
67
|
// Store last output to only rerender when needed
|
|
68
|
-
this.lastOutput =
|
|
68
|
+
this.lastOutput = '';
|
|
69
69
|
this.lastOutputHeight = 0;
|
|
70
70
|
this.lastTerminalWidth = this.getTerminalWidth();
|
|
71
71
|
// This variable is used only in debug mode to store full static output
|
|
72
72
|
// so that it's rerendered every time, not just new static parts, like in non-debug mode
|
|
73
|
-
this.fullStaticOutput =
|
|
73
|
+
this.fullStaticOutput = '';
|
|
74
74
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
75
|
-
this.container = reconciler.createContainer(this.rootNode, LegacyRoot, null, false, null,
|
|
75
|
+
this.container = reconciler.createContainer(this.rootNode, LegacyRoot, null, false, null, 'id', () => { }, () => { }, () => { }, () => { }, null);
|
|
76
76
|
// Unmount when process exits
|
|
77
77
|
this.unsubscribeExit = signalExit(this.unmount, { alwaysLast: false });
|
|
78
|
-
if (process.env[
|
|
78
|
+
if (process.env['DEV'] === 'true') {
|
|
79
79
|
reconciler.injectIntoDevTools({
|
|
80
80
|
bundleType: 0,
|
|
81
81
|
// Reporting React DOM's version, not Ink's
|
|
82
82
|
// See https://github.com/facebook/react/issues/16666#issuecomment-532639905
|
|
83
|
-
version:
|
|
84
|
-
rendererPackageName:
|
|
83
|
+
version: '16.13.1',
|
|
84
|
+
rendererPackageName: 'ink',
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
if (options.patchConsole) {
|
|
88
88
|
this.patchConsole();
|
|
89
89
|
}
|
|
90
90
|
if (!isInCi) {
|
|
91
|
-
options.stdout.on(
|
|
91
|
+
options.stdout.on('resize', this.resized);
|
|
92
92
|
this.unsubscribeResize = () => {
|
|
93
|
-
options.stdout.off(
|
|
93
|
+
options.stdout.off('resize', this.resized);
|
|
94
94
|
};
|
|
95
95
|
}
|
|
96
96
|
}
|
|
@@ -104,7 +104,7 @@ export default class Ink {
|
|
|
104
104
|
if (currentWidth < this.lastTerminalWidth) {
|
|
105
105
|
// We clear the screen when decreasing terminal width to prevent duplicate overlapping re-renders.
|
|
106
106
|
this.log.clear();
|
|
107
|
-
this.lastOutput =
|
|
107
|
+
this.lastOutput = '';
|
|
108
108
|
}
|
|
109
109
|
this.calculateLayout();
|
|
110
110
|
this.onRender();
|
|
@@ -126,7 +126,7 @@ export default class Ink {
|
|
|
126
126
|
const { output, outputHeight, staticOutput } = render(this.rootNode, this.isScreenReaderEnabled);
|
|
127
127
|
this.options.onRender?.({ renderTime: performance.now() - startTime });
|
|
128
128
|
// If <Static> output isn't empty, it means new children have been added to it
|
|
129
|
-
const hasStaticOutput = staticOutput && staticOutput !==
|
|
129
|
+
const hasStaticOutput = staticOutput && staticOutput !== '\n';
|
|
130
130
|
if (this.options.debug) {
|
|
131
131
|
if (hasStaticOutput) {
|
|
132
132
|
this.fullStaticOutput += staticOutput;
|
|
@@ -147,7 +147,7 @@ export default class Ink {
|
|
|
147
147
|
// We need to erase the main output before writing new static output
|
|
148
148
|
const erase = this.lastOutputHeight > 0
|
|
149
149
|
? ansiEscapes.eraseLines(this.lastOutputHeight)
|
|
150
|
-
:
|
|
150
|
+
: '';
|
|
151
151
|
this.options.stdout.write(erase + staticOutput);
|
|
152
152
|
// After erasing, the last output is gone, so we should reset its height
|
|
153
153
|
this.lastOutputHeight = 0;
|
|
@@ -167,19 +167,19 @@ export default class Ink {
|
|
|
167
167
|
else {
|
|
168
168
|
const erase = this.lastOutputHeight > 0
|
|
169
169
|
? ansiEscapes.eraseLines(this.lastOutputHeight)
|
|
170
|
-
:
|
|
170
|
+
: '';
|
|
171
171
|
this.options.stdout.write(erase + wrappedOutput);
|
|
172
172
|
}
|
|
173
173
|
this.lastOutput = output;
|
|
174
174
|
this.lastOutputHeight =
|
|
175
|
-
wrappedOutput ===
|
|
175
|
+
wrappedOutput === '' ? 0 : wrappedOutput.split('\n').length;
|
|
176
176
|
return;
|
|
177
177
|
}
|
|
178
178
|
if (hasStaticOutput) {
|
|
179
179
|
this.fullStaticOutput += staticOutput;
|
|
180
180
|
}
|
|
181
181
|
if (this.lastOutputHeight >= this.options.stdout.rows) {
|
|
182
|
-
this.options.stdout.write(ansiEscapes.clearTerminal + this.fullStaticOutput + output
|
|
182
|
+
this.options.stdout.write(ansiEscapes.clearTerminal + this.fullStaticOutput + output);
|
|
183
183
|
this.lastOutput = output;
|
|
184
184
|
this.lastOutputHeight = outputHeight;
|
|
185
185
|
this.log.sync(output);
|
|
@@ -248,16 +248,16 @@ export default class Ink {
|
|
|
248
248
|
this.calculateLayout();
|
|
249
249
|
this.onRender();
|
|
250
250
|
this.unsubscribeExit();
|
|
251
|
-
if (typeof this.restoreConsole ===
|
|
251
|
+
if (typeof this.restoreConsole === 'function') {
|
|
252
252
|
this.restoreConsole();
|
|
253
253
|
}
|
|
254
|
-
if (typeof this.unsubscribeResize ===
|
|
254
|
+
if (typeof this.unsubscribeResize === 'function') {
|
|
255
255
|
this.unsubscribeResize();
|
|
256
256
|
}
|
|
257
257
|
// CIs don't handle erasing ansi escapes well, so it's better to
|
|
258
258
|
// only render last frame of non-static output
|
|
259
259
|
if (isInCi) {
|
|
260
|
-
this.options.stdout.write(this.lastOutput +
|
|
260
|
+
this.options.stdout.write(this.lastOutput + '\n');
|
|
261
261
|
}
|
|
262
262
|
else if (!this.options.debug) {
|
|
263
263
|
this.log.done();
|
|
@@ -294,11 +294,11 @@ export default class Ink {
|
|
|
294
294
|
return;
|
|
295
295
|
}
|
|
296
296
|
this.restoreConsole = patchConsole((stream, data) => {
|
|
297
|
-
if (stream ===
|
|
297
|
+
if (stream === 'stdout') {
|
|
298
298
|
this.writeToStdout(data);
|
|
299
299
|
}
|
|
300
|
-
if (stream ===
|
|
301
|
-
const isReactMessage = data.startsWith(
|
|
300
|
+
if (stream === 'stderr') {
|
|
301
|
+
const isReactMessage = data.startsWith('The above error occurred');
|
|
302
302
|
if (!isReactMessage) {
|
|
303
303
|
this.writeToStderr(data);
|
|
304
304
|
}
|
package/build/ink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ink.js","sourceRoot":"","sources":["../src/ink.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ink.js","sourceRoot":"","sources":["../src/ink.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,15 @@ export declare const renderNodeToScreenReaderOutput: (node: DOMElement, options?
|
|
|
5
5
|
parentRole?: string;
|
|
6
6
|
skipStaticElements?: boolean;
|
|
7
7
|
}) => string;
|
|
8
|
+
export interface ScrollOffset {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
}
|
|
8
12
|
declare const renderNodeToOutput: (node: DOMElement, output: Output, options: {
|
|
9
13
|
offsetX?: number;
|
|
10
14
|
offsetY?: number;
|
|
11
15
|
transformers?: OutputTransformer[];
|
|
12
16
|
skipStaticElements: boolean;
|
|
17
|
+
scrollOffset?: ScrollOffset;
|
|
13
18
|
}) => void;
|
|
14
19
|
export default renderNodeToOutput;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import widestLine from 'widest-line';
|
|
2
2
|
import indentString from 'indent-string';
|
|
3
|
+
import sliceAnsi from 'slice-ansi';
|
|
3
4
|
import Yoga from 'yoga-layout';
|
|
4
5
|
import wrapText from './wrap-text.js';
|
|
5
6
|
import getMaxWidth from './get-max-width.js';
|
|
@@ -67,9 +68,8 @@ export const renderNodeToScreenReaderOutput = (node, options = {}) => {
|
|
|
67
68
|
}
|
|
68
69
|
return output;
|
|
69
70
|
};
|
|
70
|
-
// After nodes are laid out, render each to output object, which later gets rendered to terminal
|
|
71
71
|
const renderNodeToOutput = (node, output, options) => {
|
|
72
|
-
const { offsetX = 0, offsetY = 0, transformers = [], skipStaticElements, } = options;
|
|
72
|
+
const { offsetX = 0, offsetY = 0, transformers = [], skipStaticElements, scrollOffset = { x: 0, y: 0 }, } = options;
|
|
73
73
|
if (skipStaticElements && node.internal_static) {
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
@@ -92,12 +92,34 @@ const renderNodeToOutput = (node, output, options) => {
|
|
|
92
92
|
if (text.length > 0) {
|
|
93
93
|
const currentWidth = widestLine(text);
|
|
94
94
|
const maxWidth = getMaxWidth(yogaNode);
|
|
95
|
-
if
|
|
95
|
+
// Check if we're in a scrollable container
|
|
96
|
+
const isHorizontallyScrollable = scrollOffset.x !== 0;
|
|
97
|
+
const isVerticallyScrollable = scrollOffset.y !== 0;
|
|
98
|
+
// For horizontally scrollable content, don't wrap text - let it overflow
|
|
99
|
+
if (!isHorizontallyScrollable && currentWidth > maxWidth) {
|
|
96
100
|
const textWrap = node.style.textWrap ?? 'wrap';
|
|
97
101
|
text = wrapText(text, maxWidth, textWrap);
|
|
98
102
|
}
|
|
99
103
|
text = applyPaddingToText(node, text);
|
|
100
|
-
|
|
104
|
+
// Apply scroll offset for scrollable containers
|
|
105
|
+
if (isHorizontallyScrollable || isVerticallyScrollable) {
|
|
106
|
+
const lines = text.split('\n');
|
|
107
|
+
// Apply vertical scroll offset
|
|
108
|
+
const scrolledLines = isVerticallyScrollable ?
|
|
109
|
+
lines.slice(Math.max(0, scrollOffset.y)) : lines;
|
|
110
|
+
// Apply horizontal scroll offset
|
|
111
|
+
const scrolledText = scrolledLines.map((line) => {
|
|
112
|
+
if (isHorizontallyScrollable) {
|
|
113
|
+
// For horizontal scrolling, we need to apply the offset character by character
|
|
114
|
+
return sliceAnsi(line, scrollOffset.x);
|
|
115
|
+
}
|
|
116
|
+
return line;
|
|
117
|
+
}).join('\n');
|
|
118
|
+
output.write(x, y, scrolledText, { transformers: newTransformers });
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
output.write(x, y, text, { transformers: newTransformers });
|
|
122
|
+
}
|
|
101
123
|
}
|
|
102
124
|
return;
|
|
103
125
|
}
|
|
@@ -105,21 +127,25 @@ const renderNodeToOutput = (node, output, options) => {
|
|
|
105
127
|
if (node.nodeName === 'ink-box') {
|
|
106
128
|
renderBackground(x, y, node, output);
|
|
107
129
|
renderBorder(x, y, node, output);
|
|
108
|
-
const
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
130
|
+
const overflowX = node.style.overflowX ?? node.style.overflow ?? 'visible';
|
|
131
|
+
const overflowY = node.style.overflowY ?? node.style.overflow ?? 'visible';
|
|
132
|
+
const scrollX = overflowX === 'scroll';
|
|
133
|
+
const scrollY = overflowY === 'scroll';
|
|
134
|
+
const clipHorizontally = overflowX === 'hidden';
|
|
135
|
+
const clipVertically = overflowY === 'hidden';
|
|
136
|
+
if (scrollX || scrollY || clipHorizontally || clipVertically) {
|
|
137
|
+
const x1 = (scrollX || clipHorizontally)
|
|
112
138
|
? x + yogaNode.getComputedBorder(Yoga.EDGE_LEFT)
|
|
113
139
|
: undefined;
|
|
114
|
-
const x2 = clipHorizontally
|
|
140
|
+
const x2 = (scrollX || clipHorizontally)
|
|
115
141
|
? x +
|
|
116
142
|
yogaNode.getComputedWidth() -
|
|
117
143
|
yogaNode.getComputedBorder(Yoga.EDGE_RIGHT)
|
|
118
144
|
: undefined;
|
|
119
|
-
const y1 = clipVertically
|
|
145
|
+
const y1 = (scrollY || clipVertically)
|
|
120
146
|
? y + yogaNode.getComputedBorder(Yoga.EDGE_TOP)
|
|
121
147
|
: undefined;
|
|
122
|
-
const y2 = clipVertically
|
|
148
|
+
const y2 = (scrollY || clipVertically)
|
|
123
149
|
? y +
|
|
124
150
|
yogaNode.getComputedHeight() -
|
|
125
151
|
yogaNode.getComputedBorder(Yoga.EDGE_BOTTOM)
|
|
@@ -129,12 +155,23 @@ const renderNodeToOutput = (node, output, options) => {
|
|
|
129
155
|
}
|
|
130
156
|
}
|
|
131
157
|
if (node.nodeName === 'ink-root' || node.nodeName === 'ink-box') {
|
|
158
|
+
// Calculate new scroll offset for scrollable containers
|
|
159
|
+
const overflowX = node.style.overflowX ?? node.style.overflow ?? 'visible';
|
|
160
|
+
const overflowY = node.style.overflowY ?? node.style.overflow ?? 'visible';
|
|
161
|
+
const scrollX = overflowX === 'scroll';
|
|
162
|
+
const scrollY = overflowY === 'scroll';
|
|
163
|
+
// Get scroll offset from node internal state or use current scrollOffset
|
|
164
|
+
const currentScrollOffset = node.internal_scrollOffset || scrollOffset;
|
|
165
|
+
const childScrollOffset = scrollX || scrollY ?
|
|
166
|
+
{ x: scrollX ? currentScrollOffset.x : 0, y: scrollY ? currentScrollOffset.y : 0 } :
|
|
167
|
+
currentScrollOffset;
|
|
132
168
|
for (const childNode of node.childNodes) {
|
|
133
169
|
renderNodeToOutput(childNode, output, {
|
|
134
170
|
offsetX: x,
|
|
135
171
|
offsetY: y,
|
|
136
172
|
transformers: newTransformers,
|
|
137
173
|
skipStaticElements,
|
|
174
|
+
scrollOffset: childScrollOffset,
|
|
138
175
|
});
|
|
139
176
|
}
|
|
140
177
|
if (clipped) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-node-to-output.js","sourceRoot":"","sources":["../src/render-node-to-output.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"render-node-to-output.js","sourceRoot":"","sources":["../src/render-node-to-output.ts"],"names":[],"mappings":"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"}
|
package/build/styles.d.ts
CHANGED
|
@@ -216,19 +216,19 @@ export type Styles = {
|
|
|
216
216
|
|
|
217
217
|
@default 'visible'
|
|
218
218
|
*/
|
|
219
|
-
readonly overflow?: 'visible' | 'hidden';
|
|
219
|
+
readonly overflow?: 'visible' | 'hidden' | 'scroll';
|
|
220
220
|
/**
|
|
221
221
|
Behavior for an element's overflow in the horizontal direction.
|
|
222
222
|
|
|
223
223
|
@default 'visible'
|
|
224
224
|
*/
|
|
225
|
-
readonly overflowX?: 'visible' | 'hidden';
|
|
225
|
+
readonly overflowX?: 'visible' | 'hidden' | 'scroll';
|
|
226
226
|
/**
|
|
227
227
|
Behavior for an element's overflow in the vertical direction.
|
|
228
228
|
|
|
229
229
|
@default 'visible'
|
|
230
230
|
*/
|
|
231
|
-
readonly overflowY?: 'visible' | 'hidden';
|
|
231
|
+
readonly overflowY?: 'visible' | 'hidden' | 'scroll';
|
|
232
232
|
/**
|
|
233
233
|
Background color for the element.
|
|
234
234
|
|
package/package.json
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuvin/ink",
|
|
3
|
-
"version": "6.5.
|
|
3
|
+
"version": "6.5.2-test-scroll",
|
|
4
4
|
"description": "React for CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"repository":
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/marschhuynh/ink.git"
|
|
9
|
+
},
|
|
7
10
|
"author": {
|
|
8
11
|
"name": "Vadim Demedes",
|
|
9
12
|
"email": "vadimdemedes@hey.com",
|
|
@@ -192,4 +195,4 @@
|
|
|
192
195
|
]
|
|
193
196
|
},
|
|
194
197
|
"prettier": "@vdemedes/prettier-config"
|
|
195
|
-
}
|
|
198
|
+
}
|