'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 _getCurrentPage = _interopRequireDefault(require('../get-current-page'));

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

var _sheet = require('../sheet');

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

var _indexModule = _interopRequireDefault(
  require('./styles/index.module.less'),
);

var _space = _interopRequireDefault(require('../space'));

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 data = {};

var ActionSheet = function ActionSheet() {
  var _useState = (0, _react.useState)({
      items: [],
      cancelText: undefined,
    }),
    _useState2 = _slicedToArray(_useState, 2),
    options = _useState2[0],
    setOptions = _useState2[1];

  var ref = (0, _react.useRef)(null);

  var renderCancel = function renderCancel() {
    if (!options.cancelText) return null;
    return /*#__PURE__*/ _react.default.createElement(
      _one.View,
      {
        className: _indexModule.default.cancel,
        onTap: function onTap() {
          var _ref$current, _ref$current$sheetRef, _ref$current2;

          (_ref$current = ref.current) === null || _ref$current === void 0
            ? void 0
            : (_ref$current$sheetRef = _ref$current.sheetRef) === null ||
              _ref$current$sheetRef === void 0
            ? void 0
            : _ref$current$sheetRef.setVisible(false);
          (_ref$current2 = ref.current) === null || _ref$current2 === void 0
            ? void 0
            : _ref$current2.promiseRef.reject();
        },
      },
      options.cancelText,
    );
  };

  return /*#__PURE__*/ _react.default.createElement(
    _sheet.SheetWrap,
    {
      ref: ref,
      setOptions: setOptions,
      data: data,
    },
    /*#__PURE__*/ _react.default.createElement(
      _space.default,
      {
        vertical: true,
        style: {
          width: '100vw',
        },
        className: _indexModule.default.safe_area,
      },
      options.items.map(function(_ref, index) {
        var label = _ref.label,
          value = _ref.value;
        return /*#__PURE__*/ _react.default.createElement(
          _react.default.Fragment,
          {
            key: index,
          },
          /*#__PURE__*/ _react.default.createElement(
            _one.View,
            {
              className: _indexModule.default.item,
              onTap: function onTap() {
                var _ref$current3, _ref$current3$sheetRe, _ref$current4;

                (_ref$current3 = ref.current) === null ||
                _ref$current3 === void 0
                  ? void 0
                  : (_ref$current3$sheetRe = _ref$current3.sheetRef) === null ||
                    _ref$current3$sheetRe === void 0
                  ? void 0
                  : _ref$current3$sheetRe.setVisible(false);
                (_ref$current4 = ref.current) === null ||
                _ref$current4 === void 0
                  ? void 0
                  : _ref$current4.promiseRef.resolve({
                      label: label,
                      value: value,
                    });
              },
            },
            label,
          ),
          index !== options.items.length - 1 &&
            /*#__PURE__*/ _react.default.createElement(_one.View, {
              className: _indexModule.default.line,
            }),
        );
      }),
      renderCancel(),
    ),
  );
};

ActionSheet.show = function(options) {
  var page = (0, _getCurrentPage.default)();
  return data[page].fn(options);
};

ActionSheet.hide = function() {
  var _data$page$setVisible, _data$page;

  var page = (0, _getCurrentPage.default)();
  return (_data$page$setVisible = (_data$page = data[page]).setVisible) ===
    null || _data$page$setVisible === void 0
    ? void 0
    : _data$page$setVisible.call(_data$page, false);
};

var _default = ActionSheet;
exports.default = _default;
