@nuvin/ink 6.5.2-test-scroll-1 → 6.5.3-1
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/ScrollBox.d.ts +86 -56
- package/build/components/ScrollBox.js +20 -58
- package/build/components/ScrollBox.js.map +1 -1
- package/build/components/Static.js +1 -1
- package/build/components/Static.js.map +1 -1
- package/build/dom.d.ts +4 -7
- package/build/dom.js.map +1 -1
- package/build/hooks/use-scroll.d.ts +13 -74
- package/build/hooks/use-scroll.js +4 -9
- package/build/hooks/use-scroll.js.map +1 -1
- package/build/index.d.ts +3 -3
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/render-node-to-output.d.ts +0 -5
- package/build/render-node-to-output.js +26 -50
- package/build/render-node-to-output.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,62 +1,92 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { type Except } from 'type-fest';
|
|
3
|
+
import { type ScrollState } from '../hooks/use-scroll.js';
|
|
2
4
|
import { type DOMElement } from '../dom.js';
|
|
3
5
|
import { type Props as BoxProps } from './Box.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
6
|
+
export type ScrollBoxProps = Except<BoxProps, 'overflow' | 'overflowX' | 'overflowY'> & {
|
|
7
|
+
readonly scrollX?: boolean;
|
|
8
|
+
readonly scrollY?: boolean;
|
|
9
|
+
readonly contentWidth?: number;
|
|
10
|
+
readonly contentHeight?: number;
|
|
11
|
+
readonly initialScrollX?: number;
|
|
12
|
+
readonly initialScrollY?: number;
|
|
13
|
+
readonly onScroll?: (state: ScrollState) => void;
|
|
14
|
+
};
|
|
15
|
+
export type ScrollBoxRef = {
|
|
16
|
+
node: DOMElement | undefined;
|
|
17
|
+
scroll: ScrollState;
|
|
18
|
+
};
|
|
19
|
+
declare const ScrollBox: React.ForwardRefExoticComponent<{
|
|
20
|
+
readonly position?: "absolute" | "relative" | undefined;
|
|
21
|
+
readonly columnGap?: number | undefined;
|
|
22
|
+
readonly rowGap?: number | undefined;
|
|
23
|
+
readonly gap?: number | undefined;
|
|
24
|
+
readonly margin?: number | undefined;
|
|
25
|
+
readonly marginX?: number | undefined;
|
|
26
|
+
readonly marginY?: number | undefined;
|
|
27
|
+
readonly marginTop?: number | undefined;
|
|
28
|
+
readonly marginBottom?: number | undefined;
|
|
29
|
+
readonly marginLeft?: number | undefined;
|
|
30
|
+
readonly marginRight?: number | undefined;
|
|
31
|
+
readonly padding?: number | undefined;
|
|
32
|
+
readonly paddingX?: number | undefined;
|
|
33
|
+
readonly paddingY?: number | undefined;
|
|
34
|
+
readonly paddingTop?: number | undefined;
|
|
35
|
+
readonly paddingBottom?: number | undefined;
|
|
36
|
+
readonly paddingLeft?: number | undefined;
|
|
37
|
+
readonly paddingRight?: number | undefined;
|
|
38
|
+
readonly flexGrow?: number | undefined;
|
|
39
|
+
readonly flexShrink?: number | undefined;
|
|
40
|
+
readonly flexDirection?: "row" | "column" | "row-reverse" | "column-reverse" | undefined;
|
|
41
|
+
readonly flexBasis?: number | string | undefined;
|
|
42
|
+
readonly flexWrap?: "nowrap" | "wrap" | "wrap-reverse" | undefined;
|
|
43
|
+
readonly alignItems?: "flex-start" | "center" | "flex-end" | "stretch" | undefined;
|
|
44
|
+
readonly alignSelf?: "flex-start" | "center" | "flex-end" | "auto" | undefined;
|
|
45
|
+
readonly justifyContent?: "flex-start" | "flex-end" | "space-between" | "space-around" | "space-evenly" | "center" | undefined;
|
|
46
|
+
readonly width?: number | string | undefined;
|
|
47
|
+
readonly height?: number | string | undefined;
|
|
48
|
+
readonly minWidth?: number | string | undefined;
|
|
49
|
+
readonly minHeight?: number | string | undefined;
|
|
50
|
+
readonly display?: "flex" | "none" | undefined;
|
|
51
|
+
readonly borderStyle?: (keyof import("cli-boxes").Boxes | import("cli-boxes").BoxStyle) | undefined;
|
|
52
|
+
readonly borderTop?: boolean | undefined;
|
|
53
|
+
readonly borderBottom?: boolean | undefined;
|
|
54
|
+
readonly borderLeft?: boolean | undefined;
|
|
55
|
+
readonly borderRight?: boolean | undefined;
|
|
56
|
+
readonly borderColor?: import("type-fest").LiteralUnion<import("ansi-styles").ForegroundColorName, string> | undefined;
|
|
57
|
+
readonly borderTopColor?: import("type-fest").LiteralUnion<import("ansi-styles").ForegroundColorName, string> | undefined;
|
|
58
|
+
readonly borderBottomColor?: import("type-fest").LiteralUnion<import("ansi-styles").ForegroundColorName, string> | undefined;
|
|
59
|
+
readonly borderLeftColor?: import("type-fest").LiteralUnion<import("ansi-styles").ForegroundColorName, string> | undefined;
|
|
60
|
+
readonly borderRightColor?: import("type-fest").LiteralUnion<import("ansi-styles").ForegroundColorName, string> | undefined;
|
|
61
|
+
readonly borderDimColor?: boolean | undefined;
|
|
62
|
+
readonly borderTopDimColor?: boolean | undefined;
|
|
63
|
+
readonly borderBottomDimColor?: boolean | undefined;
|
|
64
|
+
readonly borderLeftDimColor?: boolean | undefined;
|
|
65
|
+
readonly borderRightDimColor?: boolean | undefined;
|
|
66
|
+
readonly backgroundColor?: import("type-fest").LiteralUnion<import("ansi-styles").ForegroundColorName, string> | undefined;
|
|
67
|
+
readonly 'aria-label'?: string | undefined;
|
|
68
|
+
readonly 'aria-hidden'?: boolean | undefined;
|
|
69
|
+
readonly 'aria-role'?: "button" | "checkbox" | "combobox" | "list" | "listbox" | "listitem" | "menu" | "menuitem" | "option" | "progressbar" | "radio" | "radiogroup" | "tab" | "tablist" | "table" | "textbox" | "timer" | "toolbar" | undefined;
|
|
70
|
+
readonly 'aria-state'?: {
|
|
71
|
+
readonly busy?: boolean;
|
|
72
|
+
readonly checked?: boolean;
|
|
73
|
+
readonly disabled?: boolean;
|
|
74
|
+
readonly expanded?: boolean;
|
|
75
|
+
readonly multiline?: boolean;
|
|
76
|
+
readonly multiselectable?: boolean;
|
|
77
|
+
readonly readonly?: boolean;
|
|
78
|
+
readonly required?: boolean;
|
|
79
|
+
readonly selected?: boolean;
|
|
80
|
+
} | undefined;
|
|
81
|
+
} & {
|
|
82
|
+
readonly scrollX?: boolean;
|
|
83
|
+
readonly scrollY?: boolean;
|
|
84
|
+
readonly contentWidth?: number;
|
|
85
|
+
readonly contentHeight?: number;
|
|
86
|
+
readonly initialScrollX?: number;
|
|
87
|
+
readonly initialScrollY?: number;
|
|
88
|
+
readonly onScroll?: (state: ScrollState) => void;
|
|
89
|
+
} & {
|
|
60
90
|
children?: React.ReactNode | undefined;
|
|
61
91
|
} & React.RefAttributes<ScrollBoxRef>>;
|
|
62
92
|
export default ScrollBox;
|
|
@@ -1,75 +1,37 @@
|
|
|
1
|
-
import React, { forwardRef, useRef, useEffect, useImperativeHandle } from 'react';
|
|
2
|
-
import Box from './Box.js';
|
|
1
|
+
import React, { forwardRef, useRef, useEffect, useImperativeHandle, useLayoutEffect, } from 'react';
|
|
3
2
|
import { useScroll } from '../hooks/use-scroll.js';
|
|
4
|
-
|
|
5
|
-
|
|
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) => {
|
|
3
|
+
import Box from './Box.js';
|
|
4
|
+
const ScrollBox = forwardRef(({ children, width, height, scrollX = false, scrollY = true, contentWidth, contentHeight, initialScrollX = 0, initialScrollY = 0, onScroll, ...boxProps }, ref) => {
|
|
20
5
|
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
6
|
const containerWidth = typeof width === 'number' ? width : 0;
|
|
29
7
|
const containerHeight = typeof height === 'number' ? height : 0;
|
|
30
|
-
const
|
|
31
|
-
scrollX
|
|
32
|
-
scrollY
|
|
33
|
-
contentWidth: contentWidth
|
|
34
|
-
contentHeight: contentHeight
|
|
8
|
+
const scroll = useScroll({
|
|
9
|
+
scrollX,
|
|
10
|
+
scrollY,
|
|
11
|
+
contentWidth: contentWidth ?? containerWidth,
|
|
12
|
+
contentHeight: contentHeight ?? containerHeight,
|
|
35
13
|
containerWidth,
|
|
36
14
|
containerHeight,
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
y: finalScrollY ? initialScroll[1] : undefined
|
|
15
|
+
}, {
|
|
16
|
+
x: scrollX ? initialScrollX : undefined,
|
|
17
|
+
y: scrollY ? initialScrollY : undefined,
|
|
41
18
|
});
|
|
42
|
-
// Notify parent of scroll changes
|
|
43
19
|
useEffect(() => {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
}, [scroll.scrollLeft, scroll.scrollTop, onScroll]);
|
|
48
|
-
// Expose ref with scroll state and methods
|
|
20
|
+
onScroll?.(scroll);
|
|
21
|
+
}, [scroll.scrollLeft, scroll.scrollTop, onScroll, scroll]);
|
|
49
22
|
useImperativeHandle(ref, () => ({
|
|
50
|
-
|
|
23
|
+
node: boxRef.current ?? undefined,
|
|
51
24
|
scroll,
|
|
52
25
|
}), [scroll]);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (boxRef.current && (finalScrollX || finalScrollY)) {
|
|
26
|
+
useLayoutEffect(() => {
|
|
27
|
+
if (boxRef.current) {
|
|
56
28
|
boxRef.current.internal_scrollOffset = {
|
|
57
|
-
x:
|
|
58
|
-
y:
|
|
29
|
+
x: scrollX ? scroll.scrollLeft : 0,
|
|
30
|
+
y: scrollY ? scroll.scrollTop : 0,
|
|
59
31
|
};
|
|
60
32
|
}
|
|
61
|
-
}, [scroll.scrollLeft, scroll.scrollTop,
|
|
62
|
-
|
|
63
|
-
// by setting the internal_scrollOffset directly on the DOM element
|
|
64
|
-
const allBoxProps = {
|
|
65
|
-
width,
|
|
66
|
-
height,
|
|
67
|
-
overflow: (finalScrollX || finalScrollY) ? 'scroll' : overflow,
|
|
68
|
-
overflowX: finalScrollX ? 'scroll' : overflowX,
|
|
69
|
-
overflowY: finalScrollY ? 'scroll' : overflowY,
|
|
70
|
-
...boxProps
|
|
71
|
-
};
|
|
72
|
-
return (React.createElement(Box, { ref: boxRef, ...allBoxProps }, children));
|
|
33
|
+
}, [scroll.scrollLeft, scroll.scrollTop, scrollX, scrollY]);
|
|
34
|
+
return (React.createElement(Box, { ref: boxRef, width: width, height: height, overflowX: scrollX ? 'scroll' : 'visible', overflowY: scrollY ? 'scroll' : 'visible', ...boxProps }, children));
|
|
73
35
|
});
|
|
74
36
|
ScrollBox.displayName = 'ScrollBox';
|
|
75
37
|
export default ScrollBox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollBox.js","sourceRoot":"","sources":["../../src/components/ScrollBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ScrollBox.js","sourceRoot":"","sources":["../../src/components/ScrollBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACb,UAAU,EACV,MAAM,EACN,SAAS,EACT,mBAAmB,EACnB,eAAe,GAEf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAC,SAAS,EAAmB,MAAM,wBAAwB,CAAC;AAEnE,OAAO,GAA6B,MAAM,UAAU,CAAC;AAoBrD,MAAM,SAAS,GAAG,UAAU,CAC3B,CACC,EACC,QAAQ,EACR,KAAK,EACL,MAAM,EACN,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,IAAI,EACd,YAAY,EACZ,aAAa,EACb,cAAc,GAAG,CAAC,EAClB,cAAc,GAAG,CAAC,EAClB,QAAQ,EACR,GAAG,QAAQ,EACX,EACD,GAAG,EACF,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,CAAa,IAAI,CAAC,CAAC;IAExC,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,MAAM,GAAG,SAAS,CACvB;QACC,OAAO;QACP,OAAO;QACP,YAAY,EAAE,YAAY,IAAI,cAAc;QAC5C,aAAa,EAAE,aAAa,IAAI,eAAe;QAC/C,cAAc;QACd,eAAe;KACf,EACD;QACC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;QACvC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;KACvC,CACD,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACd,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5D,mBAAmB,CAClB,GAAG,EACH,GAAG,EAAE,CAAC,CAAC;QACN,IAAI,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS;QACjC,MAAM;KACN,CAAC,EACF,CAAC,MAAM,CAAC,CACR,CAAC;IAEF,eAAe,CAAC,GAAG,EAAE;QACpB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,CAAC,qBAAqB,GAAG;gBACtC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aACjC,CAAC;QACH,CAAC;IACF,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5D,OAAO,CACN,oBAAC,GAAG,IACH,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACzC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,KACrC,QAAQ,IAEX,QAAQ,CACJ,CACN,CAAC;AACH,CAAC,CACD,CAAC;AAEF,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AAEpC,eAAe,SAAS,CAAC"}
|
|
@@ -15,7 +15,7 @@ export default function Static(props) {
|
|
|
15
15
|
useLayoutEffect(() => {
|
|
16
16
|
setIndex(items.length);
|
|
17
17
|
}, [items.length]);
|
|
18
|
-
const children = itemsToRender.map((item, itemIndex) => {
|
|
18
|
+
const children = itemsToRender.map(async (item, itemIndex) => {
|
|
19
19
|
return render(item, index + itemIndex);
|
|
20
20
|
});
|
|
21
21
|
const style = useMemo(() => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Static.js","sourceRoot":"","sources":["../../src/components/Static.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAiB,MAAM,OAAO,CAAC;AAoBhF;;;;;;EAME;AACF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAI,KAAe;IAChD,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAC,GAAG,KAAK,CAAC;IAC5D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,aAAa,GAAQ,OAAO,CAAC,GAAG,EAAE;QACvC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnB,eAAe,CAAC,GAAG,EAAE;QACpB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"Static.js","sourceRoot":"","sources":["../../src/components/Static.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAiB,MAAM,OAAO,CAAC;AAoBhF;;;;;;EAME;AACF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAI,KAAe;IAChD,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAC,GAAG,KAAK,CAAC;IAC5D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,aAAa,GAAQ,OAAO,CAAC,GAAG,EAAE;QACvC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnB,eAAe,CAAC,GAAG,EAAE;QACpB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;QAC5D,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAW,OAAO,CAC5B,GAAG,EAAE,CAAC,CAAC;QACN,QAAQ,EAAE,UAAU;QACpB,aAAa,EAAE,QAAQ;QACvB,GAAG,WAAW;KACd,CAAC,EACF,CAAC,WAAW,CAAC,CACb,CAAC;IAEF,OAAO,CACN,iCAAS,eAAe,QAAC,KAAK,EAAE,KAAK,IACnC,QAAQ,CACA,CACV,CAAC;AACH,CAAC"}
|
package/build/dom.d.ts
CHANGED
|
@@ -5,6 +5,10 @@ type InkNode = {
|
|
|
5
5
|
parentNode: DOMElement | undefined;
|
|
6
6
|
yogaNode?: YogaNode;
|
|
7
7
|
internal_static?: boolean;
|
|
8
|
+
internal_scrollOffset?: {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
};
|
|
8
12
|
style: Styles;
|
|
9
13
|
};
|
|
10
14
|
export type TextName = '#text';
|
|
@@ -29,13 +33,6 @@ export type DOMElement = {
|
|
|
29
33
|
selected?: boolean;
|
|
30
34
|
};
|
|
31
35
|
};
|
|
32
|
-
/**
|
|
33
|
-
* Internal scroll offset for scrollable containers
|
|
34
|
-
*/
|
|
35
|
-
internal_scrollOffset?: {
|
|
36
|
-
x: number;
|
|
37
|
-
y: number;
|
|
38
|
-
};
|
|
39
36
|
isStaticDirty?: boolean;
|
|
40
37
|
staticNode?: DOMElement;
|
|
41
38
|
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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"}
|
|
@@ -1,89 +1,28 @@
|
|
|
1
|
-
export
|
|
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
|
-
*/
|
|
1
|
+
export type ScrollState = {
|
|
33
2
|
scrollLeft: number;
|
|
34
|
-
/**
|
|
35
|
-
* Current vertical scroll position
|
|
36
|
-
*/
|
|
37
3
|
scrollTop: number;
|
|
38
|
-
/**
|
|
39
|
-
* Maximum horizontal scroll position
|
|
40
|
-
*/
|
|
41
4
|
maxScrollLeft: number;
|
|
42
|
-
/**
|
|
43
|
-
* Maximum vertical scroll position
|
|
44
|
-
*/
|
|
45
5
|
maxScrollTop: number;
|
|
46
|
-
/**
|
|
47
|
-
* Whether horizontal scrolling is possible
|
|
48
|
-
*/
|
|
49
6
|
canScrollX: boolean;
|
|
50
|
-
/**
|
|
51
|
-
* Whether vertical scrolling is possible
|
|
52
|
-
*/
|
|
53
7
|
canScrollY: boolean;
|
|
54
|
-
}
|
|
55
|
-
export interface ScrollActions {
|
|
56
|
-
/**
|
|
57
|
-
* Scroll to a specific horizontal position
|
|
58
|
-
*/
|
|
59
8
|
scrollTo: (x: number, y?: number) => void;
|
|
60
|
-
/**
|
|
61
|
-
* Scroll by a relative amount
|
|
62
|
-
*/
|
|
63
9
|
scrollBy: (deltaX: number, deltaY: number) => void;
|
|
64
|
-
/**
|
|
65
|
-
* Scroll to the top
|
|
66
|
-
*/
|
|
67
10
|
scrollToTop: () => void;
|
|
68
|
-
/**
|
|
69
|
-
* Scroll to the bottom
|
|
70
|
-
*/
|
|
71
11
|
scrollToBottom: () => void;
|
|
72
|
-
/**
|
|
73
|
-
* Scroll to the left
|
|
74
|
-
*/
|
|
75
12
|
scrollToLeft: () => void;
|
|
76
|
-
/**
|
|
77
|
-
* Scroll to the right
|
|
78
|
-
*/
|
|
79
13
|
scrollToRight: () => void;
|
|
80
|
-
}
|
|
81
|
-
export type
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
14
|
+
};
|
|
15
|
+
export type ScrollOptions = {
|
|
16
|
+
scrollX?: boolean;
|
|
17
|
+
scrollY?: boolean;
|
|
18
|
+
contentWidth?: number;
|
|
19
|
+
contentHeight?: number;
|
|
20
|
+
containerWidth?: number;
|
|
21
|
+
containerHeight?: number;
|
|
22
|
+
};
|
|
23
|
+
export type ScrollInitialValues = {
|
|
86
24
|
x?: number;
|
|
87
25
|
y?: number;
|
|
88
|
-
}
|
|
26
|
+
};
|
|
27
|
+
export declare const useScroll: (options?: ScrollOptions, initialValues?: ScrollInitialValues) => ScrollState;
|
|
89
28
|
export default useScroll;
|
|
@@ -1,32 +1,27 @@
|
|
|
1
|
-
import { useState, useCallback } from
|
|
2
|
-
/**
|
|
3
|
-
* Hook for managing scroll state in scrollable containers
|
|
4
|
-
*/
|
|
1
|
+
import { useState, useCallback } from "react";
|
|
5
2
|
export const useScroll = (options = {}, initialValues) => {
|
|
6
3
|
const { scrollX = false, scrollY = false, contentWidth = 0, contentHeight = 0, containerWidth = 0, containerHeight = 0, } = options;
|
|
7
4
|
const [scrollLeft, setScrollLeft] = useState(initialValues?.x ?? 0);
|
|
8
5
|
const [scrollTop, setScrollTop] = useState(initialValues?.y ?? 0);
|
|
9
|
-
// Calculate maximum scroll positions
|
|
10
6
|
const maxScrollLeft = Math.max(0, contentWidth - containerWidth);
|
|
11
7
|
const maxScrollTop = Math.max(0, contentHeight - containerHeight);
|
|
12
|
-
// Calculate whether scrolling is possible
|
|
13
8
|
const canScrollX = scrollX && maxScrollLeft > 0;
|
|
14
9
|
const canScrollY = scrollY && maxScrollTop > 0;
|
|
15
10
|
const scrollTo = useCallback((x, y) => {
|
|
16
11
|
if (scrollX) {
|
|
17
12
|
setScrollLeft(Math.max(0, Math.min(maxScrollLeft, x)));
|
|
18
13
|
}
|
|
19
|
-
if (scrollY && typeof y ===
|
|
14
|
+
if (scrollY && typeof y === "number") {
|
|
20
15
|
setScrollTop(Math.max(0, Math.min(maxScrollTop, y)));
|
|
21
16
|
}
|
|
22
17
|
}, [scrollX, scrollY, maxScrollLeft, maxScrollTop]);
|
|
23
18
|
const scrollBy = useCallback((deltaX, deltaY) => {
|
|
24
|
-
setScrollLeft(prev => {
|
|
19
|
+
setScrollLeft((prev) => {
|
|
25
20
|
if (!scrollX)
|
|
26
21
|
return prev;
|
|
27
22
|
return Math.max(0, Math.min(maxScrollLeft, prev + deltaX));
|
|
28
23
|
});
|
|
29
|
-
setScrollTop(prev => {
|
|
24
|
+
setScrollTop((prev) => {
|
|
30
25
|
if (!scrollY)
|
|
31
26
|
return prev;
|
|
32
27
|
return Math.max(0, Math.min(maxScrollTop, prev + deltaY));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-scroll.js","sourceRoot":"","sources":["../../src/hooks/use-scroll.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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,8 +2,6 @@ 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';
|
|
7
5
|
export type { Props as TextProps } from './components/Text.js';
|
|
8
6
|
export { default as Text } from './components/Text.js';
|
|
9
7
|
export type { Props as AppProps } from './components/AppContext.js';
|
|
@@ -17,6 +15,8 @@ export { default as Transform } from './components/Transform.js';
|
|
|
17
15
|
export type { Props as NewlineProps } from './components/Newline.js';
|
|
18
16
|
export { default as Newline } from './components/Newline.js';
|
|
19
17
|
export { default as Spacer } from './components/Spacer.js';
|
|
18
|
+
export type { ScrollBoxProps, ScrollBoxRef } from './components/ScrollBox.js';
|
|
19
|
+
export { default as ScrollBox } from './components/ScrollBox.js';
|
|
20
20
|
export type { Key } from './hooks/use-input.js';
|
|
21
21
|
export { default as useInput } from './hooks/use-input.js';
|
|
22
22
|
export { default as useApp } from './hooks/use-app.js';
|
|
@@ -26,7 +26,7 @@ export { default as useStderr } from './hooks/use-stderr.js';
|
|
|
26
26
|
export { default as useFocus } from './hooks/use-focus.js';
|
|
27
27
|
export { default as useFocusManager } from './hooks/use-focus-manager.js';
|
|
28
28
|
export { default as useIsScreenReaderEnabled } from './hooks/use-is-screen-reader-enabled.js';
|
|
29
|
-
export type {
|
|
29
|
+
export type { ScrollState, ScrollOptions } from './hooks/use-scroll.js';
|
|
30
30
|
export { default as useScroll } from './hooks/use-scroll.js';
|
|
31
31
|
export { default as measureElement } from './measure-element.js';
|
|
32
32
|
export type { DOMElement } from './dom.js';
|
package/build/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
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';
|
|
4
3
|
export { default as Text } from './components/Text.js';
|
|
5
4
|
export { default as Static } from './components/Static.js';
|
|
6
5
|
export { default as Transform } from './components/Transform.js';
|
|
7
6
|
export { default as Newline } from './components/Newline.js';
|
|
8
7
|
export { default as Spacer } from './components/Spacer.js';
|
|
8
|
+
export { default as ScrollBox } from './components/ScrollBox.js';
|
|
9
9
|
export { default as useInput } from './hooks/use-input.js';
|
|
10
10
|
export { default as useApp } from './hooks/use-app.js';
|
|
11
11
|
export { default as useStdin } from './hooks/use-stdin.js';
|
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,
|
|
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,SAAS,EAAC,MAAM,2BAA2B,CAAC;AAE/D,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"}
|
|
@@ -5,15 +5,10 @@ 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
|
-
}
|
|
12
8
|
declare const renderNodeToOutput: (node: DOMElement, output: Output, options: {
|
|
13
9
|
offsetX?: number;
|
|
14
10
|
offsetY?: number;
|
|
15
11
|
transformers?: OutputTransformer[];
|
|
16
12
|
skipStaticElements: boolean;
|
|
17
|
-
scrollOffset?: ScrollOffset;
|
|
18
13
|
}) => void;
|
|
19
14
|
export default renderNodeToOutput;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import widestLine from 'widest-line';
|
|
2
2
|
import indentString from 'indent-string';
|
|
3
|
-
import sliceAnsi from 'slice-ansi';
|
|
4
3
|
import Yoga from 'yoga-layout';
|
|
5
4
|
import wrapText from './wrap-text.js';
|
|
6
5
|
import getMaxWidth from './get-max-width.js';
|
|
@@ -68,8 +67,9 @@ export const renderNodeToScreenReaderOutput = (node, options = {}) => {
|
|
|
68
67
|
}
|
|
69
68
|
return output;
|
|
70
69
|
};
|
|
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,
|
|
72
|
+
const { offsetX = 0, offsetY = 0, transformers = [], skipStaticElements, } = options;
|
|
73
73
|
if (skipStaticElements && node.internal_static) {
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
@@ -92,60 +92,47 @@ const renderNodeToOutput = (node, output, options) => {
|
|
|
92
92
|
if (text.length > 0) {
|
|
93
93
|
const currentWidth = widestLine(text);
|
|
94
94
|
const maxWidth = getMaxWidth(yogaNode);
|
|
95
|
-
|
|
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) {
|
|
95
|
+
if (currentWidth > maxWidth) {
|
|
100
96
|
const textWrap = node.style.textWrap ?? 'wrap';
|
|
101
97
|
text = wrapText(text, maxWidth, textWrap);
|
|
102
98
|
}
|
|
103
99
|
text = applyPaddingToText(node, text);
|
|
104
|
-
|
|
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
|
-
}
|
|
100
|
+
output.write(x, y, text, { transformers: newTransformers });
|
|
123
101
|
}
|
|
124
102
|
return;
|
|
125
103
|
}
|
|
126
104
|
let clipped = false;
|
|
105
|
+
let scrollOffsetX = 0;
|
|
106
|
+
let scrollOffsetY = 0;
|
|
127
107
|
if (node.nodeName === 'ink-box') {
|
|
128
108
|
renderBackground(x, y, node, output);
|
|
129
109
|
renderBorder(x, y, node, output);
|
|
130
|
-
const
|
|
131
|
-
const
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const clipVertically = overflowY === 'hidden'
|
|
136
|
-
|
|
137
|
-
|
|
110
|
+
const scrollHorizontally = node.style.overflowX === 'scroll' || node.style.overflow === 'scroll';
|
|
111
|
+
const scrollVertically = node.style.overflowY === 'scroll' || node.style.overflow === 'scroll';
|
|
112
|
+
const clipHorizontally = node.style.overflowX === 'hidden' ||
|
|
113
|
+
node.style.overflow === 'hidden' ||
|
|
114
|
+
scrollHorizontally;
|
|
115
|
+
const clipVertically = node.style.overflowY === 'hidden' ||
|
|
116
|
+
node.style.overflow === 'hidden' ||
|
|
117
|
+
scrollVertically;
|
|
118
|
+
if (scrollHorizontally || scrollVertically) {
|
|
119
|
+
const offset = node.internal_scrollOffset ?? { x: 0, y: 0 };
|
|
120
|
+
scrollOffsetX = scrollHorizontally ? offset.x : 0;
|
|
121
|
+
scrollOffsetY = scrollVertically ? offset.y : 0;
|
|
122
|
+
}
|
|
123
|
+
if (clipHorizontally || clipVertically) {
|
|
124
|
+
const x1 = clipHorizontally
|
|
138
125
|
? x + yogaNode.getComputedBorder(Yoga.EDGE_LEFT)
|
|
139
126
|
: undefined;
|
|
140
|
-
const x2 =
|
|
127
|
+
const x2 = clipHorizontally
|
|
141
128
|
? x +
|
|
142
129
|
yogaNode.getComputedWidth() -
|
|
143
130
|
yogaNode.getComputedBorder(Yoga.EDGE_RIGHT)
|
|
144
131
|
: undefined;
|
|
145
|
-
const y1 =
|
|
132
|
+
const y1 = clipVertically
|
|
146
133
|
? y + yogaNode.getComputedBorder(Yoga.EDGE_TOP)
|
|
147
134
|
: undefined;
|
|
148
|
-
const y2 =
|
|
135
|
+
const y2 = clipVertically
|
|
149
136
|
? y +
|
|
150
137
|
yogaNode.getComputedHeight() -
|
|
151
138
|
yogaNode.getComputedBorder(Yoga.EDGE_BOTTOM)
|
|
@@ -155,23 +142,12 @@ const renderNodeToOutput = (node, output, options) => {
|
|
|
155
142
|
}
|
|
156
143
|
}
|
|
157
144
|
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;
|
|
168
145
|
for (const childNode of node.childNodes) {
|
|
169
146
|
renderNodeToOutput(childNode, output, {
|
|
170
|
-
offsetX: x,
|
|
171
|
-
offsetY: y,
|
|
147
|
+
offsetX: x - scrollOffsetX,
|
|
148
|
+
offsetY: y - scrollOffsetY,
|
|
172
149
|
transformers: newTransformers,
|
|
173
150
|
skipStaticElements,
|
|
174
|
-
scrollOffset: childScrollOffset,
|
|
175
151
|
});
|
|
176
152
|
}
|
|
177
153
|
if (clipped) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-node-to-output.js","sourceRoot":"","sources":["../src/render-node-to-output.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"render-node-to-output.js","sourceRoot":"","sources":["../src/render-node-to-output.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED