Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 9x 16x 16x 16x 2x 1x 9x | import { FC, Fragment, Children, cloneElement, isValidElement } from 'react'; import { useStore, RenderStateProps, InitialState } from './store'; export type RenderChildren = | { children?: (props: Required<RenderStateProps>, data: InitialState['data']) => React.ReactNode } | { children?: React.ReactNode }; export const Render: FC<RenderChildren> = ({ children }) => { const { fields = {}, buttons = {}, extra = {}, $$index = {}, blocks = {}, data } = useStore(); const childs = typeof children === 'function' ? [] : Children.toArray(children); return ( <Fragment> {typeof children === 'function' && !isValidElement(children) && children({ fields, buttons, blocks, extra, $$index }, { ...data })} {typeof children !== 'function' && childs.map((child, key) => { if (!isValidElement(child)) return null; return cloneElement(child, { ...child.props, key, }); })} </Fragment> ); }; Render.displayName = 'Login.Render'; |