var _excluded = ["parent"];

function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }

function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }

import React, { useContext, useMemo } from 'react';
import RadioContext from './RadioContext';
import Checker from '../checkbox/Checker';
import ConfigProviderContext from '../config-provider/ConfigProviderContext';

var Radio = function Radio(props) {
  var _useContext = useContext(ConfigProviderContext),
      prefixCls = _useContext.prefixCls,
      createNamespace = _useContext.createNamespace;

  var _createNamespace = createNamespace('radio', prefixCls),
      bem = _createNamespace[0];

  var _useContext2 = useContext(RadioContext),
      parent = _useContext2.parent,
      context = _objectWithoutPropertiesLoose(_useContext2, _excluded);

  var checked = useMemo(function () {
    return parent ? context.checked === props.name : props.checked;
  }, [context.checked]);

  var toggle = function toggle() {
    var emitter = parent ? context.toggle : function () {};
    emitter(props.name);
  };

  return /*#__PURE__*/React.createElement(Checker, _extends({}, props, {
    bem: bem,
    role: "radio",
    parent: parent,
    checked: checked,
    onToggle: toggle
  }));
};

export default Radio;