UNPKG

@porsche-design-system/components-react

Version:

Porsche Design System is a component library designed to help developers create the best experience for software or services distributed by Dr. Ing. h.c. F. Porsche AG.

29 lines (25 loc) 1.25 kB
'use strict'; var react = require('react'); /** * @param children derived from PropsWithChildren * * type PropsWithChildren<P = unknown> = P & { children?: ReactNode | undefined }; * type ReactNode = ReactElement | string | number | ReactFragment | ReactPortal | boolean | null | undefined; * interface ReactElement<P = any, T extends string | JSXElementConstructor<any> = string | JSXElementConstructor<any>> { * type: T; * props: P; * key: Key | null; * } */ const splitChildren = (children) => { children = typeof children === 'object' && 'type' in children && children.type === react.Fragment ? children.props.children // Unpack children of React.Fragment : children; const childrenArray = (Array.isArray(children) ? children : children ? [children] : []).filter((x) => x !== undefined && x !== null // children are filtered due to cases where conditionally rendered children can be undefined. ); const otherChildren = childrenArray.filter((child) => !child.props?.slot); const namedSlotChildren = childrenArray.filter((child) => child.props?.slot); return { children: childrenArray, namedSlotChildren, otherChildren }; }; exports.splitChildren = splitChildren;