1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| import React, { useMemo } from "react";
|
| export const Oneof = ({ value, children, className }) => {
| const selectedChild = useMemo(() => {
| if (Array.isArray(children)) {
| return children.find((c) => c.props.case === value) || null;
| }
| if (children.props.case === value) {
| return children;
| }
| }, [children, value]);
|
| return selectedChild
| ? React.cloneElement(selectedChild, {
| ...selectedChild.props,
| className: [className, selectedChild.props.className].join(" "),
| })
| : null;
| };
|
|