"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");

var _typeof = require("@babel/runtime/helpers/typeof");

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

var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));

require("maycur-antd/lib/date-picker/style/css");

var _datePicker = _interopRequireDefault(require("maycur-antd/lib/date-picker"));

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

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

var _utils = _interopRequireDefault(require("../../utils/utils"));

var _TranslateHook = _interopRequireDefault(require("../../hooks/TranslateHook"));

var _moment = _interopRequireDefault(require("moment"));

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; }

var RangePicker = _datePicker.default.RangePicker;
var prefix = _utils.default.prefixCls;
var cmName = "".concat(prefix, "-date-range-field");

function DateRangeField(props, ref) {
  var extraProps = props.extraProps,
      fieldProperties = props.fieldProperties,
      readOnly = props.readOnly,
      value = props.value,
      onChange = props.onChange;
  var valueFormat = fieldProperties.valueFormat,
      valueDefault = fieldProperties.valueDefault;
  var fieldStyleCategory = extraProps.fieldStyleCategory,
      disabledDate = extraProps.disabledDate,
      shouldShowNow = extraProps.shouldShowNow,
      isInTable = extraProps.isInTable,
      registerEvent = extraProps.registerEvent,
      tableRef = extraProps.tableRef;

  var _useState = (0, _react.useState)([]),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      dateValue = _useState2[0],
      setDateValue = _useState2[1];

  var _useState3 = (0, _react.useState)(false),
      _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
      open = _useState4[0],
      setOpen = _useState4[1];

  var containerRef = (0, _react.useRef)();
  var t = (0, _TranslateHook.default)('MK_FormFields');
  var handleChange = (0, _react.useCallback)(function (date) {
    onChange({
      timeRange: {
        startDate: date[0].valueOf(),
        endDate: date[1] && date[1].valueOf()
      },
      currentTime: null
    });
  }, [onChange]);
  var onOpenChange = (0, _react.useCallback)(function (status) {
    return setOpen(status);
  }, []);
  (0, _react.useEffect)(function () {
    var defaultValue = value && value.timeRange;
    var pairValue = value && value.timeRange;

    if (pairValue) {
      defaultValue = [pairValue.startDate && (0, _moment.default)(pairValue.startDate) || '', pairValue.endDate && (0, _moment.default)(pairValue.endDate) || ''];
    } else if (valueDefault === 'NOW' && shouldShowNow) {
      defaultValue = [(0, _moment.default)().startOf('day'), (0, _moment.default)().endOf('day')];
      handleChange(defaultValue);
    }

    setDateValue(defaultValue);
  }, [valueDefault, value, handleChange, shouldShowNow]);
  (0, _react.useEffect)(function () {
    if (value && value.timeRange) {
      var range = [];
      range[0] = value.timeRange.startDate ? (0, _moment.default)(value.timeRange.startDate) : '';
      range[1] = value.timeRange.endDate ? (0, _moment.default)(value.timeRange.endDate) : '';
      setDateValue(range);
    }
  }, [value]);
  (0, _react.useEffect)(function () {
    registerEvent && registerEvent(function () {
      return onOpenChange(false);
    });
  }, [registerEvent]);
  var placeholder = (0, _react.useMemo)(function () {
    return [t('dateField.startDate'), t('dateField.endDate')];
  }, [t]);
  var containerClz = (0, _react.useMemo)(function () {
    return (0, _classnames.default)(cmName, {
      'table-cell': fieldStyleCategory === 'origin',
      'normal': fieldStyleCategory !== 'origin'
    });
  }, [fieldStyleCategory]);
  var showTime = (0, _react.useMemo)(function () {
    var result = false;

    if (valueFormat && (valueFormat.includes('HH:mm') || valueFormat.includes('A'))) {
      result = {
        format: 'HH:mm'
      };
    }

    return result;
  }, [valueFormat]);
  return /*#__PURE__*/_react.default.createElement("div", {
    className: containerClz,
    ref: containerRef
  }, /*#__PURE__*/_react.default.createElement(RangePicker, {
    open: open,
    disabledDate: disabledDate,
    disabled: readOnly,
    value: dateValue,
    format: valueFormat,
    showTime: showTime,
    allowClear: false,
    placeholder: placeholder,
    onChange: handleChange,
    getCalendarContainer: function getCalendarContainer() {
      return tableRef || containerRef.current;
    },
    onOpenChange: onOpenChange
  }));
}

var _default = /*#__PURE__*/(0, _react.forwardRef)(DateRangeField);

exports.default = _default;