"use strict";

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

var React = _interopRequireWildcard(require("react"));

var _one = require("remax/one");

var _classnames = _interopRequireDefault(require("classnames"));

var _common = require("./../common");

var _icon = _interopRequireDefault(require("../icon"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

/*
 * @Author: codingfly
 * @Description:
 * @Date: 2021-08-13 15:39:29
 * @LastEditTime: 2021-09-06 09:03:22
 * @FilePath: \young\components\radio\index.tsx
 */
var prefixCls = (0, _common.getPrefixCls)('radio');

var Radio = function Radio(props) {
  var children = props.children,
      checked = props.checked,
      value = props.value,
      _props$color = props.color,
      color = _props$color === void 0 ? '#1890FF' : _props$color,
      extra = props.extra,
      style = props.style,
      onChange = props.onChange;

  var handleClick = function handleClick(e) {
    onChange === null || onChange === void 0 ? void 0 : onChange(!checked, e, value);
  };

  return /*#__PURE__*/React.createElement(_one.View, {
    className: prefixCls,
    style: style
  }, /*#__PURE__*/React.createElement(_one.View, {
    className: "".concat(prefixCls, "-container"),
    onTap: handleClick
  }, /*#__PURE__*/React.createElement(_one.View, {
    className: (0, _classnames.default)("".concat(prefixCls, "-out-round"))
  }, checked ? /*#__PURE__*/React.createElement(_icon.default, {
    className: "".concat(prefixCls, "-inner-round"),
    type: "roundcheckfill",
    size: 24,
    color: color
  }) : /*#__PURE__*/React.createElement(_icon.default, {
    className: "".concat(prefixCls, "-inner-round"),
    type: "round",
    size: 24,
    color: "#999"
  })), /*#__PURE__*/React.createElement(_one.View, {
    className: "".concat(prefixCls, "-children")
  }, children)), /*#__PURE__*/React.createElement(_one.View, {
    className: "".concat(prefixCls, "-extra")
  }, extra));
};

var getRadios = function getRadios(children, value, color, onChange) {
  var onGroupChange = function onGroupChange(checked, e, v) {
    var newValue = v;
    onChange === null || onChange === void 0 ? void 0 : onChange(newValue, e);
  };

  var radios = React.Children.map(children, function (radio) {
    var newRadio = radio;
    var checked = false;

    if (newRadio && newRadio.props) {
      if ((newRadio.props.value || newRadio.props.value === 0 || newRadio.props.value === false) && newRadio.props.value === value) {
        checked = true;
      } else {
        checked = false;
      }

      return /*#__PURE__*/React.createElement(Radio, Object.assign({
        color: color
      }, newRadio.props, {
        checked: checked,
        onChange: onGroupChange
      }));
    }

    return newRadio;
  });
  return radios;
};

Radio.Group = function (props) {
  var value = props.value,
      color = props.color,
      children = props.children,
      _props$direction = props.direction,
      direction = _props$direction === void 0 ? 'row' : _props$direction,
      onChange = props.onChange,
      style = props.style;
  var radios = getRadios(children, value, color, onChange);
  return /*#__PURE__*/React.createElement(_one.View, {
    style: Object.assign({
      display: 'flex',
      flexDirection: direction
    }, style)
  }, radios);
};

var _default = Radio;
exports.default = _default;