UNPKG

betanet-mini-ui

Version:
3,153 lines 95.9 kB
(function (global, factory) {
	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tarojs/taro'), require('react'), require('@tarojs/components')) :
	typeof define === 'function' && define.amd ? define(['exports', '@tarojs/taro', 'react', '@tarojs/components'], factory) :
	(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['betanet-mini-ui'] = {}, global.Taro, global.React, global.components));
}(this, (function (exports, Taro, React, components) { 'use strict';

	function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }

	var Taro__default = /*#__PURE__*/_interopDefaultLegacy(Taro);
	var React__default = /*#__PURE__*/_interopDefaultLegacy(React);

	var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};

	function getDefaultExportFromCjs (x) {
		return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
	}

	function createCommonjsModule(fn, basedir, module) {
		return module = {
			path: basedir,
			exports: {},
			require: function (path, base) {
				return commonjsRequire(path, (base === undefined || base === null) ? module.path : base);
			}
		}, fn(module, module.exports), module.exports;
	}

	function commonjsRequire () {
		throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
	}

	var defineProperty = createCommonjsModule(function (module) {
	function _defineProperty(obj, key, value) {
	  if (key in obj) {
	    Object.defineProperty(obj, key, {
	      value: value,
	      enumerable: true,
	      configurable: true,
	      writable: true
	    });
	  } else {
	    obj[key] = value;
	  }

	  return obj;
	}

	module.exports = _defineProperty;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var objectSpread2 = createCommonjsModule(function (module) {
	function ownKeys(object, enumerableOnly) {
	  var keys = Object.keys(object);

	  if (Object.getOwnPropertySymbols) {
	    var symbols = Object.getOwnPropertySymbols(object);

	    if (enumerableOnly) {
	      symbols = symbols.filter(function (sym) {
	        return Object.getOwnPropertyDescriptor(object, sym).enumerable;
	      });
	    }

	    keys.push.apply(keys, symbols);
	  }

	  return keys;
	}

	function _objectSpread2(target) {
	  for (var i = 1; i < arguments.length; i++) {
	    var source = arguments[i] != null ? arguments[i] : {};

	    if (i % 2) {
	      ownKeys(Object(source), true).forEach(function (key) {
	        defineProperty(target, key, source[key]);
	      });
	    } else if (Object.getOwnPropertyDescriptors) {
	      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
	    } else {
	      ownKeys(Object(source)).forEach(function (key) {
	        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
	      });
	    }
	  }

	  return target;
	}

	module.exports = _objectSpread2;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var _objectSpread = /*@__PURE__*/getDefaultExportFromCjs(objectSpread2);

	var arrayLikeToArray = createCommonjsModule(function (module) {
	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;
	}

	module.exports = _arrayLikeToArray;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var arrayWithoutHoles = createCommonjsModule(function (module) {
	function _arrayWithoutHoles(arr) {
	  if (Array.isArray(arr)) return arrayLikeToArray(arr);
	}

	module.exports = _arrayWithoutHoles;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var iterableToArray = createCommonjsModule(function (module) {
	function _iterableToArray(iter) {
	  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
	}

	module.exports = _iterableToArray;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var unsupportedIterableToArray = createCommonjsModule(function (module) {
	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);
	}

	module.exports = _unsupportedIterableToArray;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var nonIterableSpread = createCommonjsModule(function (module) {
	function _nonIterableSpread() {
	  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
	}

	module.exports = _nonIterableSpread;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var toConsumableArray = createCommonjsModule(function (module) {
	function _toConsumableArray(arr) {
	  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
	}

	module.exports = _toConsumableArray;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var _toConsumableArray = /*@__PURE__*/getDefaultExportFromCjs(toConsumableArray);

	/** Used for built-in method references. */
	var objectProto = Object.prototype;

	/**
	 * Checks if `value` is likely a prototype object.
	 *
	 * @private
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
	 */
	function isPrototype(value) {
	  var Ctor = value && value.constructor,
	      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;

	  return value === proto;
	}

	var _isPrototype = isPrototype;

	/**
	 * Creates a unary function that invokes `func` with its argument transformed.
	 *
	 * @private
	 * @param {Function} func The function to wrap.
	 * @param {Function} transform The argument transform.
	 * @returns {Function} Returns the new function.
	 */
	function overArg(func, transform) {
	  return function(arg) {
	    return func(transform(arg));
	  };
	}

	var _overArg = overArg;

	/* Built-in method references for those with the same name as other `lodash` methods. */
	var nativeKeys = _overArg(Object.keys, Object);

	var _nativeKeys = nativeKeys;

	/** Used for built-in method references. */
	var objectProto$1 = Object.prototype;

	/** Used to check objects for own properties. */
	var hasOwnProperty = objectProto$1.hasOwnProperty;

	/**
	 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
	 *
	 * @private
	 * @param {Object} object The object to query.
	 * @returns {Array} Returns the array of property names.
	 */
	function baseKeys(object) {
	  if (!_isPrototype(object)) {
	    return _nativeKeys(object);
	  }
	  var result = [];
	  for (var key in Object(object)) {
	    if (hasOwnProperty.call(object, key) && key != 'constructor') {
	      result.push(key);
	    }
	  }
	  return result;
	}

	var _baseKeys = baseKeys;

	/** Detect free variable `global` from Node.js. */
	var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;

	var _freeGlobal = freeGlobal;

	/** Detect free variable `self`. */
	var freeSelf = typeof self == 'object' && self && self.Object === Object && self;

	/** Used as a reference to the global object. */
	var root = _freeGlobal || freeSelf || Function('return this')();

	var _root = root;

	/** Built-in value references. */
	var Symbol$1 = _root.Symbol;

	var _Symbol = Symbol$1;

	/** Used for built-in method references. */
	var objectProto$2 = Object.prototype;

	/** Used to check objects for own properties. */
	var hasOwnProperty$1 = objectProto$2.hasOwnProperty;

	/**
	 * Used to resolve the
	 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
	 * of values.
	 */
	var nativeObjectToString = objectProto$2.toString;

	/** Built-in value references. */
	var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;

	/**
	 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
	 *
	 * @private
	 * @param {*} value The value to query.
	 * @returns {string} Returns the raw `toStringTag`.
	 */
	function getRawTag(value) {
	  var isOwn = hasOwnProperty$1.call(value, symToStringTag),
	      tag = value[symToStringTag];

	  try {
	    value[symToStringTag] = undefined;
	    var unmasked = true;
	  } catch (e) {}

	  var result = nativeObjectToString.call(value);
	  if (unmasked) {
	    if (isOwn) {
	      value[symToStringTag] = tag;
	    } else {
	      delete value[symToStringTag];
	    }
	  }
	  return result;
	}

	var _getRawTag = getRawTag;

	/** Used for built-in method references. */
	var objectProto$3 = Object.prototype;

	/**
	 * Used to resolve the
	 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
	 * of values.
	 */
	var nativeObjectToString$1 = objectProto$3.toString;

	/**
	 * Converts `value` to a string using `Object.prototype.toString`.
	 *
	 * @private
	 * @param {*} value The value to convert.
	 * @returns {string} Returns the converted string.
	 */
	function objectToString(value) {
	  return nativeObjectToString$1.call(value);
	}

	var _objectToString = objectToString;

	/** `Object#toString` result references. */
	var nullTag = '[object Null]',
	    undefinedTag = '[object Undefined]';

	/** Built-in value references. */
	var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;

	/**
	 * The base implementation of `getTag` without fallbacks for buggy environments.
	 *
	 * @private
	 * @param {*} value The value to query.
	 * @returns {string} Returns the `toStringTag`.
	 */
	function baseGetTag(value) {
	  if (value == null) {
	    return value === undefined ? undefinedTag : nullTag;
	  }
	  return (symToStringTag$1 && symToStringTag$1 in Object(value))
	    ? _getRawTag(value)
	    : _objectToString(value);
	}

	var _baseGetTag = baseGetTag;

	/**
	 * Checks if `value` is the
	 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
	 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
	 *
	 * @static
	 * @memberOf _
	 * @since 0.1.0
	 * @category Lang
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
	 * @example
	 *
	 * _.isObject({});
	 * // => true
	 *
	 * _.isObject([1, 2, 3]);
	 * // => true
	 *
	 * _.isObject(_.noop);
	 * // => true
	 *
	 * _.isObject(null);
	 * // => false
	 */
	function isObject(value) {
	  var type = typeof value;
	  return value != null && (type == 'object' || type == 'function');
	}

	var isObject_1 = isObject;

	/** `Object#toString` result references. */
	var asyncTag = '[object AsyncFunction]',
	    funcTag = '[object Function]',
	    genTag = '[object GeneratorFunction]',
	    proxyTag = '[object Proxy]';

	/**
	 * Checks if `value` is classified as a `Function` object.
	 *
	 * @static
	 * @memberOf _
	 * @since 0.1.0
	 * @category Lang
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
	 * @example
	 *
	 * _.isFunction(_);
	 * // => true
	 *
	 * _.isFunction(/abc/);
	 * // => false
	 */
	function isFunction(value) {
	  if (!isObject_1(value)) {
	    return false;
	  }
	  // The use of `Object#toString` avoids issues with the `typeof` operator
	  // in Safari 9 which returns 'object' for typed arrays and other constructors.
	  var tag = _baseGetTag(value);
	  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
	}

	var isFunction_1 = isFunction;

	/** Used to detect overreaching core-js shims. */
	var coreJsData = _root['__core-js_shared__'];

	var _coreJsData = coreJsData;

	/** Used to detect methods masquerading as native. */
	var maskSrcKey = (function() {
	  var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');
	  return uid ? ('Symbol(src)_1.' + uid) : '';
	}());

	/**
	 * Checks if `func` has its source masked.
	 *
	 * @private
	 * @param {Function} func The function to check.
	 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
	 */
	function isMasked(func) {
	  return !!maskSrcKey && (maskSrcKey in func);
	}

	var _isMasked = isMasked;

	/** Used for built-in method references. */
	var funcProto = Function.prototype;

	/** Used to resolve the decompiled source of functions. */
	var funcToString = funcProto.toString;

	/**
	 * Converts `func` to its source code.
	 *
	 * @private
	 * @param {Function} func The function to convert.
	 * @returns {string} Returns the source code.
	 */
	function toSource(func) {
	  if (func != null) {
	    try {
	      return funcToString.call(func);
	    } catch (e) {}
	    try {
	      return (func + '');
	    } catch (e) {}
	  }
	  return '';
	}

	var _toSource = toSource;

	/**
	 * Used to match `RegExp`
	 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
	 */
	var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;

	/** Used to detect host constructors (Safari). */
	var reIsHostCtor = /^\[object .+?Constructor\]$/;

	/** Used for built-in method references. */
	var funcProto$1 = Function.prototype,
	    objectProto$4 = Object.prototype;

	/** Used to resolve the decompiled source of functions. */
	var funcToString$1 = funcProto$1.toString;

	/** Used to check objects for own properties. */
	var hasOwnProperty$2 = objectProto$4.hasOwnProperty;

	/** Used to detect if a method is native. */
	var reIsNative = RegExp('^' +
	  funcToString$1.call(hasOwnProperty$2).replace(reRegExpChar, '\\$&')
	  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
	);

	/**
	 * The base implementation of `_.isNative` without bad shim checks.
	 *
	 * @private
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is a native function,
	 *  else `false`.
	 */
	function baseIsNative(value) {
	  if (!isObject_1(value) || _isMasked(value)) {
	    return false;
	  }
	  var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;
	  return pattern.test(_toSource(value));
	}

	var _baseIsNative = baseIsNative;

	/**
	 * Gets the value at `key` of `object`.
	 *
	 * @private
	 * @param {Object} [object] The object to query.
	 * @param {string} key The key of the property to get.
	 * @returns {*} Returns the property value.
	 */
	function getValue(object, key) {
	  return object == null ? undefined : object[key];
	}

	var _getValue = getValue;

	/**
	 * Gets the native function at `key` of `object`.
	 *
	 * @private
	 * @param {Object} object The object to query.
	 * @param {string} key The key of the method to get.
	 * @returns {*} Returns the function if it's native, else `undefined`.
	 */
	function getNative(object, key) {
	  var value = _getValue(object, key);
	  return _baseIsNative(value) ? value : undefined;
	}

	var _getNative = getNative;

	/* Built-in method references that are verified to be native. */
	var DataView = _getNative(_root, 'DataView');

	var _DataView = DataView;

	/* Built-in method references that are verified to be native. */
	var Map = _getNative(_root, 'Map');

	var _Map = Map;

	/* Built-in method references that are verified to be native. */
	var Promise$1 = _getNative(_root, 'Promise');

	var _Promise = Promise$1;

	/* Built-in method references that are verified to be native. */
	var Set$1 = _getNative(_root, 'Set');

	var _Set = Set$1;

	/* Built-in method references that are verified to be native. */
	var WeakMap = _getNative(_root, 'WeakMap');

	var _WeakMap = WeakMap;

	/** `Object#toString` result references. */
	var mapTag = '[object Map]',
	    objectTag = '[object Object]',
	    promiseTag = '[object Promise]',
	    setTag = '[object Set]',
	    weakMapTag = '[object WeakMap]';

	var dataViewTag = '[object DataView]';

	/** Used to detect maps, sets, and weakmaps. */
	var dataViewCtorString = _toSource(_DataView),
	    mapCtorString = _toSource(_Map),
	    promiseCtorString = _toSource(_Promise),
	    setCtorString = _toSource(_Set),
	    weakMapCtorString = _toSource(_WeakMap);

	/**
	 * Gets the `toStringTag` of `value`.
	 *
	 * @private
	 * @param {*} value The value to query.
	 * @returns {string} Returns the `toStringTag`.
	 */
	var getTag = _baseGetTag;

	// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
	if ((_DataView && getTag(new _DataView(new ArrayBuffer(1))) != dataViewTag) ||
	    (_Map && getTag(new _Map) != mapTag) ||
	    (_Promise && getTag(_Promise.resolve()) != promiseTag) ||
	    (_Set && getTag(new _Set) != setTag) ||
	    (_WeakMap && getTag(new _WeakMap) != weakMapTag)) {
	  getTag = function(value) {
	    var result = _baseGetTag(value),
	        Ctor = result == objectTag ? value.constructor : undefined,
	        ctorString = Ctor ? _toSource(Ctor) : '';

	    if (ctorString) {
	      switch (ctorString) {
	        case dataViewCtorString: return dataViewTag;
	        case mapCtorString: return mapTag;
	        case promiseCtorString: return promiseTag;
	        case setCtorString: return setTag;
	        case weakMapCtorString: return weakMapTag;
	      }
	    }
	    return result;
	  };
	}

	var _getTag = getTag;

	/**
	 * Checks if `value` is object-like. A value is object-like if it's not `null`
	 * and has a `typeof` result of "object".
	 *
	 * @static
	 * @memberOf _
	 * @since 4.0.0
	 * @category Lang
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
	 * @example
	 *
	 * _.isObjectLike({});
	 * // => true
	 *
	 * _.isObjectLike([1, 2, 3]);
	 * // => true
	 *
	 * _.isObjectLike(_.noop);
	 * // => false
	 *
	 * _.isObjectLike(null);
	 * // => false
	 */
	function isObjectLike(value) {
	  return value != null && typeof value == 'object';
	}

	var isObjectLike_1 = isObjectLike;

	/** `Object#toString` result references. */
	var argsTag = '[object Arguments]';

	/**
	 * The base implementation of `_.isArguments`.
	 *
	 * @private
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
	 */
	function baseIsArguments(value) {
	  return isObjectLike_1(value) && _baseGetTag(value) == argsTag;
	}

	var _baseIsArguments = baseIsArguments;

	/** Used for built-in method references. */
	var objectProto$5 = Object.prototype;

	/** Used to check objects for own properties. */
	var hasOwnProperty$3 = objectProto$5.hasOwnProperty;

	/** Built-in value references. */
	var propertyIsEnumerable = objectProto$5.propertyIsEnumerable;

	/**
	 * Checks if `value` is likely an `arguments` object.
	 *
	 * @static
	 * @memberOf _
	 * @since 0.1.0
	 * @category Lang
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
	 *  else `false`.
	 * @example
	 *
	 * _.isArguments(function() { return arguments; }());
	 * // => true
	 *
	 * _.isArguments([1, 2, 3]);
	 * // => false
	 */
	var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {
	  return isObjectLike_1(value) && hasOwnProperty$3.call(value, 'callee') &&
	    !propertyIsEnumerable.call(value, 'callee');
	};

	var isArguments_1 = isArguments;

	/**
	 * Checks if `value` is classified as an `Array` object.
	 *
	 * @static
	 * @memberOf _
	 * @since 0.1.0
	 * @category Lang
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
	 * @example
	 *
	 * _.isArray([1, 2, 3]);
	 * // => true
	 *
	 * _.isArray(document.body.children);
	 * // => false
	 *
	 * _.isArray('abc');
	 * // => false
	 *
	 * _.isArray(_.noop);
	 * // => false
	 */
	var isArray = Array.isArray;

	var isArray_1 = isArray;

	/** Used as references for various `Number` constants. */
	var MAX_SAFE_INTEGER = 9007199254740991;

	/**
	 * Checks if `value` is a valid array-like length.
	 *
	 * **Note:** This method is loosely based on
	 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
	 *
	 * @static
	 * @memberOf _
	 * @since 4.0.0
	 * @category Lang
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
	 * @example
	 *
	 * _.isLength(3);
	 * // => true
	 *
	 * _.isLength(Number.MIN_VALUE);
	 * // => false
	 *
	 * _.isLength(Infinity);
	 * // => false
	 *
	 * _.isLength('3');
	 * // => false
	 */
	function isLength(value) {
	  return typeof value == 'number' &&
	    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
	}

	var isLength_1 = isLength;

	/**
	 * Checks if `value` is array-like. A value is considered array-like if it's
	 * not a function and has a `value.length` that's an integer greater than or
	 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
	 *
	 * @static
	 * @memberOf _
	 * @since 4.0.0
	 * @category Lang
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
	 * @example
	 *
	 * _.isArrayLike([1, 2, 3]);
	 * // => true
	 *
	 * _.isArrayLike(document.body.children);
	 * // => true
	 *
	 * _.isArrayLike('abc');
	 * // => true
	 *
	 * _.isArrayLike(_.noop);
	 * // => false
	 */
	function isArrayLike(value) {
	  return value != null && isLength_1(value.length) && !isFunction_1(value);
	}

	var isArrayLike_1 = isArrayLike;

	/**
	 * This method returns `false`.
	 *
	 * @static
	 * @memberOf _
	 * @since 4.13.0
	 * @category Util
	 * @returns {boolean} Returns `false`.
	 * @example
	 *
	 * _.times(2, _.stubFalse);
	 * // => [false, false]
	 */
	function stubFalse() {
	  return false;
	}

	var stubFalse_1 = stubFalse;

	var isBuffer_1 = createCommonjsModule(function (module, exports) {
	/** Detect free variable `exports`. */
	var freeExports =  exports && !exports.nodeType && exports;

	/** Detect free variable `module`. */
	var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;

	/** Detect the popular CommonJS extension `module.exports`. */
	var moduleExports = freeModule && freeModule.exports === freeExports;

	/** Built-in value references. */
	var Buffer = moduleExports ? _root.Buffer : undefined;

	/* Built-in method references for those with the same name as other `lodash` methods. */
	var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;

	/**
	 * Checks if `value` is a buffer.
	 *
	 * @static
	 * @memberOf _
	 * @since 4.3.0
	 * @category Lang
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
	 * @example
	 *
	 * _.isBuffer(new Buffer(2));
	 * // => true
	 *
	 * _.isBuffer(new Uint8Array(2));
	 * // => false
	 */
	var isBuffer = nativeIsBuffer || stubFalse_1;

	module.exports = isBuffer;
	});

	/** `Object#toString` result references. */
	var argsTag$1 = '[object Arguments]',
	    arrayTag = '[object Array]',
	    boolTag = '[object Boolean]',
	    dateTag = '[object Date]',
	    errorTag = '[object Error]',
	    funcTag$1 = '[object Function]',
	    mapTag$1 = '[object Map]',
	    numberTag = '[object Number]',
	    objectTag$1 = '[object Object]',
	    regexpTag = '[object RegExp]',
	    setTag$1 = '[object Set]',
	    stringTag = '[object String]',
	    weakMapTag$1 = '[object WeakMap]';

	var arrayBufferTag = '[object ArrayBuffer]',
	    dataViewTag$1 = '[object DataView]',
	    float32Tag = '[object Float32Array]',
	    float64Tag = '[object Float64Array]',
	    int8Tag = '[object Int8Array]',
	    int16Tag = '[object Int16Array]',
	    int32Tag = '[object Int32Array]',
	    uint8Tag = '[object Uint8Array]',
	    uint8ClampedTag = '[object Uint8ClampedArray]',
	    uint16Tag = '[object Uint16Array]',
	    uint32Tag = '[object Uint32Array]';

	/** Used to identify `toStringTag` values of typed arrays. */
	var typedArrayTags = {};
	typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
	typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
	typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
	typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
	typedArrayTags[uint32Tag] = true;
	typedArrayTags[argsTag$1] = typedArrayTags[arrayTag] =
	typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
	typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag] =
	typedArrayTags[errorTag] = typedArrayTags[funcTag$1] =
	typedArrayTags[mapTag$1] = typedArrayTags[numberTag] =
	typedArrayTags[objectTag$1] = typedArrayTags[regexpTag] =
	typedArrayTags[setTag$1] = typedArrayTags[stringTag] =
	typedArrayTags[weakMapTag$1] = false;

	/**
	 * The base implementation of `_.isTypedArray` without Node.js optimizations.
	 *
	 * @private
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
	 */
	function baseIsTypedArray(value) {
	  return isObjectLike_1(value) &&
	    isLength_1(value.length) && !!typedArrayTags[_baseGetTag(value)];
	}

	var _baseIsTypedArray = baseIsTypedArray;

	/**
	 * The base implementation of `_.unary` without support for storing metadata.
	 *
	 * @private
	 * @param {Function} func The function to cap arguments for.
	 * @returns {Function} Returns the new capped function.
	 */
	function baseUnary(func) {
	  return function(value) {
	    return func(value);
	  };
	}

	var _baseUnary = baseUnary;

	var _nodeUtil = createCommonjsModule(function (module, exports) {
	/** Detect free variable `exports`. */
	var freeExports =  exports && !exports.nodeType && exports;

	/** Detect free variable `module`. */
	var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;

	/** Detect the popular CommonJS extension `module.exports`. */
	var moduleExports = freeModule && freeModule.exports === freeExports;

	/** Detect free variable `process` from Node.js. */
	var freeProcess = moduleExports && _freeGlobal.process;

	/** Used to access faster Node.js helpers. */
	var nodeUtil = (function() {
	  try {
	    // Use `util.types` for Node.js 10+.
	    var types = freeModule && freeModule.require && freeModule.require('util').types;

	    if (types) {
	      return types;
	    }

	    // Legacy `process.binding('util')` for Node.js < 10.
	    return freeProcess && freeProcess.binding && freeProcess.binding('util');
	  } catch (e) {}
	}());

	module.exports = nodeUtil;
	});

	/* Node.js helper references. */
	var nodeIsTypedArray = _nodeUtil && _nodeUtil.isTypedArray;

	/**
	 * Checks if `value` is classified as a typed array.
	 *
	 * @static
	 * @memberOf _
	 * @since 3.0.0
	 * @category Lang
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
	 * @example
	 *
	 * _.isTypedArray(new Uint8Array);
	 * // => true
	 *
	 * _.isTypedArray([]);
	 * // => false
	 */
	var isTypedArray = nodeIsTypedArray ? _baseUnary(nodeIsTypedArray) : _baseIsTypedArray;

	var isTypedArray_1 = isTypedArray;

	/** `Object#toString` result references. */
	var mapTag$2 = '[object Map]',
	    setTag$2 = '[object Set]';

	/** Used for built-in method references. */
	var objectProto$6 = Object.prototype;

	/** Used to check objects for own properties. */
	var hasOwnProperty$4 = objectProto$6.hasOwnProperty;

	/**
	 * Checks if `value` is an empty object, collection, map, or set.
	 *
	 * Objects are considered empty if they have no own enumerable string keyed
	 * properties.
	 *
	 * Array-like values such as `arguments` objects, arrays, buffers, strings, or
	 * jQuery-like collections are considered empty if they have a `length` of `0`.
	 * Similarly, maps and sets are considered empty if they have a `size` of `0`.
	 *
	 * @static
	 * @memberOf _
	 * @since 0.1.0
	 * @category Lang
	 * @param {*} value The value to check.
	 * @returns {boolean} Returns `true` if `value` is empty, else `false`.
	 * @example
	 *
	 * _.isEmpty(null);
	 * // => true
	 *
	 * _.isEmpty(true);
	 * // => true
	 *
	 * _.isEmpty(1);
	 * // => true
	 *
	 * _.isEmpty([1, 2, 3]);
	 * // => false
	 *
	 * _.isEmpty({ 'a': 1 });
	 * // => false
	 */
	function isEmpty(value) {
	  if (value == null) {
	    return true;
	  }
	  if (isArrayLike_1(value) &&
	      (isArray_1(value) || typeof value == 'string' || typeof value.splice == 'function' ||
	        isBuffer_1(value) || isTypedArray_1(value) || isArguments_1(value))) {
	    return !value.length;
	  }
	  var tag = _getTag(value);
	  if (tag == mapTag$2 || tag == setTag$2) {
	    return !value.size;
	  }
	  if (_isPrototype(value)) {
	    return !_baseKeys(value).length;
	  }
	  for (var key in value) {
	    if (hasOwnProperty$4.call(value, key)) {
	      return false;
	    }
	  }
	  return true;
	}

	var isEmpty_1 = isEmpty;

	/**
	 * 获取当前环境
	 */
	var ENV = process.env.TARO_ENV;
	var ENV_TYPE;

	(function (ENV_TYPE) {
	  ENV_TYPE["WEAPP"] = "weapp";
	  ENV_TYPE["WEB"] = "web";
	  ENV_TYPE["RN"] = "rn";
	  ENV_TYPE["SWAN"] = "swan";
	  ENV_TYPE["ALIPAY"] = "alipay";
	  ENV_TYPE["TT"] = "tt";
	  ENV_TYPE["QQ"] = "qq";
	  ENV_TYPE["JD"] = "jd";
	  ENV_TYPE["H5"] = "h5";
	  ENV_TYPE["QUICKAPP"] = "quickapp";
	})(ENV_TYPE || (ENV_TYPE = {}));

	var base = /*#__PURE__*/Object.freeze({
		__proto__: null,
		ENV: ENV,
		get ENV_TYPE () { return ENV_TYPE; }
	});

	var ddKeys = new Set();
	var ddKey = 'ddKeys12xas';

	if ('dd' === ENV) {
	  dd.getStorage({
	    key: ddKey,
	    success: function success(res) {
	      var _ref = res || {},
	          data = _ref.data;

	      !isEmpty_1(data) && ddKeys.add.apply(ddKeys, _toConsumableArray(JSON.parse(data)));
	    }
	  });
	}

	var setDdKeys = function setDdKeys(key) {
	  ddKeys.add(key);
	  dd.setStorage({
	    key: ddKey,
	    data: JSON.stringify(_toConsumableArray(ddKeys))
	  });
	};

	var setStorage = function setStorage(params) {
	  switch (ENV) {
	    case 'dd':
	      params && setDdKeys(params.key);
	      return dd.setStorage(params);

	    default:
	      return Taro__default['default'].setStorage(params);
	  }
	};
	var setStorageSync = function setStorageSync(key, value) {
	  switch (ENV) {
	    case 'dd':
	      setDdKeys(key);
	      return dd.setStorageSync({
	        key: key,
	        data: value
	      });

	    default:
	      return Taro__default['default'].setStorageSync(key, value);
	  }
	};
	var getStorage = function getStorage(params) {
	  switch (ENV) {
	    case 'dd':
	      return dd.getStorage(params);

	    default:
	      return Taro__default['default'].getStorage(params);
	  }
	};
	var getStorageSync = function getStorageSync(key) {
	  switch (ENV) {
	    case 'dd':
	      var _ref2 = dd.getStorageSync({
	        key: key
	      }) || {},
	          data = _ref2.data;

	      return data;

	    default:
	      return Taro__default['default'].getStorageSync(key);
	  }
	};
	var removeStorage = function removeStorage(param) {
	  switch (ENV) {
	    case 'dd':
	      return dd.removeStorage(param);

	    default:
	      return Taro__default['default'].removeStorage(param);
	  }
	};
	var removeStorageSync = function removeStorageSync(key) {
	  switch (ENV) {
	    case 'dd':
	      return dd.removeStorageSync({
	        key: key
	      });

	    default:
	      return Taro__default['default'].removeStorageSync(key);
	  }
	};
	var clearStorageSync = function clearStorageSync() {
	  switch (ENV) {
	    case 'dd':
	      ddKeys && ddKeys.forEach(function (item) {
	        return removeStorageSync(item);
	      });
	      removeStorageSync(ddKey);
	      ddKeys.clear();
	      return;

	    default:
	      return Taro__default['default'].clearStorageSync();
	  }
	};
	var clearStorage = function clearStorage() {
	  switch (ENV) {
	    case 'dd':
	      ddKeys && ddKeys.forEach(function (item) {
	        return removeStorage({
	          key: item
	        });
	      });
	      removeStorage({
	        key: ddKey
	      });
	      ddKeys.clear();
	      return;

	    default:
	      return Taro__default['default'].clearStorage();
	  }
	};

	var storage = /*#__PURE__*/Object.freeze({
		__proto__: null,
		setStorage: setStorage,
		setStorageSync: setStorageSync,
		getStorage: getStorage,
		getStorageSync: getStorageSync,
		removeStorage: removeStorage,
		removeStorageSync: removeStorageSync,
		clearStorageSync: clearStorageSync,
		clearStorage: clearStorage
	});

	var scanCode = function scanCode(param) {
	  // const {scanType} = param || {}
	  switch (ENV) {
	    case 'dd':
	      return dd.scan(param);

	    default:
	      return Taro__default['default'].scanCode(param);
	  }
	};
	var getSystemInfoSync = function getSystemInfoSync() {
	  switch (ENV) {
	    case 'dd':
	      return dd.getSystemInfoSync();

	    default:
	      return Taro__default['default'].getSystemInfoSync();
	  }
	};

	var device = /*#__PURE__*/Object.freeze({
		__proto__: null,
		scanCode: scanCode,
		getSystemInfoSync: getSystemInfoSync
	});

	var showLoading = function showLoading(param) {
	  var _ref = param || {},
	      content = _ref.title;

	  switch (ENV) {
	    case 'dd':
	      return dd.showLoading(_objectSpread({
	        content: content
	      }, param));

	    default:
	      return Taro__default['default'].showLoading(param);
	  }
	};
	var hideLoading = function hideLoading(param) {
	  switch (ENV) {
	    case 'dd':
	      return dd.showLoading();

	    default:
	      return Taro__default['default'].hideLoading(param);
	  }
	};
	var showNavigationBarLoading = function showNavigationBarLoading() {
	  switch (ENV) {
	    case 'dd':
	      return dd.showLoading();

	    default:
	      return Taro__default['default'].showNavigationBarLoading();
	  }
	};
	var hideNavigationBarLoading = function hideNavigationBarLoading() {
	  switch (ENV) {
	    case 'dd':
	      return dd.hideLoading();

	    default:
	      return Taro__default['default'].hideNavigationBarLoading();
	  }
	};
	var showModal = function showModal(param) {
	  var _ref2 = param || {},
	      confirmButtonText = _ref2.confirmText,
	      cancelButtonText = _ref2.cancelText;

	  switch (ENV) {
	    case 'dd':
	      return dd.confirm(_objectSpread({
	        confirmButtonText: confirmButtonText,
	        cancelButtonText: cancelButtonText
	      }, param));

	    default:
	      return Taro__default['default'].showModal(param);
	  }
	};
	var showToast = function showToast(param) {
	  var content = param.title;

	  switch (ENV) {
	    case 'dd':
	      return dd.showToast(_objectSpread({
	        content: content
	      }, param));

	    default:
	      return Taro__default['default'].showToast(param);
	  }
	};

	var interactive = /*#__PURE__*/Object.freeze({
		__proto__: null,
		showLoading: showLoading,
		hideLoading: hideLoading,
		showNavigationBarLoading: showNavigationBarLoading,
		hideNavigationBarLoading: hideNavigationBarLoading,
		showModal: showModal,
		showToast: showToast
	});

	var getLocation = function getLocation(param) {
	  var _ref = param || {},
	      ddType = _ref.ddType;

	  switch (ENV) {
	    case 'dd':
	      return dd.getLocation(_objectSpread(_objectSpread({}, param), {}, {
	        type: ddType
	      }));

	    default:
	      return Taro__default['default'].getLocation(param);
	  }
	};

	var location = /*#__PURE__*/Object.freeze({
		__proto__: null,
		getLocation: getLocation
	});

	var switchTab = function switchTab(param) {
	  switch (ENV) {
	    case 'dd':
	      return dd.switchTab(param);

	    default:
	      return Taro__default['default'].switchTab();
	  }
	};
	var navigateTo = function navigateTo(param) {
	  switch (ENV) {
	    case 'dd':
	      return dd.navigateTo(param);

	    default:
	      return Taro__default['default'].navigateTo(param);
	  }
	};
	var navigateBack = function navigateBack(param) {
	  switch (ENV) {
	    case 'dd':
	      return dd.navigateBack(param);

	    default:
	      return Taro__default['default'].navigateBack(param);
	  }
	};
	var reLaunch = function reLaunch(param) {
	  switch (ENV) {
	    case 'dd':
	      return dd.reLaunch(param);

	    default:
	      return Taro__default['default'].reLaunch(param);
	  }
	};

	var navigation = /*#__PURE__*/Object.freeze({
		__proto__: null,
		switchTab: switchTab,
		navigateTo: navigateTo,
		navigateBack: navigateBack,
		reLaunch: reLaunch
	});

	var chooseImage = function chooseImage(option) {
	  switch (ENV) {
	    case 'dd':
	      return dd.chooseImage(option);

	    default:
	      return Taro__default['default'].chooseImage(option);
	  }
	};
	var previewImage = function previewImage(option) {
	  switch (ENV) {
	    case 'dd':
	      var urls = option.urls,
	          current = option.current;
	      var index = urls.findIndex(function (item) {
	        return item === current;
	      });
	      return dd.previewImage(_objectSpread(_objectSpread({}, option), {}, {
	        urls: urls,
	        current: index
	      }));

	    default:
	      return Taro__default['default'].previewImage(option);
	  }
	};

	var media = /*#__PURE__*/Object.freeze({
		__proto__: null,
		chooseImage: chooseImage,
		previewImage: previewImage
	});

	var request = function request(option) {
	  switch (ENV) {
	    case 'dd':
	      var data = option.data,
	          method = option.method;
	      return dd.httpRequest(_objectSpread(_objectSpread({}, option), {}, {
	        data: method.toLowerCase() === 'post' ? JSON.stringify(data) : data
	      }));

	    default:
	      return Taro__default['default'].request(option);
	  }
	};
	var uploadFile = function uploadFile(option) {
	  switch (ENV) {
	    case 'dd':
	      var name = option.name;
	      return dd.uploadFile(_objectSpread(_objectSpread({}, option), {}, {
	        fileName: name
	      }));

	    default:
	      return Taro__default['default'].uploadFile(option);
	  }
	};

	var network = /*#__PURE__*/Object.freeze({
		__proto__: null,
		request: request,
		uploadFile: uploadFile
	});

	var login = function login(option) {
	  switch (ENV) {
	    case 'dd':
	      return dd.getAuthCode().then(function (res) {
	        return {
	          code: res === null || res === void 0 ? void 0 : res.authCode
	        };
	      });

	    default:
	      return Taro__default['default'].login(option);
	  }
	};

	var open = /*#__PURE__*/Object.freeze({
		__proto__: null,
		login: login
	});

	var getNativeObj = function getNativeObj() {
	  switch (ENV) {
	    case 'dd':
	      return dd;

	    case 'wx':
	      return wx;

	    default:
	      return {};
	  }
	};

	var BM = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, getNativeObj()), Taro__default['default']), storage), device), interactive), location), navigation), media), network), base), open);

	function uuid() {
	  var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8;
	  var radix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 16;
	  var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
	  var value = [];
	  var i = 0;
	  radix = radix || chars.length;

	  if (len) {
	    for (i = 0; i < len; i++) {
	      value[i] = chars[0 | Math.random() * radix];
	    }
	  } else {
	    var r;
	    value[8] = value[13] = value[18] = value[23] = '-';
	    value[14] = '4';

	    for (i = 0; i < 36; i++) {
	      if (!value[i]) {
	        r = 0 | Math.random() * 16;
	        value[i] = chars[i === 19 ? r & 0x3 | 0x8 : r];
	      }
	    }
	  }

	  return value.join('');
	}

	var objectWithoutPropertiesLoose = createCommonjsModule(function (module) {
	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;
	}

	module.exports = _objectWithoutPropertiesLoose;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var objectWithoutProperties = createCommonjsModule(function (module) {
	function _objectWithoutProperties(source, excluded) {
	  if (source == null) return {};
	  var target = objectWithoutPropertiesLoose(source, excluded);
	  var key, i;

	  if (Object.getOwnPropertySymbols) {
	    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);

	    for (i = 0; i < sourceSymbolKeys.length; i++) {
	      key = sourceSymbolKeys[i];
	      if (excluded.indexOf(key) >= 0) continue;
	      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
	      target[key] = source[key];
	    }
	  }

	  return target;
	}

	module.exports = _objectWithoutProperties;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var _objectWithoutProperties = /*@__PURE__*/getDefaultExportFromCjs(objectWithoutProperties);

	var _excluded = ["term"];

	var AbDigit = function AbDigit(_ref) {
	  var term = _ref.term,
	      rest = _objectWithoutProperties(_ref, _excluded);

	  return /*#__PURE__*/React__default['default'].createElement(components.View, null, /*#__PURE__*/React__default['default'].createElement(components.Text, null, term), /*#__PURE__*/React__default['default'].createElement(components.Input, Object.assign({}, rest, {
	    type: "digit"
	  })));
	};

	var runtime_1 = createCommonjsModule(function (module) {
	/**
	 * Copyright (c) 2014-present, Facebook, Inc.
	 *
	 * This source code is licensed under the MIT license found in the
	 * LICENSE file in the root directory of this source tree.
	 */

	var runtime = (function (exports) {

	  var Op = Object.prototype;
	  var hasOwn = Op.hasOwnProperty;
	  var undefined$1; // More compressible than void 0.
	  var $Symbol = typeof Symbol === "function" ? Symbol : {};
	  var iteratorSymbol = $Symbol.iterator || "@@iterator";
	  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
	  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";

	  function define(obj, key, value) {
	    Object.defineProperty(obj, key, {
	      value: value,
	      enumerable: true,
	      configurable: true,
	      writable: true
	    });
	    return obj[key];
	  }
	  try {
	    // IE 8 has a broken Object.defineProperty that only works on DOM objects.
	    define({}, "");
	  } catch (err) {
	    define = function(obj, key, value) {
	      return obj[key] = value;
	    };
	  }

	  function wrap(innerFn, outerFn, self, tryLocsList) {
	    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
	    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
	    var generator = Object.create(protoGenerator.prototype);
	    var context = new Context(tryLocsList || []);

	    // The ._invoke method unifies the implementations of the .next,
	    // .throw, and .return methods.
	    generator._invoke = makeInvokeMethod(innerFn, self, context);

	    return generator;
	  }
	  exports.wrap = wrap;

	  // Try/catch helper to minimize deoptimizations. Returns a completion
	  // record like context.tryEntries[i].completion. This interface could
	  // have been (and was previously) designed to take a closure to be
	  // invoked without arguments, but in all the cases we care about we
	  // already have an existing method we want to call, so there's no need
	  // to create a new function object. We can even get away with assuming
	  // the method takes exactly one argument, since that happens to be true
	  // in every case, so we don't have to touch the arguments object. The
	  // only additional allocation required is the completion record, which
	  // has a stable shape and so hopefully should be cheap to allocate.
	  function tryCatch(fn, obj, arg) {
	    try {
	      return { type: "normal", arg: fn.call(obj, arg) };
	    } catch (err) {
	      return { type: "throw", arg: err };
	    }
	  }

	  var GenStateSuspendedStart = "suspendedStart";
	  var GenStateSuspendedYield = "suspendedYield";
	  var GenStateExecuting = "executing";
	  var GenStateCompleted = "completed";

	  // Returning this object from the innerFn has the same effect as
	  // breaking out of the dispatch switch statement.
	  var ContinueSentinel = {};

	  // Dummy constructor functions that we use as the .constructor and
	  // .constructor.prototype properties for functions that return Generator
	  // objects. For full spec compliance, you may wish to configure your
	  // minifier not to mangle the names of these two functions.
	  function Generator() {}
	  function GeneratorFunction() {}
	  function GeneratorFunctionPrototype() {}

	  // This is a polyfill for %IteratorPrototype% for environments that
	  // don't natively support it.
	  var IteratorPrototype = {};
	  define(IteratorPrototype, iteratorSymbol, function () {
	    return this;
	  });

	  var getProto = Object.getPrototypeOf;
	  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
	  if (NativeIteratorPrototype &&
	      NativeIteratorPrototype !== Op &&
	      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
	    // This environment has a native %IteratorPrototype%; use it instead
	    // of the polyfill.
	    IteratorPrototype = NativeIteratorPrototype;
	  }

	  var Gp = GeneratorFunctionPrototype.prototype =
	    Generator.prototype = Object.create(IteratorPrototype);
	  GeneratorFunction.prototype = GeneratorFunctionPrototype;
	  define(Gp, "constructor", GeneratorFunctionPrototype);
	  define(GeneratorFunctionPrototype, "constructor", GeneratorFunction);
	  GeneratorFunction.displayName = define(
	    GeneratorFunctionPrototype,
	    toStringTagSymbol,
	    "GeneratorFunction"
	  );

	  // Helper for defining the .next, .throw, and .return methods of the
	  // Iterator interface in terms of a single ._invoke method.
	  function defineIteratorMethods(prototype) {
	    ["next", "throw", "return"].forEach(function(method) {
	      define(prototype, method, function(arg) {
	        return this._invoke(method, arg);
	      });
	    });
	  }

	  exports.isGeneratorFunction = function(genFun) {
	    var ctor = typeof genFun === "function" && genFun.constructor;
	    return ctor
	      ? ctor === GeneratorFunction ||
	        // For the native GeneratorFunction constructor, the best we can
	        // do is to check its .name property.
	        (ctor.displayName || ctor.name) === "GeneratorFunction"
	      : false;
	  };

	  exports.mark = function(genFun) {
	    if (Object.setPrototypeOf) {
	      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
	    } else {
	      genFun.__proto__ = GeneratorFunctionPrototype;
	      define(genFun, toStringTagSymbol, "GeneratorFunction");
	    }
	    genFun.prototype = Object.create(Gp);
	    return genFun;
	  };

	  // Within the body of any async function, `await x` is transformed to
	  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
	  // `hasOwn.call(value, "__await")` to determine if the yielded value is
	  // meant to be awaited.
	  exports.awrap = function(arg) {
	    return { __await: arg };
	  };

	  function AsyncIterator(generator, PromiseImpl) {
	    function invoke(method, arg, resolve, reject) {
	      var record = tryCatch(generator[method], generator, arg);
	      if (record.type === "throw") {
	        reject(record.arg);
	      } else {
	        var result = record.arg;
	        var value = result.value;
	        if (value &&
	            typeof value === "object" &&
	            hasOwn.call(value, "__await")) {
	          return PromiseImpl.resolve(value.__await).then(function(value) {
	            invoke("next", value, resolve, reject);
	          }, function(err) {
	            invoke("throw", err, resolve, reject);
	          });
	        }

	        return PromiseImpl.resolve(value).then(function(unwrapped) {
	          // When a yielded Promise is resolved, its final value becomes
	          // the .value of the Promise<{value,done}> result for the
	          // current iteration.
	          result.value = unwrapped;
	          resolve(result);
	        }, function(error) {
	          // If a rejected Promise was yielded, throw the rejection back
	          // into the async generator function so it can be handled there.
	          return invoke("throw", error, resolve, reject);
	        });
	      }
	    }

	    var previousPromise;

	    function enqueue(method, arg) {
	      function callInvokeWithMethodAndArg() {
	        return new PromiseImpl(function(resolve, reject) {
	          invoke(method, arg, resolve, reject);
	        });
	      }

	      return previousPromise =
	        // If enqueue has been called before, then we want to wait until
	        // all previous Promises have been resolved before calling invoke,
	        // so that results are always delivered in the correct order. If
	        // enqueue has not been called before, then it is important to
	        // call invoke immediately, without waiting on a callback to fire,
	        // so that the async generator function has the opportunity to do
	        // any necessary setup in a predictable way. This predictability
	        // is why the Promise constructor synchronously invokes its
	        // executor callback, and why async functions synchronously
	        // execute code before the first await. Since we implement simple
	        // async functions in terms of async generators, it is especially
	        // important to get this right, even though it requires care.
	        previousPromise ? previousPromise.then(
	          callInvokeWithMethodAndArg,
	          // Avoid propagating failures to Promises returned by later
	          // invocations of the iterator.
	          callInvokeWithMethodAndArg
	        ) : callInvokeWithMethodAndArg();
	    }

	    // Define the unified helper method that is used to implement .next,
	    // .throw, and .return (see defineIteratorMethods).
	    this._invoke = enqueue;
	  }

	  defineIteratorMethods(AsyncIterator.prototype);
	  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
	    return this;
	  });
	  exports.AsyncIterator = AsyncIterator;

	  // Note that simple async functions are implemented on top of
	  // AsyncIterator objects; they just return a Promise for the value of
	  // the final result produced by the iterator.
	  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
	    if (PromiseImpl === void 0) PromiseImpl = Promise;

	    var iter = new AsyncIterator(
	      wrap(innerFn, outerFn, self, tryLocsList),
	      PromiseImpl
	    );

	    return exports.isGeneratorFunction(outerFn)
	      ? iter // If outerFn is a generator, return the full iterator.
	      : iter.next().then(function(result) {
	          return result.done ? result.value : iter.next();
	        });
	  };

	  function makeInvokeMethod(innerFn, self, context) {
	    var state = GenStateSuspendedStart;

	    return function invoke(method, arg) {
	      if (state === GenStateExecuting) {
	        throw new Error("Generator is already running");
	      }

	      if (state === GenStateCompleted) {
	        if (method === "throw") {
	          throw arg;
	        }

	        // Be forgiving, per 25.3.3.3.3 of the spec:
	        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
	        return doneResult();
	      }

	      context.method = method;
	      context.arg = arg;

	      while (true) {
	        var delegate = context.delegate;
	        if (delegate) {
	          var delegateResult = maybeInvokeDelegate(delegate, context);
	          if (delegateResult) {
	            if (delegateResult === ContinueSentinel) continue;
	            return delegateResult;
	          }
	        }

	        if (context.method === "next") {
	          // Setting context._sent for legacy support of Babel's
	          // function.sent implementation.
	          context.sent = context._sent = context.arg;

	        } else if (context.method === "throw") {
	          if (state === GenStateSuspendedStart) {
	            state = GenStateCompleted;
	            throw context.arg;
	          }

	          context.dispatchException(context.arg);

	        } else if (context.method === "return") {
	          context.abrupt("return", context.arg);
	        }

	        state = GenStateExecuting;

	        var record = tryCatch(innerFn, self, context);
	        if (record.type === "normal") {
	          // If an exception is thrown from innerFn, we leave state ===
	          // GenStateExecuting and loop back for another invocation.
	          state = context.done
	            ? GenStateCompleted
	            : GenStateSuspendedYield;

	          if (record.arg === ContinueSentinel) {
	            continue;
	          }

	          return {
	            value: record.arg,
	            done: context.done
	          };

	        } else if (record.type === "throw") {
	          state = GenStateCompleted;
	          // Dispatch the exception by looping back around to the
	          // context.dispatchException(context.arg) call above.
	          context.method = "throw";
	          context.arg = record.arg;
	        }
	      }
	    };
	  }

	  // Call delegate.iterator[context.method](context.arg) and handle the
	  // result, either by returning a { value, done } result from the
	  // delegate iterator, or by modifying context.method and context.arg,
	  // setting context.delegate to null, and returning the ContinueSentinel.
	  function maybeInvokeDelegate(delegate, context) {
	    var method = delegate.iterator[context.method];
	    if (method === undefined$1) {
	      // A .throw or .return when the delegate iterator has no .throw
	      // method always terminates the yield* loop.
	      context.delegate = null;

	      if (context.method === "throw") {
	        // Note: ["return"] must be used for ES3 parsing compatibility.
	        if (delegate.iterator["return"]) {
	          // If the delegate iterator has a return method, give it a
	          // chance to clean up.
	          context.method = "return";
	          context.arg = undefined$1;
	          maybeInvokeDelegate(delegate, context);

	          if (context.method === "throw") {
	            // If maybeInvokeDelegate(context) changed context.method from
	            // "return" to "throw", let that override the TypeError below.
	            return ContinueSentinel;
	          }
	        }

	        context.method = "throw";
	        context.arg = new TypeError(
	          "The iterator does not provide a 'throw' method");
	      }

	      return ContinueSentinel;
	    }

	    var record = tryCatch(method, delegate.iterator, context.arg);

	    if (record.type === "throw") {
	      context.method = "throw";
	      context.arg = record.arg;
	      context.delegate = null;
	      return ContinueSentinel;
	    }

	    var info = record.arg;

	    if (! info) {
	      context.method = "throw";
	      context.arg = new TypeError("iterator result is not an object");
	      context.delegate = null;
	      return ContinueSentinel;
	    }

	    if (info.done) {
	      // Assign the result of the finished delegate to the temporary
	      // variable specified by delegate.resultName (see delegateYield).
	      context[delegate.resultName] = info.value;

	      // Resume execution at the desired location (see delegateYield).
	      context.next = delegate.nextLoc;

	      // If context.method was "throw" but the delegate handled the
	      // exception, let the outer generator proceed normally. If
	      // context.method was "next", forget context.arg since it has been
	      // "consumed" by the delegate iterator. If context.method was
	      // "return", allow the original .return call to continue in the
	      // outer generator.
	      if (context.method !== "return") {
	        context.method = "next";
	        context.arg = undefined$1;
	      }

	    } else {
	      // Re-yield the result returned by the delegate method.
	      return info;
	    }

	    // The delegate iterator is finished, so forget it and continue with
	    // the outer generator.
	    context.delegate = null;
	    return ContinueSentinel;
	  }

	  // Define Generator.prototype.{next,throw,return} in terms of the
	  // unified ._invoke helper method.
	  defineIteratorMethods(Gp);

	  define(Gp, toStringTagSymbol, "Generator");

	  // A Generator should always return itself as the iterator object when the
	  // @@iterator function is called on it. Some browsers' implementations of the
	  // iterator prototype chain incorrectly implement this, causing the Generator
	  // object to not be returned from this call. This ensures that doesn't happen.
	  // See https://github.com/facebook/regenerator/issues/274 for more details.
	  define(Gp, iteratorSymbol, function() {
	    return this;
	  });

	  define(Gp, "toString", function() {
	    return "[object Generator]";
	  });

	  function pushTryEntry(locs) {
	    var entry = { tryLoc: locs[0] };

	    if (1 in locs) {
	      entry.catchLoc = locs[1];
	    }

	    if (2 in locs) {
	      entry.finallyLoc = locs[2];
	      entry.afterLoc = locs[3];
	    }

	    this.tryEntries.push(entry);
	  }

	  function resetTryEntry(entry) {
	    var record = entry.completion || {};
	    record.type = "normal";
	    delete record.arg;
	    entry.completion = record;
	  }

	  function Context(tryLocsList) {
	    // The root entry object (effectively a try statement without a catch
	    // or a finally block) gives us a place to store values thrown from
	    // locations where there is no enclosing try statement.
	    this.tryEntries = [{ tryLoc: "root" }];
	    tryLocsList.forEach(pushTryEntry, this);
	    this.reset(true);
	  }

	  exports.keys = function(object) {
	    var keys = [];
	    for (var key in object) {
	      keys.push(key);
	    }
	    keys.reverse();

	    // Rather than returning an object with a next method, we keep
	    // things simple and return the next function itself.
	    return function next() {
	      while (keys.length) {
	        var key = keys.pop();
	        if (key in object) {
	          next.value = key;
	          next.done = false;
	          return next;
	        }
	      }

	      // To avoid creating an additional object, we just hang the .value
	      // and .done properties off the next function object itself. This
	      // also ensures that the minifier will not anonymize the function.
	      next.done = true;
	      return next;
	    };
	  };

	  function values(iterable) {
	    if (iterable) {
	      var iteratorMethod = iterable[iteratorSymbol];
	      if (iteratorMethod) {
	        return iteratorMethod.call(iterable);
	      }

	      if (typeof iterable.next === "function") {
	        return iterable;
	      }

	      if (!isNaN(iterable.length)) {
	        var i = -1, next = function next() {
	          while (++i < iterable.length) {
	            if (hasOwn.call(iterable, i)) {
	              next.value = iterable[i];
	              next.done = false;
	              return next;
	            }
	          }

	          next.value = undefined$1;
	          next.done = true;

	          return next;
	        };

	        return next.next = next;
	      }
	    }

	    // Return an iterator with no values.
	    return { next: doneResult };
	  }
	  exports.values = values;

	  function doneResult() {
	    return { value: undefined$1, done: true };
	  }

	  Context.prototype = {
	    constructor: Context,

	    reset: function(skipTempReset) {
	      this.prev = 0;
	      this.next = 0;
	      // Resetting context._sent for legacy support of Babel's
	      // function.sent implementation.
	      this.sent = this._sent = undefined$1;
	      this.done = false;
	      this.delegate = null;

	      this.method = "next";
	      this.arg = undefined$1;

	      this.tryEntries.forEach(resetTryEntry);

	      if (!skipTempReset) {
	        for (var name in this) {
	          // Not sure about the optimal order of these conditions:
	          if (name.charAt(0) === "t" &&
	              hasOwn.call(this, name) &&
	              !isNaN(+name.slice(1))) {
	            this[name] = undefined$1;
	          }
	        }
	      }
	    },

	    stop: function() {
	      this.done = true;

	      var rootEntry = this.tryEntries[0];
	      var rootRecord = rootEntry.completion;
	      if (rootRecord.type === "throw") {
	        throw rootRecord.arg;
	      }

	      return this.rval;
	    },

	    dispatchException: function(exception) {
	      if (this.done) {
	        throw exception;
	      }

	      var context = this;
	      function handle(loc, caught) {
	        record.type = "throw";
	        record.arg = exception;
	        context.next = loc;

	        if (caught) {
	          // If the dispatched exception was caught by a catch block,
	          // then let that catch block handle the exception normally.
	          context.method = "next";
	          context.arg = undefined$1;
	        }

	        return !! caught;
	      }

	      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
	        var entry = this.tryEntries[i];
	        var record = entry.completion;

	        if (entry.tryLoc === "root") {
	          // Exception thrown outside of any try block that could handle
	          // it, so set the completion value of the entire function to
	          // throw the exception.
	          return handle("end");
	        }

	        if (entry.tryLoc <= this.prev) {
	          var hasCatch = hasOwn.call(entry, "catchLoc");
	          var hasFinally = hasOwn.call(entry, "finallyLoc");

	          if (hasCatch && hasFinally) {
	            if (this.prev < entry.catchLoc) {
	              return handle(entry.catchLoc, true);
	            } else if (this.prev < entry.finallyLoc) {
	              return handle(entry.finallyLoc);
	            }

	          } else if (hasCatch) {
	            if (this.prev < entry.catchLoc) {
	              return handle(entry.catchLoc, true);
	            }

	          } else if (hasFinally) {
	            if (this.prev < entry.finallyLoc) {
	              return handle(entry.finallyLoc);
	            }

	          } else {
	            throw new Error("try statement without catch or finally");
	          }
	        }
	      }
	    },

	    abrupt: function(type, arg) {
	      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
	        var entry = this.tryEntries[i];
	        if (entry.tryLoc <= this.prev &&
	            hasOwn.call(entry, "finallyLoc") &&
	            this.prev < entry.finallyLoc) {
	          var finallyEntry = entry;
	          break;
	        }
	      }

	      if (finallyEntry &&
	          (type === "break" ||
	           type === "continue") &&
	          finallyEntry.tryLoc <= arg &&
	          arg <= finallyEntry.finallyLoc) {
	        // Ignore the finally entry if control is not jumping to a
	        // location outside the try/catch block.
	        finallyEntry = null;
	      }

	      var record = finallyEntry ? finallyEntry.completion : {};
	      record.type = type;
	      record.arg = arg;

	      if (finallyEntry) {
	        this.method = "next";
	        this.next = finallyEntry.finallyLoc;
	        return ContinueSentinel;
	      }

	      return this.complete(record);
	    },

	    complete: function(record, afterLoc) {
	      if (record.type === "throw") {
	        throw record.arg;
	      }

	      if (record.type === "break" ||
	          record.type === "continue") {
	        this.next = record.arg;
	      } else if (record.type === "return") {
	        this.rval = this.arg = record.arg;
	        this.method = "return";
	        this.next = "end";
	      } else if (record.type === "normal" && afterLoc) {
	        this.next = afterLoc;
	      }

	      return ContinueSentinel;
	    },

	    finish: function(finallyLoc) {
	      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
	        var entry = this.tryEntries[i];
	        if (entry.finallyLoc === finallyLoc) {
	          this.complete(entry.completion, entry.afterLoc);
	          resetTryEntry(entry);
	          return ContinueSentinel;
	        }
	      }
	    },

	    "catch": function(tryLoc) {
	      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
	        var entry = this.tryEntries[i];
	        if (entry.tryLoc === tryLoc) {
	          var record = entry.completion;
	          if (record.type === "throw") {
	            var thrown = record.arg;
	            resetTryEntry(entry);
	          }
	          return thrown;
	        }
	      }

	      // The context.catch method must only be called with a location
	      // argument that corresponds to a known catch block.
	      throw new Error("illegal catch attempt");
	    },

	    delegateYield: function(iterable, resultName, nextLoc) {
	      this.delegate = {
	        iterator: values(iterable),
	        resultName: resultName,
	        nextLoc: nextLoc
	      };

	      if (this.method === "next") {
	        // Deliberately forget the last sent value so that we don't
	        // accidentally pass it on to the delegate.
	        this.arg = undefined$1;
	      }

	      return ContinueSentinel;
	    }
	  };

	  // Regardless of whether this script is executing as a CommonJS module
	  // or not, return the runtime object so that we can declare the variable
	  // regeneratorRuntime in the outer scope, which allows this module to be
	  // injected easily by `bin/regenerator --include-runtime script.js`.
	  return exports;

	}(
	  // If this script is executing as a CommonJS module, use module.exports
	  // as the regeneratorRuntime namespace. Otherwise create a new empty
	  // object. Either way, the resulting object will be used to initialize
	  // the regeneratorRuntime variable at the top of this file.
	   module.exports 
	));

	try {
	  regeneratorRuntime = runtime;
	} catch (accidentalStrictMode) {
	  // This module should not be running in strict mode, so the above
	  // assignment should always work unless something is misconfigured. Just
	  // in case runtime.js accidentally runs in strict mode, in modern engines
	  // we can explicitly access globalThis. In older engines we can escape
	  // strict mode using a global Function call. This could conceivably fail
	  // if a Content Security Policy forbids using Function, but in that case
	  // the proper solution is to fix the accidental strict mode problem. If
	  // you've misconfigured your bundler to force strict mode and applied a
	  // CSP to forbid Function, and you're not willing to fix either of those
	  // problems, please detail your unique predicament in a GitHub issue.
	  if (typeof globalThis === "object") {
	    globalThis.regeneratorRuntime = runtime;
	  } else {
	    Function("r", "regeneratorRuntime = r")(runtime);
	  }
	}
	});

	var regenerator = runtime_1;

	var asyncToGenerator = createCommonjsModule(function (module) {
	function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
	  try {
	    var info = gen[key](arg);
	    var value = info.value;
	  } catch (error) {
	    reject(error);
	    return;
	  }

	  if (info.done) {
	    resolve(value);
	  } else {
	    Promise.resolve(value).then(_next, _throw);
	  }
	}

	function _asyncToGenerator(fn) {
	  return function () {
	    var self = this,
	        args = arguments;
	    return new Promise(function (resolve, reject) {
	      var gen = fn.apply(self, args);

	      function _next(value) {
	        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
	      }

	      function _throw(err) {
	        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
	      }

	      _next(undefined);
	    });
	  };
	}

	module.exports = _asyncToGenerator;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var _asyncToGenerator = /*@__PURE__*/getDefaultExportFromCjs(asyncToGenerator);

	var classnames = createCommonjsModule(function (module) {
	/*!
	  Copyright (c) 2018 Jed Watson.
	  Licensed under the MIT License (MIT), see
	  http://jedwatson.github.io/classnames
	*/
	/* global define */

	(function () {

		var hasOwn = {}.hasOwnProperty;

		function classNames() {
			var classes = [];

			for (var i = 0; i < arguments.length; i++) {
				var arg = arguments[i];
				if (!arg) continue;

				var argType = typeof arg;

				if (argType === 'string' || argType === 'number') {
					classes.push(arg);
				} else if (Array.isArray(arg)) {
					if (arg.length) {
						var inner = classNames.apply(null, arg);
						if (inner) {
							classes.push(inner);
						}
					}
				} else if (argType === 'object') {
					if (arg.toString === Object.prototype.toString) {
						for (var key in arg) {
							if (hasOwn.call(arg, key) && arg[key]) {
								classes.push(key);
							}
						}
					} else {
						classes.push(arg.toString());
					}
				}
			}

			return classes.join(' ');
		}

		if ( module.exports) {
			classNames.default = classNames;
			module.exports = classNames;
		} else {
			window.classNames = classNames;
		}
	}());
	});

	var generateMatrix = function generateMatrix(files, col, showAddBtn) {
	  var matrix = [];
	  var length = showAddBtn ? files.length + 1 : files.length;
	  var row = Math.ceil(length / col);

	  for (var i = 0; i < row; i++) {
	    if (i === row - 1) {
	      // 最后一行数据加上添加按钮
	      var lastArr = files.slice(i * col);

	      if (lastArr.length < col) {
	        if (showAddBtn) {
	          lastArr.push({
	            type: 'btn',
	            uuid: uuid()
	          });
	        } // 填补剩下的空列


	        for (var j = lastArr.length; j < col; j++) {
	          lastArr.push({
	            type: 'blank',
	            uuid: uuid()
	          });
	        }
	      }

	      matrix.push(lastArr);
	    } else {
	      matrix.push(files.slice(i * col, (i + 1) * col));
	    }
	  }

	  return matrix;
	};

	var PicturePicker = function PicturePicker(props) {
	  var _props$className = props.className,
	      className = _props$className === void 0 ? '' : _props$className,
	      _props$customStyle = props.customStyle,
	      customStyle = _props$customStyle === void 0 ? '' : _props$customStyle,
	      _props$value = props.value,
	      value = _props$value === void 0 ? [] : _props$value,
	      _props$max = props.max,
	      max = _props$max === void 0 ? 99 : _props$max,
	      _props$mode = props.mode,
	      mode = _props$mode === void 0 ? 'aspectFill' : _props$mode,
	      _props$length = props.length,
	      length = _props$length === void 0 ? 4 : _props$length,
	      _props$showAddBtn = props.showAddBtn,
	      showAddBtn = _props$showAddBtn === void 0 ? true : _props$showAddBtn,
	      _props$onChange = props.onChange,
	      onChange = _props$onChange === void 0 ? function () {} : _props$onChange,
	      _props$onImageClick = props.onImageClick,
	      onImageClick = _props$onImageClick === void 0 ? function () {} : _props$onImageClick,
	      _props$onFail = props.onFail,
	      onFail = _props$onFail === void 0 ? function () {} : _props$onFail,
	      _props$editable = props.editable,
	      editable = _props$editable === void 0 ? true : _props$editable;

	  var handleRemoveImg = function handleRemoveImg(idx, event) {
	    event.stopPropagation();
	    event.preventDefault();

	    if (BM$1.ENV === Taro__default['default'].ENV_TYPE.WEB) {
	      window.URL.revokeObjectURL(value[idx].url);
	    }

	    var rFiles = [];
	    var dFiles = [];
	    value.forEach(function (v, i) {
	      if (i !== idx) {
	        rFiles.push(v);
	      } else {
	        dFiles.push(v);
	      }
	    });
	    onChange(rFiles, 'remove', dFiles, idx);
	  };

	  var handleImageClick = function handleImageClick(idx, item) {
	    BM$1.previewImage({
	      current: item.url,
	      urls: value.map(function (item) {
	        return item.url;
	      })
	    });
	    onImageClick && onImageClick(idx, value[idx]);
	  };

	  var analysisFiles = function analysisFiles(flle) {
	    switch (BM$1.ENV) {
	      case 'dd':
	        return {
	          path: flle === null || flle === void 0 ? void 0 : flle.path,
	          size: flle === null || flle === void 0 ? void 0 : flle.size,
	          type: flle === null || flle === void 0 ? void 0 : flle.fileType,
	          name: BM$1.uuid() + '.' + (flle === null || flle === void 0 ? void 0 : flle.fileType)
	        };

	      default:
	        var path = (flle === null || flle === void 0 ? void 0 : flle.path) || '';
	        var suffix = path === null || path === void 0 ? void 0 : path.slice(path === null || path === void 0 ? void 0 : path.lastIndexOf('.'));
	        var filename = BM$1.uuid() + suffix;
	        return {
	          path: path,
	          size: flle === null || flle === void 0 ? void 0 : flle.size,
	          type: suffix.slice(1),
	          name: filename
	        };
	    }
	  };

	  var chooseFile = function chooseFile() {
	    var multiple = props.multiple,
	        sizeType = props.sizeType,
	        sourceType = props.sourceType;
	    var filePathName = BM$1.ENV === 'dd' ? 'files' : 'tempFiles';
	    var params = {};

	    if (multiple) {
	      params.count = max ? max - (value === null || value === void 0 ? void 0 : value.length) : 99;
	    } else {
	      params.count = 1;
	    }

	    if (sizeType) {
	      params.sizeType = sizeType;
	    }

	    if (sourceType) {
	      params.sourceType = sourceType;
	    }

	    BM$1.chooseImage(params).then(function (res) {
	      var targetFiles = res.tempFilePaths.map(function (path, i) {
	        return {
	          url: path,
	          file: analysisFiles(res[filePathName][i])
	        };
	      });
	      var newFiles = value.concat(targetFiles);
	      onChange(newFiles, 'add', targetFiles);
	    }).catch(onFail);
	  };

	  var rowLength = length <= 0 ? 1 : length; // 行数

	  var matrix = generateMatrix(value, rowLength, showAddBtn);
	  var rootCls = classnames('bm-image-picker', className);
	  return /*#__PURE__*/React__default['default'].createElement(components.View, {
	    className: rootCls,
	    style: customStyle
	  }, matrix.map(function (row, i) {
	    return /*#__PURE__*/React__default['default'].createElement(components.View, {
	      className: "bm-image-picker__flex-box",
	      key: i + 1
	    }, row.map(function (item, j) {
	      var _item$file, _item$file2, _item$file3;

	      var errorCls = ((_item$file = item.file) === null || _item$file === void 0 ? void 0 : _item$file.status) === 'error' ? 'bm-image-picker__item-error' : '';
	      return item.url ? /*#__PURE__*/React__default['default'].createElement(components.View, {
	        className: "bm-image-picker__flex-item",
	        key: i * length + j
	      }, /*#__PURE__*/React__default['default'].createElement(components.View, {
	        className: classnames('bm-image-picker__item', errorCls)
	      }, editable && /*#__PURE__*/React__default['default'].createElement(components.View, {
	        className: "bm-image-picker__remove-btn",
	        onClick: function onClick(e) {
	          return handleRemoveImg(i * length + j, e);
	        }
	      }), /*#__PURE__*/React__default['default'].createElement(components.Image, {
	        className: "bm-image-picker__preview-img",
	        mode: mode,
	        src: ((_item$file2 = item.file) === null || _item$file2 === void 0 ? void 0 : _item$file2.path) || item.url,
	        onClick: function onClick(e) {
	          return handleImageClick(i * length + j, item);
	        }
	      })), ((_item$file3 = item.file) === null || _item$file3 === void 0 ? void 0 : _item$file3.status) === 'uploading' && /*#__PURE__*/React__default['default'].createElement(components.View, {
	        className: "loading-con"
	      }, /*#__PURE__*/React__default['default'].createElement(components.View, {
	        className: "loading-mask"
	      }), /*#__PURE__*/React__default['default'].createElement(components.Image, {
	        className: "loading-animation",
	        src: require('../../assets/images/loading.svg')
	      }))) : /*#__PURE__*/React__default['default'].createElement(components.View, {
	        className: "bm-image-picker__flex-item",
	        key: 'empty_' + i * length + j
	      }, editable && item.type === 'btn' && max > (value === null || value === void 0 ? void 0 : value.length) && /*#__PURE__*/React__default['default'].createElement(components.View, {
	        className: "bm-image-picker__item bm-image-picker__choose-btn",
	        onClick: chooseFile
	      }, /*#__PURE__*/React__default['default'].createElement(components.View, {
	        className: "add-bar"
	      }), /*#__PURE__*/React__default['default'].createElement(components.View, {
	        className: "add-bar"
	      })));
	    }));
	  }));
	};

	var BmPicture = function BmPicture(props) {
	  var action = props.action,
	      _props$name = props.name,
	      name = _props$name === void 0 ? 'file' : _props$name,
	      _props$formData = props.formData,
	      formData = _props$formData === void 0 ? {} : _props$formData,
	      _props$value = props.value,
	      value = _props$value === void 0 ? [] : _props$value,
	      _props$fileType = props.fileType,
	      fileType = _props$fileType === void 0 ? 'image' : _props$fileType,
	      _props$onChange = props.onChange,
	      onChange = _props$onChange === void 0 ? function () {} : _props$onChange,
	      beforeUpload = props.beforeUpload;
	  var uploadCount = 0;

	  var handleChange = function handleChange(files, operationType, operationData, index) {
	    if (operationType !== 'add') {
	      onChange(_toConsumableArray(files), operationType, operationData, index);
	      return;
	    }

	    operationData === null || operationData === void 0 ? void 0 : operationData.forEach( /*#__PURE__*/function () {
	      var _ref = _asyncToGenerator( /*#__PURE__*/regenerator.mark(function _callee(currentFile) {
	        var _currentFile$file, _currentFile$file2;

	        var cFileName, uploadParam, innerParam, bData, _ref2, innerAction, innerFormData, fFormData, iFromData, fAction, iAction, fFromData, cFromData, finalAction, result;

	        return regenerator.wrap(function _callee$(_context) {
	          while (1) {
	            switch (_context.prev = _context.next) {
	              case 0:
	                uploadCount++;
	                currentFile.file.status = 'uploading';
	                onChange(_toConsumableArray(files), operationType, operationData);
	                cFileName = currentFile === null || currentFile === void 0 ? void 0 : (_currentFile$file = currentFile.file) === null || _currentFile$file === void 0 ? void 0 : _currentFile$file.name;
	                uploadParam = {
	                  filePath: (currentFile === null || currentFile === void 0 ? void 0 : (_currentFile$file2 = currentFile.file) === null || _currentFile$file2 === void 0 ? void 0 : _currentFile$file2.path) || '',
	                  name: name,
	                  fileName: cFileName,
	                  fileType: fileType
	                };

	                if (!beforeUpload) {
	                  _context.next = 29;
	                  break;
	                }

	                _context.next = 8;
	                return beforeUpload(files, currentFile);

	              case 8:
	                bData = _context.sent;
	                _ref2 = bData || {}, innerAction = _ref2.action, innerFormData = _ref2.formData;
	                fFormData = innerFormData || formData;
	                iFromData = fFormData instanceof Function ? fFormData() : fFormData;
	                fAction = innerAction || action;
	                iAction = fAction instanceof Function ? fAction() : fAction;
	                _context.next = 16;
	                return iFromData;

	              case 16:
	                fFromData = _context.sent;
	                _context.t0 = _objectSpread;
	                _context.t1 = _objectSpread({}, uploadParam);
	                _context.t2 = {};
	                _context.next = 22;
	                return iAction;

	              case 22:
	                _context.t3 = _context.sent;
	                _context.t4 = fFromData;
	                _context.t5 = (fFromData === null || fFromData === void 0 ? void 0 : fFromData.fileName) || cFileName;
	                _context.t6 = {
	                  url: _context.t3,
	                  formData: _context.t4,
	                  fileName: _context.t5
	                };
	                innerParam = (0, _context.t0)(_context.t1, _context.t2, _context.t6);
	                _context.next = 42;
	                break;

	              case 29:
	                cFromData = formData instanceof Function ? formData() : formData;
	                finalAction = action instanceof Function ? action() : action;
	                _context.t7 = _objectSpread;
	                _context.t8 = _objectSpread({}, uploadParam);
	                _context.t9 = {};
	                _context.next = 36;
	                return finalAction;

	              case 36:
	                _context.t10 = _context.sent;
	                _context.next = 39;
	                return cFromData;

	              case 39:
	                _context.t11 = _context.sent;
	                _context.t12 = {
	                  url: _context.t10,
	                  formData: _context.t11
	                };
	                innerParam = (0, _context.t7)(_context.t8, _context.t9, _context.t12);

	              case 42:
	                _context.prev = 42;
	                _context.next = 45;
	                return upload(innerParam);

	              case 45:
	                result = _context.sent;

	                if ((result === null || result === void 0 ? void 0 : result.statusCode) === 200) {
	                  currentFile.file.status = 'done';
	                } else {
	                  currentFile.file.status = 'error';
	                }

	                currentFile.file.response = result;
	                _context.next = 54;
	                break;

	              case 50:
	                _context.prev = 50;
	                _context.t13 = _context["catch"](42);
	                currentFile.file.status = 'error';
	                currentFile.file.response = _context.t13;

	              case 54:
	                if (uploadCount >= operationData.length) {
	                  onChange(_toConsumableArray(files), operationType, operationData);
	                }

	              case 55:
	              case "end":
	                return _context.stop();
	            }
	          }
	        }, _callee, null, [[42, 50]]);
	      }));

	      return function (_x) {
	        return _ref.apply(this, arguments);
	      };
	    }());
	  };

	  var upload = function upload(param) {
	    var _ref3 = param || {},
	        url = _ref3.url,
	        filePath = _ref3.filePath,
	        _ref3$name = _ref3.name,
	        name = _ref3$name === void 0 ? 'file' : _ref3$name,
	        fileName = _ref3.fileName,
	        _ref3$formData = _ref3.formData,
	        formData = _ref3$formData === void 0 ? {} : _ref3$formData,
	        _ref3$fileType = _ref3.fileType,
	        fileType = _ref3$fileType === void 0 ? 'image' : _ref3$fileType;

	    return BM.uploadFile({
	      url: url,
	      filePath: filePath,
	      name: name,
	      fileName: fileName,
	      formData: formData,
	      fileType: fileType
	    });
	  };

	  return /*#__PURE__*/React__default['default'].createElement(PicturePicker, Object.assign({}, props, {
	    value: _toConsumableArray(value),
	    onChange: handleChange
	  }));
	};

	BmPicture.defaultProps = {};

	var _excluded$1 = ["value", "onChange", "onFocus", "onBlur", "onConfirm", "editable", "onClick", "onKeyboardHeightChange", "onErrorClick", "children", "title", "required", "clear", "className", "name", "border", "customStyle", "placeholderClass", "error"];

	function getInputProps(props) {
	  var actualProps = {
	    type: props.type,
	    maxlength: props.maxlength,
	    disabled: props.disabled,
	    password: false
	  };

	  switch (actualProps.type) {
	    case 'phone':
	      actualProps.type = 'number';
	      actualProps.maxlength = 11;
	      break;

	    case 'password':
	      actualProps.type = 'text';
	      actualProps.password = true;
	      break;
	  }

	  if (!props.disabled && !props.editable) {
	    actualProps.disabled = true;
	  }

	  return actualProps;
	}

	var inputClearing = false;

	var BmInput = function BmInput(props) {
	  var value = props.value,
	      onChange = props.onChange,
	      onFocus = props.onFocus,
	      onBlur = props.onBlur,
	      onConfirm = props.onConfirm,
	      editable = props.editable,
	      onClick = props.onClick,
	      onKeyboardHeightChange = props.onKeyboardHeightChange,
	      onErrorClick = props.onErrorClick,
	      children = props.children,
	      title = props.title,
	      required = props.required,
	      clear = props.clear,
	      className = props.className,
	      name = props.name,
	      border = props.border,
	      customStyle = props.customStyle,
	      placeholderClass = props.placeholderClass,
	      error = props.error,
	      rest = _objectWithoutProperties(props, _excluded$1);

	  var handleInput = function handleInput(event) {
	    return onChange(event.detail.value, event);
	  };

	  var handleFocus = function handleFocus(event) {
	    if (typeof onFocus === 'function') {
	      onFocus(event.detail.value, event);
	    }
	  };

	  var handleBlur = function handleBlur(event) {
	    if (typeof onBlur === 'function') {
	      onBlur(event.detail.value, event);
	    }

	    if (event.type === 'blur' && !inputClearing) {
	      // fix # 583 BmInput 不触发 onChange 的问题
	      onChange(event.detail.value, event);
	    } // 还原状态


	    inputClearing = false;
	  };

	  var handleConfirm = function handleConfirm(event) {
	    if (typeof onConfirm === 'function') {
	      onConfirm(event.detail.value, event);
	    }
	  };

	  var handleClick = function handleClick(event) {
	    if (!editable && typeof onClick === 'function') {
	      onClick(event);
	    }
	  };

	  var handleClearValue = function handleClearValue(event) {
	    inputClearing = true;
	    onChange('', event);
	  };

	  var handleKeyboardHeightChange = function handleKeyboardHeightChange(event) {
	    if (typeof onKeyboardHeightChange === 'function') {
	      onKeyboardHeightChange(event);
	    }
	  };

	  var handleErrorClick = function handleErrorClick(event) {
	    if (typeof onErrorClick === 'function') {
	      onErrorClick(event);
	    }
	  };

	  var _getInputProps = getInputProps(props),
	      type = _getInputProps.type,
	      maxlength = _getInputProps.maxlength,
	      disabled = _getInputProps.disabled,
	      password = _getInputProps.password;

	  var rootCls = classnames('bm-input', {
	    'bm-input--without-border': !border
	  }, className);
	  var containerCls = classnames('bm-input__container', {
	    'bm-input--error': error,
	    'bm-input--disabled': disabled
	  });
	  var overlayCls = classnames('bm-input__overlay', {
	    'bm-input__overlay--hidden': !disabled
	  });
	  var placeholderCls = classnames('placeholder', placeholderClass);
	  var id = name && {
	    id: name
	  };
	  return /*#__PURE__*/React__default['default'].createElement(components.View, {
	    className: rootCls,
	    style: customStyle
	  }, /*#__PURE__*/React__default['default'].createElement(components.View, {
	    className: containerCls
	  }, /*#__PURE__*/React__default['default'].createElement(components.View, {
	    className: overlayCls,
	    onClick: handleClick
	  }), title && /*#__PURE__*/React__default['default'].createElement(components.Label, {
	    className: "bm-input__title ".concat(required && 'bm-input__title--required'),
	    for: name
	  }, title), /*#__PURE__*/React__default['default'].createElement(components.Input, Object.assign({
	    className: "bm-input__input"
	  }, id, {
	    name: name,
	    value: value
	  }, rest, {
	    type: type,
	    maxlength: maxlength,
	    password: password,
	    onInput: handleInput,
	    onFocus: handleFocus,
	    onBlur: handleBlur,
	    onConfirm: handleConfirm,
	    onKeyboardHeightChange: handleKeyboardHeightChange
	  })), clear && value && /*#__PURE__*/React__default['default'].createElement(components.View, {
	    className: "bm-input__icon",
	    onTouchEnd: handleClearValue
	  }, /*#__PURE__*/React__default['default'].createElement(components.View, {
	    className: "bm-input__icon-clear"
	  })), error && /*#__PURE__*/React__default['default'].createElement(components.View, {
	    className: "bm-input__icon",
	    onTouchStart: handleErrorClick
	  }, /*#__PURE__*/React__default['default'].createElement(components.View, {
	    className: "bm-input__icon-close"
	  })), /*#__PURE__*/React__default['default'].createElement(components.View, {
	    className: "bm-input__children"
	  }, children)));
	};

	BmInput.defaultProps = {
	  error: false,
	  disabled: false,
	  editable: true,
	  onChange: function onChange() {}
	};

	var arrayWithHoles = createCommonjsModule(function (module) {
	function _arrayWithHoles(arr) {
	  if (Array.isArray(arr)) return arr;
	}

	module.exports = _arrayWithHoles;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var iterableToArrayLimit = createCommonjsModule(function (module) {
	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;
	}

	module.exports = _iterableToArrayLimit;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var nonIterableRest = createCommonjsModule(function (module) {
	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.");
	}

	module.exports = _nonIterableRest;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var slicedToArray = createCommonjsModule(function (module) {
	function _slicedToArray(arr, i) {
	  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
	}

	module.exports = _slicedToArray;
	module.exports["default"] = module.exports, module.exports.__esModule = true;
	});

	var _slicedToArray = /*@__PURE__*/getDefaultExportFromCjs(slicedToArray);

	var _excluded$2 = ["value", "placeholder", "options", "optionKey", "optionValue", "onChange", "mode"];

	var BmPicker = function BmPicker(_ref) {
	  var value = _ref.value,
	      placeholder = _ref.placeholder,
	      options = _ref.options,
	      optionKey = _ref.optionKey,
	      _ref$optionValue = _ref.optionValue,
	      optionValue = _ref$optionValue === void 0 ? optionKey : _ref$optionValue,
	      onChange = _ref.onChange,
	      mode = _ref.mode,
	      rest = _objectWithoutProperties(_ref, _excluded$2);

	  var handleChange = function handleChange(e) {
	    var reValue = e.detail.value;

	    switch (mode) {
	      case 'time':
	      case 'date':
	        onChange(reValue, reValue);
	        break;

	      case 'multiSelector':
	        var _analysisMultiData = analysisMultiData(reValue),
	            _analysisMultiData2 = _slicedToArray(_analysisMultiData, 2),
	            item = _analysisMultiData2[0],
	            itemObj = _analysisMultiData2[1];

	        onChange(item, itemObj);
	        break;

	      default:
	        var fValue = optionKey ? options[reValue][optionValue] : options[reValue];
	        onChange(fValue, options[reValue]);
	        break;
	    }
	  };

	  var analysisMultiData = function analysisMultiData(param) {
	    var itemObj = [];
	    var item = param.map(function (p, i) {
	      if (optionKey) {
	        itemObj.push(options[i][p]);
	        return options[i][p][optionValue];
	      }

	      itemObj.push(options[i][p]);
	      return options[i][p];
	    });
	    return [item, itemObj];
	  };

	  var getCurrentDisplay = function getCurrentDisplay() {
	    if (!optionKey) return !value || typeof value === 'string' ? value : value.join(',');

	    if (mode === 'multiSelector') {
	      var f = value === null || value === void 0 ? void 0 : value.map(function (v, i) {
	        var c = options[i].find(function (item) {
	          return item[optionValue] === v;
	        });
	        return c[optionKey];
	      });
	      return f === null || f === void 0 ? void 0 : f.join(',');
	    }

	    var currentItem = (options === null || options === void 0 ? void 0 : options.find(function (item) {
	      return item[optionValue] == value;
	    })) || {};
	    return currentItem[optionKey];
	  };

	  return /*#__PURE__*/React__default['default'].createElement(components.View, {
	    className: "bm-picker"
	  }, /*#__PURE__*/React__default['default'].createElement(components.Picker, Object.assign({}, rest, {
	    mode: mode,
	    range: options,
	    rangeKey: optionKey,
	    onChange: handleChange
	  }), /*#__PURE__*/React__default['default'].createElement(components.View, {
	    className: "bm-picker-item"
	  }, /*#__PURE__*/React__default['default'].createElement(components.Text, null, getCurrentDisplay() || placeholder), /*#__PURE__*/React__default['default'].createElement(components.Image, {
	    className: "bm-picker-item-arrow",
	    src: require('../../assets/images/arrow-down.svg')
	  }))));
	};

	BmPicker.defaultProps = {
	  placeholder: '请点击选择',
	  options: [],
	  onChange: function onChange() {}
	};

	function useModal(option) {
	  var initialOption = React.useRef();
	  React.useEffect(function () {
	    initialOption.current = option;
	  }, [option]);
	  var showModalAsync = React.useCallback(function (option) {
	    return new Promise(function (resolve, reject) {
	      try {
	        if (!option && !initialOption.current) {
	          console.warn('please provide a option');
	          return reject(new Error('please provide a option'));
	        } else {
	          var options = Object.assign({}, initialOption.current || {}, option || {});
	          Taro.showModal(_objectSpread(_objectSpread({}, options), {}, {
	            success: resolve,
	            fail: reject
	          })).catch(reject);
	        }
	      } catch (e) {
	        reject(e);
	      }
	    });
	  }, [initialOption]);
	  return [showModalAsync];
	}

	var BM$1 = _objectSpread(_objectSpread({}, BM), {}, {
	  uuid: uuid
	});

	exports.BmDigit = AbDigit;
	exports.BmInput = BmInput;
	exports.BmPicker = BmPicker;
	exports.BmPicture = BmPicture;
	exports.default = BM$1;
	exports.useModal = useModal;

	Object.defineProperty(exports, '__esModule', { value: true });

})));
//# sourceMappingURL=betanet-mini-ui.js.map