carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 949 B
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react");function r(e){return e&&e.__esModule?e:{default:e}}var n=r(t);const o=({children:r,name:o,onBlur:a,onChange:l,onMouseDown:u,onKeyDown:d,value:s})=>{const c=t.useMemo((()=>n.default.Children.toArray(r)),[r]),i=t.useMemo((()=>{let e=!1;return c.forEach((t=>{n.default.isValidElement(t)&&Object.prototype.hasOwnProperty.call(t.props,"defaultChecked")&&(e=!0)})),e}),[c]),p=void 0!==s,[f,h]=t.useState(""),m=t.useCallback((e=>{null==l||l(e),p||h(e.target.value)}),[l,h,p]),v=c.map((e=>{let t;if(!n.default.isValidElement(e))return e;t=p?s===e.props.value:!f&&i?e.props.defaultChecked||!1:f===e.props.value;const r={defaultChecked:void 0,checked:t,name:o,onBlur:a,onMouseDown:u,onChange:m,onKeyDown:d};return n.default.cloneElement(e,r)}));return e.jsx(e.Fragment,{children:v})};o.displayName="RadioButtonMapper",exports.default=o;