Skip to content

Commit bea638d

Browse files
authored
fix: Apply forwardRef to ImpressionArea (toss#241)
1 parent 94f8826 commit bea638d

1 file changed

Lines changed: 19 additions & 21 deletions

File tree

src/components/ImpressionArea/ImpressionArea.tsx

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ElementType, ReactNode, Ref } from 'react';
1+
import { ElementType, forwardRef, ReactNode, Ref } from 'react';
22

33
import { useImpressionRef, UseImpressionRefOptions } from '../../hooks/useImpressionRef/index.ts';
44
import { mergeRefs } from '../../utils/mergeRefs/mergeRefs.ts';
@@ -43,24 +43,22 @@ type Props<Tag extends ElementType> = React.ComponentPropsWithoutRef<Tag> &
4343
* );
4444
* }
4545
*/
46-
export function ImpressionArea<T extends ElementType = 'div'>({
47-
as,
48-
rootMargin,
49-
areaThreshold,
50-
timeThreshold,
51-
onImpressionStart,
52-
onImpressionEnd,
53-
ref,
54-
...props
55-
}: Props<T>) {
56-
const Component = as ?? 'div';
57-
const impressionRef = useImpressionRef<HTMLElement>({
58-
onImpressionStart,
59-
onImpressionEnd,
60-
areaThreshold,
61-
timeThreshold,
62-
rootMargin,
63-
});
46+
export const ImpressionArea = forwardRef(
47+
<T extends ElementType = 'div'>(
48+
{ as, rootMargin, areaThreshold, timeThreshold, onImpressionStart, onImpressionEnd, ...props }: Props<T>,
49+
ref: React.Ref<Element>
50+
) => {
51+
const Component = as ?? 'div';
52+
const impressionRef = useImpressionRef<HTMLElement>({
53+
onImpressionStart,
54+
onImpressionEnd,
55+
areaThreshold,
56+
timeThreshold,
57+
rootMargin,
58+
});
6459

65-
return <Component ref={mergeRefs(ref, impressionRef)} {...props} />;
66-
}
60+
return <Component ref={mergeRefs(ref, impressionRef)} {...props} />;
61+
}
62+
);
63+
64+
ImpressionArea.displayName = 'ImpressionArea';

0 commit comments

Comments
 (0)