diff --git a/src/Item.tsx b/src/Item.tsx index c8f046b..e1870b0 100644 --- a/src/Item.tsx +++ b/src/Item.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import classNames from 'classnames'; import ResizeObserver from 'rc-resize-observer'; -import type { ComponentType } from './Overflow'; +import type { ComponentType } from './RawItem'; // Use shared variable to save bundle size const UNDEFINED = undefined; diff --git a/src/Overflow.tsx b/src/Overflow.tsx index 7aa2e3b..de6241b 100644 --- a/src/Overflow.tsx +++ b/src/Overflow.tsx @@ -5,33 +5,16 @@ import ResizeObserver from 'rc-resize-observer'; import useLayoutEffect from 'rc-util/lib/hooks/useLayoutEffect'; import Item from './Item'; import useEffectState, { useBatcher } from './hooks/useEffectState'; +import type { ComponentType } from './RawItem'; import RawItem from './RawItem'; - -export const OverflowContext = React.createContext<{ - prefixCls: string; - responsive: boolean; - order: number; - registerSize: (key: React.Key, width: number | null) => void; - display: boolean; - - invalidate: boolean; - - // Item Usage - item?: any; - itemKey?: React.Key; - - // Rest Usage - className?: string; -}>(null); +import { OverflowContext } from './context'; const RESPONSIVE = 'responsive' as const; const INVALIDATE = 'invalidate' as const; -export type ComponentType = - | React.ComponentType - | React.ForwardRefExoticComponent - | React.FC - | keyof React.ReactHTML; +export { OverflowContext } from './context'; + +export type { ComponentType } from './RawItem'; export interface OverflowProps extends React.HTMLAttributes { prefixCls?: string; diff --git a/src/RawItem.tsx b/src/RawItem.tsx index f8f5d78..2c9c0bd 100644 --- a/src/RawItem.tsx +++ b/src/RawItem.tsx @@ -1,8 +1,13 @@ import * as React from 'react'; import classNames from 'classnames'; import Item from './Item'; -import { OverflowContext } from './Overflow'; -import type { ComponentType } from './Overflow'; +import { OverflowContext } from './context'; + +export type ComponentType = + | React.ComponentType + | React.ForwardRefExoticComponent + | React.FC + | keyof React.ReactHTML; export interface RawItemProps extends React.HTMLAttributes { component?: ComponentType; diff --git a/src/context.ts b/src/context.ts new file mode 100644 index 0000000..6f0cb6d --- /dev/null +++ b/src/context.ts @@ -0,0 +1,18 @@ +import React from 'react'; + +export const OverflowContext = React.createContext<{ + prefixCls: string; + responsive: boolean; + order: number; + registerSize: (key: React.Key, width: number | null) => void; + display: boolean; + + invalidate: boolean; + + // Item Usage + item?: any; + itemKey?: React.Key; + + // Rest Usage + className?: string; +}>(null);