"use strict";

function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;
var _components = require("@alicloudfe/components");
var _icon = _interopRequireDefault(require("@teamix/icon"));
var _utils = require("@teamix/utils");
var _react = _interopRequireWildcard(require("react"));
var _utils2 = require("../../utils");
require("./index.scss");
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; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var cls = (0, _utils.usePrefixCls)('teamix-pro-table-toolbar-icon');
var LayoutIcon = function LayoutIcon(props) {
  var _autoRefreshProps$dat;
  var actionRef = props.actionRef,
    autoRefresh = props.autoRefresh,
    autoRefreshProps = props.autoRefreshProps;
  var autoRefreshRadio = (_autoRefreshProps$dat = autoRefreshProps === null || autoRefreshProps === void 0 ? void 0 : autoRefreshProps.dataSource) !== null && _autoRefreshProps$dat !== void 0 ? _autoRefreshProps$dat : [{
    label: '每 1 分钟',
    value: 60000
  }, {
    label: '每 3 分钟',
    value: 180000
  }, {
    label: '每 5 分钟',
    value: 300000
  }];
  // dropdown 开关
  var _useState = (0, _react.useState)(false),
    _useState2 = _slicedToArray(_useState, 2),
    dropdownVisible = _useState2[0],
    setDropdownVisible = _useState2[1];
  // 自动刷新状态
  var _useState3 = (0, _react.useState)(!!autoRefresh),
    _useState4 = _slicedToArray(_useState3, 2),
    autoRefreshVisible = _useState4[0],
    setAutoRefreshVisible = _useState4[1];
  // 间隔时间 ms
  var _useState5 = (0, _react.useState)(60000),
    _useState6 = _slicedToArray(_useState5, 2),
    times = _useState6[0],
    setTimes = _useState6[1];
  // 展示计时器时间 s
  var _useState7 = (0, _react.useState)(60),
    _useState8 = _slicedToArray(_useState7, 2),
    remainTime = _useState8[0],
    setRemainTime = _useState8[1];
  // 循环计时器
  var timerRef = (0, _react.useRef)({
    timer: undefined,
    remain: 60
  });
  (0, _react.useEffect)(function () {
    (0, _utils2.on)(function (timer) {
      setTimes(timer);
      timerRef.current.remain = timer / 1000;
      if (timerRef.current.timer) {
        clearInterval(timerRef.current.timer);
        timerRef.current.timer = undefined;
      }
      timerRef.current.timer = setInterval(function () {
        var remainTime = timerRef.current.remain - 1;
        if (remainTime >= 0) {
          setRemainTime(remainTime);
          timerRef.current.remain = remainTime;
        }
      }, 1000);
    }, 'PRO_TABLE_REFRESH_TIMER_FLAG');
  }, []);
  // 下拉菜单显示隐藏回调
  var onDropdownVisibleChange = function onDropdownVisibleChange(state) {
    setDropdownVisible(state);
  };
  // 自动刷新开启关闭回调
  var onAutoRefreshChange = function onAutoRefreshChange(visible) {
    if (visible) {
      var _actionRef$current, _actionRef$current$se;
      (_actionRef$current = actionRef.current) === null || _actionRef$current === void 0 ? void 0 : (_actionRef$current$se = _actionRef$current.setAutoRefreshTimers) === null || _actionRef$current$se === void 0 ? void 0 : _actionRef$current$se.call(_actionRef$current, times);
    } else {
      var _actionRef$current2, _actionRef$current2$c;
      (_actionRef$current2 = actionRef.current) === null || _actionRef$current2 === void 0 ? void 0 : (_actionRef$current2$c = _actionRef$current2.clearAutoRefreshTimers) === null || _actionRef$current2$c === void 0 ? void 0 : _actionRef$current2$c.call(_actionRef$current2);
      if (timerRef.current.timer) {
        clearInterval(timerRef.current.timer);
        timerRef.current.timer = undefined;
        timerRef.current.remain = times / 1000;
        setRemainTime(times / 1000);
      }
    }
    setAutoRefreshVisible(visible);
  };
  // 手动刷新回调
  var onManualRefresh = function onManualRefresh() {
    var _actionRef$current3, _actionRef$current3$r;
    (_actionRef$current3 = actionRef.current) === null || _actionRef$current3 === void 0 ? void 0 : (_actionRef$current3$r = _actionRef$current3.refresh) === null || _actionRef$current3$r === void 0 ? void 0 : _actionRef$current3$r.call(_actionRef$current3);
    onDropdownVisibleChange(false);
  };
  // 选择间隔时间回调
  var onTimeRadioChange = function onTimeRadioChange(timer) {
    var _actionRef$current4, _actionRef$current4$s;
    setTimes(timer);
    (_actionRef$current4 = actionRef.current) === null || _actionRef$current4 === void 0 ? void 0 : (_actionRef$current4$s = _actionRef$current4.setAutoRefreshTimers) === null || _actionRef$current4$s === void 0 ? void 0 : _actionRef$current4$s.call(_actionRef$current4, timer);
  };
  // 渲染刷新图标
  var renderRefreshIcon = function renderRefreshIcon() {
    if (!!autoRefresh && autoRefreshVisible && typeof autoRefresh !== 'function') {
      return /*#__PURE__*/_react.default.createElement(_icon.default, {
        size: "small",
        type: "auto-refresh-on-line"
      });
    }
    if (!!autoRefresh && !autoRefreshVisible && typeof autoRefresh !== 'function') {
      return /*#__PURE__*/_react.default.createElement(_icon.default, {
        size: "small",
        type: "auto-refresh-off-line"
      });
    }
    return /*#__PURE__*/_react.default.createElement(_icon.default, {
      size: "small",
      type: "refresh-line"
    });
  };
  // 渲染 Radio
  var renderRadio = autoRefreshRadio.map(function (item) {
    return /*#__PURE__*/_react.default.createElement(_components.Menu.RadioItem, {
      className: cls('time-radio'),
      key: item.value,
      disabled: !autoRefreshVisible,
      checked: times === item.value,
      onChange: function onChange() {
        var _item$value;
        return onTimeRadioChange((_item$value = item === null || item === void 0 ? void 0 : item.value) !== null && _item$value !== void 0 ? _item$value : 0);
      }
    }, item.label);
  });
  if (autoRefresh && typeof autoRefresh !== 'function') {
    return /*#__PURE__*/_react.default.createElement(_components.Dropdown, {
      trigger: /*#__PURE__*/_react.default.createElement(_components.Button, {
        iconSize: "small",
        className: cls()
      }, renderRefreshIcon()),
      visible: dropdownVisible,
      onVisibleChange: onDropdownVisibleChange,
      followTrigger: true,
      cache: true,
      triggerType: ['click'],
      align: "tr br"
    }, /*#__PURE__*/_react.default.createElement("div", {
      className: cls()
    }, /*#__PURE__*/_react.default.createElement(_components.Menu, {
      className: cls('auto-refresh')
    }, /*#__PURE__*/_react.default.createElement(_components.Menu.CheckboxItem, {
      checked: autoRefreshVisible,
      onChange: onAutoRefreshChange
    }, (0, _utils.getMessage)('autoRefresh'), autoRefreshVisible && /*#__PURE__*/_react.default.createElement("span", null, "\uFF08", remainTime, "s\uFF09")), renderRadio, /*#__PURE__*/_react.default.createElement(_components.Menu.Divider, {
      key: "divider"
    }), /*#__PURE__*/_react.default.createElement("div", {
      className: cls('manual-refresh')
    }, /*#__PURE__*/_react.default.createElement(_components.Button, {
      type: "primary",
      text: true,
      onClick: onManualRefresh
    }, (0, _utils.getMessage)('manualRefresh'))))));
  }
  return /*#__PURE__*/_react.default.createElement(_components.Balloon.Tooltip, {
    trigger: /*#__PURE__*/_react.default.createElement(_components.Button, {
      iconSize: "small",
      className: cls(),
      onClick: function onClick() {
        var _actionRef$current5, _actionRef$current5$r;
        return (_actionRef$current5 = actionRef.current) === null || _actionRef$current5 === void 0 ? void 0 : (_actionRef$current5$r = _actionRef$current5.refresh) === null || _actionRef$current5$r === void 0 ? void 0 : _actionRef$current5$r.call(_actionRef$current5);
      }
    }, renderRefreshIcon()),
    align: "t"
  }, (0, _utils.getMessage)('refresh'));
};
var _default = LayoutIcon;
exports.default = _default;