ant-design/components/typography/Text.tsx
Karott 338ec7dad7
perf: refactor devWarning for production code size (#35411)
* pref: better code style for production

* refactor `devWarning`

* don't use `useEffect` only wrap `devWarning`

* chore: add 'noop' to coverage

* chore: add test cases for devWarning

* chore: add test case

* chore: update test cases for devWarning

* chore: restore test script command

* fix: remove 'throw new Error'

* should not use `throw` for browser

* chore: update test case for AutoComplete

* perf: add prefix for `devWarning`

* update RegExp for UMD

* add prefix for ES and CJS

* chore: better code style

* perf:

* upgrade antd-tools

* remove `injectWarningCondition`

* rename `devWarning` to `warning`

* chore: better code style

* chore: better code style

* chore: restore hasValidName
2022-05-10 15:43:29 +08:00

36 lines
1.0 KiB
TypeScript

import * as React from 'react';
import omit from 'rc-util/lib/omit';
import warning from '../_util/warning';
import type { BlockProps, EllipsisConfig } from './Base';
import Base from './Base';
export interface TextProps extends BlockProps {
ellipsis?: boolean | Omit<EllipsisConfig, 'expandable' | 'rows' | 'onExpand'>;
onClick?: (e?: React.MouseEvent<HTMLDivElement>) => void;
}
const Text: React.ForwardRefRenderFunction<HTMLSpanElement, TextProps> = (
{ ellipsis, ...restProps },
ref,
) => {
const mergedEllipsis = React.useMemo(() => {
if (ellipsis && typeof ellipsis === 'object') {
return omit(ellipsis as any, ['expandable', 'rows']);
}
return ellipsis;
}, [ellipsis]);
warning(
typeof ellipsis !== 'object' ||
!ellipsis ||
(!('expandable' in ellipsis) && !('rows' in ellipsis)),
'Typography.Text',
'`ellipsis` do not support `expandable` or `rows` props.',
);
return <Base ref={ref} {...restProps} ellipsis={mergedEllipsis} component="span" />;
};
export default React.forwardRef(Text);