mirror of
https://github.com/ant-design/ant-design.git
synced 2024-11-24 02:59:58 +08:00
59ad48476b
* chore: add boime lint * fix lint * use files ignore * revert change * ignore clarity.js * fix some errors * fix some errors * fix some errors * fix some errors * add yml file * Update clarity.js Signed-off-by: afc163 <afc163@gmail.com> * add npm run lint:biome * add npm run lint:biome * fix test case * fix ts errors * fix ts errors * fix lint and add .lintstagedrc * shorten prop name * chore: update package.json * update biome.json * chore: remove stylelint * chore: useOptionalChain * fix lint * biome format * prettier all code * prettier all code * fix site test --------- Signed-off-by: afc163 <afc163@gmail.com>
28 lines
766 B
TypeScript
28 lines
766 B
TypeScript
import React from 'react';
|
|
|
|
import type { AnyObject } from './type';
|
|
|
|
export function isFragment(child: any): boolean {
|
|
return child && React.isValidElement(child) && child.type === React.Fragment;
|
|
}
|
|
|
|
type RenderProps = AnyObject | ((originProps: AnyObject) => AnyObject | undefined);
|
|
|
|
export const replaceElement = <P>(
|
|
element: React.ReactNode,
|
|
replacement: React.ReactNode,
|
|
props?: RenderProps,
|
|
) => {
|
|
if (!React.isValidElement<P>(element)) {
|
|
return replacement;
|
|
}
|
|
return React.cloneElement<P>(
|
|
element,
|
|
typeof props === 'function' ? props(element.props || {}) : props,
|
|
);
|
|
};
|
|
|
|
export function cloneElement<P>(element: React.ReactNode, props?: RenderProps) {
|
|
return replaceElement<P>(element, element, props) as React.ReactElement;
|
|
}
|