tdesign-mobile-vue
Version:
tdesign-mobile-vue
41,712 lines • 1.55 MB
JavaScript
/**
* tdesign v1.12.1
* (c) 2025 TDesign Group
* @license MIT
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue')) :
typeof define === 'function' && define.amd ? define(['exports', 'vue'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TDesign = {}, global.Vue));
})(this, (function (exports, vue) { 'use strict';
function _typeof$2(o) {
"@babel/helpers - typeof";
return _typeof$2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof$2(o);
}
function toPrimitive(t, r) {
if ("object" != _typeof$2(t) || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof$2(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
function toPropertyKey(t) {
var i = toPrimitive(t, "string");
return "symbol" == _typeof$2(i) ? i : i + "";
}
function _defineProperty$3(e, r, t) {
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[r] = t, e;
}
function setStyle(el, styles) {
var keys = Object.keys(styles);
keys.forEach(function (key) {
el.style[key] = styles[key];
});
}
function _arrayLikeToArray$6(r, a) {
(null == a || a > r.length) && (a = r.length);
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
return n;
}
function _arrayWithoutHoles(r) {
if (Array.isArray(r)) return _arrayLikeToArray$6(r);
}
function _iterableToArray(r) {
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
}
function _unsupportedIterableToArray$5(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray$6(r, a);
var t = {}.toString.call(r).slice(8, -1);
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$6(r, a) : void 0;
}
}
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.");
}
function _toConsumableArray(r) {
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray$5(r) || _nonIterableSpread();
}
function _objectWithoutPropertiesLoose$1(r, e) {
if (null == r) return {};
var t = {};
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
if (-1 !== e.indexOf(n)) continue;
t[n] = r[n];
}
return t;
}
function _objectWithoutProperties$1(e, t) {
if (null == e) return {};
var o,
r,
i = _objectWithoutPropertiesLoose$1(e, t);
if (Object.getOwnPropertySymbols) {
var n = Object.getOwnPropertySymbols(e);
for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
}
return i;
}
function _arrayWithHoles(r) {
if (Array.isArray(r)) return r;
}
function _iterableToArrayLimit(r, l) {
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (null != t) {
var e,
n,
i,
u,
a = [],
f = !0,
o = !1;
try {
if (i = (t = t.call(r)).next, 0 === l) {
if (Object(t) !== t) return;
f = !1;
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
} catch (r) {
o = !0, n = r;
} finally {
try {
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
} finally {
if (o) throw n;
}
}
return a;
}
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _slicedToArray(r, e) {
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray$5(r, e) || _nonIterableRest();
}
/** Detect free variable `global` from Node.js. */
var freeGlobal = (typeof global === "undefined" ? "undefined" : _typeof$2(global)) == 'object' && global && global.Object === Object && global;
var freeGlobal$1 = freeGlobal;
/** Detect free variable `self`. */
var freeSelf = (typeof self === "undefined" ? "undefined" : _typeof$2(self)) == 'object' && self && self.Object === Object && self;
/** Used as a reference to the global object. */
var root = freeGlobal$1 || freeSelf || Function('return this')();
var root$1 = root;
/** Built-in value references. */
var _Symbol = root$1.Symbol;
var _Symbol$1 = _Symbol;
/** Used for built-in method references. */
var objectProto$i = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$g = objectProto$i.hasOwnProperty;
/**
* Used to resolve the
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var nativeObjectToString$1 = objectProto$i.toString;
/** Built-in value references. */
var symToStringTag$1 = _Symbol$1 ? _Symbol$1.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$g.call(value, symToStringTag$1),
tag = value[symToStringTag$1];
try {
value[symToStringTag$1] = undefined;
var unmasked = true;
} catch (e) {}
var result = nativeObjectToString$1.call(value);
if (unmasked) {
if (isOwn) {
value[symToStringTag$1] = tag;
} else {
delete value[symToStringTag$1];
}
}
return result;
}
/** Used for built-in method references. */
var objectProto$h = Object.prototype;
/**
* Used to resolve the
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var nativeObjectToString = objectProto$h.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.call(value);
}
/** `Object#toString` result references. */
var nullTag = '[object Null]',
undefinedTag = '[object Undefined]';
/** Built-in value references. */
var symToStringTag = _Symbol$1 ? _Symbol$1.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 && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
}
/**
* 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$2(value) == 'object';
}
/** `Object#toString` result references. */
var symbolTag$3 = '[object Symbol]';
/**
* Checks if `value` is classified as a `Symbol` primitive or object.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
* @example
*
* _.isSymbol(Symbol.iterator);
* // => true
*
* _.isSymbol('abc');
* // => false
*/
function isSymbol(value) {
return _typeof$2(value) == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag$3;
}
/**
* A specialized version of `_.map` for arrays without support for iteratee
* shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the new mapped array.
*/
function arrayMap(array, iteratee) {
var index = -1,
length = array == null ? 0 : array.length,
result = Array(length);
while (++index < length) {
result[index] = iteratee(array[index], index, array);
}
return result;
}
/**
* 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 INFINITY$1 = 1 / 0;
/** Used to convert symbols to primitives and strings. */
var symbolProto$2 = _Symbol$1 ? _Symbol$1.prototype : undefined,
symbolToString = symbolProto$2 ? symbolProto$2.toString : undefined;
/**
* The base implementation of `_.toString` which doesn't convert nullish
* values to empty strings.
*
* @private
* @param {*} value The value to process.
* @returns {string} Returns the string.
*/
function baseToString(value) {
// Exit early for strings to avoid a performance hit in some environments.
if (typeof value == 'string') {
return value;
}
if (isArray$1(value)) {
// Recursively convert values (susceptible to call stack limits).
return arrayMap(value, baseToString) + '';
}
if (isSymbol(value)) {
return symbolToString ? symbolToString.call(value) : '';
}
var result = value + '';
return result == '0' && 1 / value == -INFINITY$1 ? '-0' : result;
}
/** Used to match a single whitespace character. */
var reWhitespace = /\s/;
/**
* Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
* character of `string`.
*
* @private
* @param {string} string The string to inspect.
* @returns {number} Returns the index of the last non-whitespace character.
*/
function trimmedEndIndex(string) {
var index = string.length;
while (index-- && reWhitespace.test(string.charAt(index))) {}
return index;
}
/** Used to match leading whitespace. */
var reTrimStart = /^\s+/;
/**
* The base implementation of `_.trim`.
*
* @private
* @param {string} string The string to trim.
* @returns {string} Returns the trimmed string.
*/
function baseTrim(string) {
return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') : string;
}
/**
* 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$1(value) {
var type = _typeof$2(value);
return value != null && (type == 'object' || type == 'function');
}
/** Used as references for various `Number` constants. */
var NAN = 0 / 0;
/** Used to detect bad signed hexadecimal string values. */
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
/** Used to detect binary string values. */
var reIsBinary = /^0b[01]+$/i;
/** Used to detect octal string values. */
var reIsOctal = /^0o[0-7]+$/i;
/** Built-in method references without a dependency on `root`. */
var freeParseInt = parseInt;
/**
* Converts `value` to a number.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to process.
* @returns {number} Returns the number.
* @example
*
* _.toNumber(3.2);
* // => 3.2
*
* _.toNumber(Number.MIN_VALUE);
* // => 5e-324
*
* _.toNumber(Infinity);
* // => Infinity
*
* _.toNumber('3.2');
* // => 3.2
*/
function toNumber$1(value) {
if (typeof value == 'number') {
return value;
}
if (isSymbol(value)) {
return NAN;
}
if (isObject$1(value)) {
var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
value = isObject$1(other) ? other + '' : other;
}
if (typeof value != 'string') {
return value === 0 ? value : +value;
}
value = baseTrim(value);
var isBinary = reIsBinary.test(value);
return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
}
/**
* This method returns the first argument it receives.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Util
* @param {*} value Any value.
* @returns {*} Returns `value`.
* @example
*
* var object = { 'a': 1 };
*
* console.log(_.identity(object) === object);
* // => true
*/
function identity$1(value) {
return value;
}
/** `Object#toString` result references. */
var asyncTag = '[object AsyncFunction]',
funcTag$2 = '[object Function]',
genTag$1 = '[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$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag;
}
/** Used to detect overreaching core-js shims. */
var coreJsData = root$1['__core-js_shared__'];
var coreJsData$1 = coreJsData;
/** Used to detect methods masquerading as native. */
var maskSrcKey = function () {
var uid = /[^.]+$/.exec(coreJsData$1 && coreJsData$1.keys && coreJsData$1.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;
}
/** Used for built-in method references. */
var funcProto$2 = Function.prototype;
/** Used to resolve the decompiled source of functions. */
var funcToString$2 = funcProto$2.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$2.call(func);
} catch (e) {}
try {
return func + '';
} catch (e) {}
}
return '';
}
/**
* 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$g = 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$f = objectProto$g.hasOwnProperty;
/** Used to detect if a method is native. */
var reIsNative = RegExp('^' + funcToString$1.call(hasOwnProperty$f).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(value) ? reIsNative : reIsHostCtor;
return pattern.test(toSource(value));
}
/**
* 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];
}
/**
* 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;
}
/* Built-in method references that are verified to be native. */
var WeakMap = getNative(root$1, 'WeakMap');
var WeakMap$1 = WeakMap;
/** Built-in value references. */
var objectCreate = Object.create;
/**
* The base implementation of `_.create` without support for assigning
* properties to the created object.
*
* @private
* @param {Object} proto The object to inherit from.
* @returns {Object} Returns the new object.
*/
var baseCreate = function () {
function object() {}
return function (proto) {
if (!isObject$1(proto)) {
return {};
}
if (objectCreate) {
return objectCreate(proto);
}
object.prototype = proto;
var result = new object();
object.prototype = undefined;
return result;
};
}();
var baseCreate$1 = baseCreate;
/**
* A faster alternative to `Function#apply`, this function invokes `func`
* with the `this` binding of `thisArg` and the arguments of `args`.
*
* @private
* @param {Function} func The function to invoke.
* @param {*} thisArg The `this` binding of `func`.
* @param {Array} args The arguments to invoke `func` with.
* @returns {*} Returns the result of `func`.
*/
function apply(func, thisArg, args) {
switch (args.length) {
case 0:
return func.call(thisArg);
case 1:
return func.call(thisArg, args[0]);
case 2:
return func.call(thisArg, args[0], args[1]);
case 3:
return func.call(thisArg, args[0], args[1], args[2]);
}
return func.apply(thisArg, args);
}
/**
* Copies the values of `source` to `array`.
*
* @private
* @param {Array} source The array to copy values from.
* @param {Array} [array=[]] The array to copy values to.
* @returns {Array} Returns `array`.
*/
function copyArray(source, array) {
var index = -1,
length = source.length;
array || (array = Array(length));
while (++index < length) {
array[index] = source[index];
}
return array;
}
/** Used to detect hot functions by number of calls within a span of milliseconds. */
var HOT_COUNT = 800,
HOT_SPAN = 16;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeNow = Date.now;
/**
* Creates a function that'll short out and invoke `identity` instead
* of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
* milliseconds.
*
* @private
* @param {Function} func The function to restrict.
* @returns {Function} Returns the new shortable function.
*/
function shortOut(func) {
var count = 0,
lastCalled = 0;
return function () {
var stamp = nativeNow(),
remaining = HOT_SPAN - (stamp - lastCalled);
lastCalled = stamp;
if (remaining > 0) {
if (++count >= HOT_COUNT) {
return arguments[0];
}
} else {
count = 0;
}
return func.apply(undefined, arguments);
};
}
/**
* Creates a function that returns `value`.
*
* @static
* @memberOf _
* @since 2.4.0
* @category Util
* @param {*} value The value to return from the new function.
* @returns {Function} Returns the new constant function.
* @example
*
* var objects = _.times(2, _.constant({ 'a': 1 }));
*
* console.log(objects);
* // => [{ 'a': 1 }, { 'a': 1 }]
*
* console.log(objects[0] === objects[1]);
* // => true
*/
function constant(value) {
return function () {
return value;
};
}
var defineProperty = function () {
try {
var func = getNative(Object, 'defineProperty');
func({}, '', {});
return func;
} catch (e) {}
}();
var defineProperty$1 = defineProperty;
/**
* The base implementation of `setToString` without support for hot loop shorting.
*
* @private
* @param {Function} func The function to modify.
* @param {Function} string The `toString` result.
* @returns {Function} Returns `func`.
*/
var baseSetToString = !defineProperty$1 ? identity$1 : function (func, string) {
return defineProperty$1(func, 'toString', {
'configurable': true,
'enumerable': false,
'value': constant(string),
'writable': true
});
};
var baseSetToString$1 = baseSetToString;
/**
* Sets the `toString` method of `func` to return `string`.
*
* @private
* @param {Function} func The function to modify.
* @param {Function} string The `toString` result.
* @returns {Function} Returns `func`.
*/
var setToString = shortOut(baseSetToString$1);
var setToString$1 = setToString;
/**
* A specialized version of `_.forEach` for arrays without support for
* iteratee shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns `array`.
*/
function arrayEach(array, iteratee) {
var index = -1,
length = array == null ? 0 : array.length;
while (++index < length) {
if (iteratee(array[index], index, array) === false) {
break;
}
}
return array;
}
/**
* The base implementation of `_.findIndex` and `_.findLastIndex` without
* support for iteratee shorthands.
*
* @private
* @param {Array} array The array to inspect.
* @param {Function} predicate The function invoked per iteration.
* @param {number} fromIndex The index to search from.
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {number} Returns the index of the matched value, else `-1`.
*/
function baseFindIndex(array, predicate, fromIndex, fromRight) {
var length = array.length,
index = fromIndex + (fromRight ? 1 : -1);
while (fromRight ? index-- : ++index < length) {
if (predicate(array[index], index, array)) {
return index;
}
}
return -1;
}
/**
* The base implementation of `_.isNaN` without support for number objects.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
*/
function baseIsNaN(value) {
return value !== value;
}
/**
* A specialized version of `_.indexOf` which performs strict equality
* comparisons of values, i.e. `===`.
*
* @private
* @param {Array} array The array to inspect.
* @param {*} value The value to search for.
* @param {number} fromIndex The index to search from.
* @returns {number} Returns the index of the matched value, else `-1`.
*/
function strictIndexOf(array, value, fromIndex) {
var index = fromIndex - 1,
length = array.length;
while (++index < length) {
if (array[index] === value) {
return index;
}
}
return -1;
}
/**
* The base implementation of `_.indexOf` without `fromIndex` bounds checks.
*
* @private
* @param {Array} array The array to inspect.
* @param {*} value The value to search for.
* @param {number} fromIndex The index to search from.
* @returns {number} Returns the index of the matched value, else `-1`.
*/
function baseIndexOf(array, value, fromIndex) {
return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);
}
/**
* A specialized version of `_.includes` for arrays without support for
* specifying an index to search from.
*
* @private
* @param {Array} [array] The array to inspect.
* @param {*} target The value to search for.
* @returns {boolean} Returns `true` if `target` is found, else `false`.
*/
function arrayIncludes(array, value) {
var length = array == null ? 0 : array.length;
return !!length && baseIndexOf(array, value, 0) > -1;
}
/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER$1 = 9007199254740991;
/** Used to detect unsigned integer values. */
var reIsUint = /^(?:0|[1-9]\d*)$/;
/**
* Checks if `value` is a valid array-like index.
*
* @private
* @param {*} value The value to check.
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
*/
function isIndex(value, length) {
var type = _typeof$2(value);
length = length == null ? MAX_SAFE_INTEGER$1 : length;
return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;
}
/**
* The base implementation of `assignValue` and `assignMergeValue` without
* value checks.
*
* @private
* @param {Object} object The object to modify.
* @param {string} key The key of the property to assign.
* @param {*} value The value to assign.
*/
function baseAssignValue(object, key, value) {
if (key == '__proto__' && defineProperty$1) {
defineProperty$1(object, key, {
'configurable': true,
'enumerable': true,
'value': value,
'writable': true
});
} else {
object[key] = value;
}
}
/**
* Performs a
* [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* comparison between two values to determine if they are equivalent.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
* @example
*
* var object = { 'a': 1 };
* var other = { 'a': 1 };
*
* _.eq(object, object);
* // => true
*
* _.eq(object, other);
* // => false
*
* _.eq('a', 'a');
* // => true
*
* _.eq('a', Object('a'));
* // => false
*
* _.eq(NaN, NaN);
* // => true
*/
function eq(value, other) {
return value === other || value !== value && other !== other;
}
/** Used for built-in method references. */
var objectProto$f = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$e = objectProto$f.hasOwnProperty;
/**
* Assigns `value` to `key` of `object` if the existing value is not equivalent
* using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons.
*
* @private
* @param {Object} object The object to modify.
* @param {string} key The key of the property to assign.
* @param {*} value The value to assign.
*/
function assignValue(object, key, value) {
var objValue = object[key];
if (!(hasOwnProperty$e.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {
baseAssignValue(object, key, value);
}
}
/**
* Copies properties of `source` to `object`.
*
* @private
* @param {Object} source The object to copy properties from.
* @param {Array} props The property identifiers to copy.
* @param {Object} [object={}] The object to copy properties to.
* @param {Function} [customizer] The function to customize copied values.
* @returns {Object} Returns `object`.
*/
function copyObject(source, props, object, customizer) {
var isNew = !object;
object || (object = {});
var index = -1,
length = props.length;
while (++index < length) {
var key = props[index];
var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;
if (newValue === undefined) {
newValue = source[key];
}
if (isNew) {
baseAssignValue(object, key, newValue);
} else {
assignValue(object, key, newValue);
}
}
return object;
}
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMax$1 = Math.max;
/**
* A specialized version of `baseRest` which transforms the rest array.
*
* @private
* @param {Function} func The function to apply a rest parameter to.
* @param {number} [start=func.length-1] The start position of the rest parameter.
* @param {Function} transform The rest array transform.
* @returns {Function} Returns the new function.
*/
function overRest(func, start, transform) {
start = nativeMax$1(start === undefined ? func.length - 1 : start, 0);
return function () {
var args = arguments,
index = -1,
length = nativeMax$1(args.length - start, 0),
array = Array(length);
while (++index < length) {
array[index] = args[start + index];
}
index = -1;
var otherArgs = Array(start + 1);
while (++index < start) {
otherArgs[index] = args[index];
}
otherArgs[start] = transform(array);
return apply(func, this, otherArgs);
};
}
/**
* The base implementation of `_.rest` which doesn't validate or coerce arguments.
*
* @private
* @param {Function} func The function to apply a rest parameter to.
* @param {number} [start=func.length-1] The start position of the rest parameter.
* @returns {Function} Returns the new function.
*/
function baseRest(func, start) {
return setToString$1(overRest(func, start, identity$1), func + '');
}
/** 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;
}
/**
* 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(value.length) && !isFunction(value);
}
/**
* Checks if the given arguments are from an iteratee call.
*
* @private
* @param {*} value The potential iteratee value argument.
* @param {*} index The potential iteratee index or key argument.
* @param {*} object The potential iteratee object argument.
* @returns {boolean} Returns `true` if the arguments are from an iteratee call,
* else `false`.
*/
function isIterateeCall(value, index, object) {
if (!isObject$1(object)) {
return false;
}
var type = _typeof$2(index);
if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {
return eq(object[index], value);
}
return false;
}
/**
* Creates a function like `_.assign`.
*
* @private
* @param {Function} assigner The function to assign values.
* @returns {Function} Returns the new assigner function.
*/
function createAssigner(assigner) {
return baseRest(function (object, sources) {
var index = -1,
length = sources.length,
customizer = length > 1 ? sources[length - 1] : undefined,
guard = length > 2 ? sources[2] : undefined;
customizer = assigner.length > 3 && typeof customizer == 'function' ? (length--, customizer) : undefined;
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
customizer = length < 3 ? undefined : customizer;
length = 1;
}
object = Object(object);
while (++index < length) {
var source = sources[index];
if (source) {
assigner(object, source, index, customizer);
}
}
return object;
});
}
/** Used for built-in method references. */
var objectProto$e = 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$e;
return value === proto;
}
/**
* The base implementation of `_.times` without support for iteratee shorthands
* or max array length checks.
*
* @private
* @param {number} n The number of times to invoke `iteratee`.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the array of results.
*/
function baseTimes(n, iteratee) {
var index = -1,
result = Array(n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
/** `Object#toString` result references. */
var argsTag$3 = '[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(value) && baseGetTag(value) == argsTag$3;
}
/** Used for built-in method references. */
var objectProto$d = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$d = objectProto$d.hasOwnProperty;
/** Built-in value references. */
var propertyIsEnumerable$1 = objectProto$d.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(value) && hasOwnProperty$d.call(value, 'callee') && !propertyIsEnumerable$1.call(value, 'callee');
};
var isArguments$1 = isArguments;
/**
* 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;
}
/** Detect free variable `exports`. */
var freeExports$2 = (typeof exports === "undefined" ? "undefined" : _typeof$2(exports)) == 'object' && exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule$2 = freeExports$2 && (typeof module === "undefined" ? "undefined" : _typeof$2(module)) == 'object' && module && !module.nodeType && module;
/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2;
/** Built-in value references. */
var Buffer$1 = moduleExports$2 ? root$1.Buffer : undefined;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeIsBuffer = Buffer$1 ? Buffer$1.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;
var isBuffer$1 = isBuffer;
/** `Object#toString` result references. */
var argsTag$2 = '[object Arguments]',
arrayTag$2 = '[object Array]',
boolTag$4 = '[object Boolean]',
dateTag$3 = '[object Date]',
errorTag$3 = '[object Error]',
funcTag$1 = '[object Function]',
mapTag$6 = '[object Map]',
numberTag$4 = '[object Number]',
objectTag$4 = '[object Object]',
regexpTag$3 = '[object RegExp]',
setTag$6 = '[object Set]',
stringTag$4 = '[object String]',
weakMapTag$2 = '[object WeakMap]';
var arrayBufferTag$3 = '[object ArrayBuffer]',
dataViewTag$4 = '[object DataView]',
float32Tag$2 = '[object Float32Array]',
float64Tag$2 = '[object Float64Array]',
int8Tag$2 = '[object Int8Array]',
int16Tag$2 = '[object Int16Array]',
int32Tag$2 = '[object Int32Array]',
uint8Tag$2 = '[object Uint8Array]',
uint8ClampedTag$2 = '[object Uint8ClampedArray]',
uint16Tag$2 = '[object Uint16Array]',
uint32Tag$2 = '[object Uint32Array]';
/** Used to identify `toStringTag` values of typed arrays. */
var typedArrayTags = {};
typedArrayTags[float32Tag$2] = typedArrayTags[float64Tag$2] = typedArrayTags[int8Tag$2] = typedArrayTags[int16Tag$2] = typedArrayTags[int32Tag$2] = typedArrayTags[uint8Tag$2] = typedArrayTags[uint8ClampedTag$2] = typedArrayTags[uint16Tag$2] = typedArrayTags[uint32Tag$2] = true;
typedArrayTags[argsTag$2] = typedArrayTags[arrayTag$2] = typedArrayTags[arrayBufferTag$3] = typedArrayTags[boolTag$4] = typedArrayTags[dataViewTag$4] = typedArrayTags[dateTag$3] = typedArrayTags[errorTag$3] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag$6] = typedArrayTags[numberTag$4] = typedArrayTags[objectTag$4] = typedArrayTags[regexpTag$3] = typedArrayTags[setTag$6] = typedArrayTags[stringTag$4] = typedArrayTags[weakMapTag$2] = 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(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
/**
* 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);
};
}
/** Detect free variable `exports`. */
var freeExports$1 = (typeof exports === "undefined" ? "undefined" : _typeof$2(exports)) == 'object' && exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule$1 = freeExports$1 && (typeof module === "undefined" ? "undefined" : _typeof$2(module)) == 'object' && module && !module.nodeType && module;
/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;
/** Detect free variable `process` from Node.js. */
var freeProcess = moduleExports$1 && freeGlobal$1.process;
/** Used to access faster Node.js helpers. */
var nodeUtil = function () {
try {
// Use `util.types` for Node.js 10+.
var types = freeModule$1 && freeModule$1.require && freeModule$1.require('util').types;
if (types) {
return types;
}
// Legacy `process.binding('util')` for Node.js < 10.
return freeProcess && freeProcess.binding && freeProcess.binding('util');
} catch (e) {}
}();
var nodeUtil$1 = nodeUtil;
/* Node.js helper references. */
var nodeIsTypedArray = nodeUtil$1 && nodeUtil$1.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;
/** Used for built-in method references. */
var objectProto$c = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$c = objectProto$c.hasOwnProperty;
/**
* Creates an array of the enumerable property names of the array-like `value`.
*
* @private
* @param {*} value The value to query.
* @param {boolean} inherited Specify returning inherited property names.
* @returns {Array} Returns the array of property names.
*/
function arrayLikeKeys(value, inherited) {
var isArr = isArray$1(value),
isArg = !isArr && isArguments$1(value),
isBuff = !isArr && !isArg && isBuffer$1(value),
isType = !isArr && !isArg && !isBuff && isTypedArray$1(value),
skipIndexes = isArr || isArg || isBuff || isType,
result = skipIndexes ? baseTimes(value.length, String) : [],
length = result.length;
for (var key in value) {
if ((inherited || hasOwnProperty$c.call(value, key)) && !(skipIndexes && (
// Safari 9 has enumerable `arguments.length` in strict mode.
key == 'length' ||
// Node.js 0.10 has enumerable non-index properties on buffers.
isBuff && (key == 'offset' || key == 'parent') ||
// PhantomJS 2 has enumerable non-index properties on typed arrays.
isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') ||
// Skip index properties.
isIndex(key, length)))) {
result.push(key);
}
}
return result;
}
/**
* 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));
};
}
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeKeys = overArg(Object.keys, Object);
var nativeKeys$1 = nativeKeys;
/** Used for built-in method references. */
var objectProto$b = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$b = objectProto$b.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$1(object);
}
var result = [];
for (var key in Object(object)) {
if (hasOwnProperty$b.call(object, key) && key != 'constructor') {
result.push(key);
}
}
return result;
}
/**
* Creates an array of the own enumerable property names of `object`.
*
* **Note:** Non-object values are coerced to objects. See the
* [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
* for more details.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.keys(new Foo);
* // => ['a', 'b'] (iteration order is not guaranteed)
*
* _.keys('hi');
* // => ['0', '1']
*/
function keys(object) {
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}
/**
* This function is like
* [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
* except that it includes inherited enumerable properties.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function nativeKeysIn(object) {
var result = [];
if (object != null) {
for (var key in Object(object)) {
result.push(key);
}
}
return result;
}
/** Used for built-in method references. */
var objectProto$a = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$a = objectProto$a.hasOwnProperty;
/**
* The base implementation of `_.keysIn` 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 baseKeysIn(object) {
if (!isObject$1(object)) {
return nativeKeysIn(object);
}
var isProto = isPrototype(object),
result = [];
for (var key in object) {
if (!(key == 'constructor' && (isProto || !hasOwnProperty$a.call(object, key)))) {
result.push(key);
}
}
return result;
}
/**
* Creates an array of the own and inherited enumerable property names of `object`.
*
* **Note:** Non-object values are coerced to objects.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Object
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.keysIn(new Foo);
* // => ['a', 'b', 'c'] (iteration order is not guaranteed)
*/
function keysIn(object) {
return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
}
/**
* This method is like `_.assignIn` except that it accepts `customizer`
* which is invoked to produce the assigned values. If `customizer` returns
* `undefined`, assignment is handled by the method instead. The `customizer`
* is invoked with five arguments: (objValue, srcValue, key, object, source).
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @since 4.0.0
* @alias extendWith
* @category Object
* @param {Object} object The destination object.
* @param {...Object} sources The source objects.
* @param {Function} [customizer] The function to customize assigned values.
* @returns {Object} Returns `object`.
* @see _.assignWith
* @example
*
* function customizer(objValue, srcValue) {
* return _.isUndefined(objValue) ? srcValue : objValue;
* }
*
* var defaults = _.partialRight(_.assignInWith, customizer);
*
* defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
* // => { 'a': 1, 'b': 2 }
*/
var assignInWith = createAssigner(function (object, source, srcIndex, customizer) {
copyObject(source, keysIn(source), object, customizer);
});
var extendWith = assignInWith;
/** Used to match property names within property paths. */
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
reIsPlainProp = /^\w*$/;
/**
* Checks if `value` is a property name and not a property path.
*
* @private
* @param {*} value The value to check.
* @param {Object} [object] The object to query keys on.
* @returns {boolean} Returns `true` if `value` is a property name, else `false`.
*/
function isKey(value, object) {
if (isArray$1(value)) {
return false;
}
var type = _typeof$2(value);
if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {
return true;
}
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
}
/* Built-in method references that are verified to be native. */
var nativeCreate = getNative(Object, 'create');
var nativeCreate$1 = nativeCreate;
/**
* Removes all key-value entries from the hash.
*
* @private
* @name clear
* @memberOf Hash
*/
function hashClear() {
this.__data__ = nativeCreate$1 ? nativeCreate$1(null) : {};
this.size = 0;
}
/**
* Removes `key` and its value from the hash.
*
* @private
* @name delete
* @memberOf Hash
* @param {Object} hash The hash to modify.
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function hashDelete(key) {
var result = this.has(key) && delete this.__data__[key];
this.size -= result ? 1 : 0;
return result;
}
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED$2 = '__lodash_hash_undefined__';
/** Used for built-in method references. */
var objectProto$9 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$9 = objectProto$9.hasOwnProperty;
/**
* Gets the hash value for `key`.
*
* @private
* @name get
* @memberOf Hash
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function hashGet(key) {
var data = this.__data__;
if (nativeCreate$1) {
var result = data[key];
return result === HASH_UNDEFINED$2 ? undefined : result;
}
return hasOwnProperty$9.call(data, key) ? data[key] : undefined;
}
/** Used for built-in method references. */
var objectProto$8 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
/**
* Checks if a hash value for `key` exists.
*
* @private
* @name has
* @memberOf Hash
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function hashHas(key) {
var data = this.__data__;
return nativeCreate$1 ? data[key] !== undefined : hasOwnProperty$8.call(data, key);
}
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED$1 = '__lodash_hash_undefined__';
/**
* Sets the hash `key` to `value`.
*
* @private
* @name set
* @memberOf Hash
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the hash instance.
*/
function hashSet(key, value) {
var data = this.__data__;
this.size += this.has(key) ? 0 : 1;
data[key] = nativeCreate$1 && value === undefined ? HASH_UNDEFINED$1 : value;
return this;
}
/**
* Creates a hash object.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function Hash(entries) {
var index = -1,
length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
// Add methods to `Hash`.
Hash.prototype.clear = hashClear;
Hash.prototype['delete'] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;
/**
* Removes all key-value entries from the list cache.
*
* @private
* @name clear
* @memberOf ListCache
*/
function listCacheClear() {
this.__data__ = [];
this.size = 0;
}
/**
* Gets the index at which the `key` is found in `array` of key-value pairs.
*
* @private
* @param {Array} array The array to inspect.
* @param {*} key The key to search for.
* @returns {number} Returns the index of the matched value, else `-1`.
*/
function assocIndexOf(array, key) {
var length = array.length;
while (length--) {
if (eq(array[length][0], key)) {
return length;
}
}
return -1;
}
/** Used for built-in method references. */
var arrayProto = Array.prototype;
/** Built-in value references. */
var splice = arrayProto.splice;
/**
* Removes `key` and its value from the list cache.
*
* @private
* @name delete
* @memberOf ListCache
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function listCacheDelete(key) {
var data = this.__data__,
index = assocIndexOf(data, key);
if (index < 0) {
return false;
}
var lastIndex = data.length - 1;
if (index == lastIndex) {
data.pop();
} else {
splice.call(data, index, 1);
}
--this.size;
return true;
}
/**
* Gets the list cache value for `key`.
*
* @private
* @name get
* @memberOf ListCache
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function listCacheGet(key) {
var data = this.__data__,
index = assocIndexOf(data, key);
return index < 0 ? undefined : data[index][1];
}
/**
* Checks if a list cache value for `key` exists.
*
* @private
* @name has
* @memberOf ListCache
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function listCacheHas(key) {
return assocIndexOf(this.__data__, key) > -1;
}
/**
* Sets the list cache `key` to `value`.
*
* @private
* @name set
* @memberOf ListCache
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the list cache instance.
*/
function listCacheSet(key, value) {
var data = this.__data__,
index = assocIndexOf(data, key);
if (index < 0) {
++this.size;
data.push([key, value]);
} else {
data[index][1] = value;
}
return this;
}
/**
* Creates an list cache object.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function ListCache(entries) {
var index = -1,
length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
// Add methods to `ListCache`.
ListCache.prototype.clear = listCacheClear;
ListCache.prototype['delete'] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;
/* Built-in method references that are verified to be native. */
var Map$1 = getNative(root$1, 'Map');
var Map$2 = Map$1;
/**
* Removes all key-value entries from the map.
*
* @private
* @name clear
* @memberOf MapCache
*/
function mapCacheClear() {
this.size = 0;
this.__data__ = {
'hash': new Hash(),
'map': new (Map$2 || ListCache)(),
'string': new Hash()
};
}
/**
* Checks if `value` is suitable for use as unique object key.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is suitable, else `false`.
*/
function isKeyable(value) {
var type = _typeof$2(value);
return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;
}
/**
* Gets the data for `map`.
*
* @private
* @param {Object} map The map to query.
* @param {string} key The reference key.
* @returns {*} Returns the map data.
*/
function getMapData(map, key) {
var data = map.__data__;
return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;
}
/**
* Removes `key` and its value from the map.
*
* @private
* @name delete
* @memberOf MapCache
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function mapCacheDelete(key) {
var result = getMapData(this, key)['delete'](key);
this.size -= result ? 1 : 0;
return result;
}
/**
* Gets the map value for `key`.
*
* @private
* @name get
* @memberOf MapCache
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function mapCacheGet(key) {
return getMapData(this, key).get(key);
}
/**
* Checks if a map value for `key` exists.
*
* @private
* @name has
* @memberOf MapCache
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function mapCacheHas(key) {
return getMapData(this, key).has(key);
}
/**
* Sets the map `key` to `value`.
*
* @private
* @name set
* @memberOf MapCache
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the map cache instance.
*/
function mapCacheSet(key, value) {
var data = getMapData(this, key),
size = data.size;
data.set(key, value);
this.size += data.size == size ? 0 : 1;
return this;
}
/**
* Creates a map cache object to store key-value pairs.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function MapCache(entries) {
var index = -1,
length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
// Add methods to `MapCache`.
MapCache.prototype.clear = mapCacheClear;
MapCache.prototype['delete'] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;
/** Error message constants. */
var FUNC_ERROR_TEXT$2 = 'Expected a function';
/**
* Creates a function that memoizes the result of `func`. If `resolver` is
* provided, it determines the cache key for storing the result based on the
* arguments provided to the memoized function. By default, the first argument
* provided to the memoized function is used as the map cache key. The `func`
* is invoked with the `this` binding of the memoized function.
*
* **Note:** The cache is exposed as the `cache` property on the memoized
* function. Its creation may be customized by replacing the `_.memoize.Cache`
* constructor with one whose instances implement the
* [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
* method interface of `clear`, `delete`, `get`, `has`, and `set`.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Function
* @param {Function} func The function to have its output memoized.
* @param {Function} [resolver] The function to resolve the cache key.
* @returns {Function} Returns the new memoized function.
* @example
*
* var object = { 'a': 1, 'b': 2 };
* var other = { 'c': 3, 'd': 4 };
*
* var values = _.memoize(_.values);
* values(object);
* // => [1, 2]
*
* values(other);
* // => [3, 4]
*
* object.a = 2;
* values(object);
* // => [1, 2]
*
* // Modify the result cache.
* values.cache.set(object, ['a', 'b']);
* values(object);
* // => ['a', 'b']
*
* // Replace `_.memoize.Cache`.
* _.memoize.Cache = WeakMap;
*/
function memoize(func, resolver) {
if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {
throw new TypeError(FUNC_ERROR_TEXT$2);
}
var _memoized = function memoized() {
var args = arguments,
key = resolver ? resolver.apply(this, args) : args[0],
cache = _memoized.cache;
if (cache.has(key)) {
return cache.get(key);
}
var result = func.apply(this, args);
_memoized.cache = cache.set(key, result) || cache;
return result;
};
_memoized.cache = new (memoize.Cache || MapCache)();
return _memoized;
}
// Expose `MapCache`.
memoize.Cache = MapCache;
/** Used as the maximum memoize cache size. */
var MAX_MEMOIZE_SIZE = 500;
/**
* A specialized version of `_.memoize` which clears the memoized function's
* cache when it exceeds `MAX_MEMOIZE_SIZE`.
*
* @private
* @param {Function} func The function to have its output memoized.
* @returns {Function} Returns the new memoized function.
*/
function memoizeCapped(func) {
var result = memoize(func, function (key) {
if (cache.size === MAX_MEMOIZE_SIZE) {
cache.clear();
}
return key;
});
var cache = result.cache;
return result;
}
/** Used to match property names within property paths. */
var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
/** Used to match backslashes in property paths. */
var reEscapeChar = /\\(\\)?/g;
/**
* Converts `string` to a property path array.
*
* @private
* @param {string} string The string to convert.
* @returns {Array} Returns the property path array.
*/
var stringToPath = memoizeCapped(function (string) {
var result = [];
if (string.charCodeAt(0) === 46 /* . */) {
result.push('');
}
string.replace(rePropName, function (match, number, quote, subString) {
result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);
});
return result;
});
var stringToPath$1 = stringToPath;
/**
* Converts `value` to a string. An empty string is returned for `null`
* and `undefined` values. The sign of `-0` is preserved.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to convert.
* @returns {string} Returns the converted string.
* @example
*
* _.toString(null);
* // => ''
*
* _.toString(-0);
* // => '-0'
*
* _.toString([1, 2, 3]);
* // => '1,2,3'
*/
function toString$1(value) {
return value == null ? '' : baseToString(value);
}
/**
* Casts `value` to a path array if it's not one.
*
* @private
* @param {*} value The value to inspect.
* @param {Object} [object] The object to query keys on.
* @returns {Array} Returns the cast property path array.
*/
function castPath(value, object) {
if (isArray$1(value)) {
return value;
}
return isKey(value, object) ? [value] : stringToPath$1(toString$1(value));
}
/** Used as references for various `Number` constants. */
var INFINITY = 1 / 0;
/**
* Converts `value` to a string key if it's not a string or symbol.
*
* @private
* @param {*} value The value to inspect.
* @returns {string|symbol} Returns the key.
*/
function toKey(value) {
if (typeof value == 'string' || isSymbol(value)) {
return value;
}
var result = value + '';
return result == '0' && 1 / value == -INFINITY ? '-0' : result;
}
/**
* The base implementation of `_.get` without support for default values.
*
* @private
* @param {Object} object The object to query.
* @param {Array|string} path The path of the property to get.
* @returns {*} Returns the resolved value.
*/
function baseGet(object, path) {
path = castPath(path, object);
var index = 0,
length = path.length;
while (object != null && index < length) {
object = object[toKey(path[index++])];
}
return index && index == length ? object : undefined;
}
/**
* Gets the value at `path` of `object`. If the resolved value is
* `undefined`, the `defaultValue` is returned in its place.
*
* @static
* @memberOf _
* @since 3.7.0
* @category Object
* @param {Object} object The object to query.
* @param {Array|string} path The path of the property to get.
* @param {*} [defaultValue] The value returned for `undefined` resolved values.
* @returns {*} Returns the resolved value.
* @example
*
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
*
* _.get(object, 'a[0].b.c');
* // => 3
*
* _.get(object, ['a', '0', 'b', 'c']);
* // => 3
*
* _.get(object, 'a.b.c', 'default');
* // => 'default'
*/
function get(object, path, defaultValue) {
var result = object == null ? undefined : baseGet(object, path);
return result === undefined ? defaultValue : result;
}
/**
* Appends the elements of `values` to `array`.
*
* @private
* @param {Array} array The array to modify.
* @param {Array} values The values to append.
* @returns {Array} Returns `array`.
*/
function arrayPush(array, values) {
var index = -1,
length = values.length,
offset = array.length;
while (++index < length) {
array[offset + index] = values[index];
}
return array;
}
/** Built-in value references. */
var getPrototype = overArg(Object.getPrototypeOf, Object);
var getPrototype$1 = getPrototype;
/** `Object#toString` result references. */
var objectTag$3 = '[object Object]';
/** Used for built-in method references. */
var funcProto = Function.prototype,
objectProto$7 = Object.prototype;
/** Used to resolve the decompiled source of functions. */
var funcToString = funcProto.toString;
/** Used to check objects for own properties. */
var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
/** Used to infer the `Object` constructor. */
var objectCtorString = funcToString.call(Object);
/**
* Checks if `value` is a plain object, that is, an object created by the
* `Object` constructor or one with a `[[Prototype]]` of `null`.
*
* @static
* @memberOf _
* @since 0.8.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
* @example
*
* function Foo() {
* this.a = 1;
* }
*
* _.isPlainObject(new Foo);
* // => false
*
* _.isPlainObject([1, 2, 3]);
* // => false
*
* _.isPlainObject({ 'x': 0, 'y': 0 });
* // => true
*
* _.isPlainObject(Object.create(null));
* // => true
*/
function isPlainObject(value) {
if (!isObjectLike(value) || baseGetTag(value) != objectTag$3) {
return false;
}
var proto = getPrototype$1(value);
if (proto === null) {
return true;
}
var Ctor = hasOwnProperty$7.call(proto, 'constructor') && proto.constructor;
return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
}
/** `Object#toString` result references. */
var domExcTag = '[object DOMException]',
errorTag$2 = '[object Error]';
/**
* Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
* `SyntaxError`, `TypeError`, or `URIError` object.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an error object, else `false`.
* @example
*
* _.isError(new Error);
* // => true
*
* _.isError(Error);
* // => false
*/
function isError(value) {
if (!isObjectLike(value)) {
return false;
}
var tag = baseGetTag(value);
return tag == errorTag$2 || tag == domExcTag || typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value);
}
/**
* Attempts to invoke `func`, returning either the result or the caught error
* object. Any additional arguments are provided to `func` when it's invoked.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Util
* @param {Function} func The function to attempt.
* @param {...*} [args] The arguments to invoke `func` with.
* @returns {*} Returns the `func` result or error object.
* @example
*
* // Avoid throwing errors for invalid selectors.
* var elements = _.attempt(function(selector) {
* return document.querySelectorAll(selector);
* }, '>_>');
*
* if (_.isError(elements)) {
* elements = [];
* }
*/
var attempt = baseRest(function (func, args) {
try {
return apply(func, undefined, args);
} catch (e) {
return isError(e) ? e : new Error(e);
}
});
var attempt$1 = attempt;
/**
* The base implementation of `_.slice` without an iteratee call guard.
*
* @private
* @param {Array} array The array to slice.
* @param {number} [start=0] The start position.
* @param {number} [end=array.length] The end position.
* @returns {Array} Returns the slice of `array`.
*/
function baseSlice(array, start, end) {
var index = -1,
length = array.length;
if (start < 0) {
start = -start > length ? 0 : length + start;
}
end = end > length ? length : end;
if (end < 0) {
end += length;
}
length = start > end ? 0 : end - start >>> 0;
start >>>= 0;
var result = Array(length);
while (++index < length) {
result[index] = array[index + start];
}
return result;
}
/**
* Casts `array` to a slice if it's needed.
*
* @private
* @param {Array} array The array to inspect.
* @param {number} start The start position.
* @param {number} [end=array.length] The end position.
* @returns {Array} Returns the cast slice.
*/
function castSlice(array, start, end) {
var length = array.length;
end = end === undefined ? length : end;
return !start && end >= length ? array : baseSlice(array, start, end);
}
/** Used to compose unicode character classes. */
var rsAstralRange$2 = "\\ud800-\\udfff",
rsComboMarksRange$3 = "\\u0300-\\u036f",
reComboHalfMarksRange$3 = "\\ufe20-\\ufe2f",
rsComboSymbolsRange$3 = "\\u20d0-\\u20ff",
rsComboRange$3 = rsComboMarksRange$3 + reComboHalfMarksRange$3 + rsComboSymbolsRange$3,
rsVarRange$2 = "\\ufe0e\\ufe0f";
/** Used to compose unicode capture groups. */
var rsZWJ$2 = "\\u200d";
/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
var reHasUnicode = RegExp('[' + rsZWJ$2 + rsAstralRange$2 + rsComboRange$3 + rsVarRange$2 + ']');
/**
* Checks if `string` contains Unicode symbols.
*
* @private
* @param {string} string The string to inspect.
* @returns {boolean} Returns `true` if a symbol is found, else `false`.
*/
function hasUnicode(string) {
return reHasUnicode.test(string);
}
/**
* Converts an ASCII `string` to an array.
*
* @private
* @param {string} string The string to convert.
* @returns {Array} Returns the converted array.
*/
function asciiToArray(string) {
return string.split('');
}
/** Used to compose unicode character classes. */
var rsAstralRange$1 = "\\ud800-\\udfff",
rsComboMarksRange$2 = "\\u0300-\\u036f",
reComboHalfMarksRange$2 = "\\ufe20-\\ufe2f",
rsComboSymbolsRange$2 = "\\u20d0-\\u20ff",
rsComboRange$2 = rsComboMarksRange$2 + reComboHalfMarksRange$2 + rsComboSymbolsRange$2,
rsVarRange$1 = "\\ufe0e\\ufe0f";
/** Used to compose unicode capture groups. */
var rsAstral = '[' + rsAstralRange$1 + ']',
rsCombo$2 = '[' + rsComboRange$2 + ']',
rsFitz$1 = "\\ud83c[\\udffb-\\udfff]",
rsModifier$1 = '(?:' + rsCombo$2 + '|' + rsFitz$1 + ')',
rsNonAstral$1 = '[^' + rsAstralRange$1 + ']',
rsRegional$1 = "(?:\\ud83c[\\udde6-\\uddff]){2}",
rsSurrPair$1 = "[\\ud800-\\udbff][\\udc00-\\udfff]",
rsZWJ$1 = "\\u200d";
/** Used to compose unicode regexes. */
var reOptMod$1 = rsModifier$1 + '?',
rsOptVar$1 = '[' + rsVarRange$1 + ']?',
rsOptJoin$1 = '(?:' + rsZWJ$1 + '(?:' + [rsNonAstral$1, rsRegional$1, rsSurrPair$1].join('|') + ')' + rsOptVar$1 + reOptMod$1 + ')*',
rsSeq$1 = rsOptVar$1 + reOptMod$1 + rsOptJoin$1,
rsSymbol = '(?:' + [rsNonAstral$1 + rsCombo$2 + '?', rsCombo$2, rsRegional$1, rsSurrPair$1, rsAstral].join('|') + ')';
/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
var reUnicode = RegExp(rsFitz$1 + '(?=' + rsFitz$1 + ')|' + rsSymbol + rsSeq$1, 'g');
/**
* Converts a Unicode `string` to an array.
*
* @private
* @param {string} string The string to convert.
* @returns {Array} Returns the converted array.
*/
function unicodeToArray(string) {
return string.match(reUnicode) || [];
}
/**
* Converts `string` to an array.
*
* @private
* @param {string} string The string to convert.
* @returns {Array} Returns the converted array.
*/
function stringToArray(string) {
return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
}
/**
* Creates a function like `_.lowerFirst`.
*
* @private
* @param {string} methodName The name of the `String` case method to use.
* @returns {Function} Returns the new case function.
*/
function createCaseFirst(methodName) {
return function (string) {
string = toString$1(string);
var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined;
var chr = strSymbols ? strSymbols[0] : string.charAt(0);
var trailing = strSymbols ? castSlice(strSymbols, 1).join('') : string.slice(1);
return chr[methodName]() + trailing;
};
}
/**
* Converts the first character of `string` to upper case.
*
* @static
* @memberOf _
* @since 4.0.0
* @category String
* @param {string} [string=''] The string to convert.
* @returns {string} Returns the converted string.
* @example
*
* _.upperFirst('fred');
* // => 'Fred'
*
* _.upperFirst('FRED');
* // => 'FRED'
*/
var upperFirst = createCaseFirst('toUpperCase');
var upperFirst$1 = upperFirst;
/**
* Converts the first character of `string` to upper case and the remaining
* to lower case.
*
* @static
* @memberOf _
* @since 3.0.0
* @category String
* @param {string} [string=''] The string to capitalize.
* @returns {string} Returns the capitalized string.
* @example
*
* _.capitalize('FRED');
* // => 'Fred'
*/
function capitalize$1(string) {
return upperFirst$1(toString$1(string).toLowerCase());
}
/**
* A specialized version of `_.reduce` for arrays without support for
* iteratee shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @param {*} [accumulator] The initial value.
* @param {boolean} [initAccum] Specify using the first element of `array` as
* the initial value.
* @returns {*} Returns the accumulated value.
*/
function arrayReduce(array, iteratee, accumulator, initAccum) {
var index = -1,
length = array == null ? 0 : array.length;
if (initAccum && length) {
accumulator = array[++index];
}
while (++index < length) {
accumulator = iteratee(accumulator, array[index], index, array);
}
return accumulator;
}
/**
* The base implementation of `_.propertyOf` without support for deep paths.
*
* @private
* @param {Object} object The object to query.
* @returns {Function} Returns the new accessor function.
*/
function basePropertyOf(object) {
return function (key) {
return object == null ? undefined : object[key];
};
}
/** Used to map Latin Unicode letters to basic Latin letters. */
var deburredLetters = {
// Latin-1 Supplement block.
'\xc0': 'A',
'\xc1': 'A',
'\xc2': 'A',
'\xc3': 'A',
'\xc4': 'A',
'\xc5': 'A',
'\xe0': 'a',
'\xe1': 'a',
'\xe2': 'a',
'\xe3': 'a',
'\xe4': 'a',
'\xe5': 'a',
'\xc7': 'C',
'\xe7': 'c',
'\xd0': 'D',
'\xf0': 'd',
'\xc8': 'E',
'\xc9': 'E',
'\xca': 'E',
'\xcb': 'E',
'\xe8': 'e',
'\xe9': 'e',
'\xea': 'e',
'\xeb': 'e',
'\xcc': 'I',
'\xcd': 'I',
'\xce': 'I',
'\xcf': 'I',
'\xec': 'i',
'\xed': 'i',
'\xee': 'i',
'\xef': 'i',
'\xd1': 'N',
'\xf1': 'n',
'\xd2': 'O',
'\xd3': 'O',
'\xd4': 'O',
'\xd5': 'O',
'\xd6': 'O',
'\xd8': 'O',
'\xf2': 'o',
'\xf3': 'o',
'\xf4': 'o',
'\xf5': 'o',
'\xf6': 'o',
'\xf8': 'o',
'\xd9': 'U',
'\xda': 'U',
'\xdb': 'U',
'\xdc': 'U',
'\xf9': 'u',
'\xfa': 'u',
'\xfb': 'u',
'\xfc': 'u',
'\xdd': 'Y',
'\xfd': 'y',
'\xff': 'y',
'\xc6': 'Ae',
'\xe6': 'ae',
'\xde': 'Th',
'\xfe': 'th',
'\xdf': 'ss',
// Latin Extended-A block.
"\u0100": 'A',
"\u0102": 'A',
"\u0104": 'A',
"\u0101": 'a',
"\u0103": 'a',
"\u0105": 'a',
"\u0106": 'C',
"\u0108": 'C',
"\u010A": 'C',
"\u010C": 'C',
"\u0107": 'c',
"\u0109": 'c',
"\u010B": 'c',
"\u010D": 'c',
"\u010E": 'D',
"\u0110": 'D',
"\u010F": 'd',
"\u0111": 'd',
"\u0112": 'E',
"\u0114": 'E',
"\u0116": 'E',
"\u0118": 'E',
"\u011A": 'E',
"\u0113": 'e',
"\u0115": 'e',
"\u0117": 'e',
"\u0119": 'e',
"\u011B": 'e',
"\u011C": 'G',
"\u011E": 'G',
"\u0120": 'G',
"\u0122": 'G',
"\u011D": 'g',
"\u011F": 'g',
"\u0121": 'g',
"\u0123": 'g',
"\u0124": 'H',
"\u0126": 'H',
"\u0125": 'h',
"\u0127": 'h',
"\u0128": 'I',
"\u012A": 'I',
"\u012C": 'I',
"\u012E": 'I',
"\u0130": 'I',
"\u0129": 'i',
"\u012B": 'i',
"\u012D": 'i',
"\u012F": 'i',
"\u0131": 'i',
"\u0134": 'J',
"\u0135": 'j',
"\u0136": 'K',
"\u0137": 'k',
"\u0138": 'k',
"\u0139": 'L',
"\u013B": 'L',
"\u013D": 'L',
"\u013F": 'L',
"\u0141": 'L',
"\u013A": 'l',
"\u013C": 'l',
"\u013E": 'l',
"\u0140": 'l',
"\u0142": 'l',
"\u0143": 'N',
"\u0145": 'N',
"\u0147": 'N',
"\u014A": 'N',
"\u0144": 'n',
"\u0146": 'n',
"\u0148": 'n',
"\u014B": 'n',
"\u014C": 'O',
"\u014E": 'O',
"\u0150": 'O',
"\u014D": 'o',
"\u014F": 'o',
"\u0151": 'o',
"\u0154": 'R',
"\u0156": 'R',
"\u0158": 'R',
"\u0155": 'r',
"\u0157": 'r',
"\u0159": 'r',
"\u015A": 'S',
"\u015C": 'S',
"\u015E": 'S',
"\u0160": 'S',
"\u015B": 's',
"\u015D": 's',
"\u015F": 's',
"\u0161": 's',
"\u0162": 'T',
"\u0164": 'T',
"\u0166": 'T',
"\u0163": 't',
"\u0165": 't',
"\u0167": 't',
"\u0168": 'U',
"\u016A": 'U',
"\u016C": 'U',
"\u016E": 'U',
"\u0170": 'U',
"\u0172": 'U',
"\u0169": 'u',
"\u016B": 'u',
"\u016D": 'u',
"\u016F": 'u',
"\u0171": 'u',
"\u0173": 'u',
"\u0174": 'W',
"\u0175": 'w',
"\u0176": 'Y',
"\u0177": 'y',
"\u0178": 'Y',
"\u0179": 'Z',
"\u017B": 'Z',
"\u017D": 'Z',
"\u017A": 'z',
"\u017C": 'z',
"\u017E": 'z',
"\u0132": 'IJ',
"\u0133": 'ij',
"\u0152": 'Oe',
"\u0153": 'oe',
"\u0149": "'n",
"\u017F": 's'
};
/**
* Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
* letters to basic Latin letters.
*
* @private
* @param {string} letter The matched letter to deburr.
* @returns {string} Returns the deburred letter.
*/
var deburrLetter = basePropertyOf(deburredLetters);
var deburrLetter$1 = deburrLetter;
/** Used to match Latin Unicode letters (excluding mathematical operators). */
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
/** Used to compose unicode character classes. */
var rsComboMarksRange$1 = "\\u0300-\\u036f",
reComboHalfMarksRange$1 = "\\ufe20-\\ufe2f",
rsComboSymbolsRange$1 = "\\u20d0-\\u20ff",
rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1;
/** Used to compose unicode capture groups. */
var rsCombo$1 = '[' + rsComboRange$1 + ']';
/**
* Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
* [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
*/
var reComboMark = RegExp(rsCombo$1, 'g');
/**
* Deburrs `string` by converting
* [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
* and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
* letters to basic Latin letters and removing
* [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
*
* @static
* @memberOf _
* @since 3.0.0
* @category String
* @param {string} [string=''] The string to deburr.
* @returns {string} Returns the deburred string.
* @example
*
* _.deburr('déjà vu');
* // => 'deja vu'
*/
function deburr(string) {
string = toString$1(string);
return string && string.replace(reLatin, deburrLetter$1).replace(reComboMark, '');
}
/** Used to match words composed of alphanumeric characters. */
var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
/**
* Splits an ASCII `string` into an array of its words.
*
* @private
* @param {string} The string to inspect.
* @returns {Array} Returns the words of `string`.
*/
function asciiWords(string) {
return string.match(reAsciiWord) || [];
}
/** Used to detect strings that need a more robust regexp to match words. */
var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
/**
* Checks if `string` contains a word composed of Unicode symbols.
*
* @private
* @param {string} string The string to inspect.
* @returns {boolean} Returns `true` if a word is found, else `false`.
*/
function hasUnicodeWord(string) {
return reHasUnicodeWord.test(string);
}
/** Used to compose unicode character classes. */
var rsAstralRange = "\\ud800-\\udfff",
rsComboMarksRange = "\\u0300-\\u036f",
reComboHalfMarksRange = "\\ufe20-\\ufe2f",
rsComboSymbolsRange = "\\u20d0-\\u20ff",
rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
rsDingbatRange = "\\u2700-\\u27bf",
rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
rsPunctuationRange = "\\u2000-\\u206f",
rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",
rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
rsVarRange = "\\ufe0e\\ufe0f",
rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
/** Used to compose unicode capture groups. */
var rsApos$1 = "['\u2019]",
rsBreak = '[' + rsBreakRange + ']',
rsCombo = '[' + rsComboRange + ']',
rsDigits = '\\d+',
rsDingbat = '[' + rsDingbatRange + ']',
rsLower = '[' + rsLowerRange + ']',
rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
rsFitz = "\\ud83c[\\udffb-\\udfff]",
rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
rsNonAstral = '[^' + rsAstralRange + ']',
rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}",
rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]",
rsUpper = '[' + rsUpperRange + ']',
rsZWJ = "\\u200d";
/** Used to compose unicode regexes. */
var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
rsOptContrLower = '(?:' + rsApos$1 + '(?:d|ll|m|re|s|t|ve))?',
rsOptContrUpper = '(?:' + rsApos$1 + '(?:D|LL|M|RE|S|T|VE))?',
reOptMod = rsModifier + '?',
rsOptVar = '[' + rsVarRange + ']?',
rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
rsSeq = rsOptVar + reOptMod + rsOptJoin,
rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;
/** Used to match complex or compound words. */
var reUnicodeWord = RegExp([rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, rsUpper + '+' + rsOptContrUpper, rsOrdUpper, rsOrdLower, rsDigits, rsEmoji].join('|'), 'g');
/**
* Splits a Unicode `string` into an array of its words.
*
* @private
* @param {string} The string to inspect.
* @returns {Array} Returns the words of `string`.
*/
function unicodeWords(string) {
return string.match(reUnicodeWord) || [];
}
/**
* Splits `string` into an array of its words.
*
* @static
* @memberOf _
* @since 3.0.0
* @category String
* @param {string} [string=''] The string to inspect.
* @param {RegExp|string} [pattern] The pattern to match words.
* @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
* @returns {Array} Returns the words of `string`.
* @example
*
* _.words('fred, barney, & pebbles');
* // => ['fred', 'barney', 'pebbles']
*
* _.words('fred, barney, & pebbles', /[^, ]+/g);
* // => ['fred', 'barney', '&', 'pebbles']
*/
function words(string, pattern, guard) {
string = toString$1(string);
pattern = guard ? undefined : pattern;
if (pattern === undefined) {
return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
}
return string.match(pattern) || [];
}
/** Used to compose unicode capture groups. */
var rsApos = "['\u2019]";
/** Used to match apostrophes. */
var reApos = RegExp(rsApos, 'g');
/**
* Creates a function like `_.camelCase`.
*
* @private
* @param {Function} callback The function to combine each word.
* @returns {Function} Returns the new compounder function.
*/
function createCompounder(callback) {
return function (string) {
return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
};
}
/**
* Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
*
* @static
* @memberOf _
* @since 3.0.0
* @category String
* @param {string} [string=''] The string to convert.
* @returns {string} Returns the camel cased string.
* @example
*
* _.camelCase('Foo Bar');
* // => 'fooBar'
*
* _.camelCase('--foo-bar--');
* // => 'fooBar'
*
* _.camelCase('__FOO_BAR__');
* // => 'fooBar'
*/
var camelCase = createCompounder(function (result, word, index) {
word = word.toLowerCase();
return result + (index ? capitalize$1(word) : word);
});
var camelCase$1 = camelCase;
/**
* Removes all key-value entries from the stack.
*
* @private
* @name clear
* @memberOf Stack
*/
function stackClear() {
this.__data__ = new ListCache();
this.size = 0;
}
/**
* Removes `key` and its value from the stack.
*
* @private
* @name delete
* @memberOf Stack
* @param {string} key The key of the value to remove.
* @returns {boolean} Returns `true` if the entry was removed, else `false`.
*/
function stackDelete(key) {
var data = this.__data__,
result = data['delete'](key);
this.size = data.size;
return result;
}
/**
* Gets the stack value for `key`.
*
* @private
* @name get
* @memberOf Stack
* @param {string} key The key of the value to get.
* @returns {*} Returns the entry value.
*/
function stackGet(key) {
return this.__data__.get(key);
}
/**
* Checks if a stack value for `key` exists.
*
* @private
* @name has
* @memberOf Stack
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function stackHas(key) {
return this.__data__.has(key);
}
/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;
/**
* Sets the stack `key` to `value`.
*
* @private
* @name set
* @memberOf Stack
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the stack cache instance.
*/
function stackSet(key, value) {
var data = this.__data__;
if (data instanceof ListCache) {
var pairs = data.__data__;
if (!Map$2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
pairs.push([key, value]);
this.size = ++data.size;
return this;
}
data = this.__data__ = new MapCache(pairs);
}
data.set(key, value);
this.size = data.size;
return this;
}
/**
* Creates a stack cache object to store key-value pairs.
*
* @private
* @constructor
* @param {Array} [entries] The key-value pairs to cache.
*/
function Stack(entries) {
var data = this.__data__ = new ListCache(entries);
this.size = data.size;
}
// Add methods to `Stack`.
Stack.prototype.clear = stackClear;
Stack.prototype['delete'] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;
/**
* The base implementation of `_.assign` without support for multiple sources
* or `customizer` functions.
*
* @private
* @param {Object} object The destination object.
* @param {Object} source The source object.
* @returns {Object} Returns `object`.
*/
function baseAssign(object, source) {
return object && copyObject(source, keys(source), object);
}
/**
* The base implementation of `_.assignIn` without support for multiple sources
* or `customizer` functions.
*
* @private
* @param {Object} object The destination object.
* @param {Object} source The source object.
* @returns {Object} Returns `object`.
*/
function baseAssignIn(object, source) {
return object && copyObject(source, keysIn(source), object);
}
/** Detect free variable `exports`. */
var freeExports = (typeof exports === "undefined" ? "undefined" : _typeof$2(exports)) == 'object' && exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule = freeExports && (typeof module === "undefined" ? "undefined" : _typeof$2(module)) == '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$1.Buffer : undefined,
allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;
/**
* Creates a clone of `buffer`.
*
* @private
* @param {Buffer} buffer The buffer to clone.
* @param {boolean} [isDeep] Specify a deep clone.
* @returns {Buffer} Returns the cloned buffer.
*/
function cloneBuffer(buffer, isDeep) {
if (isDeep) {
return buffer.slice();
}
var length = buffer.length,
result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
buffer.copy(result);
return result;
}
/**
* A specialized version of `_.filter` for arrays without support for
* iteratee shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {Array} Returns the new filtered array.
*/
function arrayFilter(array, predicate) {
var index = -1,
length = array == null ? 0 : array.length,
resIndex = 0,
result = [];
while (++index < length) {
var value = array[index];
if (predicate(value, index, array)) {
result[resIndex++] = value;
}
}
return result;
}
/**
* This method returns a new empty array.
*
* @static
* @memberOf _
* @since 4.13.0
* @category Util
* @returns {Array} Returns the new empty array.
* @example
*
* var arrays = _.times(2, _.stubArray);
*
* console.log(arrays);
* // => [[], []]
*
* console.log(arrays[0] === arrays[1]);
* // => false
*/
function stubArray() {
return [];
}
/** Used for built-in method references. */
var objectProto$6 = Object.prototype;
/** Built-in value references. */
var propertyIsEnumerable = objectProto$6.propertyIsEnumerable;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeGetSymbols$1 = Object.getOwnPropertySymbols;
/**
* Creates an array of the own enumerable symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of symbols.
*/
var getSymbols = !nativeGetSymbols$1 ? stubArray : function (object) {
if (object == null) {
return [];
}
object = Object(object);
return arrayFilter(nativeGetSymbols$1(object), function (symbol) {
return propertyIsEnumerable.call(object, symbol);
});
};
var getSymbols$1 = getSymbols;
/**
* Copies own symbols of `source` to `object`.
*
* @private
* @param {Object} source The object to copy symbols from.
* @param {Object} [object={}] The object to copy symbols to.
* @returns {Object} Returns `object`.
*/
function copySymbols(source, object) {
return copyObject(source, getSymbols$1(source), object);
}
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeGetSymbols = Object.getOwnPropertySymbols;
/**
* Creates an array of the own and inherited enumerable symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of symbols.
*/
var getSymbolsIn = !nativeGetSymbols ? stubArray : function (object) {
var result = [];
while (object) {
arrayPush(result, getSymbols$1(object));
object = getPrototype$1(object);
}
return result;
};
var getSymbolsIn$1 = getSymbolsIn;
/**
* Copies own and inherited symbols of `source` to `object`.
*
* @private
* @param {Object} source The object to copy symbols from.
* @param {Object} [object={}] The object to copy symbols to.
* @returns {Object} Returns `object`.
*/
function copySymbolsIn(source, object) {
return copyObject(source, getSymbolsIn$1(source), object);
}
/**
* The base implementation of `getAllKeys` and `getAllKeysIn` which uses
* `keysFunc` and `symbolsFunc` to get the enumerable property names and
* symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @param {Function} keysFunc The function to get the keys of `object`.
* @param {Function} symbolsFunc The function to get the symbols of `object`.
* @returns {Array} Returns the array of property names and symbols.
*/
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
var result = keysFunc(object);
return isArray$1(object) ? result : arrayPush(result, symbolsFunc(object));
}
/**
* Creates an array of own enumerable property names and symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names and symbols.
*/
function getAllKeys(object) {
return baseGetAllKeys(object, keys, getSymbols$1);
}
/**
* Creates an array of own and inherited enumerable property names and
* symbols of `object`.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names and symbols.
*/
function getAllKeysIn(object) {
return baseGetAllKeys(object, keysIn, getSymbolsIn$1);
}
/* Built-in method references that are verified to be native. */
var DataView = getNative(root$1, 'DataView');
var DataView$1 = DataView;
/* Built-in method references that are verified to be native. */
var Promise$1 = getNative(root$1, 'Promise');
var Promise$2 = Promise$1;
/* Built-in method references that are verified to be native. */
var Set$1 = getNative(root$1, 'Set');
var Set$2 = Set$1;
/** `Object#toString` result references. */
var mapTag$5 = '[object Map]',
objectTag$2 = '[object Object]',
promiseTag = '[object Promise]',
setTag$5 = '[object Set]',
weakMapTag$1 = '[object WeakMap]';
var dataViewTag$3 = '[object DataView]';
/** Used to detect maps, sets, and weakmaps. */
var dataViewCtorString = toSource(DataView$1),
mapCtorString = toSource(Map$2),
promiseCtorString = toSource(Promise$2),
setCtorString = toSource(Set$2),
weakMapCtorString = toSource(WeakMap$1);
/**
* 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$1 && getTag(new DataView$1(new ArrayBuffer(1))) != dataViewTag$3 || Map$2 && getTag(new Map$2()) != mapTag$5 || Promise$2 && getTag(Promise$2.resolve()) != promiseTag || Set$2 && getTag(new Set$2()) != setTag$5 || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag$1) {
getTag = function getTag(value) {
var result = baseGetTag(value),
Ctor = result == objectTag$2 ? value.constructor : undefined,
ctorString = Ctor ? toSource(Ctor) : '';
if (ctorString) {
switch (ctorString) {
case dataViewCtorString:
return dataViewTag$3;
case mapCtorString:
return mapTag$5;
case promiseCtorString:
return promiseTag;
case setCtorString:
return setTag$5;
case weakMapCtorString:
return weakMapTag$1;
}
}
return result;
};
}
var getTag$1 = getTag;
/** Used for built-in method references. */
var objectProto$5 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$6 = objectProto$5.hasOwnProperty;
/**
* Initializes an array clone.
*
* @private
* @param {Array} array The array to clone.
* @returns {Array} Returns the initialized clone.
*/
function initCloneArray(array) {
var length = array.length,
result = new array.constructor(length);
// Add properties assigned by `RegExp#exec`.
if (length && typeof array[0] == 'string' && hasOwnProperty$6.call(array, 'index')) {
result.index = array.index;
result.input = array.input;
}
return result;
}
/** Built-in value references. */
var Uint8Array = root$1.Uint8Array;
var Uint8Array$1 = Uint8Array;
/**
* Creates a clone of `arrayBuffer`.
*
* @private
* @param {ArrayBuffer} arrayBuffer The array buffer to clone.
* @returns {ArrayBuffer} Returns the cloned array buffer.
*/
function cloneArrayBuffer(arrayBuffer) {
var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
new Uint8Array$1(result).set(new Uint8Array$1(arrayBuffer));
return result;
}
/**
* Creates a clone of `dataView`.
*
* @private
* @param {Object} dataView The data view to clone.
* @param {boolean} [isDeep] Specify a deep clone.
* @returns {Object} Returns the cloned data view.
*/
function cloneDataView(dataView, isDeep) {
var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
}
/** Used to match `RegExp` flags from their coerced string values. */
var reFlags = /\w*$/;
/**
* Creates a clone of `regexp`.
*
* @private
* @param {Object} regexp The regexp to clone.
* @returns {Object} Returns the cloned regexp.
*/
function cloneRegExp(regexp) {
var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
result.lastIndex = regexp.lastIndex;
return result;
}
/** Used to convert symbols to primitives and strings. */
var symbolProto$1 = _Symbol$1 ? _Symbol$1.prototype : undefined,
symbolValueOf$1 = symbolProto$1 ? symbolProto$1.valueOf : undefined;
/**
* Creates a clone of the `symbol` object.
*
* @private
* @param {Object} symbol The symbol object to clone.
* @returns {Object} Returns the cloned symbol object.
*/
function cloneSymbol(symbol) {
return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {};
}
/**
* Creates a clone of `typedArray`.
*
* @private
* @param {Object} typedArray The typed array to clone.
* @param {boolean} [isDeep] Specify a deep clone.
* @returns {Object} Returns the cloned typed array.
*/
function cloneTypedArray(typedArray, isDeep) {
var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
}
/** `Object#toString` result references. */
var boolTag$3 = '[object Boolean]',
dateTag$2 = '[object Date]',
mapTag$4 = '[object Map]',
numberTag$3 = '[object Number]',
regexpTag$2 = '[object RegExp]',
setTag$4 = '[object Set]',
stringTag$3 = '[object String]',
symbolTag$2 = '[object Symbol]';
var arrayBufferTag$2 = '[object ArrayBuffer]',
dataViewTag$2 = '[object DataView]',
float32Tag$1 = '[object Float32Array]',
float64Tag$1 = '[object Float64Array]',
int8Tag$1 = '[object Int8Array]',
int16Tag$1 = '[object Int16Array]',
int32Tag$1 = '[object Int32Array]',
uint8Tag$1 = '[object Uint8Array]',
uint8ClampedTag$1 = '[object Uint8ClampedArray]',
uint16Tag$1 = '[object Uint16Array]',
uint32Tag$1 = '[object Uint32Array]';
/**
* Initializes an object clone based on its `toStringTag`.
*
* **Note:** This function only supports cloning values with tags of
* `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
*
* @private
* @param {Object} object The object to clone.
* @param {string} tag The `toStringTag` of the object to clone.
* @param {boolean} [isDeep] Specify a deep clone.
* @returns {Object} Returns the initialized clone.
*/
function initCloneByTag(object, tag, isDeep) {
var Ctor = object.constructor;
switch (tag) {
case arrayBufferTag$2:
return cloneArrayBuffer(object);
case boolTag$3:
case dateTag$2:
return new Ctor(+object);
case dataViewTag$2:
return cloneDataView(object, isDeep);
case float32Tag$1:
case float64Tag$1:
case int8Tag$1:
case int16Tag$1:
case int32Tag$1:
case uint8Tag$1:
case uint8ClampedTag$1:
case uint16Tag$1:
case uint32Tag$1:
return cloneTypedArray(object, isDeep);
case mapTag$4:
return new Ctor();
case numberTag$3:
case stringTag$3:
return new Ctor(object);
case regexpTag$2:
return cloneRegExp(object);
case setTag$4:
return new Ctor();
case symbolTag$2:
return cloneSymbol(object);
}
}
/**
* Initializes an object clone.
*
* @private
* @param {Object} object The object to clone.
* @returns {Object} Returns the initialized clone.
*/
function initCloneObject(object) {
return typeof object.constructor == 'function' && !isPrototype(object) ? baseCreate$1(getPrototype$1(object)) : {};
}
/** `Object#toString` result references. */
var mapTag$3 = '[object Map]';
/**
* The base implementation of `_.isMap` without Node.js optimizations.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a map, else `false`.
*/
function baseIsMap(value) {
return isObjectLike(value) && getTag$1(value) == mapTag$3;
}
/* Node.js helper references. */
var nodeIsMap = nodeUtil$1 && nodeUtil$1.isMap;
/**
* Checks if `value` is classified as a `Map` object.
*
* @static
* @memberOf _
* @since 4.3.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a map, else `false`.
* @example
*
* _.isMap(new Map);
* // => true
*
* _.isMap(new WeakMap);
* // => false
*/
var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
var isMap$1 = isMap;
/** `Object#toString` result references. */
var setTag$3 = '[object Set]';
/**
* The base implementation of `_.isSet` without Node.js optimizations.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a set, else `false`.
*/
function baseIsSet(value) {
return isObjectLike(value) && getTag$1(value) == setTag$3;
}
/* Node.js helper references. */
var nodeIsSet = nodeUtil$1 && nodeUtil$1.isSet;
/**
* Checks if `value` is classified as a `Set` object.
*
* @static
* @memberOf _
* @since 4.3.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a set, else `false`.
* @example
*
* _.isSet(new Set);
* // => true
*
* _.isSet(new WeakSet);
* // => false
*/
var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
var isSet$1 = isSet;
/** Used to compose bitmasks for cloning. */
var CLONE_DEEP_FLAG$1 = 1,
CLONE_FLAT_FLAG = 2,
CLONE_SYMBOLS_FLAG$1 = 4;
/** `Object#toString` result references. */
var argsTag$1 = '[object Arguments]',
arrayTag$1 = '[object Array]',
boolTag$2 = '[object Boolean]',
dateTag$1 = '[object Date]',
errorTag$1 = '[object Error]',
funcTag = '[object Function]',
genTag = '[object GeneratorFunction]',
mapTag$2 = '[object Map]',
numberTag$2 = '[object Number]',
objectTag$1 = '[object Object]',
regexpTag$1 = '[object RegExp]',
setTag$2 = '[object Set]',
stringTag$2 = '[object String]',
symbolTag$1 = '[object Symbol]',
weakMapTag = '[object WeakMap]';
var arrayBufferTag$1 = '[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 supported by `_.clone`. */
var cloneableTags = {};
cloneableTags[argsTag$1] = cloneableTags[arrayTag$1] = cloneableTags[arrayBufferTag$1] = cloneableTags[dataViewTag$1] = cloneableTags[boolTag$2] = cloneableTags[dateTag$1] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag$2] = cloneableTags[numberTag$2] = cloneableTags[objectTag$1] = cloneableTags[regexpTag$1] = cloneableTags[setTag$2] = cloneableTags[stringTag$2] = cloneableTags[symbolTag$1] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
cloneableTags[errorTag$1] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
/**
* The base implementation of `_.clone` and `_.cloneDeep` which tracks
* traversed objects.
*
* @private
* @param {*} value The value to clone.
* @param {boolean} bitmask The bitmask flags.
* 1 - Deep clone
* 2 - Flatten inherited properties
* 4 - Clone symbols
* @param {Function} [customizer] The function to customize cloning.
* @param {string} [key] The key of `value`.
* @param {Object} [object] The parent object of `value`.
* @param {Object} [stack] Tracks traversed objects and their clone counterparts.
* @returns {*} Returns the cloned value.
*/
function baseClone(value, bitmask, customizer, key, object, stack) {
var result,
isDeep = bitmask & CLONE_DEEP_FLAG$1,
isFlat = bitmask & CLONE_FLAT_FLAG,
isFull = bitmask & CLONE_SYMBOLS_FLAG$1;
if (customizer) {
result = object ? customizer(value, key, object, stack) : customizer(value);
}
if (result !== undefined) {
return result;
}
if (!isObject$1(value)) {
return value;
}
var isArr = isArray$1(value);
if (isArr) {
result = initCloneArray(value);
if (!isDeep) {
return copyArray(value, result);
}
} else {
var tag = getTag$1(value),
isFunc = tag == funcTag || tag == genTag;
if (isBuffer$1(value)) {
return cloneBuffer(value, isDeep);
}
if (tag == objectTag$1 || tag == argsTag$1 || isFunc && !object) {
result = isFlat || isFunc ? {} : initCloneObject(value);
if (!isDeep) {
return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));
}
} else {
if (!cloneableTags[tag]) {
return object ? value : {};
}
result = initCloneByTag(value, tag, isDeep);
}
}
// Check for circular references and return its corresponding clone.
stack || (stack = new Stack());
var stacked = stack.get(value);
if (stacked) {
return stacked;
}
stack.set(value, result);
if (isSet$1(value)) {
value.forEach(function (subValue) {
result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
});
} else if (isMap$1(value)) {
value.forEach(function (subValue, key) {
result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
});
}
var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
var props = isArr ? undefined : keysFunc(value);
arrayEach(props || value, function (subValue, key) {
if (props) {
key = subValue;
subValue = value[key];
}
// Recursively populate clone (susceptible to call stack limits).
assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
});
return result;
}
/** Used to compose bitmasks for cloning. */
var CLONE_DEEP_FLAG = 1,
CLONE_SYMBOLS_FLAG = 4;
/**
* This method is like `_.clone` except that it recursively clones `value`.
*
* @static
* @memberOf _
* @since 1.0.0
* @category Lang
* @param {*} value The value to recursively clone.
* @returns {*} Returns the deep cloned value.
* @see _.clone
* @example
*
* var objects = [{ 'a': 1 }, { 'b': 2 }];
*
* var deep = _.cloneDeep(objects);
* console.log(deep[0] === objects[0]);
* // => false
*/
function cloneDeep(value) {
return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
}
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';
/**
* Adds `value` to the array cache.
*
* @private
* @name add
* @memberOf SetCache
* @alias push
* @param {*} value The value to cache.
* @returns {Object} Returns the cache instance.
*/
function setCacheAdd(value) {
this.__data__.set(value, HASH_UNDEFINED);
return this;
}
/**
* Checks if `value` is in the array cache.
*
* @private
* @name has
* @memberOf SetCache
* @param {*} value The value to search for.
* @returns {number} Returns `true` if `value` is found, else `false`.
*/
function setCacheHas(value) {
return this.__data__.has(value);
}
/**
*
* Creates an array cache object to store unique values.
*
* @private
* @constructor
* @param {Array} [values] The values to cache.
*/
function SetCache(values) {
var index = -1,
length = values == null ? 0 : values.length;
this.__data__ = new MapCache();
while (++index < length) {
this.add(values[index]);
}
}
// Add methods to `SetCache`.
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;
/**
* A specialized version of `_.some` for arrays without support for iteratee
* shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} predicate The function invoked per iteration.
* @returns {boolean} Returns `true` if any element passes the predicate check,
* else `false`.
*/
function arraySome(array, predicate) {
var index = -1,
length = array == null ? 0 : array.length;
while (++index < length) {
if (predicate(array[index], index, array)) {
return true;
}
}
return false;
}
/**
* Checks if a `cache` value for `key` exists.
*
* @private
* @param {Object} cache The cache to query.
* @param {string} key The key of the entry to check.
* @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
*/
function cacheHas(cache, key) {
return cache.has(key);
}
/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG$3 = 1,
COMPARE_UNORDERED_FLAG$1 = 2;
/**
* A specialized version of `baseIsEqualDeep` for arrays with support for
* partial deep comparisons.
*
* @private
* @param {Array} array The array to compare.
* @param {Array} other The other array to compare.
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} stack Tracks traversed `array` and `other` objects.
* @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
*/
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3,
arrLength = array.length,
othLength = other.length;
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false;
}
// Check that cyclic values are equal.
var arrStacked = stack.get(array);
var othStacked = stack.get(other);
if (arrStacked && othStacked) {
return arrStacked == other && othStacked == array;
}
var index = -1,
result = true,
seen = bitmask & COMPARE_UNORDERED_FLAG$1 ? new SetCache() : undefined;
stack.set(array, other);
stack.set(other, array);
// Ignore non-index properties.
while (++index < arrLength) {
var arrValue = array[index],
othValue = other[index];
if (customizer) {
var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
}
if (compared !== undefined) {
if (compared) {
continue;
}
result = false;
break;
}
// Recursively compare arrays (susceptible to call stack limits).
if (seen) {
if (!arraySome(other, function (othValue, othIndex) {
if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
return seen.push(othIndex);
}
})) {
result = false;
break;
}
} else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
result = false;
break;
}
}
stack['delete'](array);
stack['delete'](other);
return result;
}
/**
* Converts `map` to its key-value pairs.
*
* @private
* @param {Object} map The map to convert.
* @returns {Array} Returns the key-value pairs.
*/
function mapToArray(map) {
var index = -1,
result = Array(map.size);
map.forEach(function (value, key) {
result[++index] = [key, value];
});
return result;
}
/**
* Converts `set` to an array of its values.
*
* @private
* @param {Object} set The set to convert.
* @returns {Array} Returns the values.
*/
function setToArray(set) {
var index = -1,
result = Array(set.size);
set.forEach(function (value) {
result[++index] = value;
});
return result;
}
/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG$2 = 1,
COMPARE_UNORDERED_FLAG = 2;
/** `Object#toString` result references. */
var boolTag$1 = '[object Boolean]',
dateTag = '[object Date]',
errorTag = '[object Error]',
mapTag$1 = '[object Map]',
numberTag$1 = '[object Number]',
regexpTag = '[object RegExp]',
setTag$1 = '[object Set]',
stringTag$1 = '[object String]',
symbolTag = '[object Symbol]';
var arrayBufferTag = '[object ArrayBuffer]',
dataViewTag = '[object DataView]';
/** Used to convert symbols to primitives and strings. */
var symbolProto = _Symbol$1 ? _Symbol$1.prototype : undefined,
symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
/**
* A specialized version of `baseIsEqualDeep` for comparing objects of
* the same `toStringTag`.
*
* **Note:** This function only supports comparing values with tags of
* `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {string} tag The `toStringTag` of the objects to compare.
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} stack Tracks traversed `object` and `other` objects.
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
*/
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
switch (tag) {
case dataViewTag:
if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
return false;
}
object = object.buffer;
other = other.buffer;
case arrayBufferTag:
if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array$1(object), new Uint8Array$1(other))) {
return false;
}
return true;
case boolTag$1:
case dateTag:
case numberTag$1:
// Coerce booleans to `1` or `0` and dates to milliseconds.
// Invalid dates are coerced to `NaN`.
return eq(+object, +other);
case errorTag:
return object.name == other.name && object.message == other.message;
case regexpTag:
case stringTag$1:
// Coerce regexes to strings and treat strings, primitives and objects,
// as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
// for more details.
return object == other + '';
case mapTag$1:
var convert = mapToArray;
case setTag$1:
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2;
convert || (convert = setToArray);
if (object.size != other.size && !isPartial) {
return false;
}
// Assume cyclic values are equal.
var stacked = stack.get(object);
if (stacked) {
return stacked == other;
}
bitmask |= COMPARE_UNORDERED_FLAG;
// Recursively compare objects (susceptible to call stack limits).
stack.set(object, other);
var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
stack['delete'](object);
return result;
case symbolTag:
if (symbolValueOf) {
return symbolValueOf.call(object) == symbolValueOf.call(other);
}
}
return false;
}
/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG$1 = 1;
/** Used for built-in method references. */
var objectProto$4 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$5 = objectProto$4.hasOwnProperty;
/**
* A specialized version of `baseIsEqualDeep` for objects with support for
* partial deep comparisons.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} stack Tracks traversed `object` and `other` objects.
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
*/
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1,
objProps = getAllKeys(object),
objLength = objProps.length,
othProps = getAllKeys(other),
othLength = othProps.length;
if (objLength != othLength && !isPartial) {
return false;
}
var index = objLength;
while (index--) {
var key = objProps[index];
if (!(isPartial ? key in other : hasOwnProperty$5.call(other, key))) {
return false;
}
}
// Check that cyclic values are equal.
var objStacked = stack.get(object);
var othStacked = stack.get(other);
if (objStacked && othStacked) {
return objStacked == other && othStacked == object;
}
var result = true;
stack.set(object, other);
stack.set(other, object);
var skipCtor = isPartial;
while (++index < objLength) {
key = objProps[index];
var objValue = object[key],
othValue = other[key];
if (customizer) {
var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
}
// Recursively compare objects (susceptible to call stack limits).
if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
result = false;
break;
}
skipCtor || (skipCtor = key == 'constructor');
}
if (result && !skipCtor) {
var objCtor = object.constructor,
othCtor = other.constructor;
// Non `Object` object instances with different constructors are not equal.
if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {
result = false;
}
}
stack['delete'](object);
stack['delete'](other);
return result;
}
/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1;
/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
arrayTag = '[object Array]',
objectTag = '[object Object]';
/** Used for built-in method references. */
var objectProto$3 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$4 = objectProto$3.hasOwnProperty;
/**
* A specialized version of `baseIsEqual` for arrays and objects which performs
* deep comparisons and tracks traversed objects enabling objects with circular
* references to be compared.
*
* @private
* @param {Object} object The object to compare.
* @param {Object} other The other object to compare.
* @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
* @param {Function} customizer The function to customize comparisons.
* @param {Function} equalFunc The function to determine equivalents of values.
* @param {Object} [stack] Tracks traversed `object` and `other` objects.
* @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
*/
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
var objIsArr = isArray$1(object),
othIsArr = isArray$1(other),
objTag = objIsArr ? arrayTag : getTag$1(object),
othTag = othIsArr ? arrayTag : getTag$1(other);
objTag = objTag == argsTag ? objectTag : objTag;
othTag = othTag == argsTag ? objectTag : othTag;
var objIsObj = objTag == objectTag,
othIsObj = othTag == objectTag,
isSameTag = objTag == othTag;
if (isSameTag && isBuffer$1(object)) {
if (!isBuffer$1(other)) {
return false;
}
objIsArr = true;
objIsObj = false;
}
if (isSameTag && !objIsObj) {
stack || (stack = new Stack());
return objIsArr || isTypedArray$1(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
}
if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
var objIsWrapped = objIsObj && hasOwnProperty$4.call(object, '__wrapped__'),
othIsWrapped = othIsObj && hasOwnProperty$4.call(other, '__wrapped__');
if (objIsWrapped || othIsWrapped) {
var objUnwrapped = objIsWrapped ? object.value() : object,
othUnwrapped = othIsWrapped ? other.value() : other;
stack || (stack = new Stack());
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
}
}
if (!isSameTag) {
return false;
}
stack || (stack = new Stack());
return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}
/**
* The base implementation of `_.isEqual` which supports partial comparisons
* and tracks traversed objects.
*
* @private
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @param {boolean} bitmask The bitmask flags.
* 1 - Unordered comparison
* 2 - Partial comparison
* @param {Function} [customizer] The function to customize comparisons.
* @param {Object} [stack] Tracks traversed `value` and `other` objects.
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
*/
function baseIsEqual(value, other, bitmask, customizer, stack) {
if (value === other) {
return true;
}
if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
return value !== value && other !== other;
}
return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}
/**
* Creates a base function for methods like `_.forIn` and `_.forOwn`.
*
* @private
* @param {boolean} [fromRight] Specify iterating from right to left.
* @returns {Function} Returns the new base function.
*/
function createBaseFor(fromRight) {
return function (object, iteratee, keysFunc) {
var index = -1,
iterable = Object(object),
props = keysFunc(object),
length = props.length;
while (length--) {
var key = props[fromRight ? length : ++index];
if (iteratee(iterable[key], key, iterable) === false) {
break;
}
}
return object;
};
}
/**
* The base implementation of `baseForOwn` which iterates over `object`
* properties returned by `keysFunc` and invokes `iteratee` for each property.
* Iteratee functions may exit iteration early by explicitly returning `false`.
*
* @private
* @param {Object} object The object to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @param {Function} keysFunc The function to get the keys of `object`.
* @returns {Object} Returns `object`.
*/
var baseFor = createBaseFor();
var baseFor$1 = baseFor;
/**
* Gets the timestamp of the number of milliseconds that have elapsed since
* the Unix epoch (1 January 1970 00:00:00 UTC).
*
* @static
* @memberOf _
* @since 2.4.0
* @category Date
* @returns {number} Returns the timestamp.
* @example
*
* _.defer(function(stamp) {
* console.log(_.now() - stamp);
* }, _.now());
* // => Logs the number of milliseconds it took for the deferred invocation.
*/
var now = function now() {
return root$1.Date.now();
};
var now$1 = now;
/** Error message constants. */
var FUNC_ERROR_TEXT$1 = 'Expected a function';
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMax = Math.max,
nativeMin$1 = Math.min;
/**
* Creates a debounced function that delays invoking `func` until after `wait`
* milliseconds have elapsed since the last time the debounced function was
* invoked. The debounced function comes with a `cancel` method to cancel
* delayed `func` invocations and a `flush` method to immediately invoke them.
* Provide `options` to indicate whether `func` should be invoked on the
* leading and/or trailing edge of the `wait` timeout. The `func` is invoked
* with the last arguments provided to the debounced function. Subsequent
* calls to the debounced function return the result of the last `func`
* invocation.
*
* **Note:** If `leading` and `trailing` options are `true`, `func` is
* invoked on the trailing edge of the timeout only if the debounced function
* is invoked more than once during the `wait` timeout.
*
* If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
* until to the next tick, similar to `setTimeout` with a timeout of `0`.
*
* See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
* for details over the differences between `_.debounce` and `_.throttle`.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Function
* @param {Function} func The function to debounce.
* @param {number} [wait=0] The number of milliseconds to delay.
* @param {Object} [options={}] The options object.
* @param {boolean} [options.leading=false]
* Specify invoking on the leading edge of the timeout.
* @param {number} [options.maxWait]
* The maximum time `func` is allowed to be delayed before it's invoked.
* @param {boolean} [options.trailing=true]
* Specify invoking on the trailing edge of the timeout.
* @returns {Function} Returns the new debounced function.
* @example
*
* // Avoid costly calculations while the window size is in flux.
* jQuery(window).on('resize', _.debounce(calculateLayout, 150));
*
* // Invoke `sendMail` when clicked, debouncing subsequent calls.
* jQuery(element).on('click', _.debounce(sendMail, 300, {
* 'leading': true,
* 'trailing': false
* }));
*
* // Ensure `batchLog` is invoked once after 1 second of debounced calls.
* var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
* var source = new EventSource('/stream');
* jQuery(source).on('message', debounced);
*
* // Cancel the trailing debounced invocation.
* jQuery(window).on('popstate', debounced.cancel);
*/
function debounce$1(func, wait, options) {
var lastArgs,
lastThis,
maxWait,
result,
timerId,
lastCallTime,
lastInvokeTime = 0,
leading = false,
maxing = false,
trailing = true;
if (typeof func != 'function') {
throw new TypeError(FUNC_ERROR_TEXT$1);
}
wait = toNumber$1(wait) || 0;
if (isObject$1(options)) {
leading = !!options.leading;
maxing = 'maxWait' in options;
maxWait = maxing ? nativeMax(toNumber$1(options.maxWait) || 0, wait) : maxWait;
trailing = 'trailing' in options ? !!options.trailing : trailing;
}
function invokeFunc(time) {
var args = lastArgs,
thisArg = lastThis;
lastArgs = lastThis = undefined;
lastInvokeTime = time;
result = func.apply(thisArg, args);
return result;
}
function leadingEdge(time) {
// Reset any `maxWait` timer.
lastInvokeTime = time;
// Start the timer for the trailing edge.
timerId = setTimeout(timerExpired, wait);
// Invoke the leading edge.
return leading ? invokeFunc(time) : result;
}
function remainingWait(time) {
var timeSinceLastCall = time - lastCallTime,
timeSinceLastInvoke = time - lastInvokeTime,
timeWaiting = wait - timeSinceLastCall;
return maxing ? nativeMin$1(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
}
function shouldInvoke(time) {
var timeSinceLastCall = time - lastCallTime,
timeSinceLastInvoke = time - lastInvokeTime;
// Either this is the first call, activity has stopped and we're at the
// trailing edge, the system time has gone backwards and we're treating
// it as the trailing edge, or we've hit the `maxWait` limit.
return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
}
function timerExpired() {
var time = now$1();
if (shouldInvoke(time)) {
return trailingEdge(time);
}
// Restart the timer.
timerId = setTimeout(timerExpired, remainingWait(time));
}
function trailingEdge(time) {
timerId = undefined;
// Only invoke if we have `lastArgs` which means `func` has been
// debounced at least once.
if (trailing && lastArgs) {
return invokeFunc(time);
}
lastArgs = lastThis = undefined;
return result;
}
function cancel() {
if (timerId !== undefined) {
clearTimeout(timerId);
}
lastInvokeTime = 0;
lastArgs = lastCallTime = lastThis = timerId = undefined;
}
function flush() {
return timerId === undefined ? result : trailingEdge(now$1());
}
function debounced() {
var time = now$1(),
isInvoking = shouldInvoke(time);
lastArgs = arguments;
lastThis = this;
lastCallTime = time;
if (isInvoking) {
if (timerId === undefined) {
return leadingEdge(lastCallTime);
}
if (maxing) {
// Handle invocations in a tight loop.
clearTimeout(timerId);
timerId = setTimeout(timerExpired, wait);
return invokeFunc(lastCallTime);
}
}
if (timerId === undefined) {
timerId = setTimeout(timerExpired, wait);
}
return result;
}
debounced.cancel = cancel;
debounced.flush = flush;
return debounced;
}
/**
* This function is like `assignValue` except that it doesn't assign
* `undefined` values.
*
* @private
* @param {Object} object The object to modify.
* @param {string} key The key of the property to assign.
* @param {*} value The value to assign.
*/
function assignMergeValue(object, key, value) {
if (value !== undefined && !eq(object[key], value) || value === undefined && !(key in object)) {
baseAssignValue(object, key, value);
}
}
/**
* This method is like `_.isArrayLike` except that it also checks if `value`
* is an object.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an array-like object,
* else `false`.
* @example
*
* _.isArrayLikeObject([1, 2, 3]);
* // => true
*
* _.isArrayLikeObject(document.body.children);
* // => true
*
* _.isArrayLikeObject('abc');
* // => false
*
* _.isArrayLikeObject(_.noop);
* // => false
*/
function isArrayLikeObject(value) {
return isObjectLike(value) && isArrayLike(value);
}
/**
* Gets the value at `key`, unless `key` is "__proto__" or "constructor".
*
* @private
* @param {Object} object The object to query.
* @param {string} key The key of the property to get.
* @returns {*} Returns the property value.
*/
function safeGet(object, key) {
if (key === 'constructor' && typeof object[key] === 'function') {
return;
}
if (key == '__proto__') {
return;
}
return object[key];
}
/**
* Converts `value` to a plain object flattening inherited enumerable string
* keyed properties of `value` to own properties of the plain object.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Lang
* @param {*} value The value to convert.
* @returns {Object} Returns the converted plain object.
* @example
*
* function Foo() {
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.assign({ 'a': 1 }, new Foo);
* // => { 'a': 1, 'b': 2 }
*
* _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
* // => { 'a': 1, 'b': 2, 'c': 3 }
*/
function toPlainObject(value) {
return copyObject(value, keysIn(value));
}
/**
* A specialized version of `baseMerge` for arrays and objects which performs
* deep merges and tracks traversed objects enabling objects with circular
* references to be merged.
*
* @private
* @param {Object} object The destination object.
* @param {Object} source The source object.
* @param {string} key The key of the value to merge.
* @param {number} srcIndex The index of `source`.
* @param {Function} mergeFunc The function to merge values.
* @param {Function} [customizer] The function to customize assigned values.
* @param {Object} [stack] Tracks traversed source values and their merged
* counterparts.
*/
function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
var objValue = safeGet(object, key),
srcValue = safeGet(source, key),
stacked = stack.get(srcValue);
if (stacked) {
assignMergeValue(object, key, stacked);
return;
}
var newValue = customizer ? customizer(objValue, srcValue, key + '', object, source, stack) : undefined;
var isCommon = newValue === undefined;
if (isCommon) {
var isArr = isArray$1(srcValue),
isBuff = !isArr && isBuffer$1(srcValue),
isTyped = !isArr && !isBuff && isTypedArray$1(srcValue);
newValue = srcValue;
if (isArr || isBuff || isTyped) {
if (isArray$1(objValue)) {
newValue = objValue;
} else if (isArrayLikeObject(objValue)) {
newValue = copyArray(objValue);
} else if (isBuff) {
isCommon = false;
newValue = cloneBuffer(srcValue, true);
} else if (isTyped) {
isCommon = false;
newValue = cloneTypedArray(srcValue, true);
} else {
newValue = [];
}
} else if (isPlainObject(srcValue) || isArguments$1(srcValue)) {
newValue = objValue;
if (isArguments$1(objValue)) {
newValue = toPlainObject(objValue);
} else if (!isObject$1(objValue) || isFunction(objValue)) {
newValue = initCloneObject(srcValue);
}
} else {
isCommon = false;
}
}
if (isCommon) {
// Recursively merge objects and arrays (susceptible to call stack limits).
stack.set(srcValue, newValue);
mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
stack['delete'](srcValue);
}
assignMergeValue(object, key, newValue);
}
/**
* The base implementation of `_.merge` without support for multiple sources.
*
* @private
* @param {Object} object The destination object.
* @param {Object} source The source object.
* @param {number} srcIndex The index of `source`.
* @param {Function} [customizer] The function to customize merged values.
* @param {Object} [stack] Tracks traversed source values and their merged
* counterparts.
*/
function baseMerge(object, source, srcIndex, customizer, stack) {
if (object === source) {
return;
}
baseFor$1(source, function (srcValue, key) {
stack || (stack = new Stack());
if (isObject$1(srcValue)) {
baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
} else {
var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + '', object, source, stack) : undefined;
if (newValue === undefined) {
newValue = srcValue;
}
assignMergeValue(object, key, newValue);
}
}, keysIn);
}
/**
* This method is like `_.merge` except that it accepts `customizer` which
* is invoked to produce the merged values of the destination and source
* properties. If `customizer` returns `undefined`, merging is handled by the
* method instead. The `customizer` is invoked with six arguments:
* (objValue, srcValue, key, object, source, stack).
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Object
* @param {Object} object The destination object.
* @param {...Object} sources The source objects.
* @param {Function} customizer The function to customize assigned values.
* @returns {Object} Returns `object`.
* @example
*
* function customizer(objValue, srcValue) {
* if (_.isArray(objValue)) {
* return objValue.concat(srcValue);
* }
* }
*
* var object = { 'a': [1], 'b': [2] };
* var other = { 'a': [3], 'b': [4] };
*
* _.mergeWith(object, other, customizer);
* // => { 'a': [1, 3], 'b': [2, 4] }
*/
var mergeWith$1 = createAssigner(function (object, source, srcIndex, customizer) {
baseMerge(object, source, srcIndex, customizer);
});
var _mergeWith = mergeWith$1;
/**
* This function is like `arrayIncludes` except that it accepts a comparator.
*
* @private
* @param {Array} [array] The array to inspect.
* @param {*} target The value to search for.
* @param {Function} comparator The comparator invoked per element.
* @returns {boolean} Returns `true` if `target` is found, else `false`.
*/
function arrayIncludesWith(array, value, comparator) {
var index = -1,
length = array == null ? 0 : array.length;
while (++index < length) {
if (comparator(value, array[index])) {
return true;
}
}
return false;
}
/** Used to map characters to HTML entities. */
var htmlEscapes = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
/**
* Used by `_.escape` to convert characters to HTML entities.
*
* @private
* @param {string} chr The matched character to escape.
* @returns {string} Returns the escaped character.
*/
var escapeHtmlChar = basePropertyOf(htmlEscapes);
var escapeHtmlChar$1 = escapeHtmlChar;
/** Used to match HTML entities and HTML characters. */
var reUnescapedHtml = /[&<>"']/g,
reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
/**
* Converts the characters "&", "<", ">", '"', and "'" in `string` to their
* corresponding HTML entities.
*
* **Note:** No other characters are escaped. To escape additional
* characters use a third-party library like [_he_](https://mths.be/he).
*
* Though the ">" character is escaped for symmetry, characters like
* ">" and "/" don't need escaping in HTML and have no special meaning
* unless they're part of a tag or unquoted attribute value. See
* [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
* (under "semi-related fun fact") for more details.
*
* When working with HTML you should always
* [quote attribute values](http://wonko.com/post/html-escaping) to reduce
* XSS vectors.
*
* @static
* @since 0.1.0
* @memberOf _
* @category String
* @param {string} [string=''] The string to escape.
* @returns {string} Returns the escaped string.
* @example
*
* _.escape('fred, barney, & pebbles');
* // => 'fred, barney, & pebbles'
*/
function escape(string) {
string = toString$1(string);
return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar$1) : string;
}
/** `Object#toString` result references. */
var stringTag = '[object String]';
/**
* Checks if `value` is classified as a `String` primitive or object.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a string, else `false`.
* @example
*
* _.isString('abc');
* // => true
*
* _.isString(1);
* // => false
*/
function isString(value) {
return typeof value == 'string' || !isArray$1(value) && isObjectLike(value) && baseGetTag(value) == stringTag;
}
/**
* The base implementation of `_.values` and `_.valuesIn` which creates an
* array of `object` property values corresponding to the property names
* of `props`.
*
* @private
* @param {Object} object The object to query.
* @param {Array} props The property names to get values for.
* @returns {Object} Returns the array of property values.
*/
function baseValues(object, props) {
return arrayMap(props, function (key) {
return object[key];
});
}
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMin = Math.min;
/**
* The base implementation of methods like `_.intersection`, without support
* for iteratee shorthands, that accepts an array of arrays to inspect.
*
* @private
* @param {Array} arrays The arrays to inspect.
* @param {Function} [iteratee] The iteratee invoked per element.
* @param {Function} [comparator] The comparator invoked per element.
* @returns {Array} Returns the new array of shared values.
*/
function baseIntersection(arrays, iteratee, comparator) {
var includes = comparator ? arrayIncludesWith : arrayIncludes,
length = arrays[0].length,
othLength = arrays.length,
othIndex = othLength,
caches = Array(othLength),
maxLength = Infinity,
result = [];
while (othIndex--) {
var array = arrays[othIndex];
if (othIndex && iteratee) {
array = arrayMap(array, baseUnary(iteratee));
}
maxLength = nativeMin(array.length, maxLength);
caches[othIndex] = !comparator && (iteratee || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined;
}
array = arrays[0];
var index = -1,
seen = caches[0];
outer: while (++index < length && result.length < maxLength) {
var value = array[index],
computed = iteratee ? iteratee(value) : value;
value = comparator || value !== 0 ? value : 0;
if (!(seen ? cacheHas(seen, computed) : includes(result, computed, comparator))) {
othIndex = othLength;
while (--othIndex) {
var cache = caches[othIndex];
if (!(cache ? cacheHas(cache, computed) : includes(arrays[othIndex], computed, comparator))) {
continue outer;
}
}
if (seen) {
seen.push(computed);
}
result.push(value);
}
}
return result;
}
/**
* Casts `value` to an empty array if it's not an array like object.
*
* @private
* @param {*} value The value to inspect.
* @returns {Array|Object} Returns the cast array-like object.
*/
function castArrayLikeObject(value) {
return isArrayLikeObject(value) ? value : [];
}
/**
* Creates an array of unique values that are included in all given arrays
* using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
* for equality comparisons. The order and references of result values are
* determined by the first array.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Array
* @param {...Array} [arrays] The arrays to inspect.
* @returns {Array} Returns the new array of intersecting values.
* @example
*
* _.intersection([2, 1], [2, 3]);
* // => [2]
*/
var intersection = baseRest(function (arrays) {
var mapped = arrayMap(arrays, castArrayLikeObject);
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];
});
var intersection$1 = intersection;
/** `Object#toString` result references. */
var boolTag = '[object Boolean]';
/**
* Checks if `value` is classified as a boolean primitive or object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
* @example
*
* _.isBoolean(false);
* // => true
*
* _.isBoolean(null);
* // => false
*/
function isBoolean(value) {
return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;
}
/** `Object#toString` result references. */
var mapTag = '[object Map]',
setTag = '[object Set]';
/** Used for built-in method references. */
var objectProto$2 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$3 = objectProto$2.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(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$1(value);
if (tag == mapTag || tag == setTag) {
return !value.size;
}
if (isPrototype(value)) {
return !baseKeys(value).length;
}
for (var key in value) {
if (hasOwnProperty$3.call(value, key)) {
return false;
}
}
return true;
}
/**
* Performs a deep comparison between two values to determine if they are
* equivalent.
*
* **Note:** This method supports comparing arrays, array buffers, booleans,
* date objects, error objects, maps, numbers, `Object` objects, regexes,
* sets, strings, symbols, and typed arrays. `Object` objects are compared
* by their own, not inherited, enumerable properties. Functions and DOM
* nodes are compared by strict equality, i.e. `===`.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to compare.
* @param {*} other The other value to compare.
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
* @example
*
* var object = { 'a': 1 };
* var other = { 'a': 1 };
*
* _.isEqual(object, other);
* // => true
*
* object === other;
* // => false
*/
function isEqual(value, other) {
return baseIsEqual(value, other);
}
/** `Object#toString` result references. */
var numberTag = '[object Number]';
/**
* Checks if `value` is classified as a `Number` primitive or object.
*
* **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
* classified as numbers, use the `_.isFinite` method.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a number, else `false`.
* @example
*
* _.isNumber(3);
* // => true
*
* _.isNumber(Number.MIN_VALUE);
* // => true
*
* _.isNumber(Infinity);
* // => true
*
* _.isNumber('3');
* // => false
*/
function isNumber(value) {
return typeof value == 'number' || isObjectLike(value) && baseGetTag(value) == numberTag;
}
/**
* Checks if `value` is `null` or `undefined`.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is nullish, else `false`.
* @example
*
* _.isNil(null);
* // => true
*
* _.isNil(void 0);
* // => true
*
* _.isNil(NaN);
* // => false
*/
function isNil(value) {
return value == null;
}
/**
* Checks if `value` is `null`.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is `null`, else `false`.
* @example
*
* _.isNull(null);
* // => true
*
* _.isNull(void 0);
* // => false
*/
function isNull(value) {
return value === null;
}
/**
* Converts `string` to
* [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
*
* @static
* @memberOf _
* @since 3.0.0
* @category String
* @param {string} [string=''] The string to convert.
* @returns {string} Returns the kebab cased string.
* @example
*
* _.kebabCase('Foo Bar');
* // => 'foo-bar'
*
* _.kebabCase('fooBar');
* // => 'foo-bar'
*
* _.kebabCase('__FOO_BAR__');
* // => 'foo-bar'
*/
var kebabCase = createCompounder(function (result, word, index) {
return result + (index ? '-' : '') + word.toLowerCase();
});
var kebabCase$1 = kebabCase;
/**
* This method is like `_.assign` except that it recursively merges own and
* inherited enumerable string keyed properties of source objects into the
* destination object. Source properties that resolve to `undefined` are
* skipped if a destination value exists. Array and plain object properties
* are merged recursively. Other objects and value types are overridden by
* assignment. Source objects are applied from left to right. Subsequent
* sources overwrite property assignments of previous sources.
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @since 0.5.0
* @category Object
* @param {Object} object The destination object.
* @param {...Object} [sources] The source objects.
* @returns {Object} Returns `object`.
* @example
*
* var object = {
* 'a': [{ 'b': 2 }, { 'd': 4 }]
* };
*
* var other = {
* 'a': [{ 'c': 3 }, { 'e': 5 }]
* };
*
* _.merge(object, other);
* // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
*/
var merge$1 = createAssigner(function (object, source, srcIndex) {
baseMerge(object, source, srcIndex);
});
var merge$2 = merge$1;
/**
* The base implementation of `_.set`.
*
* @private
* @param {Object} object The object to modify.
* @param {Array|string} path The path of the property to set.
* @param {*} value The value to set.
* @param {Function} [customizer] The function to customize path creation.
* @returns {Object} Returns `object`.
*/
function baseSet(object, path, value, customizer) {
if (!isObject$1(object)) {
return object;
}
path = castPath(path, object);
var index = -1,
length = path.length,
lastIndex = length - 1,
nested = object;
while (nested != null && ++index < length) {
var key = toKey(path[index]),
newValue = value;
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
return object;
}
if (index != lastIndex) {
var objValue = nested[key];
newValue = customizer ? customizer(objValue, key, nested) : undefined;
if (newValue === undefined) {
newValue = isObject$1(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
}
}
assignValue(nested, key, newValue);
nested = nested[key];
}
return object;
}
/**
* Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
* it's created. Arrays are created for missing index properties while objects
* are created for all other missing properties. Use `_.setWith` to customize
* `path` creation.
*
* **Note:** This method mutates `object`.
*
* @static
* @memberOf _
* @since 3.7.0
* @category Object
* @param {Object} object The object to modify.
* @param {Array|string} path The path of the property to set.
* @param {*} value The value to set.
* @returns {Object} Returns `object`.
* @example
*
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
*
* _.set(object, 'a[0].b.c', 4);
* console.log(object.a[0].b.c);
* // => 4
*
* _.set(object, ['x', '0', 'y', 'z'], 5);
* console.log(object.x[0].y.z);
* // => 5
*/
function set(object, path, value) {
return object == null ? object : baseSet(object, path, value);
}
/** Used for built-in method references. */
var objectProto$1 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
/**
* Used by `_.defaults` to customize its `_.assignIn` use to assign properties
* of source objects to the destination object for all destination properties
* that resolve to `undefined`.
*
* @private
* @param {*} objValue The destination value.
* @param {*} srcValue The source value.
* @param {string} key The key of the property to assign.
* @param {Object} object The parent object of `objValue`.
* @returns {*} Returns the value to assign.
*/
function customDefaultsAssignIn(objValue, srcValue, key, object) {
if (objValue === undefined || eq(objValue, objectProto$1[key]) && !hasOwnProperty$2.call(object, key)) {
return srcValue;
}
return objValue;
}
/** Used to escape characters for inclusion in compiled string literals. */
var stringEscapes = {
'\\': '\\',
"'": "'",
'\n': 'n',
'\r': 'r',
"\u2028": 'u2028',
"\u2029": 'u2029'
};
/**
* Used by `_.template` to escape characters for inclusion in compiled string literals.
*
* @private
* @param {string} chr The matched character to escape.
* @returns {string} Returns the escaped character.
*/
function escapeStringChar(chr) {
return '\\' + stringEscapes[chr];
}
/** Used to match template delimiters. */
var reInterpolate = /<%=([\s\S]+?)%>/g;
var reInterpolate$1 = reInterpolate;
/** Used to match template delimiters. */
var reEscape = /<%-([\s\S]+?)%>/g;
var reEscape$1 = reEscape;
/** Used to match template delimiters. */
var reEvaluate = /<%([\s\S]+?)%>/g;
var reEvaluate$1 = reEvaluate;
/**
* By default, the template delimiters used by lodash are like those in
* embedded Ruby (ERB) as well as ES2015 template strings. Change the
* following template settings to use alternative delimiters.
*
* @static
* @memberOf _
* @type {Object}
*/
var templateSettings = {
/**
* Used to detect `data` property values to be HTML-escaped.
*
* @memberOf _.templateSettings
* @type {RegExp}
*/
'escape': reEscape$1,
/**
* Used to detect code to be evaluated.
*
* @memberOf _.templateSettings
* @type {RegExp}
*/
'evaluate': reEvaluate$1,
/**
* Used to detect `data` property values to inject.
*
* @memberOf _.templateSettings
* @type {RegExp}
*/
'interpolate': reInterpolate$1,
/**
* Used to reference the data object in the template text.
*
* @memberOf _.templateSettings
* @type {string}
*/
'variable': '',
/**
* Used to import variables into the compiled template.
*
* @memberOf _.templateSettings
* @type {Object}
*/
'imports': {
/**
* A reference to the `lodash` function.
*
* @memberOf _.templateSettings.imports
* @type {Function}
*/
'_': {
'escape': escape
}
}
};
var templateSettings$1 = templateSettings;
/** Error message constants. */
var INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';
/** Used to match empty string literals in compiled template source. */
var reEmptyStringLeading = /\b__p \+= '';/g,
reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
/**
* Used to validate the `validate` option in `_.template` variable.
*
* Forbids characters which could potentially change the meaning of the function argument definition:
* - "()," (modification of function parameters)
* - "=" (default value)
* - "[]{}" (destructuring of function parameters)
* - "/" (beginning of a comment)
* - whitespace
*/
var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
/**
* Used to match
* [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
*/
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
/** Used to ensure capturing order of template delimiters. */
var reNoMatch = /($^)/;
/** Used to match unescaped characters in compiled string literals. */
var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
/** Used for built-in method references. */
var objectProto = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$1 = objectProto.hasOwnProperty;
/**
* Creates a compiled template function that can interpolate data properties
* in "interpolate" delimiters, HTML-escape interpolated data properties in
* "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
* properties may be accessed as free variables in the template. If a setting
* object is given, it takes precedence over `_.templateSettings` values.
*
* **Note:** In the development build `_.template` utilizes
* [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
* for easier debugging.
*
* For more information on precompiling templates see
* [lodash's custom builds documentation](https://lodash.com/custom-builds).
*
* For more information on Chrome extension sandboxes see
* [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
*
* @static
* @since 0.1.0
* @memberOf _
* @category String
* @param {string} [string=''] The template string.
* @param {Object} [options={}] The options object.
* @param {RegExp} [options.escape=_.templateSettings.escape]
* The HTML "escape" delimiter.
* @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
* The "evaluate" delimiter.
* @param {Object} [options.imports=_.templateSettings.imports]
* An object to import into the template as free variables.
* @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
* The "interpolate" delimiter.
* @param {string} [options.sourceURL='templateSources[n]']
* The sourceURL of the compiled template.
* @param {string} [options.variable='obj']
* The data object variable name.
* @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
* @returns {Function} Returns the compiled template function.
* @example
*
* // Use the "interpolate" delimiter to create a compiled template.
* var compiled = _.template('hello <%= user %>!');
* compiled({ 'user': 'fred' });
* // => 'hello fred!'
*
* // Use the HTML "escape" delimiter to escape data property values.
* var compiled = _.template('<b><%- value %></b>');
* compiled({ 'value': '<script>' });
* // => '<b><script></b>'
*
* // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
* var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
* compiled({ 'users': ['fred', 'barney'] });
* // => '<li>fred</li><li>barney</li>'
*
* // Use the internal `print` function in "evaluate" delimiters.
* var compiled = _.template('<% print("hello " + user); %>!');
* compiled({ 'user': 'barney' });
* // => 'hello barney!'
*
* // Use the ES template literal delimiter as an "interpolate" delimiter.
* // Disable support by replacing the "interpolate" delimiter.
* var compiled = _.template('hello ${ user }!');
* compiled({ 'user': 'pebbles' });
* // => 'hello pebbles!'
*
* // Use backslashes to treat delimiters as plain text.
* var compiled = _.template('<%= "\\<%- value %\\>" %>');
* compiled({ 'value': 'ignored' });
* // => '<%- value %>'
*
* // Use the `imports` option to import `jQuery` as `jq`.
* var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
* var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
* compiled({ 'users': ['fred', 'barney'] });
* // => '<li>fred</li><li>barney</li>'
*
* // Use the `sourceURL` option to specify a custom sourceURL for the template.
* var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
* compiled(data);
* // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
*
* // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
* var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
* compiled.source;
* // => function(data) {
* // var __t, __p = '';
* // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
* // return __p;
* // }
*
* // Use custom template delimiters.
* _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
* var compiled = _.template('hello {{ user }}!');
* compiled({ 'user': 'mustache' });
* // => 'hello mustache!'
*
* // Use the `source` property to inline compiled templates for meaningful
* // line numbers in error messages and stack traces.
* fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
* var JST = {\
* "main": ' + _.template(mainText).source + '\
* };\
* ');
*/
function template(string, options, guard) {
// Based on John Resig's `tmpl` implementation
// (http://ejohn.org/blog/javascript-micro-templating/)
// and Laura Doktorova's doT.js (https://github.com/olado/doT).
var settings = templateSettings$1.imports._.templateSettings || templateSettings$1;
if (guard && isIterateeCall(string, options, guard)) {
options = undefined;
}
string = toString$1(string);
options = extendWith({}, options, settings, customDefaultsAssignIn);
var imports = extendWith({}, options.imports, settings.imports, customDefaultsAssignIn),
importsKeys = keys(imports),
importsValues = baseValues(imports, importsKeys);
var isEscaping,
isEvaluating,
index = 0,
interpolate = options.interpolate || reNoMatch,
source = "__p += '";
// Compile the regexp to match each delimiter.
var reDelimiters = RegExp((options.escape || reNoMatch).source + '|' + interpolate.source + '|' + (interpolate === reInterpolate$1 ? reEsTemplate : reNoMatch).source + '|' + (options.evaluate || reNoMatch).source + '|$', 'g');
// Use a sourceURL for easier debugging.
// The sourceURL gets injected into the source that's eval-ed, so be careful
// to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in
// and escape the comment, thus injecting code that gets evaled.
var sourceURL = hasOwnProperty$1.call(options, 'sourceURL') ? '//# sourceURL=' + (options.sourceURL + '').replace(/\s/g, ' ') + '\n' : '';
string.replace(reDelimiters, function (match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
interpolateValue || (interpolateValue = esTemplateValue);
// Escape characters that can't be included in string literals.
source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
// Replace delimiters with snippets.
if (escapeValue) {
isEscaping = true;
source += "' +\n__e(" + escapeValue + ") +\n'";
}
if (evaluateValue) {
isEvaluating = true;
source += "';\n" + evaluateValue + ";\n__p += '";
}
if (interpolateValue) {
source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
}
index = offset + match.length;
// The JS engine embedded in Adobe products needs `match` returned in
// order to produce the correct `offset` value.
return match;
});
source += "';\n";
// If `variable` is not specified wrap a with-statement around the generated
// code to add the data object to the top of the scope chain.
var variable = hasOwnProperty$1.call(options, 'variable') && options.variable;
if (!variable) {
source = 'with (obj) {\n' + source + '\n}\n';
}
// Throw an error if a forbidden character was found in `variable`, to prevent
// potential command injection attacks.
else if (reForbiddenIdentifierChars.test(variable)) {
throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);
}
// Cleanup code by stripping empty strings.
source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source).replace(reEmptyStringMiddle, '$1').replace(reEmptyStringTrailing, '$1;');
// Frame code as the function body.
source = 'function(' + (variable || 'obj') + ') {\n' + (variable ? '' : 'obj || (obj = {});\n') + "var __t, __p = ''" + (isEscaping ? ', __e = _.escape' : '') + (isEvaluating ? ', __j = Array.prototype.join;\n' + "function print() { __p += __j.call(arguments, '') }\n" : ';\n') + source + 'return __p\n}';
var result = attempt$1(function () {
return Function(importsKeys, sourceURL + 'return ' + source).apply(undefined, importsValues);
});
// Provide the compiled function's source by its `toString` method or
// the `source` property as a convenience for inlining compiled templates.
result.source = source;
if (isError(result)) {
throw result;
}
return result;
}
/** Error message constants. */
var FUNC_ERROR_TEXT = 'Expected a function';
/**
* Creates a throttled function that only invokes `func` at most once per
* every `wait` milliseconds. The throttled function comes with a `cancel`
* method to cancel delayed `func` invocations and a `flush` method to
* immediately invoke them. Provide `options` to indicate whether `func`
* should be invoked on the leading and/or trailing edge of the `wait`
* timeout. The `func` is invoked with the last arguments provided to the
* throttled function. Subsequent calls to the throttled function return the
* result of the last `func` invocation.
*
* **Note:** If `leading` and `trailing` options are `true`, `func` is
* invoked on the trailing edge of the timeout only if the throttled function
* is invoked more than once during the `wait` timeout.
*
* If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
* until to the next tick, similar to `setTimeout` with a timeout of `0`.
*
* See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
* for details over the differences between `_.throttle` and `_.debounce`.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Function
* @param {Function} func The function to throttle.
* @param {number} [wait=0] The number of milliseconds to throttle invocations to.
* @param {Object} [options={}] The options object.
* @param {boolean} [options.leading=true]
* Specify invoking on the leading edge of the timeout.
* @param {boolean} [options.trailing=true]
* Specify invoking on the trailing edge of the timeout.
* @returns {Function} Returns the new throttled function.
* @example
*
* // Avoid excessively updating the position while scrolling.
* jQuery(window).on('scroll', _.throttle(updatePosition, 100));
*
* // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
* var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
* jQuery(element).on('click', throttled);
*
* // Cancel the trailing throttled invocation.
* jQuery(window).on('popstate', throttled.cancel);
*/
function throttle(func, wait, options) {
var leading = true,
trailing = true;
if (typeof func != 'function') {
throw new TypeError(FUNC_ERROR_TEXT);
}
if (isObject$1(options)) {
leading = 'leading' in options ? !!options.leading : leading;
trailing = 'trailing' in options ? !!options.trailing : trailing;
}
return debounce$1(func, wait, {
'leading': leading,
'maxWait': wait,
'trailing': trailing
});
}
/**
* Converts `string`, as a whole, to upper case just like
* [String#toUpperCase](https://mdn.io/toUpperCase).
*
* @static
* @memberOf _
* @since 4.0.0
* @category String
* @param {string} [string=''] The string to convert.
* @returns {string} Returns the upper cased string.
* @example
*
* _.toUpper('--foo-bar--');
* // => '--FOO-BAR--'
*
* _.toUpper('fooBar');
* // => 'FOOBAR'
*
* _.toUpper('__foo_bar__');
* // => '__FOO_BAR__'
*/
function toUpper(value) {
return toString$1(value).toUpperCase();
}
function getIEVersion() {
if (typeof navigator === "undefined" || !navigator) return Number.MAX_SAFE_INTEGER;
var _navigator = navigator,
userAgent = _navigator.userAgent;
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1;
var isIE11 = userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11.0") > -1;
if (isIE) {
var reIE = /MSIE (\d+\.\d+);/;
var match = userAgent.match(reIE);
if (!match) return -1;
var fIEVersion = parseFloat(match[1]);
return fIEVersion < 7 ? 6 : fIEVersion;
}
if (isIE11) {
return 11;
}
return Number.MAX_SAFE_INTEGER;
}
function getCharacterLength$1(str, maxCharacter) {
var hasMaxCharacter = isNumber(maxCharacter);
if (!str || str.length === 0) {
if (hasMaxCharacter) {
return {
length: 0,
characters: str
};
}
return 0;
}
var len = 0;
for (var i = 0; i < str.length; i++) {
var currentStringLength = 0;
if (str.charCodeAt(i) > 127) {
currentStringLength = 2;
} else {
currentStringLength = 1;
}
if (hasMaxCharacter && len + currentStringLength > maxCharacter) {
return {
length: len,
characters: str.slice(0, i)
};
}
len += currentStringLength;
}
if (hasMaxCharacter) {
return {
length: len,
characters: str
};
}
return len;
}
function getUnicodeLength(str) {
return _toConsumableArray(str !== null && str !== void 0 ? str : "").length;
}
function limitUnicodeMaxLength(str, maxLength, oldStr) {
if (_toConsumableArray(oldStr !== null && oldStr !== void 0 ? oldStr : "").slice().length === maxLength) return oldStr || "";
return _toConsumableArray(str !== null && str !== void 0 ? str : "").slice(0, maxLength).join("");
}
var DOM_STYLE_PROPS = ["padding-top", "padding-bottom", "padding-left", "padding-right", "font-family", "font-weight", "font-size", "font-variant", "text-rendering", "text-transform", "width", "text-indent", "border-width", "box-sizing", "line-height", "letter-spacing"];
function calculateNodeSize(targetElement) {
if (typeof window === "undefined") {
return {
paddingSize: 0,
borderSize: 0,
boxSizing: 0,
sizingStyle: ""
};
}
var style = window.getComputedStyle(targetElement);
var boxSizing = style.getPropertyValue("box-sizing") || style.getPropertyValue("-moz-box-sizing") || style.getPropertyValue("-webkit-box-sizing");
var paddingSize = parseFloat(style.getPropertyValue("padding-bottom")) + parseFloat(style.getPropertyValue("padding-top"));
var borderSize = parseFloat(style.getPropertyValue("border-bottom-width")) + parseFloat(style.getPropertyValue("border-top-width"));
var sizingStyle = DOM_STYLE_PROPS.map(function (name) {
return "".concat(name, ":").concat(style.getPropertyValue(name));
}).join(";");
return {
paddingSize: paddingSize,
borderSize: borderSize,
boxSizing: boxSizing,
sizingStyle: sizingStyle
};
}
function ownKeys$1f(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$1d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1f(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1f(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function circleAdapter(circleElem) {
var _window$getComputedSt, _window, _window2;
var basicStyle = {};
if (!circleElem || typeof window === "undefined") {
return;
}
var computedStyle = (_window$getComputedSt = (_window = window).getComputedStyle) === null || _window$getComputedSt === void 0 ? void 0 : _window$getComputedSt.call(_window, circleElem);
var color = (computedStyle === null || computedStyle === void 0 ? void 0 : computedStyle.color) || "";
var fontSize = (computedStyle === null || computedStyle === void 0 ? void 0 : computedStyle.fontSize) || "12px";
var ua = (_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.navigator) === null || _window2 === void 0 ? void 0 : _window2.userAgent;
var isSafari = /Safari/.test(ua) && !/Chrome/.test(ua);
var isIosWechat = /(?=.*iPhone)[?=.*MicroMessenger]/.test(ua) && !/Chrome/.test(ua);
var isIpadWechat = /(?=.*iPad)[?=.*MicroMessenger]/.test(ua) && !/Chrome/.test(ua);
if (isSafari || isIosWechat || isIpadWechat) {
basicStyle = {
transformOrigin: "0px 0px",
transform: "scale(".concat(parseInt(fontSize, 10) / 12, ")")
};
}
if (color && getIEVersion() > 11) {
var matched = color.match(/[\d.]+/g);
var endColor = matched ? "rgba(".concat(matched[0], ", ").concat(matched[1], ", ").concat(matched[2], ", 0)") : "";
setStyle(circleElem, _objectSpread$1d(_objectSpread$1d({}, basicStyle), {}, {
background: "conic-gradient(from 90deg at 50% 50%,".concat(endColor, " 0deg, ").concat(color, " 360deg)")
}));
} else {
setStyle(circleElem, _objectSpread$1d(_objectSpread$1d({}, basicStyle), {}, {
background: ""
}));
}
}
var config = {
prefix: "t"
};
var defaultConfig = {
classPrefix: "t",
form: {
requiredMark: void 0
}
};
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;
}
var zhCn = {exports: {}};
var dayjs_min = {exports: {}};
(function (module, exports) {
!function (t, e) {
module.exports = e() ;
}(commonjsGlobal, function () {
var t = 1e3,
e = 6e4,
n = 36e5,
r = "millisecond",
i = "second",
s = "minute",
u = "hour",
a = "day",
o = "week",
c = "month",
f = "quarter",
h = "year",
d = "date",
l = "Invalid Date",
$ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,
y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,
M = {
name: "en",
weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
ordinal: function ordinal(t) {
var e = ["th", "st", "nd", "rd"],
n = t % 100;
return "[" + t + (e[(n - 20) % 10] || e[n] || e[0]) + "]";
}
},
m = function m(t, e, n) {
var r = String(t);
return !r || r.length >= e ? t : "" + Array(e + 1 - r.length).join(n) + t;
},
v = {
s: m,
z: function z(t) {
var e = -t.utcOffset(),
n = Math.abs(e),
r = Math.floor(n / 60),
i = n % 60;
return (e <= 0 ? "+" : "-") + m(r, 2, "0") + ":" + m(i, 2, "0");
},
m: function t(e, n) {
if (e.date() < n.date()) return -t(n, e);
var r = 12 * (n.year() - e.year()) + (n.month() - e.month()),
i = e.clone().add(r, c),
s = n - i < 0,
u = e.clone().add(r + (s ? -1 : 1), c);
return +(-(r + (n - i) / (s ? i - u : u - i)) || 0);
},
a: function a(t) {
return t < 0 ? Math.ceil(t) || 0 : Math.floor(t);
},
p: function p(t) {
return {
M: c,
y: h,
w: o,
d: a,
D: d,
h: u,
m: s,
s: i,
ms: r,
Q: f
}[t] || String(t || "").toLowerCase().replace(/s$/, "");
},
u: function u(t) {
return void 0 === t;
}
},
g = "en",
D = {};
D[g] = M;
var p = "$isDayjsObject",
S = function S(t) {
return t instanceof _ || !(!t || !t[p]);
},
w = function t(e, n, r) {
var i;
if (!e) return g;
if ("string" == typeof e) {
var s = e.toLowerCase();
D[s] && (i = s), n && (D[s] = n, i = s);
var u = e.split("-");
if (!i && u.length > 1) return t(u[0]);
} else {
var a = e.name;
D[a] = e, i = a;
}
return !r && i && (g = i), i || !r && g;
},
O = function O(t, e) {
if (S(t)) return t.clone();
var n = "object" == _typeof$2(e) ? e : {};
return n.date = t, n.args = arguments, new _(n);
},
b = v;
b.l = w, b.i = S, b.w = function (t, e) {
return O(t, {
locale: e.$L,
utc: e.$u,
x: e.$x,
$offset: e.$offset
});
};
var _ = function () {
function M(t) {
this.$L = w(t.locale, null, !0), this.parse(t), this.$x = this.$x || t.x || {}, this[p] = !0;
}
var m = M.prototype;
return m.parse = function (t) {
this.$d = function (t) {
var e = t.date,
n = t.utc;
if (null === e) return new Date(NaN);
if (b.u(e)) return new Date();
if (e instanceof Date) return new Date(e);
if ("string" == typeof e && !/Z$/i.test(e)) {
var r = e.match($);
if (r) {
var i = r[2] - 1 || 0,
s = (r[7] || "0").substring(0, 3);
return n ? new Date(Date.UTC(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s)) : new Date(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s);
}
}
return new Date(e);
}(t), this.init();
}, m.init = function () {
var t = this.$d;
this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds();
}, m.$utils = function () {
return b;
}, m.isValid = function () {
return !(this.$d.toString() === l);
}, m.isSame = function (t, e) {
var n = O(t);
return this.startOf(e) <= n && n <= this.endOf(e);
}, m.isAfter = function (t, e) {
return O(t) < this.startOf(e);
}, m.isBefore = function (t, e) {
return this.endOf(e) < O(t);
}, m.$g = function (t, e, n) {
return b.u(t) ? this[e] : this.set(n, t);
}, m.unix = function () {
return Math.floor(this.valueOf() / 1e3);
}, m.valueOf = function () {
return this.$d.getTime();
}, m.startOf = function (t, e) {
var n = this,
r = !!b.u(e) || e,
f = b.p(t),
l = function l(t, e) {
var i = b.w(n.$u ? Date.UTC(n.$y, e, t) : new Date(n.$y, e, t), n);
return r ? i : i.endOf(a);
},
$ = function $(t, e) {
return b.w(n.toDate()[t].apply(n.toDate("s"), (r ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e)), n);
},
y = this.$W,
M = this.$M,
m = this.$D,
v = "set" + (this.$u ? "UTC" : "");
switch (f) {
case h:
return r ? l(1, 0) : l(31, 11);
case c:
return r ? l(1, M) : l(0, M + 1);
case o:
var g = this.$locale().weekStart || 0,
D = (y < g ? y + 7 : y) - g;
return l(r ? m - D : m + (6 - D), M);
case a:
case d:
return $(v + "Hours", 0);
case u:
return $(v + "Minutes", 1);
case s:
return $(v + "Seconds", 2);
case i:
return $(v + "Milliseconds", 3);
default:
return this.clone();
}
}, m.endOf = function (t) {
return this.startOf(t, !1);
}, m.$set = function (t, e) {
var n,
o = b.p(t),
f = "set" + (this.$u ? "UTC" : ""),
l = (n = {}, n[a] = f + "Date", n[d] = f + "Date", n[c] = f + "Month", n[h] = f + "FullYear", n[u] = f + "Hours", n[s] = f + "Minutes", n[i] = f + "Seconds", n[r] = f + "Milliseconds", n)[o],
$ = o === a ? this.$D + (e - this.$W) : e;
if (o === c || o === h) {
var y = this.clone().set(d, 1);
y.$d[l]($), y.init(), this.$d = y.set(d, Math.min(this.$D, y.daysInMonth())).$d;
} else l && this.$d[l]($);
return this.init(), this;
}, m.set = function (t, e) {
return this.clone().$set(t, e);
}, m.get = function (t) {
return this[b.p(t)]();
}, m.add = function (r, f) {
var d,
l = this;
r = Number(r);
var $ = b.p(f),
y = function y(t) {
var e = O(l);
return b.w(e.date(e.date() + Math.round(t * r)), l);
};
if ($ === c) return this.set(c, this.$M + r);
if ($ === h) return this.set(h, this.$y + r);
if ($ === a) return y(1);
if ($ === o) return y(7);
var M = (d = {}, d[s] = e, d[u] = n, d[i] = t, d)[$] || 1,
m = this.$d.getTime() + r * M;
return b.w(m, this);
}, m.subtract = function (t, e) {
return this.add(-1 * t, e);
}, m.format = function (t) {
var e = this,
n = this.$locale();
if (!this.isValid()) return n.invalidDate || l;
var r = t || "YYYY-MM-DDTHH:mm:ssZ",
i = b.z(this),
s = this.$H,
u = this.$m,
a = this.$M,
o = n.weekdays,
c = n.months,
f = n.meridiem,
h = function h(t, n, i, s) {
return t && (t[n] || t(e, r)) || i[n].slice(0, s);
},
d = function d(t) {
return b.s(s % 12 || 12, t, "0");
},
$ = f || function (t, e, n) {
var r = t < 12 ? "AM" : "PM";
return n ? r.toLowerCase() : r;
};
return r.replace(y, function (t, r) {
return r || function (t) {
switch (t) {
case "YY":
return String(e.$y).slice(-2);
case "YYYY":
return b.s(e.$y, 4, "0");
case "M":
return a + 1;
case "MM":
return b.s(a + 1, 2, "0");
case "MMM":
return h(n.monthsShort, a, c, 3);
case "MMMM":
return h(c, a);
case "D":
return e.$D;
case "DD":
return b.s(e.$D, 2, "0");
case "d":
return String(e.$W);
case "dd":
return h(n.weekdaysMin, e.$W, o, 2);
case "ddd":
return h(n.weekdaysShort, e.$W, o, 3);
case "dddd":
return o[e.$W];
case "H":
return String(s);
case "HH":
return b.s(s, 2, "0");
case "h":
return d(1);
case "hh":
return d(2);
case "a":
return $(s, u, !0);
case "A":
return $(s, u, !1);
case "m":
return String(u);
case "mm":
return b.s(u, 2, "0");
case "s":
return String(e.$s);
case "ss":
return b.s(e.$s, 2, "0");
case "SSS":
return b.s(e.$ms, 3, "0");
case "Z":
return i;
}
return null;
}(t) || i.replace(":", "");
});
}, m.utcOffset = function () {
return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
}, m.diff = function (r, d, l) {
var $,
y = this,
M = b.p(d),
m = O(r),
v = (m.utcOffset() - this.utcOffset()) * e,
g = this - m,
D = function D() {
return b.m(y, m);
};
switch (M) {
case h:
$ = D() / 12;
break;
case c:
$ = D();
break;
case f:
$ = D() / 3;
break;
case o:
$ = (g - v) / 6048e5;
break;
case a:
$ = (g - v) / 864e5;
break;
case u:
$ = g / n;
break;
case s:
$ = g / e;
break;
case i:
$ = g / t;
break;
default:
$ = g;
}
return l ? $ : b.a($);
}, m.daysInMonth = function () {
return this.endOf(c).$D;
}, m.$locale = function () {
return D[this.$L];
}, m.locale = function (t, e) {
if (!t) return this.$L;
var n = this.clone(),
r = w(t, e, !0);
return r && (n.$L = r), n;
}, m.clone = function () {
return b.w(this.$d, this);
}, m.toDate = function () {
return new Date(this.valueOf());
}, m.toJSON = function () {
return this.isValid() ? this.toISOString() : null;
}, m.toISOString = function () {
return this.$d.toISOString();
}, m.toString = function () {
return this.$d.toUTCString();
}, M;
}(),
k = _.prototype;
return O.prototype = k, [["$ms", r], ["$s", i], ["$m", s], ["$H", u], ["$W", a], ["$M", c], ["$y", h], ["$D", d]].forEach(function (t) {
k[t[1]] = function (e) {
return this.$g(e, t[0], t[1]);
};
}), O.extend = function (t, e) {
return t.$i || (t(e, _, O), t.$i = !0), O;
}, O.locale = w, O.isDayjs = S, O.unix = function (t) {
return O(1e3 * t);
}, O.en = D[g], O.Ls = D, O.p = {}, O;
});
})(dayjs_min);
var dayjs = dayjs_min.exports;
(function (module, exports) {
!function (e, _) {
module.exports = _(dayjs_min.exports) ;
}(commonjsGlobal, function (e) {
function _(e) {
return e && "object" == _typeof$2(e) && "default" in e ? e : {
default: e
};
}
var t = _(e),
d = {
name: "zh-cn",
weekdays: "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
weekdaysShort: "周日_周一_周二_周三_周四_周五_周六".split("_"),
weekdaysMin: "日_一_二_三_四_五_六".split("_"),
months: "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
monthsShort: "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
ordinal: function ordinal(e, _) {
return "W" === _ ? e + "周" : e + "日";
},
weekStart: 1,
yearStart: 4,
formats: {
LT: "HH:mm",
LTS: "HH:mm:ss",
L: "YYYY/MM/DD",
LL: "YYYY年M月D日",
LLL: "YYYY年M月D日Ah点mm分",
LLLL: "YYYY年M月D日ddddAh点mm分",
l: "YYYY/M/D",
ll: "YYYY年M月D日",
lll: "YYYY年M月D日 HH:mm",
llll: "YYYY年M月D日dddd HH:mm"
},
relativeTime: {
future: "%s内",
past: "%s前",
s: "几秒",
m: "1 分钟",
mm: "%d 分钟",
h: "1 小时",
hh: "%d 小时",
d: "1 天",
dd: "%d 天",
M: "1 个月",
MM: "%d 个月",
y: "1 年",
yy: "%d 年"
},
meridiem: function meridiem(e, _) {
var t = 100 * e + _;
return t < 600 ? "凌晨" : t < 900 ? "早上" : t < 1100 ? "上午" : t < 1300 ? "中午" : t < 1800 ? "下午" : "晚上";
}
};
return t.default.locale(d, null, !0), d;
});
})(zhCn);
var defaultZhLocale = {
actionSheet: {
cancel: "\u53D6\u6D88"
},
calendar: {
title: "\u8BF7\u9009\u62E9\u65E5\u671F",
confirm: "\u786E\u8BA4",
weekdays: ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"],
monthTitle: "{year} \u5E74 {month}",
months: ["1 \u6708", "2 \u6708", "3 \u6708", "4 \u6708", "5 \u6708", "6 \u6708", "7 \u6708", "8 \u6708", "9 \u6708", "10 \u6708", "11 \u6708", "12 \u6708"]
},
cascader: {
title: "\u6807\u9898",
placeholder: "\u9009\u62E9\u9009\u9879"
},
dropdownMenu: {
reset: "\u91CD\u7F6E",
confirm: "\u786E\u5B9A"
},
dateTimePicker: {
title: "\u9009\u62E9\u65F6\u95F4",
cancel: "\u53D6\u6D88",
confirm: "\u786E\u5B9A",
format: "YYYY-MM-DD",
yearLabel: "\u5E74",
monthLabel: "\u6708",
dateLabel: "\u65E5",
hourLabel: "\u65F6",
minuteLabel: "\u5206",
secondLabel: "\u79D2"
},
form: {
errorMessage: {
date: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684${name}",
url: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684${name}",
required: "${name}\u5FC5\u586B",
whitespace: "${name}\u4E0D\u80FD\u4E3A\u7A7A",
max: "${name}\u5B57\u7B26\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7 ${validate} \u4E2A\u5B57\u7B26\uFF0C\u4E00\u4E2A\u4E2D\u6587\u7B49\u4E8E\u4E24\u4E2A\u5B57\u7B26",
min: "${name}\u5B57\u7B26\u957F\u5EA6\u4E0D\u80FD\u5C11\u4E8E ${validate} \u4E2A\u5B57\u7B26\uFF0C\u4E00\u4E2A\u4E2D\u6587\u7B49\u4E8E\u4E24\u4E2A\u5B57\u7B26",
len: "${name}\u5B57\u7B26\u957F\u5EA6\u5FC5\u987B\u662F ${validate}",
enum: "${name}\u53EA\u80FD\u662F${validate}\u7B49",
idcard: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684${name}",
telnumber: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684${name}",
pattern: "\u8BF7\u8F93\u5165\u6B63\u786E\u7684${name}",
validator: "${name}\u4E0D\u7B26\u5408\u8981\u6C42",
boolean: "${name}\u6570\u636E\u7C7B\u578B\u5FC5\u987B\u662F\u5E03\u5C14\u7C7B\u578B",
number: "${name}\u5FC5\u987B\u662F\u6570\u5B57"
},
colonText: "\uFF1A"
},
picker: {
cancel: "\u53D6\u6D88",
confirm: "\u786E\u8BA4"
},
pullDownRefresh: {
loadingTexts: ["\u4E0B\u62C9\u5237\u65B0", "\u677E\u624B\u5237\u65B0", "\u6B63\u5728\u5237\u65B0", "\u5237\u65B0\u5B8C\u6210"]
},
rate: {
valueText: "{value} \u5206",
noValueText: "\u672A\u8BC4\u5206"
},
tabBar: {
newsAriaLabel: "\u6709\u65B0\u7684\u6D88\u606F",
moreNewsAriaLabel: "\u6709\u5F88\u591A\u6D88\u606F",
haveMoreNewsAriaLabel: "\u6709 {value}+ \u6761\u6D88\u606F",
haveNewsAriaLabel: "\u6709 {value} \u6761\u6D88\u606F"
},
table: {
empty: "\u6682\u65E0\u6570\u636E"
},
list: {
loading: "\u52A0\u8F7D\u4E2D...",
loadingMoreText: "\u70B9\u51FB\u52A0\u8F7D\u66F4\u591A",
pulling: "\u4E0B\u62C9\u5373\u53EF\u5237\u65B0...",
loosing: "\u91CA\u653E\u5373\u53EF\u5237\u65B0...",
success: "\u5237\u65B0\u6210\u529F"
},
upload: {
progress: {
uploadingText: "\u4E0A\u4F20\u4E2D...",
waitingText: "\u5F85\u4E0A\u4F20",
failText: "\u4E0A\u4F20\u5931\u8D25",
successText: "\u4E0A\u4F20\u6210\u529F"
}
},
guide: {
next: "\u4E0B\u4E00\u6B65",
skip: "\u8DF3\u8FC7",
finish: "\u5B8C\u6210",
back: "\u8FD4\u56DE"
},
qrcode: {
expiredText: "\u4E8C\u7EF4\u7801\u8FC7\u671F",
refreshText: "\u70B9\u51FB\u5237\u65B0",
scannedText: "\u5DF2\u626B\u63CF"
}
};
var defaultGlobalConfig = merge$2(defaultConfig, defaultZhLocale);
var configProviderInjectKey = Symbol("configProvide");
var mergeWith = function mergeWith(defaultGlobalConfig2, injectConfig) {
return _mergeWith(defaultGlobalConfig2, injectConfig, function (objValue, srcValue) {
if (isArray$1(objValue)) {
return srcValue;
}
});
};
function ownKeys$1e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$1c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1e(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var globalConfigCopy = vue.ref();
var t = function t(pattern) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var data = args[0];
if (isString(pattern)) {
if (!data) return pattern;
var regular = /\{\s*([\w-]+)\s*\}/g;
var translated = pattern.replace(regular, function (match, key) {
return String(data[key]);
});
return translated;
}
if (isFunction(pattern)) {
if (!args.length) return pattern(vue.h);
return pattern.apply(void 0, args);
}
return "";
};
function useConfig() {
var componentName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : void 0;
var componentLocale = arguments.length > 1 ? arguments[1] : undefined;
var injectGlobalConfig = vue.getCurrentInstance() ? vue.inject(configProviderInjectKey, null) : globalConfigCopy;
var mergedGlobalConfig = vue.computed(function () {
return (injectGlobalConfig === null || injectGlobalConfig === void 0 ? void 0 : injectGlobalConfig.value) || defaultGlobalConfig;
});
var globalConfig = vue.computed(function () {
return Object.assign({}, mergedGlobalConfig.value[componentName], componentLocale);
});
var classPrefix = vue.computed(function () {
return mergedGlobalConfig.value.classPrefix;
});
return {
t: t,
global: globalConfig,
globalConfig: globalConfig,
classPrefix: classPrefix
};
}
var provideConfig = function provideConfig(props) {
var defaultData = cloneDeep(defaultGlobalConfig);
var mergedGlobalConfig = vue.computed(function () {
return _objectSpread$1c({}, mergeWith(defaultData, props.globalConfig));
});
vue.provide(configProviderInjectKey, mergedGlobalConfig);
if (!globalConfigCopy.value) {
globalConfigCopy.value = mergedGlobalConfig.value;
}
return mergedGlobalConfig;
};
function usePrefixClass(componentName) {
var _useConfig = useConfig("classPrefix"),
classPrefix = _useConfig.classPrefix;
return vue.computed(function () {
return componentName ? "".concat(classPrefix.value, "-").concat(componentName) : classPrefix.value;
});
}
var prefix$1k = config.prefix;
var TGradientIcon = vue.defineComponent({
name: "".concat(prefix$1k, "-gradient"),
props: {
style: Object
},
setup: function setup(props) {
var classPrefix = usePrefixClass();
var gradientClass = usePrefixClass("loading__gradient");
var classes = [gradientClass.value, "".concat(classPrefix.value, "-icon-loading")];
var circle = vue.ref();
var updateColor = function updateColor() {
var circleElem = circle.value;
circleAdapter(circleElem);
};
vue.onMounted(function () {
vue.nextTick(function () {
updateColor();
});
});
vue.onUpdated(function () {
updateColor();
});
return function () {
return vue.createVNode("svg", {
"style": props.style,
"class": classes,
"viewBox": "0 0 12 12",
"version": "1.1",
"width": "1em",
"height": "1em",
"xmlns": "http://www.w3.org/2000/svg"
}, [vue.createVNode("foreignObject", {
"x": "0",
"y": "0",
"width": "12",
"height": "12"
}, [vue.createVNode("div", {
"ref": circle,
"class": "".concat(gradientClass.value, "-conic")
}, null)])]);
};
}
});
var prefix$1j = config.prefix;
var SpinnerIcon = vue.defineComponent({
name: "".concat(prefix$1j, "-spinner"),
props: {
style: Object
},
setup: function setup(props) {
var spinnerClass = usePrefixClass("loading__spinner");
return function () {
return vue.createVNode("span", {
"class": spinnerClass.value,
"style": props.style
}, [_toConsumableArray(new Array(12)).map(function (_, index) {
return vue.createVNode("i", {
"class": ["".concat(spinnerClass.value, "--line"), "".concat(spinnerClass.value, "--line-").concat(index + 1)]
}, null);
})]);
};
}
});
var props$N = {
attach: {
type: [String, Function],
default: ""
},
content: {
type: [String, Function]
},
default: {
type: [String, Function]
},
delay: {
type: Number,
default: 0
},
duration: {
type: Number,
default: 800
},
fullscreen: Boolean,
indicator: {
type: [Boolean, Function],
default: true
},
inheritColor: Boolean,
layout: {
type: String,
default: "horizontal",
validator: function validator(val) {
if (!val) return true;
return ["horizontal", "vertical"].includes(val);
}
},
loading: {
type: Boolean,
default: true
},
pause: Boolean,
reverse: Boolean,
size: {
type: String,
default: "20px"
},
text: {
type: [String, Function]
},
theme: {
type: String,
default: "circular",
validator: function validator(val) {
if (!val) return true;
return ["circular", "spinner", "dots"].includes(val);
}
}
};
function getDefaultNode(options) {
var defaultNode;
if (isObject$1(options) && "defaultNode" in options) {
defaultNode = options.defaultNode;
} else if (vue.isVNode(options) || isString(options)) {
defaultNode = options;
}
return defaultNode;
}
function getParams(options) {
return isObject$1(options) && "params" in options ? options.params : {};
}
function getSlotFirst(options) {
return isObject$1(options) && "slotFirst" in options ? options.slotFirst : false;
}
var hasOwnProperty = Object.prototype.hasOwnProperty;
var hasOwn = function hasOwn(val, key) {
return hasOwnProperty.call(val, key);
};
function handleSlots(instance, name, params) {
var _instance$slots$camel, _instance$slots, _instance$slots$kebab, _instance$slots2;
var node = (_instance$slots$camel = (_instance$slots = instance.slots)[camelCase$1(name)]) === null || _instance$slots$camel === void 0 ? void 0 : _instance$slots$camel.call(_instance$slots, params);
if (node && node.filter(function (t) {
var _t$type$toString, _t$type;
return ((_t$type$toString = (_t$type = t.type).toString) === null || _t$type$toString === void 0 ? void 0 : _t$type$toString.call(_t$type)) !== "Symbol(v-cmt)";
}).length) return node;
node = (_instance$slots$kebab = (_instance$slots2 = instance.slots)[kebabCase$1(name)]) === null || _instance$slots$kebab === void 0 ? void 0 : _instance$slots$kebab.call(_instance$slots2, params);
if (node && node.filter(function (t) {
var _t$type$toString2, _t$type2;
return ((_t$type$toString2 = (_t$type2 = t.type).toString) === null || _t$type$toString2 === void 0 ? void 0 : _t$type$toString2.call(_t$type2)) !== "Symbol(v-cmt)";
}).length) return node;
return null;
}
function isEmptyNode(node) {
if ([void 0, null, ""].includes(node)) return true;
var innerNodes = node instanceof Array ? node : [node];
var r = innerNodes.filter(function (node2) {
var _node2$type;
return (node2 === null || node2 === void 0 || (_node2$type = node2.type) === null || _node2$type === void 0 ? void 0 : _node2$type.toString()) !== "Symbol(Comment)";
});
return !r.length;
}
function isPropExplicitlySet(instance, propName) {
var vProps = (instance === null || instance === void 0 ? void 0 : instance.vnode.props) || {};
return hasOwn(vProps, camelCase$1(propName)) || hasOwn(vProps, kebabCase$1(propName));
}
var useTNodeJSX = function useTNodeJSX() {
var instance = vue.getCurrentInstance();
return function (name, options) {
var renderParams = getParams(options);
var defaultNode = getDefaultNode(options);
var isSlotFirst = getSlotFirst(options);
var renderSlot = instance.slots[camelCase$1(name)] || instance.slots[kebabCase$1(name)];
if (isSlotFirst && renderSlot) {
return handleSlots(instance, name, renderParams);
}
if (isPropExplicitlySet(instance, name)) {
var _instance$type$props$;
var propsNode2 = instance.props[camelCase$1(name)] || instance.props[kebabCase$1(name)];
var types = (_instance$type$props$ = instance.type.props[name]) === null || _instance$type$props$ === void 0 ? void 0 : _instance$type$props$.type;
if ((types === null || types === void 0 ? void 0 : types.length) > 1) {
if (types.includes(Boolean) && types.includes(Function)) {
if (propsNode2 === "" && !renderSlot) return defaultNode;
}
}
if (propsNode2 === false || propsNode2 === null) return;
if (propsNode2 === true) {
return handleSlots(instance, name, renderParams) || defaultNode;
}
if (isFunction(propsNode2)) return propsNode2(vue.h, renderParams);
var isPropsEmpty = [void 0, ""].includes(propsNode2);
if (isPropsEmpty && renderSlot) {
return handleSlots(instance, name, renderParams);
}
return propsNode2;
}
if (renderSlot) {
return handleSlots(instance, name, renderParams);
}
var propsNode = instance.props[camelCase$1(name)] || instance.props[kebabCase$1(name)];
if (propsNode === false || propsNode === null) return;
if (propsNode === true) {
return defaultNode;
}
if (isFunction(propsNode)) return propsNode(vue.h, renderParams);
return propsNode;
};
};
var useTNodeDefault = function useTNodeDefault() {
var renderTNodeJSX = useTNodeJSX();
return function (name, options) {
var defaultNode = getDefaultNode(options);
return renderTNodeJSX(name, options) || defaultNode;
};
};
var useContent = function useContent() {
var renderTNodeJSX = useTNodeJSX();
return function (name1, name2, options) {
var params = getParams(options);
var defaultNode = getDefaultNode(options);
var toParams = params ? {
params: params
} : void 0;
var node1 = renderTNodeJSX(name1, toParams);
var node2 = renderTNodeJSX(name2, toParams);
var res = isEmptyNode(node1) ? node2 : node1;
return isEmptyNode(res) ? defaultNode : res;
};
};
var trim = function trim(str) {
return (str || "").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, "");
};
var getAttach = function getAttach(node, triggerNode) {
var attachNode = isFunction(node) ? node(triggerNode) : node;
if (!attachNode) {
return document.body;
}
if (isString(attachNode)) {
return document.querySelector(attachNode);
}
if (attachNode instanceof HTMLElement) {
return attachNode;
}
return document.body;
};
var getSSRAttach = function getSSRAttach() {
};
function stopPropagation(event) {
event.stopPropagation();
}
function preventDefault(event, isStopPropagation) {
if (typeof event.cancelable !== "boolean" || event.cancelable) {
event.preventDefault();
}
if (isStopPropagation) {
stopPropagation(event);
}
}
function hasClass(el, cls) {
if (!el || !cls) return false;
if (cls.indexOf(" ") !== -1) throw new Error("className should not contain space.");
if (el.classList) {
return el.classList.contains(cls);
}
return " ".concat(el.className, " ").indexOf(" ".concat(cls, " ")) > -1;
}
function addClass(el, cls) {
if (!el) return;
var curClass = el.className;
var classes = (cls || "").split(" ");
for (var i = 0, j = classes.length; i < j; i++) {
var clsName = classes[i];
if (!clsName) continue;
if (el.classList) {
el.classList.add(clsName);
} else if (!hasClass(el, clsName)) {
curClass += " ".concat(clsName);
}
}
if (!el.classList) {
el.className = curClass;
}
}
function removeClass(el, cls) {
if (!el || !cls) return;
var classes = cls.split(" ");
var curClass = " ".concat(el.className, " ");
for (var i = 0, j = classes.length; i < j; i++) {
var clsName = classes[i];
if (!clsName) continue;
if (el.classList) {
el.classList.remove(clsName);
} else if (hasClass(el, clsName)) {
curClass = curClass.replace(" ".concat(clsName, " "), " ");
}
}
if (!el.classList) {
el.className = trim(curClass);
}
}
function elementInViewport(elm, parent) {
var rect = elm.getBoundingClientRect();
if (parent) {
var parentRect = parent.getBoundingClientRect();
return rect.top >= parentRect.top && rect.left >= parentRect.left && rect.bottom <= parentRect.bottom && rect.right <= parentRect.right;
}
return rect.top >= 0 && rect.left >= 0 && rect.bottom + 80 <= window.innerHeight && rect.right <= window.innerWidth;
}
function getWindowScroll$1() {
var _document = document,
body = _document.body;
var docElm = document.documentElement;
var scrollTop = window.pageYOffset || docElm.scrollTop || body.scrollTop;
var scrollLeft = window.pageXOffset || docElm.scrollLeft || body.scrollLeft;
return {
scrollTop: scrollTop,
scrollLeft: scrollLeft
};
}
function getWindowSize() {
if (window.innerWidth !== void 0) {
return {
width: window.innerWidth,
height: window.innerHeight
};
}
var doc = document.documentElement;
return {
width: doc.clientWidth,
height: doc.clientHeight
};
}
var prefix$1i = config.prefix;
var _Loading = vue.defineComponent({
name: "".concat(prefix$1i, "-loading"),
props: props$N,
setup: function setup(props2) {
var renderTNodeJSX = useTNodeJSX();
var renderTNodeContent = useContent();
var loadingClass = usePrefixClass("loading");
var delayShowLoading = vue.ref(false);
var teleportElement = vue.ref();
var countDelay = function countDelay() {
delayShowLoading.value = false;
var timer = setTimeout(function () {
delayShowLoading.value = true;
clearTimeout(timer);
}, props2.delay);
};
var realLoading = vue.computed(function () {
return (!props2.delay || delayShowLoading.value) && props2.loading;
});
vue.watch(function () {
return props2.loading;
}, function (value) {
if (value) {
props2.delay && countDelay();
}
}, {
immediate: true
});
var rootClass = vue.computed(function () {
return [loadingClass.value, _defineProperty$3({}, "".concat(loadingClass.value, "--vertical"), props2.layout === "vertical"), _defineProperty$3({}, "".concat(loadingClass.value, "--fullscreen"), props2.fullscreen), _defineProperty$3({}, "".concat(loadingClass.value, "--full"), !props2.fullscreen && !!props2.attach)];
});
var textClass = vue.computed(function () {
return ["".concat(loadingClass.value, "__text"), _defineProperty$3({}, "".concat(loadingClass.value, "__text--only"), !props2.indicator)];
});
var rootStyle = vue.computed(function () {
var style = [];
if (props2.inheritColor) {
style.push("color: inherit");
}
if (props2.size) {
style.push("font-size: ".concat(props2.size, ";"));
}
return style.join(";");
});
var defaultIndicator = {
circular: TGradientIcon,
spinner: SpinnerIcon
};
vue.onMounted(function () {
if (props2.attach) {
var attach = getAttach(props2.attach);
if (!attach) {
console.error("attach is not exist");
} else {
teleportElement.value = attach;
}
}
if (props2.fullscreen) {
teleportElement.value = getAttach("body");
}
});
var dotsLoading = vue.computed(function () {
vue.setBlockTracking(-1);
var node = vue.createVNode("div", {
"class": "".concat(loadingClass.value, "__dots"),
"style": {
animationPlayState: props2.pause ? "paused" : "",
animationDirection: props2.reverse ? "reverse" : "",
animationDuration: "".concat(props2.duration, "ms"),
width: props2.size,
height: props2.size
}
}, [Array.from({
length: 3
}).map(function (val, i) {
return vue.createVNode("div", {
"class": "".concat(loadingClass.value, "__dot"),
"style": props2.duration ? "animation-duration: ".concat(props2.duration / 1e3, "s; animation-delay: ").concat(props2.duration * i / 3e3, "s") : ""
}, null);
})]);
vue.setBlockTracking(1);
return node;
});
var defaultLoading = vue.computed(function () {
vue.setBlockTracking(-1);
var TIndicator = defaultIndicator[props2.theme || "circular"];
var node = vue.createVNode(TIndicator, {
"style": {
animationPlayState: props2.pause ? "paused" : "",
animationDirection: props2.reverse ? "reverse" : "",
animationDuration: "".concat(props2.duration, "ms"),
width: props2.size,
height: props2.size
}
}, null);
vue.setBlockTracking(1);
return node;
});
vue.watch(function () {
return props2.loading;
}, function (isLoading) {
if (isLoading && props2.fullscreen) {
countDelay();
addClass(document.body, "".concat(loadingClass.value, "--lock"));
} else {
removeClass(document.body, "".concat(loadingClass.value, "--lock"));
}
});
return function () {
var indicator = renderTNodeJSX("indicator", {
defaultNode: props2.theme === "dots" ? dotsLoading.value : defaultLoading.value
});
var text = renderTNodeJSX("text");
var TNodeContent = renderTNodeContent("default", "content");
if (props2.fullscreen || props2.attach) {
if (!props2.loading) return null;
return vue.createVNode(vue.Teleport, {
"disabled": !props2.attach || !teleportElement.value,
"to": teleportElement.value
}, {
default: function _default() {
return [vue.createVNode("div", {
"class": rootClass.value,
"style": rootStyle.value
}, [realLoading.value && indicator, text && realLoading.value && vue.createVNode("span", {
"class": textClass.value
}, [text]), TNodeContent])];
}
});
}
return vue.createVNode("div", {
"class": rootClass.value,
"style": rootStyle.value
}, [realLoading.value && indicator, text && realLoading.value && vue.createVNode("span", {
"class": textClass.value
}, [text]), TNodeContent]);
};
}
});
var isBrowser$1 = typeof window !== "undefined";
var uniqueFactory = function uniqueFactory(compName) {
var number = 0;
var prefixClass = usePrefixClass();
return function () {
return "".concat(prefixClass.value, "-").concat(compName, "_").concat(number++);
};
};
var convertUnit = function convertUnit(val) {
if (val == null) return 0;
return isNumber(val) ? "".concat(val, "px") : val;
};
var reconvertUnit = function reconvertUnit(val) {
if (val == null) return 0;
return isNumber(val) ? Number(val) : Number(val.slice(0, -2));
};
var formatNumber = function formatNumber(value) {
var allowDecimal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var allowNegative = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
if (allowDecimal) {
var index = value.indexOf(".");
if (index !== -1) {
value = "".concat(value.slice(0, index + 1)).concat(value.slice(index).replace(/\./g, ""));
}
} else {
var _value$split = value.split("."),
_value$split2 = _slicedToArray(_value$split, 1),
_value$split2$ = _value$split2[0],
splitValue = _value$split2$ === void 0 ? "" : _value$split2$;
value = splitValue;
}
if (allowNegative) {
var _index = value.indexOf("-");
if (_index !== -1) {
value = "".concat(value.slice(0, _index + 1)).concat(value.slice(_index).replace(/-/g, ""));
}
} else {
value = value.replace(/-/g, "");
}
return value.replace(/[^\d.-]/g, "");
};
var withInstall = function withInstall(comp, alias) {
var c = comp;
c.install = function (app, name) {
var defaultName = c.name;
app.component(alias || name || defaultName, comp);
};
return c;
};
function extendAPI(apis) {
var instance = vue.getCurrentInstance();
if (instance && instance.proxy) {
Object.assign(instance.proxy, apis);
}
}
var renderTNode = function renderTNode(instance, name, options) {
var _instance$slots$name3;
if (instance === null) {
return vue.h("", null);
}
var params = _typeof$2(options) === "object" && "params" in options ? options.params : null;
var defaultNode = _typeof$2(options) === "object" && "defaultNode" in options ? options.defaultNode : options;
var propsNode;
if (name in instance.props || camelCase$1(name) in instance.props) {
propsNode = instance.props[name] || instance.props[camelCase$1(name)];
}
if (instance.slots[name]) {
var _instance$slots$name;
return (_instance$slots$name = instance.slots[name]) === null || _instance$slots$name === void 0 ? void 0 : _instance$slots$name.call(params);
}
if (propsNode === true && defaultNode) {
var _instance$slots$name2;
return instance.slots[name] ? (_instance$slots$name2 = instance.slots[name]) === null || _instance$slots$name2 === void 0 ? void 0 : _instance$slots$name2.call(params) : defaultNode;
}
if (typeof propsNode === "function") {
vue.setBlockTracking(-1);
var vnode = propsNode(vue.h, params);
vue.setBlockTracking(1);
return vnode;
}
var isPropsEmpty = [void 0, params, ""].includes(propsNode);
if (isPropsEmpty && instance.slots[name]) return (_instance$slots$name3 = instance.slots[name]) === null || _instance$slots$name3 === void 0 ? void 0 : _instance$slots$name3.call(params);
return propsNode;
};
var renderContent = function renderContent(instance, name1, name2, options) {
if (instance === null) {
return vue.h("", null);
}
var params = _typeof$2(options) === "object" && "params" in options ? options.params : null;
var defaultNode = _typeof$2(options) === "object" && "defaultNode" in options ? options.defaultNode : options;
var toParams = params ? {
params: params
} : void 0;
var node1 = renderTNode(instance, name1, toParams);
var node2 = renderTNode(instance, name2, toParams);
var r = [void 0, null, ""].includes(node1) ? node2 : node1;
return [void 0, null, ""].includes(r) ? defaultNode : r;
};
var TNodeComponent = function TNodeComponent(props) {
return props.content;
};
TNodeComponent.props = ["content"];
function asyncGeneratorStep(n, t, e, r, o, a, c) {
try {
var i = n[a](c),
u = i.value;
} catch (n) {
return void e(n);
}
i.done ? t(u) : Promise.resolve(u).then(r, o);
}
function _asyncToGenerator(n) {
return function () {
var t = this,
e = arguments;
return new Promise(function (r, o) {
var a = n.apply(t, e);
function _next(n) {
asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
}
function _throw(n) {
asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
}
_next(void 0);
});
};
}
var regeneratorRuntime$1 = {exports: {}};
var OverloadYield = {exports: {}};
(function (module) {
function _OverloadYield(e, d) {
this.v = e, this.k = d;
}
module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(OverloadYield);
var regenerator$1 = {exports: {}};
var regeneratorDefine = {exports: {}};
(function (module) {
function _regeneratorDefine(e, r, n, t) {
var i = Object.defineProperty;
try {
i({}, "", {});
} catch (e) {
i = 0;
}
module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) {
function o(r, n) {
_regeneratorDefine(e, r, function (e) {
return this._invoke(r, n, e);
});
}
r ? i ? i(e, r, {
value: n,
enumerable: !t,
configurable: !t,
writable: !t
}) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
}, module.exports.__esModule = true, module.exports["default"] = module.exports, _regeneratorDefine(e, r, n, t);
}
module.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(regeneratorDefine);
(function (module) {
var regeneratorDefine$1 = regeneratorDefine.exports;
function _regenerator() {
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
var e,
t,
r = "function" == typeof Symbol ? Symbol : {},
n = r.iterator || "@@iterator",
o = r.toStringTag || "@@toStringTag";
function i(r, n, o, i) {
var c = n && n.prototype instanceof Generator ? n : Generator,
u = Object.create(c.prototype);
return regeneratorDefine$1(u, "_invoke", function (r, n, o) {
var i,
c,
u,
f = 0,
p = o || [],
y = !1,
G = {
p: 0,
n: 0,
v: e,
a: d,
f: d.bind(e, 4),
d: function d(t, r) {
return i = t, c = 0, u = e, G.n = r, a;
}
};
function d(r, n) {
for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
var o,
i = p[t],
d = G.p,
l = i[2];
r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
}
if (o || r > 1) return a;
throw y = !0, n;
}
return function (o, p, l) {
if (f > 1) throw TypeError("Generator is already running");
for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
try {
if (f = 2, i) {
if (c || (o = "next"), t = i[o]) {
if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
if (!t.done) return t;
u = t.value, c < 2 && (c = 0);
} else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
i = e;
} else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
} catch (t) {
i = e, c = 1, u = t;
} finally {
f = 1;
}
}
return {
value: t,
done: y
};
};
}(r, o, i), !0), u;
}
var a = {};
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
t = Object.getPrototypeOf;
var c = [][n] ? t(t([][n]())) : (regeneratorDefine$1(t = {}, n, function () {
return this;
}), t),
u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
function f(e) {
return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine$1(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine$1(u, "constructor", GeneratorFunctionPrototype), regeneratorDefine$1(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", regeneratorDefine$1(GeneratorFunctionPrototype, o, "GeneratorFunction"), regeneratorDefine$1(u), regeneratorDefine$1(u, o, "Generator"), regeneratorDefine$1(u, n, function () {
return this;
}), regeneratorDefine$1(u, "toString", function () {
return "[object Generator]";
}), (module.exports = _regenerator = function _regenerator() {
return {
w: i,
m: f
};
}, module.exports.__esModule = true, module.exports["default"] = module.exports)();
}
module.exports = _regenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(regenerator$1);
var regeneratorAsync = {exports: {}};
var regeneratorAsyncGen = {exports: {}};
var regeneratorAsyncIterator = {exports: {}};
(function (module) {
var OverloadYield$1 = OverloadYield.exports;
var regeneratorDefine$1 = regeneratorDefine.exports;
function AsyncIterator(t, e) {
function n(r, o, i, f) {
try {
var c = t[r](o),
u = c.value;
return u instanceof OverloadYield$1 ? e.resolve(u.v).then(function (t) {
n("next", t, i, f);
}, function (t) {
n("throw", t, i, f);
}) : e.resolve(u).then(function (t) {
c.value = t, i(c);
}, function (t) {
return n("throw", t, i, f);
});
} catch (t) {
f(t);
}
}
var r;
this.next || (regeneratorDefine$1(AsyncIterator.prototype), regeneratorDefine$1(AsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () {
return this;
})), regeneratorDefine$1(this, "_invoke", function (t, o, i) {
function f() {
return new e(function (e, r) {
n(t, i, e, r);
});
}
return r = r ? r.then(f, f) : f();
}, !0);
}
module.exports = AsyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(regeneratorAsyncIterator);
(function (module) {
var regenerator = regenerator$1.exports;
var regeneratorAsyncIterator$1 = regeneratorAsyncIterator.exports;
function _regeneratorAsyncGen(r, e, t, o, n) {
return new regeneratorAsyncIterator$1(regenerator().w(r, e, t, o), n || Promise);
}
module.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(regeneratorAsyncGen);
(function (module) {
var regeneratorAsyncGen$1 = regeneratorAsyncGen.exports;
function _regeneratorAsync(n, e, r, t, o) {
var a = regeneratorAsyncGen$1(n, e, r, t, o);
return a.next().then(function (n) {
return n.done ? n.value : a.next();
});
}
module.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(regeneratorAsync);
var regeneratorKeys = {exports: {}};
(function (module) {
function _regeneratorKeys(e) {
var n = Object(e),
r = [];
for (var t in n) r.unshift(t);
return function e() {
for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e;
return e.done = !0, e;
};
}
module.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(regeneratorKeys);
var regeneratorValues = {exports: {}};
var _typeof$1 = {exports: {}};
(function (module) {
function _typeof(o) {
"@babel/helpers - typeof";
return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
}
module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(_typeof$1);
(function (module) {
var _typeof = _typeof$1.exports["default"];
function _regeneratorValues(e) {
if (null != e) {
var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"],
r = 0;
if (t) return t.call(e);
if ("function" == typeof e.next) return e;
if (!isNaN(e.length)) return {
next: function next() {
return e && r >= e.length && (e = void 0), {
value: e && e[r++],
done: !e
};
}
};
}
throw new TypeError(_typeof(e) + " is not iterable");
}
module.exports = _regeneratorValues, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(regeneratorValues);
(function (module) {
var OverloadYield$1 = OverloadYield.exports;
var regenerator = regenerator$1.exports;
var regeneratorAsync$1 = regeneratorAsync.exports;
var regeneratorAsyncGen$1 = regeneratorAsyncGen.exports;
var regeneratorAsyncIterator$1 = regeneratorAsyncIterator.exports;
var regeneratorKeys$1 = regeneratorKeys.exports;
var regeneratorValues$1 = regeneratorValues.exports;
function _regeneratorRuntime() {
var r = regenerator(),
e = r.m(_regeneratorRuntime),
t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;
function n(r) {
var e = "function" == typeof r && r.constructor;
return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name));
}
var o = {
"throw": 1,
"return": 2,
"break": 3,
"continue": 3
};
function a(r) {
var e, t;
return function (n) {
e || (e = {
stop: function stop() {
return t(n.a, 2);
},
"catch": function _catch() {
return n.v;
},
abrupt: function abrupt(r, e) {
return t(n.a, o[r], e);
},
delegateYield: function delegateYield(r, o, a) {
return e.resultName = o, t(n.d, regeneratorValues$1(r), a);
},
finish: function finish(r) {
return t(n.f, r);
}
}, t = function t(r, _t, o) {
n.p = e.prev, n.n = e.next;
try {
return r(_t, o);
} finally {
e.next = n.n;
}
}), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;
try {
return r.call(this, e);
} finally {
n.p = e.prev, n.n = e.next;
}
};
}
return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
return {
wrap: function wrap(e, t, n, o) {
return r.w(a(e), t, n, o && o.reverse());
},
isGeneratorFunction: n,
mark: r.m,
awrap: function awrap(r, e) {
return new OverloadYield$1(r, e);
},
AsyncIterator: regeneratorAsyncIterator$1,
async: function async(r, e, t, o, u) {
return (n(e) ? regeneratorAsyncGen$1 : regeneratorAsync$1)(a(r), e, t, o, u);
},
keys: regeneratorKeys$1,
values: regeneratorValues$1
};
}, module.exports.__esModule = true, module.exports["default"] = module.exports)();
}
module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
})(regeneratorRuntime$1);
// TODO(Babel 8): Remove this file.
var runtime = regeneratorRuntime$1.exports();
var regenerator = runtime;
// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
try {
regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
if ((typeof globalThis === "undefined" ? "undefined" : _typeof$2(globalThis)) === "object") {
globalThis.regeneratorRuntime = runtime;
} else {
Function("r", "regeneratorRuntime = r")(runtime);
}
}
function tryOnScopeDispose$1(fn) {
if (vue.getCurrentScope()) {
vue.onScopeDispose(fn);
return true;
}
return false;
}
function toValue(r) {
return typeof r === "function" ? r() : vue.unref(r);
}
var isClient = typeof window !== "undefined" && typeof document !== "undefined";
typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
var notNullish = function notNullish(val) {
return val != null;
};
var toString = Object.prototype.toString;
var isObject = function isObject(val) {
return toString.call(val) === "[object Object]";
};
var noop$2 = function noop() {};
var isIOS = /* @__PURE__ */getIsIOS();
function getIsIOS() {
var _a, _b;
return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));
}
function getLifeCycleTarget(target) {
var instance = target || vue.getCurrentInstance();
return instance ;
}
function tryOnMounted(fn) {
var sync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var target = arguments.length > 2 ? arguments[2] : undefined;
var instance = getLifeCycleTarget(target);
if (instance) vue.onMounted(fn, instance);else if (sync) fn();else vue.nextTick(fn);
}
var _excluded2 = ["window"];
function _createForOfIteratorHelper$4(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$4(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
function _unsupportedIterableToArray$4(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$5(r, a) : void 0; } }
function _arrayLikeToArray$5(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function ownKeys$1d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$1b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1d(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function unrefElement$1(elRef) {
var _a;
var plain = toValue(elRef);
return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
}
var defaultWindow$1 = isClient ? window : void 0;
function useEventListener() {
var target;
var events;
var listeners;
var options;
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}
if (typeof args[0] === "string" || Array.isArray(args[0])) {
events = args[0];
listeners = args[1];
options = args[2];
target = defaultWindow$1;
} else {
target = args[0];
events = args[1];
listeners = args[2];
options = args[3];
}
if (!target) return noop$2;
if (!Array.isArray(events)) events = [events];
if (!Array.isArray(listeners)) listeners = [listeners];
var cleanups = [];
var cleanup = function cleanup() {
cleanups.forEach(function (fn) {
return fn();
});
cleanups.length = 0;
};
var register = function register(el, event, listener, options2) {
el.addEventListener(event, listener, options2);
return function () {
return el.removeEventListener(event, listener, options2);
};
};
var stopWatch = vue.watch(function () {
return [unrefElement$1(target), toValue(options)];
}, function (_ref5) {
var _ref6 = _slicedToArray(_ref5, 2),
el = _ref6[0],
options2 = _ref6[1];
cleanup();
if (!el) return;
var optionsClone = isObject(options2) ? _objectSpread$1b({}, options2) : options2;
cleanups.push.apply(cleanups, _toConsumableArray(events.flatMap(function (event) {
return listeners.map(function (listener) {
return register(el, event, listener, optionsClone);
});
})));
}, {
immediate: true,
flush: "post"
});
var stop = function stop() {
stopWatch();
cleanup();
};
tryOnScopeDispose$1(stop);
return stop;
}
var _iOSWorkaround = false;
function onClickOutside(target, handler) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _options$window = options.window,
window = _options$window === void 0 ? defaultWindow$1 : _options$window,
_options$ignore = options.ignore,
ignore = _options$ignore === void 0 ? [] : _options$ignore,
_options$capture = options.capture,
capture = _options$capture === void 0 ? true : _options$capture,
_options$detectIframe = options.detectIframe,
detectIframe = _options$detectIframe === void 0 ? false : _options$detectIframe;
if (!window) return;
if (isIOS && !_iOSWorkaround) {
_iOSWorkaround = true;
Array.from(window.document.body.children).forEach(function (el) {
return el.addEventListener("click", noop$2);
});
window.document.documentElement.addEventListener("click", noop$2);
}
var shouldListen = true;
var shouldIgnore = function shouldIgnore(event) {
return ignore.some(function (target2) {
if (typeof target2 === "string") {
return Array.from(window.document.querySelectorAll(target2)).some(function (el) {
return el === event.target || event.composedPath().includes(el);
});
} else {
var el = unrefElement$1(target2);
return el && (event.target === el || event.composedPath().includes(el));
}
});
};
var listener = function listener(event) {
var el = unrefElement$1(target);
if (!el || el === event.target || event.composedPath().includes(el)) return;
if (event.detail === 0) shouldListen = !shouldIgnore(event);
if (!shouldListen) {
shouldListen = true;
return;
}
handler(event);
};
var cleanup = [useEventListener(window, "click", listener, {
passive: true,
capture: capture
}), useEventListener(window, "pointerdown", function (e) {
var el = unrefElement$1(target);
shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));
}, {
passive: true
}), detectIframe && useEventListener(window, "blur", function (event) {
setTimeout(function () {
var _a;
var el = unrefElement$1(target);
if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(window.document.activeElement))) handler(event);
}, 0);
})].filter(Boolean);
var stop = function stop() {
return cleanup.forEach(function (fn) {
return fn();
});
};
return stop;
}
function useMounted() {
var isMounted = vue.ref(false);
if (vue.getCurrentInstance()) {
vue.onMounted(function () {
isMounted.value = true;
});
}
return isMounted;
}
function useSupported(callback) {
var isMounted = useMounted();
return vue.computed(function () {
isMounted.value;
return Boolean(callback());
});
}
function useRafFn(fn) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _options$immediate = options.immediate,
immediate = _options$immediate === void 0 ? true : _options$immediate,
_options$fpsLimit = options.fpsLimit,
fpsLimit = _options$fpsLimit === void 0 ? void 0 : _options$fpsLimit,
_options$window3 = options.window,
window = _options$window3 === void 0 ? defaultWindow$1 : _options$window3;
var isActive = vue.ref(false);
var intervalLimit = fpsLimit ? 1e3 / fpsLimit : null;
var previousFrameTimestamp = 0;
var rafId = null;
function loop(timestamp) {
if (!isActive.value || !window) return;
var delta = timestamp - (previousFrameTimestamp || timestamp);
if (intervalLimit && delta < intervalLimit) {
rafId = window.requestAnimationFrame(loop);
return;
}
fn({
delta: delta,
timestamp: timestamp
});
previousFrameTimestamp = timestamp;
rafId = window.requestAnimationFrame(loop);
}
function resume() {
if (!isActive.value && window) {
isActive.value = true;
rafId = window.requestAnimationFrame(loop);
}
}
function pause() {
isActive.value = false;
if (rafId != null && window) {
window.cancelAnimationFrame(rafId);
rafId = null;
}
}
if (immediate) resume();
tryOnScopeDispose$1(pause);
return {
isActive: vue.readonly(isActive),
pause: pause,
resume: resume
};
}
function useMediaQuery(query) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _options$window4 = options.window,
window = _options$window4 === void 0 ? defaultWindow$1 : _options$window4;
var isSupported = useSupported(function () {
return window && "matchMedia" in window && typeof window.matchMedia === "function";
});
var mediaQuery;
var matches = vue.ref(false);
var handler = function handler(event) {
matches.value = event.matches;
};
var cleanup = function cleanup() {
if (!mediaQuery) return;
if ("removeEventListener" in mediaQuery) mediaQuery.removeEventListener("change", handler);else mediaQuery.removeListener(handler);
};
var stopWatch = vue.watchEffect(function () {
if (!isSupported.value) return;
cleanup();
mediaQuery = window.matchMedia(toValue(query));
if ("addEventListener" in mediaQuery) mediaQuery.addEventListener("change", handler);else mediaQuery.addListener(handler);
matches.value = mediaQuery.matches;
});
tryOnScopeDispose$1(function () {
stopWatch();
cleanup();
mediaQuery = void 0;
});
return matches;
}
function useResizeObserver(target, callback) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _options$window14 = options.window,
window = _options$window14 === void 0 ? defaultWindow$1 : _options$window14,
observerOptions = _objectWithoutProperties$1(options, _excluded2);
var observer;
var isSupported = useSupported(function () {
return window && "ResizeObserver" in window;
});
var cleanup = function cleanup() {
if (observer) {
observer.disconnect();
observer = void 0;
}
};
var targets = vue.computed(function () {
return Array.isArray(target) ? target.map(function (el) {
return unrefElement$1(el);
}) : [unrefElement$1(target)];
});
var stopWatch = vue.watch(targets, function (els) {
cleanup();
if (isSupported.value && window) {
observer = new ResizeObserver(callback);
var _iterator3 = _createForOfIteratorHelper$4(els),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
var _el = _step3.value;
_el && observer.observe(_el, observerOptions);
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
}
}, {
immediate: true,
flush: "post",
deep: true
});
var stop = function stop() {
cleanup();
stopWatch();
};
tryOnScopeDispose$1(stop);
return {
isSupported: isSupported,
stop: stop
};
}
function useElementBounding(target) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _options$reset = options.reset,
reset = _options$reset === void 0 ? true : _options$reset,
_options$windowResize = options.windowResize,
windowResize = _options$windowResize === void 0 ? true : _options$windowResize,
_options$windowScroll = options.windowScroll,
windowScroll = _options$windowScroll === void 0 ? true : _options$windowScroll,
_options$immediate3 = options.immediate,
immediate = _options$immediate3 === void 0 ? true : _options$immediate3;
var height = vue.ref(0);
var bottom = vue.ref(0);
var left = vue.ref(0);
var right = vue.ref(0);
var top = vue.ref(0);
var width = vue.ref(0);
var x = vue.ref(0);
var y = vue.ref(0);
function update() {
var el = unrefElement$1(target);
if (!el) {
if (reset) {
height.value = 0;
bottom.value = 0;
left.value = 0;
right.value = 0;
top.value = 0;
width.value = 0;
x.value = 0;
y.value = 0;
}
return;
}
var rect = el.getBoundingClientRect();
height.value = rect.height;
bottom.value = rect.bottom;
left.value = rect.left;
right.value = rect.right;
top.value = rect.top;
width.value = rect.width;
x.value = rect.x;
y.value = rect.y;
}
useResizeObserver(target, update);
vue.watch(function () {
return unrefElement$1(target);
}, function (ele) {
return !ele && update();
});
if (windowScroll) useEventListener("scroll", update, {
capture: true,
passive: true
});
if (windowResize) useEventListener("resize", update, {
passive: true
});
tryOnMounted(function () {
if (immediate) update();
});
return {
height: height,
bottom: bottom,
left: left,
right: right,
top: top,
width: width,
x: x,
y: y,
update: update
};
}
function useElementSize(target) {
var initialSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
width: 0,
height: 0
};
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _options$window16 = options.window,
window = _options$window16 === void 0 ? defaultWindow$1 : _options$window16,
_options$box = options.box,
box = _options$box === void 0 ? "content-box" : _options$box;
var isSVG = vue.computed(function () {
var _a, _b;
return (_b = (_a = unrefElement$1(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes("svg");
});
var width = vue.ref(initialSize.width);
var height = vue.ref(initialSize.height);
var _useResizeObserver = useResizeObserver(target, function (_ref17) {
var _ref18 = _slicedToArray(_ref17, 1),
entry = _ref18[0];
var boxSize = box === "border-box" ? entry.borderBoxSize : box === "content-box" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;
if (window && isSVG.value) {
var $elem = unrefElement$1(target);
if ($elem) {
var styles = window.getComputedStyle($elem);
width.value = Number.parseFloat(styles.width);
height.value = Number.parseFloat(styles.height);
}
} else {
if (boxSize) {
var formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];
width.value = formatBoxSize.reduce(function (acc, _ref19) {
var inlineSize = _ref19.inlineSize;
return acc + inlineSize;
}, 0);
height.value = formatBoxSize.reduce(function (acc, _ref20) {
var blockSize = _ref20.blockSize;
return acc + blockSize;
}, 0);
} else {
width.value = entry.contentRect.width;
height.value = entry.contentRect.height;
}
}
}, options),
stop1 = _useResizeObserver.stop;
tryOnMounted(function () {
var ele = unrefElement$1(target);
if (ele) {
width.value = "offsetWidth" in ele ? ele.offsetWidth : initialSize.width;
height.value = "offsetHeight" in ele ? ele.offsetHeight : initialSize.height;
}
});
var stop2 = vue.watch(function () {
return unrefElement$1(target);
}, function (ele) {
width.value = ele ? initialSize.width : 0;
height.value = ele ? initialSize.height : 0;
});
function stop() {
stop1();
stop2();
}
return {
width: width,
height: height,
stop: stop
};
}
function useIntersectionObserver(target, callback) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var root = options.root,
_options$rootMargin = options.rootMargin,
rootMargin = _options$rootMargin === void 0 ? "0px" : _options$rootMargin,
_options$threshold = options.threshold,
threshold = _options$threshold === void 0 ? 0.1 : _options$threshold,
_options$window17 = options.window,
window = _options$window17 === void 0 ? defaultWindow$1 : _options$window17,
_options$immediate5 = options.immediate,
immediate = _options$immediate5 === void 0 ? true : _options$immediate5;
var isSupported = useSupported(function () {
return window && "IntersectionObserver" in window;
});
var targets = vue.computed(function () {
var _target = toValue(target);
return (Array.isArray(_target) ? _target : [_target]).map(unrefElement$1).filter(notNullish);
});
var _cleanup = noop$2;
var isActive = vue.ref(immediate);
var stopWatch = isSupported.value ? vue.watch(function () {
return [targets.value, unrefElement$1(root), isActive.value];
}, function (_ref21) {
var _ref22 = _slicedToArray(_ref21, 2),
targets2 = _ref22[0],
root2 = _ref22[1];
_cleanup();
if (!isActive.value) return;
if (!targets2.length) return;
var observer = new IntersectionObserver(callback, {
root: unrefElement$1(root2),
rootMargin: rootMargin,
threshold: threshold
});
targets2.forEach(function (el) {
return el && observer.observe(el);
});
_cleanup = function cleanup() {
observer.disconnect();
_cleanup = noop$2;
};
}, {
immediate: immediate,
flush: "post"
}) : noop$2;
var stop = function stop() {
_cleanup();
stopWatch();
isActive.value = false;
};
tryOnScopeDispose$1(stop);
return {
isSupported: isSupported,
isActive: isActive,
pause: function pause() {
_cleanup();
isActive.value = false;
},
resume: function resume() {
isActive.value = true;
},
stop: stop
};
}
function useFocus(target) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _options$initialValue4 = options.initialValue,
initialValue = _options$initialValue4 === void 0 ? false : _options$initialValue4,
_options$focusVisible = options.focusVisible,
focusVisible = _options$focusVisible === void 0 ? false : _options$focusVisible;
var innerFocused = vue.ref(false);
var targetElement = vue.computed(function () {
return unrefElement$1(target);
});
useEventListener(targetElement, "focus", function (event) {
var _a, _b;
if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, ":focus-visible"))) innerFocused.value = true;
});
useEventListener(targetElement, "blur", function () {
return innerFocused.value = false;
});
var focused = vue.computed({
get: function get() {
return innerFocused.value;
},
set: function set(value) {
var _a, _b;
if (!value && innerFocused.value) (_a = targetElement.value) == null ? void 0 : _a.blur();else if (value && !innerFocused.value) (_b = targetElement.value) == null ? void 0 : _b.focus();
}
});
vue.watch(targetElement, function () {
focused.value = initialValue;
}, {
immediate: true,
flush: "post"
});
return {
focused: focused
};
}
function useWindowSize() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$window44 = options.window,
window = _options$window44 === void 0 ? defaultWindow$1 : _options$window44,
_options$initialWidth = options.initialWidth,
initialWidth = _options$initialWidth === void 0 ? Number.POSITIVE_INFINITY : _options$initialWidth,
_options$initialHeigh = options.initialHeight,
initialHeight = _options$initialHeigh === void 0 ? Number.POSITIVE_INFINITY : _options$initialHeigh,
_options$listenOrient = options.listenOrientation,
listenOrientation = _options$listenOrient === void 0 ? true : _options$listenOrient,
_options$includeScrol = options.includeScrollbar,
includeScrollbar = _options$includeScrol === void 0 ? true : _options$includeScrol;
var width = vue.ref(initialWidth);
var height = vue.ref(initialHeight);
var update = function update() {
if (window) {
if (includeScrollbar) {
width.value = window.innerWidth;
height.value = window.innerHeight;
} else {
width.value = window.document.documentElement.clientWidth;
height.value = window.document.documentElement.clientHeight;
}
}
};
update();
tryOnMounted(update);
useEventListener("resize", update, {
passive: true
});
if (listenOrientation) {
var matches = useMediaQuery("(orientation: portrait)");
vue.watch(matches, function () {
return update();
});
}
return {
width: width,
height: height
};
}
var TimeDataUnit = {
DD: "\u5929",
HH: "\u65F6",
mm: "\u5206",
ss: "\u79D2",
SSS: "\u6BEB\u79D2"
};
var getRemainTimes = function getRemainTimes(time) {
if (!time) {
return {
days: 0,
hours: 0,
minutes: 0,
seconds: 0,
milliseconds: 0
};
}
var stime = Math.floor(time / 1e3);
return {
days: Math.floor(stime / 3600 / 24),
hours: Math.floor(stime / 3600 % 24),
minutes: Math.floor(stime / 60 % 60),
seconds: stime % 60,
milliseconds: time % 1e3
};
};
var fillZero = function fillZero(num) {
var isMillieconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
if (isMillieconds) {
if (num >= 100) {
return num;
}
return num >= 10 ? "0".concat(num) : "00".concat(num);
}
return num >= 10 ? num : "0".concat(num);
};
var getMark = function getMark(format, type) {
var _format$split, _format$split$split;
return format === null || format === void 0 || (_format$split = format.split) === null || _format$split === void 0 || (_format$split = _format$split.call(format, type)) === null || _format$split === void 0 || (_format$split = _format$split[1]) === null || _format$split === void 0 || (_format$split$split = _format$split.split) === null || _format$split$split === void 0 || (_format$split$split = _format$split$split.call(_format$split, "")) === null || _format$split$split === void 0 ? void 0 : _format$split$split[0];
};
var getShowTimes = function getShowTimes(times, format) {
var _ref, _ref$toUpperCase, _format, _format2, _format3, _format4, _format5;
var millisecond = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var splitWithUnit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
format = (_ref = format || "DD:HH:mm:ss") === null || _ref === void 0 || (_ref$toUpperCase = _ref.toUpperCase) === null || _ref$toUpperCase === void 0 ? void 0 : _ref$toUpperCase.call(_ref);
millisecond && !format.includes(":SSS") && (format = format.concat(":SSS"));
var showTimes = [];
if (((_format = format) === null || _format === void 0 ? void 0 : _format.indexOf("DD")) > -1) {
showTimes === null || showTimes === void 0 || showTimes.push({
mark: splitWithUnit ? TimeDataUnit.DD : getMark(format, "DD"),
value: fillZero(times === null || times === void 0 ? void 0 : times.days)
});
}
if (((_format2 = format) === null || _format2 === void 0 ? void 0 : _format2.indexOf("HH")) > -1) {
showTimes === null || showTimes === void 0 || showTimes.push({
mark: splitWithUnit ? TimeDataUnit.HH : getMark(format, "HH"),
value: fillZero(times === null || times === void 0 ? void 0 : times.hours)
});
}
if (((_format3 = format) === null || _format3 === void 0 ? void 0 : _format3.indexOf("MM")) > -1) {
showTimes === null || showTimes === void 0 || showTimes.push({
mark: splitWithUnit ? TimeDataUnit.mm : getMark(format, "MM"),
value: fillZero(times === null || times === void 0 ? void 0 : times.minutes)
});
}
if (((_format4 = format) === null || _format4 === void 0 ? void 0 : _format4.indexOf("SS")) > -1) {
showTimes === null || showTimes === void 0 || showTimes.push({
mark: splitWithUnit ? TimeDataUnit.ss : getMark(format, "SS"),
value: fillZero(times === null || times === void 0 ? void 0 : times.seconds)
});
}
if (((_format5 = format) === null || _format5 === void 0 ? void 0 : _format5.indexOf("SSS")) > -1 || millisecond) {
showTimes === null || showTimes === void 0 || showTimes.push({
mark: splitWithUnit ? TimeDataUnit.SSS : getMark(format, "SSS"),
value: fillZero(times === null || times === void 0 ? void 0 : times.milliseconds, true)
});
}
return showTimes;
};
var getScreenFps = function (_ref2, _ref2$find) {
if (!isBrowser$1) return;
var _window = window,
requestAnimationFrame = _window.requestAnimationFrame,
mozRequestAnimationFrame = _window.mozRequestAnimationFrame,
webkitRequestAnimationFrame = _window.webkitRequestAnimationFrame;
var nextFrame = (_ref2 = [requestAnimationFrame, mozRequestAnimationFrame, webkitRequestAnimationFrame]) === null || _ref2 === void 0 || (_ref2$find = _ref2.find) === null || _ref2$find === void 0 ? void 0 : _ref2$find.call(_ref2, function (fn) {
return fn;
});
if (!nextFrame) {
console.error("requestAnimationFrame is not supported!");
return;
}
return function () {
var targetCount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 50;
if (targetCount < 1) {
return;
}
var count = 0;
var beginDate = Date.now();
return new Promise(function (resolve) {
(function log() {
nextFrame === null || nextFrame === void 0 || nextFrame(function () {
if (++count >= targetCount) {
var diffDate = Date.now() - beginDate;
var fps = count / diffDate * 1e3;
return resolve(fps);
}
log();
});
})();
});
};
}();
function useCountDown(props, visibility) {
var _ref = props || {},
_ref$time = _ref.time,
time = _ref$time === void 0 ? 0 : _ref$time,
autoStart = _ref.autoStart,
_ref$millisecond = _ref.millisecond,
millisecond = _ref$millisecond === void 0 ? false : _ref$millisecond,
_ref$format = _ref.format,
format = _ref$format === void 0 ? "HH:mm:ss" : _ref$format,
_ref$splitWithUnit = _ref.splitWithUnit,
splitWithUnit = _ref$splitWithUnit === void 0 ? false : _ref$splitWithUnit,
onFinish = _ref.onFinish,
onChange = _ref.onChange;
var fps = vue.ref();
var count = vue.ref(Number(time));
var showTimes = vue.reactive(getShowTimes(getRemainTimes(time), format, millisecond, splitWithUnit));
var hiddenTime = 0;
visibility && vue.watch(visibility, function (val) {
if (val && autoStart) {
count.value -= Date.now() - hiddenTime;
rafFn();
} else {
hiddenTime = Date.now();
}
});
var rafFn = /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee() {
var _getShowTimes, _getShowTimes$forEach;
var res, times;
return regenerator.wrap(function (_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (isBrowser$1) {
_context.next = 1;
break;
}
return _context.abrupt("return");
case 1:
if (fps.value) {
_context.next = 3;
break;
}
_context.next = 2;
return getScreenFps === null || getScreenFps === void 0 ? void 0 : getScreenFps();
case 2:
res = _context.sent;
fps.value = res || 60;
case 3:
count.value = parseInt("".concat(Number(count.value) - 1e3 / fps.value), 10);
if (count.value <= 0) {
pause === null || pause === void 0 || pause();
count.value = 0;
}
times = getRemainTimes(count.value);
onChange === null || onChange === void 0 || onChange(times);
count.value === 0 && (onFinish === null || onFinish === void 0 ? void 0 : onFinish());
(_getShowTimes = getShowTimes(times, format, millisecond, splitWithUnit)) === null || _getShowTimes === void 0 || (_getShowTimes$forEach = _getShowTimes.forEach) === null || _getShowTimes$forEach === void 0 || _getShowTimes$forEach.call(_getShowTimes, function (i, idx) {
return showTimes[idx].value = i === null || i === void 0 ? void 0 : i.value;
});
case 4:
case "end":
return _context.stop();
}
}, _callee);
}));
return function rafFn() {
return _ref2.apply(this, arguments);
};
}();
var _useRafFn = useRafFn(rafFn, {
immediate: autoStart
}),
pause = _useRafFn.pause,
resume = _useRafFn.resume;
return {
time: count,
showTimes: showTimes,
pause: pause,
resume: resume
};
}
var overflowScrollReg$1 = /scroll|auto/i;
var defaultRoot = isBrowser$1 ? window : void 0;
function isElement$2(node) {
var ELEMENT_NODE_TYPE = 1;
return node.tagName !== "HTML" && node.tagName !== "BODY" && node.nodeType === ELEMENT_NODE_TYPE;
}
function getScrollParent$4(el) {
var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultRoot;
var node = el;
while (node && node !== root && isElement$2(node)) {
var _window$getComputedSt = window.getComputedStyle(node),
overflowY = _window$getComputedSt.overflowY;
if (overflowScrollReg$1.test(overflowY)) {
return node;
}
node = node.parentNode;
}
return root;
}
function useScrollParent(el) {
var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultRoot;
var scrollParent = vue.ref();
vue.onMounted(function () {
if (el.value) {
scrollParent.value = getScrollParent$4(el.value, root);
}
});
return scrollParent;
}
function useClickAway(target, fn) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
if (!isBrowser$1) return;
var _options$eventName = options.eventName,
eventName = _options$eventName === void 0 ? "touchstart" : _options$eventName,
_options$capture = options.capture,
capture = _options$capture === void 0 ? true : _options$capture,
_options$ignore = options.ignore,
ignore = _options$ignore === void 0 ? [] : _options$ignore,
_options$detectIframe = options.detectIframe,
detectIframe = _options$detectIframe === void 0 ? false : _options$detectIframe;
var listenerOptions = {
passive: true,
capture: capture
};
var checkElInEvtTarget = function checkElInEvtTarget(el, event) {
return el && (event.target === el || event.composedPath().includes(el));
};
var shouldIgnore = function shouldIgnore(event) {
return ignore.some(function (ignoreTarget) {
return checkElInEvtTarget(unrefElement$1(ignoreTarget), event);
});
};
var eventHandler = function eventHandler(event) {
var targets = isArray$1(target) ? _toConsumableArray(target) : [target];
var shouldTrigger = targets.every(function (targetItem) {
return !checkElInEvtTarget(unrefElement$1(targetItem), event);
});
if (!shouldTrigger) return;
shouldTrigger = !shouldIgnore(event);
if (!shouldTrigger) return;
fn(event);
};
var cleanup = [useEventListener(window, eventName, eventHandler, listenerOptions)];
if (detectIframe) {
cleanup.push(useEventListener(window, "blur", function (event) {
setTimeout(function () {
var targets = isArray$1(target) ? _toConsumableArray(target) : [target];
if (targets.every(function (targetItem) {
var _window$document$acti;
var el = unrefElement$1(targetItem);
return ((_window$document$acti = window.document.activeElement) === null || _window$document$acti === void 0 ? void 0 : _window$document$acti.tagName) === "IFRAME" && !(el !== null && el !== void 0 && el.contains(window.document.activeElement));
})) {
fn(event);
}
}, 0);
}));
}
return function () {
return cleanup.forEach(function (clean) {
return clean();
});
};
}
var DEFAULT_DELAY = {
startTime: 50,
stayTime: 70
};
var CTX_KEY = Symbol("v-hover");
function resolveBinding(binding) {
if (!binding.value) {
return {
className: "",
disabledHover: true,
startTime: DEFAULT_DELAY.startTime,
stayTime: DEFAULT_DELAY.stayTime
};
}
if (typeof binding.value === "string") {
return {
className: binding.value,
disabledHover: false,
startTime: DEFAULT_DELAY.startTime,
stayTime: DEFAULT_DELAY.stayTime
};
}
var _binding$value = binding.value,
className = _binding$value.className,
_binding$value$disabl = _binding$value.disabledHover,
disabledHover = _binding$value$disabl === void 0 ? false : _binding$value$disabl,
_binding$value$startT = _binding$value.startTime,
startTime = _binding$value$startT === void 0 ? DEFAULT_DELAY.startTime : _binding$value$startT,
_binding$value$stayTi = _binding$value.stayTime,
stayTime = _binding$value$stayTi === void 0 ? DEFAULT_DELAY.stayTime : _binding$value$stayTi;
return {
className: className,
disabledHover: disabledHover,
startTime: startTime,
stayTime: stayTime
};
}
var Hover = {
created: function created(el, binding) {
var state = resolveBinding(binding);
var ctx = {
current: state,
timers: [],
add: function add() {
if (ctx.current.disabledHover || !ctx.current.className) return;
if (!el.classList.contains(ctx.current.className)) {
el.classList.add(ctx.current.className);
}
},
remove: function remove() {
if (ctx.current.className) el.classList.remove(ctx.current.className);
},
downHandler: function downHandler() {
if (ctx.current.disabledHover) return;
ctx.timers.push(window.setTimeout(function () {
ctx.add();
}, ctx.current.startTime));
},
upHandler: function upHandler() {
if (ctx.current.disabledHover) return;
ctx.timers.push(window.setTimeout(function () {
ctx.remove();
}, ctx.current.stayTime));
},
cancelHandler: function cancelHandler() {
ctx.remove();
}
};
el[CTX_KEY] = ctx;
var hasPointer = "PointerEvent" in window;
if (hasPointer) {
el.addEventListener("pointerdown", ctx.downHandler, {
passive: true
});
el.addEventListener("pointerup", ctx.upHandler, {
passive: true
});
el.addEventListener("pointercancel", ctx.cancelHandler, {
passive: true
});
el.addEventListener("pointerleave", ctx.cancelHandler, {
passive: true
});
} else {
el.addEventListener("touchstart", ctx.downHandler, {
passive: true
});
el.addEventListener("touchend", ctx.upHandler, {
passive: true
});
el.addEventListener("touchcancel", ctx.cancelHandler, {
passive: true
});
el.addEventListener("touchmove", ctx.cancelHandler, {
passive: true
});
}
},
updated: function updated(el, binding) {
var ctx = el[CTX_KEY];
if (!ctx) return;
var next = resolveBinding(binding);
var prev = ctx.current;
if (prev.className !== next.className) {
if (prev.className) el.classList.remove(prev.className);
if (!next.disabledHover && next.className && el.matches(":active")) {
el.classList.add(next.className);
}
}
ctx.current = next;
},
unmounted: function unmounted(el) {
var ctx = el[CTX_KEY];
if (!ctx) return;
ctx.timers.forEach(function (t) {
return window.clearTimeout(t);
});
ctx.remove();
var hasPointer = "PointerEvent" in window;
if (hasPointer) {
el.removeEventListener("pointerdown", ctx.downHandler);
el.removeEventListener("pointerup", ctx.upHandler);
el.removeEventListener("pointercancel", ctx.cancelHandler);
el.removeEventListener("pointerleave", ctx.cancelHandler);
} else {
el.removeEventListener("touchstart", ctx.downHandler);
el.removeEventListener("touchend", ctx.upHandler);
el.removeEventListener("touchcancel", ctx.cancelHandler);
el.removeEventListener("touchmove", ctx.cancelHandler);
}
delete el[CTX_KEY];
}
};
function ownKeys$1c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$1a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1c(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var fullScreenLoadingInstance = null;
function mergeDefaultProps(props) {
var options = merge$2({
fullscreen: false,
attach: "body",
loading: true
}, props);
return options;
}
function createLoading(props) {
var mergedProps = mergeDefaultProps(props);
if (mergedProps.fullscreen && fullScreenLoadingInstance) {
return fullScreenLoadingInstance;
}
var component = vue.defineComponent({
setup: function setup() {
var loadingOptions = vue.reactive(mergedProps);
return {
loadingOptions: loadingOptions
};
},
render: function render() {
return vue.h(_Loading, _objectSpread$1a({}, this.loadingOptions));
}
});
var attach = getAttach(mergedProps.fullscreen ? "body" : mergedProps.attach);
var app = vue.createApp(component);
app.mount(document.createElement("div"));
var parentRelativeClass = usePrefixClass("loading__parent--relative").value;
var lockClass = usePrefixClass("loading--lock").value;
if (mergedProps.fullscreen) {
addClass(document.body, lockClass);
}
if (attach) {
addClass(attach, parentRelativeClass);
} else {
console.error("attach is not exist");
}
var loadingInstance = {
hide: function hide() {
removeClass(attach, parentRelativeClass);
removeClass(document.body, lockClass);
app.unmount();
}
};
return loadingInstance;
}
function produceLoading(props) {
if (props === true) {
fullScreenLoadingInstance = createLoading({
fullscreen: true,
loading: true,
attach: "body"
});
return fullScreenLoadingInstance;
}
if (props === false) {
var _fullScreenLoadingIns;
(_fullScreenLoadingIns = fullScreenLoadingInstance) === null || _fullScreenLoadingIns === void 0 || _fullScreenLoadingIns.hide();
fullScreenLoadingInstance = null;
return;
}
return createLoading(props);
}
var LoadingPlugin = produceLoading;
LoadingPlugin.install = function (app) {
app.config.globalProperties.$loading = produceLoading;
};
var Loading = withInstall(_Loading);
var ButtonProps = {
block: Boolean,
content: {
type: [String, Function]
},
disabled: {
type: Boolean,
default: void 0
},
ghost: Boolean,
icon: {
type: Function
},
loading: Boolean,
loadingProps: {
type: Object
},
shape: {
type: String,
default: "rectangle",
validator: function validator(val) {
if (!val) return true;
return ["rectangle", "square", "round", "circle"].includes(val);
}
},
size: {
type: String,
default: "medium",
validator: function validator(val) {
if (!val) return true;
return ["extra-small", "small", "medium", "large"].includes(val);
}
},
suffix: {
type: Function
},
theme: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "primary", "danger", "light"].includes(val);
}
},
type: {
type: String,
default: "button",
validator: function validator(val) {
if (!val) return true;
return ["submit", "reset", "button"].includes(val);
}
},
variant: {
type: String,
default: "base",
validator: function validator(val) {
if (!val) return true;
return ["base", "outline", "dashed", "text"].includes(val);
}
},
onClick: Function
};
function useFormDisabled(extend) {
var ctx = vue.getCurrentInstance();
var propsDisabled = vue.computed(function () {
return ctx === null || ctx === void 0 ? void 0 : ctx.props.disabled;
});
var _inject = vue.inject("formDisabled", /* @__PURE__ */Object.create(null)),
disabled = _inject.disabled;
return vue.computed(function () {
if (isBoolean(propsDisabled.value)) {
return propsDisabled.value;
}
if (isBoolean(extend === null || extend === void 0 ? void 0 : extend.value)) {
return extend.value;
}
if (isBoolean(disabled === null || disabled === void 0 ? void 0 : disabled.value)) {
return disabled.value;
}
return false;
});
}
var prefix$1h = config.prefix;
var _Button = vue.defineComponent({
name: "".concat(prefix$1h, "-button"),
directives: {
Hover: Hover
},
props: ButtonProps,
setup: function setup(props) {
var buttonClass = usePrefixClass("button");
var renderTNodeJSX = useTNodeJSX();
var renderTNodeContent = useContent();
var isDisabled = useFormDisabled();
var hoverDisabled = vue.computed(function () {
return isDisabled.value || props.loading;
});
var buttonClasses = vue.computed(function () {
return ["".concat(buttonClass.value), "".concat(buttonClass.value, "--size-").concat(props.size), "".concat(buttonClass.value, "--").concat(props.variant), _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(buttonClass.value, "--").concat(props.theme), props.theme), "".concat(buttonClass.value, "--").concat(props.shape), props.shape), "".concat(buttonClass.value, "--ghost"), props.ghost), "".concat(buttonClass.value, "--block"), props.block), "".concat(buttonClass.value, "--disabled"), isDisabled.value), "".concat(buttonClass.value, "--loading"), props.loading)];
});
var handleClick = function handleClick(e) {
if (!props.loading && !isDisabled.value) {
var _props$onClick;
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, e);
} else {
e.stopPropagation();
}
};
return function () {
var suffix = renderTNodeJSX("suffix");
var readerIcon = function readerIcon() {
if (props.loading) {
return vue.createVNode(Loading, vue.mergeProps({
"inherit-color": true
}, props.loadingProps), null);
}
return renderTNodeJSX("icon");
};
var readerContent = function readerContent() {
var content = renderTNodeContent("default", "content");
return vue.createVNode("span", {
"class": "".concat(buttonClass.value, "__content")
}, [content]);
};
return vue.withDirectives(vue.createVNode("button", {
"class": buttonClasses.value,
"role": "button",
"type": props.type,
"disabled": isDisabled.value,
"aria-disabled": isDisabled.value,
"onClick": handleClick
}, [readerIcon(), readerContent(), suffix]), [[vue.resolveDirective("hover"), {
className: "".concat(buttonClass.value, "--hover"),
disabledHover: hoverDisabled.value
}]]);
};
}
});
var Button = withInstall(_Button);
var DividerProps = {
align: {
type: String,
default: "center",
validator: function validator(val) {
if (!val) return true;
return ["left", "right", "center"].includes(val);
}
},
content: {
type: [String, Function]
},
dashed: Boolean,
default: {
type: [String, Function]
},
layout: {
type: String,
default: "horizontal",
validator: function validator(val) {
if (!val) return true;
return ["horizontal", "vertical"].includes(val);
}
}
};
var prefix$1g = config.prefix;
var _Divider = vue.defineComponent({
name: "".concat(prefix$1g, "-divider"),
props: DividerProps,
setup: function setup(props) {
var renderTNodeContent = useContent();
var dividerClass = usePrefixClass("divider");
var dividerClasses = vue.computed(function () {
return ["".concat(dividerClass.value), "".concat(dividerClass.value, "--").concat(props.layout), "".concat(dividerClass.value, "--").concat(props.align), _defineProperty$3({}, "".concat(dividerClass.value, "--dashed"), props.dashed)];
});
return function () {
var content = renderTNodeContent("default", "content");
return vue.createVNode("div", {
"class": dividerClasses.value,
"role": "separator"
}, [vue.createVNode("div", {
"class": "".concat(dividerClass.value, "__content")
}, [content])]);
};
}
});
var Divider = withInstall(_Divider);
var FabProps = {
buttonProps: {
type: Object
},
draggable: {
type: [String, Boolean],
default: false
},
icon: {
type: Function
},
style: {
type: [String, Object],
default: "right: 16px; bottom: 32px;"
},
text: {
type: String,
default: ""
},
yBounds: {
type: Array
},
onClick: Function,
onDragEnd: Function,
onDragStart: Function
};
var prefix$1f = config.prefix;
var _Fab = vue.defineComponent({
name: "".concat(prefix$1f, "-fab"),
props: FabProps,
setup: function setup(props) {
var renderTNodeJSX = useTNodeJSX();
var fabClass = usePrefixClass("fab");
var fabRef = vue.ref();
var fabButtonRef = vue.ref();
var customNodeRef = vue.ref();
var handleClick = function handleClick(e) {
var _props$onClick;
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, {
e: e
});
};
var mounted = vue.ref(false);
var fabButtonSize = vue.ref({
width: 48,
height: 48
});
var btnSwitchPos = vue.ref({
x: 16,
y: 32
});
var switchPos = vue.ref({
hasMoved: false,
x: btnSwitchPos.value.x,
y: btnSwitchPos.value.y,
startX: 0,
startY: 0,
endX: 0,
endY: 0
});
var onTouchStart = function onTouchStart(e) {
var _props$onDragStart;
(_props$onDragStart = props.onDragStart) === null || _props$onDragStart === void 0 || _props$onDragStart.call(props, {
e: e
});
switchPos.value.startX = e.touches[0].pageX;
switchPos.value.startY = e.touches[0].pageY;
};
var onTouchMove = function onTouchMove(e) {
e.stopPropagation();
e.preventDefault();
if (!props.draggable) {
return;
}
if (e.touches.length <= 0) {
return;
}
var offsetX = e.touches[0].pageX - switchPos.value.startX;
var offsetY = e.touches[0].pageY - switchPos.value.startY;
var x = Math.floor(switchPos.value.x - offsetX);
var y = Math.floor(switchPos.value.y - offsetY);
var _getSwitchButtonSafeA = getSwitchButtonSafeAreaXY(x, y);
var _getSwitchButtonSafeA2 = _slicedToArray(_getSwitchButtonSafeA, 2);
x = _getSwitchButtonSafeA2[0];
y = _getSwitchButtonSafeA2[1];
if (props.draggable !== "vertical") {
btnSwitchPos.value.x = x;
switchPos.value.endX = x;
}
if (props.draggable !== "horizontal") {
btnSwitchPos.value.y = y;
switchPos.value.endY = y;
}
switchPos.value.hasMoved = true;
};
var getSwitchButtonSafeAreaXY = function getSwitchButtonSafeAreaXY(x, y) {
var _props$yBounds$, _props$yBounds, _props$yBounds$2, _props$yBounds2;
var bottomThreshold = reconvertUnit((_props$yBounds$ = (_props$yBounds = props.yBounds) === null || _props$yBounds === void 0 ? void 0 : _props$yBounds[1]) !== null && _props$yBounds$ !== void 0 ? _props$yBounds$ : 0);
var topThreshold = reconvertUnit((_props$yBounds$2 = (_props$yBounds2 = props.yBounds) === null || _props$yBounds2 === void 0 ? void 0 : _props$yBounds2[0]) !== null && _props$yBounds$2 !== void 0 ? _props$yBounds$2 : 0);
var docWidth = Math.min(window.innerWidth, document.documentElement.clientWidth, screen.width);
var docHeight = Math.min(window.innerHeight, document.documentElement.clientHeight, screen.height);
var maxY = docHeight - fabButtonSize.value.height - topThreshold;
var maxX = docWidth - fabButtonSize.value.width;
x = Math.max(0, Math.min(maxX, x));
y = Math.max(bottomThreshold, Math.min(maxY, y));
return [x, y];
};
var onTouchEnd = function onTouchEnd(e) {
var _props$onDragEnd;
if (!switchPos.value.hasMoved) {
return;
}
(_props$onDragEnd = props.onDragEnd) === null || _props$onDragEnd === void 0 || _props$onDragEnd.call(props, {
e: e
});
switchPos.value.startX = 0;
switchPos.value.startY = 0;
switchPos.value.hasMoved = false;
setSwitchPosition(switchPos.value.endX, switchPos.value.endY);
};
var setSwitchPosition = function setSwitchPosition(switchX, switchY) {
var _getSwitchButtonSafeA3 = getSwitchButtonSafeAreaXY(switchX, switchY);
var _getSwitchButtonSafeA4 = _slicedToArray(_getSwitchButtonSafeA3, 2);
switchX = _getSwitchButtonSafeA4[0];
switchY = _getSwitchButtonSafeA4[1];
switchPos.value.x = switchX;
switchPos.value.y = switchY;
if (props.draggable !== "vertical") {
btnSwitchPos.value.x = switchX;
}
if (props.draggable !== "horizontal") {
btnSwitchPos.value.y = switchY;
}
};
var fabStyle = vue.computed(function () {
var _btnSwitchPos$value = btnSwitchPos.value,
x = _btnSwitchPos$value.x,
y = _btnSwitchPos$value.y;
return "right: ".concat(x, "px;bottom: ").concat(y, "px;");
});
vue.onMounted(function () {
mounted.value = true;
resetDraggableParams();
if (fabButtonRef.value || customNodeRef.value) {
var _fabButtonRef$value;
var info = window.getComputedStyle(((_fabButtonRef$value = fabButtonRef.value) === null || _fabButtonRef$value === void 0 ? void 0 : _fabButtonRef$value.$el) || customNodeRef.value);
fabButtonSize.value.height = +reconvertUnit(info.height);
fabButtonSize.value.width = +reconvertUnit(info.width);
}
});
var getFabOriginStyle = function getFabOriginStyle() {
var info = window.getComputedStyle(fabRef.value);
var _ref = info || {},
right = _ref.right,
bottom = _ref.bottom;
return {
right: +(reconvertUnit(right) || 0),
bottom: +(reconvertUnit(bottom) || 0)
};
};
var resetDraggableParams = function resetDraggableParams() {
var _getFabOriginStyle = getFabOriginStyle(),
right = _getFabOriginStyle.right,
bottom = _getFabOriginStyle.bottom;
btnSwitchPos.value.x = right;
btnSwitchPos.value.y = bottom;
switchPos.value.x = right;
switchPos.value.y = bottom;
};
vue.watch(function () {
return props.style;
}, function () {
resetDraggableParams();
});
return function () {
var icon = function icon() {
return renderTNodeJSX("icon");
};
var defaultContent = vue.createVNode(Button, vue.mergeProps({
"size": "large",
"theme": "primary",
"shape": props.text ? "round" : "circle",
"class": "".concat(fabClass.value, "__button")
}, props.buttonProps, {
"icon": icon,
"ref": fabButtonRef
}), {
default: function _default() {
return [props.text];
}
});
var customNode = renderTNodeJSX("default");
return vue.createVNode("div", {
"class": fabClass.value,
"style": mounted.value && props.draggable ? fabStyle.value : props.style,
"onClick": handleClick,
"onTouchstart": onTouchStart,
"onTouchmove": onTouchMove,
"onTouchend": onTouchEnd,
"ref": fabRef
}, [customNode ? vue.createVNode("div", {
"ref": customNodeRef
}, [customNode]) : defaultContent]);
};
}
});
var Fab = withInstall(_Fab);
function _defineProperty$2(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;
}
var camel2Kebab = function camel2Kebab(camelString) {
var covertArr = ["strokeLinecap", "fillRule", "clipRule", "strokeWidth"];
if (covertArr.includes(camelString)) {
return camelString.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase();
}
return camelString;
};
var _renderNode = function renderNode(node, props) {
var processedAttrs = {};
if (node.attrs) {
for (var _i = 0, _Object$entries = Object.entries(node.attrs); _i < _Object$entries.length; _i++) {
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
key = _Object$entries$_i[0],
value = _Object$entries$_i[1];
if (typeof value === "string" && value.startsWith("props.")) {
var propName = value.split(".")[1];
processedAttrs[camel2Kebab(key)] = props[propName];
} else {
processedAttrs[camel2Kebab(key)] = value;
}
}
}
if (node.tag === "svg") {
processedAttrs.class = props.class;
processedAttrs.style = props.style;
processedAttrs.onClick = props.onClick;
}
var children = node.children ? node.children.map(function (child) {
return _renderNode(child, props);
}) : [];
return vue.h(node.tag, processedAttrs, children);
};
var renderNode = _renderNode;
var DEFAULT_CLASS_PREFIX = "t";
var DEFAULT_LOCALE = "zh-CN";
var ConfigContext = {
classPrefix: DEFAULT_CLASS_PREFIX,
locale: DEFAULT_LOCALE
};
var ConfigContext$1 = ConfigContext;
function useCommonClassName$1() {
var classPrefix = ConfigContext$1.classPrefix;
return {
SIZE: {
default: "",
xs: "".concat(classPrefix, "-size-xs"),
small: "".concat(classPrefix, "-size-s"),
medium: "".concat(classPrefix, "-size-m"),
large: "".concat(classPrefix, "-size-l"),
xl: "".concat(classPrefix, "-size-xl"),
block: "".concat(classPrefix, "-size-full-width")
},
STATUS: {
loading: "".concat(classPrefix, "-is-loading"),
disabled: "".concat(classPrefix, "-is-disabled"),
focused: "".concat(classPrefix, "-is-focused"),
success: "".concat(classPrefix, "-is-success"),
error: "".concat(classPrefix, "-is-error"),
warning: "".concat(classPrefix, "-is-warning"),
selected: "".concat(classPrefix, "-is-selected"),
active: "".concat(classPrefix, "-is-active"),
checked: "".concat(classPrefix, "-is-checked"),
current: "".concat(classPrefix, "-is-current"),
hidden: "".concat(classPrefix, "-is-hidden"),
visible: "".concat(classPrefix, "-is-visible"),
expanded: "".concat(classPrefix, "-is-expanded"),
indeterminate: "".concat(classPrefix, "-is-indeterminate")
}
};
}
function useSizeProps(size) {
var COMMON_SIZE_CLASS_NAMES = useCommonClassName$1().SIZE;
var className = vue.computed(function () {
if (size.value in COMMON_SIZE_CLASS_NAMES) {
return COMMON_SIZE_CLASS_NAMES[size.value];
}
return "";
});
var style = vue.computed(function () {
if (size.value === void 0 || size.value in COMMON_SIZE_CLASS_NAMES) {
return {};
}
return {
fontSize: size.value
};
});
return {
style: style,
className: className
};
}
function ownKeys$1b(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$19(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$1b(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1b(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$y = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "add"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M12 5L12 19M19 12L5 12",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var add = vue.defineComponent({
name: "AddIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-add", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$19(_objectSpread$19({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$y, finalProps.value);
};
}
});
var AddIcon = add;
function ownKeys$1a(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$18(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$1a(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1a(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$x = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "backtop"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M17.5 14.5L12 9L6.5 14.5M5 5H19M12 10.25V20",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var backtop = vue.defineComponent({
name: "BacktopIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-backtop", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$18(_objectSpread$18({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$x, finalProps.value);
};
}
});
var TIconBackTop = backtop;
function ownKeys$19(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$17(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$19(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$19(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$w = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "browse-off"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M13.1758 8.17578C14.4396 8.56376 15.4368 9.56096 15.8247 10.8247M21.2858 15.2856C22.0085 14.2983 22.5776 13.1913 22.9578 12C21.4771 7.36017 17.131 4 12.0001 4C11.3698 4 10.7513 4.05072 10.1484 4.1483M5.80747 5.80786C3.57225 7.23888 1.86478 9.42193 1.04199 12.0001C2.52275 16.6399 6.86881 20.0001 11.9997 20.0001C14.2796 20.0001 16.4045 19.3367 18.1919 18.1923L5.80747 5.80786ZM8 12.0003C8 10.8957 8.44771 9.89573 9.17157 9.17188L14.8284 14.8287C14.1046 15.5526 13.1046 16.0003 12 16.0003C9.79086 16.0003 8 14.2094 8 12.0003Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke2",
"stroke": "props.strokeColor2",
"d": "M20.9996 21L3 3",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var browseOff = vue.defineComponent({
name: "BrowseOffIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-browse-off", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$17(_objectSpread$17({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$w, finalProps.value);
};
}
});
var TBrowseOffIcon = browseOff;
function ownKeys$18(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$16(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$18(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$18(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$v = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "browse",
"clipPath": "url(#clip0_543_7945)"
},
"children": [{
"tag": "path",
"attrs": {
"id": "fill1",
"fill": "props.fillColor1",
"d": "M11.9997 4C6.86881 4 2.52275 7.36017 1.04199 12C2.52275 16.6398 6.86881 20 11.9997 20C17.1306 20 21.4766 16.6398 22.9574 12C21.4766 7.36017 17.1306 4 11.9997 4Z"
}
}, {
"tag": "path",
"attrs": {
"id": "fill2",
"fill": "props.fillColor2",
"d": "M16 12C16 14.2091 14.2091 16 12 16C9.79086 16 8 14.2091 8 12C8 9.79086 9.79086 8 12 8C14.2091 8 16 9.79086 16 12Z"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M11.9997 4C6.86881 4 2.52275 7.36017 1.04199 12C2.52275 16.6398 6.86881 20 11.9997 20C17.1306 20 21.4766 16.6398 22.9574 12C21.4766 7.36017 17.1306 4 11.9997 4Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke2",
"stroke": "props.strokeColor2",
"d": "M16 12C16 14.2091 14.2091 16 12 16C9.79086 16 8 14.2091 8 12C8 9.79086 9.79086 8 12 8C14.2091 8 16 9.79086 16 12Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var browse = vue.defineComponent({
name: "BrowseIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-browse", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$16(_objectSpread$16({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$v, finalProps.value);
};
}
});
var TBrowseIcon = browse;
function ownKeys$17(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$15(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$17(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$17(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$u = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "path",
"attrs": {
"id": "caret-down-small",
"fill": "props.strokeColor1",
"d": "M12.0001 15L17.5 9.5H6.5L12.0001 15Z"
}
}]
};
var caretDownSmall = vue.defineComponent({
name: "CaretDownSmallIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-caret-down-small", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$15(_objectSpread$15({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$u, finalProps.value);
};
}
});
var CaretDownSmallIcon = caretDownSmall;
function ownKeys$16(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$14(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$16(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$16(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$t = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "path",
"attrs": {
"id": "caret-up-small",
"fill": "props.strokeColor1",
"d": "M12.0001 9L17.5 14.5L6.5 14.5L12.0001 9Z"
}
}]
};
var caretUpSmall = vue.defineComponent({
name: "CaretUpSmallIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-caret-up-small", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$14(_objectSpread$14({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$t, finalProps.value);
};
}
});
var CaretUpSmallIcon = caretUpSmall;
function ownKeys$15(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$13(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$15(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$15(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$s = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "path",
"attrs": {
"fill": "props.filledColor",
"d": "M12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23ZM7.49985 10.5858L10.4999 13.5858L16.4999 7.58578L17.9141 8.99999L10.4999 16.4142L6.08564 12L7.49985 10.5858Z"
}
}]
};
var checkCircleFilled = vue.defineComponent({
name: "CheckCircleFilledIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-check-circle-filled", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$13(_objectSpread$13({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$s, finalProps.value);
};
}
});
var CheckCircleFilledIcon = checkCircleFilled;
function ownKeys$14(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$12(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$14(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$14(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$r = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "check-circle"
},
"children": [{
"tag": "path",
"attrs": {
"id": "fill1",
"fill": "props.fillColor1",
"d": "M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12Z"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke2",
"stroke": "props.strokeColor2",
"d": "M16.5 9L10.5 15L7.5 12",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var checkCircle = vue.defineComponent({
name: "CheckCircleIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-check-circle", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$12(_objectSpread$12({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$r, finalProps.value);
};
}
});
var CheckCircleIcon = checkCircle;
function ownKeys$13(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$11(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$13(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$13(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$q = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "path",
"attrs": {
"fill": "props.filledColor",
"d": "M22 2H2V22H22V2ZM6.08618 12L7.5004 10.5858L10.5004 13.5858L16.5004 7.58579L17.9146 9L10.5004 16.4142L6.08618 12Z"
}
}]
};
var checkRectangleFilled = vue.defineComponent({
name: "CheckRectangleFilledIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-check-rectangle-filled", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$11(_objectSpread$11({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$q, finalProps.value);
};
}
});
var CheckRectangleFilledIcon = checkRectangleFilled;
function ownKeys$12(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$10(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$12(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$12(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$p = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "check"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M19.5708 7.37842L10.3785 16.5708L5.42871 11.6211",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var check = vue.defineComponent({
name: "CheckIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-check", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$10(_objectSpread$10({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$p, finalProps.value);
};
}
});
var CheckIcon = check;
function ownKeys$11(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$$(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$11(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$11(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$o = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "chevron-down"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M17.5 9.5L12 15L6.5 9.5",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var chevronDown = vue.defineComponent({
name: "ChevronDownIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-chevron-down", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$$(_objectSpread$$({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$o, finalProps.value);
};
}
});
var ChevronDownIcon = chevronDown;
function ownKeys$10(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$_(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$10(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$10(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$n = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "chevron-left.double"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M10.5 7.5L6 12L10.5 16.5M17 7.5L12.5 12L17 16.5",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var chevronLeftDouble = vue.defineComponent({
name: "ChevronLeftDoubleIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-chevron-left-double", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$_(_objectSpread$_({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$n, finalProps.value);
};
}
});
var ChevronLeftDoubleIcon = chevronLeftDouble;
function ownKeys$$(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$Z(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$$(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$$(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$m = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "chevron-left"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M14.5 17.5L9 12L14.5 6.5",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var chevronLeft = vue.defineComponent({
name: "ChevronLeftIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-chevron-left", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$Z(_objectSpread$Z({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$m, finalProps.value);
};
}
});
var ChevronLeftIcon = chevronLeft;
function ownKeys$_(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$Y(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$_(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$_(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$l = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "chevron-right.double"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M13.5 16.5L18 12L13.5 7.5M7 16.5L11.5 12L7 7.5",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var chevronRightDouble = vue.defineComponent({
name: "ChevronRightDoubleIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-chevron-right-double", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$Y(_objectSpread$Y({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$l, finalProps.value);
};
}
});
var ChevronRightDoubleIcon = chevronRightDouble;
function ownKeys$Z(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$X(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$Z(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$Z(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$k = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "chevron-right"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M9.5 17.5L15 12L9.5 6.5",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var chevronRight = vue.defineComponent({
name: "ChevronRightIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-chevron-right", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$X(_objectSpread$X({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$k, finalProps.value);
};
}
});
var ChevronRightIcon = chevronRight;
function ownKeys$Y(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$W(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$Y(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$Y(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$j = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "chevron-up"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M17.5 14.5L12 9L6.5 14.5",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var chevronUp = vue.defineComponent({
name: "ChevronUpIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-chevron-up", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$W(_objectSpread$W({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$j, finalProps.value);
};
}
});
var ChevronUpIcon = chevronUp;
function ownKeys$X(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$V(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$X(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$X(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$i = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "circle"
},
"children": [{
"tag": "circle",
"attrs": {
"id": "fill1",
"cx": 12,
"cy": 12,
"r": 10,
"fill": "props.fillColor1"
}
}, {
"tag": "circle",
"attrs": {
"id": "stroke1",
"cx": 12,
"cy": 12,
"r": 10,
"stroke": "props.strokeColor1",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var circle = vue.defineComponent({
name: "CircleIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-circle", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$V(_objectSpread$V({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$i, finalProps.value);
};
}
});
var CircleIcon = circle;
function ownKeys$W(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$U(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$W(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$W(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$h = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "path",
"attrs": {
"fill": "props.filledColor",
"d": "M12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23ZM8.81753 7.40346L11.9999 10.5858L15.1815 7.40414L16.5957 8.81835L13.4141 12L16.5957 15.1816L15.1815 16.5958L11.9999 13.4142L8.81753 16.5965L7.40332 15.1823L10.5856 12L7.40332 8.81767L8.81753 7.40346Z"
}
}]
};
var closeCircleFilled = vue.defineComponent({
name: "CloseCircleFilledIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-close-circle-filled", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$U(_objectSpread$U({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$h, finalProps.value);
};
}
});
var TIconClear = closeCircleFilled;
function ownKeys$V(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$T(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$V(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$V(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$g = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "close-circle"
},
"children": [{
"tag": "path",
"attrs": {
"id": "fill1",
"fill": "props.fillColor1",
"d": "M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12Z"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke2",
"stroke": "props.strokeColor2",
"d": "M15.1813 8.81836L11.9997 12M11.9997 12L8.81738 15.1823M11.9997 12L15.1813 15.1816M11.9997 12L8.81738 8.81768",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var closeCircle = vue.defineComponent({
name: "CloseCircleIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-close-circle", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$T(_objectSpread$T({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$g, finalProps.value);
};
}
});
var CloseCircleIcon = closeCircle;
function ownKeys$U(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$S(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$U(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$U(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$f = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "close"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M16.9503 7.05029L12.0005 12M12.0005 12L7.05078 16.9498M12.0005 12L16.9503 16.9498M12.0005 12L7.05078 7.05029",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var close = vue.defineComponent({
name: "CloseIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-close", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$S(_objectSpread$S({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$f, finalProps.value);
};
}
});
var CloseIcon = close;
function ownKeys$T(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$R(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$T(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$T(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$e = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "delete"
},
"children": [{
"tag": "path",
"attrs": {
"id": "fill1",
"fill": "props.fillColor1",
"d": "M5 5H19L18.5 22H5.5L5 5Z"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M21 5H3M5 5H19L18.5 22H5.5L5 5ZM8.5 2H15.5V5H8.5V2Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke2",
"stroke": "props.strokeColor2",
"d": "M12 9V18",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var _delete = vue.defineComponent({
name: "DeleteIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-delete", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$R(_objectSpread$R({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$e, finalProps.value);
};
}
});
var DeleteIcon = _delete;
function ownKeys$S(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$Q(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$S(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$S(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$d = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "path",
"attrs": {
"fill": "props.filledColor",
"d": "M12 1C18.0751 1 23 5.92487 23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12C1 5.92487 5.92487 1 12 1ZM11.0001 14H13.0001V6.49998H11.0001V14ZM13.004 15.5H11.0001V17.5039H13.004V15.5Z"
}
}]
};
var errorCircleFilled = vue.defineComponent({
name: "ErrorCircleFilledIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-error-circle-filled", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$Q(_objectSpread$Q({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$d, finalProps.value);
};
}
});
var ErrorCircleFilledIcon = errorCircleFilled;
function ownKeys$R(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$P(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$R(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$R(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$c = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "error-circle"
},
"children": [{
"tag": "path",
"attrs": {
"id": "fill1",
"fill": "props.fillColor1",
"d": "M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke2",
"stroke": "props.strokeColor2",
"d": "M12 7.5V13M12 16.5H12.0039V16.5039H12V16.5Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var errorCircle = vue.defineComponent({
name: "ErrorCircleIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-error-circle", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$P(_objectSpread$P({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$c, finalProps.value);
};
}
});
var ErrorCircleIcon = errorCircle;
function ownKeys$Q(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$O(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$Q(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$Q(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$b = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "error"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M12 3L12 15.5M12 20H12.0039V20.0039H12V20Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var error = vue.defineComponent({
name: "ErrorIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-error", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$O(_objectSpread$O({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$b, finalProps.value);
};
}
});
var ErrorIcon = error;
function ownKeys$P(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$N(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$P(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$P(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$a = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "path",
"attrs": {
"fill": "props.filledColor",
"d": "M12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23ZM10.996 8.50002V6.49611H12.9999V8.50002H10.996ZM12.9999 10L12.9999 17.5H10.9999V10L12.9999 10Z"
}
}]
};
var infoCircleFilled = vue.defineComponent({
name: "InfoCircleFilledIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-info-circle-filled", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$N(_objectSpread$N({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$a, finalProps.value);
};
}
});
var InfoCircleFilledIcon = infoCircleFilled;
function ownKeys$O(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$M(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$O(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$O(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$9 = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "info-circle"
},
"children": [{
"tag": "path",
"attrs": {
"id": "fill1",
"fill": "props.fillColor1",
"d": "M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12Z"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke2",
"stroke": "props.strokeColor2",
"d": "M12 16.5L12 11M12 7.5L11.9961 7.5L11.9961 7.49609L12 7.49609L12 7.5Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var infoCircle = vue.defineComponent({
name: "InfoCircleIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-info-circle", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$M(_objectSpread$M({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$9, finalProps.value);
};
}
});
var InfoCircleIcon = infoCircle;
function ownKeys$N(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$L(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$N(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$N(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$8 = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "path",
"attrs": {
"id": "loading",
"fill": "props.strokeColor1",
"d": "M12 2.25C6.61556 2.25 2.25 6.61556 2.25 12C2.25 17.3844 6.61556 21.75 12 21.75V19.3125C7.96142 19.3125 4.6875 16.0386 4.6875 12C4.6875 7.96142 7.96142 4.6875 12 4.6875C16.0386 4.6875 19.3125 7.96142 19.3125 12H21.75C21.75 6.61556 17.3844 2.25 12 2.25Z"
}
}]
};
var loading = vue.defineComponent({
name: "LoadingIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-loading", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$L(_objectSpread$L({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$8, finalProps.value);
};
}
});
var LoadingIcon = loading;
function ownKeys$M(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$K(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$M(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$M(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$7 = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "path",
"attrs": {
"fill": "props.filledColor",
"d": "M12 1C18.0751 1 23 5.92487 23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12C1 5.92487 5.92487 1 12 1ZM17.5 13V11L6.5 11V13L17.5 13Z"
}
}]
};
var minusCircleFilled = vue.defineComponent({
name: "MinusCircleFilledIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-minus-circle-filled", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$K(_objectSpread$K({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$7, finalProps.value);
};
}
});
var MinusCircleFilledIcon = minusCircleFilled;
function ownKeys$L(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$J(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$L(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$L(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$6 = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "path",
"attrs": {
"fill": "props.filledColor",
"d": "M2 2H22V22L2 22V2ZM6.5 11V13L17.5 13V11L6.5 11Z"
}
}]
};
var minusRectangleFilled = vue.defineComponent({
name: "MinusRectangleFilledIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-minus-rectangle-filled", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$J(_objectSpread$J({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$6, finalProps.value);
};
}
});
var MinusRectangleFilledIcon = minusRectangleFilled;
function ownKeys$K(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$I(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$K(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$K(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$5 = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "minus"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M16.502 12L7.50195 12",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var minus = vue.defineComponent({
name: "MinusIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-minus", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$I(_objectSpread$I({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$5, finalProps.value);
};
}
});
var MinusIcon = minus;
function ownKeys$J(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$H(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$J(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$J(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$4 = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "refresh"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M21.448 13C20.9483 17.7767 16.909 21.5 12 21.5C8.18227 21.5 4.89052 19.248 3.38065 16M2.5 20.5V15.5H5.5M2.55176 11C3.05145 6.22334 7.09079 2.5 11.9998 2.5C15.8175 2.5 19.1092 4.75197 20.6191 8M21.4998 3.5V8.5H18.4998",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var refresh = vue.defineComponent({
name: "RefreshIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-refresh", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$H(_objectSpread$H({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$4, finalProps.value);
};
}
});
var RefreshIcon = refresh;
function ownKeys$I(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$G(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$I(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$I(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$3 = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "remove"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M19 12L5 12",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var remove = vue.defineComponent({
name: "RemoveIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-remove", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$G(_objectSpread$G({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$3, finalProps.value);
};
}
});
var RemoveIcon = remove;
function ownKeys$H(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$F(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$H(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$H(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$2 = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "search"
},
"children": [{
"tag": "path",
"attrs": {
"id": "fill1",
"fill": "props.fillColor1",
"d": "M15.8033 15.8033C12.8744 18.7322 8.12563 18.7322 5.1967 15.8033C2.26777 12.8744 2.26777 8.12563 5.1967 5.1967C8.12563 2.26777 12.8744 2.26777 15.8033 5.1967C18.7322 8.12563 18.7322 12.8744 15.8033 15.8033Z"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke2",
"stroke": "props.strokeColor2",
"d": "M15.8027 15.8037L21.106 21.107",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}, {
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M15.8033 15.8033C12.8744 18.7322 8.12563 18.7322 5.1967 15.8033C2.26777 12.8744 2.26777 8.12563 5.1967 5.1967C8.12563 2.26777 12.8744 2.26777 15.8033 5.1967C18.7322 8.12563 18.7322 12.8744 15.8033 15.8033Z",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var search = vue.defineComponent({
name: "SearchIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-search", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$F(_objectSpread$F({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$2, finalProps.value);
};
}
});
var TSearchIcon = search;
function ownKeys$G(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$E(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$G(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$G(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element$1 = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "path",
"attrs": {
"fill": "props.filledColor",
"d": "M12.0012 0.63031L14.9039 8.98087L23.7427 9.16099L16.6978 14.502L19.2579 22.9639L12.0012 17.9143L4.74461 22.9639L7.30465 14.502L0.259766 9.16099L9.09859 8.98087L12.0012 0.63031Z"
}
}]
};
var starFilled = vue.defineComponent({
name: "StarFilledIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-star-filled", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$E(_objectSpread$E({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element$1, finalProps.value);
};
}
});
var StarFilledIcon = starFilled;
function ownKeys$F(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$D(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$F(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$F(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var element = {
"tag": "svg",
"attrs": {
"fill": "none",
"viewBox": "0 0 24 24",
"width": "1em",
"height": "1em"
},
"children": [{
"tag": "g",
"attrs": {
"id": "view-list"
},
"children": [{
"tag": "path",
"attrs": {
"id": "stroke1",
"stroke": "props.strokeColor1",
"d": "M3 5H21M3 12H21M3 19H21",
"strokeLinecap": "square",
"strokeWidth": "props.strokeWidth"
}
}]
}]
};
var viewList = vue.defineComponent({
name: "ViewListIcon",
props: {
size: {
type: String
},
onClick: {
type: Function
},
fillColor: {
type: [Array, String]
},
strokeColor: {
type: [Array, String]
},
strokeWidth: {
type: Number
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props.size;
});
var strokeColor1 = vue.computed(function () {
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? props.strokeColor[0] : props.strokeColor;
});
var strokeColor2 = vue.computed(function () {
var _props$strokeColor$;
if (!props.strokeColor) return "currentColor";
return Array.isArray(props.strokeColor) ? (_props$strokeColor$ = props.strokeColor[1]) !== null && _props$strokeColor$ !== void 0 ? _props$strokeColor$ : props.strokeColor[0] : props.strokeColor;
});
var fillColor1 = vue.computed(function () {
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var fillColor2 = vue.computed(function () {
var _props$fillColor$;
if (!props.fillColor) return "transparent";
return Array.isArray(props.fillColor) ? (_props$fillColor$ = props.fillColor[1]) !== null && _props$fillColor$ !== void 0 ? _props$fillColor$ : props.fillColor[0] : props.fillColor;
});
var filledColor = vue.computed(function () {
if (!props.fillColor) return "currentColor";
return Array.isArray(props.fillColor) ? props.fillColor[0] : props.fillColor;
});
var _useSizeProps = useSizeProps(propsSize),
className = _useSizeProps.className,
style = _useSizeProps.style;
var finalCls = vue.computed(function () {
return ["t-icon", "t-icon-view-list", className.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$D(_objectSpread$D({
fill: "none"
}, style.value), attrs.style);
});
var finalProps = vue.computed(function () {
return {
class: finalCls.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props$onClick;
return (_props$onClick = props.onClick) === null || _props$onClick === void 0 ? void 0 : _props$onClick.call(props, {
e: e
});
},
strokeColor1: strokeColor1.value,
strokeColor2: strokeColor2.value,
fillColor1: fillColor1.value,
fillColor2: fillColor2.value,
strokeWidth: props.strokeWidth || 2,
filledColor: filledColor.value
};
});
return function () {
return renderNode(element, finalProps.value);
};
}
});
var TViewListIcon = viewList;
var isServer = typeof window === "undefined";
function checkScriptAndLoad(url, className) {
if (isServer) {
return;
}
if (!document || !url || typeof url !== "string") return;
if (document.querySelectorAll(".".concat(className, "[src=\"").concat(url, "\"]")).length > 0) {
return;
}
var svg = document.createElement("script");
svg.setAttribute("class", className);
svg.setAttribute("src", url);
document.body.appendChild(svg);
}
var props$L = {
name: {
type: String,
default: ""
},
size: {
type: String,
default: void 0
},
url: {
type: [String, Array],
default: void 0
},
loadDefaultIcons: {
type: Boolean,
default: true
},
onClick: Function
};
var props$M = props$L;
function ownKeys$E(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread$C(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys$E(Object(source), !0).forEach(function (key) {
_defineProperty$2(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$E(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var classPrefix$1 = ConfigContext$1.classPrefix;
var CDN_ICONFONT_URL = "https://tdesign.gtimg.com/icon/0.4.0/fonts/index.js";
var _Icon = vue.defineComponent({
name: "Icon",
props: props$M,
setup: function setup(props2, _ref) {
var attrs = _ref.attrs;
var propsSize = vue.computed(function () {
return props2.size;
});
var name = vue.computed(function () {
return props2.name || "";
});
var _useSizeProps = useSizeProps(propsSize),
sizeClassName = _useSizeProps.className,
sizeStyle = _useSizeProps.style;
var finalUrl = vue.computed(function () {
var url = [];
url = props2.url instanceof Array ? props2.url.concat() : [props2.url];
if (props2.loadDefaultIcons) url.push(CDN_ICONFONT_URL);
return url;
});
var classNames = vue.computed(function () {
return ["".concat(classPrefix$1, "-icon"), "".concat(classPrefix$1, "-icon-").concat(name.value), sizeClassName.value];
});
var finalStyle = vue.computed(function () {
return _objectSpread$C(_objectSpread$C({}, sizeStyle.value), attrs.style);
});
vue.onMounted(function () {
Array.from(new Set(finalUrl.value)).forEach(function (url) {
checkScriptAndLoad(url, "".concat(classPrefix$1, "-svg-js-stylesheet--unique-class"));
});
});
var finalProps = vue.computed(function () {
return {
class: classNames.value,
style: finalStyle.value,
onClick: function onClick(e) {
var _props2$onClick;
return (_props2$onClick = props2.onClick) === null || _props2$onClick === void 0 ? void 0 : _props2$onClick.call(props2, {
e: e
});
}
};
});
return function () {
return vue.h("svg", finalProps.value, vue.h("use", {
href: props2.url ? "#".concat(name.value) : "#t-icon-".concat(name.value)
}));
};
}
});
var _Icon$1 = _Icon;
var Icon$1 = _Icon$1;
var Icon = withInstall(Icon$1, "TIcon");
var props$K = {
gutter: {
type: [String, Number]
}
};
var rowInjectionKey = Symbol("RowProvide");
var prefix$1e = config.prefix;
var _Row = vue.defineComponent({
name: "".concat(prefix$1e, "-row"),
props: props$K,
setup: function setup(props2) {
var renderTNodeJSX = useTNodeJSX();
var rowClass = usePrefixClass("row");
var style = vue.computed(function () {
var styles = {};
if (!props2.gutter) {
return styles;
}
var gutterVal = convertUnit(-props2.gutter / 2);
styles.marginRight = gutterVal;
styles.marginLeft = gutterVal;
return styles;
});
vue.provide(rowInjectionKey, {
gutter: props2.gutter || 0
});
return function () {
return vue.createVNode("div", {
"class": rowClass.value,
"style": style.value
}, [renderTNodeJSX("default")]);
};
}
});
var props$J = {
offset: {
type: [String, Number]
},
span: {
type: [String, Number]
}
};
var prefix$1d = config.prefix;
var _Col = vue.defineComponent({
name: "".concat(prefix$1d, "-col"),
props: props$J,
setup: function setup(props2) {
var renderTNodeJSX = useTNodeJSX();
var colClass = usePrefixClass("col");
var _inject = vue.inject(rowInjectionKey),
gutter = _inject.gutter;
var style = vue.computed(function () {
var styles = {};
if (!gutter) {
return styles;
}
var gutterVal = convertUnit(Number(gutter) / 2);
styles.paddingRight = gutterVal;
styles.paddingLeft = gutterVal;
return styles;
});
var rootClass = vue.computed(function () {
var rootClass2 = colClass.value;
if (props2.offset) {
rootClass2 += " ".concat(colClass.value, "--offset-").concat(props2.offset);
}
if (props2.span) {
rootClass2 += " ".concat(colClass.value, "--").concat(props2.span);
}
return rootClass2;
});
return function () {
return vue.createVNode("div", {
"class": rootClass.value,
"style": style.value
}, [renderTNodeJSX("default")]);
};
}
});
var Row = withInstall(_Row);
var Col = withInstall(_Col);
var props$I = {
content: {
type: [String, Function]
},
default: {
type: [String, Function]
},
disabled: {
type: Boolean,
default: void 0
},
hover: Boolean,
href: {
type: String,
default: ""
},
prefixIcon: {
type: Function
},
size: {
type: String,
default: "medium",
validator: function validator(val) {
if (!val) return true;
return ["small", "medium", "large"].includes(val);
}
},
suffixIcon: {
type: Function
},
target: {
type: String,
default: ""
},
theme: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "primary", "danger", "warning", "success"].includes(val);
}
},
underline: Boolean,
onClick: Function
};
var prefix$1c = config.prefix;
var _Link = vue.defineComponent({
name: "".concat(prefix$1c, "-link"),
props: props$I,
setup: function setup(props2) {
var linkClass = usePrefixClass("link");
var renderTNodeJSX = useTNodeJSX();
var renderTNodeContent = useContent();
var isDisabled = useFormDisabled();
var linkClasses = vue.computed(function () {
return [linkClass.value, "".concat(linkClass.value, "--").concat(props2.theme || "default"), "".concat(linkClass.value, "--").concat(props2.size || "medium"), _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(linkClass.value, "--disabled"), props2.disabled), "".concat(linkClass.value, "--underline"), props2.underline), "".concat(linkClass.value, "--hover"), props2.hover && !props2.disabled)];
});
var handleClick = function handleClick(e) {
var _props2$onClick;
if (props2.disabled) return;
(_props2$onClick = props2.onClick) === null || _props2$onClick === void 0 || _props2$onClick.call(props2, e);
};
var renderContent = function renderContent() {
var content = renderTNodeContent("default", "content");
return content ? vue.createVNode("span", {
"class": ["".concat(linkClass.value, "__content")]
}, [content]) : null;
};
var renderPrefixIcon = function renderPrefixIcon() {
var prefixIcon = renderTNodeJSX("prefixIcon");
return prefixIcon ? vue.createVNode("span", {
"class": ["".concat(linkClass.value, "__prefix-icon")]
}, [prefixIcon]) : null;
};
var renderSuffixIcon = function renderSuffixIcon() {
var suffixIcon = renderTNodeJSX("suffixIcon");
return suffixIcon ? vue.createVNode("span", {
"class": ["".concat(linkClass.value, "__suffix-icon")]
}, [suffixIcon]) : null;
};
return function () {
return vue.createVNode("a", {
"class": linkClasses.value,
"aria-disabled": isDisabled.value,
"target": props2.target,
"href": isDisabled.value || !props2.href ? void 0 : props2.href,
"onClick": handleClick
}, [renderPrefixIcon(), renderContent(), renderSuffixIcon()]);
};
}
});
var Link = withInstall(_Link);
var props$H = {
container: {
type: Function
},
fixed: {
type: Boolean,
default: true
},
icon: {
type: [Boolean, Function],
default: true
},
target: {
type: Function
},
text: {
type: String,
default: ""
},
theme: {
type: String,
default: "round",
validator: function validator(val) {
if (!val) return true;
return ["round", "half-round", "round-dark", "half-round-dark"].includes(val);
}
},
visibilityHeight: {
type: Number,
default: 200
},
onToTop: Function
};
var overflowScrollReg = /scroll|auto|overlay/i;
function getScrollParent$3(el) {
var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;
var node = el;
while (node && node !== root && node.nodeType === 1) {
var _window$getComputedSt = window.getComputedStyle(node),
overflowY = _window$getComputedSt.overflowY;
if (overflowScrollReg.test(overflowY)) {
return node;
}
node = node.parentNode;
}
return root;
}
var prefix$1b = config.prefix;
var _BackTop = vue.defineComponent({
name: "".concat(prefix$1b, "-back-top"),
props: props$H,
setup: function setup(props2) {
var renderTNodeJSX = useTNodeJSX();
var backTopClass = usePrefixClass("back-top");
var root = vue.ref();
var target = vue.computed(function () {
if (!isBrowser$1) return void 0;
return props2.target ? props2.target() : window.document.documentElement;
});
var container = vue.ref();
var _useElementBounding = useElementBounding(target),
top = _useElementBounding.top;
var visible = vue.ref(false);
var backTopClasses = vue.computed(function () {
return _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(backTopClass.value), true), "".concat(backTopClass.value, "--fixed"), props2.fixed), "".concat(backTopClass.value, "--").concat(props2.theme), true);
});
var handleClick = function handleClick() {
if (isBrowser$1) {
var _props2$onToTop;
container.value.scrollTop = 0 + top.value;
(_props2$onToTop = props2.onToTop) === null || _props2$onToTop === void 0 || _props2$onToTop.call(props2);
}
};
var getContainer = function getContainer(container2) {
if (typeof container2 === "function") {
return container2();
}
return getScrollParent$3(root.value, document.documentElement);
};
vue.onMounted(function () {
if (isBrowser$1) {
container.value = getContainer(props2.container);
container.value.onscroll = function () {
var _container$value, _container$value2;
if (((_container$value = container.value) === null || _container$value === void 0 ? void 0 : _container$value.scrollTop) >= props2.visibilityHeight) {
visible.value = true;
}
if (visible.value && ((_container$value2 = container.value) === null || _container$value2 === void 0 ? void 0 : _container$value2.scrollTop) < props2.visibilityHeight) {
visible.value = false;
}
};
}
});
vue.onUnmounted(function () {
container.value.onscroll = null;
});
var readerIcon = function readerIcon() {
if (props2.icon === true) {
return vue.createVNode(TIconBackTop, {
"size": "22px"
}, null);
}
return renderTNodeJSX("icon");
};
return function () {
return vue.withDirectives(vue.createVNode("div", {
"class": backTopClasses.value,
"ref": root,
"onClick": handleClick
}, [readerIcon(), props2.text && vue.createVNode("span", {
"class": "".concat(backTopClass.value, "__text--").concat(props2.theme)
}, [props2.text])]), [[vue.vShow, visible.value]]);
};
}
});
var BackTop = withInstall(_BackTop);
var popupProps = {
attach: {
type: [String, Function],
default: "body"
},
closeBtn: {
type: [Boolean, Function]
},
closeOnOverlayClick: {
type: Boolean,
default: true
},
destroyOnClose: Boolean,
duration: {
type: Number,
default: 240
},
overlayProps: {
type: Object,
default: function _default() {
return {};
}
},
placement: {
type: String,
default: "top",
validator: function validator(val) {
if (!val) return true;
return ["top", "left", "right", "bottom", "center"].includes(val);
}
},
preventScrollThrough: {
type: Boolean,
default: true
},
showOverlay: {
type: Boolean,
default: true
},
transitionName: {
type: String,
default: ""
},
visible: {
type: Boolean,
default: void 0
},
modelValue: {
type: Boolean,
default: void 0
},
defaultVisible: Boolean,
zIndex: {
type: Number
},
onClose: Function,
onClosed: Function,
onOpen: Function,
onOpened: Function,
onVisibleChange: Function
};
var OverlayProps = {
backgroundColor: {
type: String,
default: ""
},
customStyle: {
type: String,
default: ""
},
duration: {
type: Number,
default: 300
},
preventScrollThrough: {
type: Boolean,
default: true
},
visible: Boolean,
zIndex: {
type: Number,
default: 1e3
},
onClick: Function
};
var prefix$1a = config.prefix;
var _Overlay = vue.defineComponent({
name: "".concat(prefix$1a, "-overlay"),
props: OverlayProps,
setup: function setup(props) {
var renderTNodeJSX = useTNodeJSX();
var overlayClass = usePrefixClass("overlay");
var overlayClasses = vue.computed(function () {
return _defineProperty$3(_defineProperty$3({}, "".concat(overlayClass.value), true), "".concat(overlayClass.value, "--active"), props.visible);
});
var overlayStyles = vue.computed(function () {
var arr = [];
if (props.customStyle) {
arr.push(props.customStyle);
}
if (props.zIndex) {
arr.push("z-index: ".concat(props.zIndex));
}
if (props.duration) {
arr.push("transition-duration: ".concat(props.duration, "ms"));
}
if (props.backgroundColor) {
arr.push("background-color: ".concat(props.backgroundColor));
}
return arr.join("; ");
});
var handleTouchMove = function handleTouchMove(e) {
if (props.preventScrollThrough) {
preventDefault(e, true);
}
};
var handleClick = function handleClick(e) {
var _props$onClick;
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, {
e: e
});
};
return function () {
return vue.createVNode(vue.Transition, {
"name": overlayClass.value
}, {
default: function _default() {
return [vue.withDirectives(vue.createVNode("div", {
"class": overlayClasses.value,
"style": overlayStyles.value,
"onClick": handleClick,
"onTouchmove": handleTouchMove
}, [renderTNodeJSX("default")]), [[vue.vShow, props.visible]])];
}
});
};
}
});
var Overlay = withInstall(_Overlay);
function useVModel(value, modelValue, defaultValue, onChange) {
var propName = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : "value";
var _getCurrentInstance = vue.getCurrentInstance(),
emit = _getCurrentInstance.emit,
vnode = _getCurrentInstance.vnode;
var internalValue = vue.ref();
internalValue.value = defaultValue;
var vProps = vnode.props || {};
var isVM = Object.prototype.hasOwnProperty.call(vProps, "modelValue") || Object.prototype.hasOwnProperty.call(vProps, "model-value");
var isVMP = Object.prototype.hasOwnProperty.call(vProps, propName) || Object.prototype.hasOwnProperty.call(vProps, kebabCase$1(propName));
if (isVMP || typeof value.value !== "undefined") {
return [value, function (newValue) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
emit === null || emit === void 0 || emit.apply(void 0, ["update:".concat(propName), newValue].concat(args));
onChange === null || onChange === void 0 || onChange.apply(void 0, [newValue].concat(args));
}];
}
if (isVM || typeof modelValue.value !== "undefined") {
return [modelValue, function (newValue) {
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
emit === null || emit === void 0 || emit.apply(void 0, ["update:modelValue", newValue].concat(args));
onChange === null || onChange === void 0 || onChange.apply(void 0, [newValue].concat(args));
}];
}
return [internalValue, function (newValue) {
internalValue.value = newValue;
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
args[_key3 - 1] = arguments[_key3];
}
onChange === null || onChange === void 0 || onChange.apply(void 0, [newValue].concat(args));
}];
}
var MIN_DISTANCE = 10;
function getDirection(x, y) {
if (x > y && x > MIN_DISTANCE) {
return "horizontal";
}
if (y > x && y > MIN_DISTANCE) {
return "vertical";
}
return "";
}
function useTouch$1() {
var startX = vue.ref(0);
var startY = vue.ref(0);
var deltaX = vue.ref(0);
var deltaY = vue.ref(0);
var offsetX = vue.ref(0);
var offsetY = vue.ref(0);
var direction = vue.ref("");
var isVertical = function isVertical() {
return direction.value === "vertical";
};
var isHorizontal = function isHorizontal() {
return direction.value === "horizontal";
};
var reset = function reset() {
deltaX.value = 0;
deltaY.value = 0;
offsetX.value = 0;
offsetY.value = 0;
direction.value = "";
};
var start = function start(event) {
reset();
startX.value = event.touches[0].clientX;
startY.value = event.touches[0].clientY;
};
var move = function move(event) {
var touch = event.touches[0];
deltaX.value = touch.clientX < 0 ? 0 : touch.clientX - startX.value;
deltaY.value = touch.clientY - startY.value;
offsetX.value = Math.abs(deltaX.value);
offsetY.value = Math.abs(deltaY.value);
if (!direction.value) {
direction.value = getDirection(offsetX.value, offsetY.value);
}
};
return {
move: move,
start: start,
reset: reset,
startX: startX,
startY: startY,
deltaX: deltaX,
deltaY: deltaY,
offsetX: offsetX,
offsetY: offsetY,
direction: direction,
isVertical: isVertical,
isHorizontal: isHorizontal
};
}
var totalLockCount = /* @__PURE__ */new Map();
var mounted = null;
function useLockScroll(rootRef, shouldLock, componentName) {
var touch = useTouch$1();
var BODY_LOCK_CLASS = "".concat(componentName, "--lock");
var onTouchMove = function onTouchMove(event) {
touch.move(event);
var direction = touch.deltaY.value > 0 ? "10" : "01";
var el = getScrollParent$3(event.target, rootRef.value);
if (!el) return;
var scrollHeight = el.scrollHeight,
offsetHeight = el.offsetHeight,
scrollTop = el.scrollTop;
var status = "11";
if (scrollTop === 0) {
status = offsetHeight >= scrollHeight ? "00" : "01";
} else if (scrollTop + offsetHeight >= scrollHeight) {
status = "10";
}
if (status !== "11" && touch.isVertical() && !(parseInt(status, 2) & parseInt(direction, 2))) {
if (event.cancelable) {
event.preventDefault();
}
}
};
var lock = function lock() {
var _totalLockCount$get;
document.addEventListener("touchstart", touch.start);
document.addEventListener("touchmove", onTouchMove, {
passive: false
});
if (!totalLockCount.get(BODY_LOCK_CLASS)) {
document.body.classList.add(BODY_LOCK_CLASS);
}
totalLockCount.set(BODY_LOCK_CLASS, ((_totalLockCount$get = totalLockCount.get(BODY_LOCK_CLASS)) !== null && _totalLockCount$get !== void 0 ? _totalLockCount$get : 0) + 1);
};
var unlock = function unlock() {
var sum = Array.from(totalLockCount.values()).reduce(function (acc, val) {
return acc + val;
}, 0);
if (sum) {
var _totalLockCount$get2;
document.removeEventListener("touchstart", touch.start);
document.removeEventListener("touchmove", onTouchMove);
totalLockCount.set(BODY_LOCK_CLASS, Math.max(((_totalLockCount$get2 = totalLockCount.get(BODY_LOCK_CLASS)) !== null && _totalLockCount$get2 !== void 0 ? _totalLockCount$get2 : 0) - 1, 0));
if (!totalLockCount.get(BODY_LOCK_CLASS)) {
document.body.classList.remove(BODY_LOCK_CLASS);
}
}
};
var init = function init() {
return shouldLock() && lock();
};
var destroy = function destroy() {
return shouldLock() && unlock();
};
vue.onMounted(function () {
init();
vue.nextTick(function () {
mounted = true;
});
});
vue.onActivated(function () {
if (mounted) {
init();
}
});
vue.onDeactivated(destroy);
vue.onBeforeUnmount(destroy);
vue.watch(shouldLock, function (value) {
value ? lock() : unlock();
});
}
var useTeleport = function useTeleport(attach, triggerNode) {
var to = isFunction(attach) ? vue.computed(attach) : vue.ref(attach);
var innerTriggerNode = isFunction(triggerNode) ? vue.computed(triggerNode) : vue.ref(triggerNode);
var element = vue.ref();
var getElement = function getElement() {
element.value = getSSRAttach() || getAttach(to.value, innerTriggerNode.value);
};
vue.onMounted(function () {
return getElement();
});
vue.watch([to, innerTriggerNode], function () {
return getElement();
});
return element;
};
function ownKeys$D(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$D(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$D(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _isSlot$a(s) {
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
}
var prefix$19 = config.prefix;
var _Popup = vue.defineComponent({
name: "".concat(prefix$19, "-popup"),
components: {
TNode: TNodeComponent,
TOverlay: Overlay
},
inheritAttrs: false,
props: popupProps,
emits: ["open", "close", "opened", "closed", "visible-change", "update:visible", "update:modelValue"],
setup: function setup(props, context) {
var popupClass = usePrefixClass("popup");
var popupRef = vue.ref();
var renderTNodeContent = useContent();
var renderTNodeJSX = useTNodeJSX();
var _toRefs = vue.toRefs(props),
visible = _toRefs.visible,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(visible, modelValue, props.defaultVisible, props.onVisibleChange, "visible"),
_useVModel2 = _slicedToArray(_useVModel, 2),
currentVisible = _useVModel2[0],
setCurrentVisible = _useVModel2[1];
var wrapperVisible = vue.ref(currentVisible.value);
var innerVisible = vue.ref(currentVisible.value);
var mounted = vue.ref(!!isBrowser$1);
vue.watch(currentVisible, function (v, oldV) {
if (v) {
if (v !== oldV) {
var _props$onVisibleChang;
(_props$onVisibleChang = props.onVisibleChange) === null || _props$onVisibleChang === void 0 || _props$onVisibleChang.call(props, v, "document");
}
wrapperVisible.value = v;
if (props.destroyOnClose) {
vue.nextTick(function () {
innerVisible.value = v;
});
} else {
innerVisible.value = v;
}
} else {
innerVisible.value = v;
}
});
var rootStyles = vue.computed(function () {
var styles = {};
if (props.zIndex) {
styles.zIndex = "".concat(props.zIndex);
}
return _objectSpread$B(_objectSpread$B({}, context.attrs.style), styles);
});
var contentClasses = vue.computed(function () {
return _defineProperty$3({}, "".concat(popupClass.value, "--").concat(props.placement), true);
});
var contentTransitionName = vue.computed(function () {
var transitionName = props.transitionName,
placement = props.placement;
if (transitionName) return transitionName;
if (placement === "center") return "fade-zoom";
return "slide-".concat(placement);
});
var closeBtnNode = vue.computed(function () {
return renderTNodeJSX("closeBtn", vue.h(CloseIcon, {
size: "24px"
}));
});
var handleCloseClick = function handleCloseClick(e) {
var _props$onClose;
(_props$onClose = props.onClose) === null || _props$onClose === void 0 || _props$onClose.call(props, {
e: e
});
setCurrentVisible(false, "close-btn");
};
var handleOverlayClick = function handleOverlayClick(args) {
var _props$onClose2;
var e = args.e;
if (!props.closeOnOverlayClick) {
return;
}
(_props$onClose2 = props.onClose) === null || _props$onClose2 === void 0 || _props$onClose2.call(props, {
e: e
});
setCurrentVisible(false, "overlay");
};
var afterLeave = function afterLeave() {
var _props$onClosed;
wrapperVisible.value = false;
(_props$onClosed = props.onClosed) === null || _props$onClosed === void 0 || _props$onClosed.call(props);
};
var afterEnter = function afterEnter() {
var _props$onOpened;
return (_props$onOpened = props.onOpened) === null || _props$onOpened === void 0 ? void 0 : _props$onOpened.call(props);
};
var teleportElement = useTeleport(function () {
return props.attach;
});
vue.watch(function () {
return currentVisible.value;
}, function (val) {
if (val) {
var _props$onOpen;
(_props$onOpen = props.onOpen) === null || _props$onOpen === void 0 || _props$onOpen.call(props);
mounted.value = val;
}
});
useLockScroll(popupRef, function () {
return wrapperVisible.value && props.preventScrollThrough;
}, popupClass.value);
return function () {
var renderOverlayContent = vue.createVNode(Overlay, vue.mergeProps(props.overlayProps, {
"visible": innerVisible.value && props.showOverlay,
"onClick": handleOverlayClick
}), null);
var renderCloseBtn = closeBtnNode.value && vue.createVNode("div", {
"class": "".concat(popupClass.value, "__close"),
"onClick": handleCloseClick
}, [closeBtnNode.value]);
var renderContent = vue.createVNode(vue.Transition, {
"name": contentTransitionName.value,
"duration": props.duration,
"onAfterEnter": afterEnter,
"onAfterLeave": afterLeave
}, {
default: function _default() {
return [vue.withDirectives(vue.createVNode("div", vue.mergeProps({
"ref": popupRef
}, context.attrs, {
"class": [popupClass.value, context.attrs.class, contentClasses.value],
"style": rootStyles.value
}), [renderCloseBtn, renderTNodeContent("default", "content")]), [[vue.vShow, innerVisible.value]])];
}
});
var inner = vue.createVNode(vue.Fragment, null, [renderOverlayContent, renderContent]);
var renderPopupContent = mounted.value ? vue.createVNode(vue.Teleport, {
"to": teleportElement.value,
"disabled": !teleportElement.value
}, _isSlot$a(inner) ? inner : {
default: function _default() {
return [inner];
}
}) : inner;
return (!props.destroyOnClose || wrapperVisible.value) && renderPopupContent;
};
}
});
var Popup = withInstall(_Popup);
var props$G = {
attach: {
type: [String, Function]
},
closeOnOverlayClick: {
type: Boolean,
default: true
},
destroyOnClose: Boolean,
footer: {
type: Function
},
items: {
type: Array
},
overlayProps: {
type: Object,
default: function _default() {
return {};
}
},
placement: {
type: String,
default: "right",
validator: function validator(val) {
if (!val) return true;
return ["left", "right"].includes(val);
}
},
showOverlay: {
type: Boolean,
default: true
},
title: {
type: [String, Function]
},
visible: Boolean,
zIndex: {
type: Number
},
onClose: Function,
onItemClick: Function,
onOverlayClick: Function
};
var prefix$18 = config.prefix;
var _Drawer = vue.defineComponent({
name: "".concat(prefix$18, "-drawer"),
props: props$G,
emits: ["update:visible", "itemClick", "overlayClick"],
setup: function setup(props2, context) {
var renderTNodeJSX = useTNodeJSX();
var drawerClass = usePrefixClass("drawer");
var _toRefs = vue.toRefs(props2),
visible = _toRefs.visible,
showOverlay = _toRefs.showOverlay;
var open = vue.ref(visible.value || false);
vue.watch(open, function () {
context.emit("update:visible", open.value);
});
vue.watch(visible, function () {
open.value = visible.value;
});
var onItemClick = function onItemClick(index, item, context2) {
var _props2$onItemClick;
(_props2$onItemClick = props2.onItemClick) === null || _props2$onItemClick === void 0 || _props2$onItemClick.call(props2, index, item, context2);
};
var onVisibleChange = function onVisibleChange(visible2) {
if (showOverlay.value) {
var _props2$onOverlayClic;
(_props2$onOverlayClic = props2.onOverlayClick) === null || _props2$onOverlayClic === void 0 || _props2$onOverlayClic.call(props2, {
visible: visible2
});
}
};
var onClose = function onClose() {
var _props2$onClose;
(_props2$onClose = props2.onClose) === null || _props2$onClose === void 0 || _props2$onClose.call(props2, "overlay");
};
return function () {
var attach = props2.attach,
zIndex = props2.zIndex,
closeOnOverlayClick = props2.closeOnOverlayClick,
destroyOnClose = props2.destroyOnClose,
items = props2.items,
placement = props2.placement,
showOverlay2 = props2.showOverlay,
overlayProps = props2.overlayProps;
var renderTitleNode = function renderTitleNode() {
var titleNode = renderTNodeJSX("title");
if (!titleNode) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(drawerClass.value, "__title")
}, [titleNode]);
};
var renderFooterNode = function renderFooterNode() {
var footerNode = renderTNodeJSX("footer");
if (!footerNode) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(drawerClass.value, "__footer")
}, [footerNode]);
};
return vue.createVNode(Popup, {
"modelValue": open.value,
"onUpdate:modelValue": function onUpdateModelValue($event) {
return open.value = $event;
},
"placement": placement,
"attach": attach,
"showOverlay": showOverlay2,
"overlayProps": overlayProps,
"zIndex": zIndex,
"closeOnOverlayClick": closeOnOverlayClick,
"destroyOnClose": destroyOnClose,
"onVisibleChange": onVisibleChange,
"onClose": onClose
}, {
default: function _default() {
return [vue.createVNode("div", {
"class": "".concat(drawerClass.value)
}, [renderTitleNode(), renderTNodeJSX("default"), vue.createVNode("div", {
"class": "".concat(drawerClass.value, "__sidebar")
}, [(items || []).map(function (item, index) {
return vue.createVNode("div", {
"key": item.title,
"class": "".concat(drawerClass.value, "__sidebar-item"),
"onClick": function onClick(e) {
return onItemClick(index, item, {
e: e
});
}
}, [item.icon && vue.createVNode("span", {
"class": "".concat(drawerClass.value, "__sidebar-item-icon")
}, [item.icon(vue.h)]), vue.createVNode("div", {
"class": "".concat(drawerClass.value, "__sidebar-item-title")
}, [item.title])]);
})]), renderFooterNode()])];
}
});
};
}
});
function ownKeys$C(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$A(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$C(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$C(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var Drawer$1 = function Drawer(options) {
if (!isBrowser$1) return;
var root = document.createElement("div");
document.body.appendChild(root);
var visible = vue.ref(false);
var props = vue.ref({});
var destroyOnClose = vue.ref(false);
vue.createApp(function () {
return vue.h(_Drawer, _objectSpread$A(_objectSpread$A({}, options), {}, {
visible: visible.value,
destroyOnClose: destroyOnClose.value
}, props.value));
}).mount(root);
var handler = {
destroy: function destroy() {
destroyOnClose.value = true;
vue.nextTick(function () {
visible.value = false;
document.body.removeChild(root);
});
},
hide: function hide() {
visible.value = false;
},
show: function show() {
visible.value = true;
},
update: function update(options2) {
props.value = options2;
}
};
return handler;
};
Drawer$1.install = function (app) {
app.config.globalProperties.$drawer = Drawer$1;
};
var DrawerPlugin = Drawer$1;
var Drawer = withInstall(_Drawer);
var IndexesProps = {
current: {
type: [String, Number],
default: void 0
},
modelValue: {
type: [String, Number],
default: void 0
},
defaultCurrent: {
type: [String, Number]
},
indexList: {
type: Array
},
sticky: {
type: Boolean,
default: true
},
stickyOffset: {
type: Number,
default: 0
},
onChange: Function,
onSelect: Function
};
var prefix$17 = config.prefix;
var _Indexes = vue.defineComponent({
name: "".concat(prefix$17, "-indexes"),
props: IndexesProps,
emits: ["select", "change", "update:current"],
setup: function setup(props) {
var _toRefs = vue.toRefs(props),
current = _toRefs.current,
modelValue = _toRefs.modelValue;
var readerTNodeJSX = useTNodeJSX();
var indexesClass = usePrefixClass("indexes");
var _useVModel = useVModel(current, modelValue, props.defaultCurrent, function () {}, "current"),
_useVModel2 = _slicedToArray(_useVModel, 2),
currentIndex = _useVModel2[0],
setCurrentIndex = _useVModel2[1];
var timeOut;
var indexesRoot = vue.ref();
var parentRect = vue.ref();
var state = vue.reactive({
showSidebarTip: false,
activeSidebar: "",
children: []
});
var groupTop = [];
var indexList = vue.computed(function () {
if (!props.indexList) {
var start = "A".charCodeAt(0);
var alphabet = [];
for (var i = start, end = start + 26; i < end; i += 1) {
alphabet.push(String.fromCharCode(i));
}
return alphabet;
}
return props.indexList;
});
var setAnchorOnScroll = function setAnchorOnScroll(scrollTop) {
if (!groupTop.length) return;
var sticky = props.sticky,
stickyOffset = props.stickyOffset;
var stickyTop = stickyOffset + parentRect.value.top;
scrollTop += stickyTop;
var curIndex = groupTop.findIndex(function (group) {
return scrollTop >= group.top - group.height && scrollTop <= group.top + group.totalHeight - group.height;
});
state.activeSidebar = groupTop[0].anchor;
if (curIndex === -1) return;
state.activeSidebar = groupTop[curIndex].anchor;
var curGroup = groupTop[curIndex];
setCurrentIndex(curGroup.anchor);
if (sticky) {
var offset = curGroup.top - scrollTop;
var betwixt = offset < curGroup.height && offset > 0 && scrollTop > stickyTop;
state.children.forEach(function (child, index) {
var $el = child.$el;
var wrapperClass = "".concat(indexesClass.value, "-anchor__wrapper");
var headerClass = "".concat(indexesClass.value, "-anchor__header");
var wrapper = $el.querySelector(".".concat(wrapperClass));
var header = $el.querySelector(".".concat(headerClass));
if (index === curIndex) {
if (scrollTop - parentRect.value.top > stickyOffset) {
wrapper.classList.add("".concat(wrapperClass, "--sticky"));
} else {
wrapper.classList.remove("".concat(wrapperClass, "--sticky"));
}
wrapper.classList.add("".concat(wrapperClass, "--active"));
header.classList.add("".concat(headerClass, "--active"));
wrapper.style = "transform: translate3d(0, ".concat(betwixt ? offset : 0, "px, 0); top: ").concat(stickyTop, "px");
} else if (index + 1 === curIndex) {
wrapper.classList.add("".concat(wrapperClass, "--sticky"));
wrapper.classList.add("".concat(wrapperClass, "--active"));
header.classList.add("".concat(headerClass, "--active"));
wrapper.style = "transform: translate3d(0, ".concat(betwixt ? offset - groupTop[index].height : 0, "px, 0); top: ").concat(stickyTop, "px;");
} else {
wrapper.classList.remove("".concat(wrapperClass, "--sticky"));
wrapper.classList.remove("".concat(wrapperClass, "--active"));
header.classList.remove("".concat(headerClass, "--active"));
wrapper.style = "";
}
});
}
};
var scrollToByIndex = function scrollToByIndex(index) {
var curGroup = groupTop.find(function (item) {
return item.anchor === index;
});
if (indexesRoot.value) {
var _indexesRoot$value$sc, _indexesRoot$value, _curGroup$top;
(_indexesRoot$value$sc = (_indexesRoot$value = indexesRoot.value).scrollTo) === null || _indexesRoot$value$sc === void 0 || _indexesRoot$value$sc.call(_indexesRoot$value, 0, (_curGroup$top = curGroup.top) !== null && _curGroup$top !== void 0 ? _curGroup$top : 0);
setCurrentIndex(index);
}
};
var setActiveSidebarAndTip = function setActiveSidebarAndTip(index) {
state.activeSidebar = index;
state.showSidebarTip = true;
};
var handleSidebarItemClick = function handleSidebarItemClick(index) {
var _props$onSelect;
(_props$onSelect = props.onSelect) === null || _props$onSelect === void 0 || _props$onSelect.call(props, index);
setActiveSidebarAndTip(index);
scrollToByIndex(index);
};
var handleRootScroll = throttle(function (e) {
var _indexesRoot$value$sc2, _indexesRoot$value2;
var scrollTop = (_indexesRoot$value$sc2 = (_indexesRoot$value2 = indexesRoot.value) === null || _indexesRoot$value2 === void 0 ? void 0 : _indexesRoot$value2.scrollTop) !== null && _indexesRoot$value$sc2 !== void 0 ? _indexesRoot$value$sc2 : 0;
setAnchorOnScroll(scrollTop);
}, 1e3 / 30);
var clearSidebarTip = function clearSidebarTip() {
if (state.showSidebarTip && state.activeSidebar) {
timeOut && clearTimeout(timeOut);
timeOut = window.setTimeout(function () {
state.showSidebarTip = false;
}, 1e3);
}
};
var getAnchorsRect = function getAnchorsRect() {
return Promise.all(state.children.map(function (child) {
var $el = child.$el,
index = child.index;
var rect = $el.getBoundingClientRect();
groupTop.push({
height: rect.height,
top: rect.top - parentRect.value.top,
anchor: index,
totalHeight: 0
});
return child;
}));
};
var handleSidebarTouchmove = function handleSidebarTouchmove(event) {
preventDefault(event, false);
var touches = event.touches;
var _touches$ = touches[0],
clientX = _touches$.clientX,
clientY = _touches$.clientY;
var target = document.elementFromPoint(clientX, clientY);
if (target && target.className === "".concat(indexesClass.value, "__sidebar-item") && target instanceof HTMLElement) {
var index = target.dataset.index;
var curIndex = indexList.value.find(function (idx) {
return String(idx) === index;
});
if (curIndex !== void 0 && state.activeSidebar !== curIndex) {
setActiveSidebarAndTip(curIndex);
scrollToByIndex(curIndex);
}
}
};
var relation = function relation(child) {
child && state.children.push(child);
};
vue.watchEffect(function () {
if (state.showSidebarTip) {
clearSidebarTip();
}
});
vue.watch(function () {
return state.activeSidebar;
}, function (val, oldVal) {
if (val !== oldVal) {
var _props$onChange;
(_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, state.activeSidebar);
}
});
var init = function init() {
vue.nextTick(function () {
var _indexesRoot$value3;
parentRect.value = ((_indexesRoot$value3 = indexesRoot.value) === null || _indexesRoot$value3 === void 0 ? void 0 : _indexesRoot$value3.getBoundingClientRect()) || {
top: 0
};
getAnchorsRect().then(function () {
groupTop.forEach(function (item, index) {
var next = groupTop[index + 1];
item.totalHeight = ((next === null || next === void 0 ? void 0 : next.top) || Infinity) - item.top;
});
setAnchorOnScroll(0);
scrollToByIndex(currentIndex.value);
});
});
};
vue.onMounted(init);
vue.watch(function () {
return props.indexList;
}, init);
vue.watch(function () {
return currentIndex.value;
}, function (val) {
scrollToByIndex(val);
}, {
immediate: true
});
vue.onBeforeUnmount(function () {
timeOut && clearTimeout(timeOut);
});
vue.provide("indexesProvide", {
relation: relation
});
return function () {
return vue.createVNode("div", {
"ref": indexesRoot,
"class": indexesClass.value,
"onScroll": handleRootScroll
}, [vue.createVNode("div", {
"class": "".concat(indexesClass.value, "__sidebar")
}, [indexList.value.map(function (item) {
return vue.createVNode("div", {
"class": ["".concat(indexesClass.value, "__sidebar-item"), state.activeSidebar === item ? "".concat(indexesClass.value, "__sidebar-item--active") : ""],
"data-index": item,
"onClick": function onClick(e) {
e.preventDefault();
handleSidebarItemClick(item);
},
"onTouchmove": handleSidebarTouchmove
}, [item, state.showSidebarTip && state.activeSidebar === item && vue.createVNode("div", {
"class": "".concat(indexesClass.value, "__sidebar-tips")
}, [state.activeSidebar])]);
})]), readerTNodeJSX("default")]);
};
}
});
var indexesAnchorProps = {
index: {
type: [String, Number]
}
};
var prefix$16 = config.prefix;
var _IndexesAnchor = vue.defineComponent({
name: "".concat(prefix$16, "-indexes-anchor"),
props: indexesAnchorProps,
setup: function setup(props) {
var readerTNodeJSX = useTNodeJSX();
var indexesAnchorClass = usePrefixClass("indexes-anchor");
var instance = vue.getCurrentInstance();
var indexesProvide = vue.inject("indexesProvide", void 0);
var proxy = instance.proxy;
indexesProvide.relation(proxy);
return function () {
return vue.createVNode("div", {
"class": indexesAnchorClass.value,
"data-index": props.index
}, [vue.createVNode("div", {
"class": "".concat(indexesAnchorClass.value, "__wrapper")
}, [vue.createVNode("div", {
"class": "".concat(indexesAnchorClass.value, "__slot")
}, [readerTNodeJSX("default")]), vue.createVNode("div", {
"class": "".concat(indexesAnchorClass.value, "__header")
}, [props.index])])]);
};
}
});
var Indexes = withInstall(_Indexes);
var IndexesAnchor = withInstall(_IndexesAnchor);
var props$F = {
animation: {
type: Boolean,
default: true
},
capsule: {
type: Function
},
fixed: {
type: Boolean,
default: true
},
left: {
type: Function
},
leftArrow: Boolean,
placeholder: Boolean,
right: {
type: Function
},
safeAreaInsetTop: {
type: Boolean,
default: true
},
title: {
type: [String, Function]
},
titleMaxLength: {
type: Number
},
visible: {
type: Boolean,
default: true
},
zIndex: {
type: Number,
default: 1
},
onLeftClick: Function,
onRightClick: Function
};
var prefix$15 = config.prefix;
var _Navbar = vue.defineComponent({
name: "".concat(prefix$15, "-navbar"),
props: props$F,
emits: ["left-click", "right-click"],
setup: function setup(props2, _ref) {
var slots = _ref.slots;
var classPrefix = usePrefixClass();
var navbarClass = usePrefixClass("navbar");
var renderTNodeJSX = useTNodeJSX();
var animationSuffix = vue.computed(function () {
return props2.animation ? "-animation" : "";
});
var navClass = vue.computed(function () {
return [navbarClass.value, _defineProperty$3(_defineProperty$3({}, "".concat(navbarClass.value, "--fixed"), props2.fixed), "".concat(classPrefix.value, "-safe-area-top"), props2.safeAreaInsetTop), props2.visible ? "".concat(navbarClass.value, "--visible").concat(animationSuffix.value) : "".concat(navbarClass.value, "--hide").concat(animationSuffix.value)];
});
var styles = vue.computed(function () {
return {
zIndex: props2.zIndex
};
});
var handleLeftClick = function handleLeftClick() {
var _props2$onLeftClick;
(_props2$onLeftClick = props2.onLeftClick) === null || _props2$onLeftClick === void 0 || _props2$onLeftClick.call(props2);
};
var handleRightClick = function handleRightClick() {
var _props2$onRightClick;
(_props2$onRightClick = props2.onRightClick) === null || _props2$onRightClick === void 0 || _props2$onRightClick.call(props2);
};
return function () {
var fixed = props2.fixed,
placeholder = props2.placeholder,
titleMaxLength = props2.titleMaxLength,
title = props2.title,
leftArrow = props2.leftArrow;
var renderRight = function renderRight() {
var rightContent = renderTNodeJSX("right");
if (!rightContent) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(navbarClass.value, "__right"),
"onClick": handleRightClick
}, [rightContent]);
};
var renderLeftArrow = function renderLeftArrow() {
if (leftArrow) {
return vue.createVNode(ChevronLeftIcon, {
"class": "".concat(navbarClass.value, "__left-arrow")
}, null);
}
return null;
};
var renderCapsuleContent = function renderCapsuleContent() {
var capsuleContent = renderTNodeJSX("capsule");
if (!capsuleContent) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(navbarClass.value, "__capsule")
}, [capsuleContent]);
};
var renderLeft = function renderLeft() {
return vue.createVNode("div", {
"class": "".concat(navbarClass.value, "__left"),
"onClick": handleLeftClick
}, [renderLeftArrow(), renderTNodeJSX("left"), renderCapsuleContent()]);
};
var renderCenter = function renderCenter() {
var isStringTitle = typeof title === "string" && !slots.title;
var titleContent = renderTNodeJSX("title");
if (!titleContent) {
return null;
}
if (titleMaxLength != null && title) {
if (titleMaxLength <= 0) {
console.warn("titleMaxLength must be greater than 0");
} else {
titleContent = title.length <= titleMaxLength ? title : "".concat(title.slice(0, titleMaxLength), "...");
}
}
var finalTitle = isStringTitle ? vue.createVNode("span", {
"class": "".concat(navbarClass.value, "__center-title")
}, [titleContent]) : titleContent;
return vue.createVNode("div", {
"class": "".concat(navbarClass.value, "__center")
}, [finalTitle]);
};
var renderPlaceholder = function renderPlaceholder() {
if (fixed && placeholder) {
return vue.createVNode("div", {
"class": "".concat(navbarClass.value, "__placeholder")
}, null);
}
return null;
};
return vue.createVNode("div", {
"class": navClass.value,
"style": styles.value
}, [renderPlaceholder(), vue.createVNode("div", {
"class": "".concat(navbarClass.value, "__content")
}, [renderLeft(), renderCenter(), renderRight()])]);
};
}
});
var Navbar = withInstall(_Navbar);
var props$E = {
value: {
type: [String, Number],
default: void 0
},
modelValue: {
type: [String, Number],
default: void 0
},
defaultValue: {
type: [String, Number]
},
onChange: Function,
onClick: Function
};
function ownKeys$B(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$B(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$14 = config.prefix;
var _SideBar = vue.defineComponent({
name: "".concat(prefix$14, "-side-bar"),
props: props$E,
emits: ["update:value", "update:modelValue", "change"],
setup: function setup(props2, context) {
var renderTNodeJSX = useTNodeJSX();
var sideBarClass = usePrefixClass("side-bar");
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
currentValue = _useVModel2[0],
setCurrentValue = _useVModel2[1];
var children = vue.ref([]);
var relation = function relation(child) {
child && children.value.push(child);
};
var removeRelation = function removeRelation(child) {
children.value = children.value.filter(function (item) {
return item !== child;
});
};
var onClickItem = function onClickItem(cur, label) {
var _props2$onClick;
setCurrentValue(cur);
(_props2$onClick = props2.onClick) === null || _props2$onClick === void 0 || _props2$onClick.call(props2, cur, label);
};
vue.provide("sideBarProvide", _objectSpread$z(_objectSpread$z({}, props2), {}, {
children: children,
currentValue: currentValue,
relation: relation,
removeRelation: removeRelation,
onClickItem: onClickItem
}));
return function () {
return vue.createVNode("div", {
"class": "".concat(sideBarClass.value)
}, [renderTNodeJSX("default"), vue.createVNode("div", {
"class": "".concat(sideBarClass.value, "__padding")
}, null)]);
};
}
});
var props$D = {
badgeProps: {
type: Object
},
disabled: Boolean,
icon: {
type: Function
},
label: {
type: String,
default: ""
},
value: {
type: [String, Number]
}
};
var BadgeProps = {
color: {
type: String,
default: ""
},
content: {
type: [String, Function]
},
count: {
type: [String, Number, Function],
default: 0
},
dot: Boolean,
maxCount: {
type: Number,
default: 99
},
offset: {
type: Array
},
shape: {
type: String,
default: "circle",
validator: function validator(val) {
if (!val) return true;
return ["circle", "square", "bubble", "ribbon"].includes(val);
}
},
showZero: Boolean,
size: {
type: String,
default: "medium",
validator: function validator(val) {
if (!val) return true;
return ["medium", "large"].includes(val);
}
}
};
var prefix$13 = config.prefix;
var _Badge = vue.defineComponent({
name: "".concat(prefix$13, "-badge"),
props: BadgeProps,
setup: function setup(props) {
var renderTNodeJSX = useTNodeJSX();
var renderTNodeContent = useContent();
var badgeClass = usePrefixClass("badge");
var classPrefix = usePrefixClass();
var badgeClasses = vue.computed(function () {
return _defineProperty$3(_defineProperty$3({}, "".concat(badgeClass.value), true), "".concat(badgeClass.value, "__ribbon-outer"), props.shape === "ribbon");
});
var badgeInnerClasses = vue.computed(function () {
return _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(badgeClass.value, "--basic"), true), "".concat(badgeClass.value, "--dot"), props.dot), "".concat(badgeClass.value, "--").concat(props.size), true), "".concat(badgeClass.value, "--").concat(props.shape), true), "".concat(badgeClass.value, "--count"), !props.dot && props.count), "".concat(classPrefix.value, "-has-count"), true);
});
var isShowBadge = vue.computed(function () {
if (props.dot) {
return true;
}
var count = Number(props.count);
if (!props.showZero && count === 0) {
return false;
}
if (props.count == null) return false;
return true;
});
var hasUnit = function hasUnit(unit) {
return unit.indexOf("px") > 0 || unit.indexOf("rpx") > 0 || unit.indexOf("em") > 0 || unit.indexOf("rem") > 0 || unit.indexOf("%") > 0 || unit.indexOf("vh") > 0 || unit.indexOf("vm") > 0;
};
var badgeStyles = vue.computed(function () {
if (!props.offset) {
return {
background: props.color
};
}
var _props$offset = _slicedToArray(props.offset, 2),
_props$offset$ = _props$offset[0],
xOffset = _props$offset$ === void 0 ? 0 : _props$offset$,
_props$offset$2 = _props$offset[1],
yOffset = _props$offset$2 === void 0 ? 0 : _props$offset$2;
xOffset = hasUnit(xOffset.toString()) ? xOffset : "".concat(xOffset, "px");
yOffset = hasUnit(yOffset.toString()) ? yOffset : "".concat(yOffset, "px");
return {
background: props.color,
right: xOffset,
top: yOffset
};
});
return function () {
var readerCount = function readerCount() {
if (props.dot) return null;
if (isString(props.count) || isNumber(props.count)) {
if (props.count === 0) {
return props.showZero ? props.count : null;
}
return Number(props.count) > Number(props.maxCount) ? "".concat(props.maxCount, "+") : props.count;
}
return renderTNodeJSX("count");
};
var readerContent = function readerContent() {
var content = renderTNodeContent("default", "content");
if (typeof content === "string") {
return vue.createVNode("span", {
"class": "".concat(badgeClass.value, "__content-text")
}, [content]);
}
return content;
};
var readerBadge = function readerBadge() {
if (!isShowBadge.value) {
return null;
}
return vue.createVNode("div", {
"class": badgeInnerClasses.value,
"style": badgeStyles.value
}, [readerCount()]);
};
return vue.createVNode("div", {
"class": badgeClasses.value
}, [vue.createVNode("div", {
"class": "".concat(badgeClass.value, "__content")
}, [readerContent()]), readerBadge()]);
};
}
});
var Badge = withInstall(_Badge);
var prefix$12 = config.prefix;
var _SideBarItem = vue.defineComponent({
name: "".concat(prefix$12, "-side-bar-item"),
props: props$D,
setup: function setup(props2) {
var sideBarItemClass = usePrefixClass("side-bar-item");
var renderTNodeJSX = useTNodeJSX();
var internalInstance = vue.getCurrentInstance();
var proxy = internalInstance.proxy;
var sideBarProvide = vue.inject("sideBarProvide", void 0);
sideBarProvide.relation(proxy);
var isActive = vue.computed(function () {
return proxy.value === sideBarProvide.currentValue.value;
});
var rootClassName = vue.computed(function () {
return [sideBarItemClass.value, _defineProperty$3({}, "".concat(sideBarItemClass.value, "--active"), isActive.value), _defineProperty$3({}, "".concat(sideBarItemClass.value, "--disabled"), props2.disabled)];
});
var onClick = function onClick(e) {
if (props2.disabled) return;
sideBarProvide.onClickItem(proxy.value, props2.label);
};
vue.onUnmounted(function () {
sideBarProvide.removeRelation(proxy);
});
return function () {
var renderIconNode = function renderIconNode() {
var iconNode = renderTNodeJSX("icon");
if (!iconNode) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(sideBarItemClass.value, "__icon")
}, [iconNode]);
};
return vue.createVNode("div", {
"class": rootClassName.value,
"onClick": onClick
}, [isActive.value && vue.createVNode("div", null, [vue.createVNode("div", {
"class": "".concat(sideBarItemClass.value, "__line")
}, null), vue.createVNode("div", {
"class": "".concat(sideBarItemClass.value, "__prefix")
}, null), vue.createVNode("div", {
"class": "".concat(sideBarItemClass.value, "__suffix")
}, null)]), renderIconNode(), props2.badgeProps ? vue.createVNode(Badge, vue.mergeProps(props2.badgeProps, {
"content": props2.label
}), null) : vue.createVNode("div", null, [props2.label])]);
};
}
});
var SideBar = withInstall(_SideBar);
var SideBarItem = withInstall(_SideBarItem);
var props$C = {
current: {
type: [String, Number],
default: void 0
},
modelValue: {
type: [String, Number],
default: void 0
},
defaultCurrent: {
type: [String, Number]
},
currentStatus: {
type: String,
default: "process",
validator: function validator(val) {
if (!val) return true;
return ["default", "process", "finish", "error"].includes(val);
}
},
layout: {
type: String,
default: "horizontal",
validator: function validator(val) {
if (!val) return true;
return ["horizontal", "vertical"].includes(val);
}
},
readonly: {
type: Boolean,
default: void 0
},
sequence: {
type: String,
default: "positive",
validator: function validator(val) {
if (!val) return true;
return ["positive", "reverse"].includes(val);
}
},
theme: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "dot"].includes(val);
}
},
onChange: Function
};
function ownKeys$A(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$y(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$A(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$A(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$11 = config.prefix;
var _Steps = vue.defineComponent({
name: "".concat(prefix$11, "-steps"),
props: props$C,
emits: ["update:current", "update:modelValue", "change"],
setup: function setup(props2, context) {
var stepsClass = usePrefixClass("steps");
var baseClass = vue.computed(function () {
return [stepsClass.value, "".concat(stepsClass.value, "--").concat(props2.layout), "".concat(stepsClass.value, "--").concat(props2.sequence), _defineProperty$3({}, "".concat(stepsClass.value, "--readonly"), props2.readonly)];
});
var renderTNodeJSX = useTNodeJSX();
var _toRefs = vue.toRefs(props2),
current = _toRefs.current,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(current, modelValue, props2.defaultCurrent, props2.onChange, "current"),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerCurrent = _useVModel2[0],
setInnerCurrent = _useVModel2[1];
var state = vue.reactive({
children: []
});
var relation = function relation(child) {
child && state.children.push(child);
};
var removeRelation = function removeRelation(child) {
state.children = state.children.filter(function (item) {
return item !== child;
});
};
var onClickItem = function onClickItem(cur, prev, e) {
setInnerCurrent(cur, prev, {
e: e
});
};
vue.provide("stepsProvide", _objectSpread$y(_objectSpread$y({}, props2), {}, {
state: state,
current: innerCurrent,
relation: relation,
removeRelation: removeRelation,
onClickItem: onClickItem
}));
return function () {
var renderContent = renderTNodeJSX("default") || null;
return vue.createVNode("div", {
"class": baseClass.value
}, [renderContent]);
};
}
});
var props$B = {
content: {
type: [String, Function],
default: ""
},
icon: {
type: [Function]
},
status: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "process", "finish", "error"].includes(val);
}
},
title: {
type: [String, Function],
default: ""
},
titleRight: {
type: [String, Function],
default: ""
}
};
var prefix$10 = config.prefix;
var _StepItem = vue.defineComponent({
name: "".concat(prefix$10, "-step-item"),
props: props$B,
setup: function setup(props2, context) {
var stepItemClass = usePrefixClass("step-item");
var renderTNodeJSX = useTNodeJSX();
var internalInstance = vue.getCurrentInstance();
var proxy = internalInstance.proxy;
var stepsProvide = vue.inject("stepsProvide", void 0);
stepsProvide.relation(proxy);
var iconDefault = {
check: vue.h(CheckIcon),
close: vue.h(CloseIcon)
};
var index = vue.computed(function () {
return stepsProvide.state.children.indexOf(proxy);
});
var isLastChild = vue.computed(function () {
return index.value === (stepsProvide.sequence === "positive" ? stepsProvide.state.children.length - 1 : 0);
});
var theme = vue.computed(function () {
return stepsProvide.theme;
});
var dot = vue.computed(function () {
return theme.value === "dot";
});
var icon = vue.computed(function () {
return props2.icon || context.slots.icon;
});
var current = vue.computed(function () {
return stepsProvide.current.value || stepsProvide.defaultCurrent || 0;
});
var stepsStatus = vue.computed(function () {
return stepsProvide.currentStatus;
});
var readonly = vue.computed(function () {
return stepsProvide.readonly;
});
var currentStatus = vue.computed(function () {
var status = props2.status;
if (status !== "default") return status;
if (index.value === current.value) return stepsStatus.value;
if (index.value < current.value) return "finish";
return status;
});
var rootClassName = vue.computed(function () {
return [stepItemClass.value, "".concat(stepItemClass.value, "--").concat(stepsProvide.layout), _defineProperty$3({}, "".concat(stepItemClass.value, "--default"), readonly.value), _defineProperty$3({}, "".concat(stepItemClass.value, "--").concat(currentStatus.value), currentStatus.value)];
});
var iconWrapperClassName = vue.computed(function () {
return ["".concat(stepItemClass.value, "__anchor"), "".concat(stepItemClass.value, "__anchor--").concat(stepsProvide.layout)];
});
var dotClass = vue.computed(function () {
return ["".concat(stepItemClass.value, "__dot"), "".concat(stepItemClass.value, "__dot--").concat(currentStatus.value)];
});
var iconClassName = vue.computed(function () {
return [_defineProperty$3({}, "".concat(stepItemClass.value, "__icon"), icon.value), _defineProperty$3({}, "".concat(stepItemClass.value, "__icon--").concat(currentStatus.value), icon.value), _defineProperty$3({}, "".concat(stepItemClass.value, "__circle"), !icon.value), _defineProperty$3({}, "".concat(stepItemClass.value, "__circle--").concat(currentStatus.value), !icon.value)];
});
var contentClass = vue.computed(function () {
return ["".concat(stepItemClass.value, "__content"), "".concat(stepItemClass.value, "__content--").concat(stepsProvide.layout), _defineProperty$3({}, "".concat(stepItemClass.value, "__content--").concat(stepsProvide.layout), isLastChild.value), _defineProperty$3({}, "".concat(stepItemClass.value, "__content--last"), isLastChild.value)];
});
var tilteClass = vue.computed(function () {
return ["".concat(stepItemClass.value, "__title"), "".concat(stepItemClass.value, "__title--").concat(currentStatus.value), "".concat(stepItemClass.value, "__title--").concat(stepsProvide.layout)];
});
var descriptionClass = vue.computed(function () {
return ["".concat(stepItemClass.value, "__description"), "".concat(stepItemClass.value, "__description--").concat(currentStatus.value), "".concat(stepItemClass.value, "__description--").concat(stepsProvide.layout)];
});
var extraClass = vue.computed(function () {
return ["".concat(stepItemClass.value, "__extra"), "".concat(stepItemClass.value, "__extra--").concat(currentStatus.value), "".concat(stepItemClass.value, "__extra--").concat(stepsProvide.layout)];
});
var separatorClass = vue.computed(function () {
return [stepItemClass.value, "".concat(stepItemClass.value, "__line"), "".concat(stepItemClass.value, "__line--").concat(currentStatus.value), "".concat(stepItemClass.value, "__line--").concat(stepsProvide.sequence), "".concat(stepItemClass.value, "__line--").concat(stepsProvide.layout), "".concat(stepItemClass.value, "__line--").concat(stepsProvide.theme)];
});
var onClickIcon = function onClickIcon(e) {
if (!readonly.value) {
stepsProvide.onClickItem(index.value, current.value, e);
}
};
vue.onUnmounted(function () {
stepsProvide.removeRelation(proxy);
});
return function () {
var renderIconContent = function renderIconContent() {
if (icon.value) {
return renderTNodeJSX("icon") || null;
}
if (currentStatus.value === "error") {
return iconDefault.close;
}
if (currentStatus.value === "finish") {
return iconDefault.check;
}
return index.value + 1;
};
return vue.createVNode("div", {
"class": rootClassName.value,
"onClick": onClickIcon
}, [vue.createVNode("div", {
"class": iconWrapperClassName.value
}, [dot.value ? vue.createVNode("div", {
"class": dotClass.value
}, null) : vue.createVNode("div", {
"class": iconClassName.value
}, [renderIconContent()])]), vue.createVNode("div", {
"class": contentClass.value
}, [vue.createVNode("div", {
"class": tilteClass.value
}, [renderTNodeJSX("title"), renderTNodeJSX("titleRight")]), vue.createVNode("div", {
"class": descriptionClass.value
}, [renderTNodeJSX("content")]), vue.createVNode("div", {
"class": extraClass.value
}, [renderTNodeJSX("extra")])]), !isLastChild.value && vue.createVNode("div", {
"class": separatorClass.value
}, null)]);
};
}
});
var StepItem = withInstall(_StepItem);
var Steps = withInstall(_Steps);
var TabBarProps = {
bordered: {
type: Boolean,
default: true
},
fixed: {
type: Boolean,
default: true
},
placeholder: Boolean,
safeAreaInsetBottom: {
type: Boolean,
default: true
},
shape: {
type: String,
default: "normal",
validator: function validator(val) {
if (!val) return true;
return ["normal", "round"].includes(val);
}
},
split: {
type: Boolean,
default: true
},
theme: {
type: String,
default: "normal",
validator: function validator(val) {
if (!val) return true;
return ["normal", "tag"].includes(val);
}
},
value: {
type: [String, Number, Array],
default: void 0
},
modelValue: {
type: [String, Number, Array],
default: void 0
},
defaultValue: {
type: [String, Number, Array]
},
zIndex: {
type: Number,
default: 1
},
onChange: Function
};
function useChildSlots(childComponentName, childInSlots) {
var _recurChildren = function recurChildren(children) {
var result = [];
if (Array.isArray(children)) {
children.forEach(function (child) {
if (vue.isVNode(child)) {
var _child$component;
result.push(child);
if ((_child$component = child.component) !== null && _child$component !== void 0 && _child$component.subTree) {
result.push(child.component.subTree);
result.push.apply(result, _toConsumableArray(_recurChildren(child.component.subTree.children)));
}
if (child.children) {
result.push.apply(result, _toConsumableArray(_recurChildren(child.children)));
}
}
});
}
return result;
};
var targetChildren = [];
if (childInSlots !== void 0) {
targetChildren.push.apply(targetChildren, _toConsumableArray(_recurChildren(childInSlots)));
} else {
var _getCurrentInstance;
targetChildren.push.apply(targetChildren, _toConsumableArray(_recurChildren((_getCurrentInstance = vue.getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.subTree.children)));
}
return targetChildren.filter(function (child) {
var _child$type;
return ((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.name) === childComponentName;
});
}
function useElementHeight(target) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _options$immediate = options.immediate,
immediate = _options$immediate === void 0 ? true : _options$immediate,
_options$resizeObserv = options.resizeObserver,
resizeObserver = _options$resizeObserv === void 0 ? false : _options$resizeObserv;
var elementHeight = vue.ref(0);
var resizeObserverInstance = null;
var calculateHeight = /*#__PURE__*/function () {
var _ref = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee() {
var currentElement;
return regenerator.wrap(function (_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 1;
return vue.nextTick();
case 1:
currentElement = target.value;
if (currentElement) {
elementHeight.value = currentElement.getBoundingClientRect().height;
}
case 2:
case "end":
return _context.stop();
}
}, _callee);
}));
return function calculateHeight() {
return _ref.apply(this, arguments);
};
}();
var setupResizeObserver = function setupResizeObserver() {
if (!resizeObserver) return;
var currentElement = target.value;
if (currentElement && window.ResizeObserver) {
resizeObserverInstance = new ResizeObserver(function () {
calculateHeight();
});
resizeObserverInstance.observe(currentElement);
}
};
var cleanupResizeObserver = function cleanupResizeObserver() {
if (resizeObserverInstance) {
resizeObserverInstance.disconnect();
resizeObserverInstance = null;
}
};
vue.onMounted(function () {
if (immediate) {
calculateHeight();
}
setupResizeObserver();
});
vue.onUnmounted(function () {
cleanupResizeObserver();
});
return {
height: elementHeight,
calculateHeight: calculateHeight
};
}
function ownKeys$z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$x(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$z(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$$ = config.prefix;
var _TabBar = vue.defineComponent({
name: "".concat(prefix$$, "-tab-bar"),
props: TabBarProps,
emits: ["update:value", "update:modelValue", "change"],
setup: function setup(props, context) {
var root = vue.ref();
var tabBarClass = usePrefixClass("tab-bar");
var renderTNodeJSX = useTNodeJSX();
var _toRefs = vue.toRefs(props),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props.defaultValue, props.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
activeValue = _useVModel2[0],
setActiveValue = _useVModel2[1];
var defaultIndex = vue.ref(-1);
var itemCount = vue.ref(0);
var updateChild = function updateChild(currentValue) {
setActiveValue(currentValue);
};
var rootClass = vue.computed(function () {
return ["".concat(tabBarClass.value), _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(tabBarClass.value, "--bordered"), props.bordered), "".concat(tabBarClass.value, "--fixed"), props.fixed), "".concat(tabBarClass.value, "--safe"), props.safeAreaInsetBottom), "".concat(tabBarClass.value, "--").concat(props.shape)];
});
var styles = vue.computed(function () {
return {
zIndex: props.zIndex
};
});
var _useElementHeight = useElementHeight(root, {
immediate: props.fixed && props.placeholder
}),
tabBarHeight = _useElementHeight.height;
vue.provide("tab-bar", _objectSpread$x(_objectSpread$x({}, vue.toRefs(props)), {}, {
defaultIndex: defaultIndex,
activeValue: activeValue,
itemCount: itemCount,
updateChild: updateChild
}));
var updateItemCount = function updateItemCount(vNodes) {
if (!vNodes || !Array.isArray(vNodes)) {
itemCount.value = 0;
return;
}
var childSlots = useChildSlots("".concat(prefix$$, "-tab-bar-item"), vNodes);
itemCount.value = childSlots.length;
};
return function () {
var vNodes = context.slots.default ? context.slots.default() : [];
updateItemCount(vNodes);
var renderTabBar = vue.createVNode("div", {
"ref": root,
"role": "tablist",
"class": rootClass.value,
"style": styles.value
}, [renderTNodeJSX("default")]);
if (props.fixed && props.placeholder) {
return vue.createVNode("div", {
"class": "".concat(tabBarClass.value, "__placeholder"),
"style": {
height: "".concat(tabBarHeight.value, "px")
}
}, [renderTabBar]);
}
return renderTabBar;
};
}
});
var initName = function initName(defaultIndex) {
var _instance$props;
var index = defaultIndex;
var instance = vue.getCurrentInstance();
if (typeof (instance === null || instance === void 0 || (_instance$props = instance.props) === null || _instance$props === void 0 ? void 0 : _instance$props.value) !== "undefined") {
var _instance$props2;
return instance === null || instance === void 0 || (_instance$props2 = instance.props) === null || _instance$props2 === void 0 ? void 0 : _instance$props2.value;
}
index.value += 1;
return index.value;
};
var TabBarItemProps = {
badgeProps: {
type: Object
},
icon: {
type: Function
},
subTabBar: {
type: Array
},
value: {
type: [String, Number]
}
};
function _isSlot$9(s) {
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
}
var prefix$_ = config.prefix;
var _TabBarItem = vue.defineComponent({
name: "".concat(prefix$_, "-tab-bar-item"),
components: {
TBadge: Badge,
TViewListIcon: TViewListIcon
},
props: TabBarItemProps,
setup: function setup(props, context) {
var renderTNodeJSX = useTNodeJSX();
var renderContent = useContent();
var tabBarItemClass = usePrefixClass("tab-bar-item");
var _useConfig = useConfig("tabBar"),
t = _useConfig.t,
globalConfig = _useConfig.globalConfig;
var _inject = vue.inject("tab-bar"),
split = _inject.split,
shape = _inject.shape,
theme = _inject.theme,
defaultIndex = _inject.defaultIndex,
activeValue = _inject.activeValue,
itemCount = _inject.itemCount,
updateChild = _inject.updateChild;
var currentName = initName(defaultIndex);
var textNode = vue.ref();
var badgeProps = vue.computed(function () {
return props.badgeProps;
});
var getBadgeAriaLabel = function getBadgeAriaLabel() {
var options = badgeProps.value;
if (options !== null && options !== void 0 && options.dot || options !== null && options !== void 0 && options.count) {
var maxCount = options.maxCount || 99;
if (options.dot) {
return globalConfig.value.newsAriaLabel;
}
if (options.count === "...") {
return globalConfig.value.moreNewsAriaLabel;
}
var count = Number(options.count);
if (isNaN(count)) {
return "".concat(options.count);
}
var str1 = t(globalConfig.value.haveMoreNewsAriaLabel, {
value: maxCount
});
var str2 = t(globalConfig.value.haveNewsAriaLabel, {
value: options.count
});
return "".concat(Number(options.count) > maxCount ? str1 : str2);
}
return "TabBar";
};
vue.ref(getBadgeAriaLabel());
var iconOnly = vue.ref(false);
vue.watch(textNode, function () {
var _textNode$value;
var height = (_textNode$value = textNode.value) === null || _textNode$value === void 0 ? void 0 : _textNode$value.clientHeight;
iconOnly.value = Number(height) === 0;
});
var hasSubTabBar = vue.computed(function () {
return Array.isArray(props.subTabBar) && props.subTabBar.length > 0;
});
var isChecked = vue.computed(function () {
if (hasSubTabBar.value && Array.isArray(activeValue.value)) {
return activeValue.value.includes(currentName);
}
return currentName === activeValue.value;
});
var isSpread = vue.ref(false);
vue.watch(isChecked, function (newValue) {
if (!newValue) {
isSpread.value = false;
}
});
var crowded = vue.ref(false);
vue.watch(itemCount, function () {
crowded.value = itemCount.value > 3;
if (isChecked.value) {
isSpread.value = true;
}
});
var isToggleCurrent = vue.computed(function () {
return Array.isArray(activeValue.value) && activeValue.value[0] === currentName;
});
var toggle = function toggle() {
if (hasSubTabBar.value) {
isSpread.value = !isSpread.value;
if (!isToggleCurrent.value) {
updateChild([currentName]);
return;
}
}
updateChild(currentName);
};
var hasChildren = vue.computed(function () {
var _props$subTabBar;
return Number((_props$subTabBar = props.subTabBar) === null || _props$subTabBar === void 0 ? void 0 : _props$subTabBar.length) > 0;
});
var selectChild = function selectChild(childName) {
if (!(Array.isArray(activeValue.value) && activeValue.value[1] === childName)) {
updateChild([currentName, childName]);
}
isSpread.value = false;
};
return function () {
var iconContent = function iconContent() {
var iconSlot = renderTNodeJSX("icon");
if (!iconSlot) {
return null;
}
iconSlot === null || iconSlot === void 0 || iconSlot.forEach(function (item) {
var _item$type;
if (((_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.name) === "Icon") {
item.props.size = iconOnly.value ? "24px" : "20px";
}
});
return iconSlot;
};
var badge = function badge() {
var _slot;
var _badgeProps$value, _badgeProps$value2, _badgeProps$value3, _badgeProps$value4, _badgeProps$value5, _badgeProps$value6, _badgeProps$value7, _badgeProps$value8;
return iconContent() && vue.createVNode("div", {
"class": "".concat(tabBarItemClass.value, "__icon"),
"style": {
height: "".concat(iconOnly.value ? 24 : 20, "px")
}
}, [(_badgeProps$value = badgeProps.value) !== null && _badgeProps$value !== void 0 && _badgeProps$value.dot || (_badgeProps$value2 = badgeProps.value) !== null && _badgeProps$value2 !== void 0 && _badgeProps$value2.count ? vue.createVNode(vue.resolveComponent("t-badge"), {
"count": ((_badgeProps$value3 = badgeProps.value) === null || _badgeProps$value3 === void 0 ? void 0 : _badgeProps$value3.count) || 0,
"max-count": ((_badgeProps$value4 = badgeProps.value) === null || _badgeProps$value4 === void 0 ? void 0 : _badgeProps$value4.maxCount) || 99,
"dot": ((_badgeProps$value5 = badgeProps.value) === null || _badgeProps$value5 === void 0 ? void 0 : _badgeProps$value5.dot) || false,
"content": ((_badgeProps$value6 = badgeProps.value) === null || _badgeProps$value6 === void 0 ? void 0 : _badgeProps$value6.content) || "",
"size": ((_badgeProps$value7 = badgeProps.value) === null || _badgeProps$value7 === void 0 ? void 0 : _badgeProps$value7.size) || "medium",
"offset": ((_badgeProps$value8 = badgeProps.value) === null || _badgeProps$value8 === void 0 ? void 0 : _badgeProps$value8.offset) || [0, 0]
}, _isSlot$9(_slot = iconContent()) ? _slot : {
default: function _default() {
return [_slot];
}
}) : iconContent()]);
};
var textNodeContent = function textNodeContent() {
return vue.createVNode("div", {
"ref": textNode,
"class": _defineProperty$3(_defineProperty$3({}, "".concat(tabBarItemClass.value, "__text"), true), "".concat(tabBarItemClass.value, "__text--small"), !!iconContent())
}, [hasChildren.value && vue.createVNode(vue.resolveComponent("t-view-list-icon"), {
"size": "16",
"class": "".concat(tabBarItemClass.value, "__icon-menu")
}, null), renderContent("default", "content")]);
};
var menu = function menu() {
if (hasChildren.value && isSpread.value) {
return vue.createVNode("div", {
"role": "menu",
"class": "".concat(tabBarItemClass.value, "__spread")
}, [props.subTabBar.map(function (child, index) {
return vue.createVNode("div", {
"key": index,
"role": "tab",
"class": "".concat(tabBarItemClass.value, "__spread-item"),
"onClick": function onClick() {
return selectChild(child.value || index);
}
}, [index !== 0 && vue.createVNode("div", {
"class": "".concat(tabBarItemClass.value, "__spread-item-split")
}, null), vue.createVNode("div", {
"class": "".concat(tabBarItemClass.value, "__spread-item-text")
}, [child.label])]);
})]);
}
};
return vue.createVNode("div", {
"class": _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(tabBarItemClass.value), true), "".concat(tabBarItemClass.value, "--split"), split.value), "".concat(tabBarItemClass.value, "--crowded"), crowded.value), "".concat(tabBarItemClass.value, "--").concat(shape.value), true), "".concat(context.attrs.class || ""), true)
}, [vue.createVNode("div", {
"class": _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(tabBarItemClass.value, "__content"), true), "".concat(tabBarItemClass.value, "__content--checked"), isChecked.value), "".concat(tabBarItemClass.value, "__content--").concat(theme.value), true),
"aria-selected": (!hasChildren.value || !isSpread.value) && isChecked.value,
"aria-expanded": hasChildren.value && isSpread.value,
"role": hasChildren.value ? "button" : "tab",
"onClick": toggle
}, [badge(), textNodeContent()]), menu()]);
};
}
});
var TabBar = withInstall(_TabBar);
var TabBarItem = withInstall(_TabBarItem);
var props$A = {
animation: {
type: Object
},
bottomLineMode: {
type: String,
default: "fixed",
validator: function validator(val) {
if (!val) return true;
return ["fixed", "auto", "full"].includes(val);
}
},
list: {
type: Array
},
middle: {
type: Function
},
showBottomLine: {
type: Boolean,
default: true
},
size: {
type: String,
default: "medium",
validator: function validator(val) {
if (!val) return true;
return ["medium", "large"].includes(val);
}
},
spaceEvenly: {
type: Boolean,
default: true
},
split: {
type: Boolean,
default: true
},
sticky: Boolean,
stickyProps: {
type: Object
},
swipeable: {
type: Boolean,
default: true
},
theme: {
type: String,
default: "line",
validator: function validator(val) {
if (!val) return true;
return ["line", "tag", "card"].includes(val);
}
},
value: {
type: [String, Number],
default: void 0
},
modelValue: {
type: [String, Number],
default: void 0
},
defaultValue: {
type: [String, Number]
},
onChange: Function,
onClick: Function,
onScroll: Function
};
var props$z = {
badgeProps: {
type: Object
},
destroyOnHide: {
type: Boolean,
default: true
},
disabled: Boolean,
icon: {
type: Function
},
label: {
type: [String, Function]
},
lazy: Boolean,
panel: {
type: [String, Function]
},
value: {
type: [String, Number]
}
};
var prefix$Z = config.prefix;
var TTabNavItem = vue.defineComponent({
name: "".concat(prefix$Z, "-tab-nav"),
props: {
label: props$z.label,
icon: props$z.icon
},
setup: function setup(props) {
var renderTNodeJSX = useTNodeJSX();
var renderTNodeContent = useContent();
return function () {
return vue.createVNode("div", null, [renderTNodeJSX("icon"), renderTNodeContent("default", "label")]);
};
}
});
var StickyProps = {
container: {
type: Object
},
disabled: Boolean,
offsetTop: {
type: [String, Number],
default: 0
},
zIndex: {
type: Number,
default: 99
},
onScroll: Function
};
var prefix$Y = config.prefix;
var _Sticky = vue.defineComponent({
name: "".concat(prefix$Y, "-sticky"),
props: StickyProps,
setup: function setup(props) {
var renderTNodeJSX = useTNodeJSX();
var stickyBarClass = usePrefixClass("sticky");
var boxRef = vue.ref();
var _useElementBounding = useElementBounding(boxRef),
boxTop = _useElementBounding.top;
var contentRef = vue.ref();
var _useElementBounding2 = useElementBounding(contentRef),
contentTop = _useElementBounding2.top,
height = _useElementBounding2.height;
var stickyStyle = vue.computed(function () {
return "height:".concat(height.value, "px;");
});
var container;
var containerHeight = vue.ref(0);
var containerTop = vue.ref(0);
vue.watch(boxTop, function () {
if (props.container) {
container = document.querySelector(props.container);
var _container$getBoundin = container.getBoundingClientRect(),
top = _container$getBoundin.top,
height2 = _container$getBoundin.height;
containerHeight.value = height2;
containerTop.value = top;
}
});
var contentStyles = vue.computed(function () {
var _props$onScroll;
var styleStr = "z-index:".concat(props.zIndex, ";");
var isFixed = false;
if (props.disabled) return styleStr;
var offsetTop = Number(props.offsetTop);
if (container) {
if (containerHeight.value + containerTop.value < offsetTop + height.value) {
styleStr += "transform:translate3d(0, ".concat(containerHeight.value - height.value, "px, 0);");
} else if (boxTop.value <= offsetTop) {
styleStr += "position:fixed;top:".concat(offsetTop, "px;");
isFixed = true;
}
} else if (boxTop.value <= offsetTop) {
styleStr += "position:fixed;top:".concat(offsetTop, "px;");
isFixed = true;
}
(_props$onScroll = props.onScroll) === null || _props$onScroll === void 0 || _props$onScroll.call(props, {
scrollTop: contentTop.value,
isFixed: isFixed
});
return styleStr;
});
return function () {
return vue.createVNode("div", {
"ref": boxRef,
"class": stickyBarClass.value,
"style": stickyStyle.value
}, [vue.createVNode("div", {
"ref": contentRef,
"class": "".concat(stickyBarClass.value, "__content"),
"style": contentStyles.value
}, [renderTNodeJSX("default")])]);
};
}
});
var Sticky = withInstall(_Sticky);
function useCommonClassName() {
var _useConfig = useConfig("classPrefix"),
classPrefix = _useConfig.classPrefix;
return {
classPrefix: classPrefix,
SIZE: vue.computed(function () {
return {
small: "".concat(classPrefix.value, "-size-s"),
medium: "".concat(classPrefix.value, "-size-m"),
large: "".concat(classPrefix.value, "-size-l"),
default: "",
xs: "".concat(classPrefix.value, "-size-xs"),
xl: "".concat(classPrefix.value, "-size-xl"),
block: "".concat(classPrefix.value, "-size-full-width")
};
}),
STATUS: vue.computed(function () {
return {
loading: "".concat(classPrefix.value, "-is-loading"),
loadMore: "".concat(classPrefix.value, "-is-load-more"),
disabled: "".concat(classPrefix.value, "-is-disabled"),
focused: "".concat(classPrefix.value, "-is-focused"),
success: "".concat(classPrefix.value, "-is-success"),
error: "".concat(classPrefix.value, "-is-error"),
warning: "".concat(classPrefix.value, "-is-warning"),
selected: "".concat(classPrefix.value, "-is-selected"),
active: "".concat(classPrefix.value, "-is-active"),
checked: "".concat(classPrefix.value, "-is-checked"),
current: "".concat(classPrefix.value, "-is-current"),
hidden: "".concat(classPrefix.value, "-is-hidden"),
visible: "".concat(classPrefix.value, "-is-visible"),
expanded: "".concat(classPrefix.value, "-is-expanded"),
indeterminate: "".concat(classPrefix.value, "-is-indeterminate")
};
})
};
}
function ownKeys$y(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$w(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$y(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$y(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$X = config.prefix;
var _Tabs = vue.defineComponent({
name: "".concat(prefix$X, "-tabs"),
props: props$A,
setup: function setup(props2) {
var renderTNodeJSX = useTNodeJSX();
var tabsClass = usePrefixClass("tabs");
var _useCommonClassName = useCommonClassName(),
SIZE = _useCommonClassName.SIZE;
var stickyProps = vue.computed(function () {
return _objectSpread$w(_objectSpread$w({}, props2.stickyProps), {}, {
disabled: !props2.sticky
});
});
var activeClass = "".concat(tabsClass.value, "__item--active");
var disabledClass = "".concat(tabsClass.value, "__item--disabled");
var tabsClasses = vue.computed(function () {
return ["".concat(tabsClass.value), props2.size && SIZE.value[props2.size]];
});
var navClasses = vue.ref(["".concat(tabsClass.value, "__nav")]);
var startX = vue.ref(0);
var startY = vue.ref(0);
var endX = vue.ref(0);
var endY = vue.ref(0);
var canMove = vue.ref(true);
var tabIndex = vue.computed(function () {
var index = 0;
for (var i = 0; i < itemProps.value.length; i++) {
if (itemProps.value[i].value === currentValue.value) {
index = i;
break;
}
}
return index;
});
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
currentValue = _useVModel2[0],
setCurrentValue = _useVModel2[1];
var previousValue = vue.ref();
var itemProps = vue.computed(function () {
if (props2.list) {
return props2.list;
}
var children = renderTNodeJSX("default");
var res = [];
var _label = {};
var _handler = function handler(children2) {
children2 === null || children2 === void 0 || children2.forEach(function (child, index) {
var _child$children;
if (child.type === vue.Fragment) {
_handler(child.children);
} else {
res.push(child);
}
if ((_child$children = child.children) !== null && _child$children !== void 0 && _child$children.label) {
_label[index] = child.children.label()[0] || null;
}
});
};
_handler(children);
children = res.filter(function (child) {
return child.type.name === "".concat(prefix$X, "-tab-panel");
});
return children.map(function (item, index) {
return _objectSpread$w(_objectSpread$w({}, item.props), {}, {
label: function label() {
return _label[index] || item.props.label;
}
});
});
});
var valueList = vue.computed(function () {
return itemProps.value.map(function (v) {
return v.value;
});
});
var currentIndex = vue.computed(function () {
return valueList.value.indexOf(currentValue.value);
});
var navScroll = vue.ref();
var navWrap = vue.ref();
var navLine = vue.ref();
var lineStyle = vue.ref({
opacity: 0
});
var moveToActiveTab = function moveToActiveTab() {
if (navWrap.value && navLine.value && props2.showBottomLine) {
var tab = navWrap.value.querySelector(".".concat(activeClass));
if (!tab) return;
var line = navLine.value;
var tabInner = tab.querySelector(".".concat(prefix$X, "-badge"));
var style = {
opacity: 1
};
if (props2.bottomLineMode === "auto") {
style.width = "".concat(Number(tabInner === null || tabInner === void 0 ? void 0 : tabInner.offsetWidth), "px");
style.transform = "translateX(".concat(Number(tab === null || tab === void 0 ? void 0 : tab.offsetLeft) + Number(tabInner === null || tabInner === void 0 ? void 0 : tabInner.offsetLeft), "px)");
} else if (props2.bottomLineMode === "full") {
style.width = "".concat(Number(tab === null || tab === void 0 ? void 0 : tab.offsetWidth), "px");
style.transform = "translateX(".concat(Number(tab === null || tab === void 0 ? void 0 : tab.offsetLeft), "px)");
} else {
style.transform = "translateX(".concat(Number(tab === null || tab === void 0 ? void 0 : tab.offsetLeft) + (Number(tab === null || tab === void 0 ? void 0 : tab.offsetWidth) - Number(line === null || line === void 0 ? void 0 : line.offsetWidth)) / 2, "px)");
}
var isInit = previousValue.value === void 0;
previousValue.value = currentValue.value;
if (isInit) {
style.transitionDuration = "0s";
} else if (props2.animation) {
style.transitionDuration = "".concat(props2.animation.duration, "ms");
}
lineStyle.value = style;
}
if (navScroll.value) {
var _tab = navScroll.value.querySelector(".".concat(activeClass));
if (!_tab) return;
var tabLeft = _tab === null || _tab === void 0 ? void 0 : _tab.offsetLeft;
var tabWidth = _tab === null || _tab === void 0 ? void 0 : _tab.offsetWidth;
var navScrollWidth = navScroll.value.offsetWidth;
var scrollDistance = tabLeft - navScrollWidth / 2 + tabWidth / 2;
navScroll.value.scrollTo({
left: scrollDistance,
behavior: "smooth"
});
}
};
vue.onMounted(function () {
window.addEventListener("resize", moveToActiveTab, false);
setTimeout(function () {
moveToActiveTab();
}, 300);
});
vue.onBeforeUnmount(function () {
window.removeEventListener("resize", moveToActiveTab);
});
vue.onActivated(function () {
moveToActiveTab();
});
vue.watch(currentValue, function () {
vue.nextTick(function () {
moveToActiveTab();
});
});
vue.watch(itemProps, function () {
vue.nextTick(function () {
moveToActiveTab();
});
}, {
deep: true
});
var handleTabClick = function handleTabClick(event, item) {
var _props2$onClick;
var value2 = item.value,
disabled = item.disabled;
if (disabled || currentValue.value === value2) {
return false;
}
var label = isFunction(item.label) ? item.label(vue.h).toString() : item.label;
setCurrentValue(value2, label);
(_props2$onClick = props2.onClick) === null || _props2$onClick === void 0 || _props2$onClick.call(props2, value2, label);
vue.nextTick(function () {
moveToActiveTab();
});
};
var handlerScroll = function handlerScroll(context) {
var scrollTop = context.scrollTop,
isFixed = context.isFixed;
if (props2.stickyProps) {
var _props2$onScroll;
(_props2$onScroll = props2.onScroll) === null || _props2$onScroll === void 0 || _props2$onScroll.call(props2, scrollTop, isFixed);
}
};
var handleTouchstart = function handleTouchstart(e) {
if (!props2.swipeable) return;
canMove.value = true;
startX.value = e.targetTouches[0].clientX;
startY.value = e.targetTouches[0].clientY;
};
var handleTouchmove = function handleTouchmove(e) {
if (!props2.swipeable) return;
if (!canMove.value) return;
endX.value = e.targetTouches[0].clientX;
endY.value = e.targetTouches[0].clientY;
var dValueX = Math.abs(startX.value - endX.value);
var dValueY = Math.abs(startY.value - endY.value);
if (tabIndex.value >= 0 && tabIndex.value < itemProps.value.length) {
if (dValueX > dValueY) {
preventDefault(e, false);
if (dValueX <= 40) return;
if (startX.value > endX.value) {
if (tabIndex.value >= itemProps.value.length - 1) return;
handleTabClick(e, itemProps.value[tabIndex.value + 1]);
} else if (startX.value < endX.value) {
if (tabIndex.value <= 0) return;
handleTabClick(e, itemProps.value[tabIndex.value - 1]);
}
}
}
};
var handleTouchend = function handleTouchend() {
if (!props2.swipeable) return;
canMove.value = false;
startX.value = 0;
endX.value = 0;
startY.value = 0;
endY.value = 0;
};
vue.provide("currentValue", vue.readonly(currentValue));
var readerNav = function readerNav() {
return itemProps.value.map(function (item, index) {
var badgeProps = item["badge-props"] || item.badgeProps;
return vue.createVNode("div", {
"class": _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(tabsClass.value, "__item ").concat(tabsClass.value, "__item--top"), true), "".concat(tabsClass.value, "__item--evenly"), props2.spaceEvenly), activeClass, item.value === currentValue.value), disabledClass, item.disabled), "".concat(tabsClass.value, "__item--").concat(props2.theme), true),
"onClick": function onClick(e) {
return handleTabClick(e, item);
}
}, [vue.createVNode(Badge, badgeProps, {
default: function _default() {
return [vue.createVNode("div", {
"class": _defineProperty$3(_defineProperty$3({}, "".concat(tabsClass.value, "__item-inner ").concat(tabsClass.value, "__item-inner--").concat(props2.theme), true), "".concat(tabsClass.value, "__item-inner--active"), props2.theme === "tag" && item.value === currentValue.value)
}, [vue.createVNode(TTabNavItem, {
"label": item.label,
"icon": item.icon
}, null)])];
}
}), props2.theme === "card" && index === currentIndex.value - 1 && vue.createVNode("div", {
"class": "".concat(tabsClass.value, "__item-prefix")
}, null), props2.theme === "card" && index === currentIndex.value + 1 && vue.createVNode("div", {
"class": "".concat(tabsClass.value, "__item-suffix")
}, null)]);
});
};
return function () {
return vue.createVNode("div", {
"class": tabsClasses.value
}, [vue.createVNode(Sticky, vue.mergeProps(stickyProps.value, {
"onScroll": handlerScroll
}), {
default: function _default() {
return [vue.createVNode("div", {
"class": navClasses.value
}, [vue.createVNode("div", {
"ref": navScroll,
"class": ["".concat(tabsClass.value, "__scroll"), "".concat(tabsClass.value, "__scroll--").concat(props2.theme), _defineProperty$3({}, "".concat(tabsClass.value, "__scroll--split"), props2.split)]
}, [vue.createVNode("div", {
"ref": navWrap,
"class": "".concat(tabsClass.value, "__wrapper ").concat(tabsClass.value, "__wrapper--").concat(props2.theme)
}, [readerNav(), props2.theme === "line" && props2.showBottomLine && vue.createVNode("div", {
"ref": navLine,
"class": "".concat(tabsClass.value, "__track ").concat(tabsClass.value, "__track--top"),
"style": lineStyle.value
}, null)])])])];
}
}), renderTNodeJSX("middle"), vue.createVNode("div", {
"class": "".concat(tabsClass.value, "__content"),
"onTouchstart": handleTouchstart,
"onTouchmove": handleTouchmove,
"onTouchend": handleTouchend
}, [renderTNodeJSX("default")])]);
};
}
});
var prefix$W = config.prefix;
var name$4 = "".concat(prefix$W, "-tab-panel");
var _TabPanel = vue.defineComponent({
name: name$4,
props: props$z,
setup: function setup(props2) {
var renderTNodeContent = useContent();
var tabPanelClass = usePrefixClass("tab-panel");
var tabsClass = usePrefixClass("tabs");
var currentValue = vue.inject("currentValue");
var isActive = vue.computed(function () {
return currentValue.value === props2.value;
});
var tabPanelClasses = vue.computed(function () {
return ["".concat(tabPanelClass.value), "".concat(tabsClass.value, "__panel")];
});
var isMount = vue.ref(props2.lazy ? isActive.value : true);
vue.watch(isActive, function () {
if (isActive.value) {
if (!isMount.value) {
isMount.value = true;
}
} else if (props2.destroyOnHide) {
isMount.value = false;
}
}, {
immediate: true
});
return function () {
if (!isMount.value) return null;
return vue.withDirectives(vue.createVNode("div", {
"class": tabPanelClasses.value
}, [renderTNodeContent("default", "panel")]), [[vue.vShow, isActive.value]]);
};
}
});
var Tabs = withInstall(_Tabs);
var TabPanel = withInstall(_TabPanel);
var props$y = {
allowSameDay: Boolean,
confirmBtn: {
type: [String, Object, Function],
default: ""
},
firstDayOfWeek: {
type: Number,
default: 0
},
format: {
type: Function
},
maxDate: {
type: [Number, Date]
},
minDate: {
type: [Number, Date]
},
readonly: Boolean,
switchMode: {
type: String,
default: "none",
validator: function validator(val) {
if (!val) return true;
return ["none", "month", "year-month"].includes(val);
}
},
title: {
type: [String, Function]
},
type: {
type: String,
default: "single",
validator: function validator(val) {
if (!val) return true;
return ["single", "multiple", "range"].includes(val);
}
},
usePopup: {
type: Boolean,
default: true
},
value: {
type: [Number, Array, Date],
default: void 0
},
modelValue: {
type: [Number, Array, Date],
default: void 0
},
defaultValue: {
type: [Number, Array, Date]
},
visible: Boolean,
onChange: Function,
onClose: Function,
onConfirm: Function,
onPanelChange: Function,
onScroll: Function,
onSelect: Function
};
var props$x = {
confirmBtn: {
type: [String, Object, Function],
default: ""
},
title: {
type: [String, Function, Object]
},
onVisibleChange: Function
};
function getMonthByOffset(date, offset) {
var _date = new Date(date);
_date.setMonth(_date.getMonth() + offset);
_date.setDate(1);
return _date;
}
function getYearByOffset(date, offset) {
var _date = new Date(date);
_date.setFullYear(_date.getFullYear() + offset);
_date.setDate(1);
return _date;
}
var getPrevMonth = function getPrevMonth(date) {
return getMonthByOffset(date, -1);
};
var getNextMonth = function getNextMonth(date) {
return getMonthByOffset(date, 1);
};
var getPrevYear = function getPrevYear(date) {
return getYearByOffset(date, -1);
};
var getNextYear = function getNextYear(date) {
return getYearByOffset(date, 1);
};
var prefix$V = config.prefix;
var TCalendarTemplate = vue.defineComponent({
name: "".concat(prefix$V, "-calendar-template"),
props: props$x,
emits: ["visible-change"],
setup: function setup(_props, context) {
var renderTNodeJSX = useTNodeJSX();
var _useConfig = useConfig("calendar"),
t = _useConfig.t,
globalConfig = _useConfig.globalConfig;
var calendarClass = usePrefixClass("calendar");
var props2 = vue.inject("templateProps");
var getYearMonthDay = function getYearMonthDay(date) {
return {
year: date.getFullYear(),
month: date.getMonth(),
date: date.getDate()
};
};
var usePopup = vue.computed(function () {
return props2.usePopup;
});
var templateRef = vue.ref(null);
var valueRef = vue.ref(props2.value);
var currentMonth = vue.ref([]);
var headerButtons = vue.ref({
preYearBtnDisable: false,
prevMonthBtnDisable: false,
nextYearBtnDisable: false,
nextMonthBtnDisable: false
});
var selectedDate = vue.ref();
var firstDayOfWeek = vue.computed(function () {
return props2.firstDayOfWeek || 0;
});
var days = vue.computed(function () {
var raw = globalConfig.value.weekdays;
var ans = [];
var i = firstDayOfWeek.value % 7;
while (ans.length < 7) {
ans.push(raw[i]);
i = (i + 1) % 7;
}
return ans;
});
var today = new Date();
var minDate = vue.computed(function () {
return props2.minDate ? new Date(props2.minDate) : today;
});
var maxDate = vue.computed(function () {
return props2.maxDate ? new Date(props2.maxDate) : new Date(today.getFullYear(), today.getMonth() + 6, today.getDate());
});
var getDate = function getDate(year, month, day) {
return new Date(year, month, day);
};
var confirmBtn = vue.computed(function () {
if (typeof _props.confirmBtn === "string") {
return {
content: _props.confirmBtn || globalConfig.value.confirm
};
}
return _props.confirmBtn;
});
var getCurrentDate = function getCurrentDate() {
var _currentMonth$value;
var time = Array.isArray(selectedDate.value) ? selectedDate.value[0] : selectedDate.value;
if (((_currentMonth$value = currentMonth.value) === null || _currentMonth$value === void 0 ? void 0 : _currentMonth$value.length) > 0) {
var _currentMonth$value$, _currentMonth$value$2;
var year = (_currentMonth$value$ = currentMonth.value[0]) === null || _currentMonth$value$ === void 0 ? void 0 : _currentMonth$value$.year;
var month = (_currentMonth$value$2 = currentMonth.value[0]) === null || _currentMonth$value$2 === void 0 ? void 0 : _currentMonth$value$2.month;
time = new Date(year, month, 1).getTime();
}
return time;
};
var getCurrentYearAndMonth = function getCurrentYearAndMonth(v) {
var date = new Date(v);
return {
year: date.getFullYear(),
month: date.getMonth()
};
};
var updateActionButton = function updateActionButton(value) {
var _min = getCurrentYearAndMonth(minDate.value);
var _max = getCurrentYearAndMonth(maxDate.value);
var _minTimestamp = new Date(_min.year, _min.month, 1).getTime();
var _maxTimestamp = new Date(_max.year, _max.month, 1).getTime();
var _prevYearTimestamp = getPrevYear(value).getTime();
var _prevMonthTimestamp = getPrevMonth(value).getTime();
var _nextMonthTimestamp = getNextMonth(value).getTime();
var _nextYearTimestamp = getNextYear(value).getTime();
var preYearBtnDisable = _prevYearTimestamp < _minTimestamp || _prevMonthTimestamp < _minTimestamp;
var prevMonthBtnDisable = _prevMonthTimestamp < _minTimestamp;
var nextYearBtnDisable = _nextMonthTimestamp > _maxTimestamp || _nextYearTimestamp > _maxTimestamp;
var nextMonthBtnDisable = _nextMonthTimestamp > _maxTimestamp;
headerButtons.value = {
preYearBtnDisable: preYearBtnDisable,
prevMonthBtnDisable: prevMonthBtnDisable,
nextYearBtnDisable: nextYearBtnDisable,
nextMonthBtnDisable: nextMonthBtnDisable
};
};
var calcCurrentMonth = function calcCurrentMonth(newValue) {
var date = newValue || getCurrentDate();
var _getCurrentYearAndMon = getCurrentYearAndMonth(date),
year = _getCurrentYearAndMon.year,
month = _getCurrentYearAndMon.month;
currentMonth.value = months.value.filter(function (item) {
return item.year === year && item.month === month;
});
updateActionButton(date);
};
var handleSelect = function handleSelect(year, month, date, dateItem) {
var _props2$onSelect;
if (dateItem.type === "disabled" || props2.readonly) return;
var selected = new Date(year, month, date);
if (props2.type === "range" && Array.isArray(selectedDate.value)) {
if (selectedDate.value.length === 1) {
var firstDate = selectedDate.value[0];
if (selected.getTime() === firstDate.getTime()) {
selectedDate.value = props2.allowSameDay ? [firstDate, selected] : [selected];
} else if (selected < firstDate) {
selectedDate.value = [selected];
} else {
selectedDate.value = [firstDate, selected];
}
} else {
selectedDate.value = [selected];
}
if (!confirmBtn.value && selectedDate.value.length === 2) {
var _props2$onChange;
(_props2$onChange = props2.onChange) === null || _props2$onChange === void 0 || _props2$onChange.call(props2, selectedDate.value);
}
} else if (props2.type === "multiple") {
var newVal = _toConsumableArray(selectedDate.value);
var index = selectedDate.value.findIndex(function (item) {
return isSameDate(item, selected);
});
if (index > -1) {
newVal.splice(index, 1);
} else {
newVal.push(selected);
}
selectedDate.value = newVal;
} else {
selectedDate.value = selected;
if (!confirmBtn.value) {
var _props2$onChange2;
(_props2$onChange2 = props2.onChange) === null || _props2$onChange2 === void 0 || _props2$onChange2.call(props2, selectedDate.value);
}
}
if (props2.switchMode !== "none") {
var date2 = getCurrentDate();
calcCurrentMonth(date2);
}
(_props2$onSelect = props2.onSelect) === null || _props2$onSelect === void 0 || _props2$onSelect.call(props2, vue.toRaw(selectedDate.value));
};
var handleConfirm = function handleConfirm() {
var _props2$onClose, _props2$onConfirm;
context.emit("visible-change");
(_props2$onClose = props2.onClose) === null || _props2$onClose === void 0 || _props2$onClose.call(props2, "confirm-btn");
(_props2$onConfirm = props2.onConfirm) === null || _props2$onConfirm === void 0 || _props2$onConfirm.call(props2, vue.toRaw(selectedDate.value));
};
var handleClose = function handleClose() {
var _props2$onClose2;
context.emit("visible-change");
(_props2$onClose2 = props2.onClose) === null || _props2$onClose2 === void 0 || _props2$onClose2.call(props2, "close-btn");
};
var getMonthDates = function getMonthDates(date) {
var _getYearMonthDay = getYearMonthDay(date),
year = _getYearMonthDay.year,
month = _getYearMonthDay.month;
var firstDay = getDate(year, month, 1);
var weekdayOfFirstDay = firstDay.getDay();
var lastDate = new Date(+getDate(year, month + 1, 1) - 24 * 3600 * 1e3).getDate();
return {
year: year,
month: month,
weekdayOfFirstDay: weekdayOfFirstDay,
lastDate: lastDate
};
};
var isSameDate = function isSameDate(date1, date2) {
if (date1 instanceof Date) date1 = getYearMonthDay(date1);
if (date2 instanceof Date) date2 = getYearMonthDay(date2);
var keys = ["year", "month", "date"];
return keys.every(function (key) {
return date1[key] === date2[key];
});
};
var months = vue.computed(function () {
var ans = [];
var _getYearMonthDay2 = getYearMonthDay(minDate.value),
minYear = _getYearMonthDay2.year,
minMonth = _getYearMonthDay2.month;
var _getYearMonthDay3 = getYearMonthDay(maxDate.value),
maxYear = _getYearMonthDay3.year,
maxMonth = _getYearMonthDay3.month;
var calcType = function calcType(year, month, date) {
var curDate = new Date(year, month, date, 23, 59, 59);
if (props2.type === "single") {
if (isSameDate({
year: year,
month: month,
date: date
}, selectedDate.value)) return "selected";
}
if (props2.type === "multiple") {
var hit = selectedDate.value.some(function (item) {
return isSameDate({
year: year,
month: month,
date: date
}, item);
});
if (hit) {
return "selected";
}
}
if (props2.type === "range") {
if (Array.isArray(selectedDate.value)) {
var _selectedDate$value = _slicedToArray(selectedDate.value, 2),
startDate = _selectedDate$value[0],
endDate = _selectedDate$value[1];
var compareWithStart = startDate && isSameDate({
year: year,
month: month,
date: date
}, startDate);
var compareWithEnd = endDate && isSameDate({
year: year,
month: month,
date: date
}, endDate);
if (compareWithStart && compareWithEnd && props2.allowSameDay) return "start-end";
if (startDate && isSameDate({
year: year,
month: month,
date: date
}, startDate)) return "start";
if (endDate && isSameDate({
year: year,
month: month,
date: date
}, endDate)) return "end";
if (startDate && endDate && curDate.getTime() > startDate.getTime() && curDate.getTime() < endDate.getTime()) return "centre";
}
}
var minCurDate = new Date(year, month, date, 0, 0, 0);
if (curDate.getTime() < minDate.value.getTime() || minCurDate.getTime() > maxDate.value.getTime()) {
return "disabled";
}
return "";
};
while (minYear < maxYear || minYear === maxYear && minMonth <= maxMonth) {
var target = getMonthDates(getDate(minYear, minMonth, 1));
var months2 = [];
for (var i = 1; i <= 31; i++) {
if (i > target.lastDate) break;
var dateObj = {
date: getDate(minYear, minMonth, i),
day: i,
type: calcType(minYear, minMonth, i)
};
months2.push(props2.format ? props2.format(dateObj) : dateObj);
}
ans.push({
year: minYear,
month: minMonth,
months: months2,
weekdayOfFirstDay: target.weekdayOfFirstDay
});
var curDate = getYearMonthDay(getDate(minYear, minMonth + 1, 1));
minYear = curDate.year;
minMonth = curDate.month;
}
return ans;
});
var createDateTypeHandler = function createDateTypeHandler() {
var now = minDate.value;
var createRangePair = function createRangePair(baseDate) {
return props2.allowSameDay ? [baseDate, baseDate] : [baseDate, new Date(baseDate.getTime() + 24 * 3600 * 1e3)];
};
var convertToDateArray = function convertToDateArray(value) {
return value.map(function (item) {
return new Date(item);
});
};
return {
initialize: {
single: function single() {
return now;
},
multiple: function multiple() {
return [now];
},
range: function range() {
return createRangePair(now);
}
},
transform: {
single: function single(value) {
return new Date(value);
},
multiple: function multiple(value) {
var dates = convertToDateArray(value);
return dates.length ? dates : [now];
},
range: function range(value) {
var dates = convertToDateArray(value);
if (dates.length <= 1) {
return createRangePair(dates[0] || now);
}
return dates;
}
}
};
};
var dateTypeHandler = createDateTypeHandler();
vue.watch(valueRef, function () {
if (!valueRef.value) {
var _dateTypeHandler$init, _dateTypeHandler$init2;
selectedDate.value = (_dateTypeHandler$init = (_dateTypeHandler$init2 = dateTypeHandler.initialize)[props2.type]) === null || _dateTypeHandler$init === void 0 ? void 0 : _dateTypeHandler$init.call(_dateTypeHandler$init2);
} else {
var _dateTypeHandler$tran, _dateTypeHandler$tran2, _dateTypeHandler$tran3, _dateTypeHandler$tran4;
selectedDate.value = props2.type === "single" ? (_dateTypeHandler$tran = (_dateTypeHandler$tran2 = dateTypeHandler.transform).single) === null || _dateTypeHandler$tran === void 0 ? void 0 : _dateTypeHandler$tran.call(_dateTypeHandler$tran2, valueRef.value) : (_dateTypeHandler$tran3 = (_dateTypeHandler$tran4 = dateTypeHandler.transform)[props2.type]) === null || _dateTypeHandler$tran3 === void 0 ? void 0 : _dateTypeHandler$tran3.call(_dateTypeHandler$tran4, valueRef.value);
}
}, {
immediate: true
});
context.expose({
valueRef: valueRef,
templateRef: templateRef
});
var getDateItemClass = function getDateItemClass(dateItem) {
var className2 = "".concat(calendarClass.value, "__dates-item");
if (dateItem.type) {
className2 = "".concat(className2, " ").concat(calendarClass.value, "__dates-item--").concat(dateItem.type);
}
if (dateItem.className) {
className2 = "".concat(className2, " ").concat(dateItem.className);
}
return className2;
};
var renderCell = function renderCell(dateItem) {
var cell = renderTNodeJSX("cell", {
params: {
item: dateItem
}
});
if (cell) {
return cell;
}
var className2 = "".concat(calendarClass.value, "__dates-item-suffix");
if (dateItem.type) {
className2 = "".concat(className2, " ").concat(calendarClass.value, "__dates-item-suffix--").concat(dateItem.type);
}
return vue.createVNode(vue.Fragment, null, [dateItem.prefix && vue.createVNode("div", {
"class": "".concat(calendarClass.value, "__dates-item-prefix")
}, [dateItem.prefix]), dateItem.day, dateItem.suffix && vue.createVNode("div", {
"class": className2
}, [dateItem.suffix])]);
};
var className = usePopup.value ? "".concat(calendarClass.value, " ").concat(calendarClass.value, "--popup") : "".concat(calendarClass.value);
var renderConfirmBtn = function renderConfirmBtn() {
if (confirmBtn.value && _typeof$2(confirmBtn.value) !== "object") {
return confirmBtn.value;
}
if (confirmBtn.value && Array.isArray(confirmBtn.value)) {
return confirmBtn.value;
}
if (confirmBtn.value && _typeof$2(confirmBtn.value) === "object") {
return vue.createVNode(Button, vue.mergeProps({
"block": true,
"theme": "primary"
}, confirmBtn.value, {
"onClick": handleConfirm
}), null);
}
};
if (props2.switchMode !== "none") {
calcCurrentMonth();
}
var handleSwitchModeChange = function handleSwitchModeChange(type, disabled) {
var _props2$onPanelChange;
if (disabled) return;
var date = getCurrentDate();
var funcMap = {
"pre-year": function preYear() {
return getPrevYear(date);
},
"pre-month": function preMonth() {
return getPrevMonth(date);
},
"next-month": function nextMonth() {
return getNextMonth(date);
},
"next-year": function nextYear() {
return getNextYear(date);
}
};
var newValue = funcMap[type]();
if (!newValue) return;
var _getCurrentYearAndMon2 = getCurrentYearAndMonth(newValue),
year = _getCurrentYearAndMon2.year,
month = _getCurrentYearAndMon2.month;
(_props2$onPanelChange = props2.onPanelChange) === null || _props2$onPanelChange === void 0 || _props2$onPanelChange.call(props2, {
year: year,
month: month + 1
});
calcCurrentMonth(newValue);
};
var onScroll = function onScroll(e) {
var _props2$onScroll;
(_props2$onScroll = props2.onScroll) === null || _props2$onScroll === void 0 || _props2$onScroll.call(props2, {
e: e
});
};
return function () {
var _currentMonth$value$3, _currentMonth$value$4;
return vue.createVNode("div", {
"ref": templateRef,
"class": className
}, [vue.createVNode("div", {
"class": "".concat(calendarClass.value, "__title")
}, [_props.title || globalConfig.value.title]), usePopup.value && vue.createVNode(CloseIcon, {
"class": "".concat(calendarClass.value, "__close-btn"),
"size": "24",
"onClick": handleClose
}, null), props2.switchMode !== "none" && vue.createVNode("div", {
"class": "".concat(calendarClass.value, "-header")
}, [vue.createVNode("div", {
"class": "".concat(calendarClass.value, "-header__action")
}, [props2.switchMode === "year-month" && vue.createVNode("div", {
"class": ["".concat(calendarClass.value, "-header__icon"), _defineProperty$3({}, "".concat(calendarClass.value, "-header__icon--disabled"), headerButtons.value.preYearBtnDisable)],
"onClick": function onClick() {
return handleSwitchModeChange("pre-year", headerButtons.value.preYearBtnDisable);
}
}, [vue.createVNode(ChevronLeftDoubleIcon, null, null)]), vue.createVNode("div", {
"class": ["".concat(calendarClass.value, "-header__icon"), _defineProperty$3({}, "".concat(calendarClass.value, "-header__icon--disabled"), headerButtons.value.prevMonthBtnDisable)],
"onClick": function onClick() {
return handleSwitchModeChange("pre-month", headerButtons.value.prevMonthBtnDisable);
}
}, [vue.createVNode(ChevronLeftIcon, null, null)])]), vue.createVNode("div", {
"class": "".concat(calendarClass.value, "-header__title")
}, [t(globalConfig.value.monthTitle, {
year: (_currentMonth$value$3 = currentMonth.value[0]) === null || _currentMonth$value$3 === void 0 ? void 0 : _currentMonth$value$3.year,
month: globalConfig.value.months[(_currentMonth$value$4 = currentMonth.value[0]) === null || _currentMonth$value$4 === void 0 ? void 0 : _currentMonth$value$4.month]
})]), vue.createVNode("div", {
"class": "".concat(calendarClass.value, "-header__action")
}, [vue.createVNode("div", {
"class": ["".concat(calendarClass.value, "-header__icon"), _defineProperty$3({}, "".concat(calendarClass.value, "-header__icon--disabled"), headerButtons.value.nextMonthBtnDisable)],
"onClick": function onClick() {
return handleSwitchModeChange("next-month", headerButtons.value.nextMonthBtnDisable);
}
}, [vue.createVNode(ChevronRightIcon, null, null)]), props2.switchMode === "year-month" && vue.createVNode("div", {
"class": ["".concat(calendarClass.value, "-header__icon"), _defineProperty$3({}, "".concat(calendarClass.value, "-header__icon--disabled"), headerButtons.value.nextYearBtnDisable)],
"onClick": function onClick() {
return handleSwitchModeChange("next-year", headerButtons.value.nextYearBtnDisable);
}
}, [vue.createVNode(ChevronRightDoubleIcon, null, null)])])]), vue.createVNode("div", {
"class": "".concat(calendarClass.value, "__days")
}, [(days.value || []).map(function (item, index) {
return vue.createVNode("div", {
"key": index,
"class": "".concat(calendarClass.value, "__days-item")
}, [item]);
})]), vue.createVNode("div", {
"class": "".concat(calendarClass.value, "__months"),
"style": "overflow: auto",
"onScroll": onScroll
}, [(props2.switchMode === "none" ? months.value : currentMonth.value).map(function (item, index) {
return vue.createVNode(vue.Fragment, null, [props2.switchMode === "none" && vue.createVNode("div", {
"class": "".concat(calendarClass.value, "__month"),
"key": index
}, [t(globalConfig.value.monthTitle, {
year: item.year,
month: globalConfig.value.months[item.month]
})]), vue.createVNode("div", {
"class": "".concat(calendarClass.value, "__dates"),
"key": index
}, [new Array((item.weekdayOfFirstDay - firstDayOfWeek.value + 7) % 7).fill(0).map(function (emptyItem, index2) {
return vue.createVNode("div", {
"key": index2
}, null);
}), item.months.map(function (dateItem, dateIndex) {
return vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
"key": "".concat(index, "_").concat(dateIndex),
"class": getDateItemClass(dateItem),
"onClick": function onClick() {
return handleSelect(item.year, item.month, dateItem.day, dateItem);
}
}, [renderCell(dateItem)])]);
})])]);
})]), usePopup.value && vue.createVNode("div", {
"class": "".concat(calendarClass.value, "__footer")
}, [renderConfirmBtn()])]);
};
}
});
var prefix$U = config.prefix;
var _Calendar = vue.defineComponent({
name: "".concat(prefix$U, "-calendar"),
props: props$y,
emits: ["update:visible"],
setup: function setup(props2, context) {
var calendarClass = usePrefixClass("calendar");
var calendarTemplateRef = vue.ref();
var renderTNodeJSX = useTNodeJSX();
vue.provide("templateProps", vue.reactive(props2));
var selectedValueIntoView = function selectedValueIntoView() {
var _templateRef$querySel;
var type = props2.type === "range" ? "start" : "selected";
var templateRef = calendarTemplateRef.value.templateRef;
var scrollContainer = templateRef.querySelector(".".concat(calendarClass.value, "__months"));
var selectedDate = (_templateRef$querySel = templateRef.querySelector(".".concat(calendarClass.value, "__dates-item--").concat(type))) === null || _templateRef$querySel === void 0 || (_templateRef$querySel = _templateRef$querySel.parentNode) === null || _templateRef$querySel === void 0 ? void 0 : _templateRef$querySel.previousElementSibling;
if (selectedDate) {
scrollContainer.scrollTop = selectedDate.offsetTop - scrollContainer.offsetTop;
}
};
var onVisibleChange = function onVisibleChange(v) {
context.emit("update:visible", v);
};
var onPopupVisibleChange = function onPopupVisibleChange(v) {
if (!v) {
var _props2$onClose;
(_props2$onClose = props2.onClose) === null || _props2$onClose === void 0 || _props2$onClose.call(props2, "overlay");
} else {
vue.nextTick(function () {
selectedValueIntoView();
});
}
context.emit("update:visible", v);
};
vue.onMounted(function () {
if (!props2.usePopup) selectedValueIntoView();
});
vue.watch(function () {
return props2.value;
}, function (val) {
calendarTemplateRef.value.valueRef = val;
});
return function () {
var title = renderTNodeJSX("title");
var confirmBtn = renderTNodeJSX("confirmBtn");
return vue.createVNode("div", null, [!props2.usePopup ? vue.createVNode(TCalendarTemplate, {
"ref": calendarTemplateRef,
"title": title,
"confirmBtn": confirmBtn
}, null) : vue.createVNode(Popup, {
"visible": props2.visible,
"placement": "bottom",
"onVisibleChange": onPopupVisibleChange
}, {
default: function _default() {
return [vue.createVNode(TCalendarTemplate, {
"ref": calendarTemplateRef,
"title": title,
"confirmBtn": confirmBtn,
"onVisibleChange": onVisibleChange
}, null)];
}
})]);
};
}
});
var Calendar = withInstall(_Calendar);
var props$w = {
allowUncheck: Boolean,
block: {
type: Boolean,
default: true
},
borderless: {
type: Boolean,
default: void 0
},
checked: {
type: Boolean,
default: void 0
},
modelValue: {
type: Boolean,
default: void 0
},
defaultChecked: Boolean,
content: {
type: [String, Function]
},
contentDisabled: Boolean,
default: {
type: [String, Function]
},
disabled: {
type: Boolean,
default: void 0
},
icon: {
type: [String, Array],
default: "circle"
},
label: {
type: [String, Function]
},
maxContentRow: {
type: Number,
default: 5
},
maxLabelRow: {
type: Number,
default: 3
},
name: {
type: String,
default: ""
},
placement: {
type: String,
validator: function validator(val) {
if (!val) return true;
return ["left", "right"].includes(val);
}
},
readonly: {
type: Boolean,
default: void 0
},
value: {
type: [String, Number, Boolean],
default: void 0
},
onChange: Function
};
var prefix$T = config.prefix;
var _Radio = vue.defineComponent({
name: "".concat(prefix$T, "-radio"),
props: props$w,
emits: ["update:checked", "update:modelValue", "change"],
setup: function setup(props2, context) {
var renderTNodeContent = useContent();
var renderTNodeJSX = useTNodeJSX();
var radioClass = usePrefixClass("radio");
var _toRefs = vue.toRefs(props2),
checked = _toRefs.checked,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(checked, modelValue, props2.defaultChecked, props2.onChange, "checked"),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerChecked = _useVModel2[0],
setInnerChecked = _useVModel2[1];
var rootGroupProps = vue.inject("rootGroupProps", {});
var rootGroupValue = vue.inject("rootGroupValue", {});
var rootGroupChange = vue.inject("rootGroupChange", void 0);
var groupDisabled = vue.computed(function () {
return rootGroupProps === null || rootGroupProps === void 0 ? void 0 : rootGroupProps.disabled;
});
var isDisabled = useFormDisabled(groupDisabled);
var radioChecked = vue.computed(function () {
return (rootGroupValue === null || rootGroupValue === void 0 ? void 0 : rootGroupValue.value) !== void 0 ? props2.value === (rootGroupValue === null || rootGroupValue === void 0 ? void 0 : rootGroupValue.value) : innerChecked.value;
});
var finalBorderless = vue.computed(function () {
if (props2.borderless == null && "borderless" in rootGroupProps) return rootGroupProps.borderless;
return props2.borderless;
});
var finalPlacement = vue.computed(function () {
if (props2.placement == null && "placement" in rootGroupProps) return rootGroupProps.placement;
return props2.placement || "left";
});
var finalAllowUncheck = vue.computed(function () {
return Boolean(props2.allowUncheck || (rootGroupProps === null || rootGroupProps === void 0 ? void 0 : rootGroupProps.allowUncheck));
});
var finalReadonly = vue.computed(function () {
return Boolean(props2.readonly || (rootGroupProps === null || rootGroupProps === void 0 ? void 0 : rootGroupProps.readonly));
});
var inputProps = vue.computed(function () {
return {
name: rootGroupProps.name || props2.name,
checked: radioChecked.value,
disabled: isDisabled.value,
readonly: finalReadonly.value,
value: props2.value
};
});
var iconContent = vue.computed(function () {
var _props2$icon;
if (((_props2$icon = props2.icon) === null || _props2$icon === void 0 ? void 0 : _props2$icon.length) === 2) {
var iconIndex = radioChecked.value ? 0 : 1;
return props2.icon[iconIndex];
}
return null;
});
var radioClasses = vue.computed(function () {
return ["".concat(radioClass.value), "".concat(radioClass.value, "--").concat(finalPlacement.value), _defineProperty$3({}, "".concat(radioClass.value, "--block"), props2.block)];
});
var titleClasses = vue.computed(function () {
return ["".concat(radioClass.value, "__title"), _defineProperty$3({}, "".concat(radioClass.value, "__title--disabled"), isDisabled.value)];
});
var iconClass = vue.computed(function () {
return ["".concat(radioClass.value, "__icon"), "".concat(radioClass.value, "__icon--").concat(finalPlacement.value), _defineProperty$3(_defineProperty$3({}, "".concat(radioClass.value, "__icon--checked"), radioChecked.value), "".concat(radioClass.value, "__icon--disabled"), isDisabled.value)];
});
var radioContentChange = function radioContentChange(e) {
e.stopPropagation();
if (props2.contentDisabled) {
return;
}
radioOrgChange(e);
};
var radioOrgChange = function radioOrgChange(e) {
if (isDisabled.value || finalReadonly.value) {
return;
}
if (rootGroupChange) {
var value = finalAllowUncheck.value && radioChecked.value ? void 0 : props2.value;
rootGroupChange(value, {
e: e,
name: props2.name
});
} else {
var _value = finalAllowUncheck.value ? !radioChecked.value : true;
setInnerChecked(_value, {
e: e
});
}
};
var readerIcon = function readerIcon() {
if (radioChecked.value) {
if (props2.icon === "circle") {
return vue.createVNode(CheckCircleFilledIcon, {
"class": "".concat(radioClass.value, "__icon-wrap")
}, null);
}
if (props2.icon === "line") {
return vue.createVNode(CheckIcon, {
"class": "".concat(radioClass.value, "__icon-wrap")
}, null);
}
if (props2.icon === "dot") {
return vue.createVNode("div", {
"class": ["".concat(radioClass.value, "__icon-").concat(props2.icon), _defineProperty$3({}, "".concat(radioClass.value, "__icon-").concat(props2.icon, "--disabled"), isDisabled.value)]
}, null);
}
} else {
if (props2.icon === "circle" || props2.icon === "dot") {
return vue.createVNode("div", {
"class": ["".concat(radioClass.value, "__icon-circle"), _defineProperty$3({}, "".concat(radioClass.value, "__icon-circle--disabled"), isDisabled.value)]
}, null);
}
if (props2.icon === "line") {
return vue.createVNode("div", {
"class": "placeholder"
}, null);
}
}
};
return function () {
var label = renderTNodeContent("default", "label");
var content = renderTNodeJSX("content");
return vue.createVNode("div", {
"class": radioClasses.value,
"onClick": radioOrgChange
}, [vue.createVNode("input", vue.mergeProps({
"type": "radio",
"class": "".concat(radioClass.value, "__original")
}, inputProps.value), null), vue.createVNode("div", {
"class": iconClass.value
}, [readerIcon(), iconContent.value]), vue.createVNode("div", {
"class": "".concat(radioClass.value, "__content"),
"onClick": radioContentChange
}, [label && vue.createVNode("span", {
"class": titleClasses.value,
"style": "-webkit-line-clamp: ".concat(props2.maxLabelRow)
}, [label]), content && vue.createVNode("div", {
"class": ["".concat(radioClass.value, "__description"), _defineProperty$3({}, "".concat(radioClass.value, "__description"), isDisabled.value)],
"style": "-webkit-line-clamp: ".concat(props2.maxContentRow)
}, [content])]), !finalBorderless.value && vue.createVNode("div", {
"class": "".concat(radioClass.value, "__border ").concat(radioClass.value, "__border--").concat(finalPlacement.value)
}, null)]);
};
}
});
var props$v = {
allowUncheck: Boolean,
borderless: Boolean,
disabled: {
type: Boolean,
default: void 0
},
icon: {
type: [String, Array],
default: "circle"
},
keys: {
type: Object
},
name: {
type: String,
default: ""
},
options: {
type: Array
},
placement: {
type: String,
default: "left",
validator: function validator(val) {
if (!val) return true;
return ["left", "right"].includes(val);
}
},
readonly: {
type: Boolean,
default: void 0
},
value: {
type: [String, Number, Boolean],
default: void 0
},
modelValue: {
type: [String, Number, Boolean],
default: void 0
},
defaultValue: {
type: [String, Number, Boolean]
},
onChange: Function
};
var prefix$S = config.prefix;
var _RadioGroup = vue.defineComponent({
name: "".concat(prefix$S, "-radio-group"),
props: props$v,
setup: function setup(props2, context) {
var renderTNodeJSX = useTNodeJSX();
var radioGroupClass = usePrefixClass("radio-group");
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
groupValue = _useVModel2[0],
setGroupValue = _useVModel2[1];
var keys = vue.computed(function () {
return props2.keys;
});
var groupOptions = vue.computed(function () {
var _props2$options;
return (_props2$options = props2.options) === null || _props2$options === void 0 ? void 0 : _props2$options.map(function (option) {
var opt = option;
if (typeof option === "string" || typeof option === "number") {
opt = {
value: option,
label: option.toString()
};
}
return opt;
});
});
var handleRadioChange = function handleRadioChange(val, context2) {
if (props2.allowUncheck && val === groupValue.value) {
setGroupValue("", context2);
} else {
setGroupValue(val, context2);
}
};
vue.provide("rootGroupProps", props2);
vue.provide("rootGroupValue", groupValue);
vue.provide("rootGroupChange", handleRadioChange);
return function () {
return vue.createVNode("div", {
"class": radioGroupClass.value,
"role": "radiogroup"
}, [props2.options && groupOptions.value.map(function (opt, index) {
var _keys$value$value, _keys$value, _keys$value$disabled, _keys$value2, _keys$value$value2, _keys$value3, _keys$value$label, _keys$value4;
return vue.createVNode(_Radio, {
"name": props2.name,
"icon": props2.icon,
"checked": groupValue.value === get(opt, (_keys$value$value = (_keys$value = keys.value) === null || _keys$value === void 0 ? void 0 : _keys$value.value) !== null && _keys$value$value !== void 0 ? _keys$value$value : "value"),
"disabled": get(opt, (_keys$value$disabled = (_keys$value2 = keys.value) === null || _keys$value2 === void 0 ? void 0 : _keys$value2.disabled) !== null && _keys$value$disabled !== void 0 ? _keys$value$disabled : "disabled", props2.disabled),
"value": get(opt, (_keys$value$value2 = (_keys$value3 = keys.value) === null || _keys$value3 === void 0 ? void 0 : _keys$value3.value) !== null && _keys$value$value2 !== void 0 ? _keys$value$value2 : "value"),
"label": get(opt, (_keys$value$label = (_keys$value4 = keys.value) === null || _keys$value4 === void 0 ? void 0 : _keys$value4.label) !== null && _keys$value$label !== void 0 ? _keys$value$label : "label"),
"placement": props2.placement
}, null);
}), !props2.options && renderTNodeJSX("default")]);
};
}
});
var RadioGroup = withInstall(_RadioGroup);
var Radio = withInstall(_Radio);
var props$u = {
checkStrictly: Boolean,
closeBtn: {
type: [Boolean, Function],
default: true
},
header: {
type: Function
},
keys: {
type: Object
},
load: {
type: Function
},
middleContent: {
type: Function
},
options: {
type: Array,
default: function _default() {
return [];
}
},
overlayProps: {
type: Object,
default: function _default() {
return {};
}
},
placeholder: {
type: [String, Function],
default: "\u9009\u62E9\u9009\u9879"
},
subTitles: {
type: Array,
default: function _default() {
return [];
}
},
theme: {
type: String,
default: "step",
validator: function validator(val) {
if (!val) return true;
return ["step", "tab"].includes(val);
}
},
title: {
type: [String, Function]
},
value: {
type: [String, Number],
default: void 0
},
modelValue: {
type: [String, Number],
default: void 0
},
defaultValue: {
type: [String, Number]
},
visible: Boolean,
onChange: Function,
onClose: Function,
onPick: Function
};
var prefix$R = config.prefix;
var name$3 = "".concat(prefix$R, "-cascader");
var childrenInfo = {
value: "",
level: 0
};
var _Cascader = vue.defineComponent({
name: name$3,
props: props$u,
emits: ["update:visible", "update:value", "update:modelValue"],
setup: function setup(props2, context) {
var renderTNodeJSX = useTNodeJSX();
var cascaderClass = usePrefixClass("cascader");
var _useConfig = useConfig("cascader"),
globalConfig = _useConfig.globalConfig;
var _toRefs = vue.toRefs(props2),
visible = _toRefs.visible,
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
cascaderValue = _useVModel2[0],
setCascaderValue = _useVModel2[1];
var open = vue.ref(visible.value || false);
var placeholder = vue.computed(function () {
return props2.placeholder || globalConfig.value.placeholder;
});
var stepIndex = vue.ref(0);
var selectedIndexes = vue.reactive([]);
var selectedValue = vue.reactive([]);
var items = vue.computed(function () {
var _props2$options;
return [(_props2$options = props2.options) !== null && _props2$options !== void 0 ? _props2$options : []];
});
var steps = vue.reactive([placeholder.value]);
var initWithValue = function initWithValue() {
if (cascaderValue.value != null) {
steps.length = 0;
selectedValue.length = 0;
selectedIndexes.splice(0, selectedIndexes.length);
var path = _getIndexesByValue(props2.options, cascaderValue.value);
path === null || path === void 0 || path.forEach(function (e) {
selectedIndexes.push(e);
});
watchSelectedIndexes();
}
};
var watchSelectedIndexes = function watchSelectedIndexes() {
if (props2.options && props2.options.length > 0) {
var _items$value;
(_items$value = items.value).splice.apply(_items$value, [0, items.value.length].concat([props2.options]));
var keys = props2.keys;
for (var i = 0, size = selectedIndexes.length; i < size; i += 1) {
var _items$value$i, _keys$value, _keys$label, _keys$children;
var index = selectedIndexes[i];
var next = (_items$value$i = items.value[i]) === null || _items$value$i === void 0 ? void 0 : _items$value$i[index];
selectedValue.push(get(next, (_keys$value = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _keys$value !== void 0 ? _keys$value : "value"));
steps.push(get(next, (_keys$label = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _keys$label !== void 0 ? _keys$label : "label"));
var children = get(next, (_keys$children = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _keys$children !== void 0 ? _keys$children : "children");
if (Array.isArray(children) && children.length > 0) {
items.value.push(children);
}
}
}
if (steps.length < items.value.length) {
steps.push(placeholder.value);
}
stepIndex.value = items.value.length - 1;
};
var _getIndexesByValue = function getIndexesByValue(options, value2) {
var keys = props2.keys;
for (var i = 0; i < options.length; i++) {
var _keys$value2, _keys$children2;
if (get(options[i], (_keys$value2 = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _keys$value2 !== void 0 ? _keys$value2 : "value") === value2) {
return [i];
}
var children = get(options[i], (_keys$children2 = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _keys$children2 !== void 0 ? _keys$children2 : "children");
if (Array.isArray(children) && children.length > 0) {
var res = _getIndexesByValue(children, value2);
if (res) {
return [i].concat(_toConsumableArray(res));
}
}
}
};
var chooseSelect = function chooseSelect(value2, level, index, item) {
var _keys$label2, _keys$children3;
var keys = props2.keys;
selectedIndexes[level] = index;
selectedIndexes.length = level + 1;
selectedValue[level] = typeof value2 === "number" ? value2 : String(value2);
selectedValue.length = level + 1;
steps[level] = get(item, (_keys$label2 = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _keys$label2 !== void 0 ? _keys$label2 : "label");
var children = get(item, (_keys$children3 = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _keys$children3 !== void 0 ? _keys$children3 : "children");
if (children === true && props2.load) {
var _keys$value3, _keys$label3;
var nodeModel = {
data: item,
value: get(item, (_keys$value3 = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _keys$value3 !== void 0 ? _keys$value3 : "value"),
label: get(item, (_keys$label3 = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _keys$label3 !== void 0 ? _keys$label3 : "label")
};
props2.load(nodeModel).then(function (loadedChildren) {
items.value[level + 1] = loadedChildren;
items.value.length = level + 2;
stepIndex.value += 1;
steps[level + 1] = placeholder.value;
steps.length = level + 2;
}).catch(function (error) {
console.error("Load children failed:", error);
});
} else if (Array.isArray(children) && children.length > 0) {
items.value[level + 1] = children;
items.value.length = level + 2;
stepIndex.value += 1;
steps[level + 1] = placeholder.value;
steps.length = level + 2;
} else {
var _keys$value4;
items.value.length = level + 1;
steps.length = level + 1;
stepIndex.value = level;
setCascaderValue(get(item, (_keys$value4 = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _keys$value4 !== void 0 ? _keys$value4 : "value"), items.value.map(function (item2, index2) {
return vue.toRaw(item2 === null || item2 === void 0 ? void 0 : item2[selectedIndexes[index2]]);
}));
close("finish");
}
};
var cancelSelect = function cancelSelect(value2, level, index, item) {
var _keys$children4;
var keys = props2.keys;
selectedIndexes[level] = index;
selectedIndexes.length = level;
selectedValue.length = level;
steps[level] = String(placeholder.value);
steps[level + 1] = placeholder.value;
steps.length = level + 1;
var children = get(item, (_keys$children4 = keys === null || keys === void 0 ? void 0 : keys.children) !== null && _keys$children4 !== void 0 ? _keys$children4 : "children");
if (Array.isArray(children) && children.length > 0) {
items.value[level + 1] = children;
}
};
var handleSelect = function handleSelect(value2, level) {
var _keys$disabled;
var fromHandler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var keys = props2.keys;
var index = items.value[level].findIndex(function (item2) {
var _keys$value5;
return get(item2, (_keys$value5 = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _keys$value5 !== void 0 ? _keys$value5 : "value") === value2;
});
var item = items.value[level][index];
if (get(item, (_keys$disabled = keys === null || keys === void 0 ? void 0 : keys.disabled) !== null && _keys$disabled !== void 0 ? _keys$disabled : "disabled")) {
return;
}
if (fromHandler) {
var _props2$onPick, _keys$value6, _keys$label4;
(_props2$onPick = props2.onPick) === null || _props2$onPick === void 0 || _props2$onPick.call(props2, {
value: get(item, (_keys$value6 = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _keys$value6 !== void 0 ? _keys$value6 : "value"),
label: get(item, (_keys$label4 = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _keys$label4 !== void 0 ? _keys$label4 : "label"),
level: level,
index: index
});
}
if (props2.checkStrictly && selectedValue.includes(String(value2)) && fromHandler) {
cancelSelect(value2, level, index, item);
} else {
chooseSelect(value2, level, index, item);
}
};
var close = function close(trigger) {
var _props2$onClose;
(_props2$onClose = props2.onClose) === null || _props2$onClose === void 0 || _props2$onClose.call(props2, trigger);
};
var handleVisibleChange = function handleVisibleChange(visible2, e) {
if ((e === null || e === void 0 ? void 0 : e.trigger) !== "overlay") return;
close("overlay");
};
var updateCascaderValue = function updateCascaderValue() {
setCascaderValue(selectedValue[selectedValue.length - 1], items.value.filter(function (item, index) {
return !!item && selectedIndexes.length > index;
}).map(function (item, index) {
return vue.toRaw(item === null || item === void 0 ? void 0 : item[selectedIndexes[index]]);
}));
};
var onClose = function onClose() {
open.value = false;
close("close-btn");
};
var onCloseBtn = function onCloseBtn() {
if (props2.checkStrictly) {
updateCascaderValue();
onClose();
} else {
onClose();
}
};
var onStepClick = function onStepClick(index) {
stepIndex.value = index;
};
var onTabChange = function onTabChange(value2) {
stepIndex.value = Number(value2);
};
vue.watch(open, function () {
context.emit("update:visible", open.value);
});
vue.watch(visible, function () {
open.value = visible.value;
if (visible.value) {
initWithValue();
}
});
vue.watch(function () {
return props2.options;
}, function () {
initWithValue();
if (open.value && cascaderValue.value) {
handleSelect(childrenInfo.value, childrenInfo.level, false);
}
}, {
deep: true
});
vue.watch(placeholder, function (newValue, oldValue) {
var index = steps.indexOf(oldValue);
if (index !== -1) {
steps[index] = newValue;
}
});
vue.onMounted(function () {
initWithValue();
});
return function () {
var title = renderTNodeJSX("title") || globalConfig.value.title;
var closeBtn = renderTNodeJSX("closeBtn", {
defaultNode: vue.createVNode(CloseIcon, {
"size": "24px"
}, null)
});
var PlaceholderNode = renderTNodeJSX("placeholder");
var readerStep = function readerStep() {
return vue.createVNode("div", {
"class": "".concat(cascaderClass.value, "__steps")
}, [steps.map(function (step, index) {
return vue.createVNode("div", {
"class": "".concat(cascaderClass.value, "__step"),
"onClick": function onClick() {
onStepClick(index);
}
}, [vue.createVNode("div", {
"class": ["".concat(cascaderClass.value, "__step-dot"), _defineProperty$3(_defineProperty$3({}, "".concat(cascaderClass.value, "__step-dot--active"), step !== placeholder.value), "".concat(cascaderClass.value, "__step-dot--last"), index === steps.length - 1)]
}, null), vue.createVNode("div", {
"class": ["".concat(cascaderClass.value, "__step-label"), _defineProperty$3({}, "".concat(cascaderClass.value, "__step-label--active"), index === stepIndex.value)]
}, [PlaceholderNode && !(typeof PlaceholderNode === "string") && step === placeholder.value ? PlaceholderNode : step]), vue.createVNode(ChevronRightIcon, {
"class": "".concat(cascaderClass.value, "__step-arrow"),
"size": "22"
}, null)]);
})]);
};
var renderTabStep = function renderTabStep() {
var _steps = steps.map(function (item, index) {
return {
value: index,
label: item
};
});
return vue.createVNode(Tabs, {
"value": stepIndex.value,
"spaceEvenly": false,
"list": _steps,
"onChange": onTabChange
}, null);
};
var readerSteps = function readerSteps() {
if (steps.length === 0) {
return null;
}
if (props2.theme === "step") {
return readerStep();
}
if (open.value && props2.theme === "tab") {
return renderTabStep();
}
};
return vue.createVNode(Popup, {
"overlayProps": props2.overlayProps,
"modelValue": open.value,
"onUpdate:modelValue": function onUpdateModelValue($event) {
return open.value = $event;
},
"placement": "bottom",
"onVisibleChange": handleVisibleChange
}, {
default: function _default() {
return [vue.createVNode("div", {
"class": "".concat(cascaderClass.value)
}, [vue.createVNode("div", {
"class": "".concat(cascaderClass.value, "__title")
}, [title]), vue.createVNode("div", {
"class": "".concat(cascaderClass.value, "__close-btn"),
"onClick": onCloseBtn
}, [closeBtn]), renderTNodeJSX("header"), vue.createVNode("div", {
"class": "".concat(cascaderClass.value, "__content")
}, [readerSteps(), renderTNodeJSX("middleContent"), props2.subTitles && props2.subTitles[stepIndex.value] && vue.createVNode("div", {
"class": "".concat(cascaderClass.value, "__options-title")
}, [props2.subTitles[stepIndex.value]]), vue.createVNode("div", {
"class": "".concat(cascaderClass.value, "__options-container"),
"style": "width: ".concat(items.value.length + 1, "00vw; transform: translateX(-").concat(stepIndex.value, "00vw);")
}, [items.value.map(function (options, index) {
return vue.createVNode("div", {
"class": "".concat(cascaderClass.value, "__options")
}, [vue.createVNode(vue.Transition, {
"appear": true,
"name": "slide"
}, {
default: function _default() {
return [vue.createVNode("div", {
"class": "".concat(cascaderClass.value, "-radio-group-").concat(index)
}, [vue.createVNode(RadioGroup, {
"value": selectedValue[index] || "",
"keys": props2.keys,
"options": options,
"placement": "right",
"icon": "line",
"borderless": true,
"onChange": function onChange(value2, context2) {
handleSelect(value2, index);
}
}, null)])];
}
})]);
})])])])];
}
});
};
}
});
var Cascader = withInstall(_Cascader);
var CheckboxProps = {
block: {
type: Boolean,
default: true
},
borderless: {
type: Boolean,
default: void 0
},
checkAll: Boolean,
checked: {
type: Boolean,
default: void 0
},
modelValue: {
type: Boolean,
default: void 0
},
defaultChecked: Boolean,
content: {
type: [String, Function]
},
contentDisabled: Boolean,
default: {
type: [String, Function]
},
disabled: {
type: Boolean,
default: void 0
},
icon: {
type: [String, Boolean, Array],
default: "circle"
},
indeterminate: Boolean,
label: {
type: [String, Function]
},
maxContentRow: {
type: Number,
default: 5
},
maxLabelRow: {
type: Number,
default: 3
},
name: {
type: String,
default: ""
},
placement: {
type: String,
default: "left",
validator: function validator(val) {
if (!val) return true;
return ["left", "right"].includes(val);
}
},
readonly: {
type: Boolean,
default: void 0
},
value: {
type: [String, Number, Boolean]
},
onChange: Function
};
var prefix$Q = config.prefix;
var _Checkbox = vue.defineComponent({
name: "".concat(prefix$Q, "-checkbox"),
components: {
TNode: TNodeComponent
},
props: CheckboxProps,
emits: ["update:checked", "update:modelValue", "change"],
setup: function setup(props, context) {
var checkboxClass = usePrefixClass("checkbox");
var renderTNodeJSX = useTNodeJSX();
var renderContent = useContent();
var _toRefs = vue.toRefs(props),
checked = _toRefs.checked,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(checked, modelValue, props.defaultChecked, props.onChange, "checked"),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerChecked = _useVModel2[0],
setInnerChecked = _useVModel2[1];
var checkboxGroup = vue.inject("checkboxGroup", void 0);
var disabled = useFormDisabled(checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.disabled);
var indeterminate = vue.computed(function () {
if (props.checkAll && checkboxGroup != null) return checkboxGroup.checkAllStatus.value === "indeterminate";
return props.indeterminate;
});
var isIconArray = Array.isArray(props.icon);
var defaultCheckIcons = [vue.h(CheckCircleFilledIcon), vue.h(CircleIcon)];
var checkIcons = vue.computed(function () {
if (isIconArray && props.icon.length > 1) {
return props.icon.map(function (icon) {
return typeof icon === "string" ? vue.h("img", {
class: "".concat(checkboxClass.value, "__icon-image"),
src: icon
}) : icon;
});
}
return defaultCheckIcons;
});
var checkedIcon = vue.computed(function () {
if (props.icon === "circle" || props.icon === true) return indeterminate.value ? vue.h(MinusCircleFilledIcon) : vue.h(CheckCircleFilledIcon);
if (props.icon === "rectangle") return indeterminate.value ? vue.h(MinusRectangleFilledIcon) : vue.h(CheckRectangleFilledIcon);
if (props.icon === "line") return indeterminate.value ? vue.h(MinusIcon) : vue.h(CheckIcon);
return null;
});
var isChecked = vue.computed(function () {
if (props.checkAll) {
var checkAllStatus = checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.checkAllStatus.value;
return checkAllStatus === "checked" || checkAllStatus === "indeterminate";
}
if (checkboxGroup != null && props.value != null) {
var _checkboxGroup$checke;
return !!((_checkboxGroup$checke = checkboxGroup.checkedSet.value) !== null && _checkboxGroup$checke !== void 0 && _checkboxGroup$checke.has(props.value));
}
return innerChecked.value;
});
var isDisabled = vue.computed(function () {
if (!props.checkAll && !isChecked.value && checkboxGroup !== null && checkboxGroup !== void 0 && checkboxGroup.maxExceeded.value) {
return true;
}
return disabled.value;
});
var finalReadonly = vue.computed(function () {
return Boolean(props.readonly || (checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.readonly.value));
});
var handleChange = function handleChange(e, source) {
if (isDisabled.value || finalReadonly.value) return;
if (source === "text" && props.contentDisabled) return;
var value = !isChecked.value;
setInnerChecked(value, {
e: e
});
e.stopPropagation();
if (checkboxGroup && checkboxGroup !== null && checkboxGroup !== void 0 && checkboxGroup.onCheckedChange) {
checkboxGroup.onCheckedChange({
checked: value,
checkAll: props.checkAll,
e: e,
option: props
});
}
};
return function () {
var placement = props.placement,
block = props.block,
icon = props.icon,
maxLabelRow = props.maxLabelRow,
maxContentRow = props.maxContentRow;
var borderless = props.borderless || (checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.borderless.value);
var renderIconArray = function renderIconArray() {
if (isIconArray) {
return vue.createVNode(vue.resolveComponent("t-node"), {
"content": checkIcons.value[isChecked.value ? 0 : 1],
"class": "".concat(checkboxClass.value, "__icon-wrapper")
}, null);
}
if (isChecked.value) {
return vue.createVNode(vue.resolveComponent("t-node"), {
"content": checkedIcon.value,
"class": "".concat(checkboxClass.value, "__icon-wrapper")
}, null);
}
return vue.createVNode(vue.Fragment, null, [(icon === "circle" || icon === true || icon === "rectangle") && vue.createVNode("div", {
"class": _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(checkboxClass.value, "__icon-circle"), icon === true), "".concat(checkboxClass.value, "__icon-").concat(icon), typeof icon === "string"), "".concat(checkboxClass.value, "__icon-").concat(icon, "--disabled"), isDisabled.value)
}, null), icon === "line" && vue.createVNode("div", {
"class": "placeholder"
}, null)]);
};
var renderIconNode = function renderIconNode() {
if (!icon) {
return null;
}
return vue.createVNode("div", {
"class": _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(checkboxClass.value, "__icon"), true), "".concat(checkboxClass.value, "__icon--").concat(placement), true), "".concat(checkboxClass.value, "__icon--checked"), isChecked.value), "".concat(checkboxClass.value, "__icon--disabled"), isDisabled.value)
}, [renderIconArray()]);
};
var renderCheckBoxContent = function renderCheckBoxContent() {
var labelContent = renderContent("default", "label");
var checkboxContent = renderTNodeJSX("content");
return vue.createVNode("div", {
"class": "".concat(checkboxClass.value, "__content"),
"onClick": function onClick(event) {
event.stopPropagation();
handleChange(event, "text");
}
}, [vue.createVNode("div", {
"class": _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(checkboxClass.value, "__title"), true), "".concat(checkboxClass.value, "__title--checked"), isChecked.value), "".concat(checkboxClass.value, "__title--disabled"), isDisabled.value),
"style": {
"-webkit-line-clamp": maxLabelRow
}
}, [labelContent]), vue.createVNode("div", {
"class": _defineProperty$3(_defineProperty$3({}, "".concat(checkboxClass.value, "__description"), true), "".concat(checkboxClass.value, "__description--disabled"), isDisabled.value),
"style": {
"-webkit-line-clamp": maxContentRow
}
}, [checkboxContent])]);
};
return vue.createVNode("div", {
"class": _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(checkboxClass.value), true), "".concat(checkboxClass.value, "--").concat(placement), true), "".concat(checkboxClass.value, "--checked"), isChecked.value), "".concat(checkboxClass.value, "--block"), block),
"onClick": handleChange
}, [renderIconNode(), renderCheckBoxContent(), !borderless && vue.createVNode("div", {
"class": "".concat(checkboxClass.value, "__border ").concat(checkboxClass.value, "__border--").concat(placement)
}, null)]);
};
}
});
var props$t = {
borderless: Boolean,
disabled: {
type: Boolean,
default: void 0
},
keys: {
type: Object
},
max: {
type: Number,
default: void 0
},
name: {
type: String,
default: ""
},
options: {
type: Array
},
readonly: {
type: Boolean,
default: void 0
},
value: {
type: Array,
default: void 0
},
modelValue: {
type: Array,
default: void 0
},
defaultValue: {
type: Array,
default: function _default() {
return [];
}
},
onChange: Function
};
var logSet = /* @__PURE__ */new Set();
var log = {
warn: function warn(componentName, message) {
console.warn("TDesign ".concat(componentName, " Warn: ").concat(message));
},
warnOnce: function warnOnce(componentName, message) {
var msgContent = "TDesign ".concat(componentName, " Warn: ").concat(message);
if (logSet.has(msgContent)) return;
logSet.add(msgContent);
console.warn(msgContent);
},
error: function error(componentName, message) {
console.error("TDesign ".concat(componentName, " Error: ").concat(message));
},
errorOnce: function errorOnce(componentName, message) {
var msgContent = "TDesign ".concat(componentName, " Error: ").concat(message);
if (logSet.has(msgContent)) return;
logSet.add(msgContent);
console.error(msgContent);
},
info: function info(componentName, message) {
console.info("TDesign ".concat(componentName, " Info: ").concat(message));
}
};
function ownKeys$x(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$v(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$x(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$x(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var getOptionListBySlots = function getOptionListBySlots(nodes) {
var arr = [];
nodes === null || nodes === void 0 || nodes.forEach(function (node) {
var option = node.props;
if ((option === null || option === void 0 ? void 0 : option["check-all"]) === "" || (option === null || option === void 0 ? void 0 : option["check-all"]) === true) {
option.checkAll = true;
}
option && arr.push(option);
});
return arr;
};
var getOptions = function getOptions(props, slots) {
var _toRefs = vue.toRefs(props),
options = _toRefs.options;
var optionList = vue.ref([]);
vue.watch(options, function (options2) {
if (!options2) return [];
optionList.value = options2.map(function (item) {
var r = {};
if (_typeof$2(item) !== "object") {
r = {
label: String(item),
value: item
};
} else {
r = _objectSpread$v({}, item);
}
return r;
});
}, {
immediate: true
});
vue.onMounted(function () {
var nodes = slots.default && slots.default();
if (nodes !== void 0) {
optionList.value = getOptionListBySlots(useChildSlots("t-checkbox"));
}
});
return optionList;
};
var setCheckAllStatus = function setCheckAllStatus(optionList, innerValue, checkedSet) {
var isArray = Array.isArray;
var intersectionLen = vue.computed(function () {
var _optionList$value;
var values = (_optionList$value = optionList.value) === null || _optionList$value === void 0 ? void 0 : _optionList$value.map(function (item) {
return item.value;
});
if (isArray(innerValue.value)) {
return intersection$1(innerValue.value, values).length;
}
return 0;
});
var isAllChecked = vue.computed(function () {
if (checkedSet.value.size !== optionList.value.length - 1) {
return false;
}
return intersectionLen.value === optionList.value.length - 1;
});
var indeterminate = vue.computed(function () {
return !isAllChecked.value && intersectionLen.value < optionList.value.length && intersectionLen.value > 0;
});
return vue.computed(function () {
if (isAllChecked.value) return "checked";
if (indeterminate.value) return "indeterminate";
return "uncheck";
});
};
function ownKeys$w(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$u(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$w(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$w(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$P = config.prefix;
var _CheckboxGroup = vue.defineComponent({
name: "".concat(prefix$P, "-checkbox-group"),
components: {
Checkbox: _Checkbox
},
props: props$t,
emits: ["update:value", "update:modelValue", "change"],
setup: function setup(props2, context) {
var checkboxGroupClass = usePrefixClass("checkbox-group");
var renderTNodeJSX = useTNodeJSX();
var isArray = Array.isArray;
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerValue = _useVModel2[0],
setInnerValue = _useVModel2[1];
var keys = vue.computed(function () {
return props2.keys;
});
var optionList = getOptions(props2, context.slots);
var checkedSet = vue.computed(function () {
if (isArray(innerValue.value)) {
return new Set(innerValue.value);
}
return /* @__PURE__ */new Set();
});
var checkAllStatus = setCheckAllStatus(optionList, innerValue, checkedSet);
var maxExceeded = vue.computed(function () {
return props2.max !== void 0 && innerValue.value.length === props2.max;
});
var onCheckedChange = function onCheckedChange(p) {
var checked = p.checked,
checkAll = p.checkAll,
e = p.e;
if (checkAll) {
onCheckAllChange(checked, {
e: e
});
} else {
handleCheckboxChange(p);
}
};
var handleCheckboxChange = function handleCheckboxChange(data) {
var currentValue = data.option.value;
if (isArray(innerValue.value) || !innerValue.value) {
if (currentValue === void 0) {
return;
}
var val = innerValue.value ? _toConsumableArray(innerValue.value) : [];
if (data.checked) {
val.push(currentValue);
} else {
var i = val.indexOf(currentValue);
val.splice(i, 1);
}
setInnerValue(val, {
e: data.e,
current: data.option.value,
type: data.checked ? "check" : "uncheck"
});
} else {
log.warn("CheckboxGroup", "`value` must be an array, instead of ".concat(_typeof$2(innerValue.value)));
}
};
var getAllCheckboxValue = function getAllCheckboxValue() {
var val = /* @__PURE__ */new Set();
for (var i = 0, len = optionList.value.length; i < len; i++) {
var item = optionList.value[i];
if (item.checkAll) continue;
if (item.value === void 0) continue;
val.add(item.value);
if (maxExceeded.value) break;
}
return _toConsumableArray(val);
};
var onCheckAllChange = function onCheckAllChange(checked, context2) {
var value2 = checked ? getAllCheckboxValue() : [];
setInnerValue(value2, {
e: context2.e,
type: checked ? "check" : "uncheck",
current: void 0
});
};
vue.provide("checkboxGroup", _objectSpread$u(_objectSpread$u({}, vue.toRefs(props2)), {}, {
innerValue: innerValue,
checkAllStatus: checkAllStatus,
checkedSet: checkedSet,
maxExceeded: maxExceeded,
onCheckedChange: onCheckedChange
}));
return function () {
var checkboxNode = function checkboxNode() {
return vue.createVNode("span", null, [optionList.value.map(function (item, idx) {
var _keys$value$value, _keys$value, _keys$value$label, _keys$value2, _keys$value$value2, _keys$value3, _keys$value$disabled, _keys$value4;
return vue.createVNode(_Checkbox, vue.mergeProps(item, {
"key": "".concat(get(item, (_keys$value$value = (_keys$value = keys.value) === null || _keys$value === void 0 ? void 0 : _keys$value.value) !== null && _keys$value$value !== void 0 ? _keys$value$value : "value", "")).concat(idx),
"label": get(item, (_keys$value$label = (_keys$value2 = keys.value) === null || _keys$value2 === void 0 ? void 0 : _keys$value2.label) !== null && _keys$value$label !== void 0 ? _keys$value$label : "label", item.text || ""),
"value": get(item, (_keys$value$value2 = (_keys$value3 = keys.value) === null || _keys$value3 === void 0 ? void 0 : _keys$value3.value) !== null && _keys$value$value2 !== void 0 ? _keys$value$value2 : "value"),
"disabled": get(item, (_keys$value$disabled = (_keys$value4 = keys.value) === null || _keys$value4 === void 0 ? void 0 : _keys$value4.disabled) !== null && _keys$value$disabled !== void 0 ? _keys$value$disabled : "disabled")
}), null);
})]);
};
return vue.createVNode("div", {
"class": "".concat(checkboxGroupClass.value)
}, [!(props2.options && props2.options.length) ? renderTNodeJSX("default") : checkboxNode()]);
};
}
});
var Checkbox = withInstall(_Checkbox);
var CheckboxGroup = withInstall(_CheckboxGroup);
var props$s = {
clearable: Boolean,
enableAlpha: Boolean,
fixed: Boolean,
format: {
type: String,
default: "RGB",
validator: function validator(val) {
if (!val) return true;
return ["HEX", "HEX8", "RGB", "RGBA", "HSL", "HSLA", "HSV", "HSVA", "CMYK", "CSS"].includes(val);
}
},
swatchColors: {
type: Array,
default: void 0
},
type: {
type: String,
default: "base",
validator: function validator(val) {
if (!val) return true;
return ["base", "multiple"].includes(val);
}
},
value: {
type: String,
default: void 0
},
modelValue: {
type: String,
default: void 0
},
defaultValue: {
type: String,
default: ""
},
onChange: Function,
onPaletteBarChange: Function
};
var DEFAULT_COLOR = "#001F97";
var DEFAULT_SYSTEM_SWATCH_COLORS = ["#ECF2FE", "#D4E3FC", "#BBD3FB", "#96BBF8", "#699EF5", "#4787F0", "#266FE8", "#0052D9", "#0034B5", "#001F97", "#FDECEE", "#F9D7D9", "#F8B9BE", "#F78D94", "#F36D78", "#E34D59", "#C9353F", "#B11F26", "#951114", "#680506", "#FEF3E6", "#F9E0C7", "#F7C797", "#F2995F", "#ED7B2F", "#D35A21", "#BA431B", "#9E3610", "#842B0B", "#5A1907", "#E8F8F2", "#BCEBDC", "#85DBBE", "#48C79C", "#00A870", "#078D5C", "#067945", "#056334", "#044F2A", "#033017"];
var ALPHA_FORMAT_MAP = {
HEX: "HEX8",
RGB: "RGBA",
HSL: "HSLA",
HSV: "HSVA"
};
var getCoordinate = function getCoordinate(e, rect, isFixed) {
var _e$changedTouches;
var _ref = (e === null || e === void 0 || (_e$changedTouches = e.changedTouches) === null || _e$changedTouches === void 0 ? void 0 : _e$changedTouches[0]) || {},
pageX = _ref.pageX,
pageY = _ref.pageY,
clientY = _ref.clientY;
return {
x: Math.min(Math.max(0, pageX - rect.left), rect.width),
y: Math.min(Math.max(0, (isFixed ? clientY : pageY) - rect.top), rect.height)
};
};
var getFormatList = function getFormatList(format, color) {
var FORMAT_MAP = {
HSV: Object.values(color.getHsva()),
HSVA: Object.values(color.getHsva()),
HSL: Object.values(color.getHsla()),
HSLA: Object.values(color.getHsla()),
HSB: Object.values(color.getHsla()),
RGB: Object.values(color.getRgba()),
RGBA: Object.values(color.getRgba()),
CMYK: [].concat(_toConsumableArray(Object.values(color.getCmyk())), [0]),
HEX8: [color.hex8, 0],
CSS: [color.css, 0],
HEX: [color.hex, 0]
};
var cur = FORMAT_MAP[format];
if (cur) {
return [format, [].concat(_toConsumableArray(cur.slice(0, cur.length - 1)), ["".concat(Math.round(color.alpha * 100), "%")])];
}
return ["RGB", FORMAT_MAP.RGB];
};
var genSwatchList = function genSwatchList(prop) {
if (prop === void 0) {
return DEFAULT_SYSTEM_SWATCH_COLORS.slice(0, 10);
}
if (!prop || !prop.length) {
return [];
}
return prop;
};
var rgb2cmyk = function rgb2cmyk(red, green, blue) {
var computedC = 0;
var computedM = 0;
var computedY = 0;
var computedK = 0;
var r = parseInt("".concat(red).replace(/\s/g, ""), 10);
var g = parseInt("".concat(green).replace(/\s/g, ""), 10);
var b = parseInt("".concat(blue).replace(/\s/g, ""), 10);
if (r === 0 && g === 0 && b === 0) {
computedK = 1;
return [0, 0, 0, 1];
}
computedC = 1 - r / 255;
computedM = 1 - g / 255;
computedY = 1 - b / 255;
var minCMY = Math.min(computedC, Math.min(computedM, computedY));
computedC = (computedC - minCMY) / (1 - minCMY);
computedM = (computedM - minCMY) / (1 - minCMY);
computedY = (computedY - minCMY) / (1 - minCMY);
computedK = minCMY;
return [computedC, computedM, computedY, computedK];
};
var cmyk2rgb = function cmyk2rgb(cyan, magenta, yellow, black) {
var c = cyan / 100;
var m = magenta / 100;
var y = yellow / 100;
var k = black / 100;
c = c * (1 - k) + k;
m = m * (1 - k) + k;
y = y * (1 - k) + k;
var r = 1 - c;
var g = 1 - m;
var b = 1 - y;
r = Math.round(255 * r);
g = Math.round(255 * g);
b = Math.round(255 * b);
return {
r: r,
g: g,
b: b
};
};
var REG_CMYK_STRING = /cmyk\((\d+%?),(\d+%?),(\d+%?),(\d+%?)\)/;
var toNumber = function toNumber(str) {
return Math.max(0, Math.min(255, parseInt(str, 10)));
};
var cmykInputToColor = function cmykInputToColor(input) {
if (/cmyk/i.test(input)) {
var str = input.replace(/\s/g, "");
var match = str.match(REG_CMYK_STRING);
var c = toNumber(match[1]);
var m = toNumber(match[2]);
var y = toNumber(match[3]);
var k = toNumber(match[4]);
var _cmyk2rgb = cmyk2rgb(c, m, y, k),
r = _cmyk2rgb.r,
g = _cmyk2rgb.g,
b = _cmyk2rgb.b;
return "rgb(".concat(r, ", ").concat(g, ", ").concat(b, ")");
}
return input;
};
function _classCallCheck(a, n) {
if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
}
function _defineProperties(e, r) {
for (var t = 0; t < r.length; t++) {
var o = r[t];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);
}
}
function _createClass(e, r, t) {
return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
writable: !1
}), e;
}
// This file is autogenerated. It's used to publish ESM to npm.
function _typeof(obj) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
}, _typeof(obj);
}
// https://github.com/bgrins/TinyColor
// Brian Grinstead, MIT License
var trimLeft = /^\s+/;
var trimRight = /\s+$/;
function tinycolor(color, opts) {
color = color ? color : "";
opts = opts || {};
// If input is already a tinycolor, return itself
if (color instanceof tinycolor) {
return color;
}
// If we are called as a function, call using new instead
if (!(this instanceof tinycolor)) {
return new tinycolor(color, opts);
}
var rgb = inputToRGB(color);
this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;
this._gradientType = opts.gradientType;
// Don't let the range of [0,255] come back in [0,1].
// Potentially lose a little bit of precision here, but will fix issues where
// .5 gets interpreted as half of the total, instead of half of 1
// If it was supposed to be 128, this was already taken care of by `inputToRgb`
if (this._r < 1) this._r = Math.round(this._r);
if (this._g < 1) this._g = Math.round(this._g);
if (this._b < 1) this._b = Math.round(this._b);
this._ok = rgb.ok;
}
tinycolor.prototype = {
isDark: function isDark() {
return this.getBrightness() < 128;
},
isLight: function isLight() {
return !this.isDark();
},
isValid: function isValid() {
return this._ok;
},
getOriginalInput: function getOriginalInput() {
return this._originalInput;
},
getFormat: function getFormat() {
return this._format;
},
getAlpha: function getAlpha() {
return this._a;
},
getBrightness: function getBrightness() {
//http://www.w3.org/TR/AERT#color-contrast
var rgb = this.toRgb();
return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;
},
getLuminance: function getLuminance() {
//http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
var rgb = this.toRgb();
var RsRGB, GsRGB, BsRGB, R, G, B;
RsRGB = rgb.r / 255;
GsRGB = rgb.g / 255;
BsRGB = rgb.b / 255;
if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);
if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);
if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);
return 0.2126 * R + 0.7152 * G + 0.0722 * B;
},
setAlpha: function setAlpha(value) {
this._a = boundAlpha(value);
this._roundA = Math.round(100 * this._a) / 100;
return this;
},
toHsv: function toHsv() {
var hsv = rgbToHsv(this._r, this._g, this._b);
return {
h: hsv.h * 360,
s: hsv.s,
v: hsv.v,
a: this._a
};
},
toHsvString: function toHsvString() {
var hsv = rgbToHsv(this._r, this._g, this._b);
var h = Math.round(hsv.h * 360),
s = Math.round(hsv.s * 100),
v = Math.round(hsv.v * 100);
return this._a == 1 ? "hsv(" + h + ", " + s + "%, " + v + "%)" : "hsva(" + h + ", " + s + "%, " + v + "%, " + this._roundA + ")";
},
toHsl: function toHsl() {
var hsl = rgbToHsl(this._r, this._g, this._b);
return {
h: hsl.h * 360,
s: hsl.s,
l: hsl.l,
a: this._a
};
},
toHslString: function toHslString() {
var hsl = rgbToHsl(this._r, this._g, this._b);
var h = Math.round(hsl.h * 360),
s = Math.round(hsl.s * 100),
l = Math.round(hsl.l * 100);
return this._a == 1 ? "hsl(" + h + ", " + s + "%, " + l + "%)" : "hsla(" + h + ", " + s + "%, " + l + "%, " + this._roundA + ")";
},
toHex: function toHex(allow3Char) {
return rgbToHex(this._r, this._g, this._b, allow3Char);
},
toHexString: function toHexString(allow3Char) {
return "#" + this.toHex(allow3Char);
},
toHex8: function toHex8(allow4Char) {
return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);
},
toHex8String: function toHex8String(allow4Char) {
return "#" + this.toHex8(allow4Char);
},
toRgb: function toRgb() {
return {
r: Math.round(this._r),
g: Math.round(this._g),
b: Math.round(this._b),
a: this._a
};
},
toRgbString: function toRgbString() {
return this._a == 1 ? "rgb(" + Math.round(this._r) + ", " + Math.round(this._g) + ", " + Math.round(this._b) + ")" : "rgba(" + Math.round(this._r) + ", " + Math.round(this._g) + ", " + Math.round(this._b) + ", " + this._roundA + ")";
},
toPercentageRgb: function toPercentageRgb() {
return {
r: Math.round(bound01(this._r, 255) * 100) + "%",
g: Math.round(bound01(this._g, 255) * 100) + "%",
b: Math.round(bound01(this._b, 255) * 100) + "%",
a: this._a
};
},
toPercentageRgbString: function toPercentageRgbString() {
return this._a == 1 ? "rgb(" + Math.round(bound01(this._r, 255) * 100) + "%, " + Math.round(bound01(this._g, 255) * 100) + "%, " + Math.round(bound01(this._b, 255) * 100) + "%)" : "rgba(" + Math.round(bound01(this._r, 255) * 100) + "%, " + Math.round(bound01(this._g, 255) * 100) + "%, " + Math.round(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")";
},
toName: function toName() {
if (this._a === 0) {
return "transparent";
}
if (this._a < 1) {
return false;
}
return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;
},
toFilter: function toFilter(secondColor) {
var hex8String = "#" + rgbaToArgbHex(this._r, this._g, this._b, this._a);
var secondHex8String = hex8String;
var gradientType = this._gradientType ? "GradientType = 1, " : "";
if (secondColor) {
var s = tinycolor(secondColor);
secondHex8String = "#" + rgbaToArgbHex(s._r, s._g, s._b, s._a);
}
return "progid:DXImageTransform.Microsoft.gradient(" + gradientType + "startColorstr=" + hex8String + ",endColorstr=" + secondHex8String + ")";
},
toString: function toString(format) {
var formatSet = !!format;
format = format || this._format;
var formattedString = false;
var hasAlpha = this._a < 1 && this._a >= 0;
var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name");
if (needsAlphaFormat) {
// Special case for "transparent", all other non-alpha formats
// will return rgba when there is transparency.
if (format === "name" && this._a === 0) {
return this.toName();
}
return this.toRgbString();
}
if (format === "rgb") {
formattedString = this.toRgbString();
}
if (format === "prgb") {
formattedString = this.toPercentageRgbString();
}
if (format === "hex" || format === "hex6") {
formattedString = this.toHexString();
}
if (format === "hex3") {
formattedString = this.toHexString(true);
}
if (format === "hex4") {
formattedString = this.toHex8String(true);
}
if (format === "hex8") {
formattedString = this.toHex8String();
}
if (format === "name") {
formattedString = this.toName();
}
if (format === "hsl") {
formattedString = this.toHslString();
}
if (format === "hsv") {
formattedString = this.toHsvString();
}
return formattedString || this.toHexString();
},
clone: function clone() {
return tinycolor(this.toString());
},
_applyModification: function _applyModification(fn, args) {
var color = fn.apply(null, [this].concat([].slice.call(args)));
this._r = color._r;
this._g = color._g;
this._b = color._b;
this.setAlpha(color._a);
return this;
},
lighten: function lighten() {
return this._applyModification(_lighten, arguments);
},
brighten: function brighten() {
return this._applyModification(_brighten, arguments);
},
darken: function darken() {
return this._applyModification(_darken, arguments);
},
desaturate: function desaturate() {
return this._applyModification(_desaturate, arguments);
},
saturate: function saturate() {
return this._applyModification(_saturate, arguments);
},
greyscale: function greyscale() {
return this._applyModification(_greyscale, arguments);
},
spin: function spin() {
return this._applyModification(_spin, arguments);
},
_applyCombination: function _applyCombination(fn, args) {
return fn.apply(null, [this].concat([].slice.call(args)));
},
analogous: function analogous() {
return this._applyCombination(_analogous, arguments);
},
complement: function complement() {
return this._applyCombination(_complement, arguments);
},
monochromatic: function monochromatic() {
return this._applyCombination(_monochromatic, arguments);
},
splitcomplement: function splitcomplement() {
return this._applyCombination(_splitcomplement, arguments);
},
// Disabled until https://github.com/bgrins/TinyColor/issues/254
// polyad: function (number) {
// return this._applyCombination(polyad, [number]);
// },
triad: function triad() {
return this._applyCombination(polyad, [3]);
},
tetrad: function tetrad() {
return this._applyCombination(polyad, [4]);
}
};
// If input is an object, force 1 into "1.0" to handle ratios properly
// String input requires "1.0" as input, so 1 will be treated as 1
tinycolor.fromRatio = function (color, opts) {
if (_typeof(color) == "object") {
var newColor = {};
for (var i in color) {
if (color.hasOwnProperty(i)) {
if (i === "a") {
newColor[i] = color[i];
} else {
newColor[i] = convertToPercentage(color[i]);
}
}
}
color = newColor;
}
return tinycolor(color, opts);
};
// Given a string or object, convert that input to RGB
// Possible string inputs:
//
// "red"
// "#f00" or "f00"
// "#ff0000" or "ff0000"
// "#ff000000" or "ff000000"
// "rgb 255 0 0" or "rgb (255, 0, 0)"
// "rgb 1.0 0 0" or "rgb (1, 0, 0)"
// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1"
// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1"
// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%"
// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1"
// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%"
//
function inputToRGB(color) {
var rgb = {
r: 0,
g: 0,
b: 0
};
var a = 1;
var s = null;
var v = null;
var l = null;
var ok = false;
var format = false;
if (typeof color == "string") {
color = stringInputToObject(color);
}
if (_typeof(color) == "object") {
if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {
rgb = rgbToRgb(color.r, color.g, color.b);
ok = true;
format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb";
} else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {
s = convertToPercentage(color.s);
v = convertToPercentage(color.v);
rgb = hsvToRgb(color.h, s, v);
ok = true;
format = "hsv";
} else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {
s = convertToPercentage(color.s);
l = convertToPercentage(color.l);
rgb = hslToRgb(color.h, s, l);
ok = true;
format = "hsl";
}
if (color.hasOwnProperty("a")) {
a = color.a;
}
}
a = boundAlpha(a);
return {
ok: ok,
format: color.format || format,
r: Math.min(255, Math.max(rgb.r, 0)),
g: Math.min(255, Math.max(rgb.g, 0)),
b: Math.min(255, Math.max(rgb.b, 0)),
a: a
};
}
// Conversion Functions
// --------------------
// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:
// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>
// `rgbToRgb`
// Handle bounds / percentage checking to conform to CSS color spec
// <http://www.w3.org/TR/css3-color/>
// *Assumes:* r, g, b in [0, 255] or [0, 1]
// *Returns:* { r, g, b } in [0, 255]
function rgbToRgb(r, g, b) {
return {
r: bound01(r, 255) * 255,
g: bound01(g, 255) * 255,
b: bound01(b, 255) * 255
};
}
// `rgbToHsl`
// Converts an RGB color value to HSL.
// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]
// *Returns:* { h, s, l } in [0,1]
function rgbToHsl(r, g, b) {
r = bound01(r, 255);
g = bound01(g, 255);
b = bound01(b, 255);
var max = Math.max(r, g, b),
min = Math.min(r, g, b);
var h,
s,
l = (max + min) / 2;
if (max == min) {
h = s = 0; // achromatic
} else {
var d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch (max) {
case r:
h = (g - b) / d + (g < b ? 6 : 0);
break;
case g:
h = (b - r) / d + 2;
break;
case b:
h = (r - g) / d + 4;
break;
}
h /= 6;
}
return {
h: h,
s: s,
l: l
};
}
// `hslToRgb`
// Converts an HSL color value to RGB.
// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]
// *Returns:* { r, g, b } in the set [0, 255]
function hslToRgb(h, s, l) {
var r, g, b;
h = bound01(h, 360);
s = bound01(s, 100);
l = bound01(l, 100);
function hue2rgb(p, q, t) {
if (t < 0) t += 1;
if (t > 1) t -= 1;
if (t < 1 / 6) return p + (q - p) * 6 * t;
if (t < 1 / 2) return q;
if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
return p;
}
if (s === 0) {
r = g = b = l; // achromatic
} else {
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = hue2rgb(p, q, h + 1 / 3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1 / 3);
}
return {
r: r * 255,
g: g * 255,
b: b * 255
};
}
// `rgbToHsv`
// Converts an RGB color value to HSV
// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]
// *Returns:* { h, s, v } in [0,1]
function rgbToHsv(r, g, b) {
r = bound01(r, 255);
g = bound01(g, 255);
b = bound01(b, 255);
var max = Math.max(r, g, b),
min = Math.min(r, g, b);
var h,
s,
v = max;
var d = max - min;
s = max === 0 ? 0 : d / max;
if (max == min) {
h = 0; // achromatic
} else {
switch (max) {
case r:
h = (g - b) / d + (g < b ? 6 : 0);
break;
case g:
h = (b - r) / d + 2;
break;
case b:
h = (r - g) / d + 4;
break;
}
h /= 6;
}
return {
h: h,
s: s,
v: v
};
}
// `hsvToRgb`
// Converts an HSV color value to RGB.
// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]
// *Returns:* { r, g, b } in the set [0, 255]
function hsvToRgb(h, s, v) {
h = bound01(h, 360) * 6;
s = bound01(s, 100);
v = bound01(v, 100);
var i = Math.floor(h),
f = h - i,
p = v * (1 - s),
q = v * (1 - f * s),
t = v * (1 - (1 - f) * s),
mod = i % 6,
r = [v, q, p, p, t, v][mod],
g = [t, v, v, q, p, p][mod],
b = [p, p, t, v, v, q][mod];
return {
r: r * 255,
g: g * 255,
b: b * 255
};
}
// `rgbToHex`
// Converts an RGB color to hex
// Assumes r, g, and b are contained in the set [0, 255]
// Returns a 3 or 6 character hex
function rgbToHex(r, g, b, allow3Char) {
var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];
// Return a 3 character hex if possible
if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {
return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);
}
return hex.join("");
}
// `rgbaToHex`
// Converts an RGBA color plus alpha transparency to hex
// Assumes r, g, b are contained in the set [0, 255] and
// a in [0, 1]. Returns a 4 or 8 character rgba hex
function rgbaToHex(r, g, b, a, allow4Char) {
var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];
// Return a 4 character hex if possible
if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {
return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);
}
return hex.join("");
}
// `rgbaToArgbHex`
// Converts an RGBA color to an ARGB Hex8 string
// Rarely used, but required for "toFilter()"
function rgbaToArgbHex(r, g, b, a) {
var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];
return hex.join("");
}
// `equals`
// Can be called with any tinycolor input
tinycolor.equals = function (color1, color2) {
if (!color1 || !color2) return false;
return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();
};
tinycolor.random = function () {
return tinycolor.fromRatio({
r: Math.random(),
g: Math.random(),
b: Math.random()
});
};
// Modification Functions
// ----------------------
// Thanks to less.js for some of the basics here
// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>
function _desaturate(color, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor(color).toHsl();
hsl.s -= amount / 100;
hsl.s = clamp01(hsl.s);
return tinycolor(hsl);
}
function _saturate(color, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor(color).toHsl();
hsl.s += amount / 100;
hsl.s = clamp01(hsl.s);
return tinycolor(hsl);
}
function _greyscale(color) {
return tinycolor(color).desaturate(100);
}
function _lighten(color, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor(color).toHsl();
hsl.l += amount / 100;
hsl.l = clamp01(hsl.l);
return tinycolor(hsl);
}
function _brighten(color, amount) {
amount = amount === 0 ? 0 : amount || 10;
var rgb = tinycolor(color).toRgb();
rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));
rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));
rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));
return tinycolor(rgb);
}
function _darken(color, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor(color).toHsl();
hsl.l -= amount / 100;
hsl.l = clamp01(hsl.l);
return tinycolor(hsl);
}
// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.
// Values outside of this range will be wrapped into this range.
function _spin(color, amount) {
var hsl = tinycolor(color).toHsl();
var hue = (hsl.h + amount) % 360;
hsl.h = hue < 0 ? 360 + hue : hue;
return tinycolor(hsl);
}
// Combination Functions
// ---------------------
// Thanks to jQuery xColor for some of the ideas behind these
// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>
function _complement(color) {
var hsl = tinycolor(color).toHsl();
hsl.h = (hsl.h + 180) % 360;
return tinycolor(hsl);
}
function polyad(color, number) {
if (isNaN(number) || number <= 0) {
throw new Error("Argument to polyad must be a positive number");
}
var hsl = tinycolor(color).toHsl();
var result = [tinycolor(color)];
var step = 360 / number;
for (var i = 1; i < number; i++) {
result.push(tinycolor({
h: (hsl.h + i * step) % 360,
s: hsl.s,
l: hsl.l
}));
}
return result;
}
function _splitcomplement(color) {
var hsl = tinycolor(color).toHsl();
var h = hsl.h;
return [tinycolor(color), tinycolor({
h: (h + 72) % 360,
s: hsl.s,
l: hsl.l
}), tinycolor({
h: (h + 216) % 360,
s: hsl.s,
l: hsl.l
})];
}
function _analogous(color, results, slices) {
results = results || 6;
slices = slices || 30;
var hsl = tinycolor(color).toHsl();
var part = 360 / slices;
var ret = [tinycolor(color)];
for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {
hsl.h = (hsl.h + part) % 360;
ret.push(tinycolor(hsl));
}
return ret;
}
function _monochromatic(color, results) {
results = results || 6;
var hsv = tinycolor(color).toHsv();
var h = hsv.h,
s = hsv.s,
v = hsv.v;
var ret = [];
var modification = 1 / results;
while (results--) {
ret.push(tinycolor({
h: h,
s: s,
v: v
}));
v = (v + modification) % 1;
}
return ret;
}
// Utility Functions
// ---------------------
tinycolor.mix = function (color1, color2, amount) {
amount = amount === 0 ? 0 : amount || 50;
var rgb1 = tinycolor(color1).toRgb();
var rgb2 = tinycolor(color2).toRgb();
var p = amount / 100;
var rgba = {
r: (rgb2.r - rgb1.r) * p + rgb1.r,
g: (rgb2.g - rgb1.g) * p + rgb1.g,
b: (rgb2.b - rgb1.b) * p + rgb1.b,
a: (rgb2.a - rgb1.a) * p + rgb1.a
};
return tinycolor(rgba);
};
// Readability Functions
// ---------------------
// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)
// `contrast`
// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)
tinycolor.readability = function (color1, color2) {
var c1 = tinycolor(color1);
var c2 = tinycolor(color2);
return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);
};
// `isReadable`
// Ensure that foreground and background color combinations meet WCAG2 guidelines.
// The third argument is an optional Object.
// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';
// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.
// If the entire object is absent, isReadable defaults to {level:"AA",size:"small"}.
// *Example*
// tinycolor.isReadable("#000", "#111") => false
// tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false
tinycolor.isReadable = function (color1, color2, wcag2) {
var readability = tinycolor.readability(color1, color2);
var wcag2Parms, out;
out = false;
wcag2Parms = validateWCAG2Parms(wcag2);
switch (wcag2Parms.level + wcag2Parms.size) {
case "AAsmall":
case "AAAlarge":
out = readability >= 4.5;
break;
case "AAlarge":
out = readability >= 3;
break;
case "AAAsmall":
out = readability >= 7;
break;
}
return out;
};
// `mostReadable`
// Given a base color and a list of possible foreground or background
// colors for that base, returns the most readable color.
// Optionally returns Black or White if the most readable color is unreadable.
// *Example*
// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255"
// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff"
// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3"
// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff"
tinycolor.mostReadable = function (baseColor, colorList, args) {
var bestColor = null;
var bestScore = 0;
var readability;
var includeFallbackColors, level, size;
args = args || {};
includeFallbackColors = args.includeFallbackColors;
level = args.level;
size = args.size;
for (var i = 0; i < colorList.length; i++) {
readability = tinycolor.readability(baseColor, colorList[i]);
if (readability > bestScore) {
bestScore = readability;
bestColor = tinycolor(colorList[i]);
}
}
if (tinycolor.isReadable(baseColor, bestColor, {
level: level,
size: size
}) || !includeFallbackColors) {
return bestColor;
} else {
args.includeFallbackColors = false;
return tinycolor.mostReadable(baseColor, ["#fff", "#000"], args);
}
};
// Big List of Colors
// ------------------
// <https://www.w3.org/TR/css-color-4/#named-colors>
var names = tinycolor.names = {
aliceblue: "f0f8ff",
antiquewhite: "faebd7",
aqua: "0ff",
aquamarine: "7fffd4",
azure: "f0ffff",
beige: "f5f5dc",
bisque: "ffe4c4",
black: "000",
blanchedalmond: "ffebcd",
blue: "00f",
blueviolet: "8a2be2",
brown: "a52a2a",
burlywood: "deb887",
burntsienna: "ea7e5d",
cadetblue: "5f9ea0",
chartreuse: "7fff00",
chocolate: "d2691e",
coral: "ff7f50",
cornflowerblue: "6495ed",
cornsilk: "fff8dc",
crimson: "dc143c",
cyan: "0ff",
darkblue: "00008b",
darkcyan: "008b8b",
darkgoldenrod: "b8860b",
darkgray: "a9a9a9",
darkgreen: "006400",
darkgrey: "a9a9a9",
darkkhaki: "bdb76b",
darkmagenta: "8b008b",
darkolivegreen: "556b2f",
darkorange: "ff8c00",
darkorchid: "9932cc",
darkred: "8b0000",
darksalmon: "e9967a",
darkseagreen: "8fbc8f",
darkslateblue: "483d8b",
darkslategray: "2f4f4f",
darkslategrey: "2f4f4f",
darkturquoise: "00ced1",
darkviolet: "9400d3",
deeppink: "ff1493",
deepskyblue: "00bfff",
dimgray: "696969",
dimgrey: "696969",
dodgerblue: "1e90ff",
firebrick: "b22222",
floralwhite: "fffaf0",
forestgreen: "228b22",
fuchsia: "f0f",
gainsboro: "dcdcdc",
ghostwhite: "f8f8ff",
gold: "ffd700",
goldenrod: "daa520",
gray: "808080",
green: "008000",
greenyellow: "adff2f",
grey: "808080",
honeydew: "f0fff0",
hotpink: "ff69b4",
indianred: "cd5c5c",
indigo: "4b0082",
ivory: "fffff0",
khaki: "f0e68c",
lavender: "e6e6fa",
lavenderblush: "fff0f5",
lawngreen: "7cfc00",
lemonchiffon: "fffacd",
lightblue: "add8e6",
lightcoral: "f08080",
lightcyan: "e0ffff",
lightgoldenrodyellow: "fafad2",
lightgray: "d3d3d3",
lightgreen: "90ee90",
lightgrey: "d3d3d3",
lightpink: "ffb6c1",
lightsalmon: "ffa07a",
lightseagreen: "20b2aa",
lightskyblue: "87cefa",
lightslategray: "789",
lightslategrey: "789",
lightsteelblue: "b0c4de",
lightyellow: "ffffe0",
lime: "0f0",
limegreen: "32cd32",
linen: "faf0e6",
magenta: "f0f",
maroon: "800000",
mediumaquamarine: "66cdaa",
mediumblue: "0000cd",
mediumorchid: "ba55d3",
mediumpurple: "9370db",
mediumseagreen: "3cb371",
mediumslateblue: "7b68ee",
mediumspringgreen: "00fa9a",
mediumturquoise: "48d1cc",
mediumvioletred: "c71585",
midnightblue: "191970",
mintcream: "f5fffa",
mistyrose: "ffe4e1",
moccasin: "ffe4b5",
navajowhite: "ffdead",
navy: "000080",
oldlace: "fdf5e6",
olive: "808000",
olivedrab: "6b8e23",
orange: "ffa500",
orangered: "ff4500",
orchid: "da70d6",
palegoldenrod: "eee8aa",
palegreen: "98fb98",
paleturquoise: "afeeee",
palevioletred: "db7093",
papayawhip: "ffefd5",
peachpuff: "ffdab9",
peru: "cd853f",
pink: "ffc0cb",
plum: "dda0dd",
powderblue: "b0e0e6",
purple: "800080",
rebeccapurple: "663399",
red: "f00",
rosybrown: "bc8f8f",
royalblue: "4169e1",
saddlebrown: "8b4513",
salmon: "fa8072",
sandybrown: "f4a460",
seagreen: "2e8b57",
seashell: "fff5ee",
sienna: "a0522d",
silver: "c0c0c0",
skyblue: "87ceeb",
slateblue: "6a5acd",
slategray: "708090",
slategrey: "708090",
snow: "fffafa",
springgreen: "00ff7f",
steelblue: "4682b4",
tan: "d2b48c",
teal: "008080",
thistle: "d8bfd8",
tomato: "ff6347",
turquoise: "40e0d0",
violet: "ee82ee",
wheat: "f5deb3",
white: "fff",
whitesmoke: "f5f5f5",
yellow: "ff0",
yellowgreen: "9acd32"
};
// Make it easy to access colors via `hexNames[hex]`
var hexNames = tinycolor.hexNames = flip$2(names);
// Utilities
// ---------
// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`
function flip$2(o) {
var flipped = {};
for (var i in o) {
if (o.hasOwnProperty(i)) {
flipped[o[i]] = i;
}
}
return flipped;
}
// Return a valid alpha value [0,1] with all invalid values being set to 1
function boundAlpha(a) {
a = parseFloat(a);
if (isNaN(a) || a < 0 || a > 1) {
a = 1;
}
return a;
}
// Take input from [0, n] and return it as [0, 1]
function bound01(n, max) {
if (isOnePointZero(n)) n = "100%";
var processPercent = isPercentage(n);
n = Math.min(max, Math.max(0, parseFloat(n)));
// Automatically convert percentage into number
if (processPercent) {
n = parseInt(n * max, 10) / 100;
}
// Handle floating point rounding errors
if (Math.abs(n - max) < 0.000001) {
return 1;
}
// Convert into [0, 1] range if it isn't already
return n % max / parseFloat(max);
}
// Force a number between 0 and 1
function clamp01(val) {
return Math.min(1, Math.max(0, val));
}
// Parse a base-16 hex value into a base-10 integer
function parseIntFromHex(val) {
return parseInt(val, 16);
}
// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1
// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>
function isOnePointZero(n) {
return typeof n == "string" && n.indexOf(".") != -1 && parseFloat(n) === 1;
}
// Check to see if string passed in is a percentage
function isPercentage(n) {
return typeof n === "string" && n.indexOf("%") != -1;
}
// Force a hex value to have 2 characters
function pad2(c) {
return c.length == 1 ? "0" + c : "" + c;
}
// Replace a decimal with it's percentage value
function convertToPercentage(n) {
if (n <= 1) {
n = n * 100 + "%";
}
return n;
}
// Converts a decimal to a hex value
function convertDecimalToHex(d) {
return Math.round(parseFloat(d) * 255).toString(16);
}
// Converts a hex value to a decimal
function convertHexToDecimal(h) {
return parseIntFromHex(h) / 255;
}
var matchers = function () {
// <http://www.w3.org/TR/css3-values/#integers>
var CSS_INTEGER = "[-\\+]?\\d+%?";
// <http://www.w3.org/TR/css3-values/#number-value>
var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?";
// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.
var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")";
// Actual matching.
// Parentheses and commas are optional, but not required.
// Whitespace can take the place of commas or opening paren
var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";
var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";
return {
CSS_UNIT: new RegExp(CSS_UNIT),
rgb: new RegExp("rgb" + PERMISSIVE_MATCH3),
rgba: new RegExp("rgba" + PERMISSIVE_MATCH4),
hsl: new RegExp("hsl" + PERMISSIVE_MATCH3),
hsla: new RegExp("hsla" + PERMISSIVE_MATCH4),
hsv: new RegExp("hsv" + PERMISSIVE_MATCH3),
hsva: new RegExp("hsva" + PERMISSIVE_MATCH4),
hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
};
}();
// `isValidCSSUnit`
// Take in a single string / number and check to see if it looks like a CSS unit
// (see `matchers` above for definition).
function isValidCSSUnit(color) {
return !!matchers.CSS_UNIT.exec(color);
}
// `stringInputToObject`
// Permissive string parsing. Take in a number of formats, and output an object
// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`
function stringInputToObject(color) {
color = color.replace(trimLeft, "").replace(trimRight, "").toLowerCase();
var named = false;
if (names[color]) {
color = names[color];
named = true;
} else if (color == "transparent") {
return {
r: 0,
g: 0,
b: 0,
a: 0,
format: "name"
};
}
// Try to match string input using regular expressions.
// Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]
// Just return an object and let the conversion functions handle that.
// This way the result will be the same whether the tinycolor is initialized with string or object.
var match;
if (match = matchers.rgb.exec(color)) {
return {
r: match[1],
g: match[2],
b: match[3]
};
}
if (match = matchers.rgba.exec(color)) {
return {
r: match[1],
g: match[2],
b: match[3],
a: match[4]
};
}
if (match = matchers.hsl.exec(color)) {
return {
h: match[1],
s: match[2],
l: match[3]
};
}
if (match = matchers.hsla.exec(color)) {
return {
h: match[1],
s: match[2],
l: match[3],
a: match[4]
};
}
if (match = matchers.hsv.exec(color)) {
return {
h: match[1],
s: match[2],
v: match[3]
};
}
if (match = matchers.hsva.exec(color)) {
return {
h: match[1],
s: match[2],
v: match[3],
a: match[4]
};
}
if (match = matchers.hex8.exec(color)) {
return {
r: parseIntFromHex(match[1]),
g: parseIntFromHex(match[2]),
b: parseIntFromHex(match[3]),
a: convertHexToDecimal(match[4]),
format: named ? "name" : "hex8"
};
}
if (match = matchers.hex6.exec(color)) {
return {
r: parseIntFromHex(match[1]),
g: parseIntFromHex(match[2]),
b: parseIntFromHex(match[3]),
format: named ? "name" : "hex"
};
}
if (match = matchers.hex4.exec(color)) {
return {
r: parseIntFromHex(match[1] + "" + match[1]),
g: parseIntFromHex(match[2] + "" + match[2]),
b: parseIntFromHex(match[3] + "" + match[3]),
a: convertHexToDecimal(match[4] + "" + match[4]),
format: named ? "name" : "hex8"
};
}
if (match = matchers.hex3.exec(color)) {
return {
r: parseIntFromHex(match[1] + "" + match[1]),
g: parseIntFromHex(match[2] + "" + match[2]),
b: parseIntFromHex(match[3] + "" + match[3]),
format: named ? "name" : "hex"
};
}
return false;
}
function validateWCAG2Parms(parms) {
// return valid WCAG2 parms for isReadable.
// If input parms are invalid, return {"level":"AA", "size":"small"}
var level, size;
parms = parms || {
level: "AA",
size: "small"
};
level = (parms.level || "AA").toUpperCase();
size = (parms.size || "small").toLowerCase();
if (level !== "AA" && level !== "AAA") {
level = "AA";
}
if (size !== "small" && size !== "large") {
size = "small";
}
return {
level: level,
size: size
};
}
var combineRegExp = function combineRegExp(regexpList, flags) {
var source = "";
for (var i = 0; i < regexpList.length; i++) {
if (isString(regexpList[i])) {
source += regexpList[i];
} else {
source += regexpList[i].source;
}
}
return new RegExp(source, flags);
};
var generateRegExp = function generateRegExp() {
var searchFlags = "gi";
var rAngle = /(?:[+-]?\d*\.?\d+)(?:deg|grad|rad|turn)/;
var rSideCornerCapture = /to\s+((?:(?:left|right|top|bottom)(?:\s+(?:top|bottom|left|right))?))/;
var rComma = /\s*,\s*/;
var rColorHex = /#(?:[a-f0-9]{6}|[a-f0-9]{3})/;
var rDigits3 = /\(\s*(?:\d{1,3}\s*,\s*){2}\d{1,3}\s*\)/;
var rDigits4 = /\(\s*(?:\d{1,3}\s*,\s*){2}\d{1,3}\s*,\s*\d*\.?\d+\)/;
var rValue = /(?:[+-]?\d*\.?\d+)(?:%|[a-z]+)?/;
var rKeyword = /[_a-z-][_a-z0-9-]*/;
var rColor = combineRegExp(["(?:", rColorHex, "|", "(?:rgb|hsl)", rDigits3, "|", "(?:rgba|hsla)", rDigits4, "|", rKeyword, ")"], "");
var rColorStop = combineRegExp([rColor, "(?:\\s+", rValue, "(?:\\s+", rValue, ")?)?"], "");
var rColorStopList = combineRegExp(["(?:", rColorStop, rComma, ")*", rColorStop], "");
var rLineCapture = combineRegExp(["(?:(", rAngle, ")|", rSideCornerCapture, ")"], "");
var rGradientSearch = combineRegExp(["(?:(", rLineCapture, ")", rComma, ")?(", rColorStopList, ")"], searchFlags);
var rColorStopSearch = combineRegExp(["\\s*(", rColor, ")", "(?:\\s+", "(", rValue, "))?", "(?:", rComma, "\\s*)?"], searchFlags);
return {
gradientSearch: rGradientSearch,
colorStopSearch: rColorStopSearch
};
};
var parseGradient = function parseGradient(regExpLib, input) {
var result;
var matchColorStop;
var stopResult;
regExpLib.gradientSearch.lastIndex = 0;
var matchGradient = regExpLib.gradientSearch.exec(input);
if (!isNull(matchGradient)) {
result = {
original: matchGradient[0],
colorStopList: []
};
if (matchGradient[1]) {
result.line = matchGradient[1];
}
if (matchGradient[2]) {
result.angle = matchGradient[2];
}
if (matchGradient[3]) {
result.sideCorner = matchGradient[3];
}
regExpLib.colorStopSearch.lastIndex = 0;
matchColorStop = regExpLib.colorStopSearch.exec(matchGradient[4]);
while (!isNull(matchColorStop)) {
stopResult = {
color: matchColorStop[1]
};
if (matchColorStop[2]) {
stopResult.position = matchColorStop[2];
}
result.colorStopList.push(stopResult);
matchColorStop = regExpLib.colorStopSearch.exec(matchGradient[4]);
}
}
return result;
};
var REGEXP_LIB = generateRegExp();
var REG_GRADIENT = /.*gradient\s*\(((?:\([^)]*\)|[^)(]*)*)\)/gim;
var isGradientColor = function isGradientColor(input) {
REG_GRADIENT.lastIndex = 0;
return REG_GRADIENT.exec(input);
};
var sideCornerDegreeMap = {
top: 0,
right: 90,
bottom: 180,
left: 270,
"top left": 315,
"left top": 315,
"top right": 45,
"right top": 45,
"bottom left": 225,
"left bottom": 225,
"bottom right": 135,
"right bottom": 135
};
var parseGradientString = function parseGradientString(input) {
var match = isGradientColor(input);
if (!match) return false;
var gradientColors = {
points: [],
degree: 0
};
var result = parseGradient(REGEXP_LIB, match[1]);
if (result.original.trim() !== match[1].trim()) return false;
var points = result.colorStopList.map(function (_ref, index, array) {
var color = _ref.color,
position = _ref.position;
var point = /* @__PURE__ */Object.create(null);
point.color = tinycolor(color).toRgbString();
var left = parseFloat(position);
if (Number.isNaN(left)) {
left = index / (array.length - 1) * 100;
}
point.left = left;
return point;
});
gradientColors.points = points;
var degree = parseInt(result.angle, 10);
if (Number.isNaN(degree)) {
degree = sideCornerDegreeMap[result.sideCorner] || 180;
}
gradientColors.degree = degree;
return gradientColors;
};
var _Color;
function ownKeys$v(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$t(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$v(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$v(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var mathRound = Math.round;
var hsv2rgba = function hsv2rgba(states) {
return tinycolor(states).toRgb();
};
var hsv2hsva = function hsv2hsva(states) {
return tinycolor(states).toHsv();
};
var hsv2hsla = function hsv2hsla(states) {
return tinycolor(states).toHsl();
};
var gradientColors2string = function gradientColors2string(object) {
var points = object.points,
degree = object.degree;
var colorsStop = points.sort(function (pA, pB) {
return pA.left - pB.left;
}).map(function (p) {
return "".concat(p.color, " ").concat(Math.round(p.left * 100) / 100, "%");
});
return "linear-gradient(".concat(degree, "deg,").concat(colorsStop.join(","), ")");
};
var genId = function genId() {
return (1 + Math.random() * 4294967295).toString(16);
};
var genGradientPoint = function genGradientPoint(left, color, id) {
return {
id: id || genId(),
left: left,
color: color
};
};
var Color = /*#__PURE__*/function () {
function Color(input) {
_classCallCheck(this, Color);
_defineProperty$3(this, "states", {
s: 100,
v: 100,
h: 100,
a: 1
});
_defineProperty$3(this, "originColor", void 0);
_defineProperty$3(this, "isGradient", void 0);
_defineProperty$3(this, "gradientStates", {
colors: [],
degree: 0,
selectedId: null,
css: ""
});
this.update(input);
}
return _createClass(Color, [{
key: "update",
value: function update(input) {
var _this = this;
if (input === this.originColor) return;
var gradientColors = parseGradientString(input);
if (this.isGradient && !gradientColors) {
var colorHsv = tinycolor(input).toHsv();
this.states = colorHsv;
this.updateCurrentGradientColor();
return;
}
this.originColor = input;
this.isGradient = false;
var colorInput = input;
if (gradientColors) {
var _points$, _this$gradientSelecte;
this.isGradient = true;
var object = gradientColors;
var points = object.points.map(function (c, index) {
var _this$gradientStates$;
return genGradientPoint(c.left, c.color, (_this$gradientStates$ = _this.gradientStates.colors[index]) === null || _this$gradientStates$ === void 0 ? void 0 : _this$gradientStates$.id);
});
this.gradientStates = {
colors: points,
degree: object.degree,
selectedId: this.gradientStates.selectedId || ((_points$ = points[0]) === null || _points$ === void 0 ? void 0 : _points$.id) || null
};
this.gradientStates.css = this.linearGradient;
colorInput = (_this$gradientSelecte = this.gradientSelectedPoint) === null || _this$gradientSelecte === void 0 ? void 0 : _this$gradientSelecte.color;
}
this.updateStates(colorInput);
}
}, {
key: "saturation",
get: function get() {
return this.states.s;
},
set: function set(value) {
this.states.s = Math.max(0, Math.min(100, value));
this.updateCurrentGradientColor();
}
}, {
key: "value",
get: function get() {
return this.states.v;
},
set: function set(value) {
this.states.v = Math.max(0, Math.min(100, value));
this.updateCurrentGradientColor();
}
}, {
key: "hue",
get: function get() {
return this.states.h;
},
set: function set(value) {
this.states.h = Math.max(0, Math.min(360, value));
this.updateCurrentGradientColor();
}
}, {
key: "alpha",
get: function get() {
return this.states.a;
},
set: function set(value) {
this.states.a = Math.max(0, Math.min(1, Math.round(value * 100) / 100));
this.updateCurrentGradientColor();
}
}, {
key: "rgb",
get: function get() {
var _hsv2rgba = hsv2rgba(this.states),
r = _hsv2rgba.r,
g = _hsv2rgba.g,
b = _hsv2rgba.b;
return "rgb(".concat(mathRound(r), ", ").concat(mathRound(g), ", ").concat(mathRound(b), ")");
}
}, {
key: "rgba",
get: function get() {
var _hsv2rgba2 = hsv2rgba(this.states),
r = _hsv2rgba2.r,
g = _hsv2rgba2.g,
b = _hsv2rgba2.b,
a = _hsv2rgba2.a;
return "rgba(".concat(mathRound(r), ", ").concat(mathRound(g), ", ").concat(mathRound(b), ", ").concat(a, ")");
}
}, {
key: "hsv",
get: function get() {
var _this$getHsva = this.getHsva(),
h = _this$getHsva.h,
s = _this$getHsva.s,
v = _this$getHsva.v;
return "hsv(".concat(h, ", ").concat(s, "%, ").concat(v, "%)");
}
}, {
key: "hsva",
get: function get() {
var _this$getHsva2 = this.getHsva(),
h = _this$getHsva2.h,
s = _this$getHsva2.s,
v = _this$getHsva2.v,
a = _this$getHsva2.a;
return "hsva(".concat(h, ", ").concat(s, "%, ").concat(v, "%, ").concat(a, ")");
}
}, {
key: "hsl",
get: function get() {
var _this$getHsla = this.getHsla(),
h = _this$getHsla.h,
s = _this$getHsla.s,
l = _this$getHsla.l;
return "hsl(".concat(h, ", ").concat(s, "%, ").concat(l, "%)");
}
}, {
key: "hsla",
get: function get() {
var _this$getHsla2 = this.getHsla(),
h = _this$getHsla2.h,
s = _this$getHsla2.s,
l = _this$getHsla2.l,
a = _this$getHsla2.a;
return "hsla(".concat(h, ", ").concat(s, "%, ").concat(l, "%, ").concat(a, ")");
}
}, {
key: "hex",
get: function get() {
return tinycolor(this.states).toHexString();
}
}, {
key: "hex8",
get: function get() {
return tinycolor(this.states).toHex8String();
}
}, {
key: "cmyk",
get: function get() {
var _this$getCmyk = this.getCmyk(),
c = _this$getCmyk.c,
m = _this$getCmyk.m,
y = _this$getCmyk.y,
k = _this$getCmyk.k;
return "cmyk(".concat(c, ", ").concat(m, ", ").concat(y, ", ").concat(k, ")");
}
}, {
key: "css",
get: function get() {
if (this.isGradient) {
return this.linearGradient;
}
return this.rgba;
}
}, {
key: "linearGradient",
get: function get() {
var gradientColors = this.gradientColors,
gradientDegree = this.gradientDegree;
return gradientColors2string({
points: gradientColors,
degree: gradientDegree
});
}
}, {
key: "gradientColors",
get: function get() {
return this.gradientStates.colors;
},
set: function set(colors) {
this.gradientStates.colors = colors;
this.gradientStates.css = this.linearGradient;
}
}, {
key: "gradientSelectedId",
get: function get() {
return this.gradientStates.selectedId;
},
set: function set(id) {
var _this$gradientSelecte2;
if (id === this.gradientSelectedId) {
return;
}
this.gradientStates.selectedId = id;
this.updateStates((_this$gradientSelecte2 = this.gradientSelectedPoint) === null || _this$gradientSelecte2 === void 0 ? void 0 : _this$gradientSelecte2.color);
}
}, {
key: "gradientDegree",
get: function get() {
return this.gradientStates.degree;
},
set: function set(degree) {
this.gradientStates.degree = Math.max(0, Math.min(360, degree));
this.gradientStates.css = this.linearGradient;
}
}, {
key: "gradientSelectedPoint",
get: function get() {
var gradientColors = this.gradientColors,
gradientSelectedId = this.gradientSelectedId;
return gradientColors.find(function (color) {
return color.id === gradientSelectedId;
});
}
}, {
key: "getFormatsColorMap",
value: function getFormatsColorMap() {
return {
HEX: this.hex,
CMYK: this.cmyk,
RGB: this.rgb,
RGBA: this.rgba,
HSL: this.hsl,
HSLA: this.hsla,
HSV: this.hsv,
HSVA: this.hsva,
CSS: this.css,
HEX8: this.hex8
};
}
}, {
key: "getFormattedColor",
value: function getFormattedColor(format, enableAlpha) {
if (this.isGradient) return this.linearGradient;
var finalFormat = enableAlpha && format in ALPHA_FORMAT_MAP ? ALPHA_FORMAT_MAP[format] : format;
return this.getFormatsColorMap()[finalFormat];
}
}, {
key: "updateCurrentGradientColor",
value: function updateCurrentGradientColor() {
var isGradient = this.isGradient,
gradientColors = this.gradientColors,
gradientSelectedId = this.gradientSelectedId;
var length = gradientColors.length;
var current = this.gradientSelectedPoint;
if (!isGradient || length === 0 || !current) {
return false;
}
var index = gradientColors.findIndex(function (color) {
return color.id === gradientSelectedId;
});
var newColor = _objectSpread$t(_objectSpread$t({}, current), {}, {
color: this.rgba
});
gradientColors.splice(index, 1, newColor);
this.gradientColors = gradientColors.slice();
return this;
}
}, {
key: "updateStates",
value: function updateStates(input) {
var color = tinycolor(cmykInputToColor(input));
var hsva = color.toHsv();
this.states = hsva;
}
}, {
key: "getRgba",
value: function getRgba() {
var _hsv2rgba3 = hsv2rgba(this.states),
r = _hsv2rgba3.r,
g = _hsv2rgba3.g,
b = _hsv2rgba3.b,
a = _hsv2rgba3.a;
return {
r: mathRound(r),
g: mathRound(g),
b: mathRound(b),
a: a
};
}
}, {
key: "getCmyk",
value: function getCmyk() {
var _this$getRgba = this.getRgba(),
r = _this$getRgba.r,
g = _this$getRgba.g,
b = _this$getRgba.b;
var _rgb2cmyk = rgb2cmyk(r, g, b),
_rgb2cmyk2 = _slicedToArray(_rgb2cmyk, 4),
c = _rgb2cmyk2[0],
m = _rgb2cmyk2[1],
y = _rgb2cmyk2[2],
k = _rgb2cmyk2[3];
return {
c: mathRound(c * 100),
m: mathRound(m * 100),
y: mathRound(y * 100),
k: mathRound(k * 100)
};
}
}, {
key: "getHsva",
value: function getHsva() {
var _hsv2hsva = hsv2hsva(this.states),
h = _hsv2hsva.h,
s = _hsv2hsva.s,
v = _hsv2hsva.v,
a = _hsv2hsva.a;
h = mathRound(h);
s = mathRound(s * 100);
v = mathRound(v * 100);
a *= 1;
return {
h: h,
s: s,
v: v,
a: a
};
}
}, {
key: "getHsla",
value: function getHsla() {
var _hsv2hsla = hsv2hsla(this.states),
h = _hsv2hsla.h,
s = _hsv2hsla.s,
l = _hsv2hsla.l,
a = _hsv2hsla.a;
h = mathRound(h);
s = mathRound(s * 100);
l = mathRound(l * 100);
a *= 1;
return {
h: h,
s: s,
l: l,
a: a
};
}
}, {
key: "equals",
value: function equals(color) {
return tinycolor.equals(this.rgba, color);
}
}], [{
key: "isValid",
value: function isValid(color) {
if (parseGradientString(color)) {
return true;
}
return tinycolor(color).isValid();
}
}, {
key: "object2color",
value: function object2color(object, format) {
if (format === "CMYK") {
var c = object.c,
m = object.m,
y = object.y,
k = object.k;
return "cmyk(".concat(c, ", ").concat(m, ", ").concat(y, ", ").concat(k, ")");
}
if (format === "RGB" || format === "RGBA") {
return tinycolor(object).toRgbString();
}
if (format === "HSL" || format === "HSLA") {
return tinycolor(object).toHslString();
}
if (format === "HSV" || format === "HSVA") {
return tinycolor(object).toHsvString();
}
return tinycolor(object).toHexString();
}
}]);
}();
_Color = Color;
_defineProperty$3(Color, "isGradientColor", function (input) {
return !!isGradientColor(input);
});
_defineProperty$3(Color, "compare", function (color1, color2) {
var isGradientColor1 = _Color.isGradientColor(color1);
var isGradientColor2 = _Color.isGradientColor(color2);
if (isGradientColor1 && isGradientColor2) {
var gradientStr1 = parseGradientString(color1);
var gradientStr2 = parseGradientString(color2);
if (!gradientStr1 || !gradientStr2) return false;
var gradientColor1 = gradientColors2string(gradientStr1);
var gradientColor2 = gradientColors2string(gradientStr2);
return gradientColor1 === gradientColor2;
}
if (!isGradientColor1 && !isGradientColor2) {
return tinycolor.equals(color1, color2);
}
return false;
});
var COLOR_OBJECT_OUTPUT_KEYS = ["alpha", "css", "hex", "hex8", "hsl", "hsla", "hsv", "hsva", "rgb", "rgba", "saturation", "value", "isGradient"];
var getColorObject = function getColorObject(color) {
if (!color) {
return null;
}
var colorObject = /* @__PURE__ */Object.create(null);
COLOR_OBJECT_OUTPUT_KEYS.forEach(function (key) {
colorObject[key] = color[key];
});
if (color.isGradient) {
colorObject.linearGradient = color.linearGradient;
}
return colorObject;
};
var HUE_MAX = 360;
var ALPHA_MAX = 100;
var prefix$O = config.prefix;
var _ColorPicker = vue.defineComponent({
name: "".concat(prefix$O, "-color-picker"),
components: {
TPopup: Popup
},
props: props$s,
setup: function setup(props2) {
var colorPickerClass = usePrefixClass("color-picker");
var panelRect = vue.ref();
var hueSliderRect = vue.ref();
var alphaSliderRect = vue.ref();
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
_useVModel2$ = _useVModel2[0],
innerValue = _useVModel2$ === void 0 ? vue.ref(DEFAULT_COLOR) : _useVModel2$,
setPickerValue = _useVModel2[1];
var saturationThumbStyle = vue.ref({
left: "0",
top: "0"
});
var hueSliderStyle = vue.ref({
left: "0",
color: ""
});
var alphaSliderStyle = vue.ref({
left: "0",
color: ""
});
var sliderInfo = vue.ref({
value: 0
});
var color = new Color(props2.defaultValue || props2.value || DEFAULT_COLOR);
var formatList = vue.ref(getFormatList(props2.format, color));
var innerSwatchList = vue.computed(function () {
return genSwatchList(props2.swatchColors);
});
var renderTNodeJSX = useTNodeJSX();
var getSliderThumbStyle = function getSliderThumbStyle(_ref) {
var value2 = _ref.value,
maxValue = _ref.maxValue;
var dom = hueSliderRect.value;
var _dom$getBoundingClien = dom.getBoundingClientRect(),
width = _dom$getBoundingClien.width;
if (!width) {
return;
}
var left = Math.round(value2 / maxValue * 100);
return {
left: "".concat(left, "%"),
color: color.rgb
};
};
var getSaturationThumbStyle = function getSaturationThumbStyle(_ref2) {
var saturation = _ref2.saturation,
value2 = _ref2.value;
var _panelRect$value$getB = panelRect.value.getBoundingClientRect(),
width = _panelRect$value$getB.width,
height = _panelRect$value$getB.height;
var top = Math.round((1 - value2) * height);
var left = Math.round(saturation * width);
return {
color: color.rgb,
left: "".concat(left, "px"),
top: "".concat(top, "px")
};
};
var setCoreStyle = function setCoreStyle() {
sliderInfo.value = {
value: color.hue
};
formatList.value = getFormatList(props2.format, color);
if (isMultiple.value) {
var hue = getSliderThumbStyle({
value: color.hue,
maxValue: HUE_MAX
});
if (hue) {
hueSliderStyle.value = hue;
}
var alpha = getSliderThumbStyle({
value: color.alpha * 100,
maxValue: ALPHA_MAX
});
if (alpha) {
alphaSliderStyle.value = alpha;
}
saturationThumbStyle.value = getSaturationThumbStyle({
saturation: color.saturation,
value: color.value
});
}
};
var formatValue = function formatValue() {
return color.getFormatsColorMap()[props2.format] || color.css;
};
var emitColorChange = function emitColorChange(trigger) {
setPickerValue === null || setPickerValue === void 0 || setPickerValue(formatValue(), {
trigger: trigger,
color: getColorObject(color)
});
};
var clickSwatch = function clickSwatch(swatch) {
color.update(swatch);
emitColorChange("preset");
setCoreStyle();
};
var isMultiple = vue.computed(function () {
return props2.type === "multiple";
});
var getSaturationAndValueByCoordinate = function getSaturationAndValueByCoordinate(coordinate) {
var _panelRect$value$getB2 = panelRect.value.getBoundingClientRect(),
width = _panelRect$value$getB2.width,
height = _panelRect$value$getB2.height;
var x = coordinate.x,
y = coordinate.y;
var saturation = x / width;
var value2 = 1 - y / height;
saturation = Math.min(1, Math.max(0, saturation));
value2 = Math.min(1, Math.max(0, value2));
return {
saturation: saturation,
value: value2
};
};
var onChangeSaturation = function onChangeSaturation(_ref3) {
var _props2$onPaletteBarC;
var saturation = _ref3.saturation,
value2 = _ref3.value;
var sat = color.saturation,
val = color.value;
if (value2 !== val && saturation !== sat) {
color.saturation = saturation;
color.value = value2;
} else if (saturation !== sat) {
color.saturation = saturation;
} else if (value2 !== val) {
color.value = value2;
} else {
return;
}
(_props2$onPaletteBarC = props2.onPaletteBarChange) === null || _props2$onPaletteBarC === void 0 || _props2$onPaletteBarC.call(props2, {
color: getColorObject(color)
});
setCoreStyle();
};
var handleSaturationDrag = function handleSaturationDrag(e) {
var coordinate = getCoordinate(e, panelRect.value.getBoundingClientRect(), props2.fixed);
var _getSaturationAndValu = getSaturationAndValueByCoordinate(coordinate),
saturation = _getSaturationAndValu.saturation,
value2 = _getSaturationAndValu.value;
onChangeSaturation({
saturation: saturation,
value: value2
});
};
var onChangeSlider = function onChangeSlider(_ref4) {
var value2 = _ref4.value,
isAlpha = _ref4.isAlpha;
if (isAlpha) {
color.alpha = value2 / 100;
} else {
color.hue = value2;
}
emitColorChange(isAlpha ? "palette-alpha-bar" : "palette-hue-bar");
setCoreStyle();
};
var handleSliderDrag = function handleSliderDrag(e) {
var isAlpha = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var dom = isAlpha ? alphaSliderRect.value : hueSliderRect.value;
var rect = dom.getBoundingClientRect();
var width = rect.width;
var coordinate = getCoordinate(e, rect);
var x = coordinate.x;
var maxValue = isAlpha ? ALPHA_MAX : HUE_MAX;
var value2 = Math.min(maxValue, Math.max(0, Math.round(x / width * maxValue * 100) / 100));
onChangeSlider({
value: value2,
isAlpha: isAlpha
});
};
var handleDiffDrag = function handleDiffDrag(e, dragType) {
var _callbackMap$dragType;
e.preventDefault();
e.stopPropagation();
var callbackMap = {
saturation: function saturation() {
return handleSaturationDrag(e);
},
"hue-slider": function hueSlider() {
return handleSliderDrag(e);
},
"alpha-slider": function alphaSlider() {
return handleSliderDrag(e, true);
}
};
(_callbackMap$dragType = callbackMap[dragType]) === null || _callbackMap$dragType === void 0 || _callbackMap$dragType.call(callbackMap);
};
var onTouchStart = function onTouchStart(e, dragType) {
handleDiffDrag(e, dragType);
};
var onTouchMove = function onTouchMove(e, dragType) {
handleDiffDrag(e, dragType);
};
var onTouchEnd = function onTouchEnd(e, dragType) {
handleDiffDrag(e, dragType);
};
var updateColor = function updateColor() {
var result = innerValue.value || DEFAULT_COLOR;
color.update(result);
};
var init = function init() {
updateColor();
setCoreStyle();
};
vue.onMounted(function () {
init();
});
return function () {
var _alphaSliderStyle$val;
var type = props2.type;
props2.format;
var enableAlpha = props2.enableAlpha;
renderTNodeJSX("header");
renderTNodeJSX("footer");
var inner = vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__panel")
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__body ").concat(colorPickerClass.value, "__body--").concat(type)
}, [isMultiple.value && vue.createVNode("div", {
"ref": panelRect,
"class": "".concat(colorPickerClass.value, "__saturation"),
"style": {
background: "hsl(".concat(sliderInfo.value.value, ", 100%, 50%)")
},
"onTouchstart": function onTouchstart(e) {
return onTouchStart(e, "saturation");
},
"onTouchmove": function onTouchmove(e) {
return onTouchMove(e, "saturation");
},
"onTouchend": function onTouchend(e) {
return onTouchEnd(e, "saturation");
}
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__thumb"),
"style": saturationThumbStyle.value
}, null)]), isMultiple.value && vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__sliders-wrapper")
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__sliders")
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__slider-wrapper ").concat(colorPickerClass.value, "__slider-wrapper--hue-type")
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__slider"),
"ref": hueSliderRect,
"onTouchstart": function onTouchstart(e) {
return onTouchStart(e, "hue-slider");
},
"onTouchmove": function onTouchmove(e) {
return onTouchMove(e, "hue-slider");
},
"onTouchend": function onTouchend(e) {
return onTouchEnd(e, "hue-slider");
}
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__rail")
}, null), vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__thumb"),
"style": hueSliderStyle.value
}, null)])]), enableAlpha && vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__slider-wrapper ").concat(colorPickerClass.value, "__slider-wrapper--alpha-type")
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__slider-padding ")
}, null), vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__slider"),
"ref": alphaSliderRect,
"onTouchstart": function onTouchstart(e) {
return onTouchStart(e, "alpha-slider");
},
"onTouchmove": function onTouchmove(e) {
return onTouchMove(e, "alpha-slider");
},
"onTouchend": function onTouchend(e) {
return onTouchEnd(e, "alpha-slider");
}
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__rail"),
"style": {
background: "linear-gradient(to right, rgba(0, 0, 0, 0), ".concat((_alphaSliderStyle$val = alphaSliderStyle.value) === null || _alphaSliderStyle$val === void 0 ? void 0 : _alphaSliderStyle$val.color, ")")
}
}, null), vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__thumb"),
"style": alphaSliderStyle.value
}, null)])])])]), isMultiple.value && vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__format")
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__format-item ").concat(colorPickerClass.value, "__format-item--first")
}, [formatList.value[0]]), vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__format-item ").concat(colorPickerClass.value, "__format-item--second")
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__format-inputs")
}, [formatList.value[1].map(function (formatItem, formatIndex) {
return vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__format-input ").concat(colorPickerClass.value, "__format-input--").concat(formatIndex === formatList.value[1].length - 1 && formatList.value[1].length === 2 ? "fixed" : "base"),
"key": formatIndex
}, [formatItem]);
})])])]), innerSwatchList.value.length && vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__swatches-wrap")
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__swatches")
}, [isMultiple.value && vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__swatches-title")
}, ["\u7CFB\u7EDF\u9884\u8BBE\u8272\u5F69"]), vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__swatches-items")
}, [innerSwatchList.value.map(function (swatch) {
return vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__swatches-item"),
"key": swatch,
"onClick": function onClick() {
return clickSwatch(swatch);
}
}, [vue.createVNode("div", {
"class": "".concat(colorPickerClass.value, "__swatches-inner"),
"style": {
backgroundColor: swatch
}
}, null)]);
})])])])])]);
return inner;
};
}
});
var ColorPicker = withInstall(_ColorPicker);
var weekday$1 = {exports: {}};
(function (module, exports) {
!function (e, t) {
module.exports = t() ;
}(commonjsGlobal, function () {
return function (e, t) {
t.prototype.weekday = function (e) {
var t = this.$locale().weekStart || 0,
i = this.$W,
n = (i < t ? i + 7 : i) - t;
return this.$utils().u(e) ? n : this.subtract(n, "day").add(e, "day");
};
};
});
})(weekday$1);
var weekday = weekday$1.exports;
var customParseFormat$1 = {exports: {}};
(function (module, exports) {
!function (e, t) {
module.exports = t() ;
}(commonjsGlobal, function () {
var e = {
LTS: "h:mm:ss A",
LT: "h:mm A",
L: "MM/DD/YYYY",
LL: "MMMM D, YYYY",
LLL: "MMMM D, YYYY h:mm A",
LLLL: "dddd, MMMM D, YYYY h:mm A"
},
t = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,
n = /\d/,
r = /\d\d/,
i = /\d\d?/,
o = /\d*[^-_:/,()\s\d]+/,
s = {},
a = function a(e) {
return (e = +e) + (e > 68 ? 1900 : 2e3);
};
var f = function f(e) {
return function (t) {
this[e] = +t;
};
},
h = [/[+-]\d\d:?(\d\d)?|Z/, function (e) {
(this.zone || (this.zone = {})).offset = function (e) {
if (!e) return 0;
if ("Z" === e) return 0;
var t = e.match(/([+-]|\d\d)/g),
n = 60 * t[1] + (+t[2] || 0);
return 0 === n ? 0 : "+" === t[0] ? -n : n;
}(e);
}],
u = function u(e) {
var t = s[e];
return t && (t.indexOf ? t : t.s.concat(t.f));
},
d = function d(e, t) {
var n,
r = s.meridiem;
if (r) {
for (var i = 1; i <= 24; i += 1) if (e.indexOf(r(i, 0, t)) > -1) {
n = i > 12;
break;
}
} else n = e === (t ? "pm" : "PM");
return n;
},
c = {
A: [o, function (e) {
this.afternoon = d(e, !1);
}],
a: [o, function (e) {
this.afternoon = d(e, !0);
}],
Q: [n, function (e) {
this.month = 3 * (e - 1) + 1;
}],
S: [n, function (e) {
this.milliseconds = 100 * +e;
}],
SS: [r, function (e) {
this.milliseconds = 10 * +e;
}],
SSS: [/\d{3}/, function (e) {
this.milliseconds = +e;
}],
s: [i, f("seconds")],
ss: [i, f("seconds")],
m: [i, f("minutes")],
mm: [i, f("minutes")],
H: [i, f("hours")],
h: [i, f("hours")],
HH: [i, f("hours")],
hh: [i, f("hours")],
D: [i, f("day")],
DD: [r, f("day")],
Do: [o, function (e) {
var t = s.ordinal,
n = e.match(/\d+/);
if (this.day = n[0], t) for (var r = 1; r <= 31; r += 1) t(r).replace(/\[|\]/g, "") === e && (this.day = r);
}],
w: [i, f("week")],
ww: [r, f("week")],
M: [i, f("month")],
MM: [r, f("month")],
MMM: [o, function (e) {
var t = u("months"),
n = (u("monthsShort") || t.map(function (e) {
return e.slice(0, 3);
})).indexOf(e) + 1;
if (n < 1) throw new Error();
this.month = n % 12 || n;
}],
MMMM: [o, function (e) {
var t = u("months").indexOf(e) + 1;
if (t < 1) throw new Error();
this.month = t % 12 || t;
}],
Y: [/[+-]?\d+/, f("year")],
YY: [r, function (e) {
this.year = a(e);
}],
YYYY: [/\d{4}/, f("year")],
Z: h,
ZZ: h
};
function l(n) {
var r, i;
r = n, i = s && s.formats;
for (var o = (n = r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, function (t, n, r) {
var o = r && r.toUpperCase();
return n || i[r] || e[r] || i[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function (e, t, n) {
return t || n.slice(1);
});
})).match(t), a = o.length, f = 0; f < a; f += 1) {
var h = o[f],
u = c[h],
d = u && u[0],
l = u && u[1];
o[f] = l ? {
regex: d,
parser: l
} : h.replace(/^\[|\]$/g, "");
}
return function (e) {
for (var t = {}, n = 0, r = 0; n < a; n += 1) {
var i = o[n];
if ("string" == typeof i) r += i.length;else {
var s = i.regex,
f = i.parser,
h = e.slice(r),
u = s.exec(h)[0];
f.call(t, u), e = e.replace(u, "");
}
}
return function (e) {
var t = e.afternoon;
if (void 0 !== t) {
var n = e.hours;
t ? n < 12 && (e.hours += 12) : 12 === n && (e.hours = 0), delete e.afternoon;
}
}(t), t;
};
}
return function (e, t, n) {
n.p.customParseFormat = !0, e && e.parseTwoDigitYear && (a = e.parseTwoDigitYear);
var r = t.prototype,
i = r.parse;
r.parse = function (e) {
var t = e.date,
r = e.utc,
o = e.args;
this.$u = r;
var a = o[1];
if ("string" == typeof a) {
var f = !0 === o[2],
h = !0 === o[3],
u = f || h,
d = o[2];
h && (d = o[2]), s = this.$locale(), !f && d && (s = n.Ls[d]), this.$d = function (e, t, n, r) {
try {
if (["x", "X"].indexOf(t) > -1) return new Date(("X" === t ? 1e3 : 1) * e);
var i = l(t)(e),
o = i.year,
s = i.month,
a = i.day,
f = i.hours,
h = i.minutes,
u = i.seconds,
d = i.milliseconds,
c = i.zone,
m = i.week,
M = new Date(),
Y = a || (o || s ? 1 : M.getDate()),
p = o || M.getFullYear(),
v = 0;
o && !s || (v = s > 0 ? s - 1 : M.getMonth());
var D,
w = f || 0,
g = h || 0,
y = u || 0,
L = d || 0;
return c ? new Date(Date.UTC(p, v, Y, w, g, y, L + 60 * c.offset * 1e3)) : n ? new Date(Date.UTC(p, v, Y, w, g, y, L)) : (D = new Date(p, v, Y, w, g, y, L), m && (D = r(D).week(m).toDate()), D);
} catch (e) {
return new Date("");
}
}(t, a, r, n), this.init(), d && !0 !== d && (this.$L = this.locale(d).$L), u && t != this.format(a) && (this.$d = new Date("")), s = {};
} else if (a instanceof Array) for (var c = a.length, m = 1; m <= c; m += 1) {
o[1] = a[m - 1];
var M = n.apply(this, o);
if (M.isValid()) {
this.$d = M.$d, this.$L = M.$L, this.init();
break;
}
m === c && (this.$d = new Date(""));
} else i.call(this, e);
};
};
});
})(customParseFormat$1);
var customParseFormat = customParseFormat$1.exports;
var objectSupport$1 = {exports: {}};
(function (module, exports) {
!function (t, n) {
module.exports = n() ;
}(commonjsGlobal, function () {
return function (t, n, e) {
var i = n.prototype,
r = function r(t) {
var n,
r = t.date,
o = t.utc,
u = {};
if (!(null === (n = r) || n instanceof Date || n instanceof Array || i.$utils().u(n) || "Object" !== n.constructor.name)) {
if (!Object.keys(r).length) return new Date();
var a = o ? e.utc() : e();
Object.keys(r).forEach(function (t) {
var n, e;
u[n = t, e = i.$utils().p(n), "date" === e ? "day" : e] = r[t];
});
var c = u.day || (u.year || u.month >= 0 ? 1 : a.date()),
s = u.year || a.year(),
d = u.month >= 0 ? u.month : u.year || u.day ? 0 : a.month(),
f = u.hour || 0,
b = u.minute || 0,
h = u.second || 0,
y = u.millisecond || 0;
return o ? new Date(Date.UTC(s, d, c, f, b, h, y)) : new Date(s, d, c, f, b, h, y);
}
return r;
},
o = i.parse;
i.parse = function (t) {
t.date = r.bind(this)(t), o.bind(this)(t);
};
var u = i.set,
a = i.add,
c = i.subtract,
s = function s(t, n, e, i) {
void 0 === i && (i = 1);
var r = Object.keys(n),
o = this;
return r.forEach(function (e) {
o = t.bind(o)(n[e] * i, e);
}), o;
};
i.set = function (t, n) {
return n = void 0 === n ? t : n, "Object" === t.constructor.name ? s.bind(this)(function (t, n) {
return u.bind(this)(n, t);
}, n, t) : u.bind(this)(t, n);
}, i.add = function (t, n) {
return "Object" === t.constructor.name ? s.bind(this)(a, t, n) : a.bind(this)(t, n);
}, i.subtract = function (t, n) {
return "Object" === t.constructor.name ? s.bind(this)(a, t, n, -1) : c.bind(this)(t, n);
};
};
});
})(objectSupport$1);
var objectSupport = objectSupport$1.exports;
var DateTimePickerProps = {
cancelBtn: {
type: String,
default: ""
},
confirmBtn: {
type: String,
default: ""
},
end: {
type: [String, Number]
},
footer: {
type: Function
},
format: {
type: String,
default: "YYYY-MM-DD HH:mm:ss"
},
header: {
type: Function
},
mode: {
type: [String, Array],
default: "date"
},
renderLabel: {
type: Function
},
showWeek: Boolean,
start: {
type: [String, Number]
},
steps: {
type: Object,
default: function _default() {
return {};
}
},
title: {
type: String,
default: ""
},
value: {
type: [String, Number]
},
modelValue: {
type: [String, Number]
},
defaultValue: {
type: [String, Number]
},
onCancel: Function,
onChange: Function,
onConfirm: Function,
onPick: Function
};
var getMeaningColumn = function getMeaningColumn(mode) {
var arr = ["year", "month", "date", "hour", "minute", "second"];
if (isArray$1(mode)) {
var ans = [];
var _mode = _slicedToArray(mode, 2),
dateMode = _mode[0],
timeMode = _mode[1];
if (dateMode != null) {
var cutIndex2 = arr.indexOf(dateMode);
if (cutIndex2 <= 2 && cutIndex2 > -1) {
ans.push.apply(ans, _toConsumableArray(arr.slice(0, cutIndex2 + 1)));
}
}
if (timeMode != null) {
var _cutIndex = arr.indexOf(timeMode);
if (_cutIndex > 2) {
ans.push.apply(ans, _toConsumableArray(arr.slice(3, _cutIndex + 1)));
}
}
return ans;
}
var cutIndex = arr.indexOf(mode);
return arr.slice(0, cutIndex + 1);
};
var PickerProps = {
cancelBtn: {
type: [String, Boolean],
default: true
},
columns: {
type: [Array, Function],
default: function _default() {
return [];
},
required: true
},
confirmBtn: {
type: [String, Boolean],
default: true
},
footer: {
type: Function
},
header: {
type: Function
},
keys: {
type: Object
},
option: {
type: Function
},
renderLabel: {
type: Function
},
swipeDuration: {
type: [String, Number],
default: 300
},
title: {
type: String,
default: ""
},
value: {
type: Array,
default: void 0
},
modelValue: {
type: Array,
default: void 0
},
defaultValue: {
type: Array
},
onCancel: Function,
onChange: Function,
onConfirm: Function,
onPick: Function
};
var isMultipleArray = function isMultipleArray(arr) {
return isArray$1(arr[0]);
};
var getPickerColumns = function getPickerColumns(columns) {
return isMultipleArray(columns) ? columns : [columns];
};
var limitNumberInRange = function limitNumberInRange(num, min, max) {
return Math.min(Math.max(num, min), max);
};
function findIndexOfEnabledOption(options, startIndex, keys) {
var _keys$disabled;
var limitStartIndex = limitNumberInRange(startIndex, 0, Math.max(options.length - 1, 0));
var disabledKey = (_keys$disabled = keys === null || keys === void 0 ? void 0 : keys.disabled) !== null && _keys$disabled !== void 0 ? _keys$disabled : "disabled";
if (!get(options[limitStartIndex], disabledKey)) {
return limitStartIndex;
}
var maxOffset = Math.max(limitStartIndex, options.length - 1 - limitStartIndex);
for (var i = 0; i <= maxOffset; i++) {
var forwardIdx = limitStartIndex + i;
if (forwardIdx < options.length && !get(options[forwardIdx], disabledKey)) {
return forwardIdx;
}
var backwardIdx = limitStartIndex - i;
if (backwardIdx >= 0 && !get(options[backwardIdx], disabledKey)) {
return backwardIdx;
}
}
return 0;
}
function ownKeys$u(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$s(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$u(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$u(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var classPrefix = usePrefixClass();
var quartEaseOut = function quartEaseOut(t, b, c, d) {
var tempT = t;
return -c * ((tempT = tempT / d - 1) * tempT * tempT * tempT - 1) + b;
};
var DEFAULT_ITEM_HEIGHT = 40;
var DEFAULT_HOLDER_HEIGHT = 200;
var OFFSET_OF_BOUND = 60;
var ANIMATION_TIME_LIMIT = 460;
var ANIMATION_DISTANCE_LIMIT = 15;
var ANIMATION_DURATION = 150;
var DEFAULT_SWIPE_DURATION$1 = 1e3;
var TAP_DISTANCE_THRESHOLD = 5;
var TAP_TIME_THRESHOLD = 200;
var Picker$1 = /*#__PURE__*/function () {
function Picker(options) {
var _options$swipeDuratio;
_classCallCheck(this, Picker);
_defineProperty$3(this, "holder", void 0);
_defineProperty$3(this, "options", void 0);
_defineProperty$3(this, "list", null);
_defineProperty$3(this, "elementItems", []);
_defineProperty$3(this, "height", DEFAULT_HOLDER_HEIGHT);
_defineProperty$3(this, "curIndex", 0);
_defineProperty$3(this, "itemClassName", "");
_defineProperty$3(this, "itemSelectedClassName", "");
_defineProperty$3(this, "itemHeight", DEFAULT_ITEM_HEIGHT);
_defineProperty$3(this, "lastMoveTime", 0);
_defineProperty$3(this, "lastMoveStart", 0);
_defineProperty$3(this, "stopInertiaMove", false);
_defineProperty$3(this, "startY", 0);
_defineProperty$3(this, "isPicking", false);
_defineProperty$3(this, "offsetYOfStartBound", OFFSET_OF_BOUND);
_defineProperty$3(this, "offsetYOfEndBound", -OFFSET_OF_BOUND);
_defineProperty$3(this, "offsetY", 0);
_defineProperty$3(this, "offsetYOfStart", 0);
_defineProperty$3(this, "offsetYOfEnd", 0);
_defineProperty$3(this, "curValue", "");
_defineProperty$3(this, "onChange", void 0);
_defineProperty$3(this, "itemGroupHeight", void 0);
_defineProperty$3(this, "indicatorOffset", void 0);
_defineProperty$3(this, "swipeDuration", void 0);
_defineProperty$3(this, "pickerColumns", void 0);
if (!options.el) throw new Error("options el needed!");
this.holder = options.el;
this.pickerColumns = options.defaultPickerColumns;
this.options = options;
this.onChange = options.onChange;
this.swipeDuration = (_options$swipeDuratio = options.swipeDuration) !== null && _options$swipeDuratio !== void 0 ? _options$swipeDuratio : DEFAULT_SWIPE_DURATION$1;
this.init();
}
return _createClass(Picker, [{
key: "init",
value: function init() {
this.initScrollParams();
this.setSelectedClassName();
this.bindEvent();
}
}, {
key: "updateItems",
value: function updateItems() {
this.elementItems = _toConsumableArray(this.holder.querySelectorAll("li"));
var itemLen = this.elementItems.length;
this.offsetYOfEnd = -this.itemHeight * (itemLen - 3);
this.offsetYOfEndBound = -(this.itemHeight * (itemLen - 3) + OFFSET_OF_BOUND);
}
}, {
key: "initScrollParams",
value: function initScrollParams() {
var _this$holder$parentEl,
_this$holder$querySel,
_this$elementItems$cu,
_this = this;
this.list = this.holder;
this.itemGroupHeight = ((_this$holder$parentEl = this.holder.parentElement) === null || _this$holder$parentEl === void 0 ? void 0 : _this$holder$parentEl.offsetHeight) || DEFAULT_HOLDER_HEIGHT;
this.elementItems = _toConsumableArray(this.holder.querySelectorAll("li"));
this.itemHeight = ((_this$holder$querySel = this.holder.querySelector("li")) === null || _this$holder$querySel === void 0 ? void 0 : _this$holder$querySel.offsetHeight) || DEFAULT_ITEM_HEIGHT;
this.height = this.holder.offsetHeight || DEFAULT_HOLDER_HEIGHT;
this.indicatorOffset = this.itemGroupHeight / 2 - this.itemHeight / 2;
var curIndex = findIndexOfEnabledOption(this.pickerColumns, this.options.defaultIndex || 0, this.options.keys);
if (curIndex !== (this.options.defaultIndex || 0)) this.onChange(curIndex);
this.itemClassName = "".concat(classPrefix.value, "-picker-item__item");
this.itemSelectedClassName = "".concat(classPrefix.value, "-picker-item__item--active");
this.startY = 0;
this.isPicking = false;
this.lastMoveTime = 0;
this.lastMoveStart = 0;
this.stopInertiaMove = false;
this.curValue = (_this$elementItems$cu = this.elementItems[curIndex]) === null || _this$elementItems$cu === void 0 ? void 0 : _this$elementItems$cu.textContent;
Object.defineProperty(this, "curIndex", {
set: function set(value) {
var _this$elementItems$va;
curIndex = value;
_this.curValue = (_this$elementItems$va = _this.elementItems[value]) === null || _this$elementItems$va === void 0 ? void 0 : _this$elementItems$va.textContent;
},
get: function get() {
return curIndex;
}
});
var startOffsetY = this.indicatorOffset - this.curIndex * this.itemHeight;
var itemLen = this.elementItems.length;
this.setOffsetY(startOffsetY);
this.offsetYOfStart = startOffsetY;
this.offsetYOfEnd = this.indicatorOffset - (itemLen - 1) * this.itemHeight;
this.offsetYOfStartBound = this.indicatorOffset + OFFSET_OF_BOUND;
this.offsetYOfEndBound = this.indicatorOffset - (itemLen - 1) * this.itemHeight - OFFSET_OF_BOUND;
}
}, {
key: "bindEvent",
value: function bindEvent() {
var _this2 = this;
this.holder.addEventListener("touchstart", function (e) {
return _this2.touchStartHandler(e);
}, false);
this.holder.addEventListener("touchmove", function (e) {
return _this2.touchMoveHandler(e);
}, false);
this.holder.addEventListener("touchend", function (e) {
return _this2.touchEndHandler(e);
}, false);
this.holder.addEventListener("touchcancel", function (e) {
return _this2.touchEndHandler(e);
}, false);
}
}, {
key: "touchStartHandler",
value: function touchStartHandler(event) {
preventDefault(event, false);
this.isPicking = true;
if (!this.holder) return;
if (this.list) this.list.style.transition = "";
this.startY = event.changedTouches[0].pageY;
this.offsetYOfStart = this.offsetY;
this.updateInertiaParams(event, true);
}
}, {
key: "getCount",
value: function getCount() {
return this.pickerColumns.length;
}
}, {
key: "getRange",
value: function getRange() {
var thresholdA = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var thresholdB = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;
var min = -(this.getCount() - thresholdA) * this.itemHeight;
var max = thresholdB * this.itemHeight;
return {
min: min,
max: max
};
}
}, {
key: "touchMoveHandler",
value: function touchMoveHandler(event) {
preventDefault(event, false);
if (!this.isPicking || !this.holder) return;
var endY = event.changedTouches[0].pageY;
var dragRange = endY - this.startY;
this.updateInertiaParams(event, false);
var _this$getRange = this.getRange(0, 5),
min = _this$getRange.min,
max = _this$getRange.max;
var moveOffsetY = limitNumberInRange(this.offsetYOfStart + dragRange, min, max);
this.setOffsetY(moveOffsetY);
}
}, {
key: "touchEndHandler",
value: function touchEndHandler(event) {
preventDefault(event, false);
this.isPicking = false;
if (!this.holder) return;
var point = event.changedTouches[0];
var nowTime = event.timeStamp || Date.now();
var moveTime = nowTime - this.lastMoveTime;
var distance = point.pageY - this.lastMoveStart;
var absDistance = Math.abs(distance);
if (absDistance < TAP_DISTANCE_THRESHOLD && moveTime < TAP_TIME_THRESHOLD) {
var _this$list;
var li = event.target.closest("li");
if (li && (_this$list = this.list) !== null && _this$list !== void 0 && _this$list.contains(li)) {
var childElements = this.list.children;
var rawIndex = Array.from(childElements).indexOf(li);
var enabledIndex = findIndexOfEnabledOption(this.pickerColumns, rawIndex, this.options.keys);
this.updateIndex(enabledIndex, {
isChange: true
});
return;
}
}
if (moveTime > ANIMATION_TIME_LIMIT || absDistance < ANIMATION_DISTANCE_LIMIT || !this.swipeDuration) {
this.stopInertiaMove = false;
this.endScroll();
return;
}
var speed = Math.abs(distance / moveTime);
var dist = this.offsetY + speed / 5e-3 * (distance < 0 ? -1 : 1);
var _this$getRange2 = this.getRange(3, 2),
min = _this$getRange2.min,
max = _this$getRange2.max;
dist = limitNumberInRange(dist, min, max);
if (dist === 0) {
this.stopInertiaMove = false;
this.endScroll();
return;
}
this.scrollDist(nowTime, this.offsetY, dist, +this.swipeDuration);
}
}, {
key: "updateInertiaParams",
value: function updateInertiaParams(event, isStart) {
var point = event.changedTouches[0];
if (isStart) {
this.lastMoveStart = point.pageY;
this.lastMoveTime = event.timeStamp || Date.now();
}
this.stopInertiaMove = true;
}
}, {
key: "scrollDist",
value: function scrollDist(now, startOffsetY, dist, duration) {
var _this3 = this;
this.stopInertiaMove = false;
var start = null;
var _inertiaMove = function inertiaMove(timestamp) {
if (_this3.stopInertiaMove) {
return;
}
if (!start) start = timestamp;
var progress = timestamp - start;
var newOffsetY = quartEaseOut(progress, startOffsetY, dist - startOffsetY, duration);
_this3.setOffsetY(newOffsetY);
if (progress > duration || newOffsetY > _this3.offsetYOfStartBound || newOffsetY < _this3.offsetYOfEndBound) {
_this3.endScroll();
} else {
window.requestAnimationFrame(_inertiaMove);
}
};
window.requestAnimationFrame(_inertiaMove);
}
}, {
key: "update",
value: function update(options) {
var _this4 = this;
this.updateItems();
var targetIndex = this.elementItems.findIndex(function (el) {
return el.textContent === _this4.curValue;
});
var updateIndex = targetIndex === -1 ? 0 : targetIndex;
this.updateIndex(updateIndex, options);
}
}, {
key: "updateIndex",
value: function updateIndex(index, options) {
var realOptions = _objectSpread$s({
duration: 460,
isChange: true
}, options);
this.curIndex = index;
this.setSelectedClassName();
var moveOffsetY = this.indicatorOffset - index * this.itemHeight;
if (this.list) {
this.list.style.transform = "translate(0,".concat(moveOffsetY, "px) translateZ(0)");
this.list.style.transitionDuration = "".concat(realOptions.duration, "ms");
this.list.style.transitionTimingFunction = "ease-out";
}
this.offsetY = moveOffsetY;
this.offsetYOfStart = moveOffsetY;
realOptions.isChange && this.onChange(index);
}
}, {
key: "updateOptions",
value: function updateOptions() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
this.pickerColumns = options;
}
}, {
key: "getCurIndex",
value: function getCurIndex() {
return this.curIndex;
}
}, {
key: "fix3d",
value: function fix3d(index) {
for (var i = 0; i < this.elementItems.length; i++) {
var deg = 25 * (-index + i);
this.elementItems[i].style.transform = "rotateX(".concat(deg, "deg)");
this.elementItems[i].style.webkitTransform = "rotateX(".concat(deg, "deg)");
}
}
}, {
key: "setSelectedClassName",
value: function setSelectedClassName() {
var _this5 = this;
var regClass = new RegExp(this.itemClassName, "i");
var regSelected = new RegExp(this.itemSelectedClassName, "i");
this.elementItems.forEach(function (item, i) {
var tempItem = item;
var itemClass = tempItem.className;
if (itemClass === "" || !itemClass) {
tempItem.className = _this5.itemClassName;
} else {
if (!regClass.test(itemClass)) {
tempItem.classList.add(_this5.itemClassName);
}
if (regSelected.test(itemClass)) {
tempItem.classList.remove(_this5.itemSelectedClassName);
}
}
if (_this5.curIndex === i) {
tempItem.classList.add(_this5.itemSelectedClassName);
}
});
}
}, {
key: "setOffsetY",
value: function setOffsetY(offsetY) {
this.offsetY = offsetY;
if (this.list) {
this.list.style.transform = "translate3d(0, ".concat(offsetY, "px, 0)");
}
}
}, {
key: "endScroll",
value: function endScroll() {
if (this.stopInertiaMove) return;
var curIndex = 0;
if (this.offsetY > this.offsetYOfStartBound) {
curIndex = 0;
if (this.list) {
this.list.style.transition = "".concat(ANIMATION_DURATION, "ms ease-out");
}
} else if (this.offsetY < this.offsetYOfEndBound) {
curIndex = this.elementItems.length - 1;
if (this.list) {
this.list.style.transition = "".concat(ANIMATION_DURATION, "ms ease-out");
}
} else {
if (this.list) {
this.list.style.transition = "".concat(ANIMATION_DURATION, "ms ease-out");
}
curIndex = -Math.round((this.offsetY - this.indicatorOffset) / this.itemHeight);
if (curIndex < 0) curIndex = 0;
if (curIndex > this.elementItems.length - 1) curIndex = this.elementItems.length - 1;
}
curIndex = findIndexOfEnabledOption(this.pickerColumns, curIndex, this.options.keys);
var offsetY = this.indicatorOffset - curIndex * this.itemHeight;
this.setOffsetY(offsetY);
if (curIndex !== this.curIndex) {
this.curIndex = curIndex;
this.setSelectedClassName();
this.onChange(this.curIndex);
}
}
}, {
key: "destroy",
value: function destroy() {
delete this.holder;
}
}]);
}();
var prefix$N = config.prefix;
var PickerItem = vue.defineComponent({
name: "".concat(prefix$N, "-picker-item"),
props: {
options: {
type: Array
},
value: {
type: [String, Number],
default: void 0
},
renderLabel: {
type: Function,
default: void 0
},
onPick: {
type: Function,
default: void 0
},
swipeDuration: {
type: [String, Number],
default: 300
}
},
emits: ["pick"],
setup: function setup(props, context) {
var pickerItemClass = usePrefixClass("picker-item");
var pickerProps = vue.inject("picker", void 0);
var keys = vue.computed(function () {
var _pickerProps$keys;
return pickerProps && ((_pickerProps$keys = pickerProps.keys) === null || _pickerProps$keys === void 0 ? void 0 : _pickerProps$keys.value);
});
var picker = null;
var root = vue.ref();
var getIndexByValue = function getIndexByValue(val) {
var defaultIndex = 0;
if (val !== void 0) {
var _props$options;
defaultIndex = (_props$options = props.options) === null || _props$options === void 0 ? void 0 : _props$options.findIndex(function (item) {
var _keys$value$value, _keys$value;
return get(item, (_keys$value$value = (_keys$value = keys.value) === null || _keys$value === void 0 ? void 0 : _keys$value.value) !== null && _keys$value$value !== void 0 ? _keys$value$value : "value") === val;
});
}
return defaultIndex < 0 ? 0 : defaultIndex;
};
var className = vue.computed(function () {
return "".concat(pickerItemClass.value);
});
var updatePickerWithNextTick = function updatePickerWithNextTick(index) {
if (picker) {
picker.updateItems();
vue.nextTick(function () {
picker.updateIndex(index, {
isChange: false
});
});
}
};
var setIndex = function setIndex(index) {
updatePickerWithNextTick(index);
};
var setValue = function setValue(value) {
var index = getIndexByValue(value);
updatePickerWithNextTick(index);
};
var setOptions = function setOptions() {
var _picker;
(_picker = picker) === null || _picker === void 0 || _picker.update();
};
var setUpdateItems = function setUpdateItems() {
var _picker2;
(_picker2 = picker) === null || _picker2 === void 0 || _picker2.updateItems();
};
context.expose({
setIndex: setIndex,
setValue: setValue,
setOptions: setOptions,
setUpdateItems: setUpdateItems
});
vue.onMounted(function () {
if (root.value) {
picker = new Picker$1({
el: root.value,
defaultIndex: getIndexByValue(props.value) || 0,
keys: keys.value,
defaultPickerColumns: props.options,
onChange: function onChange(index) {
var _keys$value$value2, _keys$value2, _props$onPick;
var curItem = props.options[index];
var changeValue = {
value: get(curItem, (_keys$value$value2 = (_keys$value2 = keys.value) === null || _keys$value2 === void 0 ? void 0 : _keys$value2.value) !== null && _keys$value$value2 !== void 0 ? _keys$value$value2 : "value"),
index: index
};
(_props$onPick = props.onPick) === null || _props$onPick === void 0 || _props$onPick.call(props, changeValue);
},
swipeDuration: props.swipeDuration
});
}
});
vue.watch(function () {
return props.options;
}, function () {
var _picker3, _picker4;
(_picker3 = picker) === null || _picker3 === void 0 || _picker3.updateOptions(props.options);
(_picker4 = picker) === null || _picker4 === void 0 || _picker4.updateItems();
}, {
flush: "post",
deep: true
});
return function () {
return vue.createVNode("ul", {
"ref": root,
"class": className.value
}, [(props.options || []).map(function (option, index) {
var _keys$value$disabled, _keys$value3, _keys$value$label, _keys$value4;
return vue.createVNode("li", {
"key": index,
"class": ["".concat(pickerItemClass.value, "__item"), _defineProperty$3({}, "".concat(pickerItemClass.value, "__item--disabled"), get(option, (_keys$value$disabled = (_keys$value3 = keys.value) === null || _keys$value3 === void 0 ? void 0 : _keys$value3.disabled) !== null && _keys$value$disabled !== void 0 ? _keys$value$disabled : "disabled"))]
}, [context.slots.option ? context.slots.option(option, index) : vue.createVNode(vue.Fragment, null, [props.renderLabel ? props.renderLabel(option, index) : get(option, (_keys$value$label = (_keys$value4 = keys.value) === null || _keys$value4 === void 0 ? void 0 : _keys$value4.label) !== null && _keys$value$label !== void 0 ? _keys$value$label : "label")])]);
})]);
};
}
});
function ownKeys$t(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$r(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$t(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$t(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$M = config.prefix;
var getIndexFromColumns = function getIndexFromColumns(column, value, keys) {
if (!value) return 0;
return column === null || column === void 0 ? void 0 : column.findIndex(function (item) {
var _keys$value;
return get(item, (_keys$value = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _keys$value !== void 0 ? _keys$value : "value") === value;
});
};
var _Picker = vue.defineComponent({
name: "".concat(prefix$M, "-picker"),
components: {
PickerItem: PickerItem
},
props: PickerProps,
emits: ["change", "cancel", "pick", "update:modelValue", "update:value"],
setup: function setup(props, _ref) {
var _pickerValue$value;
var slots = _ref.slots;
var pickerClass = usePrefixClass("picker");
var _useConfig = useConfig("picker"),
globalConfig = _useConfig.globalConfig;
var renderTNodeJSX = useTNodeJSX();
var _toRefs = vue.toRefs(props),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props.defaultValue, props.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
_useVModel2$ = _useVModel2[0],
pickerValue = _useVModel2$ === void 0 ? vue.ref([]) : _useVModel2$,
setPickerValue = _useVModel2[1];
var keys = vue.computed(function () {
return props.keys;
});
var getDefaultText = function getDefaultText(prop, defaultText) {
if (isString(prop)) return prop;
if (isBoolean(prop) && prop) return defaultText;
return "";
};
var confirmButtonText = vue.computed(function () {
return getDefaultText(props.confirmBtn, globalConfig.value.confirm);
});
var cancelButtonText = vue.computed(function () {
return getDefaultText(props.cancelBtn, globalConfig.value.cancel);
});
var curValueArray = vue.ref(((_pickerValue$value = pickerValue.value) === null || _pickerValue$value === void 0 ? void 0 : _pickerValue$value.map(function (item) {
return item;
})) || []);
var realColumns = vue.computed(function () {
if (isFunction(props.columns)) {
var _columns = props.columns(curValueArray.value);
return getPickerColumns(_columns);
}
return getPickerColumns(props.columns);
});
var curIndexArray = realColumns.value.map(function (item, index) {
var _pickerValue$value2;
return getIndexFromColumns(item, (_pickerValue$value2 = pickerValue.value) === null || _pickerValue$value2 === void 0 ? void 0 : _pickerValue$value2[index], keys.value);
});
var pickerItemInstanceArray = vue.ref([]);
var setPickerItemRef = function setPickerItemRef(item, index) {
pickerItemInstanceArray.value[index] = item;
};
var handleConfirm = function handleConfirm(e) {
var _props$onConfirm;
var target = realColumns.value.map(function (item, index) {
return item[curIndexArray[index]];
});
var label = target.map(function (item) {
var _keys$value$label, _keys$value2;
return get(item, (_keys$value$label = (_keys$value2 = keys.value) === null || _keys$value2 === void 0 ? void 0 : _keys$value2.label) !== null && _keys$value$label !== void 0 ? _keys$value$label : "label");
});
var value2 = target.map(function (item) {
var _keys$value$value, _keys$value3;
return get(item, (_keys$value$value = (_keys$value3 = keys.value) === null || _keys$value3 === void 0 ? void 0 : _keys$value3.value) !== null && _keys$value$value !== void 0 ? _keys$value$value : "value");
});
setPickerValue(value2);
(_props$onConfirm = props.onConfirm) === null || _props$onConfirm === void 0 || _props$onConfirm.call(props, value2, {
index: curIndexArray,
label: label,
e: e
});
};
var handleCancel = function handleCancel(e) {
var _props$onCancel;
pickerItemInstanceArray.value.forEach(function (item, index) {
item === null || item === void 0 || item.setIndex(curIndexArray[index]);
});
(_props$onCancel = props.onCancel) === null || _props$onCancel === void 0 || _props$onCancel.call(props, {
e: e
});
};
var handlePick = function handlePick(context, column) {
var _realColumns$value, _keys$value$value2, _keys$value4, _props$onPick;
var index = context.index;
curIndexArray[column] = index;
curValueArray.value[column] = get((_realColumns$value = realColumns.value) === null || _realColumns$value === void 0 ? void 0 : _realColumns$value[column][index], (_keys$value$value2 = (_keys$value4 = keys.value) === null || _keys$value4 === void 0 ? void 0 : _keys$value4.value) !== null && _keys$value$value2 !== void 0 ? _keys$value$value2 : "value");
(_props$onPick = props.onPick) === null || _props$onPick === void 0 || _props$onPick.call(props, curValueArray.value, {
index: index,
column: column
});
};
vue.watch(pickerValue, function () {
curValueArray.value = pickerValue.value.map(function (item) {
return item;
});
});
vue.watch([realColumns, curValueArray], function () {
realColumns.value.forEach(function (col, idx) {
var _pickerItemInstanceAr;
var index = col.findIndex(function (item) {
var _keys$value$value3, _keys$value5;
return get(item, (_keys$value$value3 = (_keys$value5 = keys.value) === null || _keys$value5 === void 0 ? void 0 : _keys$value5.value) !== null && _keys$value$value3 !== void 0 ? _keys$value$value3 : "value") === curValueArray.value[idx];
});
curIndexArray[idx] = index > -1 ? index : 0;
(_pickerItemInstanceAr = pickerItemInstanceArray.value[idx]) === null || _pickerItemInstanceAr === void 0 || _pickerItemInstanceAr.setIndex(curIndexArray[idx]);
});
});
vue.provide("picker", _objectSpread$r({}, vue.toRefs(props)));
return function () {
return vue.createVNode("div", {
"class": "".concat(pickerClass.value)
}, [vue.createVNode("div", {
"class": "".concat(pickerClass.value, "__toolbar")
}, [cancelButtonText.value && vue.createVNode("div", {
"class": "".concat(pickerClass.value, "__cancel"),
"onClick": handleCancel
}, [cancelButtonText.value]), vue.createVNode("div", {
"class": "".concat(pickerClass.value, "__title")
}, [props.title]), confirmButtonText.value && vue.createVNode("div", {
"class": "".concat(pickerClass.value, "__confirm"),
"onClick": handleConfirm
}, [confirmButtonText.value])]), renderTNodeJSX("header"), vue.createVNode("div", {
"class": "".concat(pickerClass.value, "__main")
}, [realColumns.value.map(function (item, index) {
var _pickerValue$value3;
return vue.createVNode("div", {
"key": index,
"class": "".concat(pickerClass.value, "-item__group")
}, [vue.createVNode(vue.resolveComponent("picker-item"), {
"ref": function ref(item2) {
return setPickerItemRef(item2, index);
},
"options": item,
"value": (_pickerValue$value3 = pickerValue.value) === null || _pickerValue$value3 === void 0 ? void 0 : _pickerValue$value3[index],
"render-label": props.renderLabel,
"onPick": function onPick($event) {
return handlePick($event, index);
},
"swipeDuration": props.swipeDuration
}, {
option: slots.option || props.option
})]);
}), vue.createVNode("div", {
"class": "".concat(pickerClass.value, "__mask ").concat(pickerClass.value, "__mask--top")
}, null), vue.createVNode("div", {
"class": "".concat(pickerClass.value, "__mask ").concat(pickerClass.value, "__mask--bottom")
}, null), vue.createVNode("div", {
"class": "".concat(pickerClass.value, "__indicator")
}, null)]), renderTNodeJSX("footer")]);
};
}
});
function ownKeys$s(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$s(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$s(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$L = config.prefix;
var name$2 = "".concat(prefix$L, "-cascade");
var script = vue.defineComponent({
name: name$2,
components: {
Picker: _Picker
},
props: PickerProps,
setup: function setup(props, context) {
var pickerProps = vue.computed(function () {
return _objectSpread$q({}, props);
});
var keys = vue.computed(function () {
return props.keys;
});
var finalDepth = vue.ref(1);
var finalSubOptionsRecord = vue.ref({});
var generateCascadePickerColumns = function generateCascadePickerColumns(value, options, depth, subOptionsRecord) {
var columns = [];
columns.push(options.map(function (option) {
return {
label: option.label,
value: option.value
};
}));
for (var i = 0; i < depth - 1; i++) {
var x = value[i];
var subOptions = subOptionsRecord[x];
if (!subOptions) {
columns.push([]);
} else {
columns.push(subOptions.map(function (option) {
return {
label: option.label,
value: option.value
};
}));
}
}
return columns;
};
var initDepthAndRecord = function initDepthAndRecord(options) {
var depth = 1;
var subOptionsRecord = {};
function traverse(option, currentDepth) {
var _keys$value$value, _keys$value;
if (!option.children) {
return;
}
subOptionsRecord[get(option, (_keys$value$value = (_keys$value = keys.value) === null || _keys$value === void 0 ? void 0 : _keys$value.value) !== null && _keys$value$value !== void 0 ? _keys$value$value : "value")] = option.children;
var nextDepth = currentDepth + 1;
if (nextDepth > depth) {
depth = nextDepth;
}
option.children.forEach(function (option2) {
traverse(option2, nextDepth);
});
}
options.forEach(function (option) {
traverse(option, 1);
});
finalDepth.value = depth;
finalSubOptionsRecord.value = subOptionsRecord;
};
initDepthAndRecord(props.columns);
return {
name: name$2,
finalDepth: finalDepth,
finalSubOptionsRecord: finalSubOptionsRecord,
pickerProps: pickerProps,
generateCascadePickerColumns: generateCascadePickerColumns
};
}
});
function render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_picker = vue.resolveComponent("picker");
return vue.openBlock(), vue.createBlock(_component_picker, vue.mergeProps(_ctx.pickerProps, {
columns: function columns(selected) {
return _ctx.generateCascadePickerColumns(selected, _ctx.columns, _ctx.finalDepth, _ctx.finalSubOptionsRecord);
}
}), null, 16, ["columns"]);
}
script.render = render;
var Picker = withInstall(_Picker);
var Cascade = withInstall(script);
dayjs.extend(weekday);
dayjs.extend(customParseFormat);
dayjs.extend(objectSupport);
var prefix$K = config.prefix;
var _DateTimePicker = vue.defineComponent({
name: "".concat(prefix$K, "-date-time-picker"),
components: {
TPicker: Picker
},
props: DateTimePickerProps,
emits: ["change", "cancel", "confirm", "pick", "update:modelValue", "update:value"],
setup: function setup(props, _ref) {
_ref.slots;
var dateTimePickerClass = usePrefixClass("date-time-picker");
var _useConfig = useConfig("dateTimePicker"),
globalConfig = _useConfig.globalConfig;
var className = vue.computed(function () {
return ["".concat(dateTimePickerClass.value)];
});
var _toRefs = vue.toRefs(props),
value = _toRefs.value;
var renderTNodeJSX = useTNodeJSX();
var _useVModel = useVModel(value, vue.ref(props.modelValue), props.defaultValue, props.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerValue = _useVModel2[0],
setDateTimePickerValue = _useVModel2[1];
var title = vue.computed(function () {
return props.title || globalConfig.value.title;
});
var confirmButtonText = vue.computed(function () {
return props.confirmBtn || globalConfig.value.confirm;
});
var cancelButtonText = vue.computed(function () {
return props.cancelBtn || globalConfig.value.cancel;
});
var normalize = function normalize(val, defaultDay) {
return val && dayjs(val).isValid() ? dayjs(val) : defaultDay;
};
var start = vue.computed(function () {
return normalize(props.start, dayjs().subtract(10, "year"));
});
var end = vue.computed(function () {
return normalize(props.end, dayjs().add(10, "year"));
});
var meaningColumn = vue.computed(function () {
return getMeaningColumn(props.mode);
});
var isTimeMode = vue.computed(function () {
return isArray$1(props.mode) && props.mode[0] == null && ["hour", "minute", "second"].includes(props.mode[1]);
});
var rationalize = function rationalize(val) {
if (isTimeMode.value) return val;
if (val.isBefore(start.value)) return start.value;
if (val.isAfter(end.value)) return end.value;
return val;
};
var calcDate = function calcDate(currentValue) {
if (isTimeMode.value) {
var dateStr = dayjs(start.value).format("YYYY-MM-DD");
currentValue = "".concat(dateStr, " ").concat(currentValue);
}
return currentValue && dayjs(currentValue).isValid() ? rationalize(dayjs(currentValue)) : start.value;
};
var curDate = vue.ref(calcDate(innerValue.value));
var valueOfPicker = vue.computed(function () {
return meaningColumn.value.map(function (item) {
return curDate.value[item]().toString();
});
});
var columns = vue.computed(function () {
var ret = [];
var getDate = function getDate(date) {
return [date.year(), date.month() + 1, date.date(), date.hour(), date.minute(), date.second()];
};
var _getDate = getDate(curDate.value),
_getDate2 = _slicedToArray(_getDate, 5),
curYear = _getDate2[0],
curMonth = _getDate2[1],
curDay = _getDate2[2],
curHour = _getDate2[3],
curMinute = _getDate2[4];
var _getDate3 = getDate(start.value),
_getDate4 = _slicedToArray(_getDate3, 6),
minYear = _getDate4[0],
minMonth = _getDate4[1],
minDay = _getDate4[2],
minHour = _getDate4[3],
minMinute = _getDate4[4],
minSecond = _getDate4[5];
var _getDate5 = getDate(end.value),
_getDate6 = _slicedToArray(_getDate5, 6),
maxYear = _getDate6[0],
maxMonth = _getDate6[1],
maxDay = _getDate6[2],
maxHour = _getDate6[3],
maxMinute = _getDate6[4],
maxSecond = _getDate6[5];
var isInMinYear = curYear === minYear;
var isInMaxYear = curYear === maxYear;
var isInMinMonth = isInMinYear && curMonth === minMonth;
var isInMaxMonth = isInMaxYear && curMonth === maxMonth;
var isInMinDay = isInMinMonth && curDay === minDay;
var isInMaxDay = isInMaxMonth && curDay === maxDay;
var isInMinHour = isInMinDay && curHour === minHour;
var isInMaxHour = isInMaxDay && curHour === maxHour;
var isInMinMinute = isInMinHour && curMinute === minMinute;
var isInMaxMinute = isInMaxHour && curMinute === maxMinute;
var typeUnit = {
year: globalConfig.value.yearLabel,
month: globalConfig.value.monthLabel,
date: globalConfig.value.dateLabel,
hour: globalConfig.value.hourLabel,
minute: globalConfig.value.minuteLabel,
second: globalConfig.value.secondLabel
};
var generateDayWithWeekColumn = function generateDayWithWeekColumn(date) {
var startOfMonth = date.startOf("month");
var endOfMonth = date.endOf("month");
var daysOfWeek = [];
var type = "date";
for (var i = 0; i <= endOfMonth.diff(startOfMonth, "days"); i += 1) {
var currentDate = startOfMonth.add(i, "days");
var dayName = currentDate.format("ddd");
daysOfWeek.push({
value: "".concat(i + 1),
label: props.renderLabel ? props.renderLabel(type, i) : "".concat(i + 1).concat(typeUnit[type] || "", " ").concat(dayName)
});
}
ret.push(daysOfWeek);
};
var generateColumn = function generateColumn(start2, end2, type) {
var arr = [];
var step = props.steps[type] || 1;
for (var i = start2; i <= end2; i += step) {
var value2 = i.toString();
arr.push({
label: props.renderLabel ? props.renderLabel(type, i) : "".concat(value2, " ").concat(typeUnit[type]),
value: type === "month" ? "".concat(+value2 - 1) : value2
});
}
ret.push(arr);
};
if (meaningColumn.value.includes("year")) {
generateColumn(minYear, maxYear, "year");
}
if (meaningColumn.value.includes("month")) {
var lower = isInMinYear ? minMonth : 1;
var upper = isInMaxYear ? maxMonth : 12;
generateColumn(lower, upper, "month");
}
if (meaningColumn.value.includes("date")) {
var _lower = isInMinMonth ? minDay : 1;
var _upper = isInMaxMonth ? maxDay : dayjs("".concat(curYear, "-").concat(curMonth)).daysInMonth();
if (props.showWeek) {
generateDayWithWeekColumn(curDate.value);
} else {
generateColumn(_lower, _upper, "date");
}
}
if (meaningColumn.value.includes("hour")) {
var _lower2 = isInMinDay && !isTimeMode.value ? minHour : 0;
var _upper2 = isInMaxDay && !isTimeMode.value ? maxHour : 23;
generateColumn(_lower2, _upper2, "hour");
}
if (meaningColumn.value.includes("minute")) {
var _lower3 = isInMinHour && !isTimeMode.value ? minMinute : 0;
var _upper3 = isInMaxHour && !isTimeMode.value ? maxMinute : 59;
generateColumn(_lower3, _upper3, "minute");
}
if (meaningColumn.value.includes("second")) {
var _lower4 = isInMinMinute && !isTimeMode.value ? minSecond : 0;
var _upper4 = isInMaxMinute && !isTimeMode.value ? maxSecond : 59;
generateColumn(_lower4, _upper4, "second");
}
return ret;
});
var onConfirm = function onConfirm(value2) {
var _props$onConfirm;
var dayObject = value2.reduce(function (map, cur2, index) {
var type = meaningColumn.value[index];
map[type] = cur2;
return map;
}, {});
var cur = dayjs(dayObject);
(_props$onConfirm = props.onConfirm) === null || _props$onConfirm === void 0 || _props$onConfirm.call(props, dayjs(cur || curDate.value).format(props.format));
setDateTimePickerValue(dayjs(cur || curDate.value).format(props.format));
};
var onCancel = function onCancel(context) {
var _props$onCancel;
(_props$onCancel = props.onCancel) === null || _props$onCancel === void 0 || _props$onCancel.call(props, {
e: context.e
});
};
var onPick = function onPick(value2, context) {
var _columns$value$column, _props$onPick;
var column = context.column,
index = context.index;
var type = meaningColumn.value[column];
var val = curDate.value.set(type, parseInt((_columns$value$column = columns.value[column][index]) === null || _columns$value$column === void 0 ? void 0 : _columns$value$column.value, 10));
curDate.value = rationalize(val);
(_props$onPick = props.onPick) === null || _props$onPick === void 0 || _props$onPick.call(props, rationalize(val).format(props.format));
};
vue.watch(innerValue, function (val) {
curDate.value = calcDate(val);
});
return function () {
return vue.createVNode(vue.resolveComponent("t-picker"), {
"class": className.value,
"value": valueOfPicker.value,
"title": title.value,
"confirm-btn": confirmButtonText.value,
"cancel-btn": cancelButtonText.value,
"columns": columns.value,
"onConfirm": onConfirm,
"onCancel": onCancel,
"onPick": onPick,
"header": function header() {
return renderTNodeJSX("header");
},
"footer": function footer() {
return renderTNodeJSX("footer");
}
}, null);
};
}
});
var DateTimePicker = withInstall(_DateTimePicker);
var props$r = {
colon: Boolean,
contentAlign: {
type: String,
default: "left",
validator: function validator(val) {
if (!val) return true;
return ["left", "right"].includes(val);
}
},
data: {
type: Object,
default: function _default() {
return {};
}
},
disabled: {
type: Boolean,
default: void 0
},
errorMessage: {
type: Object
},
labelAlign: {
type: String,
default: "right",
validator: function validator(val) {
if (!val) return true;
return ["left", "right", "top"].includes(val);
}
},
labelWidth: {
type: [String, Number],
default: "81px"
},
preventSubmitDefault: {
type: Boolean,
default: true
},
requiredMark: {
type: Boolean,
default: void 0
},
requiredMarkPosition: {
type: String,
validator: function validator(val) {
if (!val) return true;
return ["left", "right"].includes(val);
}
},
resetType: {
type: String,
default: "empty",
validator: function validator(val) {
if (!val) return true;
return ["empty", "initial"].includes(val);
}
},
rules: {
type: Object
},
scrollToFirstError: {
type: String,
validator: function validator(val) {
if (!val) return true;
return ["", "smooth", "auto"].includes(val);
}
},
showErrorMessage: {
type: Boolean,
default: true
},
submitWithWarningMessage: Boolean,
onReset: Function,
onSubmit: Function,
onValidate: Function
};
var ValidateStatus = /* @__PURE__ */function (ValidateStatus2) {
ValidateStatus2["TO_BE_VALIDATED"] = "not";
ValidateStatus2["SUCCESS"] = "success";
ValidateStatus2["FAIL"] = "fail";
return ValidateStatus2;
}(ValidateStatus || {});
var FormInjectionKey = Symbol("FormProvide");
var FormItemInjectionKey = Symbol("FormItemProvide");
var prefix$J = config.prefix;
var requestSubmit = function requestSubmit(target) {
if (!(target instanceof HTMLFormElement)) {
throw new Error("target must be HTMLFormElement");
}
var submitter = document.createElement("input");
submitter.type = "submit";
submitter.hidden = true;
target.appendChild(submitter);
submitter.click();
target.removeChild(submitter);
};
var _Form = vue.defineComponent({
name: "".concat(prefix$J, "-form"),
props: props$r,
setup: function setup(props2, _ref) {
var expose = _ref.expose;
var renderTNodeJSX = useTNodeJSX();
var _toRefs = vue.toRefs(props2),
disabled = _toRefs.disabled,
showErrorMessage = _toRefs.showErrorMessage,
labelWidth = _toRefs.labelWidth,
labelAlign = _toRefs.labelAlign,
contentAlign = _toRefs.contentAlign,
data = _toRefs.data,
colon = _toRefs.colon,
requiredMark = _toRefs.requiredMark,
requiredMarkPosition = _toRefs.requiredMarkPosition,
rules = _toRefs.rules,
errorMessage = _toRefs.errorMessage,
resetType = _toRefs.resetType;
var formRef = vue.ref();
var children = vue.ref([]);
vue.provide("formDisabled", {
disabled: disabled
});
vue.provide(FormInjectionKey, vue.reactive({
showErrorMessage: showErrorMessage,
labelWidth: labelWidth,
labelAlign: labelAlign,
contentAlign: contentAlign,
data: data,
colon: colon,
requiredMark: requiredMark,
requiredMarkPosition: requiredMarkPosition,
rules: rules,
errorMessage: errorMessage,
resetType: resetType,
children: children,
renderContent: renderContent
}));
var formClass = usePrefixClass("form");
var needValidate = function needValidate(name, fields) {
if (!fields || !isArray$1(fields)) return true;
return fields.indexOf("".concat(name)) !== -1;
};
var formatValidateResult = function formatValidateResult(validateResultList) {
var result = validateResultList.reduce(function (r, err) {
return Object.assign(r || {}, err);
}, {});
Object.keys(result).forEach(function (key) {
if (result[key] === true) {
delete result[key];
}
});
return isEmpty(result) ? true : result;
};
var validate = /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee(param) {
var _props2$onValidate;
var _ref3, fields, _ref3$trigger, trigger, showErrorMessage2, list, arr, result;
return regenerator.wrap(function (_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_ref3 = param || {}, fields = _ref3.fields, _ref3$trigger = _ref3.trigger, trigger = _ref3$trigger === void 0 ? "all" : _ref3$trigger, showErrorMessage2 = _ref3.showErrorMessage;
list = children.value.filter(function (child) {
return isFunction(child.validate) && needValidate(String(child.name), fields);
}).map(function (child) {
return child.validate(trigger, showErrorMessage2);
});
_context.next = 1;
return Promise.all(list);
case 1:
arr = _context.sent;
result = formatValidateResult(arr);
(_props2$onValidate = props2.onValidate) === null || _props2$onValidate === void 0 || _props2$onValidate.call(props2, {
validateResult: result
});
return _context.abrupt("return", result);
case 2:
case "end":
return _context.stop();
}
}, _callee);
}));
return function validate(_x) {
return _ref2.apply(this, arguments);
};
}();
var getFirstError = function getFirstError(result) {
if (isBoolean(result)) return "";
var _Object$keys = Object.keys(result),
_Object$keys2 = _slicedToArray(_Object$keys, 1),
firstKey = _Object$keys2[0];
if (props2.scrollToFirstError) {
var tmpClassName = "".concat(formClass.value, "-item__").concat(firstKey);
scrollTo(tmpClassName);
}
var resArr = result[firstKey];
if (!isArray$1(resArr)) return "";
return resArr.filter(function (item) {
return !item.result;
})[0].message;
};
var scrollTo = function scrollTo(selector) {
var _formRef$value$getEle = formRef.value.getElementsByClassName(selector),
_formRef$value$getEle2 = _slicedToArray(_formRef$value$getEle, 1),
dom = _formRef$value$getEle2[0];
var behavior = props2.scrollToFirstError;
if (behavior) {
dom && dom.scrollIntoView({
behavior: behavior
});
}
};
var validateOnly = /*#__PURE__*/function () {
var _ref4 = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee2(params) {
var _ref5, fields, _ref5$trigger, trigger, list, arr;
return regenerator.wrap(function (_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
_ref5 = params || {}, fields = _ref5.fields, _ref5$trigger = _ref5.trigger, trigger = _ref5$trigger === void 0 ? "all" : _ref5$trigger;
list = children.value.filter(function (child) {
return isFunction(child.validateOnly) && needValidate(String(child.name), fields);
}).map(function (child) {
return child.validateOnly(trigger);
});
_context2.next = 1;
return Promise.all(list);
case 1:
arr = _context2.sent;
return _context2.abrupt("return", formatValidateResult(arr));
case 2:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function validateOnly(_x2) {
return _ref4.apply(this, arguments);
};
}();
var submitParams = vue.ref();
var _onSubmit = function onSubmit(e) {
if (props2.preventSubmitDefault && e) {
preventDefault(e, true);
}
validate(submitParams.value).then(function (r) {
var _props2$onSubmit;
var firstError = getFirstError(r);
(_props2$onSubmit = props2.onSubmit) === null || _props2$onSubmit === void 0 || _props2$onSubmit.call(props2, {
validateResult: r,
firstError: firstError
});
});
submitParams.value = void 0;
};
var submit = /*#__PURE__*/function () {
var _ref6 = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee3(params) {
return regenerator.wrap(function (_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
submitParams.value = params;
requestSubmit(formRef.value);
case 1:
case "end":
return _context3.stop();
}
}, _callee3);
}));
return function submit(_x3) {
return _ref6.apply(this, arguments);
};
}();
var resetParams = vue.ref();
var _onReset = function onReset(e) {
var _props2$onReset;
if (props2.preventSubmitDefault && e) {
preventDefault(e, true);
}
children.value.filter(function (child) {
var _resetParams$value;
return isFunction(child.resetField) && needValidate(String(child.name), (_resetParams$value = resetParams.value) === null || _resetParams$value === void 0 ? void 0 : _resetParams$value.fields);
}).forEach(function (child) {
var _resetParams$value2;
return child.resetField((_resetParams$value2 = resetParams.value) === null || _resetParams$value2 === void 0 ? void 0 : _resetParams$value2.type);
});
resetParams.value = void 0;
(_props2$onReset = props2.onReset) === null || _props2$onReset === void 0 || _props2$onReset.call(props2, {
e: e
});
};
var reset = function reset(params) {
resetParams.value = params;
formRef.value.reset();
};
var clearValidate = function clearValidate(fields) {
children.value.forEach(function (child) {
if (isFunction(child.resetHandler) && needValidate(String(child.name), fields)) {
child.resetHandler();
}
});
};
var setValidateMessage = function setValidateMessage(validateMessage) {
var keys = Object.keys(validateMessage);
if (!keys.length) return;
var list = children.value.filter(function (child) {
return isFunction(child.setValidateMessage) && keys.includes("".concat(child.name));
}).map(function (child) {
return child.setValidateMessage(validateMessage[child.name]);
});
Promise.all(list);
};
expose({
validate: validate,
submit: submit,
reset: reset,
clearValidate: clearValidate,
setValidateMessage: setValidateMessage,
validateOnly: validateOnly
});
return function () {
return vue.createVNode("form", {
"ref": formRef,
"class": formClass.value,
"onSubmit": function onSubmit(e) {
return _onSubmit(e);
},
"onReset": function onReset(e) {
return _onReset(e);
}
}, [renderTNodeJSX("default")]);
};
}
});
var isDate$1 = {exports: {}};
var merge = {exports: {}};
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = merge;
function merge() {
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var defaults = arguments.length > 1 ? arguments[1] : undefined;
for (var key in defaults) {
if (typeof obj[key] === 'undefined') {
obj[key] = defaults[key];
}
}
return obj;
}
module.exports = exports.default;
module.exports.default = exports.default;
})(merge, merge.exports);
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = isDate;
var _merge = _interopRequireDefault(merge.exports);
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
};
}
function _slicedToArray(r, e) {
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _iterableToArrayLimit(r, l) {
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (null != t) {
var e,
n,
i,
u,
a = [],
f = !0,
o = !1;
try {
if (i = (t = t.call(r)).next, 0 === l) {
if (Object(t) !== t) return;
f = !1;
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
} catch (r) {
o = !0, n = r;
} finally {
try {
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
} finally {
if (o) throw n;
}
}
return a;
}
}
function _arrayWithHoles(r) {
if (Array.isArray(r)) return r;
}
function _createForOfIteratorHelper(r, e) {
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (!t) {
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
t && (r = t);
var _n = 0,
F = function F() {};
return {
s: F,
n: function n() {
return _n >= r.length ? {
done: !0
} : {
done: !1,
value: r[_n++]
};
},
e: function e(r) {
throw r;
},
f: F
};
}
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var o,
a = !0,
u = !1;
return {
s: function s() {
t = t.call(r);
},
n: function n() {
var r = t.next();
return a = r.done, r;
},
e: function e(r) {
u = !0, o = r;
},
f: function f() {
try {
a || null == t.return || t.return();
} finally {
if (u) throw o;
}
}
};
}
function _unsupportedIterableToArray(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray(r, a);
var t = {}.toString.call(r).slice(8, -1);
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
}
}
function _arrayLikeToArray(r, a) {
(null == a || a > r.length) && (a = r.length);
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
return n;
}
var default_date_options = {
format: 'YYYY/MM/DD',
delimiters: ['/', '-'],
strictMode: false
};
function isValidFormat(format) {
return /(^(y{4}|y{2})[.\/-](m{1,2})[.\/-](d{1,2})$)|(^(m{1,2})[.\/-](d{1,2})[.\/-]((y{4}|y{2})$))|(^(d{1,2})[.\/-](m{1,2})[.\/-]((y{4}|y{2})$))/gi.test(format);
}
function zip(date, format) {
var zippedArr = [],
len = Math.max(date.length, format.length);
for (var i = 0; i < len; i++) {
zippedArr.push([date[i], format[i]]);
}
return zippedArr;
}
function isDate(input, options) {
if (typeof options === 'string') {
// Allow backward compatibility for old format isDate(input [, format])
options = (0, _merge.default)({
format: options
}, default_date_options);
} else {
options = (0, _merge.default)(options, default_date_options);
}
if (typeof input === 'string' && isValidFormat(options.format)) {
if (options.strictMode && input.length !== options.format.length) return false;
var formatDelimiter = options.delimiters.find(function (delimiter) {
return options.format.indexOf(delimiter) !== -1;
});
var dateDelimiter = options.strictMode ? formatDelimiter : options.delimiters.find(function (delimiter) {
return input.indexOf(delimiter) !== -1;
});
var dateAndFormat = zip(input.split(dateDelimiter), options.format.toLowerCase().split(formatDelimiter));
var dateObj = {};
var _iterator = _createForOfIteratorHelper(dateAndFormat),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var _step$value = _slicedToArray(_step.value, 2),
dateWord = _step$value[0],
formatWord = _step$value[1];
if (!dateWord || !formatWord || dateWord.length !== formatWord.length) {
return false;
}
dateObj[formatWord.charAt(0)] = dateWord;
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
var fullYear = dateObj.y;
// Check if the year starts with a hyphen
if (fullYear.startsWith('-')) {
return false; // Hyphen before year is not allowed
}
if (dateObj.y.length === 2) {
var parsedYear = parseInt(dateObj.y, 10);
if (isNaN(parsedYear)) {
return false;
}
var currentYearLastTwoDigits = new Date().getFullYear() % 100;
if (parsedYear < currentYearLastTwoDigits) {
fullYear = "20".concat(dateObj.y);
} else {
fullYear = "19".concat(dateObj.y);
}
}
var month = dateObj.m;
if (dateObj.m.length === 1) {
month = "0".concat(dateObj.m);
}
var day = dateObj.d;
if (dateObj.d.length === 1) {
day = "0".concat(dateObj.d);
}
return new Date("".concat(fullYear, "-").concat(month, "-").concat(day, "T00:00:00.000Z")).getUTCDate() === +dateObj.d;
}
if (!options.strictMode) {
return Object.prototype.toString.call(input) === '[object Date]' && isFinite(input);
}
return false;
}
module.exports = exports.default;
module.exports.default = exports.default;
})(isDate$1, isDate$1.exports);
var isDate = /*@__PURE__*/getDefaultExportFromCjs(isDate$1.exports);
var isEmail$1 = {exports: {}};
var assertString = {exports: {}};
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = assertString;
function assertString(input) {
if (input === undefined || input === null) throw new TypeError("Expected a string but received a ".concat(input));
if (input.constructor.name !== 'String') throw new TypeError("Expected a string but received a ".concat(input.constructor.name));
}
module.exports = exports.default;
module.exports.default = exports.default;
})(assertString, assertString.exports);
var checkHost = {exports: {}};
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = checkHost;
function isRegExp(obj) {
return Object.prototype.toString.call(obj) === '[object RegExp]';
}
function checkHost(host, matches) {
for (var i = 0; i < matches.length; i++) {
var match = matches[i];
if (host === match || isRegExp(match) && match.test(host)) {
return true;
}
}
return false;
}
module.exports = exports.default;
module.exports.default = exports.default;
})(checkHost, checkHost.exports);
var isByteLength = {exports: {}};
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = isByteLength;
var _assertString = _interopRequireDefault(assertString.exports);
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
};
}
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
/* eslint-disable prefer-rest-params */
function isByteLength(str, options) {
(0, _assertString.default)(str);
var min;
var max;
if (_typeof(options) === 'object') {
min = options.min || 0;
max = options.max;
} else {
// backwards compatibility: isByteLength(str, min [, max])
min = arguments[1];
max = arguments[2];
}
var len = encodeURI(str).split(/%..|./).length - 1;
return len >= min && (typeof max === 'undefined' || len <= max);
}
module.exports = exports.default;
module.exports.default = exports.default;
})(isByteLength, isByteLength.exports);
var isFQDN = {exports: {}};
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = isFQDN;
var _assertString = _interopRequireDefault(assertString.exports);
var _merge = _interopRequireDefault(merge.exports);
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
};
}
var default_fqdn_options = {
require_tld: true,
allow_underscores: false,
allow_trailing_dot: false,
allow_numeric_tld: false,
allow_wildcard: false,
ignore_max_length: false
};
function isFQDN(str, options) {
(0, _assertString.default)(str);
options = (0, _merge.default)(options, default_fqdn_options);
/* Remove the optional trailing dot before checking validity */
if (options.allow_trailing_dot && str[str.length - 1] === '.') {
str = str.substring(0, str.length - 1);
}
/* Remove the optional wildcard before checking validity */
if (options.allow_wildcard === true && str.indexOf('*.') === 0) {
str = str.substring(2);
}
var parts = str.split('.');
var tld = parts[parts.length - 1];
if (options.require_tld) {
// disallow fqdns without tld
if (parts.length < 2) {
return false;
}
if (!options.allow_numeric_tld && !/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {
return false;
}
// disallow spaces
if (/\s/.test(tld)) {
return false;
}
}
// reject numeric TLDs
if (!options.allow_numeric_tld && /^\d+$/.test(tld)) {
return false;
}
return parts.every(function (part) {
if (part.length > 63 && !options.ignore_max_length) {
return false;
}
if (!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(part)) {
return false;
}
// disallow full-width chars
if (/[\uff01-\uff5e]/.test(part)) {
return false;
}
// disallow parts starting or ending with hyphen
if (/^-|-$/.test(part)) {
return false;
}
if (!options.allow_underscores && /_/.test(part)) {
return false;
}
return true;
});
}
module.exports = exports.default;
module.exports.default = exports.default;
})(isFQDN, isFQDN.exports);
var isIP = {exports: {}};
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = isIP;
var _assertString = _interopRequireDefault(assertString.exports);
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
};
}
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
/**
11.3. Examples
The following addresses
fe80::1234 (on the 1st link of the node)
ff02::5678 (on the 5th link of the node)
ff08::9abc (on the 10th organization of the node)
would be represented as follows:
fe80::1234%1
ff02::5678%5
ff08::9abc%10
(Here we assume a natural translation from a zone index to the
<zone_id> part, where the Nth zone of any scope is translated into
"N".)
If we use interface names as <zone_id>, those addresses could also be
represented as follows:
fe80::1234%ne0
ff02::5678%pvc1.3
ff08::9abc%interface10
where the interface "ne0" belongs to the 1st link, "pvc1.3" belongs
to the 5th link, and "interface10" belongs to the 10th organization.
* * */
var IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
var IPv4AddressFormat = "(".concat(IPv4SegmentFormat, "[.]){3}").concat(IPv4SegmentFormat);
var IPv4AddressRegExp = new RegExp("^".concat(IPv4AddressFormat, "$"));
var IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';
var IPv6AddressRegExp = new RegExp('^(' + "(?:".concat(IPv6SegmentFormat, ":){7}(?:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){6}(?:").concat(IPv4AddressFormat, "|:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){5}(?::").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,2}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){4}(?:(:").concat(IPv6SegmentFormat, "){0,1}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,3}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){3}(?:(:").concat(IPv6SegmentFormat, "){0,2}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,4}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){2}(?:(:").concat(IPv6SegmentFormat, "){0,3}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,5}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){1}(?:(:").concat(IPv6SegmentFormat, "){0,4}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,6}|:)|") + "(?::((?::".concat(IPv6SegmentFormat, "){0,5}:").concat(IPv4AddressFormat, "|(?::").concat(IPv6SegmentFormat, "){1,7}|:))") + ')(%[0-9a-zA-Z.]{1,})?$');
function isIP(ipAddress) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
(0, _assertString.default)(ipAddress);
// accessing 'arguments' for backwards compatibility: isIP(ipAddress [, version])
// eslint-disable-next-line prefer-rest-params
var version = (_typeof(options) === 'object' ? options.version : arguments[1]) || '';
if (!version) {
return isIP(ipAddress, {
version: 4
}) || isIP(ipAddress, {
version: 6
});
}
if (version.toString() === '4') {
return IPv4AddressRegExp.test(ipAddress);
}
if (version.toString() === '6') {
return IPv6AddressRegExp.test(ipAddress);
}
return false;
}
module.exports = exports.default;
module.exports.default = exports.default;
})(isIP, isIP.exports);
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = isEmail;
var _assertString = _interopRequireDefault(assertString.exports);
var _checkHost = _interopRequireDefault(checkHost.exports);
var _isByteLength = _interopRequireDefault(isByteLength.exports);
var _isFQDN = _interopRequireDefault(isFQDN.exports);
var _isIP = _interopRequireDefault(isIP.exports);
var _merge = _interopRequireDefault(merge.exports);
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
};
}
var default_email_options = {
allow_display_name: false,
allow_underscores: false,
require_display_name: false,
allow_utf8_local_part: true,
require_tld: true,
blacklisted_chars: '',
ignore_max_length: false,
host_blacklist: [],
host_whitelist: []
};
/* eslint-disable max-len */
/* eslint-disable no-control-regex */
var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)</i;
var emailUserPart = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i;
var gmailUserPart = /^[a-z\d]+$/;
var quotedEmailUser = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i;
var emailUserUtf8Part = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A1-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i;
var quotedEmailUserUtf8 = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i;
var defaultMaxEmailLength = 254;
/* eslint-enable max-len */
/* eslint-enable no-control-regex */
/**
* Validate display name according to the RFC2822: https://tools.ietf.org/html/rfc2822#appendix-A.1.2
* @param {String} display_name
*/
function validateDisplayName(display_name) {
var display_name_without_quotes = display_name.replace(/^"(.+)"$/, '$1');
// display name with only spaces is not valid
if (!display_name_without_quotes.trim()) {
return false;
}
// check whether display name contains illegal character
var contains_illegal = /[\.";<>]/.test(display_name_without_quotes);
if (contains_illegal) {
// if contains illegal characters,
// must to be enclosed in double-quotes, otherwise it's not a valid display name
if (display_name_without_quotes === display_name) {
return false;
}
// the quotes in display name must start with character symbol \
var all_start_with_back_slash = display_name_without_quotes.split('"').length === display_name_without_quotes.split('\\"').length;
if (!all_start_with_back_slash) {
return false;
}
}
return true;
}
function isEmail(str, options) {
(0, _assertString.default)(str);
options = (0, _merge.default)(options, default_email_options);
if (options.require_display_name || options.allow_display_name) {
var display_email = str.match(splitNameAddress);
if (display_email) {
var display_name = display_email[1];
// Remove display name and angle brackets to get email address
// Can be done in the regex but will introduce a ReDOS (See #1597 for more info)
str = str.replace(display_name, '').replace(/(^<|>$)/g, '');
// sometimes need to trim the last space to get the display name
// because there may be a space between display name and email address
// eg. myname <address@gmail.com>
// the display name is `myname` instead of `myname `, so need to trim the last space
if (display_name.endsWith(' ')) {
display_name = display_name.slice(0, -1);
}
if (!validateDisplayName(display_name)) {
return false;
}
} else if (options.require_display_name) {
return false;
}
}
if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {
return false;
}
var parts = str.split('@');
var domain = parts.pop();
var lower_domain = domain.toLowerCase();
if (options.host_blacklist.length > 0 && (0, _checkHost.default)(lower_domain, options.host_blacklist)) {
return false;
}
if (options.host_whitelist.length > 0 && !(0, _checkHost.default)(lower_domain, options.host_whitelist)) {
return false;
}
var user = parts.join('@');
if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {
/*
Previously we removed dots for gmail addresses before validating.
This was removed because it allows `multiple..dots@gmail.com`
to be reported as valid, but it is not.
Gmail only normalizes single dots, removing them from here is pointless,
should be done in normalizeEmail
*/
user = user.toLowerCase();
// Removing sub-address from username before gmail validation
var username = user.split('+')[0];
// Dots are not included in gmail length restriction
if (!(0, _isByteLength.default)(username.replace(/\./g, ''), {
min: 6,
max: 30
})) {
return false;
}
var _user_parts = username.split('.');
for (var i = 0; i < _user_parts.length; i++) {
if (!gmailUserPart.test(_user_parts[i])) {
return false;
}
}
}
if (options.ignore_max_length === false && (!(0, _isByteLength.default)(user, {
max: 64
}) || !(0, _isByteLength.default)(domain, {
max: 254
}))) {
return false;
}
if (!(0, _isFQDN.default)(domain, {
require_tld: options.require_tld,
ignore_max_length: options.ignore_max_length,
allow_underscores: options.allow_underscores
})) {
if (!options.allow_ip_domain) {
return false;
}
if (!(0, _isIP.default)(domain)) {
if (!domain.startsWith('[') || !domain.endsWith(']')) {
return false;
}
var noBracketdomain = domain.slice(1, -1);
if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {
return false;
}
}
}
if (options.blacklisted_chars) {
if (user.search(new RegExp("[".concat(options.blacklisted_chars, "]+"), 'g')) !== -1) return false;
}
if (user[0] === '"' && user[user.length - 1] === '"') {
user = user.slice(1, user.length - 1);
return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);
}
var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;
var user_parts = user.split('.');
for (var _i = 0; _i < user_parts.length; _i++) {
if (!pattern.test(user_parts[_i])) {
return false;
}
}
return true;
}
module.exports = exports.default;
module.exports.default = exports.default;
})(isEmail$1, isEmail$1.exports);
var isEmail = /*@__PURE__*/getDefaultExportFromCjs(isEmail$1.exports);
var isURL$1 = {exports: {}};
var includesString = {exports: {}};
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var includes = function includes(str, val) {
return str.indexOf(val) !== -1;
};
exports.default = includes;
module.exports = exports.default;
module.exports.default = exports.default;
})(includesString, includesString.exports);
(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = isURL;
var _assertString = _interopRequireDefault(assertString.exports);
var _checkHost = _interopRequireDefault(checkHost.exports);
var _includesString = _interopRequireDefault(includesString.exports);
var _isFQDN = _interopRequireDefault(isFQDN.exports);
var _isIP = _interopRequireDefault(isIP.exports);
var _merge = _interopRequireDefault(merge.exports);
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
};
}
function _slicedToArray(r, e) {
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _unsupportedIterableToArray(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray(r, a);
var t = {}.toString.call(r).slice(8, -1);
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
}
}
function _arrayLikeToArray(r, a) {
(null == a || a > r.length) && (a = r.length);
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
return n;
}
function _iterableToArrayLimit(r, l) {
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (null != t) {
var e,
n,
i,
u,
a = [],
f = !0,
o = !1;
try {
if (i = (t = t.call(r)).next, 0 === l) {
if (Object(t) !== t) return;
f = !1;
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
} catch (r) {
o = !0, n = r;
} finally {
try {
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
} finally {
if (o) throw n;
}
}
return a;
}
}
function _arrayWithHoles(r) {
if (Array.isArray(r)) return r;
}
/*
options for isURL method
protocols - valid protocols can be modified with this option.
require_tld - If set to false isURL will not check if the URL's host includes a top-level domain.
require_protocol - if set to true isURL will return false if protocol is not present in the URL.
require_host - if set to false isURL will not check if host is present in the URL.
require_port - if set to true isURL will check if port is present in the URL.
require_valid_protocol - isURL will check if the URL's protocol is present in the protocols option.
allow_underscores - if set to true, the validator will allow underscores in the URL.
host_whitelist - if set to an array of strings or regexp, and the domain matches none of the strings
defined in it, the validation fails.
host_blacklist - if set to an array of strings or regexp, and the domain matches any of the strings
defined in it, the validation fails.
allow_trailing_dot - if set to true, the validator will allow the domain to end with
a `.` character.
allow_protocol_relative_urls - if set to true protocol relative URLs will be allowed.
allow_fragments - if set to false isURL will return false if fragments are present.
allow_query_components - if set to false isURL will return false if query components are present.
disallow_auth - if set to true, the validator will fail if the URL contains an authentication
component, e.g. `http://username:password@example.com`
validate_length - if set to false isURL will skip string length validation. `max_allowed_length`
will be ignored if this is set as `false`.
max_allowed_length - if set, isURL will not allow URLs longer than the specified value (default is
2084 that IE maximum URL length).
*/
var default_url_options = {
protocols: ['http', 'https', 'ftp'],
require_tld: true,
require_protocol: false,
require_host: true,
require_port: false,
require_valid_protocol: true,
allow_underscores: false,
allow_trailing_dot: false,
allow_protocol_relative_urls: false,
allow_fragments: true,
allow_query_components: true,
validate_length: true,
max_allowed_length: 2084
};
var wrapped_ipv6 = /^\[([^\]]+)\](?::([0-9]+))?$/;
function isURL(url, options) {
(0, _assertString.default)(url);
if (!url || /[\s<>]/.test(url)) {
return false;
}
if (url.indexOf('mailto:') === 0) {
return false;
}
options = (0, _merge.default)(options, default_url_options);
if (options.validate_length && url.length > options.max_allowed_length) {
return false;
}
if (!options.allow_fragments && (0, _includesString.default)(url, '#')) {
return false;
}
if (!options.allow_query_components && ((0, _includesString.default)(url, '?') || (0, _includesString.default)(url, '&'))) {
return false;
}
var protocol, auth, host, hostname, port, port_str, split, ipv6;
split = url.split('#');
url = split.shift();
split = url.split('?');
url = split.shift();
// Replaced the 'split("://")' logic with a regex to match the protocol.
// This correctly identifies schemes like `javascript:` which don't use `//`.
// However, we need to be careful not to confuse authentication credentials (user:password@host)
// with protocols. A colon before an @ symbol might be part of auth, not a protocol separator.
var protocol_match = url.match(/^([a-z][a-z0-9+\-.]*):/i);
var had_explicit_protocol = false;
var cleanUpProtocol = function cleanUpProtocol(potential_protocol) {
had_explicit_protocol = true;
protocol = potential_protocol.toLowerCase();
if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {
// The identified protocol is not in the allowed list.
return false;
}
// Remove the protocol from the URL string.
return url.substring(protocol_match[0].length);
};
if (protocol_match) {
var potential_protocol = protocol_match[1];
var after_colon = url.substring(protocol_match[0].length);
// Check if what follows looks like authentication credentials (user:password@host)
// rather than a protocol. This happens when:
// 1. There's no `//` after the colon (protocols like `http://` have this)
// 2. There's an `@` symbol before any `/`
// 3. The part before `@` contains only valid auth characters (alphanumeric, -, _, ., %, :)
var starts_with_slashes = after_colon.slice(0, 2) === '//';
if (!starts_with_slashes) {
var first_slash_position = after_colon.indexOf('/');
var before_slash = first_slash_position === -1 ? after_colon : after_colon.substring(0, first_slash_position);
var at_position = before_slash.indexOf('@');
if (at_position !== -1) {
var before_at = before_slash.substring(0, at_position);
var valid_auth_regex = /^[a-zA-Z0-9\-_.%:]*$/;
var is_valid_auth = valid_auth_regex.test(before_at);
if (is_valid_auth) {
// This looks like authentication (e.g., user:password@host), not a protocol
if (options.require_protocol) {
return false;
}
// Don't consume the colon; let the auth parsing handle it later
} else {
// This looks like a malicious protocol (e.g., javascript:alert();@host)
url = cleanUpProtocol(potential_protocol);
if (url === false) {
return false;
}
}
} else {
// No @ symbol found. Check if this could be a port number instead of a protocol.
// If what's after the colon is numeric (or starts with a digit and contains only
// valid port characters until a path separator), it's likely hostname:port, not a protocol.
var looks_like_port = /^[0-9]/.test(after_colon);
if (looks_like_port) {
// This looks like hostname:port, not a protocol
if (options.require_protocol) {
return false;
}
// Don't consume anything; let it be parsed as hostname:port
} else {
// This is definitely a protocol
url = cleanUpProtocol(potential_protocol);
if (url === false) {
return false;
}
}
}
} else {
// Starts with '//', this is definitely a protocol like http://
url = cleanUpProtocol(potential_protocol);
if (url === false) {
return false;
}
}
} else if (options.require_protocol) {
return false;
}
// Handle leading '//' only as protocol-relative when there was NO explicit protocol.
// If there was an explicit protocol, '//' is the normal separator
// and should be stripped unconditionally.
if (url.slice(0, 2) === '//') {
if (!had_explicit_protocol && !options.allow_protocol_relative_urls) {
return false;
}
url = url.slice(2);
}
if (url === '') {
return false;
}
split = url.split('/');
url = split.shift();
if (url === '' && !options.require_host) {
return true;
}
split = url.split('@');
if (split.length > 1) {
if (options.disallow_auth) {
return false;
}
if (split[0] === '') {
return false;
}
auth = split.shift();
if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {
return false;
}
var _auth$split = auth.split(':'),
_auth$split2 = _slicedToArray(_auth$split, 2),
user = _auth$split2[0],
password = _auth$split2[1];
if (user === '' && password === '') {
return false;
}
}
hostname = split.join('@');
port_str = null;
ipv6 = null;
var ipv6_match = hostname.match(wrapped_ipv6);
if (ipv6_match) {
host = '';
ipv6 = ipv6_match[1];
port_str = ipv6_match[2] || null;
} else {
split = hostname.split(':');
host = split.shift();
if (split.length) {
port_str = split.join(':');
}
}
if (port_str !== null && port_str.length > 0) {
port = parseInt(port_str, 10);
if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {
return false;
}
} else if (options.require_port) {
return false;
}
if (options.host_whitelist) {
return (0, _checkHost.default)(host, options.host_whitelist);
}
if (host === '' && !options.require_host) {
return true;
}
if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {
return false;
}
host = host || ipv6;
if (options.host_blacklist && (0, _checkHost.default)(host, options.host_blacklist)) {
return false;
}
return true;
}
module.exports = exports.default;
module.exports.default = exports.default;
})(isURL$1, isURL$1.exports);
var isURL = /*@__PURE__*/getDefaultExportFromCjs(isURL$1.exports);
function ownKeys$r(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$p(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$r(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$r(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function getCharacterLength(str, maxCharacter) {
var hasMaxCharacter = isNumber(maxCharacter);
if (!str || str.length === 0) {
if (hasMaxCharacter) {
return {
length: 0,
characters: str
};
}
return 0;
}
var len = 0;
for (var i = 0; i < str.length; i++) {
var currentStringLength = 0;
if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {
currentStringLength = 2;
} else {
currentStringLength = 1;
}
if (hasMaxCharacter && len + currentStringLength > maxCharacter) {
return {
length: len,
characters: str.slice(0, i)
};
}
len += currentStringLength;
}
if (hasMaxCharacter) {
return {
length: len,
characters: str
};
}
return len;
}
function isValueEmpty(val) {
var type = Object.prototype.toString.call(val);
var typeMap = {
Date: "[object Date]"
};
if (type === typeMap.Date) {
return false;
}
return isObject$1(val) ? isEmpty(val) : ["", void 0, null].includes(val);
}
var VALIDATE_MAP = {
date: isDate,
url: isURL,
email: isEmail,
required: function required(val) {
return !isValueEmpty(val);
},
whitespace: function whitespace(val) {
return !(/^\s+$/.test(val) || val === "");
},
boolean: function boolean(val) {
return isBoolean(val);
},
max: function max(val, num) {
return isNumber(val) ? val <= num : getCharacterLength(val) <= num;
},
min: function min(val, num) {
return isNumber(val) ? val >= num : getCharacterLength(val) >= num;
},
len: function len(val, num) {
return getCharacterLength(val) === num;
},
number: function number(val) {
return isNumber(val);
},
enum: function _enum(val, strs) {
return strs.includes(val);
},
idcard: function idcard(val) {
return /^(\d{18,18}|\d{15,15}|\d{17,17}x)$/i.test(val);
},
telnumber: function telnumber(val) {
return /^1[3-9]\d{9}$/.test(val);
},
pattern: function pattern(val, regexp) {
var reg = typeof regexp === "string" ? new RegExp(regexp) : regexp;
return reg.test(val);
},
validator: function validator(val, validate2) {
return validate2(val);
}
};
function validateOneRule(_x, _x2) {
return _validateOneRule.apply(this, arguments);
}
function _validateOneRule() {
_validateOneRule = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee(value, rule) {
var validateResult, keys, vOptions, vValidateFun, i, key, validateRule;
return regenerator.wrap(function (_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
validateResult = {
result: true
};
keys = Object.keys(rule);
i = 0;
case 1:
if (!(i < keys.length)) {
_context.next = 4;
break;
}
key = keys[i];
if (!(!rule.required && isValueEmpty(value) && !rule.validator)) {
_context.next = 2;
break;
}
return _context.abrupt("return", validateResult);
case 2:
validateRule = VALIDATE_MAP[key];
if (!(validateRule && (rule[key] || rule[key] === 0))) {
_context.next = 3;
break;
}
vOptions = rule[key] === true ? void 0 : rule[key];
vValidateFun = validateRule;
return _context.abrupt("continue", 4);
case 3:
i++;
_context.next = 1;
break;
case 4:
if (!vValidateFun) {
_context.next = 7;
break;
}
_context.next = 5;
return vValidateFun(value, vOptions);
case 5:
validateResult = _context.sent;
if (!isBoolean(validateResult)) {
_context.next = 6;
break;
}
return _context.abrupt("return", _objectSpread$p(_objectSpread$p({}, rule), {}, {
result: validateResult
}));
case 6:
if (!isObject$1(validateResult)) {
_context.next = 7;
break;
}
return _context.abrupt("return", validateResult);
case 7:
return _context.abrupt("return", validateResult);
case 8:
case "end":
return _context.stop();
}
}, _callee);
}));
return _validateOneRule.apply(this, arguments);
}
function validate(_x3, _x4) {
return _validate.apply(this, arguments);
}
function _validate() {
_validate = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee2(value, rules) {
var all, r;
return regenerator.wrap(function (_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
all = rules.map(function (rule) {
return validateOneRule(value, rule);
});
_context2.next = 1;
return Promise.all(all);
case 1:
r = _context2.sent;
return _context2.abrupt("return", r);
case 2:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return _validate.apply(this, arguments);
}
var props$q = {
arrow: Boolean,
contentAlign: {
type: String,
default: "left",
validator: function validator(val) {
if (!val) return true;
return ["left", "right"].includes(val);
}
},
for: {
type: String,
default: ""
},
help: {
type: [String, Function]
},
label: {
type: [String, Function],
default: ""
},
labelAlign: {
type: String,
validator: function validator(val) {
if (!val) return true;
return ["left", "right", "top"].includes(val);
}
},
labelWidth: {
type: [String, Number]
},
name: {
type: String,
default: ""
},
requiredMark: {
type: Boolean,
default: void 0
},
rules: {
type: Array
},
showErrorMessage: {
type: Boolean,
default: void 0
}
};
function ownKeys$q(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$o(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$q(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$I = config.prefix;
var _FormItem = vue.defineComponent({
name: "".concat(prefix$I, "-form-item"),
props: props$q,
setup: function setup(props2, _ref) {
var slots = _ref.slots;
var renderTNodeJSX = useTNodeJSX();
var formClass = usePrefixClass("form");
var formItemClass = usePrefixClass("form__item");
var _toRefs = vue.toRefs(props2),
name = _toRefs.name;
var form = vue.inject(FormInjectionKey, void 0);
var extraNode = vue.computed(function () {
var _list$;
var list = errorList.value;
if (showErrorMessage.value && (_list$ = list[0]) !== null && _list$ !== void 0 && _list$.message) {
var _list$2;
return (_list$2 = list[0]) === null || _list$2 === void 0 ? void 0 : _list$2.message;
}
if (successList.value.length) {
return successList.value[0].message;
}
return null;
});
var formItemClasses = vue.computed(function () {
return [formItemClass.value, "".concat(formItemClass.value, "--bordered"), "".concat(formClass.value, "--").concat(labelAlign.value), "".concat(formClass.value, "-item__").concat(props2.name)];
});
var needRequiredMark = vue.computed(function () {
var _props2$requiredMark;
var requiredMark = (_props2$requiredMark = props2.requiredMark) !== null && _props2$requiredMark !== void 0 ? _props2$requiredMark : form === null || form === void 0 ? void 0 : form.requiredMark;
var isRequired = innerRules.value.filter(function (rule) {
return rule.required;
}).length > 0;
return requiredMark !== null && requiredMark !== void 0 ? requiredMark : isRequired;
});
var requiredMarkPosition = vue.computed(function () {
return form === null || form === void 0 ? void 0 : form.requiredMarkPosition;
});
var hasLabel = vue.computed(function () {
return slots.label || props2.label;
});
var hasColon = vue.computed(function () {
return !!(form !== null && form !== void 0 && form.colon && hasLabel.value);
});
var labelClass = "".concat(formClass.value, "__label");
var labelAlign = vue.computed(function () {
return isNil(props2.labelAlign) ? form === null || form === void 0 ? void 0 : form.labelAlign : props2.labelAlign;
});
var labelWidth = vue.computed(function () {
return isNil(props2.labelWidth) ? form === null || form === void 0 ? void 0 : form.labelWidth : props2.labelWidth;
});
var contentAlign = vue.computed(function () {
return isNil(props2.contentAlign) ? form === null || form === void 0 ? void 0 : form.contentAlign : props2.contentAlign;
});
var labelClasses = vue.computed(function () {
return [labelClass, _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(labelClass, "--required"), needRequiredMark.value), "".concat(labelClass, "--required-right"), needRequiredMark.value && requiredMarkPosition.value === "right"), "".concat(labelClass, "--colon"), hasColon.value), "".concat(labelClass, "--top"), hasLabel.value && (labelAlign.value === "top" || !labelWidth.value)), "".concat(labelClass, "--left"), labelAlign.value === "left" && labelWidth.value), "".concat(labelClass, "--right"), labelAlign.value === "right" && labelWidth.value)];
});
var labelStyle = vue.computed(function () {
if (labelWidth.value && labelAlign.value !== "top") {
return isNumber(labelWidth.value) ? {
width: "".concat(labelWidth.value, "px")
} : {
width: labelWidth.value
};
}
return {};
});
var freeShowErrorMessage = vue.ref(false);
var showErrorMessage = vue.computed(function () {
if (isBoolean(freeShowErrorMessage.value)) return freeShowErrorMessage.value;
if (isBoolean(props2.showErrorMessage)) return props2.showErrorMessage;
return form === null || form === void 0 ? void 0 : form.showErrorMessage;
});
var errorClasses = vue.computed(function () {
if (!showErrorMessage.value) return "";
if (!errorList.value.length) return "";
var type = errorList.value[0].type || "error";
return type === "error" ? "".concat(formItemClass.value, "--error") : "".concat(formItemClass.value, "--warning");
});
var contentClasses = vue.computed(function () {
return ["".concat(formClass.value, "__controls"), errorClasses.value];
});
var contentSlotClasses = vue.computed(function () {
return ["".concat(formClass.value, "__controls-content"), "".concat(formClass.value, "__controls--").concat(contentAlign.value)];
});
var contentStyle = vue.computed(function () {
var contentStyle2 = {};
if (labelWidth.value && labelAlign.value !== "top") {
if (isNumber(labelWidth.value)) {
contentStyle2 = {
marginLeft: "".concat(labelWidth.value, "px")
};
} else {
contentStyle2 = {
marginLeft: labelWidth.value
};
}
}
return contentStyle2;
});
var errorList = vue.ref([]);
var successList = vue.ref([]);
var verifyStatus = vue.ref(ValidateStatus.TO_BE_VALIDATED);
var resetValidating = vue.ref(false);
var needResetField = vue.ref(false);
var resetHandler = function resetHandler() {
needResetField.value = false;
errorList.value = [];
successList.value = [];
verifyStatus.value = ValidateStatus.TO_BE_VALIDATED;
};
var getEmptyValue = function getEmptyValue() {
var type = Object.prototype.toString.call(get(form === null || form === void 0 ? void 0 : form.data, "".concat(props2.name)));
var emptyValue;
if (type === "[object String]") {
emptyValue = "";
}
if (type === "[object Array]") {
emptyValue = [];
}
if (type === "[object Object]") {
emptyValue = {};
}
return emptyValue;
};
var resetField = /*#__PURE__*/function () {
var _ref3 = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee() {
var resetType,
_args = arguments;
return regenerator.wrap(function (_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
resetType = _args.length > 0 && _args[0] !== undefined ? _args[0] : form === null || form === void 0 ? void 0 : form.resetType;
if (props2.name) {
_context.next = 1;
break;
}
return _context.abrupt("return", null);
case 1:
if (resetType === "empty") {
set(form === null || form === void 0 ? void 0 : form.data, props2.name, getEmptyValue());
} else if (resetType === "initial") {
set(form === null || form === void 0 ? void 0 : form.data, props2.name, initialValue.value);
}
_context.next = 2;
return vue.nextTick();
case 2:
if (resetValidating.value) {
needResetField.value = true;
} else {
resetHandler();
}
case 3:
case "end":
return _context.stop();
}
}, _callee);
}));
return function resetField() {
return _ref3.apply(this, arguments);
};
}();
var errorMessages = vue.computed(function () {
return (form === null || form === void 0 ? void 0 : form.errorMessage) || {};
});
var innerRules = vue.computed(function () {
var _props2$rules;
if ((_props2$rules = props2.rules) !== null && _props2$rules !== void 0 && _props2$rules.length) return props2.rules;
if (!props2.name) return [];
var index = "".concat(props2.name).lastIndexOf(".") || -1;
var pRuleName = "".concat(props2.name).slice(index + 1);
return get(form === null || form === void 0 ? void 0 : form.rules, props2.name) || get(form === null || form === void 0 ? void 0 : form.rules, pRuleName) || [];
});
var analysisValidateResult = /*#__PURE__*/function () {
var _ref4 = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee2(trigger) {
var _result$rules;
var result;
return regenerator.wrap(function (_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
result = {
successList: [],
errorList: [],
rules: [],
resultList: [],
allowSetValue: false
};
result.rules = trigger === "all" ? innerRules.value : innerRules.value.filter(function (item) {
return (item.trigger || "change") === trigger;
});
if (!(innerRules.value.length && !((_result$rules = result.rules) !== null && _result$rules !== void 0 && _result$rules.length))) {
_context2.next = 1;
break;
}
return _context2.abrupt("return", result);
case 1:
result.allowSetValue = true;
_context2.next = 2;
return validate(value.value, result.rules);
case 2:
result.resultList = _context2.sent;
result.errorList = result.resultList.filter(function (item) {
return item.result !== true;
}).map(function (item) {
Object.keys(item).forEach(function (key) {
if (!item.message && errorMessages.value[key]) {
var compiled = template(errorMessages.value[key]);
var name2 = isString(props2.label) ? props2.label : props2.name;
item.message = compiled({
name: name2,
validate: item[key]
});
}
});
return item;
});
result.successList = result.resultList.filter(function (item) {
return item.result === true && item.message && item.type === "success";
});
return _context2.abrupt("return", result);
case 3:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function analysisValidateResult(_x) {
return _ref4.apply(this, arguments);
};
}();
var validateHandler = /*#__PURE__*/function () {
var _ref5 = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee3(trigger, showErrorMessage2) {
var _yield$analysisValida, innerSuccessList, innerErrorList, rules, resultList, allowSetValue;
return regenerator.wrap(function (_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
resetValidating.value = true;
freeShowErrorMessage.value = showErrorMessage2;
_context3.next = 1;
return analysisValidateResult(trigger);
case 1:
_yield$analysisValida = _context3.sent;
innerSuccessList = _yield$analysisValida.successList;
innerErrorList = _yield$analysisValida.errorList;
rules = _yield$analysisValida.rules;
resultList = _yield$analysisValida.resultList;
allowSetValue = _yield$analysisValida.allowSetValue;
if (allowSetValue) {
successList.value = innerSuccessList || [];
errorList.value = innerErrorList || [];
}
if (rules.length) {
verifyStatus.value = innerErrorList !== null && innerErrorList !== void 0 && innerErrorList.length ? ValidateStatus.FAIL : ValidateStatus.SUCCESS;
}
if (needResetField.value) {
resetHandler();
}
resetValidating.value = false;
return _context3.abrupt("return", _defineProperty$3({}, "".concat(name.value), (innerErrorList === null || innerErrorList === void 0 ? void 0 : innerErrorList.length) === 0 ? true : resultList));
case 2:
case "end":
return _context3.stop();
}
}, _callee3);
}));
return function validateHandler(_x2, _x3) {
return _ref5.apply(this, arguments);
};
}();
var validateOnly = /*#__PURE__*/function () {
var _ref7 = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee4(trigger) {
var _yield$analysisValida2, innerErrorList, resultList;
return regenerator.wrap(function (_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 1;
return analysisValidateResult(trigger);
case 1:
_yield$analysisValida2 = _context4.sent;
innerErrorList = _yield$analysisValida2.errorList;
resultList = _yield$analysisValida2.resultList;
return _context4.abrupt("return", _defineProperty$3({}, props2.name, innerErrorList.length === 0 ? true : resultList));
case 2:
case "end":
return _context4.stop();
}
}, _callee4);
}));
return function validateOnly(_x4) {
return _ref7.apply(this, arguments);
};
}();
var setValidateMessage = function setValidateMessage(validateMessage) {
if (!validateMessage && !isArray$1(validateMessage)) return;
if (validateMessage.length === 0) {
errorList.value = [];
verifyStatus.value = ValidateStatus.SUCCESS;
}
errorList.value = validateMessage.map(function (item) {
return _objectSpread$o(_objectSpread$o({}, item), {}, {
result: false
});
});
verifyStatus.value = ValidateStatus.FAIL;
};
var value = vue.computed(function () {
return (form === null || form === void 0 ? void 0 : form.data) && get(form === null || form === void 0 ? void 0 : form.data, "".concat(name.value));
});
var initialValue = vue.ref(void 0);
var context = vue.reactive({
name: name,
resetHandler: resetHandler,
resetField: resetField,
validate: validateHandler,
validateOnly: validateOnly,
setValidateMessage: setValidateMessage
});
vue.onMounted(function () {
initialValue.value = cloneDeep(value.value);
form === null || form === void 0 || form.children.push(context);
});
vue.onBeforeUnmount(function () {
if (form) form.children = form === null || form === void 0 ? void 0 : form.children.filter(function (ctx) {
return ctx !== context;
});
});
vue.watch(value, /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee5() {
return regenerator.wrap(function (_context5) {
while (1) switch (_context5.prev = _context5.next) {
case 0:
_context5.next = 1;
return validateHandler("change");
case 1:
case "end":
return _context5.stop();
}
}, _callee5);
})), {
deep: true
});
vue.watch(function () {
return [props2.name, JSON.stringify(props2.rules)].join(",");
}, function () {
validateHandler("change");
});
var handleBlur = /*#__PURE__*/function () {
var _ref0 = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee6() {
return regenerator.wrap(function (_context6) {
while (1) switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 1;
return validateHandler("blur");
case 1:
case "end":
return _context6.stop();
}
}, _callee6);
}));
return function handleBlur() {
return _ref0.apply(this, arguments);
};
}();
vue.provide(FormItemInjectionKey, {
handleBlur: handleBlur
});
return function () {
var renderRightIconContent = function renderRightIconContent() {
if (!props2.arrow) {
return null;
}
return vue.createVNode(ChevronRightIcon, {
"size": "24px",
"style": {
color: "rgba(0, 0, 0, .4)"
}
}, null);
};
var renderLabelContent = function renderLabelContent() {
if (Number(labelWidth.value) === 0) {
return null;
}
return renderTNodeJSX("label");
};
var renderHelpNode = function renderHelpNode() {
var helpNode = renderTNodeJSX("help");
if (!helpNode) {
return null;
}
return vue.createVNode("div", {
"class": ["".concat(formItemClass.value, "-help"), "".concat(formClass.value, "__controls--").concat(contentAlign.value)]
}, [helpNode]);
};
var renderExtraNode = function renderExtraNode() {
if (!extraNode.value) {
return null;
}
return vue.createVNode("div", {
"class": ["".concat(formItemClass.value, "-extra"), "".concat(formClass.value, "__controls--").concat(contentAlign.value)]
}, [extraNode.value]);
};
return vue.createVNode("div", {
"class": [].concat(_toConsumableArray(formItemClasses.value), [renderHelpNode() ? "".concat(formClass.value, "__item-with-help") : ""])
}, [vue.createVNode("div", {
"class": ["".concat(formItemClass.value, "-wrap"), "".concat(formItemClass.value, "--").concat(labelAlign.value)]
}, [vue.createVNode("div", {
"class": labelClasses.value,
"style": labelStyle.value
}, [vue.createVNode("label", {
"for": props2.for
}, [renderLabelContent()])]), vue.createVNode("div", {
"class": contentClasses.value,
"style": contentStyle.value
}, [vue.createVNode("div", {
"class": contentSlotClasses.value
}, [renderTNodeJSX("default")]), renderHelpNode(), renderExtraNode()])]), renderRightIconContent()]);
};
}
});
var Form = withInstall(_Form);
var FormItem = withInstall(_FormItem);
var InputProps = {
align: {
type: String,
default: "left",
validator: function validator(val) {
if (!val) return true;
return ["left", "center", "right"].includes(val);
}
},
allowInputOverMax: Boolean,
autocomplete: {
type: String,
default: void 0
},
autofocus: Boolean,
borderless: Boolean,
clearTrigger: {
type: String,
default: "always",
validator: function validator(val) {
if (!val) return true;
return ["always", "focus"].includes(val);
}
},
clearable: Boolean,
cursorColor: {
type: String,
default: "#0052d9"
},
disabled: {
type: Boolean,
default: void 0
},
enterkeyhint: {
type: String,
validator: function validator(val) {
if (!val) return true;
return ["enter", "done", "go", "next", "previous", "search", "send"].includes(val);
}
},
extra: {
type: Function
},
format: {
type: Function
},
label: {
type: [String, Function]
},
layout: {
type: String,
default: "horizontal",
validator: function validator(val) {
if (!val) return true;
return ["vertical", "horizontal"].includes(val);
}
},
maxcharacter: {
type: Number
},
maxlength: {
type: [String, Number]
},
name: {
type: String,
default: ""
},
placeholder: {
type: String,
default: void 0
},
prefixIcon: {
type: Function
},
readonly: {
type: Boolean,
default: void 0
},
spellCheck: Boolean,
status: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "success", "warning", "error"].includes(val);
}
},
suffix: {
type: [String, Function]
},
suffixIcon: {
type: Function
},
tips: {
type: [String, Function]
},
type: {
type: String,
default: "text",
validator: function validator(val) {
if (!val) return true;
return ["text", "number", "url", "tel", "password", "search", "submit", "hidden"].includes(val);
}
},
value: {
type: [String, Number],
default: void 0
},
modelValue: {
type: [String, Number],
default: void 0
},
defaultValue: {
type: [String, Number]
},
onBlur: Function,
onChange: Function,
onClear: Function,
onFocus: Function,
onValidate: Function
};
function useLengthLimit(params) {
var getValueByLimitNumber = function getValueByLimitNumber(inputValue) {
var _params$value = params.value,
allowInputOverMax = _params$value.allowInputOverMax,
maxlength = _params$value.maxlength,
maxcharacter = _params$value.maxcharacter;
if (!(maxlength || maxcharacter) || allowInputOverMax || !inputValue) return inputValue;
if (maxlength) {
return limitUnicodeMaxLength(inputValue, maxlength);
}
if (maxcharacter) {
var r = getCharacterLength$1(inputValue, maxcharacter);
if (isObject$1(r)) {
return r.characters;
}
}
};
var limitNumber = vue.computed(function () {
var _params$value2 = params.value,
maxlength = _params$value2.maxlength,
maxcharacter = _params$value2.maxcharacter,
value = _params$value2.value;
if (isNumber(value)) return String(value);
if (maxlength && maxcharacter) {
log.warn("Input", "Pick one of maxlength and maxcharacter please.");
}
if (maxlength) {
var length = value !== null && value !== void 0 && value.length ? getUnicodeLength(value) : 0;
return "".concat(length, "/").concat(maxlength);
}
if (maxcharacter) {
return "".concat(getCharacterLength$1(value || ""), "/").concat(maxcharacter);
}
return "";
});
var innerStatus = vue.computed(function () {
if (limitNumber.value) {
var _limitNumber$value$sp = limitNumber.value.split("/"),
_limitNumber$value$sp2 = _slicedToArray(_limitNumber$value$sp, 2),
current = _limitNumber$value$sp2[0],
total = _limitNumber$value$sp2[1];
return Number(current) > Number(total) ? "error" : "";
}
return "";
});
var onValidateChange = function onValidateChange() {
var _params$value$onValid, _params$value3;
(_params$value$onValid = (_params$value3 = params.value).onValidate) === null || _params$value$onValid === void 0 || _params$value$onValid.call(_params$value3, {
error: innerStatus.value ? "exceed-maximum" : void 0
});
};
vue.watch(innerStatus, onValidateChange);
vue.onMounted(function () {
innerStatus.value && onValidateChange();
});
return {
limitNumber: limitNumber,
getValueByLimitNumber: getValueByLimitNumber
};
}
function ownKeys$p(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$n(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$p(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$p(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$H = config.prefix;
var _Input = vue.defineComponent({
name: "".concat(prefix$H, "-input"),
props: _objectSpread$n(_objectSpread$n({}, InputProps), {}, {
labelAlign: {
type: String,
default: "top"
},
pattern: {
type: String
},
inputmode: {
type: String,
validator: function validator(val) {
if (!val) return true;
return ["search", "text", "none", "url", "tel", "email", "numeric", "decimal"].includes(val);
}
}
}),
setup: function setup(props, context) {
var renderTNodeJSX = useTNodeJSX();
var inputClass = usePrefixClass("input");
var isDisabled = useFormDisabled();
var inputRef = vue.ref();
var _toRefs = vue.toRefs(props),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props.defaultValue, props.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerValue = _useVModel2[0],
setInnerValue = _useVModel2[1];
var status = props.status || "default";
var renderType = vue.ref(props.type);
var focused = vue.ref(false);
var formItem = vue.inject(FormItemInjectionKey, void 0);
var inputClasses = vue.computed(function () {
return ["".concat(inputClass.value, "__control"), _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(inputClass.value, "--").concat(props.align), props.align !== "left"), "".concat(inputClass.value, "--").concat(status), status), "".concat(inputClass.value, "__control--disabled"), isDisabled.value), "".concat(inputClass.value, "--password"), renderType.value === "password")];
});
var rootClasses = vue.computed(function () {
return [inputClass.value, _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(inputClass.value, "--layout-").concat(props.layout), props.layout), "".concat(inputClass.value, "--center"), props.labelAlign === "center"), "".concat(inputClass.value, "--border"), !props.borderless)];
});
var showClear = vue.computed(function () {
if (isDisabled.value || props.readonly === true) return false;
if (props.clearable && innerValue.value && String(innerValue.value).length > 0) {
return props.clearTrigger === "always" || props.clearTrigger === "focus" && focused.value;
}
return false;
});
var limitParams = vue.computed(function () {
return {
value: [void 0, null].includes(innerValue.value) ? void 0 : String(innerValue.value),
maxlength: Number(props.maxlength),
maxcharacter: props.maxcharacter,
allowInputOverMax: props.allowInputOverMax,
status: props.status,
onValidate: props.onValidate
};
});
var _useLengthLimit = useLengthLimit(limitParams),
getValueByLimitNumber = _useLengthLimit.getValueByLimitNumber;
var setInputValue = function setInputValue() {
var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
var input = inputRef.value;
var sV = String(v);
if (!input) {
return;
}
if (input.value !== sV) {
input.value = sV;
}
};
var handleInput = function handleInput(e) {
if (e instanceof InputEvent) {
var checkInputType = e.inputType && e.inputType === "insertCompositionText";
if (e.isComposing || checkInputType) return;
}
inputValueChangeHandle(e);
};
var inputValueChangeHandle = function inputValueChangeHandle(e) {
var value2 = e.target.value;
setInnerValue(getValueByLimitNumber(value2));
vue.nextTick(function () {
return setInputValue(innerValue.value);
});
};
var focus = function focus() {
var _inputRef$value;
focused.value = true;
(_inputRef$value = inputRef.value) === null || _inputRef$value === void 0 || _inputRef$value.focus();
};
var blur = function blur() {
var _inputRef$value2;
focused.value = false;
(_inputRef$value2 = inputRef.value) === null || _inputRef$value2 === void 0 || _inputRef$value2.blur();
};
extendAPI({
focus: focus,
blur: blur
});
var handleClear = function handleClear(e) {
var _props$onClear;
e.preventDefault();
var val = props.type === "number" ? void 0 : "";
setInnerValue(val);
focus();
(_props$onClear = props.onClear) === null || _props$onClear === void 0 || _props$onClear.call(props, {
e: e
});
};
var handleFocus = function handleFocus(e) {
var _props$onFocus;
focused.value = true;
(_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 || _props$onFocus.call(props, innerValue.value, {
e: e
});
};
var handleBlur = function handleBlur(e) {
var _props$onBlur2;
focused.value = false;
if (isFunction(props.format)) {
setInnerValue(props.format(innerValue.value));
vue.nextTick(function () {
var _props$onBlur;
setInputValue(innerValue.value);
(_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, innerValue.value, {
e: e
});
formItem === null || formItem === void 0 || formItem.handleBlur();
});
return;
}
(_props$onBlur2 = props.onBlur) === null || _props$onBlur2 === void 0 || _props$onBlur2.call(props, innerValue.value, {
e: e
});
formItem === null || formItem === void 0 || formItem.handleBlur();
};
var handleCompositionend = function handleCompositionend(e) {
inputValueChangeHandle(e);
};
var handlePwdIconClick = function handlePwdIconClick() {
if (isDisabled.value) return;
renderType.value = renderType.value === "password" ? "text" : "password";
};
vue.watch(function () {
return props.autofocus;
}, function (v) {
if (v === true) {
vue.nextTick(function () {
focus();
});
}
}, {
immediate: true
});
vue.watch(function () {
return props.type;
}, function (v) {
renderType.value = v;
}, {
immediate: true
});
return function () {
var renderPrefix = function renderPrefix() {
var prefixIcon = renderTNodeJSX("prefixIcon");
var label = renderTNodeJSX("label");
return vue.createVNode("div", {
"class": "".concat(inputClass.value, "__wrap--prefix")
}, [prefixIcon && vue.createVNode("div", {
"class": "".concat(inputClass.value, "__icon--prefix")
}, [prefixIcon]), vue.createVNode("div", {
"class": "".concat(inputClass.value, "__label")
}, [label])]);
};
var renderClearable = function renderClearable() {
if (showClear.value) {
return vue.createVNode("div", {
"class": "".concat(inputClass.value, "__wrap--clearable-icon"),
"onTouchend": handleClear
}, [vue.createVNode(TIconClear, null, null)]);
}
return null;
};
var renderSuffix = function renderSuffix() {
var suffix = renderTNodeJSX("suffix");
if (!suffix) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(inputClass.value, "__wrap--suffix")
}, [suffix]);
};
var renderSuffixIcon = function renderSuffixIcon() {
var suffixIcon = renderTNodeJSX("suffixIcon");
if (props.type === "password") {
if (renderType.value === "password") {
suffixIcon = vue.createVNode(TBrowseOffIcon, {
"onClick": handlePwdIconClick
}, null);
} else if (renderType.value === "text") {
suffixIcon = vue.createVNode(TBrowseIcon, {
"onClick": handlePwdIconClick
}, null);
}
}
if (!suffixIcon) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(inputClass.value, "__wrap--suffix-icon")
}, [suffixIcon]);
};
var renderExtra = function renderExtra() {
return renderTNodeJSX("extra");
};
var renderTips = function renderTips() {
var tips = renderTNodeJSX("tips");
if (!tips) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(inputClass.value, "__tips ").concat(inputClass.value, "--").concat(props.align)
}, [tips]);
};
var inputAttrs = {
ref: inputRef,
class: inputClasses.value,
value: innerValue.value,
name: props.name,
type: renderType.value,
disabled: isDisabled.value,
autocomplete: props.autocomplete ? "On" : "Off",
placeholder: props.placeholder,
readonly: props.readonly,
pattern: props.pattern,
inputmode: props.inputmode,
spellcheck: props.spellCheck,
enterkeyhint: props.enterkeyhint,
style: {
"--td-input-cursor-color": props.cursorColor
},
onFocus: handleFocus,
onBlur: handleBlur,
onInput: handleInput,
onCompositionend: handleCompositionend
};
return vue.createVNode("div", {
"class": rootClasses.value
}, [renderPrefix(), vue.createVNode("div", {
"class": "".concat(inputClass.value, "__wrap")
}, [vue.createVNode("div", {
"class": "".concat(inputClass.value, "__content ").concat(inputClass.value, "--").concat(status || "default")
}, [vue.createVNode("input", inputAttrs, null), renderClearable(), renderSuffix(), renderSuffixIcon()]), renderTips()]), renderExtra()]);
};
}
});
var Input = withInstall(_Input);
var props$p = {
allowHalf: Boolean,
color: {
type: [String, Array],
default: "#ED7B2F"
},
count: {
type: Number,
default: 5
},
disabled: {
type: Boolean,
default: void 0
},
gap: {
type: [String, Number],
default: 8
},
icon: {
type: [Array, Function]
},
placement: {
type: String,
default: "top",
validator: function validator(val) {
if (!val) return true;
return ["top", "bottom", ""].includes(val);
}
},
showText: Boolean,
size: {
type: String,
default: "24px"
},
texts: {
type: Array,
default: function _default() {
return [];
}
},
value: {
type: Number,
default: void 0
},
modelValue: {
type: Number,
default: void 0
},
defaultValue: {
type: Number,
default: 0
},
onChange: Function
};
function ownKeys$o(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$m(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$o(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$o(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$G = config.prefix;
var _Rate = vue.defineComponent({
name: "".concat(prefix$G, "-rate"),
props: props$p,
setup: function setup(props2, context) {
var rateClass = usePrefixClass("rate");
var _useConfig = useConfig("rate"),
t = _useConfig.t,
globalConfig = _useConfig.globalConfig;
var isDisabled = useFormDisabled();
var rateWrapper = vue.ref();
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
actualVal = _useVModel2[0],
setActualVal = _useVModel2[1];
var rateText = vue.computed(function () {
if (Array.isArray(props2.texts) && props2.texts.length > 0) {
return props2.texts[actualVal.value - 1];
}
return actualVal.value > 0 ? t(globalConfig.value.valueText, {
value: actualVal.value
}) : globalConfig.value.noValueText;
});
var colors = vue.computed(function () {
var color = props2.color;
if (Array.isArray(color) && color.length === 2) {
return {
"--td-rate-selected-color": color[0],
"--td-rate-unselected-color": color[1]
};
}
if (typeof color === "string") {
return {
"--td-rate-selected-color": color
};
}
return {};
});
var regSize = function regSize(val) {
return "".concat(val).includes("px") ? val : "".concat(val, "px");
};
var unitConvert = function unitConvert(value2) {
if (typeof value2 === "string") {
return parseInt(value2, 10);
}
return value2;
};
var icon = function icon(isSelect) {
var icon2 = props2.icon;
var startComponent = StarFilledIcon;
var select = startComponent;
var unSelect = startComponent;
if (Array.isArray(icon2)) {
var _icon = _slicedToArray(icon2, 2),
_select = _icon[0],
_unSelect = _icon[1];
if (typeof _select === "function") {
select = _select(vue.h);
} else {
select = _select;
}
if (typeof _unSelect === "function") {
unSelect = _unSelect(vue.h);
} else {
unSelect = _unSelect;
}
}
if (isSelect) {
return select || startComponent;
}
return unSelect || startComponent;
};
var rootClasses = vue.computed(function () {
return ["".concat(rateClass.value), _defineProperty$3({}, "".concat(rateClass.value, "--disabled"), isDisabled.value)];
});
var classes = function classes(n) {
var classPrefix = "".concat(rateClass.value, "__icon");
return _defineProperty$3(_defineProperty$3(_defineProperty$3({}, classPrefix, true), "".concat(classPrefix, "--current"), scaleIndex.value === Math.ceil(n)), "".concat(classPrefix, "--").concat(actualVal.value >= n ? "selected" : "unselected"), true);
};
var ratePopoverRef = vue.ref();
var scaleIndex = vue.ref(-1);
var popoverValue = vue.ref(0);
var timer = vue.ref(null);
var touchEnd = vue.ref(false);
var tipsVisible = vue.ref(false);
var tipsLeft = vue.ref(0);
var actionType = vue.ref("tap");
var touchStartTime = vue.ref(0);
onClickOutside(ratePopoverRef, function (event) {
hideTips();
});
var hideTips = function hideTips() {
var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
if (delay) {
timer.value = setTimeout(function () {
handleCloseTips();
}, 3e3);
} else {
handleCloseTips();
}
};
var handleCloseTips = function handleCloseTips() {
tipsVisible.value = false;
scaleIndex.value = -1;
if (timer.value) {
clearTimeout(timer.value);
}
};
var onClick = function onClick(event) {
if (isDisabled.value) return;
getRect(event, "tap");
};
var onTouch = function onTouch(e, eventType) {
var _e$touches = _slicedToArray(e.touches, 1),
touch = _e$touches[0];
getRect(touch, eventType);
};
var onTouchstart = function onTouchstart(e) {
if (isDisabled.value) return;
touchStartTime.value = Date.now();
touchEnd.value = false;
};
var onTouchmove = function onTouchmove(e) {
if (isDisabled.value) return;
if (Date.now() - touchStartTime.value <= 200) return;
onTouch(e, "move");
};
var onTouchEnd = function onTouchEnd(e) {
if (isDisabled.value) return;
touchEnd.value = true;
hideTips();
};
var getRect = function getRect(event, eventType) {
if (rateWrapper.value) {
var count = props2.count,
allowHalf = props2.allowHalf,
gap = props2.gap,
currentValue = props2.value,
size = props2.size;
var margin = unitConvert(gap);
var _rateWrapper$value$ge = rateWrapper.value.getBoundingClientRect(),
width = _rateWrapper$value$ge.width,
left = _rateWrapper$value$ge.left;
var starWidth = (width - (count - 1) * margin) / count;
var offsetX = event.pageX - left;
var num = (offsetX + margin) / (starWidth + margin);
var remainder = num % 1;
var integral = num - remainder;
var value2 = remainder <= 0.5 && allowHalf ? integral + 0.5 : integral + 1;
if (value2 > count) {
value2 = count;
} else if (value2 < 0) {
value2 = 0;
}
popoverValue.value = value2;
var fontSize = size || getComputedStyle(rateWrapper.value).getPropertyValue("font-size");
var leftDis = Math.ceil(value2 - 1) * (unitConvert(gap) + unitConvert(fontSize)) + unitConvert(fontSize) * 0.5;
tipsVisible.value = true;
tipsLeft.value = Math.max(leftDis, unitConvert(fontSize) * 0.5);
scaleIndex.value = Math.ceil(value2);
actionType.value = eventType;
if (value2 !== currentValue) {
setActualVal(value2);
}
if (touchEnd.value) {
hideTips(true);
}
}
};
var onSelect = function onSelect(value2) {
setActualVal(value2);
hideTips();
};
return function () {
var iconComponent = function iconComponent(n, value2) {
var classPrefix = "".concat(rateClass.value, "__icon-left");
var select = value2 >= n;
var selectHalf = Math.ceil(value2) >= n;
var SelectIcon = icon(select);
var SelectHalfIcon = icon(selectHalf);
return vue.createVNode("div", {
"style": {
fontSize: regSize(props2.size)
}
}, [props2.allowHalf ? vue.createVNode("div", {
"class": "".concat(classPrefix, " ").concat(selectHalf ? "".concat(classPrefix, "--selected") : "".concat(classPrefix, "--unselected"))
}, [vue.createVNode(SelectHalfIcon, null, null)]) : null, vue.createVNode(SelectIcon, null, null)]);
};
var renderRateWrapper = function renderRateWrapper() {
var countList = Array.from(Array(props2.count), function (_, k) {
return k + 1;
});
return vue.createVNode("div", {
"ref": rateWrapper,
"class": "".concat(rateClass.value, "__wrapper"),
"onTouchstart": onTouchstart,
"onTouchmove": onTouchmove,
"onTouchend": onTouchEnd,
"onTouchcancel": onTouchEnd
}, [countList.map(function (n) {
return vue.h(iconComponent(n, actualVal.value), {
key: n,
class: classes(n),
style: _objectSpread$m({
marginRight: "".concat(props2.count > n ? props2.gap : 0, "px")
}, colors.value),
onClick: onClick
});
})]);
};
var renderRateText = function renderRateText() {
if (!props2.showText) return null;
return vue.createVNode("span", {
"class": _defineProperty$3(_defineProperty$3({}, "".concat(rateClass.value, "__text"), true), "".concat(rateClass.value, "__text--active"), actualVal.value > 0)
}, [rateText.value]);
};
var renderRateTips = function renderRateTips() {
if (!tipsVisible.value || props2.placement === "") return null;
return vue.createVNode("div", {
"ref": ratePopoverRef,
"class": _defineProperty$3(_defineProperty$3({}, "".concat(rateClass.value, "__tips"), true), "".concat(rateClass.value, "__tips--").concat(props2.placement), props2.placement),
"style": {
left: "".concat(tipsLeft.value, "px")
}
}, [actionType.value === "tap" ? vue.createVNode("div", {
"style": "display: flex"
}, [props2.allowHalf && vue.createVNode("div", {
"class": _defineProperty$3(_defineProperty$3({}, "".concat(rateClass.value, "__tips-item"), true), "".concat(rateClass.value, "__tips-item--active"), actualVal.value === Math.ceil(popoverValue.value) - 0.5),
"onClick": function onClick() {
return onSelect(Math.ceil(popoverValue.value) - 0.5);
}
}, [vue.h(iconComponent(Math.ceil(popoverValue.value), Math.ceil(popoverValue.value) - 0.5), {
style: _objectSpread$m({}, colors.value),
class: "".concat(rateClass.value, "__icon ").concat(rateClass.value, "__icon--unselected")
}), vue.createVNode("span", {
"class": "".concat(rateClass.value, "__tips-text")
}, [Math.ceil(popoverValue.value) - 0.5])]), vue.createVNode("div", {
"class": _defineProperty$3(_defineProperty$3({}, "".concat(rateClass.value, "__tips-item"), true), "".concat(rateClass.value, "__tips-item--active"), props2.allowHalf && actualVal.value === Math.ceil(popoverValue.value)),
"onClick": function onClick() {
return onSelect(Math.ceil(popoverValue.value));
}
}, [vue.h(iconComponent(Math.ceil(popoverValue.value), Math.ceil(popoverValue.value)), {
style: _objectSpread$m({}, colors.value),
class: "".concat(rateClass.value, "__icon ").concat(rateClass.value, "__icon--selected")
}), vue.createVNode("span", {
"class": "".concat(rateClass.value, "__tips-text")
}, [Math.ceil(popoverValue.value)])])]) : vue.createVNode("div", {
"class": "".concat(rateClass.value, "__tips-item"),
"onClick": function onClick() {
return onSelect(popoverValue.value);
}
}, [vue.h(iconComponent(Math.ceil(popoverValue.value), popoverValue.value), {
style: _objectSpread$m({}, colors.value),
class: _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(rateClass.value, "__icon"), true), "".concat(rateClass.value, "__icon--selected"), Math.ceil(popoverValue.value) === popoverValue.value), "".concat(rateClass.value, "__icon--unselected"), Math.ceil(popoverValue.value) !== popoverValue.value)
}), vue.createVNode("span", {
"class": "".concat(rateClass.value, "__tips-text")
}, [popoverValue.value])])]);
};
return vue.createVNode("div", {
"class": rootClasses.value
}, [renderRateWrapper(), renderRateText(), renderRateTips()]);
};
}
});
var Rate = withInstall(_Rate);
var searchProps = {
action: {
type: [String, Function],
default: ""
},
autocompleteOptions: {
type: Array
},
center: Boolean,
clearTrigger: {
type: String,
default: "always",
validator: function validator(val) {
if (!val) return true;
return ["always", "focus"].includes(val);
}
},
clearable: {
type: Boolean,
default: true
},
disabled: Boolean,
focus: Boolean,
leftIcon: {
type: [String, Function],
default: "search"
},
maxcharacter: {
type: Number
},
maxlength: {
type: [String, Number]
},
placeholder: {
type: String,
default: ""
},
readonly: {
type: Boolean,
default: void 0
},
resultList: {
type: Array,
default: function _default() {
return [];
}
},
shape: {
type: String,
default: "square",
validator: function validator(val) {
if (!val) return true;
return ["square", "round"].includes(val);
}
},
value: {
type: String,
default: void 0
},
modelValue: {
type: String,
default: void 0
},
defaultValue: {
type: String,
default: ""
},
onActionClick: Function,
onBlur: Function,
onChange: Function,
onClear: Function,
onFocus: Function,
onSearch: Function,
onSubmit: Function
};
var ENTER_REG = /^Enter$/i;
var THEME_MODE = "theme-mode";
var props$o = {
align: {
type: String,
default: "middle",
validator: function validator(val) {
if (!val) return true;
return ["top", "middle", "bottom"].includes(val);
}
},
arrow: Boolean,
bordered: {
type: Boolean,
default: true
},
description: {
type: [String, Function]
},
hover: Boolean,
image: {
type: [String, Function]
},
leftIcon: {
type: Function
},
note: {
type: [String, Function]
},
required: Boolean,
rightIcon: {
type: Function
},
title: {
type: [String, Function]
},
onClick: Function
};
var prefix$F = config.prefix;
var _Cell = vue.defineComponent({
name: "".concat(prefix$F, "-cell"),
directives: {
Hover: Hover
},
props: props$o,
setup: function setup(props2) {
var renderTNodeJSX = useTNodeJSX();
var renderTNodeContent = useContent();
var disabled = useFormDisabled();
var cellClass = usePrefixClass("cell");
var cellClasses = vue.computed(function () {
return ["".concat(cellClass.value), _defineProperty$3({}, "".concat(cellClass.value, "--borderless"), !props2.bordered)];
});
var hoverDisabled = vue.computed(function () {
return !props2.hover || disabled.value;
});
var handleClick = function handleClick(e) {
if (!disabled.value) {
var _props2$onClick;
(_props2$onClick = props2.onClick) === null || _props2$onClick === void 0 || _props2$onClick.call(props2, {
e: e
});
}
};
var renderImage = function renderImage() {
if (typeof props2.image === "string") {
return vue.createVNode("img", {
"src": props2.image,
"class": "".concat(cellClass.value, "__left-image")
}, null);
}
var image = renderTNodeJSX("image");
return image;
};
var renderLeft = function renderLeft() {
var leftIcon = renderTNodeJSX("leftIcon");
return vue.createVNode("div", {
"class": "".concat(cellClass.value, "__left")
}, [leftIcon && vue.createVNode("div", {
"class": "".concat(cellClass.value, "__left-icon")
}, [leftIcon]), renderImage()]);
};
var renderTitle = function renderTitle() {
var title = renderTNodeJSX("title");
if (!title) {
return null;
}
var description = renderTNodeJSX("description");
return vue.createVNode("div", {
"class": "".concat(cellClass.value, "__title")
}, [vue.createVNode("div", {
"class": "".concat(cellClass.value, "__title-text")
}, [title, props2.required && vue.createVNode("span", {
"class": "".concat(cellClass.value, "--required")
}, ["\xA0*"])]), description && vue.createVNode("div", {
"class": "".concat(cellClass.value, "__description")
}, [description])]);
};
var renderRight = function renderRight() {
var rightIcon = props2.arrow ? vue.createVNode(ChevronRightIcon, null, null) : renderTNodeJSX("rightIcon");
if (!rightIcon) {
return null;
}
return vue.createVNode("div", {
"class": ["".concat(cellClass.value, "__right"), "".concat(cellClass.value, "__right--").concat(props2.align)]
}, [vue.createVNode("div", {
"class": "".concat(cellClass.value, "__right-icon")
}, [rightIcon])]);
};
return function () {
var note = renderTNodeContent("default", "note");
return vue.withDirectives(vue.createVNode("div", {
"class": cellClasses.value,
"onClick": handleClick
}, [renderLeft(), renderTitle(), note && vue.createVNode("div", {
"class": "".concat(cellClass.value, "__note")
}, [note]), renderRight()]), [[vue.resolveDirective("hover"), {
className: "".concat(cellClass.value, "--hover"),
disabledHover: hoverDisabled.value
}]]);
};
}
});
var prefix$E = config.prefix;
var _Search = vue.defineComponent({
name: "".concat(prefix$E, "-search"),
props: searchProps,
setup: function setup(props, context) {
var renderTNodeJSX = useTNodeJSX();
var classPrefix = usePrefixClass();
var searchClass = usePrefixClass("search");
var isShowResultList = vue.ref(false);
var inputRef = vue.ref();
var _useFocus = useFocus(inputRef, {
initialValue: props.focus
}),
focused = _useFocus.focused;
var _toRefs = vue.toRefs(props),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props.defaultValue, props.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
searchValue = _useVModel2[0],
setSearchValue = _useVModel2[1];
var boxClasses = vue.computed(function () {
return ["".concat(searchClass.value, "__input-box"), "".concat(searchClass.value, "__input-box--").concat(props.shape), _defineProperty$3({}, "".concat(classPrefix.value, "-is-focused"), focused.value)];
});
var inputClasses = vue.computed(function () {
return ["".concat(classPrefix.value, "-input__keyword"), _defineProperty$3({}, "".concat(searchClass.value, "--center"), props.center)];
});
var limitParams = vue.computed(function () {
return {
value: [void 0, null].includes(searchValue.value) ? void 0 : String(searchValue.value),
maxlength: Number(props.maxlength),
maxcharacter: props.maxcharacter,
allowInputOverMax: false
};
});
var _useLengthLimit = useLengthLimit(limitParams),
getValueByLimitNumber = _useLengthLimit.getValueByLimitNumber;
var setInputValue = function setInputValue(v) {
var input = inputRef.value;
var sV = String(v);
if (!input) {
return;
}
if (input.value !== sV) {
input.value = sV;
}
};
var inputValueChangeHandle = function inputValueChangeHandle(e) {
var value2 = e.target.value;
setSearchValue(getValueByLimitNumber(value2));
vue.nextTick(function () {
return setInputValue(searchValue.value);
});
};
var handleInput = function handleInput(e) {
isShowResultList.value = true;
if (e instanceof InputEvent) {
var checkInputType = e.inputType && e.inputType === "insertCompositionText";
if (e.isComposing || checkInputType) return;
}
inputValueChangeHandle(e);
};
var handleClear = function handleClear(e) {
var _props$onClear;
setSearchValue("");
focused.value = true;
(_props$onClear = props.onClear) === null || _props$onClear === void 0 || _props$onClear.call(props, {
e: e
});
};
var handleFocus = function handleFocus(e) {
var _props$onFocus;
(_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 || _props$onFocus.call(props, {
value: searchValue.value,
e: e
});
};
var handleBlur = function handleBlur(e) {
var _props$onBlur;
(_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, {
value: searchValue.value,
e: e
});
};
var handleCompositionend = function handleCompositionend(e) {
inputValueChangeHandle(e);
};
var handleAction = function handleAction(e) {
var _props$onActionClick;
(_props$onActionClick = props.onActionClick) === null || _props$onActionClick === void 0 || _props$onActionClick.call(props, {
e: e
});
};
var handleSearch = function handleSearch(e) {
if (ENTER_REG.test(e.code) || ENTER_REG.test(e.key)) {
var _inputRef$value, _props$onSubmit;
preventDefault(e, false);
(_inputRef$value = inputRef.value) === null || _inputRef$value === void 0 || _inputRef$value.blur();
(_props$onSubmit = props.onSubmit) === null || _props$onSubmit === void 0 || _props$onSubmit.call(props, {
value: searchValue.value,
e: e
});
}
};
return function () {
var readerLeftIcon = function readerLeftIcon() {
var leftIcon = renderTNodeJSX("leftIcon");
if (leftIcon === "search") {
return vue.createVNode(TSearchIcon, {
"size": "24px"
}, null);
}
return renderTNodeJSX("leftIcon");
};
var readerClear = function readerClear() {
if (props.clearable && searchValue.value && (props.clearTrigger === "always" || props.clearTrigger === "focus" && focused.value)) {
return vue.createVNode("div", {
"class": "".concat(searchClass.value, "__clear"),
"onClick": handleClear
}, [vue.createVNode(TIconClear, {
"size": "24"
}, null)]);
}
return null;
};
var readerAction = function readerAction() {
var action = renderTNodeJSX("action");
if (action) {
return vue.createVNode("div", {
"class": "".concat(searchClass.value, "__search-action ").concat(classPrefix.value, "-class-action"),
"onClick": handleAction
}, [action]);
}
return null;
};
var onSelectResultItem = function onSelectResultItem(params) {
isShowResultList.value = false;
setSearchValue(params.item);
};
var highlightSearchValue = function highlightSearchValue(item, searchValue2) {
var parts = item.split(new RegExp("(".concat(searchValue2, ")"), "gi"));
return parts.map(function (part, index) {
return part.toLowerCase() === searchValue2.toLowerCase() ? vue.createVNode("span", {
"key": index,
"class": "".concat(searchClass.value, "__result-item--highLight")
}, [part]) : part;
});
};
var listNodes = function listNodes(params) {
return vue.h(_Cell, {
key: params.index,
class: "".concat(searchClass.value, "__result-item"),
onClick: function onClick() {
return onSelectResultItem({
item: params.item
});
}
}, {
title: function title() {
return highlightSearchValue(params.item, searchValue.value);
}
});
};
var extraProps = {
enterkeyhint: "search"
};
return vue.createVNode("div", null, [vue.createVNode("div", {
"class": "".concat(searchClass.value)
}, [vue.createVNode("div", {
"class": boxClasses.value
}, [readerLeftIcon(), vue.createVNode("input", vue.mergeProps({
"ref": inputRef,
"value": searchValue.value,
"type": "search",
"class": inputClasses.value,
"autofocus": props.focus,
"placeholder": props.placeholder,
"readonly": props.readonly,
"disabled": props.disabled,
"onKeypress": handleSearch,
"onFocus": handleFocus,
"onBlur": handleBlur,
"onInput": handleInput,
"onCompositionend": handleCompositionend
}, extraProps), null), readerClear()]), readerAction()]), isShowResultList.value && vue.createVNode("div", {
"class": "".concat(searchClass.value, "__result-list")
}, [props.resultList.map(function (item, index) {
return listNodes({
item: item,
index: index
});
})])]);
};
}
});
var Search = withInstall(_Search);
var props$n = {
disabled: {
type: Boolean,
default: void 0
},
label: {
type: [String, Boolean, Function],
default: false
},
marks: {
type: [Object, Array]
},
max: {
type: Number,
default: 100
},
min: {
type: Number,
default: 0
},
range: Boolean,
showExtremeValue: Boolean,
step: {
type: Number,
default: 1
},
theme: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "capsule"].includes(val);
}
},
value: {
type: [Number, Array],
default: void 0
},
modelValue: {
type: [Number, Array],
default: void 0
},
defaultValue: {
type: [Number, Array],
default: 0
},
vertical: Boolean,
onChange: Function,
onDragend: Function,
onDragstart: Function
};
var trimSingleValue = function trimSingleValue(value, min, max) {
if (value < min) {
return min;
}
if (value > max) {
return max;
}
return value;
};
var trimValue = function trimValue(value, props) {
var min = props.min,
max = props.max,
range = props.range;
if (range && Array.isArray(value)) {
value[0] = trimSingleValue(value[0], min, max);
value[1] = trimSingleValue(value[1], min, max);
return value[0] <= value[1] ? value : [value[1], value[0]];
}
if (range) {
return [min, max];
}
return trimSingleValue(value, min, max);
};
var prefix$D = config.prefix;
var _Slider = vue.defineComponent({
name: "".concat(prefix$D, "-slider"),
props: props$n,
setup: function setup(props2) {
var sliderClass = usePrefixClass("slider");
var isDisabled = useFormDisabled();
var sliderLine = vue.ref();
var leftDot = vue.ref();
var rightDot = vue.ref();
var state = vue.reactive({
initialLeft: 0,
initialRight: 0,
maxRange: 0,
lineLeft: 0,
lineRight: 0,
dotTopValue: [0, 0],
blockSize: 20,
isScale: false,
scaleArray: [],
scaleTextArray: []
});
var defaultValue = props2.defaultValue || props2.min;
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerValue = _useVModel2[0],
setInnerValue = _useVModel2[1];
var scope = vue.computed(function () {
return Number(props2.max) - Number(props2.min);
});
var getDelta = function getDelta(e) {
var _sliderLine$value;
var line = (_sliderLine$value = sliderLine.value) === null || _sliderLine$value === void 0 ? void 0 : _sliderLine$value.getBoundingClientRect();
var halfBlock = Number(state.blockSize) / 2;
var result = props2.vertical ? e.clientY - line.top : e.clientX - line.left;
if (props2.theme === "capsule") {
return result - halfBlock;
}
return result;
};
vue.watch(function () {
return innerValue.value;
}, function (val) {
if (props2.range && Array.isArray(val)) {
var left = state.maxRange * (val[0] - props2.min) / scope.value;
var right = state.maxRange * (props2.max - val[1]) / scope.value;
setLineStyle(left, right);
} else {
setSingleBarWidth(val);
}
});
vue.watch(function () {
return props2.marks;
}, function (val) {
handleMask(val);
});
var rootRef = vue.ref();
var classes = vue.computed(function () {
return ["".concat(sliderClass.value), _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(sliderClass.value, "--top"), props2.label || state.scaleTextArray.length), "".concat(sliderClass.value, "--disabled"), isDisabled.value), "".concat(sliderClass.value, "--range"), props2.range), "".concat(sliderClass.value, "--vertical"), props2.vertical)];
});
var sliderLineClasses = vue.computed(function () {
return ["".concat(sliderClass.value, "__bar"), "".concat(sliderClass.value, "__bar--").concat(props2.theme), _defineProperty$3(_defineProperty$3({}, "".concat(sliderClass.value, "__bar--disabled"), isDisabled.value), "".concat(sliderClass.value, "__bar--marks"), state.isScale && props2.theme === "capsule")];
});
var precision = vue.computed(function () {
var precisions = [props2.min, props2.max, props2.step].map(function (item) {
var decimalArr = "".concat(item).split(".");
return decimalArr[1] ? decimalArr[1].length : 0;
});
return Math.max.apply(null, precisions);
});
var lineBarWidth = vue.ref();
var setSingleBarWidth = function setSingleBarWidth(value2) {
var halfBlock = props2.theme === "capsule" ? Number(state.blockSize) / 2 : 0;
var percentage = (Number(value2) - props2.min) / scope.value;
lineBarWidth.value = percentage * state.maxRange + halfBlock;
};
var setLineStyle = function setLineStyle(left, right) {
var halfBlock = props2.theme === "capsule" ? Number(state.blockSize) / 2 : 0;
var _innerValue$value = _slicedToArray(innerValue.value, 2),
a = _innerValue$value[0],
b = _innerValue$value[1];
var cut = function cut(v) {
return parseInt(v, 10);
};
state.dotTopValue = [a, b];
if (left + right <= state.maxRange) {
state.lineLeft = cut(left + halfBlock);
state.lineRight = cut(right + halfBlock);
} else {
state.lineLeft = cut(state.maxRange + halfBlock - right);
state.lineRight = cut(state.maxRange - left + halfBlock * 1.5);
}
};
var getInitialStyle = function getInitialStyle() {
var _sliderLine$value2;
var line = (_sliderLine$value2 = sliderLine.value) === null || _sliderLine$value2 === void 0 ? void 0 : _sliderLine$value2.getBoundingClientRect();
var left = line.left,
right = line.right,
bottom = line.bottom,
top = line.top;
var halfBlock = Number(state.blockSize) / 2;
var maxRange = props2.vertical ? bottom - top : right - left;
state.maxRange = maxRange;
state.initialLeft = props2.vertical ? top : left;
state.initialRight = props2.vertical ? bottom : right;
if (props2.theme === "capsule") {
state.maxRange = maxRange - Number(state.blockSize) - 6;
state.initialLeft -= halfBlock;
state.initialRight -= halfBlock;
}
};
var onTouchEnd = function onTouchEnd(e) {
var _props2$onDragend;
(_props2$onDragend = props2.onDragend) === null || _props2$onDragend === void 0 || _props2$onDragend.call(props2, innerValue.value, {
e: e
});
};
var onTouchStart = function onTouchStart(e) {
var _props2$onDragstart;
(_props2$onDragstart = props2.onDragstart) === null || _props2$onDragstart === void 0 || _props2$onDragstart.call(props2, {
e: e
});
};
var onSingleDotMove = function onSingleDotMove(e) {
if (isDisabled.value) return;
e.preventDefault();
var _e$changedTouches = _slicedToArray(e.changedTouches, 1),
touch = _e$changedTouches[0];
var currentLeft = getDelta(touch);
var value2 = convertPosToValue(currentLeft);
changeValue(calcByStep(value2));
};
var changeValue = function changeValue(value2) {
setInnerValue(trimValue(value2, props2));
};
var calcByStep = function calcByStep(value2) {
if (props2.step < 0 || props2.step > scope.value) return Number(parseFloat("".concat(value2)).toFixed(precision.value));
var closestStep = trimSingleValue(Math.round(value2 / props2.step) * props2.step, props2.min, props2.max);
return Number(parseFloat("".concat(closestStep)).toFixed(precision.value));
};
var getValue = function getValue(label, value2) {
var REGEXP = /[$][{value}]{7}/;
if (isFunction(label)) return label(value2);
if (label && label === "true") return value2;
if (REGEXP.test(label)) return label.replace(REGEXP, value2);
};
var handleMask = function handleMask(marks) {
var calcPos = function calcPos(arr) {
var margin = props2.theme === "capsule" ? state.blockSize / 2 : 0;
return arr.map(function (item) {
return {
val: item,
left: Math.round((item - props2.min) / scope.value * state.maxRange) + margin
};
});
};
if (marks !== null && marks !== void 0 && marks.length && Array.isArray(marks)) {
state.isScale = true;
state.scaleArray = calcPos(marks);
state.scaleTextArray = [];
}
if (Object.prototype.toString.call(marks) === "[object Object]") {
var scaleArray = Object.keys(marks).map(function (item) {
return Number(item);
});
var scaleTextArray = scaleArray.map(function (item) {
return isFunction(marks[item]) ? marks[item](item) : marks[item];
});
state.isScale = scaleArray.length > 0;
state.scaleArray = calcPos(scaleArray);
state.scaleTextArray = scaleTextArray;
}
};
var convertPosToValue = function convertPosToValue(posValue) {
var isLeft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var raw = isLeft ? posValue / state.maxRange * scope.value + props2.min : props2.max - posValue / state.maxRange * scope.value;
return raw;
};
var onTouchMoveLeft = function onTouchMoveLeft(e) {
if (isDisabled.value) return;
e.preventDefault();
var _e$changedTouches2 = _slicedToArray(e.changedTouches, 1),
touch = _e$changedTouches2[0];
var currentLeft = getDelta(touch);
var newData = _toConsumableArray(innerValue.value);
var leftValue = convertPosToValue(currentLeft);
newData[0] = calcByStep(leftValue);
changeValue(newData);
};
var onTouchMoveRight = function onTouchMoveRight(e) {
if (isDisabled.value) return;
e.preventDefault();
var _e$changedTouches3 = _slicedToArray(e.changedTouches, 1),
touch = _e$changedTouches3[0];
var currentRight = getDelta(touch);
var newData = _toConsumableArray(innerValue.value);
var rightValue = convertPosToValue(currentRight);
newData[1] = calcByStep(rightValue);
changeValue(newData);
};
var handleSingleClick = function handleSingleClick(e) {
e.stopPropagation();
if (isDisabled.value) return;
if (!sliderLine.value) return;
var currentLeft = getDelta(e);
var value2 = convertPosToValue(currentLeft);
changeValue(calcByStep(value2));
};
var handleRangeClick = function handleRangeClick(e) {
var _leftDot$value, _rightDot$value;
e.stopPropagation();
if (isDisabled.value) return;
var halfBlock = props2.theme === "capsule" ? Number(state.blockSize) / 2 : 0;
var currentLeft = getDelta(e);
if (currentLeft < 0 || currentLeft > state.maxRange + Number(state.blockSize)) return;
var leftDotValue = (_leftDot$value = leftDot.value) === null || _leftDot$value === void 0 ? void 0 : _leftDot$value.getBoundingClientRect();
var rightDotValue = (_rightDot$value = rightDot.value) === null || _rightDot$value === void 0 ? void 0 : _rightDot$value.getBoundingClientRect();
var distanceLeft = Math.abs((props2.vertical ? e.clientY - leftDotValue.top : e.clientX - leftDotValue.left) - halfBlock);
var distanceRight = Math.abs((props2.vertical ? rightDotValue.top - e.clientY : rightDotValue.left - e.clientX) + halfBlock);
var isMoveLeft = distanceLeft < distanceRight;
if (isMoveLeft) {
var _innerValue$value2;
var left = getDelta(e);
var leftValue = convertPosToValue(left);
changeValue([calcByStep(leftValue), (_innerValue$value2 = innerValue.value) === null || _innerValue$value2 === void 0 ? void 0 : _innerValue$value2[1]]);
} else {
var _innerValue$value3;
var right = getDelta(e);
var rightValue = convertPosToValue(right);
changeValue([(_innerValue$value3 = innerValue.value) === null || _innerValue$value3 === void 0 ? void 0 : _innerValue$value3[0], calcByStep(rightValue)]);
}
};
vue.onMounted(function () {
init();
});
var _useIntersectionObser = useIntersectionObserver(rootRef, function (_ref3, observerElement) {
var _ref4 = _slicedToArray(_ref3, 1),
isIntersecting = _ref4[0].isIntersecting;
if (isIntersecting) {
stop();
init();
}
}),
stop = _useIntersectionObser.stop;
var init = function init() {
getInitialStyle();
if (props2.range) {
var _innerValue$value$, _innerValue$value4;
var left = state.maxRange * ((_innerValue$value$ = (_innerValue$value4 = innerValue.value) === null || _innerValue$value4 === void 0 ? void 0 : _innerValue$value4[0]) !== null && _innerValue$value$ !== void 0 ? _innerValue$value$ : 0 - props2.min) / scope.value;
var right = state.maxRange * (props2.max - innerValue.value[1]) / scope.value;
setLineStyle(left, right);
} else {
setSingleBarWidth(innerValue.value);
}
if (props2.marks) {
handleMask(props2.marks);
}
};
var renderMinText = function renderMinText() {
if (!props2.showExtremeValue) {
return null;
}
var textClass = _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(sliderClass.value, "__value"), !props2.range), "".concat(sliderClass.value, "__value--min"), !props2.range), "".concat(sliderClass.value, "__range-extreme"), props2.range), "".concat(sliderClass.value, "__range-extreme--min"), props2.range);
if (props2.range) {
return vue.createVNode("text", {
"class": textClass
}, [props2.min]);
}
return vue.createVNode("text", {
"class": textClass
}, [props2.label ? getValue(props2.label, props2.min) : props2.min]);
};
var renderMaxText = function renderMaxText() {
if (!props2.showExtremeValue) {
return null;
}
var textClass = _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(sliderClass.value, "__value"), !props2.range), "".concat(sliderClass.value, "__value--max"), !props2.range), "".concat(sliderClass.value, "__range-extreme"), props2.range), "".concat(sliderClass.value, "__range-extreme--max"), props2.range);
if (props2.range) {
return vue.createVNode("text", {
"class": textClass
}, [props2.max]);
}
return vue.createVNode("text", {
"class": textClass
}, [props2.label ? getValue(props2.label, props2.max) : props2.max]);
};
var renderScale = function renderScale() {
if (!state.isScale) {
return null;
}
return state.scaleArray.map(function (item, index) {
var scaleStyle = props2.vertical ? "top: ".concat(item.left, "px; transform: translate(-50%, -50%);") : "left: ".concat(item.left, "px; transform: translateX(-50%);");
return vue.createVNode("div", {
"style": scaleStyle,
"class": ["".concat(sliderClass.value, "__scale-item"), "".concat(sliderClass.value, "__scale-item--").concat(props2.theme), _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(sliderClass.value, "__scale-item--active"), !props2.range && Number(innerValue.value) >= item.val || props2.range && state.dotTopValue[1] >= item.val && item.val >= state.dotTopValue[0]), "".concat(sliderClass.value, "__scale-item--disabled"), isDisabled.value), "".concat(sliderClass.value, "__scale-item--hidden"), (index === 0 || index === state.scaleArray.length - 1) && props2.theme === "capsule" || innerValue.value === item.val)]
}, [state.scaleTextArray.length && vue.createVNode("div", {
"class": ["".concat(sliderClass.value, "__scale-desc"), "".concat(sliderClass.value, "__scale-desc--").concat(props2.theme)]
}, [state.scaleTextArray[index]])]);
});
};
var renderLineSingle = function renderLineSingle() {
return vue.createVNode("div", {
"class": ["".concat(sliderClass.value, "__line"), "".concat(sliderClass.value, "__line--").concat(props2.theme), "".concat(sliderClass.value, "__line--single"), _defineProperty$3({}, "".concat(sliderClass.value, "__line--disabled"), isDisabled.value)],
"style": "".concat(props2.vertical ? "height" : "width", ": ").concat(lineBarWidth.value, "px")
}, [vue.createVNode("div", {
"ref": "singleDot",
"class": "".concat(sliderClass.value, "__dot"),
"onTouchstart": onTouchStart,
"onTouchmove": onSingleDotMove,
"onTouchend": onTouchEnd,
"onTouchcancel": onTouchEnd
}, [props2.label && vue.createVNode("div", {
"class": ["".concat(sliderClass.value, "__dot-value"), _defineProperty$3({}, "".concat(sliderClass.value, "__dot-value--sr-only"), !props2.label)]
}, [getValue(props2.label, innerValue.value) || innerValue.value]), vue.createVNode("div", {
"class": "".concat(sliderClass.value, "__dot-slider")
}, null)])]);
};
var renderLineRange = function renderLineRange() {
var lineStyle = props2.vertical ? "top: ".concat(state.lineLeft, "px; bottom: ").concat(state.lineRight, "px") : "left: ".concat(state.lineLeft, "px; right: ").concat(state.lineRight, "px");
return vue.createVNode("div", {
"class": ["".concat(sliderClass.value, "__line"), "".concat(sliderClass.value, "__line--").concat(props2.theme), _defineProperty$3({}, "".concat(sliderClass.value, "__line--disabled"), isDisabled.value)],
"style": lineStyle
}, [vue.createVNode("div", {
"ref": leftDot,
"class": ["".concat(sliderClass.value, "__dot"), "".concat(sliderClass.value, "__dot--left")],
"onTouchstart": onTouchStart,
"onTouchmove": onTouchMoveLeft,
"onTouchend": onTouchEnd,
"onTouchcancel": onTouchEnd
}, [props2.label && vue.createVNode("div", {
"class": ["".concat(sliderClass.value, "__dot-value"), _defineProperty$3({}, "".concat(sliderClass.value, "__dot-value--sr-only"), !props2.label)]
}, [getValue(props2.label, state.dotTopValue[0]) || state.dotTopValue[0]]), vue.createVNode("div", {
"class": "".concat(sliderClass.value, "__dot-slider")
}, null)]), vue.createVNode("div", {
"ref": rightDot,
"class": ["".concat(sliderClass.value, "__dot"), "".concat(sliderClass.value, "__dot--right")],
"onTouchstart": onTouchStart,
"onTouchmove": onTouchMoveRight,
"onTouchend": onTouchEnd,
"onTouchcancel": onTouchEnd
}, [props2.label && vue.createVNode("div", {
"class": ["".concat(sliderClass.value, "__dot-value"), _defineProperty$3({}, "".concat(sliderClass.value, "__dot-value--sr-only"), !props2.label)]
}, [getValue(props2.label, state.dotTopValue[1]) || state.dotTopValue[1]]), vue.createVNode("div", {
"class": "".concat(sliderClass.value, "__dot-slider")
}, null)])]);
};
return function () {
return vue.createVNode("div", {
"ref": rootRef,
"class": classes.value
}, [renderMinText(), vue.createVNode("div", {
"ref": sliderLine,
"class": sliderLineClasses.value,
"onClick": props2.range ? handleRangeClick : handleSingleClick
}, [renderScale(), props2.range ? renderLineRange() : renderLineSingle()]), renderMaxText()]);
};
}
});
var Slider = withInstall(_Slider);
var props$m = {
disableInput: Boolean,
disabled: {
type: Boolean,
default: void 0
},
inputWidth: {
type: Number
},
integer: {
type: Boolean,
default: true
},
max: {
type: Number,
default: 100
},
min: {
type: Number,
default: 0
},
size: {
type: String,
default: "medium",
validator: function validator(val) {
if (!val) return true;
return ["small", "medium", "large"].includes(val);
}
},
step: {
type: Number,
default: 1
},
theme: {
type: String,
default: "normal",
validator: function validator(val) {
if (!val) return true;
return ["normal", "filled", "outline"].includes(val);
}
},
value: {
type: [String, Number],
default: void 0
},
modelValue: {
type: [String, Number],
default: void 0
},
defaultValue: {
type: [String, Number],
default: 0
},
onBlur: Function,
onChange: Function,
onFocus: Function,
onOverlimit: Function
};
var prefix$C = config.prefix;
var _Stepper = vue.defineComponent({
name: "".concat(prefix$C, "-stepper"),
props: props$m,
setup: function setup(props2, context) {
var stepperClass = usePrefixClass("stepper");
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue,
min = _toRefs.min,
max = _toRefs.max,
step = _toRefs.step,
integer = _toRefs.integer;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
stepperValue = _useVModel2[0],
setStepperValue = _useVModel2[1];
var disabled = useFormDisabled();
var inputStyle = vue.computed(function () {
return props2.inputWidth ? {
width: "".concat(props2.inputWidth, "px")
} : "";
});
var isDisabled = function isDisabled(type) {
if (disabled.value) return true;
if (type === "minus" && Number(stepperValue.value) <= min.value) {
return true;
}
if (type === "plus" && Number(stepperValue.value) >= max.value) {
return true;
}
return false;
};
var getLen = function getLen(num) {
var numStr = num.toString();
return numStr.indexOf(".") === -1 ? 0 : numStr.split(".")[1].length;
};
var add = function add(a, b) {
var maxLen = Math.max(getLen(a), getLen(b));
var base = Math.pow(10, maxLen);
return Math.round(a * base + b * base) / base;
};
var formatValue = function formatValue(value2) {
return Math.max(Math.min(max.value, value2, Number.MAX_SAFE_INTEGER), min.value, Number.MIN_SAFE_INTEGER).toFixed(Math.max(getLen(step.value), getLen(value2)));
};
var updateValue = function updateValue(value2) {
setStepperValue(formatNumber("".concat(value2), !integer.value));
};
var plusValue = function plusValue() {
if (isDisabled("plus")) {
var _props2$onOverlimit;
(_props2$onOverlimit = props2.onOverlimit) === null || _props2$onOverlimit === void 0 || _props2$onOverlimit.call(props2, "plus");
return;
}
updateValue(formatValue(add(Number(stepperValue.value), step.value)));
};
var minusValue = function minusValue() {
if (isDisabled("minus")) {
var _props2$onOverlimit2;
(_props2$onOverlimit2 = props2.onOverlimit) === null || _props2$onOverlimit2 === void 0 || _props2$onOverlimit2.call(props2, "minus");
return;
}
updateValue(formatValue(add(Number(stepperValue.value), -step.value)));
};
var handleInput = function handleInput(e) {
var value2 = formatNumber(e.target.value, !integer.value);
setStepperValue(value2);
};
var handleChange = function handleChange() {
var formattedValue = formatValue(Number(stepperValue.value));
updateValue(formattedValue);
};
var handleFocus = function handleFocus() {
var _props2$onFocus;
(_props2$onFocus = props2.onFocus) === null || _props2$onFocus === void 0 || _props2$onFocus.call(props2, Number(stepperValue.value));
};
var handleBlur = function handleBlur() {
var _props2$onBlur;
(_props2$onBlur = props2.onBlur) === null || _props2$onBlur === void 0 || _props2$onBlur.call(props2, Number(stepperValue.value));
};
return function () {
return vue.createVNode("div", {
"class": ["".concat(stepperClass.value), "".concat(stepperClass.value, "--").concat(props2.size)]
}, [vue.createVNode("div", {
"class": ["".concat(stepperClass.value, "__minus"), "".concat(stepperClass.value, "__minus--").concat(props2.theme), "".concat(stepperClass.value, "__icon--").concat(props2.size), "".concat(disabled.value || Number(stepperValue.value) <= props2.min ? "".concat(stepperClass.value, "--").concat(props2.theme, "-disabled") : "")],
"onClick": minusValue
}, [vue.createVNode(RemoveIcon, {
"class": "".concat(stepperClass.value, "__minus-icon")
}, null)]), vue.createVNode("input", {
"value": stepperValue.value,
"class": ["".concat(stepperClass.value, "__input"), "".concat(stepperClass.value, "__input--").concat(props2.theme), "".concat(stepperClass.value, "__input--").concat(props2.size), "".concat(disabled.value ? "".concat(stepperClass.value, "--").concat(props2.theme, "-disabled") : "")],
"type": integer.value ? "tel" : "text",
"inputmode": integer.value ? "numeric" : "decimal",
"style": inputStyle.value,
"disabled": props2.disableInput || disabled.value,
"readonly": props2.disableInput,
"onFocus": handleFocus,
"onBlur": handleBlur,
"onInput": handleInput,
"onChange": handleChange
}, null), vue.createVNode("div", {
"class": ["".concat(stepperClass.value, "__plus"), "".concat(stepperClass.value, "__plus--").concat(props2.theme), "".concat(stepperClass.value, "__icon--").concat(props2.size), "".concat(disabled.value || Number(stepperValue.value) >= props2.max ? "".concat(stepperClass.value, "--").concat(props2.theme, "-disabled") : "")],
"onClick": plusValue
}, [vue.createVNode(AddIcon, {
"class": "".concat(stepperClass.value, "__plus-icon")
}, null)])]);
};
}
});
var Stepper = withInstall(_Stepper);
function useToggle(values, defaultValue) {
var innerValues = values || [true, false];
var state = vue.ref();
if (defaultValue === void 0) {
state = vue.ref(innerValues[1]);
} else if (vue.isRef(defaultValue)) {
state = defaultValue;
} else {
state = vue.ref(defaultValue);
}
var toggle = function toggle(value) {
if (value !== void 0) {
state.value = value;
} else {
state.value = state.value === innerValues[1] ? innerValues[0] : innerValues[1];
}
};
return {
state: state,
toggle: toggle
};
}
var props$l = {
customValue: {
type: Array
},
disabled: {
type: Boolean,
default: void 0
},
icon: {
type: Array,
default: function _default() {
return [];
}
},
label: {
type: [Array, Function],
default: function _default() {
return [];
}
},
loading: Boolean,
size: {
type: String,
default: "medium",
validator: function validator(val) {
if (!val) return true;
return ["small", "medium", "large"].includes(val);
}
},
value: {
type: [String, Number, Boolean],
default: void 0
},
modelValue: {
type: [String, Number, Boolean],
default: void 0
},
defaultValue: {
type: [String, Number, Boolean]
},
onChange: Function
};
var prefix$B = config.prefix;
var _Switch = vue.defineComponent({
name: "".concat(prefix$B, "-switch"),
props: props$l,
setup: function setup(props2, context) {
var switchClass = usePrefixClass("switch");
var disabled = useFormDisabled();
var switchValues = props2.customValue || [true, false];
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerValue = _useVModel2[0],
setInnerValue = _useVModel2[1];
var _useToggle = useToggle(switchValues, innerValue.value),
state = _useToggle.state,
toggle = _useToggle.toggle;
var checked = vue.computed(function () {
return innerValue.value === switchValues[0];
});
var switchClasses = vue.computed(function () {
return ["".concat(switchClass.value), "".concat(switchClass.value, "--").concat(props2.size), _defineProperty$3(_defineProperty$3({}, "".concat(switchClass.value, "--checked"), checked.value), "".concat(switchClass.value, "--disabled"), disabled.value || props2.loading)];
});
var dotClasses = vue.computed(function () {
var _props2$label, _props2$icon;
return ["".concat(switchClass.value, "__dot"), "".concat(switchClass.value, "__dot--").concat(props2.size), _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(switchClass.value, "__dot--checked"), checked.value), "".concat(switchClass.value, "__dot--plain"), ((_props2$label = props2.label) === null || _props2$label === void 0 ? void 0 : _props2$label.length) !== 2 && ((_props2$icon = props2.icon) === null || _props2$icon === void 0 ? void 0 : _props2$icon.length) !== 2 && !props2.loading), "".concat(switchClass.value, "__dot--disabled"), disabled.value || props2.loading)];
});
var labelClasses = vue.computed(function () {
return ["".concat(switchClass.value, "__label"), "".concat(switchClass.value, "__label--").concat(props2.size), _defineProperty$3({}, "".concat(switchClass.value, "__label--checked"), checked.value)];
});
var iconContent = vue.computed(function () {
return props2.icon[checked.value ? 0 : 1];
});
function handleToggle(event) {
event.preventDefault();
if (disabled.value || props2.loading) {
return;
}
if (state.value === innerValue.value) {
toggle();
}
setInnerValue(state.value);
}
var renderContent = function renderContent() {
if (props2.loading) {
return vue.createVNode(Loading, {
"class": "".concat(switchClass.value, "__loading"),
"size": "16px"
}, null);
}
if (isArray$1(props2.label) && props2.label.length === 2) {
var label = checked.value ? props2.label[0] : props2.label[1];
if (isString(label)) {
return label;
}
if (isFunction(label)) {
return label(vue.h);
}
}
if (isFunction(props2.label)) {
return props2.label(vue.h, {
value: innerValue.value
});
}
if (context.slots.label) {
return context.slots.label({
value: innerValue.value
});
}
return iconContent.value;
};
return function () {
return vue.createVNode("div", {
"class": switchClasses.value,
"onClick": handleToggle
}, [vue.createVNode("div", {
"class": dotClasses.value
}, [vue.createVNode("div", {
"class": labelClasses.value
}, [renderContent()])])]);
};
}
});
var Switch = withInstall(_Switch);
var props$k = {
allowInputOverMax: Boolean,
autofocus: Boolean,
autosize: {
type: [Boolean, Object],
default: false
},
bordered: Boolean,
cursorColor: {
type: String,
default: "#0052d9"
},
disabled: {
type: Boolean,
default: void 0
},
indicator: Boolean,
label: {
type: [String, Function]
},
layout: {
type: String,
default: "horizontal",
validator: function validator(val) {
if (!val) return true;
return ["vertical", "horizontal"].includes(val);
}
},
maxcharacter: {
type: Number
},
maxlength: {
type: [String, Number]
},
name: {
type: String,
default: ""
},
placeholder: {
type: String,
default: void 0
},
readonly: {
type: Boolean,
default: void 0
},
value: {
type: [String, Number],
default: void 0
},
modelValue: {
type: [String, Number],
default: void 0
},
defaultValue: {
type: [String, Number]
},
onBlur: Function,
onChange: Function,
onFocus: Function
};
var TEXTAREA_STYLE = "\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n";
var hiddenTextarea;
function calcTextareaHeight(targetElement) {
var _hiddenTextarea;
var minRows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
var maxRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
if (!hiddenTextarea) {
hiddenTextarea = document.createElement("textarea");
document.body.appendChild(hiddenTextarea);
}
var _calculateNodeSize = calculateNodeSize(targetElement),
paddingSize = _calculateNodeSize.paddingSize,
borderSize = _calculateNodeSize.borderSize,
boxSizing = _calculateNodeSize.boxSizing,
sizingStyle = _calculateNodeSize.sizingStyle;
hiddenTextarea.setAttribute("style", "".concat(sizingStyle, ";").concat(TEXTAREA_STYLE));
hiddenTextarea.value = targetElement.value || targetElement.placeholder || "";
var height = hiddenTextarea.scrollHeight;
var result = {};
var isBorderbox = boxSizing === "border-box";
var isContentbox = boxSizing === "content-box";
if (isBorderbox) {
height += borderSize;
} else if (isContentbox) {
height -= paddingSize;
}
hiddenTextarea.value = "";
var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;
(_hiddenTextarea = hiddenTextarea) === null || _hiddenTextarea === void 0 || (_hiddenTextarea = _hiddenTextarea.parentNode) === null || _hiddenTextarea === void 0 || _hiddenTextarea.removeChild(hiddenTextarea);
hiddenTextarea = null;
var calcHeight = function calcHeight(rows) {
var rowsHeight = singleRowHeight * rows;
if (isBorderbox) {
rowsHeight = rowsHeight + paddingSize + borderSize;
}
return rowsHeight;
};
if (!isNull(minRows)) {
var minHeight = calcHeight(minRows);
height = Math.max(minHeight, height);
result.minHeight = "".concat(minHeight, "px");
}
if (!isNull(maxRows)) {
height = Math.min(calcHeight(maxRows), height);
}
result.height = "".concat(height, "px");
return result;
}
function ownKeys$n(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$l(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$n(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$n(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$A = config.prefix;
var _Textarea = vue.defineComponent({
name: "".concat(prefix$A, "-textarea"),
props: props$k,
setup: function setup(props2, context) {
var renderTNodeJSX = useTNodeJSX();
var isDisabled = useFormDisabled();
var formItem = vue.inject(FormItemInjectionKey, void 0);
var textareaClass = usePrefixClass("textarea");
var textareaClasses = vue.computed(function () {
return ["".concat(textareaClass.value), _defineProperty$3(_defineProperty$3({}, "".concat(textareaClass.value, "--layout-").concat(props2.layout), props2.layout), "".concat(textareaClass.value, "--border"), props2.bordered)];
});
var textareaInnerClasses = vue.computed(function () {
return ["".concat(textareaClass.value, "__wrapper-inner"), "".concat(textareaClass.value, "__placeholder"), _defineProperty$3(_defineProperty$3({}, "".concat(textareaClass.value, "--disabled"), isDisabled.value), "".concat(textareaClass.value, "--readonly"), props2.readonly)];
});
var textareaRef = vue.ref();
var textareaStyle = vue.ref();
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerValue = _useVModel2[0],
setInnerValue = _useVModel2[1];
var limitParams = vue.computed(function () {
return {
value: [void 0, null].includes(innerValue.value) ? void 0 : String(innerValue.value),
maxlength: Number(props2.maxlength),
maxcharacter: props2.maxcharacter,
allowInputOverMax: props2.allowInputOverMax
};
});
var _useLengthLimit = useLengthLimit(limitParams),
limitNumber = _useLengthLimit.limitNumber,
getValueByLimitNumber = _useLengthLimit.getValueByLimitNumber;
var setInputValue = function setInputValue() {
var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
var input = textareaRef.value;
var sV = String(v);
if (!input) {
return;
}
if (input.value !== sV) {
input.value = sV;
}
};
var adjustTextareaHeight = function adjustTextareaHeight() {
if (props2.autosize === true) {
textareaStyle.value = calcTextareaHeight(textareaRef.value);
} else if (props2.autosize === false) {
textareaStyle.value = calcTextareaHeight(textareaRef.value, 1, 1);
} else if (_typeof$2(props2.autosize) === "object") {
var _props2$autosize = props2.autosize,
minRows = _props2$autosize.minRows,
maxRows = _props2$autosize.maxRows;
textareaStyle.value = calcTextareaHeight(textareaRef.value, minRows, maxRows);
} else if (context.attrs.rows) {
textareaStyle.value = {
height: "auto",
minHeight: "auto"
};
}
};
var handleInput = function handleInput(e) {
if (e instanceof InputEvent) {
if (e.isComposing || e.inputType === "insertCompositionText") return;
}
textareaValueChangeHandle();
};
var textareaValueChangeHandle = function textareaValueChangeHandle() {
var textarea = textareaRef.value;
setInnerValue(getValueByLimitNumber(textarea.value));
vue.nextTick(function () {
return setInputValue(innerValue.value);
});
adjustTextareaHeight();
};
var handleCompositionend = function handleCompositionend(e) {
textareaValueChangeHandle();
};
var handleFocus = function handleFocus(e) {
var _props2$onFocus;
(_props2$onFocus = props2.onFocus) === null || _props2$onFocus === void 0 || _props2$onFocus.call(props2, innerValue.value, {
e: e
});
};
var handleBlur = function handleBlur(e) {
var _props2$onBlur;
formItem === null || formItem === void 0 || formItem.handleBlur();
(_props2$onBlur = props2.onBlur) === null || _props2$onBlur === void 0 || _props2$onBlur.call(props2, innerValue.value, {
e: e
});
};
vue.onMounted(function () {
if (props2.autofocus) {
var _textareaRef$value;
(_textareaRef$value = textareaRef.value) === null || _textareaRef$value === void 0 || _textareaRef$value.focus();
}
textareaValueChangeHandle();
adjustTextareaHeight();
});
vue.watch(innerValue, function () {
vue.nextTick(function () {
adjustTextareaHeight();
});
});
vue.watch(function () {
return props2.autosize;
}, function () {
adjustTextareaHeight();
});
return function () {
var renaderLabel = function renaderLabel() {
var label = renderTNodeJSX("label");
return label ? vue.createVNode("div", {
"class": "".concat(textareaClass.value, "__label")
}, [label]) : null;
};
var readerIndicator = function readerIndicator() {
var isShowIndicator = props2.indicator && (props2.maxcharacter || props2.maxlength);
if (!isShowIndicator) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(textareaClass.value, "__indicator")
}, [" ", limitNumber.value]);
};
var textareaAttrs = {
ref: textareaRef,
class: textareaInnerClasses.value,
style: _objectSpread$l(_objectSpread$l({}, textareaStyle.value), {}, {
caretColor: props2.cursorColor
}),
value: innerValue.value,
name: props2.name,
disabled: isDisabled.value,
placeholder: props2.placeholder,
readonly: props2.readonly,
onFocus: handleFocus,
onBlur: handleBlur,
onInput: handleInput,
onCompositionend: handleCompositionend
};
return vue.createVNode("div", {
"class": textareaClasses.value
}, [renaderLabel(), vue.createVNode("div", {
"class": "".concat(textareaClass.value, "__wrapper")
}, [vue.createVNode("textarea", textareaAttrs, null), readerIndicator()])]);
};
}
});
var Textarea = withInstall(_Textarea);
var props$j = {
customStyle: {
type: String,
default: ""
},
filterable: Boolean,
height: {
type: [String, Number],
default: 336
},
keys: {
type: Object
},
multiple: Boolean,
options: {
type: Array,
default: function _default() {
return [];
}
},
value: {
type: [String, Number, Array],
default: void 0
},
modelValue: {
type: [String, Number, Array],
default: void 0
},
defaultValue: {
type: [String, Number, Array]
},
onChange: Function
};
function _isSlot$8(s) {
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
}
var prefix$z = config.prefix;
var _TreeSelect = vue.defineComponent({
name: "".concat(prefix$z, "-tree-select"),
components: {
TSideBar: SideBar,
TSideBarItem: SideBarItem,
TRadio: Radio,
TRadioGroup: RadioGroup
},
props: props$j,
emits: ["update:value", "update:modelValue", "change"],
setup: function setup(props2, context) {
var treeSelectClass = usePrefixClass("tree-select");
var _toRefs = vue.toRefs(props2),
height = _toRefs.height,
customStyle = _toRefs.customStyle,
value = _toRefs.value,
modelValue = _toRefs.modelValue,
options = _toRefs.options,
keys = _toRefs.keys,
multiple = _toRefs.multiple;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerValue = _useVModel2[0],
setInnerValue = _useVModel2[1];
var leafLevel = vue.ref(0);
var treeMaxLevel = vue.ref(0);
var treeOptions = vue.ref([]);
var rootStyle = vue.computed(function () {
return ["height: ".concat(convertUnit(height.value)), customStyle.value].join(";");
});
var buildTreeOptions = function buildTreeOptions() {
var options2 = props2.options,
multiple2 = props2.multiple,
keys2 = props2.keys;
var level = -1;
var tmpTreeOptions = [];
var node = {
children: options2
};
if (options2.length === 0 || Array.isArray(value) && value.length === 0) return;
var _loop = function _loop() {
var _innerValue$value;
level += 1;
var list = node.children.map(function (item) {
return {
label: item[(keys2 === null || keys2 === void 0 ? void 0 : keys2.label) || "label"],
value: item[(keys2 === null || keys2 === void 0 ? void 0 : keys2.value) || "value"],
disabled: item[(keys2 === null || keys2 === void 0 ? void 0 : keys2.disabled) || "disabled"],
children: item.children,
level: leafLevel.value
};
});
var thisValue = (_innerValue$value = innerValue.value) === null || _innerValue$value === void 0 ? void 0 : _innerValue$value[level];
tmpTreeOptions.push(_toConsumableArray(list));
if (thisValue == null) {
var _list = _slicedToArray(list, 1),
firstChild = _list[0];
node = firstChild;
} else {
var child = list.find(function (child2) {
return child2.value === thisValue;
});
node = child !== null && child !== void 0 ? child : list[0];
}
};
while (node && node.children) {
_loop();
}
leafLevel.value = Math.max(0, level);
if (leafLevel.value > treeMaxLevel.value) {
treeMaxLevel.value = leafLevel.value;
}
treeOptions.value = tmpTreeOptions;
if (multiple2) {
var finalValue = innerValue.value;
if (finalValue[treeMaxLevel.value] != null && !Array.isArray(finalValue[treeMaxLevel.value])) {
log.error("TreeSelect", "`value` should be an array when `multiple` is true, got `".concat(_typeof$2(finalValue[treeMaxLevel.value]), "`"));
}
}
};
var getTreeClass = function getTreeClass(level, total) {
if (level === 0) return "right";
if (level === 1 && level !== total - 1) return "middle";
return "left";
};
var onRootChange = function onRootChange(level) {
setInnerValue(innerValue.value, level);
};
var handleTreeClick = function handleTreeClick(itemValue, level, isDisabled) {
if (isDisabled) return;
innerValue.value[level] = itemValue;
setInnerValue(innerValue.value, level);
};
vue.watch([innerValue, options, keys, multiple], function () {
buildTreeOptions();
}, {
immediate: true,
deep: true
});
var renderSideBar = function renderSideBar(treeOption) {
var _slot;
return vue.createVNode(SideBar, {
"modelValue": innerValue.value[0],
"onUpdate:modelValue": function onUpdateModelValue($event) {
return innerValue.value[0] = $event;
},
"class": "".concat(treeSelectClass.value, "-colum"),
"onChange": function onChange() {
return onRootChange(0);
}
}, _isSlot$8(_slot = treeOption.map(function (item, index) {
return vue.createVNode(SideBarItem, {
"key": index,
"label": item.label,
"value": item.value,
"disabled": item.disabled
}, null);
})) ? _slot : {
default: function _default() {
return [_slot];
}
});
};
var renderMiddleLevel = function renderMiddleLevel(treeOption, level) {
return treeOption.map(function (item) {
return vue.createVNode("div", {
"key": item.value,
"class": _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(treeSelectClass.value, "__item"), true), "".concat(treeSelectClass.value, "__item--active"), item.value === innerValue.value[level]), "".concat(treeSelectClass.value, "__item--disabled"), item.disabled),
"onClick": function onClick() {
return handleTreeClick(item.value, level, item.disabled);
}
}, [item.label]);
});
};
var renderLeafLevel = function renderLeafLevel(treeOption, level) {
var _slot3;
if (multiple.value) {
var _slot2;
return vue.createVNode(CheckboxGroup, {
"modelValue": innerValue.value[level],
"onUpdate:modelValue": function onUpdateModelValue($event) {
return innerValue.value[level] = $event;
},
"class": "".concat(treeSelectClass.value, "__checkbox"),
"onChange": function onChange() {
return onRootChange(level);
}
}, _isSlot$8(_slot2 = treeOption.map(function (item) {
return vue.createVNode(Checkbox, {
"key": item.value,
"class": "".concat(treeSelectClass.value, "__checkbox-item"),
"value": item.value,
"maxLabelRow": 1,
"icon": "line",
"borderless": true,
"placement": "right",
"disabled": item.disabled
}, {
default: function _default() {
return [item.label];
}
});
})) ? _slot2 : {
default: function _default() {
return [_slot2];
}
});
}
return vue.createVNode(RadioGroup, {
"modelValue": innerValue.value[level],
"onUpdate:modelValue": function onUpdateModelValue($event) {
return innerValue.value[level] = $event;
},
"class": "".concat(treeSelectClass.value, "__radio"),
"onChange": function onChange() {
return onRootChange(level);
}
}, _isSlot$8(_slot3 = treeOption.map(function (item) {
return vue.createVNode(Radio, {
"key": item.value,
"class": "".concat(treeSelectClass.value, "__radio-item"),
"value": item.value,
"icon": "line",
"maxLabelRow": 1,
"borderless": true,
"placement": "right",
"disabled": item.disabled
}, {
default: function _default() {
return [item.label];
}
});
})) ? _slot3 : {
default: function _default() {
return [_slot3];
}
});
};
return function () {
return vue.createVNode("div", {
"class": treeSelectClass.value,
"style": rootStyle.value
}, [treeOptions.value.map(function (item, level) {
var levelContent;
if (level === 0) {
levelContent = renderSideBar(item);
} else if (level === leafLevel.value && level === treeMaxLevel.value) {
levelContent = renderLeafLevel(item, level);
} else {
levelContent = renderMiddleLevel(item, level);
}
return vue.createVNode("div", {
"key": level,
"class": ["".concat(treeSelectClass.value, "__column"), "".concat(treeSelectClass.value, "__column--").concat(getTreeClass(leafLevel.value - level, treeOptions.value.length))]
}, [levelContent]);
})]);
};
}
});
var TreeSelect = withInstall(_TreeSelect);
var props$i = {
alt: {
type: String,
default: ""
},
error: {
type: [String, Function]
},
fallback: {
type: String,
default: ""
},
fit: {
type: String,
default: "fill",
validator: function validator(val) {
if (!val) return true;
return ["contain", "cover", "fill", "none", "scale-down"].includes(val);
}
},
lazy: Boolean,
loading: {
type: [String, Function]
},
position: {
type: String,
default: "center"
},
referrerpolicy: {
type: String,
validator: function validator(val) {
if (!val) return true;
return ["no-referrer", "no-referrer-when-downgrade", "origin", "origin-when-cross-origin", "same-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"].includes(val);
}
},
shape: {
type: String,
default: "square",
validator: function validator(val) {
if (!val) return true;
return ["circle", "round", "square"].includes(val);
}
},
src: {
type: String,
default: ""
},
srcset: {
type: Object
},
onError: Function,
onLoad: Function
};
var prefix$y = config.prefix;
var _Image = vue.defineComponent({
name: "".concat(prefix$y, "-image"),
props: props$i,
setup: function setup(props2, context) {
var imageClass = usePrefixClass("image");
var renderTNodeJSX = useTNodeJSX();
var closeIcon = vue.createVNode(CloseIcon, {
"size": "22px"
}, null);
var LoadingIcon = vue.createVNode(Loading, {
"theme": "dots",
"inheritColor": true
}, null);
var isLoading = vue.ref(true);
var isError = vue.ref(false);
var imageStyles = vue.computed(function () {
return {
objectFit: props2.fit,
objectPosition: props2.position
};
});
var imageClasses = vue.computed(function () {
return _defineProperty$3(_defineProperty$3({}, "".concat(imageClass.value), true), "".concat(imageClass.value, "--").concat(props2.shape), true);
});
var imageDOM = vue.ref();
var realSrc = vue.ref("");
vue.watchEffect(function () {
realSrc.value = props2.lazy ? "" : props2.src;
});
var _useIntersectionObser = useIntersectionObserver(imageDOM, function (_ref2, observerElement) {
var _ref3 = _slicedToArray(_ref2, 1),
isIntersecting = _ref3[0].isIntersecting;
if (isIntersecting && props2.lazy) {
stop();
realSrc.value = props2.src;
}
}),
stop = _useIntersectionObser.stop;
var handleImgLoadCompleted = function handleImgLoadCompleted(e) {
var _props2$onLoad;
(_props2$onLoad = props2.onLoad) === null || _props2$onLoad === void 0 || _props2$onLoad.call(props2, {
e: e
});
isLoading.value = false;
};
var handleImgLoadError = function handleImgLoadError(e) {
var _props2$onError;
if (realSrc.value === "") {
return;
}
(_props2$onError = props2.onError) === null || _props2$onError === void 0 || _props2$onError.call(props2, {
e: e
});
isLoading.value = false;
isError.value = true;
if (props2.fallback) {
realSrc.value = props2.fallback;
isError.value = false;
}
};
var maskContent = vue.computed(function () {
var statusContent = function statusContent() {
var _context$slots, _context$slots2, _context$slots3, _context$slots4;
if ((_context$slots = context.slots) !== null && _context$slots !== void 0 && _context$slots.loading && isLoading.value) {
return renderTNodeJSX("loading");
}
if (!((_context$slots2 = context.slots) !== null && _context$slots2 !== void 0 && _context$slots2.loading) && isLoading.value) {
return LoadingIcon;
}
if ((_context$slots3 = context.slots) !== null && _context$slots3 !== void 0 && _context$slots3.error && isError.value) {
return renderTNodeJSX("error");
}
if (!((_context$slots4 = context.slots) !== null && _context$slots4 !== void 0 && _context$slots4.error) && isError.value) {
return closeIcon;
}
return false;
};
var node = function node() {
if (isLoading.value || isError.value) {
if (props2.lazy && realSrc.value === "") {
return;
}
return vue.createVNode("div", {
"class": "".concat(imageClass.value, "__mask")
}, [statusContent()]);
}
};
return node();
});
return function () {
return vue.createVNode("div", {
"class": imageClasses.value
}, [maskContent.value, vue.createVNode("picture", null, [props2.srcset && Object.entries(props2.srcset).map(function (item, index) {
return vue.createVNode("source", {
"key": index,
"type": item[0],
"srcset": item[1]
}, null);
}), vue.createVNode("img", {
"ref": imageDOM,
"class": "".concat(imageClass.value, "__img"),
"style": imageStyles.value,
"src": realSrc.value,
"alt": props2.alt,
"referrerpolicy": props2.referrerpolicy,
"onLoad": handleImgLoadCompleted,
"onError": handleImgLoadError
}, null)])]);
};
}
});
var Image$1 = withInstall(_Image);
var props$h = {
closeBtn: {
type: [Boolean, Function],
default: true
},
cover: {
type: Function
},
deleteBtn: {
type: [Boolean, Function],
default: false
},
image: {
type: Function
},
images: {
type: Array,
default: function _default() {
return [];
}
},
index: {
type: Number,
default: void 0
},
defaultIndex: {
type: Number
},
maxZoom: {
type: Number,
default: 3
},
showIndex: Boolean,
visible: {
type: Boolean,
default: void 0
},
modelValue: {
type: Boolean,
default: void 0
},
defaultVisible: Boolean,
onClose: Function,
onDelete: Function,
onIndexChange: Function
};
function useDefaultValue(value, defaultValue, onChange, propsName) {
var _getCurrentInstance = vue.getCurrentInstance(),
emit = _getCurrentInstance.emit,
vnode = _getCurrentInstance.vnode;
var internalValue = vue.ref();
var vProps = vnode.props || {};
var isVMP = Object.prototype.hasOwnProperty.call(vProps, propsName) || Object.prototype.hasOwnProperty.call(vProps, kebabCase$1(propsName));
if (isVMP) {
return [value, function (newValue) {
emit("update:".concat(propsName), newValue);
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
onChange === null || onChange === void 0 || onChange.apply(void 0, [newValue].concat(args));
}];
}
internalValue.value = defaultValue;
return [internalValue, function (newValue) {
internalValue.value = newValue;
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
onChange === null || onChange === void 0 || onChange.apply(void 0, [newValue].concat(args));
}];
}
function _assertThisInitialized(e) {
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return e;
}
function _possibleConstructorReturn(t, e) {
if (e && ("object" == _typeof$2(e) || "function" == typeof e)) return e;
if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
return _assertThisInitialized(t);
}
function _getPrototypeOf(t) {
return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
return t.__proto__ || Object.getPrototypeOf(t);
}, _getPrototypeOf(t);
}
function _superPropBase(t, o) {
for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t)););
return t;
}
function _get() {
return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {
var p = _superPropBase(e, t);
if (p) {
var n = Object.getOwnPropertyDescriptor(p, t);
return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;
}
}, _get.apply(null, arguments);
}
function _setPrototypeOf(t, e) {
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
return t.__proto__ = e, t;
}, _setPrototypeOf(t, e);
}
function _inherits(t, e) {
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
t.prototype = Object.create(e && e.prototype, {
constructor: {
value: t,
writable: !0,
configurable: !0
}
}), Object.defineProperty(t, "prototype", {
writable: !1
}), e && _setPrototypeOf(t, e);
}
function clamp(v, min, max) {
return Math.max(min, Math.min(v, max));
}
var V = {
toVector: function toVector(v, fallback) {
if (v === undefined) v = fallback;
return Array.isArray(v) ? v : [v, v];
},
add: function add(v1, v2) {
return [v1[0] + v2[0], v1[1] + v2[1]];
},
sub: function sub(v1, v2) {
return [v1[0] - v2[0], v1[1] - v2[1]];
},
addTo: function addTo(v1, v2) {
v1[0] += v2[0];
v1[1] += v2[1];
},
subTo: function subTo(v1, v2) {
v1[0] -= v2[0];
v1[1] -= v2[1];
}
};
function rubberband(distance, dimension, constant) {
if (dimension === 0 || Math.abs(dimension) === Infinity) return Math.pow(distance, constant * 5);
return distance * dimension * constant / (dimension + constant * distance);
}
function rubberbandIfOutOfBounds(position, min, max) {
var constant = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.15;
if (constant === 0) return clamp(position, min, max);
if (position < min) return -rubberband(min - position, max - min, constant) + min;
if (position > max) return +rubberband(position - max, max - min, constant) + max;
return position;
}
function computeRubberband(bounds, _ref, _ref2) {
var _ref3 = _slicedToArray(_ref, 2),
Vx = _ref3[0],
Vy = _ref3[1];
var _ref4 = _slicedToArray(_ref2, 2),
Rx = _ref4[0],
Ry = _ref4[1];
var _bounds = _slicedToArray(bounds, 2),
_bounds$ = _slicedToArray(_bounds[0], 2),
X0 = _bounds$[0],
X1 = _bounds$[1],
_bounds$2 = _slicedToArray(_bounds[1], 2),
Y0 = _bounds$2[0],
Y1 = _bounds$2[1];
return [rubberbandIfOutOfBounds(Vx, X0, X1, Rx), rubberbandIfOutOfBounds(Vy, Y0, Y1, Ry)];
}
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
function _toPrimitive$1(input, hint) {
if (_typeof$2(input) !== "object" || input === null) return input;
var prim = input[Symbol.toPrimitive];
if (prim !== undefined) {
var res = prim.call(input, hint || "default");
if (_typeof$2(res) !== "object") return res;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return (hint === "string" ? String : Number)(input);
}
function _toPropertyKey$1(arg) {
var key = _toPrimitive$1(arg, "string");
return _typeof$2(key) === "symbol" ? key : String(key);
}
function _defineProperty$1(obj, key, value) {
key = _toPropertyKey$1(key);
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function ownKeys$m(e, r) {
var t = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e);
r && (o = o.filter(function (r) {
return Object.getOwnPropertyDescriptor(e, r).enumerable;
})), t.push.apply(t, o);
}
return t;
}
function _objectSpread2$1(e) {
for (var r = 1; r < arguments.length; r++) {
var t = null != arguments[r] ? arguments[r] : {};
r % 2 ? ownKeys$m(Object(t), !0).forEach(function (r) {
_defineProperty$1(e, r, t[r]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$m(Object(t)).forEach(function (r) {
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
});
}
return e;
}
var EVENT_TYPE_MAP = {
pointer: {
start: 'down',
change: 'move',
end: 'up'
},
mouse: {
start: 'down',
change: 'move',
end: 'up'
},
touch: {
start: 'start',
change: 'move',
end: 'end'
},
gesture: {
start: 'start',
change: 'change',
end: 'end'
}
};
function capitalize(string) {
if (!string) return '';
return string[0].toUpperCase() + string.slice(1);
}
var actionsWithoutCaptureSupported = ['enter', 'leave'];
function hasCapture() {
var capture = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var actionKey = arguments.length > 1 ? arguments[1] : undefined;
return capture && !actionsWithoutCaptureSupported.includes(actionKey);
}
function toHandlerProp(device) {
var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var deviceProps = EVENT_TYPE_MAP[device];
var actionKey = deviceProps ? deviceProps[action] || action : action;
return 'on' + capitalize(device) + capitalize(actionKey) + (hasCapture(capture, actionKey) ? 'Capture' : '');
}
var pointerCaptureEvents = ['gotpointercapture', 'lostpointercapture'];
function parseProp(prop) {
var eventKey = prop.substring(2).toLowerCase();
var passive = !!~eventKey.indexOf('passive');
if (passive) eventKey = eventKey.replace('passive', '');
var captureKey = pointerCaptureEvents.includes(eventKey) ? 'capturecapture' : 'capture';
var capture = !!~eventKey.indexOf(captureKey);
if (capture) eventKey = eventKey.replace('capture', '');
return {
device: eventKey,
capture: capture,
passive: passive
};
}
function toDomEventType(device) {
var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
var deviceProps = EVENT_TYPE_MAP[device];
var actionKey = deviceProps ? deviceProps[action] || action : action;
return device + actionKey;
}
function isTouch(event) {
return 'touches' in event;
}
function getPointerType(event) {
if (isTouch(event)) return 'touch';
if ('pointerType' in event) return event.pointerType;
return 'mouse';
}
function getCurrentTargetTouchList(event) {
return Array.from(event.touches).filter(function (e) {
var _event$currentTarget, _event$currentTarget$;
return e.target === event.currentTarget || ((_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 || (_event$currentTarget$ = _event$currentTarget.contains) === null || _event$currentTarget$ === void 0 ? void 0 : _event$currentTarget$.call(_event$currentTarget, e.target));
});
}
function getTouchList(event) {
return event.type === 'touchend' || event.type === 'touchcancel' ? event.changedTouches : event.targetTouches;
}
function getValueEvent(event) {
return isTouch(event) ? getTouchList(event)[0] : event;
}
function distanceAngle(P1, P2) {
try {
var dx = P2.clientX - P1.clientX;
var dy = P2.clientY - P1.clientY;
var cx = (P2.clientX + P1.clientX) / 2;
var cy = (P2.clientY + P1.clientY) / 2;
var distance = Math.hypot(dx, dy);
var angle = -(Math.atan2(dx, dy) * 180) / Math.PI;
var origin = [cx, cy];
return {
angle: angle,
distance: distance,
origin: origin
};
} catch (_unused) {}
return null;
}
function touchIds(event) {
return getCurrentTargetTouchList(event).map(function (touch) {
return touch.identifier;
});
}
function touchDistanceAngle(event, ids) {
var _Array$from$filter = Array.from(event.touches).filter(function (touch) {
return ids.includes(touch.identifier);
}),
_Array$from$filter2 = _slicedToArray(_Array$from$filter, 2),
P1 = _Array$from$filter2[0],
P2 = _Array$from$filter2[1];
return distanceAngle(P1, P2);
}
function pointerId(event) {
var valueEvent = getValueEvent(event);
return isTouch(event) ? valueEvent.identifier : valueEvent.pointerId;
}
function pointerValues(event) {
var valueEvent = getValueEvent(event);
return [valueEvent.clientX, valueEvent.clientY];
}
var LINE_HEIGHT = 40;
var PAGE_HEIGHT = 800;
function wheelValues(event) {
var deltaX = event.deltaX,
deltaY = event.deltaY,
deltaMode = event.deltaMode;
if (deltaMode === 1) {
deltaX *= LINE_HEIGHT;
deltaY *= LINE_HEIGHT;
} else if (deltaMode === 2) {
deltaX *= PAGE_HEIGHT;
deltaY *= PAGE_HEIGHT;
}
return [deltaX, deltaY];
}
function getEventDetails(event) {
var payload = {};
if ('buttons' in event) payload.buttons = event.buttons;
if ('shiftKey' in event) {
var shiftKey = event.shiftKey,
altKey = event.altKey,
metaKey = event.metaKey,
ctrlKey = event.ctrlKey;
Object.assign(payload, {
shiftKey: shiftKey,
altKey: altKey,
metaKey: metaKey,
ctrlKey: ctrlKey
});
}
return payload;
}
function call(v) {
if (typeof v === 'function') {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
return v.apply(void 0, args);
} else {
return v;
}
}
function noop$1() {}
function chain() {
for (var _len2 = arguments.length, fns = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
fns[_key2] = arguments[_key2];
}
if (fns.length === 0) return noop$1;
if (fns.length === 1) return fns[0];
return function () {
var result;
for (var _i = 0, _fns = fns; _i < _fns.length; _i++) {
var fn = _fns[_i];
result = fn.apply(this, arguments) || result;
}
return result;
};
}
function assignDefault(value, fallback) {
return Object.assign({}, fallback, value || {});
}
var BEFORE_LAST_KINEMATICS_DELAY = 32;
var Engine = /*#__PURE__*/function () {
function Engine(ctrl, args, key) {
_classCallCheck(this, Engine);
this.ctrl = ctrl;
this.args = args;
this.key = key;
if (!this.state) {
this.state = {};
this.computeValues([0, 0]);
this.computeInitial();
if (this.init) this.init();
this.reset();
}
}
return _createClass(Engine, [{
key: "state",
get: function get() {
return this.ctrl.state[this.key];
},
set: function set(state) {
this.ctrl.state[this.key] = state;
}
}, {
key: "shared",
get: function get() {
return this.ctrl.state.shared;
}
}, {
key: "eventStore",
get: function get() {
return this.ctrl.gestureEventStores[this.key];
}
}, {
key: "timeoutStore",
get: function get() {
return this.ctrl.gestureTimeoutStores[this.key];
}
}, {
key: "config",
get: function get() {
return this.ctrl.config[this.key];
}
}, {
key: "sharedConfig",
get: function get() {
return this.ctrl.config.shared;
}
}, {
key: "handler",
get: function get() {
return this.ctrl.handlers[this.key];
}
}, {
key: "reset",
value: function reset() {
var state = this.state,
shared = this.shared,
ingKey = this.ingKey,
args = this.args;
shared[ingKey] = state._active = state.active = state._blocked = state._force = false;
state._step = [false, false];
state.intentional = false;
state._movement = [0, 0];
state._distance = [0, 0];
state._direction = [0, 0];
state._delta = [0, 0];
state._bounds = [[-Infinity, Infinity], [-Infinity, Infinity]];
state.args = args;
state.axis = undefined;
state.memo = undefined;
state.elapsedTime = state.timeDelta = 0;
state.direction = [0, 0];
state.distance = [0, 0];
state.overflow = [0, 0];
state._movementBound = [false, false];
state.velocity = [0, 0];
state.movement = [0, 0];
state.delta = [0, 0];
state.timeStamp = 0;
}
}, {
key: "start",
value: function start(event) {
var state = this.state;
var config = this.config;
if (!state._active) {
this.reset();
this.computeInitial();
state._active = true;
state.target = event.target;
state.currentTarget = event.currentTarget;
state.lastOffset = config.from ? call(config.from, state) : state.offset;
state.offset = state.lastOffset;
state.startTime = state.timeStamp = event.timeStamp;
}
}
}, {
key: "computeValues",
value: function computeValues(values) {
var state = this.state;
state._values = values;
state.values = this.config.transform(values);
}
}, {
key: "computeInitial",
value: function computeInitial() {
var state = this.state;
state._initial = state._values;
state.initial = state.values;
}
}, {
key: "compute",
value: function compute(event) {
var state = this.state,
config = this.config,
shared = this.shared;
state.args = this.args;
var dt = 0;
if (event) {
state.event = event;
if (config.preventDefault && event.cancelable) state.event.preventDefault();
state.type = event.type;
shared.touches = this.ctrl.pointerIds.size || this.ctrl.touchIds.size;
shared.locked = !!document.pointerLockElement;
Object.assign(shared, getEventDetails(event));
shared.down = shared.pressed = shared.buttons % 2 === 1 || shared.touches > 0;
dt = event.timeStamp - state.timeStamp;
state.timeStamp = event.timeStamp;
state.elapsedTime = state.timeStamp - state.startTime;
}
if (state._active) {
var _absoluteDelta = state._delta.map(Math.abs);
V.addTo(state._distance, _absoluteDelta);
}
if (this.axisIntent) this.axisIntent(event);
var _state$_movement = _slicedToArray(state._movement, 2),
_m0 = _state$_movement[0],
_m1 = _state$_movement[1];
var _config$threshold = _slicedToArray(config.threshold, 2),
t0 = _config$threshold[0],
t1 = _config$threshold[1];
var _step = state._step,
values = state.values;
if (config.hasCustomTransform) {
if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && values[0];
if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && values[1];
} else {
if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && Math.sign(_m0) * t0;
if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && Math.sign(_m1) * t1;
}
state.intentional = _step[0] !== false || _step[1] !== false;
if (!state.intentional) return;
var movement = [0, 0];
if (config.hasCustomTransform) {
var _values2 = _slicedToArray(values, 2),
v0 = _values2[0],
v1 = _values2[1];
movement[0] = _step[0] !== false ? v0 - _step[0] : 0;
movement[1] = _step[1] !== false ? v1 - _step[1] : 0;
} else {
movement[0] = _step[0] !== false ? _m0 - _step[0] : 0;
movement[1] = _step[1] !== false ? _m1 - _step[1] : 0;
}
if (this.restrictToAxis && !state._blocked) this.restrictToAxis(movement);
var previousOffset = state.offset;
var gestureIsActive = state._active && !state._blocked || state.active;
if (gestureIsActive) {
state.first = state._active && !state.active;
state.last = !state._active && state.active;
state.active = shared[this.ingKey] = state._active;
if (event) {
if (state.first) {
if ('bounds' in config) state._bounds = call(config.bounds, state);
if (this.setup) this.setup();
}
state.movement = movement;
this.computeOffset();
}
}
var _state$offset = _slicedToArray(state.offset, 2),
ox = _state$offset[0],
oy = _state$offset[1];
var _state$_bounds = _slicedToArray(state._bounds, 2),
_state$_bounds$ = _slicedToArray(_state$_bounds[0], 2),
x0 = _state$_bounds$[0],
x1 = _state$_bounds$[1],
_state$_bounds$2 = _slicedToArray(_state$_bounds[1], 2),
y0 = _state$_bounds$2[0],
y1 = _state$_bounds$2[1];
state.overflow = [ox < x0 ? -1 : ox > x1 ? 1 : 0, oy < y0 ? -1 : oy > y1 ? 1 : 0];
state._movementBound[0] = state.overflow[0] ? state._movementBound[0] === false ? state._movement[0] : state._movementBound[0] : false;
state._movementBound[1] = state.overflow[1] ? state._movementBound[1] === false ? state._movement[1] : state._movementBound[1] : false;
var rubberband = state._active ? config.rubberband || [0, 0] : [0, 0];
state.offset = computeRubberband(state._bounds, state.offset, rubberband);
state.delta = V.sub(state.offset, previousOffset);
this.computeMovement();
if (gestureIsActive && (!state.last || dt > BEFORE_LAST_KINEMATICS_DELAY)) {
state.delta = V.sub(state.offset, previousOffset);
var absoluteDelta = state.delta.map(Math.abs);
V.addTo(state.distance, absoluteDelta);
state.direction = state.delta.map(Math.sign);
state._direction = state._delta.map(Math.sign);
if (!state.first && dt > 0) {
state.velocity = [absoluteDelta[0] / dt, absoluteDelta[1] / dt];
state.timeDelta = dt;
}
}
}
}, {
key: "emit",
value: function emit() {
var state = this.state;
var shared = this.shared;
var config = this.config;
if (!state._active) this.clean();
if ((state._blocked || !state.intentional) && !state._force && !config.triggerAllEvents) return;
var memo = this.handler(_objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, shared), state), {}, _defineProperty$3({}, this.aliasKey, state.values)));
if (memo !== undefined) state.memo = memo;
}
}, {
key: "clean",
value: function clean() {
this.eventStore.clean();
this.timeoutStore.clean();
}
}]);
}();
function selectAxis(_ref3, threshold) {
var _ref4 = _slicedToArray(_ref3, 2),
dx = _ref4[0],
dy = _ref4[1];
var absDx = Math.abs(dx);
var absDy = Math.abs(dy);
if (absDx > absDy && absDx > threshold) {
return 'x';
}
if (absDy > absDx && absDy > threshold) {
return 'y';
}
return undefined;
}
var CoordinatesEngine = /*#__PURE__*/function (_Engine) {
function CoordinatesEngine() {
var _this;
_classCallCheck(this, CoordinatesEngine);
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}
_this = _callSuper(this, CoordinatesEngine, [].concat(args));
_defineProperty$1(_this, "aliasKey", 'xy');
return _this;
}
_inherits(CoordinatesEngine, _Engine);
return _createClass(CoordinatesEngine, [{
key: "reset",
value: function reset() {
_superPropGet(CoordinatesEngine, "reset", this, 3)([]);
this.state.axis = undefined;
}
}, {
key: "init",
value: function init() {
this.state.offset = [0, 0];
this.state.lastOffset = [0, 0];
}
}, {
key: "computeOffset",
value: function computeOffset() {
this.state.offset = V.add(this.state.lastOffset, this.state.movement);
}
}, {
key: "computeMovement",
value: function computeMovement() {
this.state.movement = V.sub(this.state.offset, this.state.lastOffset);
}
}, {
key: "axisIntent",
value: function axisIntent(event) {
var state = this.state;
var config = this.config;
if (!state.axis && event) {
var threshold = _typeof$2(config.axisThreshold) === 'object' ? config.axisThreshold[getPointerType(event)] : config.axisThreshold;
state.axis = selectAxis(state._movement, threshold);
}
state._blocked = (config.lockDirection || !!config.axis) && !state.axis || !!config.axis && config.axis !== state.axis;
}
}, {
key: "restrictToAxis",
value: function restrictToAxis(v) {
if (this.config.axis || this.config.lockDirection) {
switch (this.state.axis) {
case 'x':
v[1] = 0;
break;
case 'y':
v[0] = 0;
break;
}
}
}
}]);
}(Engine);
var identity = function identity(v) {
return v;
};
var DEFAULT_RUBBERBAND = 0.15;
var commonConfigResolver = {
enabled: function enabled() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
return value;
},
eventOptions: function eventOptions(value, _k, config) {
return _objectSpread2$1(_objectSpread2$1({}, config.shared.eventOptions), value);
},
preventDefault: function preventDefault() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
return value;
},
triggerAllEvents: function triggerAllEvents() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
return value;
},
rubberband: function rubberband() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
switch (value) {
case true:
return [DEFAULT_RUBBERBAND, DEFAULT_RUBBERBAND];
case false:
return [0, 0];
default:
return V.toVector(value);
}
},
from: function from(value) {
if (typeof value === 'function') return value;
if (value != null) return V.toVector(value);
},
transform: function transform(value, _k, config) {
var transform = value || config.shared.transform;
this.hasCustomTransform = !!transform;
{
var originalTransform = transform || identity;
return function (v) {
var r = originalTransform(v);
if (!isFinite(r[0]) || !isFinite(r[1])) {
console.warn("[@use-gesture]: config.transform() must produce a valid result, but it was: [".concat(r[0], ",").concat([1], "]"));
}
return r;
};
}
},
threshold: function threshold(value) {
return V.toVector(value, 0);
}
};
{
Object.assign(commonConfigResolver, {
domTarget: function domTarget(value) {
if (value !== undefined) {
throw Error("[@use-gesture]: `domTarget` option has been renamed to `target`.");
}
return NaN;
},
lockDirection: function lockDirection(value) {
if (value !== undefined) {
throw Error("[@use-gesture]: `lockDirection` option has been merged with `axis`. Use it as in `{ axis: 'lock' }`");
}
return NaN;
},
initial: function initial(value) {
if (value !== undefined) {
throw Error("[@use-gesture]: `initial` option has been renamed to `from`.");
}
return NaN;
}
});
}
var DEFAULT_AXIS_THRESHOLD = 0;
var coordinatesConfigResolver = _objectSpread2$1(_objectSpread2$1({}, commonConfigResolver), {}, {
axis: function axis(_v, _k, _ref5) {
var axis = _ref5.axis;
this.lockDirection = axis === 'lock';
if (!this.lockDirection) return axis;
},
axisThreshold: function axisThreshold() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_AXIS_THRESHOLD;
return value;
},
bounds: function bounds() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (typeof value === 'function') {
return function (state) {
return coordinatesConfigResolver.bounds(value(state));
};
}
if ('current' in value) {
return function () {
return value.current;
};
}
if (typeof HTMLElement === 'function' && value instanceof HTMLElement) {
return value;
}
var _value$left = value.left,
left = _value$left === void 0 ? -Infinity : _value$left,
_value$right = value.right,
right = _value$right === void 0 ? Infinity : _value$right,
_value$top = value.top,
top = _value$top === void 0 ? -Infinity : _value$top,
_value$bottom = value.bottom,
bottom = _value$bottom === void 0 ? Infinity : _value$bottom;
return [[left, right], [top, bottom]];
}
});
var KEYS_DELTA_MAP = {
ArrowRight: function ArrowRight(displacement) {
var factor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
return [displacement * factor, 0];
},
ArrowLeft: function ArrowLeft(displacement) {
var factor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
return [-1 * displacement * factor, 0];
},
ArrowUp: function ArrowUp(displacement) {
var factor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
return [0, -1 * displacement * factor];
},
ArrowDown: function ArrowDown(displacement) {
var factor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
return [0, displacement * factor];
}
};
var DragEngine = /*#__PURE__*/function (_CoordinatesEngine) {
function DragEngine() {
var _this2;
_classCallCheck(this, DragEngine);
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
args[_key4] = arguments[_key4];
}
_this2 = _callSuper(this, DragEngine, [].concat(args));
_defineProperty$1(_this2, "ingKey", 'dragging');
return _this2;
}
_inherits(DragEngine, _CoordinatesEngine);
return _createClass(DragEngine, [{
key: "reset",
value: function reset() {
_superPropGet(DragEngine, "reset", this, 3)([]);
var state = this.state;
state._pointerId = undefined;
state._pointerActive = false;
state._keyboardActive = false;
state._preventScroll = false;
state._delayed = false;
state.swipe = [0, 0];
state.tap = false;
state.canceled = false;
state.cancel = this.cancel.bind(this);
}
}, {
key: "setup",
value: function setup() {
var state = this.state;
if (state._bounds instanceof HTMLElement) {
var boundRect = state._bounds.getBoundingClientRect();
var targetRect = state.currentTarget.getBoundingClientRect();
var _bounds = {
left: boundRect.left - targetRect.left + state.offset[0],
right: boundRect.right - targetRect.right + state.offset[0],
top: boundRect.top - targetRect.top + state.offset[1],
bottom: boundRect.bottom - targetRect.bottom + state.offset[1]
};
state._bounds = coordinatesConfigResolver.bounds(_bounds);
}
}
}, {
key: "cancel",
value: function cancel() {
var _this3 = this;
var state = this.state;
if (state.canceled) return;
state.canceled = true;
state._active = false;
setTimeout(function () {
_this3.compute();
_this3.emit();
}, 0);
}
}, {
key: "setActive",
value: function setActive() {
this.state._active = this.state._pointerActive || this.state._keyboardActive;
}
}, {
key: "clean",
value: function clean() {
this.pointerClean();
this.state._pointerActive = false;
this.state._keyboardActive = false;
_superPropGet(DragEngine, "clean", this, 3)([]);
}
}, {
key: "pointerDown",
value: function pointerDown(event) {
var config = this.config;
var state = this.state;
if (event.buttons != null && (Array.isArray(config.pointerButtons) ? !config.pointerButtons.includes(event.buttons) : config.pointerButtons !== -1 && config.pointerButtons !== event.buttons)) return;
var ctrlIds = this.ctrl.setEventIds(event);
if (config.pointerCapture) {
event.target.setPointerCapture(event.pointerId);
}
if (ctrlIds && ctrlIds.size > 1 && state._pointerActive) return;
this.start(event);
this.setupPointer(event);
state._pointerId = pointerId(event);
state._pointerActive = true;
this.computeValues(pointerValues(event));
this.computeInitial();
if (config.preventScrollAxis && getPointerType(event) !== 'mouse') {
state._active = false;
this.setupScrollPrevention(event);
} else if (config.delay > 0) {
this.setupDelayTrigger(event);
if (config.triggerAllEvents) {
this.compute(event);
this.emit();
}
} else {
this.startPointerDrag(event);
}
}
}, {
key: "startPointerDrag",
value: function startPointerDrag(event) {
var state = this.state;
state._active = true;
state._preventScroll = true;
state._delayed = false;
this.compute(event);
this.emit();
}
}, {
key: "pointerMove",
value: function pointerMove(event) {
var state = this.state;
var config = this.config;
if (!state._pointerActive) return;
var id = pointerId(event);
if (state._pointerId !== undefined && id !== state._pointerId) return;
var _values = pointerValues(event);
if (document.pointerLockElement === event.target) {
state._delta = [event.movementX, event.movementY];
} else {
state._delta = V.sub(_values, state._values);
this.computeValues(_values);
}
V.addTo(state._movement, state._delta);
this.compute(event);
if (state._delayed && state.intentional) {
this.timeoutStore.remove('dragDelay');
state.active = false;
this.startPointerDrag(event);
return;
}
if (config.preventScrollAxis && !state._preventScroll) {
if (state.axis) {
if (state.axis === config.preventScrollAxis || config.preventScrollAxis === 'xy') {
state._active = false;
this.clean();
return;
} else {
this.timeoutStore.remove('startPointerDrag');
this.startPointerDrag(event);
return;
}
} else {
return;
}
}
this.emit();
}
}, {
key: "pointerUp",
value: function pointerUp(event) {
this.ctrl.setEventIds(event);
try {
if (this.config.pointerCapture && event.target.hasPointerCapture(event.pointerId)) {
;
event.target.releasePointerCapture(event.pointerId);
}
} catch (_unused) {
{
console.warn("[@use-gesture]: If you see this message, it's likely that you're using an outdated version of `@react-three/fiber`. \n\nPlease upgrade to the latest version.");
}
}
var state = this.state;
var config = this.config;
if (!state._active || !state._pointerActive) return;
var id = pointerId(event);
if (state._pointerId !== undefined && id !== state._pointerId) return;
this.state._pointerActive = false;
this.setActive();
this.compute(event);
var _state$_distance = _slicedToArray(state._distance, 2),
dx = _state$_distance[0],
dy = _state$_distance[1];
state.tap = dx <= config.tapsThreshold && dy <= config.tapsThreshold;
if (state.tap && config.filterTaps) {
state._force = true;
} else {
var _state$_delta = _slicedToArray(state._delta, 2),
_dx = _state$_delta[0],
_dy = _state$_delta[1];
var _state$_movement2 = _slicedToArray(state._movement, 2),
_mx = _state$_movement2[0],
_my = _state$_movement2[1];
var _config$swipe$velocit = _slicedToArray(config.swipe.velocity, 2),
svx = _config$swipe$velocit[0],
svy = _config$swipe$velocit[1];
var _config$swipe$distanc = _slicedToArray(config.swipe.distance, 2),
sx = _config$swipe$distanc[0],
sy = _config$swipe$distanc[1];
var sdt = config.swipe.duration;
if (state.elapsedTime < sdt) {
var _vx = Math.abs(_dx / state.timeDelta);
var _vy = Math.abs(_dy / state.timeDelta);
if (_vx > svx && Math.abs(_mx) > sx) state.swipe[0] = Math.sign(_dx);
if (_vy > svy && Math.abs(_my) > sy) state.swipe[1] = Math.sign(_dy);
}
}
this.emit();
}
}, {
key: "pointerClick",
value: function pointerClick(event) {
if (!this.state.tap && event.detail > 0) {
event.preventDefault();
event.stopPropagation();
}
}
}, {
key: "setupPointer",
value: function setupPointer(event) {
var config = this.config;
var device = config.device;
{
try {
if (device === 'pointer' && config.preventScrollDelay === undefined) {
var currentTarget = 'uv' in event ? event.sourceEvent.currentTarget : event.currentTarget;
var style = window.getComputedStyle(currentTarget);
if (style.touchAction === 'auto') {
console.warn("[@use-gesture]: The drag target has its `touch-action` style property set to `auto`. It is recommended to add `touch-action: 'none'` so that the drag gesture behaves correctly on touch-enabled devices. For more information read this: https://use-gesture.netlify.app/docs/extras/#touch-action.\n\nThis message will only show in development mode. It won't appear in production. If this is intended, you can ignore it.", currentTarget);
}
}
} catch (_unused2) {}
}
if (config.pointerLock) {
event.currentTarget.requestPointerLock();
}
if (!config.pointerCapture) {
this.eventStore.add(this.sharedConfig.window, device, 'change', this.pointerMove.bind(this));
this.eventStore.add(this.sharedConfig.window, device, 'end', this.pointerUp.bind(this));
this.eventStore.add(this.sharedConfig.window, device, 'cancel', this.pointerUp.bind(this));
}
}
}, {
key: "pointerClean",
value: function pointerClean() {
if (this.config.pointerLock && document.pointerLockElement === this.state.currentTarget) {
document.exitPointerLock();
}
}
}, {
key: "preventScroll",
value: function preventScroll(event) {
if (this.state._preventScroll && event.cancelable) {
event.preventDefault();
}
}
}, {
key: "setupScrollPrevention",
value: function setupScrollPrevention(event) {
this.state._preventScroll = false;
persistEvent(event);
var remove = this.eventStore.add(this.sharedConfig.window, 'touch', 'change', this.preventScroll.bind(this), {
passive: false
});
this.eventStore.add(this.sharedConfig.window, 'touch', 'end', remove);
this.eventStore.add(this.sharedConfig.window, 'touch', 'cancel', remove);
this.timeoutStore.add('startPointerDrag', this.startPointerDrag.bind(this), this.config.preventScrollDelay, event);
}
}, {
key: "setupDelayTrigger",
value: function setupDelayTrigger(event) {
var _this4 = this;
this.state._delayed = true;
this.timeoutStore.add('dragDelay', function () {
_this4.state._step = [0, 0];
_this4.startPointerDrag(event);
}, this.config.delay);
}
}, {
key: "keyDown",
value: function keyDown(event) {
var deltaFn = KEYS_DELTA_MAP[event.key];
if (deltaFn) {
var state = this.state;
var factor = event.shiftKey ? 10 : event.altKey ? 0.1 : 1;
this.start(event);
state._delta = deltaFn(this.config.keyboardDisplacement, factor);
state._keyboardActive = true;
V.addTo(state._movement, state._delta);
this.compute(event);
this.emit();
}
}
}, {
key: "keyUp",
value: function keyUp(event) {
if (!(event.key in KEYS_DELTA_MAP)) return;
this.state._keyboardActive = false;
this.setActive();
this.compute(event);
this.emit();
}
}, {
key: "bind",
value: function bind(bindFunction) {
var device = this.config.device;
bindFunction(device, 'start', this.pointerDown.bind(this));
if (this.config.pointerCapture) {
bindFunction(device, 'change', this.pointerMove.bind(this));
bindFunction(device, 'end', this.pointerUp.bind(this));
bindFunction(device, 'cancel', this.pointerUp.bind(this));
bindFunction('lostPointerCapture', '', this.pointerUp.bind(this));
}
if (this.config.keys) {
bindFunction('key', 'down', this.keyDown.bind(this));
bindFunction('key', 'up', this.keyUp.bind(this));
}
if (this.config.filterTaps) {
bindFunction('click', '', this.pointerClick.bind(this), {
capture: true,
passive: false
});
}
}
}]);
}(CoordinatesEngine);
function persistEvent(event) {
'persist' in event && typeof event.persist === 'function' && event.persist();
}
var isBrowser = typeof window !== 'undefined' && window.document && window.document.createElement;
function supportsTouchEvents() {
return isBrowser && 'ontouchstart' in window;
}
function isTouchScreen() {
return supportsTouchEvents() || isBrowser && window.navigator.maxTouchPoints > 1;
}
function supportsPointerEvents() {
return isBrowser && 'onpointerdown' in window;
}
function supportsPointerLock() {
return isBrowser && 'exitPointerLock' in window.document;
}
function supportsGestureEvents() {
try {
return 'constructor' in GestureEvent;
} catch (e) {
return false;
}
}
var SUPPORT = {
isBrowser: isBrowser,
gesture: supportsGestureEvents(),
touch: supportsTouchEvents(),
touchscreen: isTouchScreen(),
pointer: supportsPointerEvents(),
pointerLock: supportsPointerLock()
};
var DEFAULT_PREVENT_SCROLL_DELAY = 250;
var DEFAULT_DRAG_DELAY = 180;
var DEFAULT_SWIPE_VELOCITY = 0.5;
var DEFAULT_SWIPE_DISTANCE = 50;
var DEFAULT_SWIPE_DURATION = 250;
var DEFAULT_KEYBOARD_DISPLACEMENT = 10;
var DEFAULT_DRAG_AXIS_THRESHOLD = {
mouse: 0,
touch: 0,
pen: 8
};
var dragConfigResolver = _objectSpread2$1(_objectSpread2$1({}, coordinatesConfigResolver), {}, {
device: function device(_v, _k, _ref6) {
var _ref6$pointer = _ref6.pointer,
_ref6$pointer2 = _ref6$pointer === void 0 ? {} : _ref6$pointer,
_ref6$pointer2$touch = _ref6$pointer2.touch,
touch = _ref6$pointer2$touch === void 0 ? false : _ref6$pointer2$touch,
_ref6$pointer2$lock = _ref6$pointer2.lock,
lock = _ref6$pointer2$lock === void 0 ? false : _ref6$pointer2$lock,
_ref6$pointer2$mouse = _ref6$pointer2.mouse,
mouse = _ref6$pointer2$mouse === void 0 ? false : _ref6$pointer2$mouse;
this.pointerLock = lock && SUPPORT.pointerLock;
if (SUPPORT.touch && touch) return 'touch';
if (this.pointerLock) return 'mouse';
if (SUPPORT.pointer && !mouse) return 'pointer';
if (SUPPORT.touch) return 'touch';
return 'mouse';
},
preventScrollAxis: function preventScrollAxis(value, _k, _ref7) {
var preventScroll = _ref7.preventScroll;
this.preventScrollDelay = typeof preventScroll === 'number' ? preventScroll : preventScroll || preventScroll === undefined && value ? DEFAULT_PREVENT_SCROLL_DELAY : undefined;
if (!SUPPORT.touchscreen || preventScroll === false) return undefined;
return value ? value : preventScroll !== undefined ? 'y' : undefined;
},
pointerCapture: function pointerCapture(_v, _k, _ref8) {
var _ref8$pointer = _ref8.pointer,
_ref8$pointer2 = _ref8$pointer === void 0 ? {} : _ref8$pointer,
_ref8$pointer2$captur = _ref8$pointer2.capture,
capture = _ref8$pointer2$captur === void 0 ? true : _ref8$pointer2$captur,
_ref8$pointer2$button = _ref8$pointer2.buttons,
buttons = _ref8$pointer2$button === void 0 ? 1 : _ref8$pointer2$button,
_ref8$pointer2$keys = _ref8$pointer2.keys,
keys = _ref8$pointer2$keys === void 0 ? true : _ref8$pointer2$keys;
this.pointerButtons = buttons;
this.keys = keys;
return !this.pointerLock && this.device === 'pointer' && capture;
},
threshold: function threshold(value, _k, _ref9) {
var _ref9$filterTaps = _ref9.filterTaps,
filterTaps = _ref9$filterTaps === void 0 ? false : _ref9$filterTaps,
_ref9$tapsThreshold = _ref9.tapsThreshold,
tapsThreshold = _ref9$tapsThreshold === void 0 ? 3 : _ref9$tapsThreshold,
_ref9$axis = _ref9.axis,
axis = _ref9$axis === void 0 ? undefined : _ref9$axis;
var threshold = V.toVector(value, filterTaps ? tapsThreshold : axis ? 1 : 0);
this.filterTaps = filterTaps;
this.tapsThreshold = tapsThreshold;
return threshold;
},
swipe: function swipe() {
var _ref0 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref0$velocity = _ref0.velocity,
velocity = _ref0$velocity === void 0 ? DEFAULT_SWIPE_VELOCITY : _ref0$velocity,
_ref0$distance = _ref0.distance,
distance = _ref0$distance === void 0 ? DEFAULT_SWIPE_DISTANCE : _ref0$distance,
_ref0$duration = _ref0.duration,
duration = _ref0$duration === void 0 ? DEFAULT_SWIPE_DURATION : _ref0$duration;
return {
velocity: this.transform(V.toVector(velocity)),
distance: this.transform(V.toVector(distance)),
duration: duration
};
},
delay: function delay() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
switch (value) {
case true:
return DEFAULT_DRAG_DELAY;
case false:
return 0;
default:
return value;
}
},
axisThreshold: function axisThreshold(value) {
if (!value) return DEFAULT_DRAG_AXIS_THRESHOLD;
return _objectSpread2$1(_objectSpread2$1({}, DEFAULT_DRAG_AXIS_THRESHOLD), value);
},
keyboardDisplacement: function keyboardDisplacement() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_KEYBOARD_DISPLACEMENT;
return value;
}
});
{
Object.assign(dragConfigResolver, {
useTouch: function useTouch(value) {
if (value !== undefined) {
throw Error("[@use-gesture]: `useTouch` option has been renamed to `pointer.touch`. Use it as in `{ pointer: { touch: true } }`.");
}
return NaN;
},
experimental_preventWindowScrollY: function experimental_preventWindowScrollY(value) {
if (value !== undefined) {
throw Error("[@use-gesture]: `experimental_preventWindowScrollY` option has been renamed to `preventScroll`.");
}
return NaN;
},
swipeVelocity: function swipeVelocity(value) {
if (value !== undefined) {
throw Error("[@use-gesture]: `swipeVelocity` option has been renamed to `swipe.velocity`. Use it as in `{ swipe: { velocity: 0.5 } }`.");
}
return NaN;
},
swipeDistance: function swipeDistance(value) {
if (value !== undefined) {
throw Error("[@use-gesture]: `swipeDistance` option has been renamed to `swipe.distance`. Use it as in `{ swipe: { distance: 50 } }`.");
}
return NaN;
},
swipeDuration: function swipeDuration(value) {
if (value !== undefined) {
throw Error("[@use-gesture]: `swipeDuration` option has been renamed to `swipe.duration`. Use it as in `{ swipe: { duration: 250 } }`.");
}
return NaN;
}
});
}
function clampStateInternalMovementToBounds(state) {
var _state$overflow = _slicedToArray(state.overflow, 2),
ox = _state$overflow[0],
oy = _state$overflow[1];
var _state$_delta2 = _slicedToArray(state._delta, 2),
dx = _state$_delta2[0],
dy = _state$_delta2[1];
var _state$_direction = _slicedToArray(state._direction, 2),
dirx = _state$_direction[0],
diry = _state$_direction[1];
if (ox < 0 && dx > 0 && dirx < 0 || ox > 0 && dx < 0 && dirx > 0) {
state._movement[0] = state._movementBound[0];
}
if (oy < 0 && dy > 0 && diry < 0 || oy > 0 && dy < 0 && diry > 0) {
state._movement[1] = state._movementBound[1];
}
}
var SCALE_ANGLE_RATIO_INTENT_DEG = 30;
var PINCH_WHEEL_RATIO = 100;
var PinchEngine = /*#__PURE__*/function (_Engine2) {
function PinchEngine() {
var _this5;
_classCallCheck(this, PinchEngine);
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
args[_key5] = arguments[_key5];
}
_this5 = _callSuper(this, PinchEngine, [].concat(args));
_defineProperty$1(_this5, "ingKey", 'pinching');
_defineProperty$1(_this5, "aliasKey", 'da');
return _this5;
}
_inherits(PinchEngine, _Engine2);
return _createClass(PinchEngine, [{
key: "init",
value: function init() {
this.state.offset = [1, 0];
this.state.lastOffset = [1, 0];
this.state._pointerEvents = new Map();
}
}, {
key: "reset",
value: function reset() {
_superPropGet(PinchEngine, "reset", this, 3)([]);
var state = this.state;
state._touchIds = [];
state.canceled = false;
state.cancel = this.cancel.bind(this);
state.turns = 0;
}
}, {
key: "computeOffset",
value: function computeOffset() {
var _this$state = this.state,
type = _this$state.type,
movement = _this$state.movement,
lastOffset = _this$state.lastOffset;
if (type === 'wheel') {
this.state.offset = V.add(movement, lastOffset);
} else {
this.state.offset = [(1 + movement[0]) * lastOffset[0], movement[1] + lastOffset[1]];
}
}
}, {
key: "computeMovement",
value: function computeMovement() {
var _this$state2 = this.state,
offset = _this$state2.offset,
lastOffset = _this$state2.lastOffset;
this.state.movement = [offset[0] / lastOffset[0], offset[1] - lastOffset[1]];
}
}, {
key: "axisIntent",
value: function axisIntent() {
var state = this.state;
var _state$_movement3 = _slicedToArray(state._movement, 2),
_m0 = _state$_movement3[0],
_m1 = _state$_movement3[1];
if (!state.axis) {
var axisMovementDifference = Math.abs(_m0) * SCALE_ANGLE_RATIO_INTENT_DEG - Math.abs(_m1);
if (axisMovementDifference < 0) state.axis = 'angle';else if (axisMovementDifference > 0) state.axis = 'scale';
}
}
}, {
key: "restrictToAxis",
value: function restrictToAxis(v) {
if (this.config.lockDirection) {
if (this.state.axis === 'scale') v[1] = 0;else if (this.state.axis === 'angle') v[0] = 0;
}
}
}, {
key: "cancel",
value: function cancel() {
var _this6 = this;
var state = this.state;
if (state.canceled) return;
setTimeout(function () {
state.canceled = true;
state._active = false;
_this6.compute();
_this6.emit();
}, 0);
}
}, {
key: "touchStart",
value: function touchStart(event) {
this.ctrl.setEventIds(event);
var state = this.state;
var ctrlTouchIds = this.ctrl.touchIds;
if (state._active) {
if (state._touchIds.every(function (id) {
return ctrlTouchIds.has(id);
})) return;
}
if (ctrlTouchIds.size < 2) return;
this.start(event);
state._touchIds = Array.from(ctrlTouchIds).slice(0, 2);
var payload = touchDistanceAngle(event, state._touchIds);
if (!payload) return;
this.pinchStart(event, payload);
}
}, {
key: "pointerStart",
value: function pointerStart(event) {
if (event.buttons != null && event.buttons % 2 !== 1) return;
this.ctrl.setEventIds(event);
event.target.setPointerCapture(event.pointerId);
var state = this.state;
var _pointerEvents = state._pointerEvents;
var ctrlPointerIds = this.ctrl.pointerIds;
if (state._active) {
if (Array.from(_pointerEvents.keys()).every(function (id) {
return ctrlPointerIds.has(id);
})) return;
}
if (_pointerEvents.size < 2) {
_pointerEvents.set(event.pointerId, event);
}
if (state._pointerEvents.size < 2) return;
this.start(event);
var payload = distanceAngle.apply(void 0, _toConsumableArray(Array.from(_pointerEvents.values())));
if (!payload) return;
this.pinchStart(event, payload);
}
}, {
key: "pinchStart",
value: function pinchStart(event, payload) {
var state = this.state;
state.origin = payload.origin;
this.computeValues([payload.distance, payload.angle]);
this.computeInitial();
this.compute(event);
this.emit();
}
}, {
key: "touchMove",
value: function touchMove(event) {
if (!this.state._active) return;
var payload = touchDistanceAngle(event, this.state._touchIds);
if (!payload) return;
this.pinchMove(event, payload);
}
}, {
key: "pointerMove",
value: function pointerMove(event) {
var _pointerEvents = this.state._pointerEvents;
if (_pointerEvents.has(event.pointerId)) {
_pointerEvents.set(event.pointerId, event);
}
if (!this.state._active) return;
var payload = distanceAngle.apply(void 0, _toConsumableArray(Array.from(_pointerEvents.values())));
if (!payload) return;
this.pinchMove(event, payload);
}
}, {
key: "pinchMove",
value: function pinchMove(event, payload) {
var state = this.state;
var prev_a = state._values[1];
var delta_a = payload.angle - prev_a;
var delta_turns = 0;
if (Math.abs(delta_a) > 270) delta_turns += Math.sign(delta_a);
this.computeValues([payload.distance, payload.angle - 360 * delta_turns]);
state.origin = payload.origin;
state.turns = delta_turns;
state._movement = [state._values[0] / state._initial[0] - 1, state._values[1] - state._initial[1]];
this.compute(event);
this.emit();
}
}, {
key: "touchEnd",
value: function touchEnd(event) {
var _this7 = this;
this.ctrl.setEventIds(event);
if (!this.state._active) return;
if (this.state._touchIds.some(function (id) {
return !_this7.ctrl.touchIds.has(id);
})) {
this.state._active = false;
this.compute(event);
this.emit();
}
}
}, {
key: "pointerEnd",
value: function pointerEnd(event) {
var state = this.state;
this.ctrl.setEventIds(event);
try {
event.target.releasePointerCapture(event.pointerId);
} catch (_unused) {}
if (state._pointerEvents.has(event.pointerId)) {
state._pointerEvents.delete(event.pointerId);
}
if (!state._active) return;
if (state._pointerEvents.size < 2) {
state._active = false;
this.compute(event);
this.emit();
}
}
}, {
key: "gestureStart",
value: function gestureStart(event) {
if (event.cancelable) event.preventDefault();
var state = this.state;
if (state._active) return;
this.start(event);
this.computeValues([event.scale, event.rotation]);
state.origin = [event.clientX, event.clientY];
this.compute(event);
this.emit();
}
}, {
key: "gestureMove",
value: function gestureMove(event) {
if (event.cancelable) event.preventDefault();
if (!this.state._active) return;
var state = this.state;
this.computeValues([event.scale, event.rotation]);
state.origin = [event.clientX, event.clientY];
var _previousMovement = state._movement;
state._movement = [event.scale - 1, event.rotation];
state._delta = V.sub(state._movement, _previousMovement);
this.compute(event);
this.emit();
}
}, {
key: "gestureEnd",
value: function gestureEnd(event) {
if (!this.state._active) return;
this.state._active = false;
this.compute(event);
this.emit();
}
}, {
key: "wheel",
value: function wheel(event) {
var modifierKey = this.config.modifierKey;
if (modifierKey && (Array.isArray(modifierKey) ? !modifierKey.find(function (k) {
return event[k];
}) : !event[modifierKey])) return;
if (!this.state._active) this.wheelStart(event);else this.wheelChange(event);
this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));
}
}, {
key: "wheelStart",
value: function wheelStart(event) {
this.start(event);
this.wheelChange(event);
}
}, {
key: "wheelChange",
value: function wheelChange(event) {
var isR3f = 'uv' in event;
if (!isR3f) {
if (event.cancelable) {
event.preventDefault();
}
if (!event.defaultPrevented) {
console.warn("[@use-gesture]: To properly support zoom on trackpads, try using the `target` option.\n\nThis message will only appear in development mode.");
}
}
var state = this.state;
state._delta = [-wheelValues(event)[1] / PINCH_WHEEL_RATIO * state.offset[0], 0];
V.addTo(state._movement, state._delta);
clampStateInternalMovementToBounds(state);
this.state.origin = [event.clientX, event.clientY];
this.compute(event);
this.emit();
}
}, {
key: "wheelEnd",
value: function wheelEnd() {
if (!this.state._active) return;
this.state._active = false;
this.compute();
this.emit();
}
}, {
key: "bind",
value: function bind(bindFunction) {
var device = this.config.device;
if (!!device) {
bindFunction(device, 'start', this[device + 'Start'].bind(this));
bindFunction(device, 'change', this[device + 'Move'].bind(this));
bindFunction(device, 'end', this[device + 'End'].bind(this));
bindFunction(device, 'cancel', this[device + 'End'].bind(this));
bindFunction('lostPointerCapture', '', this[device + 'End'].bind(this));
}
if (this.config.pinchOnWheel) {
bindFunction('wheel', '', this.wheel.bind(this), {
passive: false
});
}
}
}]);
}(Engine);
var pinchConfigResolver = _objectSpread2$1(_objectSpread2$1({}, commonConfigResolver), {}, {
device: function device(_v, _k, _ref1) {
var shared = _ref1.shared,
_ref1$pointer = _ref1.pointer,
_ref1$pointer2 = _ref1$pointer === void 0 ? {} : _ref1$pointer,
_ref1$pointer2$touch = _ref1$pointer2.touch,
touch = _ref1$pointer2$touch === void 0 ? false : _ref1$pointer2$touch;
var sharedConfig = shared;
if (sharedConfig.target && !SUPPORT.touch && SUPPORT.gesture) return 'gesture';
if (SUPPORT.touch && touch) return 'touch';
if (SUPPORT.touchscreen) {
if (SUPPORT.pointer) return 'pointer';
if (SUPPORT.touch) return 'touch';
}
},
bounds: function bounds(_v, _k, _ref10) {
var _ref10$scaleBounds = _ref10.scaleBounds,
scaleBounds = _ref10$scaleBounds === void 0 ? {} : _ref10$scaleBounds,
_ref10$angleBounds = _ref10.angleBounds,
angleBounds = _ref10$angleBounds === void 0 ? {} : _ref10$angleBounds;
var _scaleBounds = function _scaleBounds(state) {
var D = assignDefault(call(scaleBounds, state), {
min: -Infinity,
max: Infinity
});
return [D.min, D.max];
};
var _angleBounds = function _angleBounds(state) {
var A = assignDefault(call(angleBounds, state), {
min: -Infinity,
max: Infinity
});
return [A.min, A.max];
};
if (typeof scaleBounds !== 'function' && typeof angleBounds !== 'function') return [_scaleBounds(), _angleBounds()];
return function (state) {
return [_scaleBounds(state), _angleBounds(state)];
};
},
threshold: function threshold(value, _k, config) {
this.lockDirection = config.axis === 'lock';
var threshold = V.toVector(value, this.lockDirection ? [0.1, 3] : 0);
return threshold;
},
modifierKey: function modifierKey(value) {
if (value === undefined) return 'ctrlKey';
return value;
},
pinchOnWheel: function pinchOnWheel() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
return value;
}
});
_objectSpread2$1(_objectSpread2$1({}, coordinatesConfigResolver), {}, {
mouseOnly: function mouseOnly() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
return value;
}
});
_objectSpread2$1(_objectSpread2$1({}, coordinatesConfigResolver), {}, {
mouseOnly: function mouseOnly() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
return value;
}
});
var EngineMap = new Map();
var ConfigResolverMap = new Map();
function registerAction(action) {
EngineMap.set(action.key, action.engine);
ConfigResolverMap.set(action.key, action.resolver);
}
var dragAction = {
key: 'drag',
engine: DragEngine,
resolver: dragConfigResolver
};
var pinchAction = {
key: 'pinch',
engine: PinchEngine,
resolver: pinchConfigResolver
};
function _createForOfIteratorHelper$3(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$3(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
function _unsupportedIterableToArray$3(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$4(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$4(r, a) : void 0; } }
function _arrayLikeToArray$4(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
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;
}
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;
}
var sharedConfigResolver = {
target: function target(value) {
if (value) {
return function () {
return 'current' in value ? value.current : value;
};
}
return undefined;
},
enabled: function enabled() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
return value;
},
window: function (_window) {
function window() {
return _window.apply(this, arguments);
}
window.toString = function () {
return _window.toString();
};
return window;
}(function () {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SUPPORT.isBrowser ? window : undefined;
return value;
}),
eventOptions: function eventOptions() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref2$passive = _ref2.passive,
passive = _ref2$passive === void 0 ? true : _ref2$passive,
_ref2$capture = _ref2.capture,
capture = _ref2$capture === void 0 ? false : _ref2$capture;
return {
passive: passive,
capture: capture
};
},
transform: function transform(value) {
return value;
}
};
var _excluded$3 = ["target", "eventOptions", "window", "enabled", "transform"];
function resolveWith() {
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var resolvers = arguments.length > 1 ? arguments[1] : undefined;
var result = {};
for (var _i = 0, _Object$entries = Object.entries(resolvers); _i < _Object$entries.length; _i++) {
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
key = _Object$entries$_i[0],
resolver = _Object$entries$_i[1];
switch (_typeof$2(resolver)) {
case 'function':
{
var r = resolver.call(result, config[key], key, config);
if (!Number.isNaN(r)) result[key] = r;
}
break;
case 'object':
result[key] = resolveWith(config[key], resolver);
break;
case 'boolean':
if (resolver) result[key] = config[key];
break;
}
}
return result;
}
function parse(newConfig, gestureKey) {
var _config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _ref = newConfig,
target = _ref.target,
eventOptions = _ref.eventOptions,
window = _ref.window,
enabled = _ref.enabled,
transform = _ref.transform,
rest = _objectWithoutProperties(_ref, _excluded$3);
_config.shared = resolveWith({
target: target,
eventOptions: eventOptions,
window: window,
enabled: enabled,
transform: transform
}, sharedConfigResolver);
if (gestureKey) {
var resolver = ConfigResolverMap.get(gestureKey);
_config[gestureKey] = resolveWith(_objectSpread2$1({
shared: _config.shared
}, rest), resolver);
} else {
for (var key in rest) {
var _resolver = ConfigResolverMap.get(key);
if (_resolver) {
_config[key] = resolveWith(_objectSpread2$1({
shared: _config.shared
}, rest[key]), _resolver);
} else {
if (!['drag', 'pinch', 'scroll', 'wheel', 'move', 'hover'].includes(key)) {
if (key === 'domTarget') {
throw Error("[@use-gesture]: `domTarget` option has been renamed to `target`.");
}
console.warn("[@use-gesture]: Unknown config key `".concat(key, "` was used. Please read the documentation for further information."));
}
}
}
}
return _config;
}
var EventStore = /*#__PURE__*/function () {
function EventStore(ctrl, gestureKey) {
_classCallCheck(this, EventStore);
_defineProperty$1(this, "_listeners", new Set());
this._ctrl = ctrl;
this._gestureKey = gestureKey;
}
return _createClass(EventStore, [{
key: "add",
value: function add(element, device, action, handler, options) {
var listeners = this._listeners;
var type = toDomEventType(device, action);
var _options = this._gestureKey ? this._ctrl.config[this._gestureKey].eventOptions : {};
var eventOptions = _objectSpread2$1(_objectSpread2$1({}, _options), options);
element.addEventListener(type, handler, eventOptions);
var _remove = function remove() {
element.removeEventListener(type, handler, eventOptions);
listeners.delete(_remove);
};
listeners.add(_remove);
return _remove;
}
}, {
key: "clean",
value: function clean() {
this._listeners.forEach(function (remove) {
return remove();
});
this._listeners.clear();
}
}]);
}();
var TimeoutStore = /*#__PURE__*/function () {
function TimeoutStore() {
_classCallCheck(this, TimeoutStore);
_defineProperty$1(this, "_timeouts", new Map());
}
return _createClass(TimeoutStore, [{
key: "add",
value: function add(key, callback) {
var _window2;
var ms = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 140;
this.remove(key);
for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
args[_key - 3] = arguments[_key];
}
this._timeouts.set(key, (_window2 = window).setTimeout.apply(_window2, [callback, ms].concat(args)));
}
}, {
key: "remove",
value: function remove(key) {
var timeout = this._timeouts.get(key);
if (timeout) window.clearTimeout(timeout);
}
}, {
key: "clean",
value: function clean() {
this._timeouts.forEach(function (timeout) {
return void window.clearTimeout(timeout);
});
this._timeouts.clear();
}
}]);
}();
var Controller = /*#__PURE__*/function () {
function Controller(handlers) {
_classCallCheck(this, Controller);
_defineProperty$1(this, "gestures", new Set());
_defineProperty$1(this, "_targetEventStore", new EventStore(this));
_defineProperty$1(this, "gestureEventStores", {});
_defineProperty$1(this, "gestureTimeoutStores", {});
_defineProperty$1(this, "handlers", {});
_defineProperty$1(this, "config", {});
_defineProperty$1(this, "pointerIds", new Set());
_defineProperty$1(this, "touchIds", new Set());
_defineProperty$1(this, "state", {
shared: {
shiftKey: false,
metaKey: false,
ctrlKey: false,
altKey: false
}
});
resolveGestures(this, handlers);
}
return _createClass(Controller, [{
key: "setEventIds",
value: function setEventIds(event) {
if (isTouch(event)) {
this.touchIds = new Set(touchIds(event));
return this.touchIds;
} else if ('pointerId' in event) {
if (event.type === 'pointerup' || event.type === 'pointercancel') this.pointerIds.delete(event.pointerId);else if (event.type === 'pointerdown') this.pointerIds.add(event.pointerId);
return this.pointerIds;
}
}
}, {
key: "applyHandlers",
value: function applyHandlers(handlers, nativeHandlers) {
this.handlers = handlers;
this.nativeHandlers = nativeHandlers;
}
}, {
key: "applyConfig",
value: function applyConfig(config, gestureKey) {
this.config = parse(config, gestureKey, this.config);
}
}, {
key: "clean",
value: function clean() {
this._targetEventStore.clean();
var _iterator = _createForOfIteratorHelper$3(this.gestures),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var key = _step.value;
this.gestureEventStores[key].clean();
this.gestureTimeoutStores[key].clean();
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
}, {
key: "effect",
value: function effect() {
var _this = this;
if (this.config.shared.target) this.bind();
return function () {
return _this._targetEventStore.clean();
};
}
}, {
key: "bind",
value: function bind() {
var _this2 = this;
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
var sharedConfig = this.config.shared;
var props = {};
var target;
if (sharedConfig.target) {
target = sharedConfig.target();
if (!target) return;
}
if (sharedConfig.enabled) {
var _iterator2 = _createForOfIteratorHelper$3(this.gestures),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var gestureKey = _step2.value;
var gestureConfig = this.config[gestureKey];
var bindFunction = bindToProps(props, gestureConfig.eventOptions, !!target);
if (gestureConfig.enabled) {
var Engine = EngineMap.get(gestureKey);
new Engine(this, args, gestureKey).bind(bindFunction);
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
var nativeBindFunction = bindToProps(props, sharedConfig.eventOptions, !!target);
var _loop = function _loop(eventKey) {
nativeBindFunction(eventKey, '', function (event) {
return _this2.nativeHandlers[eventKey](_objectSpread2$1(_objectSpread2$1({}, _this2.state.shared), {}, {
event: event,
args: args
}));
}, undefined, true);
};
for (var eventKey in this.nativeHandlers) {
_loop(eventKey);
}
}
for (var handlerProp in props) {
props[handlerProp] = chain.apply(void 0, _toConsumableArray(props[handlerProp]));
}
if (!target) return props;
for (var _handlerProp in props) {
var _parseProp = parseProp(_handlerProp),
device = _parseProp.device,
capture = _parseProp.capture,
passive = _parseProp.passive;
this._targetEventStore.add(target, device, '', props[_handlerProp], {
capture: capture,
passive: passive
});
}
}
}]);
}();
function setupGesture(ctrl, gestureKey) {
ctrl.gestures.add(gestureKey);
ctrl.gestureEventStores[gestureKey] = new EventStore(ctrl, gestureKey);
ctrl.gestureTimeoutStores[gestureKey] = new TimeoutStore();
}
function resolveGestures(ctrl, internalHandlers) {
if (internalHandlers.drag) setupGesture(ctrl, 'drag');
if (internalHandlers.wheel) setupGesture(ctrl, 'wheel');
if (internalHandlers.scroll) setupGesture(ctrl, 'scroll');
if (internalHandlers.move) setupGesture(ctrl, 'move');
if (internalHandlers.pinch) setupGesture(ctrl, 'pinch');
if (internalHandlers.hover) setupGesture(ctrl, 'hover');
}
var bindToProps = function bindToProps(props, eventOptions, withPassiveOption) {
return function (device, action, handler) {
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
var isNative = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
var _options$capture, _options$passive;
var capture = (_options$capture = options.capture) !== null && _options$capture !== void 0 ? _options$capture : eventOptions.capture;
var passive = (_options$passive = options.passive) !== null && _options$passive !== void 0 ? _options$passive : eventOptions.passive;
var handlerProp = isNative ? device : toHandlerProp(device, action, capture);
if (withPassiveOption && passive) handlerProp += 'Passive';
props[handlerProp] = props[handlerProp] || [];
props[handlerProp].push(handler);
};
};
var RE_NOT_NATIVE = /^on(Drag|Wheel|Scroll|Move|Pinch|Hover)/;
function sortHandlers(_handlers) {
var native = {};
var handlers = {};
var actions = new Set();
for (var key in _handlers) {
if (RE_NOT_NATIVE.test(key)) {
actions.add(RegExp.lastMatch);
handlers[key] = _handlers[key];
} else {
native[key] = _handlers[key];
}
}
return [handlers, native, actions];
}
function registerGesture(actions, handlers, handlerKey, key, internalHandlers, config) {
if (!actions.has(handlerKey)) return;
if (!EngineMap.has(key)) {
{
console.warn("[@use-gesture]: You've created a custom handler that that uses the `".concat(key, "` gesture but isn't properly configured.\n\nPlease add `").concat(key, "Action` when creating your handler."));
}
return;
}
var startKey = handlerKey + 'Start';
var endKey = handlerKey + 'End';
var fn = function fn(state) {
var memo = undefined;
if (state.first && startKey in handlers) handlers[startKey](state);
if (handlerKey in handlers) memo = handlers[handlerKey](state);
if (state.last && endKey in handlers) handlers[endKey](state);
return memo;
};
internalHandlers[key] = fn;
config[key] = config[key] || {};
}
function parseMergedHandlers(mergedHandlers, mergedConfig) {
var _sortHandlers = sortHandlers(mergedHandlers),
_sortHandlers2 = _slicedToArray(_sortHandlers, 3),
handlers = _sortHandlers2[0],
nativeHandlers = _sortHandlers2[1],
actions = _sortHandlers2[2];
var internalHandlers = {};
registerGesture(actions, handlers, 'onDrag', 'drag', internalHandlers, mergedConfig);
registerGesture(actions, handlers, 'onWheel', 'wheel', internalHandlers, mergedConfig);
registerGesture(actions, handlers, 'onScroll', 'scroll', internalHandlers, mergedConfig);
registerGesture(actions, handlers, 'onPinch', 'pinch', internalHandlers, mergedConfig);
registerGesture(actions, handlers, 'onMove', 'move', internalHandlers, mergedConfig);
registerGesture(actions, handlers, 'onHover', 'hover', internalHandlers, mergedConfig);
return {
handlers: internalHandlers,
config: mergedConfig,
nativeHandlers: nativeHandlers
};
}
function _toPrimitive(input, hint) {
if (_typeof$2(input) !== "object" || input === null) return input;
var prim = input[Symbol.toPrimitive];
if (prim !== undefined) {
var res = prim.call(input, hint || "default");
if (_typeof$2(res) !== "object") return res;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return (hint === "string" ? String : Number)(input);
}
function _toPropertyKey(arg) {
var key = _toPrimitive(arg, "string");
return _typeof$2(key) === "symbol" ? key : String(key);
}
function _defineProperty(obj, key, value) {
key = _toPropertyKey(key);
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function ownKeys$l(e, r) {
var t = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e);
r && (o = o.filter(function (r) {
return Object.getOwnPropertyDescriptor(e, r).enumerable;
})), t.push.apply(t, o);
}
return t;
}
function _objectSpread2(e) {
for (var r = 1; r < arguments.length; r++) {
var t = null != arguments[r] ? arguments[r] : {};
r % 2 ? ownKeys$l(Object(t), !0).forEach(function (r) {
_defineProperty(e, r, t[r]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$l(Object(t)).forEach(function (r) {
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
});
}
return e;
}
var Recognizer = /*#__PURE__*/function () {
function Recognizer(target, handlers, config, gestureKey, nativeHandlers) {
_classCallCheck(this, Recognizer);
this._target = target;
this._gestureKey = gestureKey;
this._ctrl = new Controller(handlers);
this._ctrl.applyHandlers(handlers, nativeHandlers);
this._ctrl.applyConfig(_objectSpread2(_objectSpread2({}, config), {}, {
target: target
}), gestureKey);
this._ctrl.effect();
}
return _createClass(Recognizer, [{
key: "destroy",
value: function destroy() {
this._ctrl.clean();
}
}, {
key: "setConfig",
value: function setConfig(config) {
this._ctrl.clean();
this._ctrl.applyConfig(_objectSpread2(_objectSpread2({}, config), {}, {
target: this._target
}), this._gestureKey);
this._ctrl.effect();
}
}]);
}();
function createGesture(actions) {
actions.forEach(registerAction);
return function (target, _handlers, _config) {
var _parseMergedHandlers = parseMergedHandlers(_handlers, _config || {}),
handlers = _parseMergedHandlers.handlers,
nativeHandlers = _parseMergedHandlers.nativeHandlers,
config = _parseMergedHandlers.config;
return new Recognizer(target, handlers, config, undefined, nativeHandlers);
};
}
var Gesture = createGesture([dragAction, pinchAction]);
function useGesture(config) {
var gesture = vue.ref(null);
var destroy = function destroy() {
var _gesture$value, _gesture$value$destro;
return (_gesture$value = gesture.value) === null || _gesture$value === void 0 || (_gesture$value$destro = _gesture$value.destroy) === null || _gesture$value$destro === void 0 ? void 0 : _gesture$value$destro.call(_gesture$value);
};
vue.watch(function () {
return [config === null || config === void 0 ? void 0 : config.destroyInvisible, config === null || config === void 0 ? void 0 : config.visible];
}, function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
destroyInvisible = _ref2[0],
visible = _ref2[1];
if (destroyInvisible && !visible) {
destroy();
}
});
vue.onUnmounted(function () {
var _gesture$value2, _gesture$value2$destr;
(_gesture$value2 = gesture.value) === null || _gesture$value2 === void 0 || (_gesture$value2$destr = _gesture$value2.destroy) === null || _gesture$value2$destr === void 0 || _gesture$value2$destr.call(_gesture$value2);
});
var create = function create(target, handler) {
var config2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
gesture.value = new Gesture(target, handler, config2);
returns.gesture = gesture.value;
};
var returns = vue.reactive({
gesture: gesture.value,
destroy: destroy,
create: create
});
return returns;
}
var noop = function noop() {};
function useSwipe(target) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _options$threshold = options.threshold,
threshold = _options$threshold === void 0 ? 50 : _options$threshold,
onSwipe = options.onSwipe,
onSwipeEnd = options.onSwipeEnd,
onSwipeStart = options.onSwipeStart,
_options$listenerOpti = options.listenerOptions,
listenerOptions = _options$listenerOpti === void 0 ? false : _options$listenerOpti;
var coordsStart = vue.reactive({
x: 0,
y: 0
});
var coordsEnd = vue.reactive({
x: 0,
y: 0
});
var diffX = vue.computed(function () {
return coordsStart.x - coordsEnd.x;
});
var diffY = vue.computed(function () {
return coordsStart.y - coordsEnd.y;
});
var max = Math.max,
abs = Math.abs;
var isThresholdExceeded = vue.computed(function () {
return max(abs(diffX.value), abs(diffY.value)) >= threshold;
});
var isSwiping = vue.ref(false);
var direction = vue.computed(function () {
if (!isThresholdExceeded.value) return "none";
if (abs(diffX.value) > abs(diffY.value)) {
return diffX.value > 0 ? "left" : "right";
}
return diffY.value > 0 ? "up" : "down";
});
var getTouchEventCoords = function getTouchEventCoords(e) {
return [e.touches[0].clientX, e.touches[0].clientY];
};
var updateCoordsStart = function updateCoordsStart(x, y) {
coordsStart.x = x;
coordsStart.y = y;
};
var updateCoordsEnd = function updateCoordsEnd(x, y) {
coordsEnd.x = x;
coordsEnd.y = y;
};
var isPassiveEventSupported = checkPassiveEventSupport();
var onTouchEnd = function onTouchEnd(e) {
if (isSwiping.value) onSwipeEnd === null || onSwipeEnd === void 0 || onSwipeEnd(e, direction.value);
isSwiping.value = false;
};
var stops = [useEventListener(target, "touchstart", function (e) {
if (e.touches.length !== 1) return;
if (listenerOptions === true || isObject$1(listenerOptions) && listenerOptions.capture && !listenerOptions.passive) preventDefault(e, false);
var _getTouchEventCoords = getTouchEventCoords(e),
_getTouchEventCoords2 = _slicedToArray(_getTouchEventCoords, 2),
x = _getTouchEventCoords2[0],
y = _getTouchEventCoords2[1];
updateCoordsStart(x, y);
updateCoordsEnd(x, y);
onSwipeStart === null || onSwipeStart === void 0 || onSwipeStart(e);
}, listenerOptions), useEventListener(target, "touchmove", function (e) {
if (e.touches.length !== 1) return;
var _getTouchEventCoords3 = getTouchEventCoords(e),
_getTouchEventCoords4 = _slicedToArray(_getTouchEventCoords3, 2),
x = _getTouchEventCoords4[0],
y = _getTouchEventCoords4[1];
updateCoordsEnd(x, y);
if (!isSwiping.value && isThresholdExceeded.value) isSwiping.value = true;
if (isSwiping.value) onSwipe === null || onSwipe === void 0 || onSwipe(e);
}, listenerOptions), useEventListener(target, "touchend", onTouchEnd, listenerOptions), useEventListener(target, "touchcancel", onTouchEnd, listenerOptions)];
var stop = function stop() {
return stops.forEach(function (s) {
return s();
});
};
return {
isPassiveEventSupported: isPassiveEventSupported,
isSwiping: isSwiping,
direction: direction,
coordsStart: coordsStart,
coordsEnd: coordsEnd,
lengthX: diffX,
lengthY: diffY,
stop: stop
};
}
function checkPassiveEventSupport() {
var document = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : isBrowser$1 ? window.document : void 0;
if (!document) return false;
var supportsPassive = false;
var optionsBlock = {
get passive() {
supportsPassive = true;
return false;
}
};
document.addEventListener("x", noop, optionsBlock);
document.removeEventListener("x", noop);
return supportsPassive;
}
var props$g = {
animation: {
type: String,
default: "slide",
validator: function validator(val) {
if (!val) return true;
return ["slide"].includes(val);
}
},
autoplay: {
type: Boolean,
default: true
},
current: {
type: Number,
default: void 0
},
modelValue: {
type: Number,
default: void 0
},
defaultCurrent: {
type: Number,
default: 0
},
direction: {
type: String,
default: "horizontal",
validator: function validator(val) {
if (!val) return true;
return ["horizontal", "vertical"].includes(val);
}
},
duration: {
type: Number,
default: 300
},
height: {
type: [String, Number]
},
interval: {
type: Number,
default: 5e3
},
loop: {
type: Boolean,
default: true
},
navigation: {
type: [Boolean, Object, Function],
default: true
},
nextMargin: {
type: [String, Number],
default: 0
},
previousMargin: {
type: [String, Number],
default: 0
},
type: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "card"].includes(val);
}
},
disabled: {
type: Boolean,
default: false
},
onChange: Function,
onClick: Function
};
function ownKeys$k(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$k(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$k(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$k(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var DEFAULT_SWIPER_NAVIGATION = {
paginationPosition: "bottom",
placement: "inside",
showControls: false,
type: "dots"
};
var SWIPE_THRESHOLD = 100;
var prefix$x = config.prefix;
var _Swiper = vue.defineComponent({
name: "".concat(prefix$x, "-swiper"),
props: props$g,
emits: ["change", "update:current", "update:modelValue", "transitionenter", "transitionleave"],
setup: function setup(props2, context) {
var _currentIndex$value;
var swiperClass = usePrefixClass("swiper");
var swiperNavClass = usePrefixClass("swiper-nav");
var renderTNodeJSX = useTNodeJSX();
var setOffset = function setOffset(offset) {
var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "X";
translateContainer.value = "translate".concat(direction, "(").concat(offset, "px)");
};
var root = vue.ref();
var items = vue.ref([]);
var _toRefs = vue.toRefs(props2),
value = _toRefs.current,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultCurrent),
_useVModel2 = _slicedToArray(_useVModel, 2),
currentIndex = _useVModel2[0],
setCurrent = _useVModel2[1];
var swiperContainer = vue.ref(null);
var previous = vue.ref((_currentIndex$value = currentIndex.value) !== null && _currentIndex$value !== void 0 ? _currentIndex$value : 0);
var animating = vue.ref(false);
var disabled = vue.ref(false);
var isSwiperDisabled = vue.computed(function () {
return props2.disabled === true;
});
var translateContainer = vue.ref("");
var isVertical = vue.computed(function () {
return props2.direction === "vertical";
});
var containerHeight = vue.ref("auto");
var navigationConfig = vue.computed(function () {
if (props2.navigation === true) {
return DEFAULT_SWIPER_NAVIGATION;
}
if (_typeof$2(props2.navigation) === "object" && props2.navigation !== null) {
return _objectSpread$k(_objectSpread$k({}, DEFAULT_SWIPER_NAVIGATION), props2.navigation);
}
return {};
});
var enableBuiltinNavigation = vue.computed(function () {
if (!Object.keys(navigationConfig.value).length) return false;
var minShowNum = navigationConfig.value.minShowNum;
return minShowNum ? items.value.length >= minShowNum : true;
});
var isBottomPagination = vue.computed(function () {
if (!enableBuiltinNavigation.value) return false;
var _navigationConfig$val = navigationConfig.value,
paginationPosition = _navigationConfig$val.paginationPosition,
type = _navigationConfig$val.type;
return paginationPosition === "bottom" && (type === "dots" || type === "dots-bar");
});
var rootClass = vue.computed(function () {
return ["".concat(swiperClass.value), "".concat(swiperClass.value, "--").concat(props2.type), _defineProperty$3({}, "".concat(swiperClass.value, "--").concat(navigationConfig.value.placement), isBottomPagination.value)];
});
var autoplayTimer = null;
var onItemClick = function onItemClick() {
var _props2$onClick, _currentIndex$value2;
(_props2$onClick = props2.onClick) === null || _props2$onClick === void 0 || _props2$onClick.call(props2, (_currentIndex$value2 = currentIndex.value) !== null && _currentIndex$value2 !== void 0 ? _currentIndex$value2 : 0);
};
var move = function move(step, source) {
var _root$value, _root$value2;
var isReset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var targetValue = arguments.length > 3 ? arguments[3] : undefined;
var nextIndex = currentIndex.value + step;
if (!props2.loop && !(isReset || typeof targetValue === "number")) {
if (nextIndex < 0 || nextIndex >= items.value.length) return;
}
animating.value = true;
var innerTargetValue = targetValue !== null && targetValue !== void 0 ? targetValue : isReset ? step : nextIndex;
processIndex(innerTargetValue, source);
var moveDirection = !isVertical.value ? "X" : "Y";
var distance = (_root$value = (_root$value2 = root.value) === null || _root$value2 === void 0 ? void 0 : _root$value2[isVertical.value ? "offsetHeight" : "offsetWidth"]) !== null && _root$value !== void 0 ? _root$value : 0;
translateContainer.value = "translate".concat(moveDirection, "(").concat(isReset ? 0 : -1 * distance * step, "px)");
};
var handleAnimationEnd = function handleAnimationEnd() {
disabled.value = false;
animating.value = false;
translateContainer.value = "translate".concat(isVertical.value ? "Y" : "X", "(0)");
updateItemPosition();
};
var stopAutoplay = function stopAutoplay() {
if (!autoplayTimer) return;
clearInterval(autoplayTimer);
autoplayTimer = null;
};
var startAutoplay = function startAutoplay() {
if (!props2.autoplay || autoplayTimer !== null) return false;
autoplayTimer = setInterval(function () {
goNext("autoplay");
}, props2.interval);
};
var goPrev = function goPrev(source) {
disabled.value = true;
move(-1, source);
};
var goNext = function goNext(source) {
disabled.value = true;
move(1, source);
};
var innerSetCurrent = function innerSetCurrent(val) {
setCurrent(val);
previous.value = val;
};
var processIndex = function processIndex(index, source) {
var max = items.value.length;
var val = index;
if (index < 0) {
val = props2.loop ? max - 1 : 0;
}
if (index >= max) {
val = props2.loop ? 0 : max - 1;
}
innerSetCurrent(val);
context.emit("update:current", val);
context.emit("change", val, {
source: source
});
};
var _useSwipe = useSwipe(swiperContainer, {
onSwipeStart: function onSwipeStart() {
if (disabled.value || isSwiperDisabled.value || !items.value.length) return;
stopAutoplay();
},
onSwipe: function onSwipe(e) {
if (disabled.value || isSwiperDisabled.value || !items.value.length) return;
onTouchMove(e);
},
onSwipeEnd: function onSwipeEnd() {
if (disabled.value || isSwiperDisabled.value || !items.value.length) return;
onTouchEnd();
}
}),
lengthX = _useSwipe.lengthX,
lengthY = _useSwipe.lengthY;
var onTouchMove = function onTouchMove(event) {
preventDefault(event, false);
animating.value = false;
var curIndex = currentIndex.value;
var maxIndex = items.value.length - 1;
var distance = isVertical.value ? lengthY.value : lengthX.value;
var dir = isVertical.value ? "Y" : "X";
if (!props2.loop && (curIndex <= 0 && distance < 0 || curIndex >= maxIndex && distance > 0)) return;
setOffset(-distance, dir);
};
var onTouchEnd = function onTouchEnd() {
var distance = isVertical.value ? lengthY.value : lengthX.value;
if (distance < -SWIPE_THRESHOLD) {
move(-1, "touch");
} else if (distance > SWIPE_THRESHOLD) {
move(1, "touch");
} else {
move(currentIndex.value, "touch", true);
}
startAutoplay();
};
var onTransitionstart = function onTransitionstart(event) {
context.emit("transitionenter", event);
};
var _onTransitionend = function onTransitionend(event) {
context.emit("transitionleave", event);
};
var addChild = function addChild(item) {
items.value.push(item);
};
var removeChild = function removeChild(uid) {
var removedIndex = items.value.findIndex(function (item) {
return item.uid === uid;
});
if (removedIndex === -1) return;
items.value.splice(removedIndex, 1);
if (items.value.length === 0) {
innerSetCurrent(0);
return;
}
if (removedIndex < currentIndex.value) {
innerSetCurrent(currentIndex.value - 1);
} else if (removedIndex === currentIndex.value && currentIndex.value >= items.value.length) {
innerSetCurrent(items.value.length - 1);
}
updateItemPosition();
};
var updateItemPosition = function updateItemPosition() {
if (!items.value.length) return;
items.value.forEach(function (item, index) {
item.calcTranslateStyle(index, currentIndex.value);
});
};
var setContainerHeight = function setContainerHeight(height) {
return containerHeight.value = isNumber(height) ? "".concat(height, "px") : height;
};
var updateContainerHeight = function updateContainerHeight() {
var _currentIndex$value3, _target$proxy;
if (props2.height) {
setContainerHeight(props2.height);
return;
}
var target = items.value[(_currentIndex$value3 = currentIndex.value) !== null && _currentIndex$value3 !== void 0 ? _currentIndex$value3 : 0];
var rect = target === null || target === void 0 || (_target$proxy = target.proxy) === null || _target$proxy === void 0 ? void 0 : _target$proxy.$el.getBoundingClientRect();
if (rect) {
setContainerHeight(rect.height);
}
};
vue.watch(currentIndex, updateContainerHeight);
vue.watch(function () {
return props2.current;
}, function (val, oldVal) {
if (val === previous.value) return;
stopAutoplay();
move(val - oldVal, "autoplay", false, val);
startAutoplay();
});
vue.provide("parent", {
loop: props2.loop,
root: root,
items: items,
isVertical: isVertical,
addChild: addChild,
removeChild: removeChild,
setContainerHeight: setContainerHeight
});
vue.onMounted(function () {
startAutoplay();
updateItemPosition();
updateContainerHeight();
});
vue.onUnmounted(function () {
stopAutoplay();
});
var renderControlsNav = function renderControlsNav() {
var _navigationConfig$val2;
if (isVertical.value || !((_navigationConfig$val2 = navigationConfig.value) !== null && _navigationConfig$val2 !== void 0 && _navigationConfig$val2.showControls)) return null;
return vue.createVNode("span", {
"class": "".concat(swiperNavClass.value, "__btn")
}, [vue.createVNode("span", {
"class": "".concat(swiperNavClass.value, "__btn--prev"),
"onClick": function onClick() {
return goPrev("nav");
}
}, null), vue.createVNode("span", {
"class": "".concat(swiperNavClass.value, "__btn--next"),
"onClick": function onClick() {
return goNext("nav");
}
}, null)]);
};
var renderDotsNav = function renderDotsNav() {
var navType = navigationConfig.value.type;
if (!navType || !["dots", "dots-bar"].includes(navType)) return null;
return vue.createVNode(vue.Fragment, null, [items.value.map(function (_, index) {
return vue.createVNode("span", {
"key": "page".concat(index),
"class": ["".concat(swiperNavClass.value, "__").concat(navType, "-item"), index === currentIndex.value && "".concat(swiperNavClass.value, "__").concat(navType, "-item--active"), "".concat(swiperNavClass.value, "__").concat(navType, "-item--").concat(props2.direction)]
}, null);
})]);
};
var renderFractionNav = function renderFractionNav() {
var _navigationConfig$val3, _currentIndex$value4;
if (((_navigationConfig$val3 = navigationConfig.value) === null || _navigationConfig$val3 === void 0 ? void 0 : _navigationConfig$val3.type) !== "fraction") return null;
return vue.createVNode("span", null, ["".concat(((_currentIndex$value4 = currentIndex.value) !== null && _currentIndex$value4 !== void 0 ? _currentIndex$value4 : 0) + 1, "/").concat(items.value.length)]);
};
var renderTypeNav = function renderTypeNav() {
if (!("type" in navigationConfig.value)) return null;
return vue.createVNode("span", {
"class": ["".concat(swiperNavClass.value, "--").concat(props2.direction), "".concat(swiperNavClass.value, "__").concat(navigationConfig.value.type || ""), "".concat(swiperNavClass.value, "--").concat(navigationConfig.value.paginationPosition || "bottom"), "".concat(swiperNavClass.value, "--").concat(navigationConfig.value.placement)]
}, [renderDotsNav(), renderFractionNav()]);
};
return function () {
var swiperNav = function swiperNav() {
var _context$slots;
if (props2.navigation === false) return null;
if (enableBuiltinNavigation.value) {
return vue.createVNode(vue.Fragment, null, [renderControlsNav(), renderTypeNav()]);
}
if (typeof props2.navigation === "function") return props2.navigation();
if ((_context$slots = context.slots) !== null && _context$slots !== void 0 && _context$slots.navigation) return context.slots.navigation();
return null;
};
return vue.createVNode("div", {
"ref": root,
"class": rootClass.value
}, [vue.createVNode("div", {
"ref": swiperContainer,
"class": "".concat(swiperClass.value, "__container"),
"style": {
flexDirection: isVertical.value ? "column" : "row",
transition: animating.value ? "transform ".concat(props2.duration, "ms") : "none",
transform: translateContainer.value,
height: containerHeight.value
},
"onTransitionstart": onTransitionstart,
"onTransitionend": function onTransitionend(event) {
if (event.target === event.currentTarget) {
_onTransitionend(event);
handleAnimationEnd();
}
},
"onClick": onItemClick
}, [renderTNodeJSX("default")]), swiperNav()]);
};
}
});
var prefix$w = config.prefix;
var _SwiperItem = vue.defineComponent({
name: "".concat(prefix$w, "-swiper-item"),
setup: function setup() {
var _inject = vue.inject("parent"),
addChild = _inject.addChild,
removeChild = _inject.removeChild,
isVertical = _inject.isVertical,
root = _inject.root,
items = _inject.items,
setContainerHeight = _inject.setContainerHeight;
var swiperItemClass = usePrefixClass("swiper-item");
var readerTNodeJSX = useTNodeJSX();
var selfRef = vue.ref(null);
var rootStyle = vue.ref("");
var instance = vue.getCurrentInstance();
var direction = vue.computed(function () {
return isVertical.value ? "Y" : "X";
});
var calcTranslateStyle = function calcTranslateStyle(index, activeIndex) {
var _root$value, _root$value2;
var distance = (_root$value = (_root$value2 = root.value) === null || _root$value2 === void 0 ? void 0 : _root$value2[isVertical.value ? "offsetHeight" : "offsetWidth"]) !== null && _root$value !== void 0 ? _root$value : 0;
var lastItemIndex = items.value.length - 1;
var step = index - activeIndex;
if (activeIndex === lastItemIndex && index === 0) {
step = 1;
}
if (activeIndex === 0 && index === lastItemIndex && index !== 1) {
step = -1;
}
if (activeIndex === index) step = 0;
rootStyle.value = "transform: translate".concat(direction.value, "(").concat(step * distance, "px)");
};
var _useElementBounding = useElementBounding(selfRef),
height = _useElementBounding.height;
vue.watch(height, function (val) {
setContainerHeight(val);
});
vue.onMounted(function () {
addChild({
proxy: instance === null || instance === void 0 ? void 0 : instance.proxy,
uid: instance === null || instance === void 0 ? void 0 : instance.uid,
calcTranslateStyle: calcTranslateStyle
});
});
vue.onUnmounted(function () {
removeChild(instance === null || instance === void 0 ? void 0 : instance.uid);
});
return function () {
return vue.createVNode("div", {
"ref": selfRef,
"class": swiperItemClass.value,
"style": rootStyle.value
}, [readerTNodeJSX("default")]);
};
}
});
var Swiper = withInstall(_Swiper);
var SwiperItem = withInstall(_SwiperItem);
function _isSlot$7(s) {
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
}
var prefix$v = config.prefix;
var TAP_TIME = 300;
var _ImageViewer = vue.defineComponent({
name: "".concat(prefix$v, "-image-viewer"),
props: props$h,
emits: ["close", "index-change", "update:visible", "update:modelValue", "update:index", "delete"],
setup: function setup(props2, _ref) {
var _props2$defaultIndex;
var emit = _ref.emit;
var imageViewerClass = usePrefixClass("image-viewer");
var state = vue.reactive({
dblTapZooming: false,
zooming: false,
scale: 1,
touchIndex: 0,
dragging: false,
draggedX: 0,
draggedY: 0,
extraDraggedX: 0
});
var _toRefs = vue.toRefs(props2),
index = _toRefs.index,
visible = _toRefs.visible,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(visible, modelValue, props2.defaultVisible, function () {}, "visible"),
_useVModel2 = _slicedToArray(_useVModel, 2),
visibleValue = _useVModel2[0],
setVisibleValue = _useVModel2[1];
var _useDefaultValue = useDefaultValue(index, (_props2$defaultIndex = props2.defaultIndex) !== null && _props2$defaultIndex !== void 0 ? _props2$defaultIndex : 0, props2.onIndexChange, "index"),
_useDefaultValue2 = _slicedToArray(_useDefaultValue, 2),
currentIndex = _useDefaultValue2[0],
setCurrentIndex = _useDefaultValue2[1];
var preloadImageIndex = vue.computed(function () {
var lastIndex = props2.images.length - 1;
if ([void 0, 0].includes(currentIndex.value)) {
return [0, 1, lastIndex];
}
if (currentIndex.value === lastIndex) {
return [lastIndex, lastIndex - 1, 0];
}
var prev = currentIndex.value - 1 >= 0 ? currentIndex.value - 1 : lastIndex;
var next = currentIndex.value + 1 <= lastIndex ? currentIndex.value + 1 : 0;
return [currentIndex.value, prev, next];
});
var imageInfoList = vue.computed(function () {
return props2.images.map(function (image, index2) {
var imageInfo;
if (typeof image === "string") {
imageInfo = {
url: image,
align: "center"
};
} else {
imageInfo = image;
}
return {
image: imageInfo,
preload: preloadImageIndex.value.includes(index2)
};
});
});
var disabled = vue.ref(false);
var rootRef = vue.ref();
var imagesSize = vue.reactive({});
var swiperRootRef = vue.ref();
var swiperItemRefs = vue.ref([]);
var gestureRef = vue.ref();
var renderTNodeJSX = useTNodeJSX();
var closeNode = vue.computed(function () {
return renderTNodeJSX("closeBtn", vue.h(CloseIcon));
});
var deleteNode = vue.computed(function () {
return renderTNodeJSX("deleteBtn", vue.h(DeleteIcon));
});
var imageTransform = vue.computed(function () {
var scale = state.scale,
draggedX = state.draggedX,
draggedY = state.draggedY;
return "matrix(".concat(scale, ", 0, 0, ").concat(scale, ", ").concat(draggedX, ", ").concat(draggedY, ")");
});
var imageTransitionDuration = vue.computed(function () {
var zooming = state.zooming,
dragging = state.dragging;
return zooming || dragging ? "transition-duration: 0s" : "transition-duration: 0.3s";
});
var beforeClose = function beforeClose() {
state.dblTapZooming = false;
state.zooming = false;
state.scale = 1;
state.dragging = false;
state.draggedX = 0;
state.draggedY = 0;
state.extraDraggedX = 0;
};
var handleClose = function handleClose(e, trigger) {
beforeClose();
setVisibleValue(false);
emit("close", {
trigger: trigger,
e: e
});
};
var handleClick = function handleClick(e) {
var target = e.target;
if (target.tagName === "IMG") {
handleClose(e, "image");
} else {
handleClose(e, "overlay");
}
};
var handleDelete = function handleDelete() {
var _currentIndex$value;
emit("delete", (_currentIndex$value = currentIndex.value) !== null && _currentIndex$value !== void 0 ? _currentIndex$value : 0);
};
var setImagePreload = function setImagePreload(index2) {
var nextIndex = index2 >= imageInfoList.value.length - 1 ? 0 : index2 + 1;
var preIndex = index2 <= 0 ? imageInfoList.value.length - 1 : index2 - 1;
imageInfoList.value[preIndex].preload = true;
imageInfoList.value[nextIndex].preload = true;
};
var onSwiperChange = function onSwiperChange(index2, context) {
if (currentIndex.value !== index2) {
var trigger = currentIndex.value < index2 ? "next" : "prev";
setCurrentIndex(index2, {
trigger: trigger
});
setScale(1);
setImagePreload(index2);
}
};
var onImgLoad = function onImgLoad(e, index2) {
var height = e.target.height;
imagesSize[index2] = {
height: height
};
};
var getMaxDraggedX = function getMaxDraggedX() {
var _rootRef$value;
var rootOffsetWidth = ((_rootRef$value = rootRef.value) === null || _rootRef$value === void 0 ? void 0 : _rootRef$value.offsetWidth) || 0;
var scaledWidth = state.scale * rootOffsetWidth;
return Math.max(0, (scaledWidth - rootOffsetWidth) / 2);
};
var getMaxDraggedY = function getMaxDraggedY(index2) {
var _rootRef$value2, _imagesSize$index, _imageInfoList$value$;
var rootOffsetHeight = ((_rootRef$value2 = rootRef.value) === null || _rootRef$value2 === void 0 ? void 0 : _rootRef$value2.offsetHeight) || 0;
var currentImageHeight = (imagesSize === null || imagesSize === void 0 || (_imagesSize$index = imagesSize[index2]) === null || _imagesSize$index === void 0 ? void 0 : _imagesSize$index.height) || 0;
var currentImageScaledHeight = state.scale * currentImageHeight;
var halfScaleHeight = (currentImageScaledHeight - currentImageHeight) / 2;
if (currentImageScaledHeight <= rootOffsetHeight) {
return {
top: 0,
bottom: 0
};
}
var diffHeight = currentImageScaledHeight - rootOffsetHeight;
var centerDraggedY = diffHeight / 2;
var alignmentDraggedY = {
start: {
top: -diffHeight + halfScaleHeight,
bottom: halfScaleHeight
},
center: {
top: -centerDraggedY,
bottom: centerDraggedY
},
end: {
top: -halfScaleHeight,
bottom: diffHeight - halfScaleHeight
}
};
var alignment = ((_imageInfoList$value$ = imageInfoList.value[index2]) === null || _imageInfoList$value$ === void 0 || (_imageInfoList$value$ = _imageInfoList$value$.image) === null || _imageInfoList$value$ === void 0 ? void 0 : _imageInfoList$value$.align) || "center";
return alignmentDraggedY[alignment];
};
var setScale = function setScale(scale) {
scale = Math.min(scale, +props2.maxZoom + 1);
if (scale !== state.scale) {
state.scale = scale;
if (scale === 1) {
state.draggedX = 0;
state.draggedY = 0;
}
}
};
var dragStartTime;
var dblTapTimer;
var toggleScale = function toggleScale() {
var scale = state.scale > 1 ? 1 : 2;
setScale(scale);
};
var onTransitionEnd = function onTransitionEnd(index2) {
if (index2 === state.touchIndex) {
state.dblTapZooming = false;
clearTimeout(dblTapTimer);
dblTapTimer = null;
}
};
var onTransitionStart = function onTransitionStart(index2) {
if (index2 === state.touchIndex) {
state.dblTapZooming = true;
clearTimeout(dblTapTimer);
}
};
var checkTap = function checkTap(e) {
var event = e.event;
var deltaTime = Date.now() - dragStartTime;
if (deltaTime < TAP_TIME && isBrowser$1) {
if (dblTapTimer) {
clearTimeout(dblTapTimer);
dblTapTimer = window.setTimeout(function () {
clearTimeout(dblTapTimer);
state.dragging = false;
toggleScale();
}, TAP_TIME);
} else {
dblTapTimer = window.setTimeout(function () {
handleClose(event, "overlay");
dblTapTimer = null;
}, TAP_TIME);
}
}
};
var onPinchChange = function onPinchChange(scale, index2) {
state.zooming = true;
state.touchIndex = index2;
setScale(scale);
};
var onPinchEnd = function onPinchEnd() {
state.zooming = false;
if (state.scale < 1) {
setScale(1);
}
if (state.scale > props2.maxZoom) {
state.scale = +props2.maxZoom;
}
};
var handlePinch = function handlePinch(pinState, index2) {
var last = pinState.last,
_pinState$offset = _slicedToArray(pinState.offset, 1),
d = _pinState$offset[0];
if (!(imagesSize !== null && imagesSize !== void 0 && imagesSize[index2])) return;
if (state.dblTapZooming) return;
if (!last) {
onPinchChange(d, index2);
} else {
onPinchEnd();
}
};
var handleDrag = function handleDrag(dragState, index2) {
state.touchIndex = index2;
var _ref2 = swiperRootRef.value || {},
setOffset = _ref2.setOffset;
if (!(imagesSize !== null && imagesSize !== void 0 && imagesSize[index2])) return;
var first = dragState.first,
movement = dragState.movement,
_movement = dragState._movement,
elapsedTime = dragState.elapsedTime,
tap = dragState.tap,
offset = dragState.offset,
overflow = dragState.overflow,
_delta = dragState._delta;
if (first) {
dragStartTime = Date.now();
}
if (tap && elapsedTime > 0 && elapsedTime < 300) {
checkTap(dragState);
return;
}
if (state.dblTapZooming) {
dragState === null || dragState === void 0 || dragState.cancel();
return;
}
state.dragging = true;
state.draggedY = (offset === null || offset === void 0 ? void 0 : offset[1]) || 0;
if (state.scale === 1) return;
state.draggedX = (offset === null || offset === void 0 ? void 0 : offset[0]) || 0;
if (movement[0] !== _movement[0] && overflow[0] !== 0) {
state.extraDraggedX += _delta[0] / 5;
setOffset === null || setOffset === void 0 || setOffset(state.extraDraggedX, "X");
} else if (state.extraDraggedX !== 0) {
state.extraDraggedX = 0;
setOffset === null || setOffset === void 0 || setOffset(state.extraDraggedX, "X");
}
};
var handleDragEnd = function handleDragEnd(dragState) {
var overflow = dragState.overflow,
last = dragState.last;
var _ref3 = swiperRootRef.value || {},
goPrev = _ref3.goPrev,
goNext = _ref3.goNext,
swiperContainer = _ref3.swiperContainer;
state.dragging = false;
if (state.extraDraggedX !== 0 && last) {
if (Math.abs(state.extraDraggedX) > 50) {
state.extraDraggedX = 0;
overflow[0] < 0 ? goNext === null || goNext === void 0 ? void 0 : goNext("touch") : goPrev === null || goPrev === void 0 ? void 0 : goPrev("touch");
return;
}
state.extraDraggedX = 0;
vue.nextTick(function () {
var _swiperContainer$styl, _swiperContainer$styl2, _swiperContainer$styl3, _swiperContainer$styl4;
swiperContainer === null || swiperContainer === void 0 || (_swiperContainer$styl = swiperContainer.style) === null || _swiperContainer$styl === void 0 || (_swiperContainer$styl2 = _swiperContainer$styl.setProperty) === null || _swiperContainer$styl2 === void 0 || _swiperContainer$styl2.call(_swiperContainer$styl, "transform", "translateX(0)");
swiperContainer === null || swiperContainer === void 0 || (_swiperContainer$styl3 = swiperContainer.style) === null || _swiperContainer$styl3 === void 0 || (_swiperContainer$styl4 = _swiperContainer$styl3.setProperty) === null || _swiperContainer$styl4 === void 0 || _swiperContainer$styl4.call(_swiperContainer$styl3, "transition", "transform 0.3s");
});
}
};
var gestureOptions = vue.reactive({
destroyInvisible: true,
visible: !!visibleValue.value
});
gestureRef.value = useGesture(gestureOptions);
vue.watch(function () {
return visibleValue.value;
}, function (newVal) {
return gestureOptions.visible = !!newVal;
});
vue.watch(function () {
return [visibleValue.value, swiperItemRefs.value];
}, function (_ref4) {
var _ref5 = _slicedToArray(_ref4, 2),
newVisible = _ref5[0],
newRefs = _ref5[1];
if (!newVisible) return;
vue.nextTick(function () {
var _newRefs$forEach;
(_newRefs$forEach = newRefs.forEach) === null || _newRefs$forEach === void 0 || _newRefs$forEach.call(newRefs, function (item, index2) {
var _gestureRef$value;
var $el = item.$el;
(_gestureRef$value = gestureRef.value) === null || _gestureRef$value === void 0 || _gestureRef$value.create($el, {
onDrag: function onDrag(dragState) {
return handleDrag(dragState, index2);
},
onDragEnd: function onDragEnd(dragState) {
return handleDragEnd(dragState);
},
onPinch: function onPinch(pinchState) {
return handlePinch(pinchState, index2);
}
}, {
drag: {
from: function from() {
return [state.draggedX, state.draggedY];
},
pointer: {
touch: true
},
bounds: function bounds() {
return {
top: getMaxDraggedY(index2).top,
right: getMaxDraggedX(),
bottom: getMaxDraggedY(index2).bottom,
left: -getMaxDraggedX()
};
}
},
pinch: {
from: function from() {
return [state.scale, 0];
},
pointer: {
touch: true
}
}
});
});
});
});
vue.watch(function () {
return state.scale;
}, function (newVal) {
return disabled.value = newVal !== 1;
});
vue.onUnmounted(function () {
clearTimeout(dblTapTimer);
});
return function () {
var _currentIndex$value2, _props2$images, _props2$images2;
var _slot;
var renderCoverContent = function renderCoverContent() {
var coverContent = renderTNodeJSX("cover");
if (coverContent) return vue.createVNode("div", {
"class": "".concat(imageViewerClass.value, "__cover")
}, [coverContent]);
};
return vue.createVNode(vue.Transition, {
"name": "fade"
}, {
default: function _default() {
return [visibleValue.value && vue.createVNode("div", {
"ref": rootRef,
"class": "".concat(imageViewerClass.value),
"onClick": handleClick
}, [renderCoverContent(), vue.createVNode("div", {
"class": "".concat(imageViewerClass.value, "__mask")
}, null), vue.createVNode(Swiper, {
"ref": swiperRootRef,
"autoplay": false,
"class": "".concat(imageViewerClass.value, "__content"),
"height": "100vh",
"defaultCurrent": currentIndex.value,
"disabled": disabled.value,
"onChange": onSwiperChange
}, _isSlot$7(_slot = imageInfoList.value.map(function (info, index2) {
return vue.createVNode(SwiperItem, {
"ref": function ref(item) {
return swiperItemRefs.value[index2] = item;
},
"key": index2,
"class": "".concat(imageViewerClass.value, "__swiper-item"),
"style": "touch-action: none; align-items:".concat(info.image.align, ";")
}, {
default: function _default() {
return [info.preload ? function () {
var imageSlotParams = {
className: "".concat(imageViewerClass.value, "__img"),
style: "\n transform: ".concat(index2 === state.touchIndex ? imageTransform.value : "matrix(1, 0, 0, 1, 0, 0)", ";\n ").concat(index2 === state.touchIndex ? imageTransitionDuration.value : "transition-duration: 0s;", ";\n "),
src: info.image.url,
onLoad: function onLoad(e) {
return onImgLoad(e, index2);
},
onTransitionstart: function onTransitionstart(e) {
if (e.target === e.currentTarget) {
onTransitionStart(index2);
}
},
onTransitionend: function onTransitionend(e) {
if (e.target === e.currentTarget) {
onTransitionEnd(index2);
}
}
};
var imageContent = renderTNodeJSX("image", {
params: imageSlotParams
});
if (imageContent) return imageContent;
return vue.createVNode("img", imageSlotParams, null);
}() : vue.createVNode("span", null, null)];
}
});
})) ? _slot : {
default: function _default() {
return [_slot];
}
}), vue.createVNode("div", {
"class": "".concat(imageViewerClass.value, "__nav")
}, [vue.createVNode("div", {
"class": "".concat(imageViewerClass.value, "__nav-close"),
"onClick": function onClick(e) {
return handleClose(e, "close-btn");
}
}, [closeNode.value]), props2.showIndex && vue.createVNode("div", {
"class": "".concat(imageViewerClass.value, "__nav-index")
}, ["".concat(Math.min(((_currentIndex$value2 = currentIndex.value) !== null && _currentIndex$value2 !== void 0 ? _currentIndex$value2 : 0) + 1, (_props2$images = props2.images) === null || _props2$images === void 0 ? void 0 : _props2$images.length), "/").concat((_props2$images2 = props2.images) === null || _props2$images2 === void 0 ? void 0 : _props2$images2.length)]), vue.createVNode("div", {
"class": "".concat(imageViewerClass.value, "__nav-delete"),
"onClick": handleDelete
}, [deleteNode.value])])])];
}
});
};
}
});
var ImageViewer = withInstall(_ImageViewer);
var UploadProps = {
accept: {
type: String,
default: ""
},
action: {
type: String,
default: ""
},
addBtn: {
type: Boolean,
default: true
},
addContent: {
type: [String, Function]
},
allowUploadDuplicateFile: Boolean,
autoUpload: {
type: Boolean,
default: true
},
beforeAllFilesUpload: {
type: Function
},
beforeUpload: {
type: Function
},
capture: {
type: String,
default: ""
},
data: {
type: Object
},
disabled: {
type: Boolean,
default: void 0
},
fileListDisplay: {
type: Function
},
files: {
type: Array,
default: void 0
},
defaultFiles: {
type: Array,
default: function _default() {
return [];
}
},
format: {
type: Function
},
formatRequest: {
type: Function
},
formatResponse: {
type: Function
},
headers: {
type: Object
},
imageProps: {
type: Object
},
isBatchUpload: Boolean,
max: {
type: Number,
default: 0
},
method: {
type: String,
default: "POST",
validator: function validator(val) {
if (!val) return true;
return ["POST", "GET", "PUT", "OPTIONS", "PATCH", "post", "get", "put", "options", "patch"].includes(val);
}
},
mockProgressDuration: {
type: Number
},
multiple: Boolean,
name: {
type: String,
default: "file"
},
preview: {
type: Boolean,
default: true
},
removeBtn: {
type: Boolean,
default: true
},
requestMethod: {
type: Function
},
sizeLimit: {
type: [Number, Object]
},
useMockProgress: {
type: Boolean,
default: true
},
uploadAllFilesInOneRequest: Boolean,
value: {
type: Array,
default: void 0
},
modelValue: {
type: Array,
default: void 0
},
defaultValue: {
type: Array,
default: function _default() {
return [];
}
},
withCredentials: Boolean,
onCancelUpload: Function,
onChange: Function,
onClickUpload: Function,
onFail: Function,
onOneFileFail: Function,
onOneFileSuccess: Function,
onPreview: Function,
onProgress: Function,
onRemove: Function,
onSelectChange: Function,
onSuccess: Function,
onValidate: Function,
onWaitingUploadFilesChange: Function
};
function _toArray(r) {
return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray$5(r) || _nonIterableRest();
}
var IMAGE_ALL_REGEXP = /(.png|.jpg|.jpeg|.jpe|.webp|.avif|.svg|.gif|.bmp|.dwg|.dxf|.svf|.tif|.tiff|.arw)/i;
var VIDEO_REGEXP = /(.avi|.mp4|.wmv|.mpg|.mpeg|.mov|.rm|.ram|.swf|.flv|.rmvb|.flash|.mid|.3gp)/i;
var AUDIO_REGEXP = /(.mp2|.mp3|.mp4|.ogg|.3gpp|.ac3|.au)/i;
var INPUT_FILE_MAP = {
"audio/*": AUDIO_REGEXP,
"video/*": VIDEO_REGEXP,
"image/*": IMAGE_ALL_REGEXP,
".jpg": /image\/jpeg|\.jpg$/i,
".ico": /image\/vnd.microsoft.icon/i,
".doc": /application\/msword/i,
".docx": /application\/vnd.openxmlformats-officedocument.wordprocessingml.document/i,
".xls": /application\/vnd.ms-excel/i,
".xlsx": /application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet/i,
".ppt": /application\/vnd.ms-powerpoint/i,
".pptx": /application\/vnd.openxmlformats-officedocument.presentationml.presentation/i,
".vsd": /application\/vnd.visio/i,
".txt": /text\/plain/i,
".abw": /application\/x-abiword/i,
".avi": /video\/x-msvideo/i,
".azw": /application\/vnd.amazon.ebook/i,
".bin": /application\/octet-stream/i,
".cda": /application\/x-cdf/i,
".mpkg": /application\/vnd.apple.installer+xml/i,
".odp": /application\/vnd.oasis.opendocument.presentation/i,
".ods": /application\/vnd.oasis.opendocument.spreadsheet/i,
".odt": /application\/vnd.oasis.opendocument.text/i,
".oga": /audio\/ogg/i,
".ogv": /video\/ogg/i,
".ogx": /application\/ogg/i
};
var SIZE_MAP = {
B: 1,
KB: 1024,
MB: 1048576,
GB: 1073741824
};
function getCurrentDate() {
var needTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var d = new Date();
var month = d.getMonth() + 1;
month = month < 10 ? "0".concat(month) : month;
var date = "".concat(d.getFullYear(), "-").concat(month, "-").concat(d.getDate());
var time = "".concat(d.getHours(), ":").concat(d.getMinutes(), ":").concat(d.getSeconds());
if (needTime) return [date, time].join(" ");
return date;
}
function isOverSizeLimit(fileSize, sizeLimit, unit) {
var units = ["B", "KB", "MB", "GB"];
var KBIndex = 1;
var index = units.indexOf(unit);
if (index === -1) {
log.warn("Upload", "`sizeLimit.unit` can only be one of ".concat(units.join()));
index = KBIndex;
}
var num = SIZE_MAP[unit];
return fileSize > sizeLimit * num;
}
function getFileUrlByFileRaw(fileRaw) {
return new Promise(function (resolve) {
if (!fileRaw) {
resolve("");
return;
}
var reader = new FileReader();
reader.readAsDataURL(fileRaw);
reader.onload = function (event) {
var _event$target;
resolve((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.result);
};
});
}
function validateFileType(accept, fileType, fileName) {
var tmpFileType = fileType || fileName;
if (!accept) return true;
if (!tmpFileType) return false;
var acceptList = accept.split(",").map(function (v) {
return v.trim();
});
for (var i = 0, len = acceptList.length; i < len; i++) {
var oneRule = acceptList[i];
if (INPUT_FILE_MAP[oneRule] && INPUT_FILE_MAP[oneRule].test(tmpFileType)) {
return true;
}
var regExp = new RegExp(oneRule, "i");
if (regExp.test(tmpFileType)) {
return true;
}
}
return false;
}
function getFileList(files) {
var accept = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
var fileList = [];
for (var i = 0; i < files.length; i++) {
if (validateFileType(accept, files[i].type, files[i].name)) {
fileList.push(files[i]);
}
}
return fileList;
}
function ownKeys$j(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$j(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$j(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$j(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function xhr(_ref) {
var _files$;
var _ref$method = _ref.method,
method = _ref$method === void 0 ? "POST" : _ref$method,
action = _ref.action,
_ref$withCredentials = _ref.withCredentials,
withCredentials = _ref$withCredentials === void 0 ? false : _ref$withCredentials,
_ref$headers = _ref.headers,
headers = _ref$headers === void 0 ? {} : _ref$headers,
_ref$data = _ref.data,
data = _ref$data === void 0 ? {} : _ref$data,
file = _ref.file,
_ref$files = _ref.files,
files = _ref$files === void 0 ? [] : _ref$files,
_ref$name = _ref.name,
name = _ref$name === void 0 ? "file" : _ref$name,
_ref$useMockProgress = _ref.useMockProgress,
useMockProgress = _ref$useMockProgress === void 0 ? true : _ref$useMockProgress,
_ref$mockProgressDura = _ref.mockProgressDuration,
mockProgressDuration = _ref$mockProgressDura === void 0 ? 300 : _ref$mockProgressDura,
formatRequest = _ref.formatRequest,
onError = _ref.onError,
onProgress = _ref.onProgress,
onSuccess = _ref.onSuccess;
var innerFiles = files || [];
var percent = 0;
var xhr2 = new XMLHttpRequest();
if (withCredentials) {
xhr2.withCredentials = true;
}
var timer1;
var timer2;
if (useMockProgress && ((_files$ = files[0]) === null || _files$ === void 0 ? void 0 : _files$.status) === "progress") {
var timer22 = setTimeout(function () {
timer1 = setInterval(function () {
if (percent + 10 < 100) {
percent = Math.max(percent + 10, percent);
if (files[0] && percent !== files[0].percent) {
files[0].percent = percent;
onProgress({
percent: percent,
file: file || innerFiles[0],
files: innerFiles.map(function (file2) {
return _objectSpread$j(_objectSpread$j({}, file2), {}, {
percent: percent
});
}),
type: "mock",
XMLHttpRequest: xhr2
});
}
} else {
clearInterval(timer1);
}
}, mockProgressDuration);
clearTimeout(timer22);
}, mockProgressDuration);
}
var requestData = {};
if (data) {
var extraData = isFunction(data) ? data(innerFiles) : data;
Object.assign(requestData, extraData);
}
innerFiles.forEach(function (file2, index) {
var fileField = innerFiles.length > 1 ? "".concat(name, "[").concat(index, "]") : name;
requestData[fileField] = file2.raw;
});
if (innerFiles.length === 1) {
requestData[name] = innerFiles[0].raw;
} else {
requestData[name] = innerFiles.map(function (file2) {
return file2.raw;
});
}
requestData.length = innerFiles.length;
if (formatRequest) {
requestData = formatRequest(requestData);
}
var formData = new FormData();
Object.keys(requestData).forEach(function (key) {
var dataValue = requestData[key];
if (Array.isArray(dataValue)) {
dataValue.forEach(function (value) {
formData.append(key, value);
});
} else {
formData.append(key, dataValue);
}
});
xhr2.open(method, action, true);
Object.keys(headers).forEach(function (key) {
xhr2.setRequestHeader(key, headers[key]);
});
xhr2.onerror = function (event) {
onError({
event: event,
file: file,
files: innerFiles,
XMLHttpRequest: xhr2
});
clearInterval(timer1);
clearTimeout(timer2);
};
xhr2.ontimeout = function (event) {
onError({
event: event,
file: file,
files: innerFiles,
XMLHttpRequest: xhr2
});
};
if (xhr2.upload) {
xhr2.upload.onprogress = function (event) {
var _innerFiles$;
var realPercent = 0;
if (event.total > 0) {
realPercent = Math.round(event.loaded / event.total * 100);
}
percent = Math.max(realPercent, percent);
if (percent !== realPercent && ((_innerFiles$ = innerFiles[0]) === null || _innerFiles$ === void 0 ? void 0 : _innerFiles$.percent) !== percent) {
var progressFiles = innerFiles.map(function (item) {
return _objectSpread$j(_objectSpread$j({}, item), {}, {
percent: percent
});
});
onProgress({
event: event,
percent: percent,
file: file || progressFiles[0],
files: progressFiles,
type: "real",
XMLHttpRequest: xhr2
});
}
};
}
xhr2.onload = function (event) {
var response = {};
response.XMLHttpRequest = xhr2;
var isFail = xhr2.status < 200 || xhr2.status >= 300;
if (isFail) {
return onError({
event: event,
file: file,
files: innerFiles,
response: response,
XMLHttpRequest: xhr2
});
}
var text = xhr2.responseText || xhr2.response;
try {
response = JSON.parse(text);
} catch (e) {
response = text;
log.error("Upload", "response does not a valid json");
}
clearInterval(timer1);
clearTimeout(timer2);
innerFiles.forEach(function (file2) {
var _response;
file2.percent = 100;
file2.status = "success";
file2.uploadTime = ((_response = response) === null || _response === void 0 ? void 0 : _response.uploadTime) || getCurrentDate();
});
if (_typeof$2(response) === "object") {
response.XMLHttpRequest = xhr2;
}
onSuccess({
event: event,
file: file || innerFiles[0],
files: _toConsumableArray(innerFiles),
XMLHttpRequest: xhr2,
response: response
});
};
xhr2.send(formData);
xhr2.upload.requestParams = requestData;
xhr2.upload.requestHeaders = headers;
return xhr2;
}
function _arrayLikeToArray$3(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function ownKeys$i(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$i(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$i(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$i(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function handleBeforeUpload(file, params) {
var sizeLimit = params.sizeLimit,
beforeUpload = params.beforeUpload;
var sizePromise = new Promise(function (resolve) {
var result = null;
if (sizeLimit) {
var sizeLimitObj = isNumber(sizeLimit) ? {
size: sizeLimit,
unit: "KB"
} : sizeLimit;
var limit = isOverSizeLimit(file.size, sizeLimitObj.size, sizeLimitObj.unit);
if (limit) {
result = sizeLimitObj;
}
}
resolve(result);
});
var promiseList = [sizePromise, void 0];
if (isFunction(beforeUpload)) {
var r = beforeUpload(file);
var p = r instanceof Promise ? r : new Promise(function (resolve) {
resolve(r);
});
promiseList[1] = p;
}
return new Promise(function (resolve) {
Promise.all(promiseList).then(function (r) {
resolve(r);
});
});
}
function handleError(options) {
var event = options.event,
files = options.files,
response = options.response,
XMLHttpRequest = options.XMLHttpRequest,
formatResponse = options.formatResponse;
var res = response;
if (isFunction(formatResponse)) {
res = formatResponse(response, {
file: files[0],
currentFiles: files
});
}
files.forEach(function (file) {
file.status = "fail";
file.response = res;
});
return {
response: res,
event: event,
files: files,
XMLHttpRequest: XMLHttpRequest
};
}
function handleSuccess(params) {
var event = params.event,
files = params.files,
response = params.response,
XMLHttpRequest = params.XMLHttpRequest;
if ((files === null || files === void 0 ? void 0 : files.length) <= 0) {
log.error("Upload", "Empty File in Success Callback");
}
files.forEach(function (file) {
var _file$response;
file.percent = 100;
file.status = "success";
(_file$response = file.response) === null || _file$response === void 0 || delete _file$response.error;
});
var res = response;
files[0].url = res.url || files[0].url;
return {
response: res,
event: event,
files: files,
XMLHttpRequest: XMLHttpRequest
};
}
function handleRequestMethodResponse(res) {
if (!res) {
log.error("Upload", "`requestMethodResponse` is required.");
return false;
}
if (!res.status) {
log.error("Upload", "`requestMethodResponse.status` is missing, which value only can be `success` or `fail`");
return false;
}
if (!["success", "fail"].includes(res.status)) {
log.error("Upload", "`requestMethodResponse.status` must be `success` or `fail`, examples `{ status: 'success', response: { url: '' } }`");
return false;
}
if (res.status === "success" && (!res.response || !res.response.url && !res.response.files)) {
log.warn("Upload", "`requestMethodResponse.response.url` or `requestMethodResponse.response.files` is required if `status` is `success`");
}
return true;
}
function uploadOneRequest(params) {
var action = params.action,
toUploadFiles = params.toUploadFiles,
requestMethod = params.requestMethod;
return new Promise(function (resolve) {
if (!action && !requestMethod) {
log.error("Upload", "one of action and requestMethod must be exist.");
resolve({});
return;
}
if (!toUploadFiles || !toUploadFiles.length) {
log.warn("Upload", "No files need to be uploaded");
resolve({});
return;
}
toUploadFiles.forEach(function (file) {
file.status = "progress";
});
if (requestMethod) {
requestMethod(params.multiple ? toUploadFiles : toUploadFiles[0]).then(function (res) {
if (!handleRequestMethodResponse(res)) {
resolve({});
return;
}
var response = res.response || {};
if (isFunction(params.formatResponse)) {
response = params.formatResponse(response, {
file: toUploadFiles[0],
currentFiles: toUploadFiles
});
}
if (res.status === "fail") {
response.error = res.error || response.error;
}
var resultFiles = [];
if (res.status === "success" && response.files) {
resultFiles = response.files.map(function (file) {
var fileInfo = toUploadFiles.find(function (toFile) {
return file.name && toFile.name === file.name || file.raw && toFile.raw === file.raw;
});
return _objectSpread$i(_objectSpread$i(_objectSpread$i({}, fileInfo), file), {}, {
status: res.status,
response: response
});
});
} else {
toUploadFiles.forEach(function (file) {
var _response;
file.status = res.status;
file.response = response;
file.url = response.url;
file.percent = res.status === "success" ? 100 : 0;
file.uploadTime = ((_response = response) === null || _response === void 0 ? void 0 : _response.uploadTime) || getCurrentDate();
});
resultFiles = toUploadFiles;
}
var result = {
response: response,
file: resultFiles[0],
files: resultFiles
};
if (res.status === "success") {
var _params$onResponseSuc;
(_params$onResponseSuc = params.onResponseSuccess) === null || _params$onResponseSuc === void 0 || _params$onResponseSuc.call(params, result);
} else if (res.status === "fail") {
var _params$onResponseErr;
(_params$onResponseErr = params.onResponseError) === null || _params$onResponseErr === void 0 || _params$onResponseErr.call(params, result);
}
resolve({
status: res.status,
data: result
});
});
} else {
var _params$setXhrObject;
var xhrReq = xhr({
action: params.action,
files: params.toUploadFiles,
useMockProgress: params.useMockProgress,
mockProgressDuration: params.mockProgressDuration,
onError: function onError(p) {
var _params$onResponseErr2;
var r = handleError(_objectSpread$i(_objectSpread$i({}, p), {}, {
formatResponse: params.formatResponse
}));
(_params$onResponseErr2 = params.onResponseError) === null || _params$onResponseErr2 === void 0 || _params$onResponseErr2.call(params, r);
resolve({
status: "fail",
data: r
});
},
onProgress: params.onResponseProgress,
onSuccess: function onSuccess(p) {
var formatResponse = params.formatResponse;
var res = p.response;
if (isFunction(formatResponse)) {
res = formatResponse(p.response, {
file: p.file,
currentFiles: p.files
});
}
if (res.error) {
var _params$onResponseErr3;
var r = handleError(_objectSpread$i(_objectSpread$i({}, p), {}, {
response: res
}));
(_params$onResponseErr3 = params.onResponseError) === null || _params$onResponseErr3 === void 0 || _params$onResponseErr3.call(params, r);
resolve({
status: "fail",
data: r
});
} else {
var _params$onResponseSuc2;
p.file.response = res;
p.files[0].response = res;
var _r = handleSuccess(_objectSpread$i(_objectSpread$i({}, p), {}, {
response: res
}));
(_params$onResponseSuc2 = params.onResponseSuccess) === null || _params$onResponseSuc2 === void 0 || _params$onResponseSuc2.call(params, _r);
resolve({
status: "success",
data: _r
});
}
},
formatRequest: params.formatRequest,
data: params.data,
name: params.name,
headers: params.headers,
withCredentials: params.withCredentials,
method: params.method
});
(_params$setXhrObject = params.setXhrObject) === null || _params$setXhrObject === void 0 || _params$setXhrObject.call(params, {
files: params.toUploadFiles,
xhrReq: xhrReq
});
}
});
}
function updateUploadedFiles(uploadFiles, resultFiles) {
var existFiles = uploadFiles.filter(function (t) {
return t.url;
});
var newFiles = existFiles;
var _loop = function _loop() {
var file = resultFiles[i];
var index = uploadFiles.findIndex(function (item) {
return item.raw && item.raw === file.raw || item.name && item.name === file.name;
});
var tmpFile = index >= 0 ? _objectSpread$i(_objectSpread$i({}, uploadFiles[index]), file) : file;
newFiles.push(tmpFile);
};
for (var i = 0, len = resultFiles.length; i < len; i++) {
_loop();
}
return newFiles;
}
function upload(params) {
var uploadAllFilesInOneRequest = params.uploadAllFilesInOneRequest,
toUploadFiles = params.toUploadFiles,
uploadedFiles = params.uploadedFiles,
isBatchUpload = params.isBatchUpload;
var thisUploadFiles = toUploadFiles.filter(function (t) {
return !t.response || t.response && !t.response.error;
});
return new Promise(function (resolve) {
if (uploadAllFilesInOneRequest || !params.multiple) {
uploadOneRequest(params).then(function (r) {
if (r.status === "success") {
r.data.files = isBatchUpload || !params.multiple ? r.data.files : updateUploadedFiles(uploadedFiles, r.data.files);
}
var failedFiles = r.status === "fail" ? r.data.files : [];
resolve(_objectSpread$i(_objectSpread$i({}, r), {}, {
failedFiles: failedFiles
}));
});
return;
}
var list = thisUploadFiles.map(function (file) {
return uploadOneRequest(_objectSpread$i(_objectSpread$i({}, params), {}, {
toUploadFiles: [file]
}));
});
Promise.all(list).then(function (arr) {
var files = [];
var failedFiles = [];
arr.forEach(function (one) {
if (one.status === "success") {
files.push(one.data.files[0]);
} else if (one.status === "fail") {
failedFiles.push(one.data.files[0]);
}
});
var tFiles = params.autoUpload ? uploadedFiles.concat(files) : uploadedFiles;
var newFiles = isBatchUpload || !params.multiple ? files : tFiles;
resolve({
status: files.length ? "success" : "fail",
data: {
files: newFiles
},
failedFiles: failedFiles,
list: arr
});
});
});
}
function formatToUploadFile(files, format) {
var status = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : void 0;
var percent = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
return files.map(function (fileRaw) {
var file = fileRaw;
if (isFunction(format)) {
file = format(fileRaw);
}
var uploadFile = _objectSpread$i({
raw: fileRaw,
lastModified: fileRaw.lastModified,
name: fileRaw.name,
size: fileRaw.size,
type: fileRaw.type,
percent: percent,
status: status
}, file);
return uploadFile;
});
}
function validateFile(params) {
var files = params.files,
uploadValue = params.uploadValue,
max = params.max,
allowUploadDuplicateFile = params.allowUploadDuplicateFile,
_params$capture = params.capture,
capture = _params$capture === void 0 ? "" : _params$capture;
return new Promise(function (resolve) {
var tmpFiles = files.filter(function (file) {
if (allowUploadDuplicateFile || !!capture) return true;
var sameNameFile = uploadValue.find(function (t) {
return t.name === file.name;
});
return !sameNameFile;
});
var hasSameNameFile = false;
if (tmpFiles.length < files.length) {
hasSameNameFile = true;
}
if (!tmpFiles.length) {
var tFiles = formatToUploadFile(files, params.format, params.autoUpload ? "progress" : "waiting");
resolve({
hasSameNameFile: hasSameNameFile,
file: tFiles === null || tFiles === void 0 ? void 0 : tFiles[0],
files: tFiles,
validateResult: {
type: "FILTER_FILE_SAME_NAME"
}
});
return;
}
var lengthOverLimit = false;
if (max && tmpFiles.length && !params.isBatchUpload) {
var tmpFilesLenToBeAdded = tmpFiles.length;
tmpFiles = tmpFiles.slice(0, max - uploadValue.length);
if (tmpFilesLenToBeAdded + uploadValue.length > max) {
lengthOverLimit = true;
}
}
var formattedFiles = formatToUploadFile(tmpFiles, params.format, params.autoUpload ? "progress" : "waiting");
var allFileValidatePromise;
if (params.beforeAllFilesUpload) {
var _params$beforeAllFile;
var r = (_params$beforeAllFile = params.beforeAllFilesUpload) === null || _params$beforeAllFile === void 0 ? void 0 : _params$beforeAllFile.call(params, formattedFiles);
allFileValidatePromise = r instanceof Promise ? r : new Promise(function (resolve2) {
resolve2(r);
});
}
var promiseList = formattedFiles.map(function (file) {
return new Promise(function (resolve2) {
handleBeforeUpload(file, {
beforeUpload: params.beforeUpload,
sizeLimit: params.sizeLimit
}).then(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
sizeResult = _ref2[0],
customResult = _ref2[1];
if (sizeResult) {
resolve2({
file: file,
validateResult: {
type: "FILE_OVER_SIZE_LIMIT",
extra: sizeResult
}
});
} else if (customResult === false) {
resolve2({
file: file,
validateResult: {
type: "CUSTOM_BEFORE_UPLOAD"
}
});
}
resolve2({
file: file
});
});
});
});
Promise.all([allFileValidatePromise].concat(promiseList)).then(function (results) {
var _results = _toArray(results),
allFilesResult = _results[0],
others = _arrayLikeToArray$3(_results).slice(1);
if (allFilesResult === false) {
resolve({
lengthOverLimit: lengthOverLimit,
hasSameNameFile: hasSameNameFile,
validateResult: {
type: "BEFORE_ALL_FILES_UPLOAD"
},
files: formattedFiles
});
} else {
resolve({
lengthOverLimit: lengthOverLimit,
hasSameNameFile: hasSameNameFile,
fileValidateList: others,
files: formattedFiles
});
}
});
});
}
function getFilesAndErrors(fileValidateList, getError) {
var sizeLimitErrors = [];
var beforeUploadErrorFiles = [];
var toFiles = [];
fileValidateList.forEach(function (oneFile) {
var _oneFile$validateResu, _oneFile$validateResu2;
if (((_oneFile$validateResu = oneFile.validateResult) === null || _oneFile$validateResu === void 0 ? void 0 : _oneFile$validateResu.type) === "CUSTOM_BEFORE_UPLOAD") {
beforeUploadErrorFiles.push(oneFile.file);
return;
}
if (((_oneFile$validateResu2 = oneFile.validateResult) === null || _oneFile$validateResu2 === void 0 ? void 0 : _oneFile$validateResu2.type) === "FILE_OVER_SIZE_LIMIT") {
if (!oneFile.file.response) {
oneFile.file.response = {};
}
oneFile.file.response.error = oneFile.file.response.error || getError(oneFile.validateResult.extra);
sizeLimitErrors.push(oneFile);
return;
}
toFiles.push(oneFile.file);
});
return {
sizeLimitErrors: sizeLimitErrors,
beforeUploadErrorFiles: beforeUploadErrorFiles,
toFiles: toFiles
};
}
function getDisplayFiles(params) {
var multiple = params.multiple,
uploadValue = params.uploadValue,
toUploadFiles = params.toUploadFiles,
autoUpload = params.autoUpload;
var waitingUploadFiles = autoUpload ? toUploadFiles : toUploadFiles.filter(function (file) {
return file.status !== "success";
});
if (multiple && !params.isBatchUpload) {
if (!autoUpload) return uploadValue;
return (waitingUploadFiles.length ? uploadValue.concat(waitingUploadFiles) : uploadValue) || [];
}
return (waitingUploadFiles.length ? waitingUploadFiles : uploadValue) || [];
}
function ownKeys$h(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$h(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$h(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$h(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function useUpload(props) {
var inputRef = vue.ref();
var _toRefs = vue.toRefs(props),
disabled = _toRefs.disabled,
autoUpload = _toRefs.autoUpload,
isBatchUpload = _toRefs.isBatchUpload,
multiple = _toRefs.multiple,
files = _toRefs.files,
modelValue = _toRefs.modelValue,
defaultFiles = _toRefs.defaultFiles;
var _useVModel = useVModel(files, modelValue, defaultFiles.value, props.onChange, "files"),
_useVModel2 = _slicedToArray(_useVModel, 2),
uploadValue = _useVModel2[0],
setUploadValue = _useVModel2[1];
var xhrReq = vue.ref([]);
var toUploadFiles = vue.ref([]);
var sizeOverLimitMessage = vue.ref("");
var uploading = vue.ref(false);
var displayFiles = vue.computed(function () {
return getDisplayFiles({
multiple: (multiple === null || multiple === void 0 ? void 0 : multiple.value) || false,
toUploadFiles: toUploadFiles.value,
uploadValue: uploadValue.value,
autoUpload: (autoUpload === null || autoUpload === void 0 ? void 0 : autoUpload.value) || false,
isBatchUpload: (isBatchUpload === null || isBatchUpload === void 0 ? void 0 : isBatchUpload.value) || false
});
});
var uploadFilePercent = function uploadFilePercent(params) {
var file = params.file,
percent = params.percent;
var index = toUploadFiles.value.findIndex(function (item) {
return file.raw === item.raw;
});
toUploadFiles.value[index] = _objectSpread$h(_objectSpread$h({}, toUploadFiles.value[index]), {}, {
percent: percent
});
};
var updateFilesProgress = function updateFilesProgress() {
if (props.autoUpload) {
toUploadFiles.value = _toConsumableArray(toUploadFiles.value);
}
};
var onResponseError = function onResponseError(p) {
var _props$onOneFileFail;
if (!p || !p.files || !p.files[0]) return;
var response = p.response,
event = p.event,
files2 = p.files;
updateFilesProgress();
(_props$onOneFileFail = props.onOneFileFail) === null || _props$onOneFileFail === void 0 || _props$onOneFileFail.call(props, {
e: event,
file: files2 === null || files2 === void 0 ? void 0 : files2[0],
currentFiles: files2,
failedFiles: files2,
response: response
});
if (!props.multiple || props.isBatchUpload) {
setUploadValue([], {
trigger: "progress-fail",
e: p.event,
file: p.files[0]
});
}
};
var onResponseProgress = function onResponseProgress(p) {
var _props$onProgress;
updateFilesProgress();
(_props$onProgress = props.onProgress) === null || _props$onProgress === void 0 || _props$onProgress.call(props, {
e: p.event,
file: p.file,
currentFiles: p.files,
percent: p.percent,
type: p.type,
XMLHttpRequest: p.XMLHttpRequest
});
};
var onResponseSuccess = function onResponseSuccess(p) {
if (props.multiple && !props.uploadAllFilesInOneRequest) {
var _props$onOneFileSucce;
updateFilesProgress();
(_props$onOneFileSucce = props.onOneFileSuccess) === null || _props$onOneFileSucce === void 0 || _props$onOneFileSucce.call(props, {
e: p.event,
file: p.files[0],
response: p.response
});
}
};
var t = function t(pattern) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var data = args[0];
if (isString(pattern)) {
if (!data) return pattern;
var regular = /\{\s*([\w-]+)\s*\}/g;
var translated = pattern.replace(regular, function (match, key) {
if (data) {
return String(data[key]);
}
return "";
});
return translated;
}
if (isFunction(pattern)) {
if (!args.length) return pattern(vue.h);
return pattern.apply(void 0, args);
}
return "";
};
function getSizeLimitError(sizeLimitObj) {
var limit = sizeLimitObj;
return limit.message ? t(limit.message, {
sizeLimit: limit.size
}) : "".concat(t("", {
sizeLimit: limit.size
}), " ").concat(limit.unit);
}
var handleNotAutoUpload = function handleNotAutoUpload(toFiles) {
var tmpFiles = props.multiple && !(isBatchUpload !== null && isBatchUpload !== void 0 && isBatchUpload.value) ? (uploadValue === null || uploadValue === void 0 ? void 0 : uploadValue.value).concat(toFiles) : toFiles;
if (!tmpFiles.length) return;
var list = tmpFiles.map(function (file) {
return new Promise(function (resolve) {
getFileUrlByFileRaw(file.raw).then(function (url) {
resolve(_objectSpread$h(_objectSpread$h({}, file), {}, {
url: file.url || url
}));
});
});
});
Promise.all(list).then(function (files2) {
setUploadValue(files2, {
trigger: "add",
index: uploadValue.value.length,
file: toFiles[0],
files: toFiles
});
});
toUploadFiles.value = [];
};
var onFileChange = function onFileChange(files2) {
var _props$onSelectChange;
if (disabled !== null && disabled !== void 0 && disabled.value) return;
var params = {
currentSelectedFiles: formatToUploadFile(_toConsumableArray(files2), props.format)
};
(_props$onSelectChange = props.onSelectChange) === null || _props$onSelectChange === void 0 || _props$onSelectChange.call(props, _toConsumableArray(files2), params);
validateFile({
uploadValue: uploadValue.value,
files: _toConsumableArray(files2),
allowUploadDuplicateFile: props.allowUploadDuplicateFile,
capture: props.capture,
max: props.max,
sizeLimit: props.sizeLimit,
isBatchUpload: isBatchUpload === null || isBatchUpload === void 0 ? void 0 : isBatchUpload.value,
autoUpload: autoUpload === null || autoUpload === void 0 ? void 0 : autoUpload.value,
format: props.format,
beforeUpload: props.beforeUpload,
beforeAllFilesUpload: props.beforeAllFilesUpload
}).then(function (args) {
var _args$validateResult;
if (((_args$validateResult = args.validateResult) === null || _args$validateResult === void 0 ? void 0 : _args$validateResult.type) === "BEFORE_ALL_FILES_UPLOAD") {
var _props$onValidate;
var params2 = {
type: "BEFORE_ALL_FILES_UPLOAD",
files: args.files
};
(_props$onValidate = props.onValidate) === null || _props$onValidate === void 0 || _props$onValidate.call(props, params2);
return;
}
if (args.lengthOverLimit) {
var _props$onValidate2;
var _params = {
type: "FILES_OVER_LENGTH_LIMIT",
files: args.files
};
(_props$onValidate2 = props.onValidate) === null || _props$onValidate2 === void 0 || _props$onValidate2.call(props, _params);
if (!args.files.length) return;
}
if (args.hasSameNameFile) {
var _props$onValidate3;
var _params2 = {
type: "FILTER_FILE_SAME_NAME",
files: args.files
};
(_props$onValidate3 = props.onValidate) === null || _props$onValidate3 === void 0 || _props$onValidate3.call(props, _params2);
}
if (args.fileValidateList instanceof Array) {
var _props$onWaitingUploa;
var _getFilesAndErrors = getFilesAndErrors(args.fileValidateList, getSizeLimitError),
sizeLimitErrors = _getFilesAndErrors.sizeLimitErrors,
beforeUploadErrorFiles = _getFilesAndErrors.beforeUploadErrorFiles,
toFiles = _getFilesAndErrors.toFiles;
var tmpWaitingFiles = autoUpload !== null && autoUpload !== void 0 && autoUpload.value ? toFiles : toUploadFiles.value.concat(toFiles);
toUploadFiles.value = tmpWaitingFiles;
(_props$onWaitingUploa = props.onWaitingUploadFilesChange) === null || _props$onWaitingUploa === void 0 || _props$onWaitingUploa.call(props, {
files: tmpWaitingFiles,
trigger: "validate"
});
if (sizeLimitErrors[0]) {
var _sizeLimitErrors$, _props$onValidate4;
sizeOverLimitMessage.value = (_sizeLimitErrors$ = sizeLimitErrors[0]) === null || _sizeLimitErrors$ === void 0 || (_sizeLimitErrors$ = _sizeLimitErrors$.file) === null || _sizeLimitErrors$ === void 0 || (_sizeLimitErrors$ = _sizeLimitErrors$.response) === null || _sizeLimitErrors$ === void 0 ? void 0 : _sizeLimitErrors$.error;
(_props$onValidate4 = props.onValidate) === null || _props$onValidate4 === void 0 || _props$onValidate4.call(props, {
type: "FILE_OVER_SIZE_LIMIT",
files: sizeLimitErrors.map(function (t2) {
return t2.file;
})
});
} else {
sizeOverLimitMessage.value = "";
if (beforeUploadErrorFiles.length) {
var _props$onValidate5;
var _params3 = {
type: "CUSTOM_BEFORE_UPLOAD",
files: beforeUploadErrorFiles
};
(_props$onValidate5 = props.onValidate) === null || _props$onValidate5 === void 0 || _props$onValidate5.call(props, _params3);
}
}
if (autoUpload !== null && autoUpload !== void 0 && autoUpload.value) {
uploadFiles(tmpWaitingFiles);
} else {
handleNotAutoUpload(tmpWaitingFiles);
}
}
});
if (inputRef.value) {
inputRef.value.value = "";
}
};
var onNormalFileChange = function onNormalFileChange(e) {
var fileList = getFileList(e.target.files);
onFileChange === null || onFileChange === void 0 || onFileChange(fileList);
};
function uploadFiles(toFiles) {
var notUploadedFiles = uploadValue.value.filter(function (t2) {
return t2.status !== "success";
});
var files2 = autoUpload !== null && autoUpload !== void 0 && autoUpload.value ? toFiles || toUploadFiles.value : notUploadedFiles;
if (!files2 || !files2.length) return;
uploading.value = true;
xhrReq.value = [];
upload({
action: props.action,
headers: props.headers,
method: props.method,
name: props.name,
withCredentials: props.withCredentials,
uploadedFiles: uploadValue.value,
toUploadFiles: files2,
multiple: props.multiple,
isBatchUpload: isBatchUpload === null || isBatchUpload === void 0 ? void 0 : isBatchUpload.value,
autoUpload: props.autoUpload,
uploadAllFilesInOneRequest: props.uploadAllFilesInOneRequest,
useMockProgress: props.useMockProgress,
data: props.data,
mockProgressDuration: props.mockProgressDuration,
requestMethod: props.requestMethod,
formatRequest: props.formatRequest,
formatResponse: props.formatResponse,
onResponseProgress: onResponseProgress,
onResponseSuccess: onResponseSuccess,
onResponseError: onResponseError,
setXhrObject: function setXhrObject(xhr) {
var _xhr$files$;
if ((_xhr$files$ = xhr.files[0]) !== null && _xhr$files$ !== void 0 && _xhr$files$.raw && xhrReq.value.find(function (item) {
var _item$files$;
return ((_item$files$ = item.files[0]) === null || _item$files$ === void 0 ? void 0 : _item$files$.raw) === xhr.files[0].raw;
})) return;
xhrReq.value = xhrReq.value.concat(xhr);
}
}).then(function (_ref) {
var status = _ref.status,
data = _ref.data,
list = _ref.list,
failedFiles = _ref.failedFiles;
uploading.value = false;
if (status === "success") {
var _props$onSuccess;
if (props.autoUpload) {
setUploadValue(_toConsumableArray(data === null || data === void 0 ? void 0 : data.files), {
trigger: "add",
file: (data === null || data === void 0 ? void 0 : data.files)[0]
});
}
xhrReq.value = [];
(_props$onSuccess = props.onSuccess) === null || _props$onSuccess === void 0 || _props$onSuccess.call(props, {
fileList: data === null || data === void 0 ? void 0 : data.files,
currentFiles: files2,
file: files2[0],
results: list === null || list === void 0 ? void 0 : list.map(function (t2) {
return t2.data;
}),
response: (data === null || data === void 0 ? void 0 : data.response) || (list === null || list === void 0 ? void 0 : list.map(function (t2) {
var _t2$data;
return (_t2$data = t2.data) === null || _t2$data === void 0 ? void 0 : _t2$data.response;
})),
XMLHttpRequest: data === null || data === void 0 ? void 0 : data.XMLHttpRequest
});
} else if (failedFiles !== null && failedFiles !== void 0 && failedFiles[0]) {
var _props$onFail;
(_props$onFail = props.onFail) === null || _props$onFail === void 0 || _props$onFail.call(props, {
e: data === null || data === void 0 ? void 0 : data.event,
file: failedFiles[0],
failedFiles: failedFiles,
currentFiles: files2,
response: data === null || data === void 0 ? void 0 : data.response,
XMLHttpRequest: data === null || data === void 0 ? void 0 : data.XMLHttpRequest
});
}
if (autoUpload !== null && autoUpload !== void 0 && autoUpload.value) {
var _props$onWaitingUploa2;
toUploadFiles.value = failedFiles;
(_props$onWaitingUploa2 = props.onWaitingUploadFilesChange) === null || _props$onWaitingUploa2 === void 0 || _props$onWaitingUploa2.call(props, {
files: failedFiles,
trigger: "uploaded"
});
}
});
}
function onInnerRemove(p) {
var _p$e$stopPropagation, _p$e, _props$onRemove;
sizeOverLimitMessage.value = "";
(_p$e$stopPropagation = (_p$e = p.e).stopPropagation) === null || _p$e$stopPropagation === void 0 || _p$e$stopPropagation.call(_p$e);
var changePrams = {
e: p.e,
trigger: "remove",
index: p.index,
file: p.file
};
if (props.isBatchUpload || !props.multiple) {
var _props$onWaitingUploa3;
toUploadFiles.value = [];
(_props$onWaitingUploa3 = props.onWaitingUploadFilesChange) === null || _props$onWaitingUploa3 === void 0 || _props$onWaitingUploa3.call(props, {
files: [],
trigger: "remove"
});
setUploadValue([], changePrams);
} else if (!props.autoUpload) {
uploadValue.value.splice(p.index, 1);
setUploadValue(_toConsumableArray(uploadValue.value), changePrams);
} else {
if (p.index < uploadValue.value.length) {
uploadValue.value.splice(p.index, 1);
setUploadValue(_toConsumableArray(uploadValue.value), changePrams);
} else {
var _props$onWaitingUploa4;
toUploadFiles.value.splice(p.index - uploadValue.value.length, 1);
toUploadFiles.value = _toConsumableArray(toUploadFiles.value);
(_props$onWaitingUploa4 = props.onWaitingUploadFilesChange) === null || _props$onWaitingUploa4 === void 0 || _props$onWaitingUploa4.call(props, {
files: _toConsumableArray(toUploadFiles.value),
trigger: "remove"
});
}
}
(_props$onRemove = props.onRemove) === null || _props$onRemove === void 0 || _props$onRemove.call(props, p);
}
var cancelUpload = function cancelUpload(context) {
var _xhrReq$value, _props$onCancelUpload;
(_xhrReq$value = xhrReq.value) === null || _xhrReq$value === void 0 || _xhrReq$value.forEach(function (item) {
var _item$xhrReq;
(_item$xhrReq = item.xhrReq) === null || _item$xhrReq === void 0 || _item$xhrReq.abort();
});
uploading.value = false;
if (autoUpload !== null && autoUpload !== void 0 && autoUpload.value) {
toUploadFiles.value = toUploadFiles.value.map(function (item) {
return _objectSpread$h(_objectSpread$h({}, item), {}, {
status: "waiting"
});
});
} else {
setUploadValue(uploadValue.value.map(function (item) {
if (item.status !== "success") {
return _objectSpread$h(_objectSpread$h({}, item), {}, {
status: "waiting"
});
}
return item;
}), {
trigger: "abort"
});
}
if (context !== null && context !== void 0 && context.file && !(autoUpload !== null && autoUpload !== void 0 && autoUpload.value)) {
onInnerRemove === null || onInnerRemove === void 0 || onInnerRemove({
file: context.file,
e: context.e,
index: 0
});
}
(_props$onCancelUpload = props.onCancelUpload) === null || _props$onCancelUpload === void 0 || _props$onCancelUpload.call(props);
};
return {
toUploadFiles: toUploadFiles,
uploadValue: uploadValue,
displayFiles: displayFiles,
sizeOverLimitMessage: sizeOverLimitMessage,
uploading: uploading,
inputRef: inputRef,
disabled: disabled,
xhrReq: xhrReq,
uploadFilePercent: uploadFilePercent,
uploadFiles: uploadFiles,
onFileChange: onFileChange,
onNormalFileChange: onNormalFileChange,
onInnerRemove: onInnerRemove,
cancelUpload: cancelUpload
};
}
var prefix$u = config.prefix;
var _Upload = vue.defineComponent({
name: "".concat(prefix$u, "-upload"),
components: {
TImage: Image$1
},
props: UploadProps,
emits: ["update:files", "update:modelValue", "change", "fail", "preview", "progress", "remove", "success", "select-change", "validate", "click-upload"],
setup: function setup(props, _ref) {
var expose = _ref.expose;
var uploadClass = usePrefixClass("upload");
var _useConfig = useConfig("upload"),
globalConfig = _useConfig.globalConfig;
var _useUpload = useUpload(props),
disabled = _useUpload.disabled,
displayFiles = _useUpload.displayFiles,
uploading = _useUpload.uploading,
inputRef = _useUpload.inputRef,
uploadFilePercent = _useUpload.uploadFilePercent,
uploadFiles = _useUpload.uploadFiles,
onNormalFileChange = _useUpload.onNormalFileChange,
onInnerRemove = _useUpload.onInnerRemove,
cancelUpload = _useUpload.cancelUpload;
var renderTNodeJSX = useTNodeJSX();
var showViewer = vue.ref(false);
var initialIndex = vue.ref(0);
var handlePreview = function handlePreview(e, file, index) {
var _props$onPreview;
initialIndex.value = index;
showViewer.value = props.preview;
(_props$onPreview = props.onPreview) === null || _props$onPreview === void 0 || _props$onPreview.call(props, {
e: e,
file: file,
index: index
});
};
var triggerUpload = function triggerUpload(e) {
var _props$onClickUpload;
var input = inputRef.value;
if (disabled !== null && disabled !== void 0 && disabled.value) return;
input.click();
(_props$onClickUpload = props.onClickUpload) === null || _props$onClickUpload === void 0 || _props$onClickUpload.call(props, {
e: e
});
};
var previewImgs = vue.computed(function () {
return displayFiles.value.map(function (item) {
return item.url;
});
});
var handleImageClose = function handleImageClose(_ref2) {
var visible = _ref2.visible;
showViewer.value = visible;
};
var renderStatus = function renderStatus(file) {
if (file.status === "fail" || file.status === "progress") {
return vue.createVNode("div", {
"class": "".concat(uploadClass.value, "__progress-mask")
}, [file.status === "progress" ? vue.createVNode(vue.Fragment, null, [vue.createVNode(LoadingIcon, {
"class": "".concat(uploadClass.value, "__progress-loading"),
"size": "24"
}, null), vue.createVNode("div", {
"class": "".concat(uploadClass.value, "__progress-text")
}, [file.percent ? "".concat(file.percent, "%") : globalConfig.value.progress.uploadingText])]) : vue.createVNode(CloseCircleIcon, {
"size": "24"
}, null), file.status === "fail" && vue.createVNode("div", {
"class": "".concat(uploadClass.value, "__progress-text")
}, [globalConfig.value.progress.failText])]);
}
};
var renderAddContent = function renderAddContent() {
var _displayFiles$value;
if (!props.addBtn) return null;
if (props.max === 0 || props.max > 0 && ((_displayFiles$value = displayFiles.value) === null || _displayFiles$value === void 0 ? void 0 : _displayFiles$value.length) < props.max) {
var addBtnNode = renderTNodeJSX("addBtn", vue.createVNode(AddIcon, null, null));
var addContentNode = renderTNodeJSX("addContent");
return vue.createVNode("div", {
"class": "".concat(uploadClass.value, "__item ").concat(uploadClass.value, "__item--add"),
"onClick": triggerUpload
}, [vue.createVNode("div", {
"class": "".concat(uploadClass.value, "__add-icon")
}, [addContentNode || addBtnNode])]);
}
return null;
};
expose({
upload: inputRef.value,
uploading: uploading,
triggerUpload: triggerUpload,
uploadFiles: uploadFiles,
cancelUpload: cancelUpload,
uploadFilePercent: uploadFilePercent
});
return function () {
return vue.createVNode("div", {
"class": "".concat(uploadClass.value)
}, [displayFiles.value.map(function (file, index) {
return vue.createVNode("div", {
"key": index,
"class": "".concat(uploadClass.value, "__item")
}, [file.url && vue.createVNode(vue.resolveComponent("t-image"), vue.mergeProps({
"class": "".concat(uploadClass.value, "__image"),
"shape": "round"
}, props.imageProps, {
"src": file.url,
"onClick": function onClick(e) {
return handlePreview(e, file, index);
}
}), null), renderStatus(file), (isBoolean(file.removeBtn) ? file.removeBtn : props.removeBtn) && vue.createVNode(CloseIcon, {
"class": "".concat(uploadClass.value, "__delete-btn"),
"onClick": function onClick(_ref3) {
var e = _ref3.e;
return onInnerRemove({
e: e,
file: file,
index: index
});
}
}, null)]);
}), renderAddContent(), vue.createVNode("input", {
"ref": inputRef,
"value": props.files,
"type": "file",
"multiple": props.multiple,
"hidden": true,
"capture": props.capture,
"accept": props.accept,
"onChange": onNormalFileChange
}, null), vue.createVNode(ImageViewer, {
"visible": showViewer.value,
"images": previewImgs.value,
"index": initialIndex.value,
"onClose": handleImageClose
}, null)]);
};
}
});
var Upload = withInstall(_Upload);
function ownKeys$g(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$g(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function generateBase64Url(_ref, onFinish) {
var width = _ref.width,
height = _ref.height,
gapX = _ref.gapX,
gapY = _ref.gapY,
offsetLeft = _ref.offsetLeft,
offsetTop = _ref.offsetTop,
rotate = _ref.rotate,
alpha = _ref.alpha,
watermarkContent = _ref.watermarkContent,
lineSpace = _ref.lineSpace,
_ref$fontColor = _ref.fontColor,
fontColor = _ref$fontColor === void 0 ? "rgba(0,0,0,0.1)" : _ref$fontColor,
layout = _ref.layout;
var isHexagonal = layout === "hexagonal";
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
if (!ctx) {
console.warn("\u5F53\u524D\u73AF\u5883\u4E0D\u652F\u6301Canvas, \u65E0\u6CD5\u7ED8\u5236\u6C34\u5370");
onFinish("");
return;
}
var ratio = window.devicePixelRatio || 1;
var actualBackgroundSize = {
width: gapX + width
};
var canvasWidth = (gapX + width) * ratio;
var canvasHeight = (gapY + height) * ratio;
var markWidth = width * ratio;
var markHeight = height * ratio;
var dislocationRotateX = canvasWidth;
var dislocationRotateY = canvasHeight;
var dislocationDrawX = (gapX + width) * ratio;
var dislocationDrawY = (gapY + height) * ratio;
canvas.width = canvasWidth;
canvas.height = canvasHeight;
canvas.style.width = "".concat(gapX + width, "px");
canvas.style.height = "".concat(gapY + height, "px");
if (isHexagonal) {
canvas.style.width = "".concat(canvasWidth * 2, "px");
canvas.style.height = "".concat(canvasHeight * 2, "px");
canvas.width = canvasWidth * 2;
canvas.height = canvasHeight * 2;
actualBackgroundSize = {
width: gapX + width * 2 + width / 2
};
}
ctx.translate(offsetLeft * ratio, offsetTop * ratio);
ctx.globalAlpha = alpha;
ctx.fillStyle = "transparent";
ctx.fillRect(0, 0, markWidth, markHeight);
var drawRotate = function drawRotate(ctx2, x, y, rotate2) {
ctx2.translate(x, y);
ctx2.rotate(Math.PI / 180 * Number(rotate2));
ctx2.translate(-x, -y);
};
var drawText = function drawText(ctx2, x, y, markHeight2, text, fontWeight, fontSize, fontFamily, fillStyle) {
ctx2.font = "normal normal ".concat(fontWeight, " ").concat(fontSize * ratio, "px/").concat(markHeight2, "px ").concat(fontFamily);
ctx2.fillStyle = fillStyle;
ctx2.textAlign = "start";
ctx2.textBaseline = "top";
ctx2.fillText(text, x, y);
};
var contents = Array.isArray(watermarkContent) ? watermarkContent : [_objectSpread$g({}, watermarkContent)];
var top = 0;
var imageLoadCount = 0;
var totalImages = 0;
contents.forEach(function (item) {
item.top = top;
if (item.url) {
top += height;
totalImages += isHexagonal ? 2 : 1;
} else if (item.text) {
top += lineSpace;
}
});
var renderWatermarkItem = function renderWatermarkItem(item) {
var offsetX = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var offsetY = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
var rotateX = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
var rotateY = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
if (item.url) {
var url = item.url,
_item$isGrayscale = item.isGrayscale,
isGrayscale = _item$isGrayscale === void 0 ? false : _item$isGrayscale;
var img = new Image();
img.crossOrigin = "anonymous";
img.referrerPolicy = "no-referrer";
img.src = url;
img.onload = function () {
var _ctx$save, _ctx$restore;
(_ctx$save = ctx.save) === null || _ctx$save === void 0 || _ctx$save.call(ctx);
drawRotate(ctx, rotateX, rotateY, rotate);
if (isGrayscale) {
var tempCanvas = document.createElement("canvas");
var tempCtx = tempCanvas.getContext("2d");
tempCanvas.width = width * ratio;
tempCanvas.height = height * ratio;
tempCtx.drawImage(img, 0, 0, width * ratio, height * ratio);
var imgData = tempCtx.getImageData(0, 0, width * ratio, height * ratio);
var pixels = imgData.data;
for (var i = 0; i < pixels.length; i += 4) {
var lightness = (pixels[i] + pixels[i + 1] + pixels[i + 2]) / 3;
pixels[i] = lightness;
pixels[i + 1] = lightness;
pixels[i + 2] = lightness;
}
tempCtx.putImageData(imgData, 0, 0);
ctx.drawImage(tempCanvas, offsetX, offsetY + item.top * ratio, width * ratio, height * ratio);
} else {
ctx.drawImage(img, offsetX, offsetY + item.top * ratio, width * ratio, height * ratio);
}
(_ctx$restore = ctx.restore) === null || _ctx$restore === void 0 || _ctx$restore.call(ctx);
imageLoadCount += 1;
if (imageLoadCount === totalImages) {
onFinish(canvas.toDataURL(), actualBackgroundSize);
}
};
} else if (item.text) {
var _ctx$save2, _ctx$restore2;
var text = item.text,
_item$fontSize = item.fontSize,
fontSize = _item$fontSize === void 0 ? 16 : _item$fontSize,
_item$fontFamily = item.fontFamily,
fontFamily = _item$fontFamily === void 0 ? "normal" : _item$fontFamily,
_item$fontWeight = item.fontWeight,
fontWeight = _item$fontWeight === void 0 ? "normal" : _item$fontWeight;
var fillStyle = (item === null || item === void 0 ? void 0 : item.fontColor) || fontColor;
(_ctx$save2 = ctx.save) === null || _ctx$save2 === void 0 || _ctx$save2.call(ctx);
drawRotate(ctx, rotateX, rotateY, rotate);
drawText(ctx, offsetX, offsetY + item.top * ratio, markHeight, text, fontWeight, fontSize, fontFamily, fillStyle);
(_ctx$restore2 = ctx.restore) === null || _ctx$restore2 === void 0 || _ctx$restore2.call(ctx);
}
};
contents.forEach(function (item) {
renderWatermarkItem(item, 0, 0, 0, 0);
});
if (isHexagonal) {
contents.forEach(function (item) {
renderWatermarkItem(item, dislocationDrawX, dislocationDrawY, dislocationRotateX, dislocationRotateY);
});
}
if (totalImages === 0) {
onFinish(canvas.toDataURL(), actualBackgroundSize);
}
}
function randomMovingStyle() {
var align = Math.floor(Math.random() * 4);
var p1 = Math.floor(Math.random() * 70) + 30;
var leftTopLimit = 0;
var bottomLimit = 95;
var rightLimit = 90;
var keyframesStyle = "\n @keyframes watermark {\n 0% {left: ".concat(align === 1 ? rightLimit : align === 3 ? leftTopLimit : p1, "%; top: ").concat(align === 0 ? leftTopLimit : align === 2 ? bottomLimit : p1, "%;}\n 25% {left: ").concat(align === 0 ? rightLimit : align === 2 ? leftTopLimit : 100 - p1, "%; top: ").concat(align === 1 ? bottomLimit : align === 3 ? leftTopLimit : p1, "%;}\n 50% {left: ").concat(align === 1 ? leftTopLimit : align === 3 ? rightLimit : 100 - p1, "%; top: ").concat(align === 0 ? bottomLimit : align === 2 ? leftTopLimit : 100 - p1, "%; transform: translateX(-100%);}\n 75% {left: ").concat(align === 0 ? leftTopLimit : align === 2 ? rightLimit : p1, "%; top: ").concat(align === 1 ? leftTopLimit : align === 3 ? bottomLimit : 100 - p1, "%;}\n 100% {left: ").concat(align === 1 ? rightLimit : align === 3 ? leftTopLimit : p1, "%; top: ").concat(align === 0 ? leftTopLimit : align === 2 ? bottomLimit : p1, "%;}\n }\n ");
return keyframesStyle;
}
var injectStyle = function injectStyle(style) {
var styleElement = document.createElement("style");
var styleSheet = null;
document.head.appendChild(styleElement);
styleSheet = styleElement.sheet;
styleSheet.insertRule(style, styleSheet.cssRules.length);
};
function useIcon() {
var instance = vue.getCurrentInstance();
return function renderIconTNode(iconType, defaultIcons) {
var iconContent;
if (isFunction(instance.props[iconType])) {
iconContent = instance.props[iconType](vue.h);
} else if (instance.slots[iconType]) {
iconContent = instance.slots[iconType] && instance.slots[iconType](null)[0];
} else if (defaultIcons) {
var Component = defaultIcons[instance.props.theme];
iconContent = Component;
}
return iconContent;
};
}
function useExpose(apis) {
var instance = vue.getCurrentInstance();
if (instance) {
Object.assign(instance.proxy, apis);
}
}
function ownKeys$f(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$f(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$f(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$f(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var DEFAULT_OPTIONS$1 = {
debounceTime: 0,
config: {
attributes: true,
childList: true,
characterData: true,
subtree: true
}
};
function useMutationObservable(targetEl, callback) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_OPTIONS$1;
var mergedOptions = vue.ref(_objectSpread$f(_objectSpread$f({}, DEFAULT_OPTIONS$1), options));
var observer = null;
var initObserver = function initObserver() {
var _observer;
if (!targetEl) return;
var _mergedOptions$value = mergedOptions.value,
_mergedOptions$value$ = _mergedOptions$value.debounceTime,
debounceTime = _mergedOptions$value$ === void 0 ? 0 : _mergedOptions$value$,
_mergedOptions$value$2 = _mergedOptions$value.config,
config = _mergedOptions$value$2 === void 0 ? DEFAULT_OPTIONS$1.config : _mergedOptions$value$2;
var handler = function handler() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
callback === null || callback === void 0 || callback.apply(void 0, args);
};
(_observer = observer) === null || _observer === void 0 || _observer.disconnect();
observer = new MutationObserver(debounceTime > 0 ? debounce$1(handler, debounceTime) : handler);
observer.observe(targetEl, config);
};
vue.watch(function () {
return options;
}, function (newOptions) {
if (!isEqual(newOptions, mergedOptions.value)) {
mergedOptions.value = _objectSpread$f(_objectSpread$f({}, DEFAULT_OPTIONS$1), newOptions);
initObserver();
}
}, {
deep: true
});
vue.onMounted(initObserver);
vue.onBeforeUnmount(function () {
var _observer2;
return (_observer2 = observer) === null || _observer2 === void 0 ? void 0 : _observer2.disconnect();
});
}
var getColorTokenColor = function getColorTokenColor(token) {
var _document, _styles$getPropertyVa;
if (typeof window === "undefined") return "";
var targetElement = (_document = document) === null || _document === void 0 ? void 0 : _document.documentElement;
var styles = getComputedStyle(targetElement);
return (_styles$getPropertyVa = styles.getPropertyValue(token).trim()) !== null && _styles$getPropertyVa !== void 0 ? _styles$getPropertyVa : "";
};
function useVariables(variables) {
var _document;
var values = {};
var varsArray = [];
varsArray = Object.values(variables);
Object.entries(variables).forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
key = _ref2[0],
varName = _ref2[1];
values[key] = vue.ref(getColorTokenColor(varName));
});
varsArray.forEach(function (varName) {
values[varName] = vue.ref(getColorTokenColor(varName));
});
var targetElement = (_document = document) === null || _document === void 0 ? void 0 : _document.documentElement;
useMutationObservable(targetElement, function (mutationsList) {
mutationsList.some(function (mutation) {
if (mutation.type === "attributes" && mutation.attributeName === THEME_MODE) {
if (isString(variables) || Array.isArray(variables)) {
varsArray.forEach(function (varName) {
values[varName].value = getColorTokenColor(varName);
});
} else {
Object.entries(variables).forEach(function (_ref3) {
var _ref4 = _slicedToArray(_ref3, 2),
key = _ref4[0],
varName = _ref4[1];
values[key].value = getColorTokenColor(varName);
});
}
return true;
}
return false;
});
});
return values;
}
var _excluded$2 = ["window"];
var defaultWindow = typeof window !== "undefined" ? window : void 0;
function unrefElement(elRef) {
var _plain$$el;
var plain = vue.unref(elRef);
return (_plain$$el = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _plain$$el !== void 0 ? _plain$$el : plain;
}
function tryOnScopeDispose(fn) {
if (vue.getCurrentScope()) {
vue.onScopeDispose(fn);
return true;
}
return false;
}
function useMutationObserver(target, callback) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _options$window = options.window,
window2 = _options$window === void 0 ? defaultWindow : _options$window,
mutationOptions = _objectWithoutProperties$1(options, _excluded$2);
var observer;
var isSupported = window2 && "MutationObserver" in window2;
var cleanup = function cleanup() {
if (observer) {
observer.disconnect();
observer = void 0;
}
};
var stopWatch = vue.watch(function () {
return unrefElement(target);
}, function (el) {
cleanup();
if (isSupported && window2 && el) {
observer = new MutationObserver(callback);
observer.observe(el, mutationOptions);
}
}, {
immediate: true
});
var stop = function stop() {
cleanup();
stopWatch();
};
tryOnScopeDispose(stop);
return {
isSupported: isSupported,
stop: stop
};
}
var props$f = {
alpha: {
type: Number,
default: 1
},
content: {
type: [String, Function]
},
default: {
type: [String, Function]
},
height: {
type: Number
},
isRepeat: {
type: Boolean,
default: true
},
layout: {
type: String,
default: "rectangular",
validator: function validator(val) {
if (!val) return true;
return ["rectangular", "hexagonal"].includes(val);
}
},
lineSpace: {
type: Number,
default: 16
},
movable: Boolean,
moveInterval: {
type: Number,
default: 3e3
},
offset: {
type: Array
},
removable: {
type: Boolean,
default: true
},
rotate: {
type: Number,
default: -22
},
watermarkContent: {
type: [Object, Array]
},
width: {
type: Number
},
x: {
type: Number
},
y: {
type: Number
},
zIndex: {
type: Number
}
};
function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$2(r, a) : void 0; } }
function _arrayLikeToArray$2(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
var prefix$t = config.prefix;
var _Watermark = vue.defineComponent({
name: "".concat(prefix$t, "-watermark"),
props: props$f,
setup: function setup(props2) {
var backgroundImage = vue.ref("");
var watermarkRef = vue.shallowRef();
var watermarkContentRef = vue.shallowRef();
var offset = vue.reactive(props2.offset || []);
var gapX = vue.computed(function () {
return props2.movable ? 0 : props2.x;
});
var gapY = vue.computed(function () {
return props2.movable ? 0 : props2.y;
});
var rotate = vue.computed(function () {
return props2.movable ? 0 : props2.rotate;
});
var backgroundRepeat = vue.computed(function () {
if (props2.movable) {
return "no-repeat";
}
return props2.isRepeat ? "repeat" : "no-repeat";
});
var offsetLeft = vue.computed(function () {
return offset[0] || gapX.value / 2;
});
var offsetTop = vue.computed(function () {
return offset[1] || gapY.value / 2;
});
var _useVariables = useVariables({
fontColor: "--td-text-color-watermark"
}),
fontColor = _useVariables.fontColor;
var bgImageOptions = vue.computed(function () {
return {
width: props2.width,
height: props2.height,
rotate: rotate.value,
lineSpace: props2.lineSpace,
alpha: props2.alpha,
gapX: gapX.value,
gapY: gapY.value,
watermarkContent: props2.watermarkContent,
offsetLeft: offsetLeft.value,
offsetTop: offsetTop.value,
fontColor: fontColor.value,
layout: props2.layout
};
});
var removeWaterMark = function removeWaterMark() {
if (!watermarkContentRef.value) return;
watermarkContentRef.value.remove();
watermarkContentRef.value = null;
};
var injectWaterMark = function injectWaterMark() {
generateBase64Url(bgImageOptions.value, function (base64Url, backgroundSize) {
var _watermarkRef$value;
removeWaterMark();
backgroundImage.value = base64Url;
watermarkContentRef.value = document.createElement("div");
setStyle(watermarkContentRef.value, {
zIndex: props2.zIndex,
position: "absolute",
left: 0,
right: 0,
top: 0,
bottom: 0,
width: "100%",
height: "100%",
backgroundSize: "".concat((backgroundSize === null || backgroundSize === void 0 ? void 0 : backgroundSize.width) || gapX.value + props2.width, "px"),
pointerEvents: "none",
backgroundRepeat: backgroundRepeat.value,
backgroundImage: "url('".concat(backgroundImage.value, "')"),
animation: props2.movable ? "watermark infinite ".concat(props2.moveInterval * 4 / 60, "s") : "none"
});
(_watermarkRef$value = watermarkRef.value) === null || _watermarkRef$value === void 0 || _watermarkRef$value.append(watermarkContentRef.value);
});
if (props2.movable) {
var keyframesStyle = randomMovingStyle();
injectStyle(keyframesStyle);
}
};
vue.onMounted(function () {
injectWaterMark();
useMutationObserver(watermarkRef.value, function (mutations) {
if (props2.removable || !watermarkContentRef.value) return;
var _iterator = _createForOfIteratorHelper$2(mutations),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var mutation = _step.value;
var isRemoved = Array.from(mutation.removedNodes).includes(watermarkContentRef.value);
var isModified = mutation.type === "attributes" && watermarkContentRef.value === mutation.target;
if (isRemoved || isModified) {
injectWaterMark();
break;
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}, {
attributes: true,
childList: true,
characterData: true,
subtree: true
});
});
vue.watch(function () {
return [props2, fontColor.value];
}, injectWaterMark, {
deep: true,
flush: "post"
});
return function () {
var COMPONENT_NAME = usePrefixClass("watermark");
var renderContent = useContent();
return vue.createVNode("div", {
"class": COMPONENT_NAME.value,
"ref": watermarkRef
}, [renderContent("default", "content")]);
};
}
});
var Watermark = withInstall(_Watermark);
var AvatarProps = {
alt: {
type: String,
default: ""
},
badgeProps: {
type: Object
},
hideOnLoadFailed: Boolean,
icon: {
type: Function
},
image: {
type: String,
default: ""
},
imageProps: {
type: Object
},
shape: {
type: String,
validator: function validator(val) {
if (!val) return true;
return ["circle", "round"].includes(val);
}
},
size: {
type: String,
default: ""
},
onError: Function
};
var isValidSize = function isValidSize(value) {
return ["small", "medium", "large"].includes(value);
};
var prefix$s = config.prefix;
var _Avatar = vue.defineComponent({
name: "".concat(prefix$s, "-avatar"),
props: AvatarProps,
setup: function setup(props) {
var renderTNodeJSX = useTNodeJSX();
var renderTNodeContent = useContent();
var avatarClass = usePrefixClass("avatar");
var avatarGroupProps = vue.inject("avatarGroup", {});
var hasAvatarGroupProps = Object.keys(avatarGroupProps).length > 0;
var shapeValue = vue.computed(function () {
return props.shape || (avatarGroupProps === null || avatarGroupProps === void 0 ? void 0 : avatarGroupProps.shape) || "circle";
});
var sizeValue = vue.computed(function () {
return props.size || (avatarGroupProps === null || avatarGroupProps === void 0 ? void 0 : avatarGroupProps.size);
});
var isCustomSize = vue.computed(function () {
return !isValidSize(sizeValue.value);
});
var avatarClasses = vue.computed(function () {
return ["".concat(avatarClass.value), "".concat(avatarClass.value, "--").concat(isCustomSize.value ? "medium" : sizeValue.value), "".concat(avatarClass.value, "--").concat(shapeValue.value), hasAvatarGroupProps ? "".concat(avatarClass.value, "--border ").concat(avatarClass.value, "--border-").concat(isCustomSize.value ? "medium" : sizeValue.value) : ""];
});
var customSize = vue.computed(function () {
return isCustomSize.value ? {
height: sizeValue.value,
width: sizeValue.value,
"font-size": "".concat(Number.parseInt(sizeValue.value, 10) / 8 * 3 + 2, "px")
} : {};
});
var handleImgLoadError = function handleImgLoadError(e) {
var _props$onError;
(_props$onError = props.onError) === null || _props$onError === void 0 || _props$onError.call(props, e);
};
return function () {
var icon = renderTNodeJSX("icon");
var TNodeContent = renderTNodeContent("default", "content");
var readerAvatar = function readerAvatar() {
if (props.image && !props.hideOnLoadFailed) {
return vue.createVNode(Image$1, vue.mergeProps({
"src": props.image,
"alt": props.alt
}, props.imageProps, {
"onError": handleImgLoadError
}), null);
}
if (icon) {
return vue.createVNode("div", {
"class": "".concat(avatarClass.value, "__icon")
}, [icon]);
}
return vue.createVNode(vue.Fragment, null, [TNodeContent]);
};
return vue.createVNode("div", {
"class": "".concat(avatarClass.value, "__wrapper")
}, [vue.createVNode("div", {
"class": "".concat(avatarClass.value, "__badge")
}, [vue.createVNode(Badge, props.badgeProps, {
default: function _default() {
return [vue.createVNode("div", {
"class": avatarClasses.value,
"style": customSize.value
}, [readerAvatar()])];
}
})])]);
};
}
});
var AvatarGroupProps = {
cascading: {
type: String,
default: "right-up",
validator: function validator(val) {
if (!val) return true;
return ["left-up", "right-up"].includes(val);
}
},
collapseAvatar: {
type: [String, Function]
},
max: {
type: Number
},
shape: {
type: String,
validator: function validator(val) {
if (!val) return true;
return ["circle", "round"].includes(val);
}
},
size: {
type: String,
default: ""
},
onCollapsedItemClick: Function
};
function ownKeys$e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$r = config.prefix;
var _AvatarGroup = vue.defineComponent({
name: "".concat(prefix$r, "-avatar-group"),
props: AvatarGroupProps,
setup: function setup(props) {
var renderTNodeJSX = useTNodeJSX();
var avatarGroupClass = usePrefixClass("avatar-group");
vue.provide("avatarGroup", _objectSpread$e({}, props));
var direction = props.cascading ? props.cascading.split("-")[0] : "right";
var isCustomSize = vue.computed(function () {
return !isValidSize(props.size);
});
var avatarGroupClasses = vue.computed(function () {
return ["".concat(avatarGroupClass.value), "".concat(avatarGroupClass.value, "-offset-").concat(direction), "".concat(avatarGroupClass.value, "-offset-").concat(direction, "-").concat(isCustomSize.value ? "medium" : props.size)];
});
var onCollapsedItemClick = function onCollapsedItemClick(e) {
var _props$onCollapsedIte;
(_props$onCollapsedIte = props.onCollapsedItemClick) === null || _props$onCollapsedIte === void 0 || _props$onCollapsedIte.call(props, {
e: e
});
};
var readerAvatar = function readerAvatar() {
var children = renderTNodeJSX("default");
var allChildren = [];
children.forEach(function (child) {
if (child.type === vue.Fragment) {
allChildren.push.apply(allChildren, _toConsumableArray(child.children));
} else {
allChildren.push(child);
}
});
var isShowCollapse = false;
var avatarList = [];
if (allChildren.length > props.max) {
avatarList = allChildren.slice(0, props.max);
isShowCollapse = true;
} else {
avatarList = allChildren;
}
if (isShowCollapse) {
var collapseAvatar = renderTNodeJSX("collapseAvatar");
avatarList.push(vue.createVNode("div", {
"class": "".concat(avatarGroupClass.value, "__collapse--default"),
"onClick": onCollapsedItemClick
}, [vue.createVNode(_Avatar, {
"size": avatarList[0].size || props.size,
"shape": props.shape
}, {
default: function _default() {
return [collapseAvatar || "+".concat(allChildren.length - props.max)];
}
})]));
}
return avatarList;
};
return function () {
return vue.createVNode("div", {
"class": avatarGroupClasses.value
}, [readerAvatar()]);
};
}
});
var Avatar = withInstall(_Avatar);
var AvatarGroup = withInstall(_AvatarGroup);
var props$e = {
bordered: Boolean,
theme: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "card"].includes(val);
}
},
title: {
type: String,
default: ""
}
};
var prefix$q = config.prefix;
var _CellGroup = vue.defineComponent({
name: "".concat(prefix$q, "-cell-group"),
props: props$e,
setup: function setup(props2) {
var renderTNodeJSX = useTNodeJSX();
var cellGroupClass = usePrefixClass("cell-group");
var contentClasses = vue.computed(function () {
return [cellGroupClass.value, "".concat(cellGroupClass.value, "--").concat(props2.theme), _defineProperty$3({}, "".concat(cellGroupClass.value, "--bordered"), props2.bordered)];
});
return function () {
var title = renderTNodeJSX("title");
return vue.createVNode("div", null, [title ? vue.createVNode("div", {
"class": "".concat(cellGroupClass.value, "__title")
}, [title]) : null, vue.createVNode("div", {
"class": contentClasses.value
}, [renderTNodeJSX("default")])]);
};
}
});
var Cell = withInstall(_Cell);
var CellGroup = withInstall(_CellGroup);
var props$d = {
defaultExpandAll: Boolean,
disabled: Boolean,
expandIcon: {
type: [Boolean, Function],
default: true
},
expandMutex: Boolean,
theme: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "card"].includes(val);
}
},
value: {
type: Array,
default: void 0
},
modelValue: {
type: Array,
default: void 0
},
defaultValue: {
type: Array,
default: function _default() {
return [];
}
},
onChange: Function
};
var prefix$p = config.prefix;
var _Collapse = vue.defineComponent({
name: "".concat(prefix$p, "-collapse"),
props: props$d,
setup: function setup(props2, _ref) {
var slots = _ref.slots;
var renderTNodeJSX = useTNodeJSX();
var collapseClass = usePrefixClass("collapse");
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
activeValue = _useVModel2[0],
setActiveValue = _useVModel2[1];
var calcActiveValues = function calcActiveValues(activeValues, panelValue, expandMutex) {
var hit = activeValues.indexOf(panelValue);
if (hit > -1) {
return activeValues.filter(function (item) {
return item !== panelValue;
});
}
return expandMutex ? [panelValue] : activeValues.concat(panelValue);
};
var onPanelChange = function onPanelChange(value2, args) {
if (Array.isArray(activeValue.value)) {
var val = calcActiveValues(activeValue.value, value2, props2.expandMutex);
setActiveValue(val, args);
}
};
var disabled = vue.computed(function () {
return props2.disabled;
});
var expandIcon = vue.computed(function () {
return props2.expandIcon;
});
var rootClass = vue.computed(function () {
return [collapseClass.value, "".concat(collapseClass.value, "--").concat(props2.theme)];
});
vue.provide("collapse", {
activeValue: activeValue,
disabled: disabled,
expandIcon: expandIcon,
onPanelChange: onPanelChange,
defaultExpandAll: props2.defaultExpandAll
});
vue.provide("renderParentTNode", renderTNodeJSX);
return function () {
var _slots$default;
return vue.createVNode("div", {
"class": rootClass.value
}, [(_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)]);
};
}
});
var props$c = {
content: {
type: [String, Function]
},
default: {
type: [String, Function]
},
destroyOnCollapse: Boolean,
disabled: {
type: Boolean,
default: void 0
},
expandIcon: {
type: [Boolean, Function],
default: void 0
},
header: {
type: [String, Function]
},
headerLeftIcon: {
type: Function
},
headerRightContent: {
type: [String, Function]
},
placement: {
type: String,
default: "bottom",
validator: function validator(val) {
if (!val) return true;
return ["bottom", "top"].includes(val);
}
},
value: {
type: [String, Number]
}
};
function findIndex(v, set) {
var reg = new RegExp("^".concat(!v && v !== 0 ? "" : v, "$"));
var arr = toArray(set);
return arr.findIndex(function (s) {
return reg.test(s);
});
}
function isFalsy(v) {
return !v && v !== 0;
}
function toArray(v) {
if (isFalsy(v)) return [];
if (_typeof$2(v) === "object") return Array.from(v);
return [v];
}
var prefix$o = config.prefix;
var _CollapsePanel = vue.defineComponent({
name: "".concat(prefix$o, "-collapse-panel"),
components: {
TCell: Cell
},
props: props$c,
setup: function setup(props2, _ref) {
var slots = _ref.slots;
var renderTNodeJSX = useTNodeJSX();
var renderContent = useContent();
var collapsePanelClass = usePrefixClass("collapse-panel");
var parent = vue.inject("collapse");
var renderParentTNode = vue.inject("renderParentTNode");
var disabled = vue.computed(function () {
return (parent === null || parent === void 0 ? void 0 : parent.disabled.value) || props2.disabled;
});
var rootClass = vue.computed(function () {
return _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(collapsePanelClass.value), true), "".concat(collapsePanelClass.value, "--").concat(props2.placement), true), "".concat(collapsePanelClass.value, "--active"), isActive.value), "".concat(collapsePanelClass.value, "--disabled"), disabled.value);
});
var isActive = vue.computed(function () {
return findIndex(props2.value, parent === null || parent === void 0 ? void 0 : parent.activeValue.value) > -1;
});
var updatePanelValue = function updatePanelValue(args) {
if (props2.value != null) {
parent === null || parent === void 0 || parent.onPanelChange(props2.value, args);
}
};
var handleClick = function handleClick(_ref3) {
var e = _ref3.e;
e === null || e === void 0 || e.stopPropagation();
if (disabled.value) {
return;
}
updatePanelValue({
e: e
});
};
vue.onMounted(function () {
if (parent !== null && parent !== void 0 && parent.defaultExpandAll) {
updatePanelValue();
}
});
var renderDefaultIcon = function renderDefaultIcon() {
if (props2.placement === "bottom") {
return isActive.value ? vue.createVNode(ChevronUpIcon, null, null) : vue.createVNode(ChevronDownIcon, null, null);
}
return isActive.value ? vue.createVNode(ChevronDownIcon, null, null) : vue.createVNode(ChevronUpIcon, null, null);
};
var panelExpandIcon = vue.computed(function () {
return slots.expandIcon || props2.expandIcon;
});
var renderRightIcon = function renderRightIcon() {
var tNodeRender = panelExpandIcon.value === void 0 ? renderParentTNode : renderTNodeJSX;
return vue.createVNode("div", {
"class": "".concat(collapsePanelClass.value, "__header-icon")
}, [tNodeRender("expandIcon", renderDefaultIcon())]);
};
var renderPanelContent = function renderPanelContent() {
var panelContent = renderContent("default", "content");
if (props2.destroyOnCollapse && !isActive.value) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(collapsePanelClass.value, "__content")
}, [panelContent]);
};
return function () {
var headerContent = renderTNodeJSX("header");
var noteContent = renderTNodeJSX("headerRightContent");
var _leftIcon = renderTNodeJSX("headerLeftIcon");
return vue.createVNode("div", {
"class": rootClass.value
}, [vue.createVNode(Cell, {
"class": ["".concat(collapsePanelClass.value, "__title"), "".concat(collapsePanelClass.value, "__header"), "".concat(collapsePanelClass.value, "__header--").concat(props2.placement), _defineProperty$3({}, "".concat(collapsePanelClass.value, "__header--expanded"), isActive.value)],
"onClick": handleClick
}, {
leftIcon: function leftIcon() {
return _leftIcon;
},
title: function title() {
return headerContent;
},
note: function note() {
return noteContent;
},
rightIcon: function rightIcon() {
return renderRightIcon();
}
}), vue.createVNode("div", {
"class": "".concat(collapsePanelClass.value, "__body"),
"style": {
gridTemplateRows: isActive.value ? "1fr" : "0fr"
}
}, [vue.createVNode("div", {
"class": "".concat(collapsePanelClass.value, "__inner")
}, [renderPanelContent()])])]);
};
}
});
var Collapse = withInstall(_Collapse);
var CollapsePanel = withInstall(_CollapsePanel);
var CountDownProps = {
autoStart: {
type: Boolean,
default: true
},
content: {
type: [String, Function],
default: "default"
},
format: {
type: String,
default: "HH:mm:ss"
},
millisecond: Boolean,
size: {
type: String,
default: "medium",
validator: function validator(val) {
if (!val) return true;
return ["small", "medium", "large"].includes(val);
}
},
splitWithUnit: Boolean,
theme: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "round", "square"].includes(val);
}
},
time: {
type: Number,
required: true
},
onChange: Function,
onFinish: Function
};
var prefix$n = config.prefix;
var _CountDown = vue.defineComponent({
name: "".concat(prefix$n, "-count-down"),
props: CountDownProps,
setup: function setup(props) {
var renderTNodeJSX = useTNodeJSX();
var countDownClass = usePrefixClass("count-down");
var countDownClasses = vue.computed(function () {
return [countDownClass.value, "".concat(countDownClass.value, "--").concat(props.theme), "".concat(countDownClass.value, "--").concat(props.size)];
});
var visibility = vue.ref(true);
var visibilitychangeListener = function visibilitychangeListener() {
visibility.value = !document.hidden;
};
vue.onMounted(function () {
document.addEventListener("visibilitychange", visibilitychangeListener, false);
});
vue.onBeforeUnmount(function () {
document.removeEventListener("visibilitychange", visibilitychangeListener, false);
});
var _useCountDown = useCountDown(props, visibility),
showTimes = _useCountDown.showTimes;
return function () {
var renderContent = function renderContent() {
var content = renderTNodeJSX("content");
if (content !== "default" && content) {
return content;
}
return showTimes.map(function (item) {
return vue.createVNode(vue.Fragment, null, [vue.createVNode("span", {
"class": "".concat(countDownClass.value, "__item")
}, [item.value]), item.mark && vue.createVNode("span", {
"class": ["".concat(countDownClass.value, "__split"), "".concat(countDownClass.value, "__split--").concat(props.splitWithUnit ? "text" : "dot")]
}, [item.mark])]);
});
};
return vue.createVNode("div", {
"class": countDownClasses.value
}, [renderContent()]);
};
}
});
var CountDown = withInstall(_CountDown);
var EmptyProps = {
action: {
type: Function
},
description: {
type: [String, Function]
},
icon: {
type: [String, Function]
},
image: {
type: [String, Function]
}
};
var prefix$m = config.prefix;
var _Empty = vue.defineComponent({
name: "".concat(prefix$m, "-empty"),
props: EmptyProps,
setup: function setup(props) {
var renderTNodeJSX = useTNodeJSX();
var emptyClass = usePrefixClass("empty");
return function () {
var action = renderTNodeJSX("action");
var description = renderTNodeJSX("description");
var readerThumb = function readerThumb() {
var image = renderTNodeJSX("image");
if (image) {
if (typeof props.image === "string") {
return vue.createVNode(Image$1, {
"src": props.image
}, null);
}
return image;
}
var icon = renderTNodeJSX("icon");
if (icon) {
return vue.createVNode("div", {
"class": "".concat(emptyClass.value, "__icon")
}, [icon]);
}
return null;
};
return vue.createVNode("div", {
"class": emptyClass.value
}, [vue.createVNode("div", {
"class": "".concat(emptyClass.value, "__thumb")
}, [readerThumb()]), description && vue.createVNode("div", {
"class": "".concat(emptyClass.value, "__description")
}, [description]), action && vue.createVNode("div", {
"class": "".concat(emptyClass.value, "__actions")
}, [action])]);
};
}
});
var Empty = withInstall(_Empty);
var FooterProps = {
links: {
type: Array,
default: function _default() {
return [];
}
},
logo: {
type: Object
},
text: {
type: String,
default: ""
}
};
var prefix$l = config.prefix;
var _Footer = vue.defineComponent({
name: "".concat(prefix$l, "-footer"),
props: FooterProps,
setup: function setup(props) {
var footerClass = usePrefixClass("footer");
var footerLinkClass = usePrefixClass("footer__link");
var renderLogo = function renderLogo() {
var logo = props.logo;
if (!logo) {
return;
}
return vue.createVNode("a", {
"class": "".concat(footerClass.value, "__logo"),
"href": logo.url,
"target": logo.target
}, [logo.icon && vue.createVNode(Image$1, {
"class": "".concat(footerClass.value, "__icon"),
"src": logo.icon
}, null), logo.title && vue.createVNode("span", {
"class": "".concat(footerClass.value, "__title")
}, [logo.title])]);
};
var renderText = function renderText() {
return props.text && vue.createVNode("div", {
"class": "".concat(footerClass.value, "__text")
}, [props.text]);
};
var renderLink = function renderLink() {
if (!props.links.length) return null;
return vue.createVNode("div", {
"class": "".concat(footerLinkClass.value, "-list")
}, [props.links.map(function (link, index) {
return vue.createVNode(vue.Fragment, null, [vue.createVNode("a", {
"href": link.url,
"target": link.target,
"class": "".concat(footerLinkClass.value, "-item")
}, [link.name]), index !== props.links.length - 1 && vue.createVNode("div", {
"class": "".concat(footerLinkClass.value, "-line")
}, [vue.createTextVNode("|")])]);
})]);
};
return function () {
return vue.createVNode("div", {
"class": footerClass.value
}, [renderLogo(), renderLink(), renderText()]);
};
}
});
var Footer = withInstall(_Footer);
var props$b = {
align: {
type: String,
default: "center",
validator: function validator(val) {
if (!val) return true;
return ["left", "center"].includes(val);
}
},
border: Boolean,
column: {
type: Number,
default: 4
},
gutter: {
type: Number
},
hover: Boolean,
theme: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "card"].includes(val);
}
}
};
var prefix$k = config.prefix;
var _Grid = vue.defineComponent({
name: "".concat(prefix$k, "-grid"),
props: props$b,
setup: function setup(props2, _ref) {
var slots = _ref.slots;
var gridClass = usePrefixClass("grid");
var _toRefs = vue.toRefs(props2),
column = _toRefs.column,
gutter = _toRefs.gutter,
border = _toRefs.border,
align = _toRefs.align,
hover = _toRefs.hover;
var rootStyle = vue.computed(function () {
if (column.value === 0) return [];
var ans = ["padding: ".concat(gutter.value, "px;"), "grid-template-columns: repeat(".concat(column.value, ", 1fr)"), "grid-gap: ".concat(gutter.value, "px")];
return ans;
});
vue.provide("grid", {
column: column,
border: border,
align: align,
gutter: gutter,
hover: hover
});
var classes = vue.computed(function () {
return ["".concat(gridClass.value), _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(gridClass.value, "--card"), props2.theme === "card"), "".concat(gridClass.value, "--auto-size"), props2.column === 0), "".concat(gridClass.value, "--bordered"), props2.border && !props2.gutter)];
});
return function () {
var _slots$default;
return vue.createVNode("div", {
"class": classes.value,
"style": rootStyle.value
}, [(_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)]);
};
}
});
var props$a = {
badge: {
type: Object
},
description: {
type: [String, Function]
},
icon: {
type: Function
},
image: {
type: [String, Object, Function]
},
layout: {
type: String,
default: "vertical",
validator: function validator(val) {
if (!val) return true;
return ["vertical", "horizontal"].includes(val);
}
},
text: {
type: [String, Function]
}
};
function _isSlot$6(s) {
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
}
var prefix$j = config.prefix;
var _GridItem = vue.defineComponent({
name: "".concat(prefix$j, "-grid-item"),
directives: {
Hover: Hover
},
components: {
TImage: Image$1,
TBadge: Badge
},
props: props$a,
setup: function setup(props2, context) {
var gridItemClass = usePrefixClass("grid-item");
var renderTNodeJSX = useTNodeJSX();
var _inject = vue.inject("grid"),
column = _inject.column,
border = _inject.border,
align = _inject.align,
gutter = _inject.gutter,
hover = _inject.hover;
var rootStyle = vue.computed(function () {
var percent = column.value > 0 ? "".concat(100 / +column.value, "%") : 0;
var style = {
textAlign: ["center", "left"].includes(align.value) ? align.value : "center"
};
if (percent !== 0) {
style.flexBasis = percent;
}
return style;
});
var size = vue.computed(function () {
var col = column.value;
if (!col || col === 4) return "middle";
return col > 4 ? "small" : "large";
});
var realImage = vue.computed(function () {
if (isString(props2.image)) return {
src: props2.image
};
if (isObject$1(props2.image) && !isFunction(props2.image) && !context.slots.image) {
return props2.image;
}
return null;
});
var gridItemClasses = vue.computed(function () {
return ["".concat(gridItemClass.value), "".concat(gridItemClass.value, "--").concat(props2.layout), _defineProperty$3(_defineProperty$3({}, "".concat(gridItemClass.value, "--bordered"), border.value), "".concat(gridItemClass.value, "--surround"), border.value && gutter.value)];
});
return function () {
var _slot;
var renderImage = function renderImage() {
if (realImage.value) {
return vue.createVNode(vue.resolveComponent("t-image"), vue.mergeProps({
"shape": "round"
}, realImage.value), null);
}
if (props2.icon) {
return renderTNodeJSX("icon");
}
return renderTNodeJSX("image");
};
return vue.withDirectives(vue.createVNode("div", {
"class": gridItemClasses.value,
"style": rootStyle.value
}, [vue.createVNode("div", {
"class": "".concat(gridItemClass.value, "__image ").concat(gridItemClass.value, "__image--").concat(size.value)
}, [props2.badge ? vue.createVNode(vue.resolveComponent("t-badge"), props2.badge, _isSlot$6(_slot = renderImage()) ? _slot : {
default: function _default() {
return [_slot];
}
}) : renderImage()]), vue.createVNode("div", {
"class": "".concat(gridItemClass.value, "__content ").concat(gridItemClass.value, "__content--").concat(props2.layout)
}, [vue.createVNode("div", {
"class": "".concat(gridItemClass.value, "__title ").concat(gridItemClass.value, "__title--").concat(size.value)
}, [renderTNodeJSX("text")]), vue.createVNode("div", {
"class": "".concat(gridItemClass.value, "__description ").concat(gridItemClass.value, "__description--").concat(props2.layout)
}, [renderTNodeJSX("description")])])]), [[vue.resolveDirective("hover"), {
className: "".concat(gridItemClass.value, "--hover"),
disabledHover: !hover.value
}]]);
};
}
});
var Grid = withInstall(_Grid);
var GridItem = withInstall(_GridItem);
var props$9 = {
asyncLoading: {
type: [String, Function]
},
footer: {
type: [String, Function]
},
header: {
type: [String, Function]
},
onLoadMore: Function,
onScroll: Function
};
var prefix$i = config.prefix;
var _List = vue.defineComponent({
name: "".concat(prefix$i, "-list"),
components: {
TLoading: Loading
},
props: props$9,
emits: ["load-more", "scroll"],
setup: function setup(props2, _ref) {
var slots = _ref.slots;
var listClass = usePrefixClass("list");
var _useConfig = useConfig("list"),
globalConfig = _useConfig.globalConfig;
var renderTNodeJSX = useTNodeJSX();
var LOADING_TEXT_MAP = {
loading: globalConfig.value.loading,
"load-more": globalConfig.value.loadingMoreText
};
var root = vue.ref();
var scrollParent = useScrollParent(root);
var _useWindowSize = useWindowSize(),
height = _useWindowSize.height;
var onLoadMore = function onLoadMore(e) {
if (props2.asyncLoading === "load-more") {
var _props2$onLoadMore;
(_props2$onLoadMore = props2.onLoadMore) === null || _props2$onLoadMore === void 0 || _props2$onLoadMore.call(props2);
}
};
var handleScroll = function handleScroll(e) {
var _props2$onScroll;
var scrollHeight = e.target.scrollHeight || Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
var scrollTop = e.target.scrollTop || document.documentElement.scrollTop || document.body.scrollTop;
var offsetHeight = e.target.offsetHeight || height.value;
(_props2$onScroll = props2.onScroll) === null || _props2$onScroll === void 0 || _props2$onScroll.call(props2, scrollHeight - (scrollTop + offsetHeight), scrollTop);
};
var renderLoading = function renderLoading() {
if (typeof props2.asyncLoading === "string" && ["loading", "load-more"].includes(props2.asyncLoading)) {
return vue.createVNode(Loading, {
"indicator": props2.asyncLoading === "loading",
"text": typeof props2.asyncLoading === "string" ? LOADING_TEXT_MAP[props2.asyncLoading] : "",
"class": "".concat(listClass.value, "__loading")
}, null);
}
return renderTNodeJSX("asyncLoading");
};
useEventListener(scrollParent, "scroll", handleScroll);
return function () {
var headerContent = renderTNodeJSX("header");
var footerContent = renderTNodeJSX("footer");
return vue.createVNode("div", {
"ref": root,
"class": listClass.value,
"onScroll": handleScroll
}, [headerContent, slots.default && slots.default(), vue.createVNode("div", {
"class": "".concat(listClass.value, "__loading--wrapper"),
"onClick": onLoadMore
}, [renderLoading()]), footerContent]);
};
}
});
var List = withInstall(_List);
var _excluded$1 = ["from", "to", "direction"];
function getBackgroundColor(color) {
if (typeof color === "string") {
return color;
}
if (Array.isArray(color)) {
if (color[0] && color[0][0] === "#") {
color.unshift("90deg");
}
return "linear-gradient( ".concat(color.join(","), " )");
}
var from = color.from,
to = color.to,
_color$direction = color.direction,
direction = _color$direction === void 0 ? "to right" : _color$direction,
rest = _objectWithoutProperties$1(color, _excluded$1);
var keys = Object.keys(rest);
if (keys.length) {
keys = keys.sort(function (a, b) {
return parseFloat(a.substr(0, a.length - 1)) - parseFloat(b.substr(0, b.length - 1));
});
var tempArr = keys.map(function (key) {
return "".concat(rest[key], " ").concat(key);
});
return "linear-gradient(".concat(direction, ", ").concat(tempArr.join(","), ")");
}
return "linear-gradient(".concat(direction, ", ").concat(from, ", ").concat(to, ")");
}
var props$8 = {
color: {
type: [String, Object, Array],
default: ""
},
label: {
type: [String, Boolean, Function],
default: true
},
percentage: {
type: Number,
default: 0
},
size: {
type: [String, Number],
default: "default"
},
status: {
type: String,
validator: function validator(val) {
if (!val) return true;
return ["success", "error", "warning", "active"].includes(val);
}
},
strokeWidth: {
type: [String, Number]
},
theme: {
type: String,
default: "line",
validator: function validator(val) {
if (!val) return true;
return ["line", "plump", "circle"].includes(val);
}
},
trackColor: {
type: String,
default: ""
}
};
var PRO_THEME = {
LINE: "line",
PLUMP: "plump",
CIRCLE: "circle"
};
var STATUS_ICON = ["success", "error", "warning"];
var PLUMP_SEPARATE = 10;
var MOBILE_CIRCLE_SIZE_PX = {
DEFAULT: 112,
MICRO: 24
};
var getDiameter = function getDiameter(size) {
if (!size) return MOBILE_CIRCLE_SIZE_PX.DEFAULT;
if (isString(size)) {
var KEY = toUpper(size);
if (KEY in MOBILE_CIRCLE_SIZE_PX) {
return MOBILE_CIRCLE_SIZE_PX[KEY];
}
return MOBILE_CIRCLE_SIZE_PX.DEFAULT;
}
return size;
};
var getCircleStokeWidth = function getCircleStokeWidth(strokeWidth, size) {
if (!strokeWidth) {
if (size === "micro") {
return 2;
}
}
if (typeof strokeWidth !== "number" || Number.isNaN(strokeWidth)) {
return 6;
}
return strokeWidth;
};
var prefix$h = config.prefix;
var _Progress = vue.defineComponent({
name: "".concat(prefix$h, "-progress"),
props: props$8,
setup: function setup(props2) {
var renderTNodeJSX = useTNodeJSX();
var progressClass = usePrefixClass("progress");
var computedStatus = vue.computed(function () {
if (props2.percentage >= 100) {
return "success";
}
return props2.status || "default";
});
var trackBgStyle = vue.computed(function () {
var style = {};
if (props2.strokeWidth) {
var height = isString(props2.strokeWidth) ? props2.strokeWidth : "".concat(props2.strokeWidth, "px");
style.height = height;
style.borderRadius = height;
}
if (props2.trackColor) {
style.backgroundColor = props2.trackColor;
}
return style;
});
var barStyle = vue.computed(function () {
return {
width: "".concat(props2.percentage, "%"),
background: props2.color && getBackgroundColor(props2.color)
};
});
var getIconMap = function getIconMap() {
var CIRCLE_ICONS = {
success: CheckIcon,
warning: ErrorIcon,
error: CloseIcon
};
var NORMAL_ICONS = {
success: CheckCircleFilledIcon,
warning: ErrorCircleFilledIcon,
error: ErrorCircleFilledIcon
};
return props2.theme === PRO_THEME.CIRCLE ? CIRCLE_ICONS : NORMAL_ICONS;
};
var diameter = vue.computed(function () {
return getDiameter(props2.size);
});
var rPoints = vue.computed(function () {
return diameter.value / 2;
});
var circleStrokeWidth = vue.computed(function () {
return getCircleStokeWidth(props2.strokeWidth, props2.size);
});
var radius = vue.computed(function () {
return rPoints.value - circleStrokeWidth.value / 2;
});
var circleStyle = vue.computed(function () {
if (props2.theme !== PRO_THEME.CIRCLE) {
return {};
}
return {
width: "".concat(diameter.value, "px"),
height: "".concat(diameter.value, "px")
};
});
var strokeDashArr = vue.computed(function () {
var radius2 = (diameter.value - circleStrokeWidth.value) / 2;
var perimeter = Math.PI * 2 * radius2;
var percent = props2.percentage / 100;
return "".concat(perimeter * percent, " ").concat(perimeter * (1 - percent));
});
var circlePathStyle = vue.computed(function () {
var strokeColor = isObject$1(props2.color) ? "" : props2.color;
return {
stroke: strokeColor
};
});
var circleOuterStyle = vue.computed(function () {
var strokeColor = isObject$1(props2.trackColor) ? "" : props2.trackColor;
return {
stroke: strokeColor
};
});
var getLabelContent = function getLabelContent() {
var labelContent = "".concat(props2.percentage, "%");
var status = props2.status || "";
if (STATUS_ICON.includes(status) && props2.theme !== PRO_THEME.PLUMP) {
var components = getIconMap();
var component = components[status];
if (component) {
labelContent = vue.createVNode(component, {
"class": ["".concat(progressClass.value, "__icon")]
}, null);
}
}
return labelContent;
};
return function () {
var labelContent = props2.label && vue.createVNode("div", {
"class": "".concat(progressClass.value, "__info")
}, [renderTNodeJSX("label", getLabelContent())]);
var separateClasses = props2.percentage > PLUMP_SEPARATE ? "".concat(progressClass.value, "--over-ten") : "".concat(progressClass.value, "--under-ten");
return vue.createVNode("div", {
"class": progressClass.value
}, [props2.theme === PRO_THEME.LINE && vue.createVNode("div", {
"class": "".concat(progressClass.value, "--thin ").concat(progressClass.value, "--status-").concat(computedStatus.value)
}, [vue.createVNode("div", {
"class": "".concat(progressClass.value, "__bar"),
"style": trackBgStyle.value
}, [vue.createVNode("div", {
"class": "".concat(progressClass.value, "__inner"),
"style": barStyle.value
}, null)]), labelContent]), props2.theme === PRO_THEME.PLUMP && vue.createVNode("div", {
"class": ["".concat(progressClass.value, "__bar ").concat(progressClass.value, "--plump ").concat(separateClasses), _defineProperty$3({}, "".concat(progressClass.value, "--status-").concat(computedStatus.value), computedStatus.value)],
"style": trackBgStyle.value
}, [vue.createVNode("div", {
"class": "".concat(progressClass.value, "__inner"),
"style": barStyle.value
}, [props2.percentage > PLUMP_SEPARATE && labelContent]), props2.percentage <= PLUMP_SEPARATE && labelContent]), props2.theme === PRO_THEME.CIRCLE && vue.createVNode("div", {
"class": "".concat(progressClass.value, "--circle ").concat(progressClass.value, "--status-").concat(computedStatus.value),
"style": circleStyle.value
}, [labelContent, vue.createVNode("svg", {
"width": diameter.value,
"height": diameter.value,
"viewBox": "0 0 ".concat(diameter.value, " ").concat(diameter.value)
}, [vue.createVNode("circle", {
"cx": rPoints.value,
"cy": rPoints.value,
"r": radius.value,
"stroke-width": circleStrokeWidth.value,
"fill": "none",
"class": ["".concat(progressClass.value, "__circle-outer")],
"style": circleOuterStyle.value
}, null), props2.percentage > 0 && vue.createVNode("circle", {
"cx": rPoints.value,
"cy": rPoints.value,
"r": radius.value,
"stroke-width": circleStrokeWidth.value,
"fill": "none",
"stroke-linecap": "round",
"class": ["".concat(progressClass.value, "__circle-inner")],
"transform": "matrix(0,-1,1,0,0,".concat(diameter.value, ")"),
"stroke-dasharray": strokeDashArr.value,
"style": circlePathStyle.value
}, null)])])]);
};
}
});
var Progress = withInstall(_Progress);
var ResultProps = {
description: {
type: [String, Function]
},
icon: {
type: Function
},
image: {
type: [String, Function]
},
theme: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "success", "warning", "error"].includes(val);
}
},
title: {
type: [String, Function],
default: ""
}
};
var prefix$g = config.prefix;
var _Result = vue.defineComponent({
name: "".concat(prefix$g, "-result"),
props: ResultProps,
setup: function setup(props) {
var resultClass = usePrefixClass("result");
var renderTNodeJSX = useTNodeJSX();
var renderIconTNode = useIcon();
var resultClasses = vue.computed(function () {
return ["".concat(resultClass.value), "".concat(resultClass.value, "--theme-").concat(props.theme || "default")];
});
var renderIcon = function renderIcon() {
var defaultIcons = {
default: InfoCircleIcon,
success: CheckCircleIcon,
warning: InfoCircleIcon,
error: CloseCircleIcon
};
var iconContent = renderIconTNode("icon", defaultIcons);
return iconContent ? vue.createVNode(iconContent, {
"class": "".concat(resultClass.value, "__icon")
}, null) : null;
};
var renderImage = function renderImage() {
var image = renderTNodeJSX("image");
if (image) {
if (typeof image === "string") {
return vue.createVNode(Image$1, {
"src": image
}, null);
}
return image;
}
return null;
};
var renderThumb = function renderThumb() {
var image = renderImage();
return vue.createVNode("div", {
"class": "".concat(resultClass.value, "__thumb")
}, [image || renderIcon()]);
};
var renderTitle = function renderTitle() {
var title = renderTNodeJSX("title");
return title ? vue.createVNode("div", {
"class": ["".concat(resultClass.value, "__title")]
}, [title]) : null;
};
var renderDescription = function renderDescription() {
var description = renderTNodeJSX("description");
return description ? vue.createVNode("div", {
"class": ["".concat(resultClass.value, "__description")]
}, [description]) : null;
};
return function () {
return vue.createVNode("div", {
"class": [resultClasses.value]
}, [renderThumb(), renderTitle(), renderDescription()]);
};
}
});
var Result = withInstall(_Result);
var SkeletonProps = {
animation: {
type: String,
default: "none",
validator: function validator(val) {
if (!val) return true;
return ["gradient", "flashed", "none"].includes(val);
}
},
delay: {
type: Number,
default: 0
},
loading: {
type: Boolean,
default: true
},
rowCol: {
type: Array
},
theme: {
type: String,
default: "text",
validator: function validator(val) {
if (!val) return true;
return ["avatar", "image", "text", "paragraph"].includes(val);
}
}
};
var prefix$f = config.prefix;
var ThemeMap = {
avatar: [{
type: "circle",
size: "48px"
}],
image: [{
type: "rect",
size: "72px"
}],
text: [[{
width: "24%",
height: "16px",
marginRight: "16px"
}, {
width: "76%",
height: "16px"
}], 1],
paragraph: [1, 1, 1, {
width: "55%"
}]
};
var getColItemStyle = function getColItemStyle(obj) {
var styleName = ["width", "height", "marginRight", "marginLeft", "margin", "size", "background", "backgroundColor", "borderRadius"];
var style = {};
styleName.forEach(function (name) {
if (name in obj) {
var px = isNumber(obj[name]) ? "".concat(obj[name], "px") : obj[name];
if (name === "size") {
var _ref = [px, px];
style.width = _ref[0];
style.height = _ref[1];
} else {
style[name] = px;
}
}
});
return style;
};
var _Skeleton = vue.defineComponent({
name: "".concat(prefix$f, "-skeleton"),
props: SkeletonProps,
setup: function setup(props, _ref2) {
var slots = _ref2.slots;
var isShow = vue.ref(false);
var renderContent = useContent();
var skeletonClass = usePrefixClass("skeleton");
var getColItemClass = function getColItemClass(obj) {
return ["".concat(skeletonClass.value, "__col"), "".concat(skeletonClass.value, "--type-").concat(obj.type || "text"), _defineProperty$3({}, "".concat(skeletonClass.value, "--animation-").concat(props.animation), props.animation)];
};
var renderCols = function renderCols(_cols) {
var cols = [];
if (isArray$1(_cols)) {
cols = _cols;
} else if (isNumber(_cols)) {
cols = new Array(_cols).fill({
type: "text"
});
} else {
cols = [_cols];
}
return cols.map(function (obj) {
return vue.createVNode("div", {
"class": getColItemClass(obj),
"style": getColItemStyle(obj)
}, [isFunction(obj.content) ? obj.content(vue.h) : obj.content]);
});
};
var renderRowCol = function renderRowCol(_rowCol) {
var rowCol = _rowCol || props.rowCol;
return rowCol.map(function (item) {
return vue.createVNode("div", {
"class": "".concat(skeletonClass.value, "__row")
}, [renderCols(item)]);
});
};
vue.watch(function () {
return props.loading;
}, function (val) {
if (!val || props.delay === 0) {
isShow.value = val;
return;
}
setTimeout(function () {
isShow.value = val;
}, props.delay);
}, {
immediate: true
});
return function () {
var content = renderContent("default", "content");
if (slots.default) {
return vue.createVNode("div", null, [content]);
}
if (!isShow.value) {
return;
}
var children = [];
if (props.rowCol) {
children.push(renderRowCol(props.rowCol));
} else if (props.theme) {
children.push(renderRowCol(ThemeMap[props.theme]));
} else if (!props.theme && !props.rowCol) {
children.push(renderRowCol([[{
width: "24%",
height: "16px",
marginRight: "16px"
}, {
width: "76%",
height: "16px"
}], 1]));
}
return vue.createVNode("div", {
"class": skeletonClass.value
}, [children]);
};
}
});
var Skeleton = withInstall(_Skeleton);
var baseTableProps = {
bordered: Boolean,
cellEmptyContent: {
type: [String, Function]
},
columns: {
type: Array,
default: function _default() {
return [];
}
},
data: {
type: Array,
default: function _default() {
return [];
}
},
empty: {
type: [String, Function],
default: ""
},
fixedRows: {
type: Array
},
height: {
type: [String, Number]
},
loading: {
type: [Boolean, Function],
default: void 0
},
loadingProps: {
type: Object
},
maxHeight: {
type: [String, Number]
},
rowAttributes: {
type: [Object, Array, Function]
},
rowClassName: {
type: [String, Object, Array, Function]
},
rowKey: {
type: String,
default: "id",
required: true
},
showHeader: {
type: Boolean,
default: true
},
stripe: Boolean,
tableContentWidth: {
type: String,
default: ""
},
tableLayout: {
type: String,
default: "fixed",
validator: function validator(val) {
if (!val) return true;
return ["auto", "fixed"].includes(val);
}
},
verticalAlign: {
type: String,
default: "middle",
validator: function validator(val) {
if (!val) return true;
return ["top", "middle", "bottom"].includes(val);
}
},
onCellClick: Function,
onRowClick: Function,
onScroll: Function
};
function useClassName() {
var classPrefix = usePrefixClass();
var classNames = {
classPrefix: classPrefix.value,
tableBaseClass: {
table: "".concat(classPrefix.value, "-table"),
columnResizableTable: "".concat(classPrefix.value, "-table--column-resizable"),
overflowVisible: "".concat(classPrefix.value, "-table--overflow-visible"),
body: "".concat(classPrefix.value, "-table__body"),
content: "".concat(classPrefix.value, "-table__content"),
topContent: "".concat(classPrefix.value, "-table__top-content"),
bottomContent: "".concat(classPrefix.value, "-table__bottom-content"),
paginationWrap: "".concat(classPrefix.value, "-table__pagination-wrap"),
tdLastRow: "".concat(classPrefix.value, "-table__td-last-row"),
tdFirstCol: "".concat(classPrefix.value, "-table__td-first-col"),
thCellInner: "".concat(classPrefix.value, "-table__th-cell-inner"),
tableRowEdit: "".concat(classPrefix.value, "-table--row-edit"),
cellEditable: "".concat(classPrefix.value, "-table__cell--editable"),
cellEditWrap: "".concat(classPrefix.value, "-table__cell-wrap"),
bordered: "".concat(classPrefix.value, "-table--bordered"),
striped: "".concat(classPrefix.value, "-table--striped"),
hover: "".concat(classPrefix.value, "-table--hoverable"),
loading: "".concat(classPrefix.value, "-table--loading"),
rowspanAndColspan: "".concat(classPrefix.value, "-table--rowspan-colspan"),
empty: "".concat(classPrefix.value, "-table__empty"),
emptyRow: "".concat(classPrefix.value, "-table__empty-row"),
headerFixed: "".concat(classPrefix.value, "-table--header-fixed"),
columnFixed: "".concat(classPrefix.value, "-table--column-fixed"),
widthOverflow: "".concat(classPrefix.value, "-table--width-overflow"),
multipleHeader: "".concat(classPrefix.value, "-table--multiple-header"),
footerAffixed: "".concat(classPrefix.value, "-table--footer-affixed"),
horizontalBarAffixed: "".concat(classPrefix.value, "-table--horizontal-bar-affixed"),
affixedHeader: "".concat(classPrefix.value, "-table--affixed-header"),
affixedHeaderElm: "".concat(classPrefix.value, "-table__affixed-header-elm"),
affixedFooterElm: "".concat(classPrefix.value, "-table__affixed-footer-elm"),
affixedFooterWrap: "".concat(classPrefix.value, "-table__affixed-footer-wrap"),
scrollbarDivider: "".concat(classPrefix.value, "-table__scroll-bar-divider"),
fullHeight: "".concat(classPrefix.value, "-table--full-height"),
resizeLine: "".concat(classPrefix.value, "-table__resize-line"),
obviousScrollbar: "".concat(classPrefix.value, "-table__scrollbar--obvious"),
affixedHeaderWrap: "".concat(classPrefix.value, "-table__affixed-header-elm-wrap")
},
tdAlignClasses: {
left: "".concat(classPrefix.value, "-align-left"),
right: "".concat(classPrefix.value, "-align-right"),
center: "".concat(classPrefix.value, "-align-center")
},
tableHeaderClasses: {
header: "".concat(classPrefix.value, "-table__header"),
thBordered: "".concat(classPrefix.value, "-table__header-th--bordered"),
fixed: "".concat(classPrefix.value, "-table__header--fixed"),
multipleHeader: "".concat(classPrefix.value, "-table__header--multiple")
},
tableFooterClasses: {
footer: "".concat(classPrefix.value, "-table__footer"),
fixed: "".concat(classPrefix.value, "-table__footer--fixed")
},
tableAlignClasses: {
top: "".concat(classPrefix.value, "-vertical-align-top"),
middle: "".concat(classPrefix.value, "-vertical-align-middle"),
bottom: "".concat(classPrefix.value, "-vertical-align-bottom")
},
tableRowFixedClasses: {
top: "".concat(classPrefix.value, "-table__row--fixed-top"),
bottom: "".concat(classPrefix.value, "-table__row--fixed-bottom"),
firstBottom: "".concat(classPrefix.value, "-table__row--fixed-bottom-first"),
withoutBorderBottom: "".concat(classPrefix.value, "-table__row--without-border-bottom")
},
tableColFixedClasses: {
left: "".concat(classPrefix.value, "-table__cell--fixed-left"),
right: "".concat(classPrefix.value, "-table__cell--fixed-right"),
lastLeft: "".concat(classPrefix.value, "-table__cell--fixed-left-last"),
firstRight: "".concat(classPrefix.value, "-table__cell--fixed-right-first"),
leftShadow: "".concat(classPrefix.value, "-table__content--scrollable-to-left"),
rightShadow: "".concat(classPrefix.value, "-table__content--scrollable-to-right")
},
tableLayoutClasses: {
auto: "".concat(classPrefix.value, "-table--layout-auto"),
fixed: "".concat(classPrefix.value, "-table--layout-fixed")
},
tdEllipsisClass: "".concat(classPrefix.value, "-table-td--ellipsis"),
tableFullRowClasses: {
base: "".concat(classPrefix.value, "-table__row--full"),
innerFullRow: "".concat(classPrefix.value, "-table__row-full-inner"),
innerFullElement: "".concat(classPrefix.value, "-table__row-full-element"),
firstFullRow: "".concat(classPrefix.value, "-table__first-full-row"),
lastFullRow: "".concat(classPrefix.value, "-table__last-full-row")
},
tableExpandClasses: {
iconBox: "".concat(classPrefix.value, "-table__expand-box"),
iconCell: "".concat(classPrefix.value, "-table__expandable-icon-cell"),
row: "".concat(classPrefix.value, "-table__expanded-row"),
rowInner: "".concat(classPrefix.value, "-table__expanded-row-inner"),
expanded: "".concat(classPrefix.value, "-table__row--expanded"),
collapsed: "".concat(classPrefix.value, "-table__row--collapsed")
},
tableSortClasses: {
sortable: "".concat(classPrefix.value, "-table__cell--sortable"),
sortColumn: "".concat(classPrefix.value, "-table__sort-column"),
title: "".concat(classPrefix.value, "-table__cell--title"),
trigger: "".concat(classPrefix.value, "-table__cell--sort-trigger"),
doubleIcon: "".concat(classPrefix.value, "-table__double-icons"),
sortIcon: "".concat(classPrefix.value, "-table__sort-icon"),
iconDirection: {
asc: "".concat(classPrefix.value, "-table-sort-asc"),
desc: "".concat(classPrefix.value, "-table-sort-desc")
},
iconActive: "".concat(classPrefix.value, "-table__sort-icon--active"),
iconDefault: "".concat(classPrefix.value, "-icon-sort--default")
},
tableSelectedClasses: {
selected: "".concat(classPrefix.value, "-table__row--selected"),
disabled: "".concat(classPrefix.value, "-table__row--disabled"),
checkCell: "".concat(classPrefix.value, "-table__cell-check")
},
tableFilterClasses: {
filterable: "".concat(classPrefix.value, "-table__cell--filterable"),
popup: "".concat(classPrefix.value, "-table__filter-pop"),
icon: "".concat(classPrefix.value, "-table__filter-icon"),
popupContent: "".concat(classPrefix.value, "-table__filter-pop-content"),
result: "".concat(classPrefix.value, "-table__filter-result"),
inner: "".concat(classPrefix.value, "-table__row-filter-inner"),
bottomButtons: "".concat(classPrefix.value, "-table__filter--bottom-buttons"),
contentInner: "".concat(classPrefix.value, "-table__filter-pop-content-inner"),
iconWrap: "".concat(classPrefix.value, "-table__filter-icon-wrap")
},
asyncLoadingClass: "".concat(classPrefix.value, "-table__async-loading"),
isFocusClass: "".concat(classPrefix.value, "-is-focus"),
isLoadingClass: "".concat(classPrefix.value, "-is-loading"),
isLoadMoreClass: "".concat(classPrefix.value, "-is-load-more"),
tableTreeClasses: {
col: "".concat(classPrefix.value, "-table__tree-col"),
inlineCol: "".concat(classPrefix.value, "-table__tree-col--inline"),
icon: "".concat(classPrefix.value, "-table__tree-op-icon"),
leafNode: "".concat(classPrefix.value, "-table__tree-leaf-node")
},
tableDraggableClasses: {
rowDraggable: "".concat(classPrefix.value, "-table--row-draggable"),
rowHandlerDraggable: "".concat(classPrefix.value, "-table--row-handler-draggable"),
colDraggable: "".concat(classPrefix.value, "-table--col-draggable"),
handle: "".concat(classPrefix.value, "-table__handle-draggable"),
ghost: "".concat(classPrefix.value, "-table__ele--draggable-ghost"),
chosen: "".concat(classPrefix.value, "-table__ele--draggable-chosen"),
dragging: "".concat(classPrefix.value, "-table__ele--draggable-dragging"),
dragSortTh: "".concat(classPrefix.value, "-table__th--drag-sort")
},
virtualScrollClasses: {
cursor: "".concat(classPrefix.value, "-table__virtual-scroll-cursor"),
header: "".concat(classPrefix.value, "-table__virtual-scroll-header")
},
positiveRotate90: "".concat(classPrefix.value, "-positive-rotate-90"),
negativeRotate180: "".concat(classPrefix.value, "-negative-rotate-180")
};
return classNames;
}
function formatCSSUnit(unit) {
if (!unit) return unit;
return isNaN(Number(unit)) ? unit : "".concat(unit, "px");
}
function useStyle(props) {
var _toRefs = vue.toRefs(props),
bordered = _toRefs.bordered,
stripe = _toRefs.stripe,
verticalAlign = _toRefs.verticalAlign,
height = _toRefs.height,
maxHeight = _toRefs.maxHeight,
tableContentWidth = _toRefs.tableContentWidth;
var _useClassName = useClassName(),
tableBaseClass = _useClassName.tableBaseClass,
tableAlignClasses = _useClassName.tableAlignClasses;
var tableClasses = vue.computed(function () {
return [tableBaseClass.table, [tableAlignClasses[(verticalAlign === null || verticalAlign === void 0 ? void 0 : verticalAlign.value) || "middle"]], _defineProperty$3(_defineProperty$3(_defineProperty$3({}, tableBaseClass.bordered, bordered === null || bordered === void 0 ? void 0 : bordered.value), tableBaseClass.striped, stripe === null || stripe === void 0 ? void 0 : stripe.value), tableBaseClass.loading, props.loading)];
});
var tableContentStyles = vue.computed(function () {
return {
height: formatCSSUnit(height === null || height === void 0 ? void 0 : height.value),
maxHeight: formatCSSUnit(maxHeight === null || maxHeight === void 0 ? void 0 : maxHeight.value)
};
});
var tableElementStyles = vue.computed(function () {
return {
width: formatCSSUnit(tableContentWidth === null || tableContentWidth === void 0 ? void 0 : tableContentWidth.value)
};
});
return {
tableClasses: tableClasses,
tableElementStyles: tableElementStyles,
tableContentStyles: tableContentStyles
};
}
function ownKeys$d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function getColumnFixedStyles(col, index, rowAndColFixedPosition, tableColFixedClasses) {
var fixedPos = rowAndColFixedPosition === null || rowAndColFixedPosition === void 0 ? void 0 : rowAndColFixedPosition.get(col.colKey || index);
if (!fixedPos) return {};
var thClasses = _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, tableColFixedClasses.left, col.fixed === "left"), tableColFixedClasses.right, col.fixed === "right"), tableColFixedClasses.lastLeft, col.fixed === "left" && fixedPos.lastLeftFixedCol), tableColFixedClasses.firstRight, col.fixed === "right" && fixedPos.firstRightFixedCol);
var thStyles = {
left: col.fixed === "left" ? "".concat(fixedPos.left, "px") : void 0,
right: col.fixed === "right" ? "".concat(fixedPos.right, "px") : void 0
};
return {
style: thStyles,
classes: thClasses
};
}
function getRowFixedStyles(rowId, rowIndex, rowLength, fixedRows, rowAndColFixedPosition, tableRowFixedClasses) {
var virtualTranslateY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;
if (!fixedRows || !fixedRows.length) return {
style: void 0,
classes: void 0
};
var fixedTop = rowIndex < fixedRows[0];
var fixedBottom = rowIndex > rowLength - 1 - fixedRows[1];
var firstFixedBottomRow = rowLength - fixedRows[1];
var fixedPos = (rowAndColFixedPosition === null || rowAndColFixedPosition === void 0 ? void 0 : rowAndColFixedPosition.get(rowId)) || {};
var rowClasses = _defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, tableRowFixedClasses.top, fixedTop), tableRowFixedClasses.bottom, fixedBottom), tableRowFixedClasses.firstBottom, rowIndex === firstFixedBottomRow), tableRowFixedClasses.withoutBorderBottom, rowIndex === firstFixedBottomRow - 1);
var rowStyles = {
top: fixedTop ? "".concat(fixedPos.top - virtualTranslateY, "px") : void 0,
bottom: fixedBottom ? "".concat(fixedPos.bottom + virtualTranslateY, "px") : void 0
};
return {
style: rowStyles,
classes: rowClasses
};
}
function useFixed(props) {
var _toRefs = vue.toRefs(props),
columns = _toRefs.columns,
tableLayout = _toRefs.tableLayout,
tableContentWidth = _toRefs.tableContentWidth,
fixedRows = _toRefs.fixedRows,
bordered = _toRefs.bordered;
var data = vue.ref([]);
var tableContentRef = vue.ref();
var isFixedHeader = vue.ref(false);
var isWidthOverflow = vue.ref(false);
var tableElmRef = vue.ref();
var rowAndColFixedPosition = vue.ref(/* @__PURE__ */new Map());
var showColumnShadow = vue.reactive({
left: false,
right: false
});
var virtualScrollHeaderPos = vue.ref({
left: 0,
top: 0
});
var tableWidth = vue.ref(0);
var tableElmWidth = vue.ref(0);
var thWidthList = vue.ref({});
var isFixedColumn = vue.ref(false);
var isFixedRightColumn = vue.ref(false);
var isFixedLeftColumn = vue.ref(false);
function setUseFixedTableElmRef(val) {
tableElmRef.value = val;
}
function getColumnMap(columns2) {
var map = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /* @__PURE__ */new Map();
var levelNodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
var level = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
var parent = arguments.length > 4 ? arguments[4] : undefined;
for (var i = 0, len = columns2.length; i < len; i++) {
var col = columns2[i];
if (["left", "right"].includes(col.fixed)) {
isFixedColumn.value = true;
}
if (col.fixed === "right") {
isFixedRightColumn.value = true;
}
if (col.fixed === "left") {
isFixedLeftColumn.value = true;
}
var key = col.colKey || i;
var columnInfo = {
col: col,
parent: parent,
index: i
};
map.set(key, columnInfo);
if (levelNodes[level]) {
levelNodes[level].push(columnInfo);
} else {
levelNodes[level] = [columnInfo];
}
}
return {
newColumnsMap: map,
levelNodes: levelNodes
};
}
var setFixedRowPosition = function setFixedRowPosition(trList, initialColumnMap, thead, tfoot) {
var _ref = fixedRows.value || [],
_ref2 = _slicedToArray(_ref, 2),
fixedTopRows = _ref2[0],
fixedBottomRows = _ref2[1];
var data2 = props.data,
_props$rowKey = props.rowKey,
rowKey = _props$rowKey === void 0 ? "id" : _props$rowKey;
for (var i = 0; i < fixedTopRows; i++) {
var tr = trList[i];
var rowId = get(data2[i], rowKey);
var thisRowInfo = initialColumnMap.get(rowId) || {};
var lastRowId = get(data2[i - 1], rowKey);
var lastRowInfo = initialColumnMap.get(lastRowId) || {};
var defaultBottom = 0;
if (i === 0) {
defaultBottom = (thead === null || thead === void 0 ? void 0 : thead.getBoundingClientRect().height) || 0;
}
thisRowInfo.top = (lastRowInfo.top || defaultBottom) + (lastRowInfo.height || 0);
initialColumnMap.set(rowId, _objectSpread$d(_objectSpread$d({}, thisRowInfo), {}, {
height: (tr === null || tr === void 0 ? void 0 : tr.getBoundingClientRect().height) || 0
}));
}
for (var _i = data2.length - 1; _i >= data2.length - fixedBottomRows; _i--) {
var _tr = trList[trList.length - (data2.length - _i)];
var _rowId = get(data2[_i], rowKey);
var _thisRowInfo = initialColumnMap.get(_rowId) || {};
var _lastRowId = get(data2[_i + 1], rowKey);
var _lastRowInfo = initialColumnMap.get(_lastRowId) || {};
var _defaultBottom = 0;
if (_i === data2.length - 1) {
_defaultBottom = (tfoot === null || tfoot === void 0 ? void 0 : tfoot.getBoundingClientRect().height) || 0;
}
_thisRowInfo.bottom = (_lastRowInfo.bottom || _defaultBottom) + (_lastRowInfo.height || 0);
initialColumnMap.set(_rowId, _objectSpread$d(_objectSpread$d({}, _thisRowInfo), {}, {
height: (_tr === null || _tr === void 0 ? void 0 : _tr.getBoundingClientRect().height) || 0
}));
}
};
var setFixedLeftPos = function setFixedLeftPos(columns2, initialColumnMap) {
var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
for (var i = 0, len = columns2.length; i < len; i++) {
var col = columns2[i];
if (col.fixed === "right") return;
var colInfo = initialColumnMap.get(col.colKey || i);
var lastColIndex = i - 1;
while (lastColIndex >= 0 && columns2[lastColIndex].fixed !== "left") {
lastColIndex -= 1;
}
var lastCol = columns2[lastColIndex];
var defaultWidth = i === 0 ? (parent === null || parent === void 0 ? void 0 : parent.left) || 0 : 0;
var lastColInfo = initialColumnMap.get((lastCol === null || lastCol === void 0 ? void 0 : lastCol.colKey) || i - 1);
if (colInfo) {
colInfo.left = ((lastColInfo === null || lastColInfo === void 0 ? void 0 : lastColInfo.left) || defaultWidth) + ((lastColInfo === null || lastColInfo === void 0 ? void 0 : lastColInfo.width) || 0);
}
}
};
var setFixedRightPos = function setFixedRightPos(columns2, initialColumnMap) {
var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
for (var i = columns2.length - 1; i >= 0; i--) {
var col = columns2[i];
if (col.fixed === "left") return;
var colInfo = initialColumnMap.get(col.colKey || i);
var lastColIndex = i + 1;
while (lastColIndex < columns2.length && columns2[lastColIndex].fixed !== "right") {
lastColIndex += 1;
}
var lastCol = columns2[lastColIndex];
var defaultWidth = i === columns2.length - 1 ? (parent === null || parent === void 0 ? void 0 : parent.right) || 0 : 0;
var lastColInfo = initialColumnMap.get((lastCol === null || lastCol === void 0 ? void 0 : lastCol.colKey) || i + 1);
if (colInfo) {
colInfo.right = ((lastColInfo === null || lastColInfo === void 0 ? void 0 : lastColInfo.right) || defaultWidth) + ((lastColInfo === null || lastColInfo === void 0 ? void 0 : lastColInfo.width) || 0);
}
}
};
var setFixedColPosition = function setFixedColPosition(trList, initialColumnMap) {
if (!trList) return;
for (var i = 0, len = trList.length; i < len; i++) {
var thList = trList[i].children;
for (var j = 0, thLen = thList.length; j < thLen; j++) {
var _obj$col;
var th = thList[j];
var colKey = th.dataset.colkey;
if (!colKey) {
log.warn("TDesign Table", "".concat(th.innerText, " missing colKey. colKey is required for fixed column feature."));
}
var obj = initialColumnMap.get(colKey || j);
if (obj !== null && obj !== void 0 && (_obj$col = obj.col) !== null && _obj$col !== void 0 && _obj$col.fixed) {
initialColumnMap.set(colKey, _objectSpread$d(_objectSpread$d({}, obj), {}, {
width: th.getBoundingClientRect().width
}));
}
}
}
setFixedLeftPos(columns.value, initialColumnMap);
setFixedRightPos(columns.value, initialColumnMap);
};
var updateRowAndColFixedPosition = function updateRowAndColFixedPosition(tableContentElm, initialColumnMap) {
rowAndColFixedPosition.value.clear();
if (!tableContentElm) return;
var thead = tableContentElm.querySelector("thead");
thead && setFixedColPosition(thead.children, initialColumnMap);
var tbody = tableContentElm.querySelector("tbody");
var tfoot = tableContentElm.querySelector("tfoot");
tbody && setFixedRowPosition(tbody.children, initialColumnMap, thead, tfoot);
rowAndColFixedPosition.value = initialColumnMap;
};
var shadowLastScrollLeft;
var updateColumnFixedShadow = function updateColumnFixedShadow(target, extra) {
if (!isFixedColumn.value || !target) return;
var scrollLeft = target.scrollLeft;
if (shadowLastScrollLeft === scrollLeft && (!extra || !extra.skipScrollLimit)) return;
shadowLastScrollLeft = scrollLeft;
var isShowRight = target.clientWidth + scrollLeft < target.scrollWidth;
var isShowLeft = scrollLeft > 0;
if (showColumnShadow.left === isShowLeft && showColumnShadow.right === isShowRight) return;
showColumnShadow.left = isShowLeft && isFixedLeftColumn.value;
showColumnShadow.right = isShowRight && isFixedRightColumn.value;
};
var setIsLastOrFirstFixedCol = function setIsLastOrFirstFixedCol(levelNodes) {
for (var t = 0; t < levelNodes.length; t++) {
var nodes = levelNodes[t];
for (var i = 0, len = nodes.length; i < len; i++) {
var colMapInfo = nodes[i];
var nextColMapInfo = nodes[i + 1];
var parent = colMapInfo.parent;
var isParentLastLeftFixedCol = !parent || (parent === null || parent === void 0 ? void 0 : parent.lastLeftFixedCol);
if (isParentLastLeftFixedCol && colMapInfo.col.fixed === "left" && (nextColMapInfo === null || nextColMapInfo === void 0 ? void 0 : nextColMapInfo.col.fixed) !== "left") {
colMapInfo.lastLeftFixedCol = true;
}
var lastColMapInfo = nodes[i - 1];
var isParentFirstRightFixedCol = !parent || (parent === null || parent === void 0 ? void 0 : parent.firstRightFixedCol);
if (isParentFirstRightFixedCol && colMapInfo.col.fixed === "right" && (lastColMapInfo === null || lastColMapInfo === void 0 ? void 0 : lastColMapInfo.col.fixed) !== "right") {
colMapInfo.firstRightFixedCol = true;
}
}
}
};
var updateFixedStatus = function updateFixedStatus() {
var _getColumnMap = getColumnMap(columns.value),
newColumnsMap = _getColumnMap.newColumnsMap,
levelNodes = _getColumnMap.levelNodes;
setIsLastOrFirstFixedCol(levelNodes);
var timer = setTimeout(function () {
var _fixedRows$value;
if (isFixedColumn.value || (_fixedRows$value = fixedRows.value) !== null && _fixedRows$value !== void 0 && _fixedRows$value.length) {
updateRowAndColFixedPosition(tableContentRef.value, newColumnsMap);
}
clearTimeout(timer);
}, 0);
return function () {
clearTimeout(timer);
};
};
var setTableElmWidth = function setTableElmWidth(width) {
if (tableElmWidth.value === width) return;
tableElmWidth.value = width;
};
vue.watch([data, columns, bordered, tableLayout, tableContentWidth, isFixedHeader, isWidthOverflow, isFixedColumn, fixedRows], updateFixedStatus, {
immediate: true
});
vue.watch([isFixedColumn, columns], function () {
var timer = setTimeout(function () {
if (isFixedColumn.value) {
updateColumnFixedShadow(tableContentRef.value);
}
clearTimeout(timer);
}, 0);
}, {
immediate: true
});
var refreshTable = function refreshTable() {
if (isFixedColumn.value || isFixedHeader.value) {
updateFixedStatus();
updateColumnFixedShadow(tableContentRef.value, {
skipScrollLimit: true
});
}
};
var setData = function setData(dataSource) {
data.value = dataSource;
};
var updateTableAfterColumnResize = function updateTableAfterColumnResize() {
updateFixedStatus();
};
return {
tableWidth: tableWidth,
tableElmWidth: tableElmWidth,
thWidthList: thWidthList,
isFixedHeader: isFixedHeader,
isWidthOverflow: isWidthOverflow,
tableContentRef: tableContentRef,
isFixedColumn: isFixedColumn,
showColumnShadow: showColumnShadow,
rowAndColFixedPosition: rowAndColFixedPosition,
virtualScrollHeaderPos: virtualScrollHeaderPos,
setData: setData,
refreshTable: refreshTable,
setTableElmWidth: setTableElmWidth,
setUseFixedTableElmRef: setUseFixedTableElmRef,
updateColumnFixedShadow: updateColumnFixedShadow,
updateTableAfterColumnResize: updateTableAfterColumnResize
};
}
function ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function renderTitle(slots, col, index) {
var params = {
col: col,
colIndex: index
};
if (isFunction(col.title)) {
return col.title(vue.h, params);
}
if (isString(col.title) && slots[col.title]) {
return slots[col.title](params);
}
if (isFunction(col.render)) {
return col.render(vue.h, _objectSpread$c(_objectSpread$c({}, params), {}, {
type: "title",
row: {},
rowIndex: -1
})) || col.title;
}
return col.title;
}
function formatRowAttributes(attributes, params) {
if (!attributes) return void 0;
var attrList = attributes instanceof Array ? attributes : [attributes];
var result = {};
for (var i = 0; i < attrList.length; i++) {
var attrItem = attrList[i];
if (!attrItem) continue;
var attrProperty = isFunction(attrItem) ? attrItem(params) : attrItem;
result = attrProperty instanceof Array ? formatRowAttributes(attrProperty, params) : Object.assign(result, attrProperty);
}
return result;
}
function formatRowClassNames(rowClassNames, params, rowKey) {
var rowClassList = rowClassNames instanceof Array ? rowClassNames : [rowClassNames];
var row = params.row,
rowIndex = params.rowIndex;
var customClasses = [];
for (var i = 0, len = rowClassList.length; i < len; i++) {
var rName = rowClassList[i];
var tClass = isFunction(rName) ? rName(params) : rName;
if (isObject$1(tClass) && !(tClass instanceof Array)) {
tClass[rowIndex] && (tClass = tClass[rowIndex]);
var rowId = get(row, rowKey || "id");
tClass[rowId] && (tClass = tClass[rowId]);
} else if (tClass instanceof Array) {
tClass = formatRowClassNames(tClass, params, rowKey);
}
customClasses = customClasses.concat(tClass);
}
return customClasses;
}
function formatClassNames(classNames, params) {
var classes = classNames instanceof Array ? classNames : [classNames];
var arr = [];
for (var i = 0, len = classes.length; i < len; i++) {
var cls = classes[i];
if (isFunction(cls)) {
arr.push(cls(params));
} else {
arr.push(cls);
}
}
return arr;
}
function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$e = config.prefix;
var BaseTable = vue.defineComponent({
name: "".concat(prefix$e, "-base-table"),
props: baseTableProps,
emits: ["cell-click", "row-click", "scroll"],
setup: function setup(props, context) {
var tableRef = vue.ref();
var theadRef = vue.ref();
var tableElmRef = vue.ref();
var renderTNodeJSX = useTNodeJSX();
var _useClassName = useClassName(),
classPrefix = _useClassName.classPrefix,
tableLayoutClasses = _useClassName.tableLayoutClasses,
tableHeaderClasses = _useClassName.tableHeaderClasses,
tableBaseClass = _useClassName.tableBaseClass,
tdAlignClasses = _useClassName.tdAlignClasses,
tdEllipsisClass = _useClassName.tdEllipsisClass,
tableRowFixedClasses = _useClassName.tableRowFixedClasses,
tableColFixedClasses = _useClassName.tableColFixedClasses;
var _useConfig = useConfig("table"),
globalConfig = _useConfig.globalConfig,
t = _useConfig.t;
var defaultLoadingContent = vue.h(Loading, _objectSpread$b({}, props.loadingProps));
var _useStyle = useStyle(props),
tableClasses = _useStyle.tableClasses,
tableContentStyles = _useStyle.tableContentStyles,
tableElementStyles = _useStyle.tableElementStyles;
var _useFixed = useFixed(props),
rowAndColFixedPosition = _useFixed.rowAndColFixedPosition,
tableContentRef = _useFixed.tableContentRef,
isFixedColumn = _useFixed.isFixedColumn,
isFixedHeader = _useFixed.isFixedHeader,
showColumnShadow = _useFixed.showColumnShadow,
refreshTable = _useFixed.refreshTable,
updateColumnFixedShadow = _useFixed.updateColumnFixedShadow;
var defaultColWidth = props.tableLayout === "fixed" ? "80px" : void 0;
var theadClasses = vue.computed(function () {
return [tableHeaderClasses.header, _defineProperty$3(_defineProperty$3({}, tableHeaderClasses.fixed, Boolean(props.maxHeight || props.height)), tableBaseClass.bordered, props.bordered)];
});
var tbodyClasses = vue.computed(function () {
return [tableBaseClass.body];
});
var ellipsisClasses = vue.computed(function () {
return ["".concat(classPrefix, "-table__ellipsis"), "".concat(classPrefix, "-text-ellipsis")];
});
var handleRowClick = function handleRowClick(row, rowIndex, e) {
var _props$onRowClick;
(_props$onRowClick = props.onRowClick) === null || _props$onRowClick === void 0 || _props$onRowClick.call(props, {
row: row,
index: rowIndex,
e: e
});
};
var handleCellClick = function handleCellClick(row, col, rowIndex, colIndex, e) {
var _props$onCellClick;
if (col.stopPropagation) {
e.stopPropagation();
}
(_props$onCellClick = props.onCellClick) === null || _props$onCellClick === void 0 || _props$onCellClick.call(props, {
row: row,
col: col,
rowIndex: rowIndex,
colIndex: colIndex,
e: e
});
};
var dynamicBaseTableClasses = vue.computed(function () {
return [_defineProperty$3(_defineProperty$3(_defineProperty$3(_defineProperty$3({}, tableBaseClass.headerFixed, isFixedHeader.value), tableBaseClass.columnFixed, isFixedColumn.value), tableColFixedClasses.leftShadow, showColumnShadow.left), tableColFixedClasses.rightShadow, showColumnShadow.right), tableClasses.value];
});
var tableElmClasses = vue.computed(function () {
return [[tableLayoutClasses[props.tableLayout || "fixed"]]];
});
var renderCell = function renderCell(params, slots, cellEmptyContent) {
var col = params.col,
row = params.row,
rowIndex = params.rowIndex;
if (col.colKey === "serial-number") {
return rowIndex + 1;
}
if (isFunction(col.cell)) {
return col.cell(vue.h, params);
}
if (slots[col.colKey]) {
return slots[col.colKey](params);
}
if (isString(col.cell) && slots !== null && slots !== void 0 && slots[col.cell]) {
return slots[col.cell](params);
}
if (isFunction(col.render)) {
return col.render(vue.h, _objectSpread$b(_objectSpread$b({}, params), {}, {
type: "cell"
}));
}
var r = get(row, col.colKey);
if (![void 0, "", null].includes(r)) return r;
if (cellEmptyContent) {
return isFunction(cellEmptyContent) ? cellEmptyContent(vue.h, params) : cellEmptyContent;
}
if (context.slots.cellEmptyContent) return context.slots.cellEmptyContent(params);
if (context.slots["cell-empty-content"]) return context.slots["cell-empty-content"](params);
return r;
};
var loadingClasses = vue.computed(function () {
return ["".concat(classPrefix, "-table__loading--full")];
});
var onInnerVirtualScroll = function onInnerVirtualScroll(e) {
var _props$onScroll;
var target = e.target || e.srcElement;
updateColumnFixedShadow(target);
(_props$onScroll = props.onScroll) === null || _props$onScroll === void 0 || _props$onScroll.call(props, {
params: e
});
};
var tdClassName = function tdClassName(td_item, extra) {
var className = "";
if (td_item.ellipsis) {
className = tdEllipsisClass;
}
if (td_item.align && td_item.align !== "left") {
className = "".concat(className, " ").concat(tdAlignClasses["".concat(td_item.align)]);
}
return [className].concat(_toConsumableArray(extra));
};
var colStyle = function colStyle(col_item) {
return {
width: "".concat(formatCSSUnit(col_item.width || defaultColWidth)),
minWidth: "".concat(!formatCSSUnit(col_item.width || defaultColWidth) && !col_item.minWidth && props.tableLayout === "fixed" ? "80px" : formatCSSUnit(col_item.minWidth))
};
};
var thClassName = function thClassName(item_th, extra) {
var className = "";
if (item_th.colKey) {
className = "".concat(classPrefix, "-table__th-").concat(item_th.colKey);
}
if (item_th.ellipsisTitle || item_th.ellipsis) {
className = "".concat(className, " ").concat(tdEllipsisClass);
}
if (item_th.align && item_th.align !== "left") {
className = "".concat(className, " ").concat(tdAlignClasses["".concat(item_th.align)]);
}
return [className, extra];
};
var renderTableBody = function renderTableBody() {
var _props$data, _props$data2;
var renderContentEmpty = renderTNodeJSX("empty") || t(globalConfig.value.empty);
if (!((_props$data = props.data) !== null && _props$data !== void 0 && _props$data.length) && renderContentEmpty) {
var _props$columns;
return vue.createVNode("tr", {
"class": tableBaseClass.emptyRow
}, [vue.createVNode("td", {
"colspan": (_props$columns = props.columns) === null || _props$columns === void 0 ? void 0 : _props$columns.length
}, [vue.createVNode("div", {
"class": tableBaseClass.empty
}, [renderContentEmpty])])]);
}
if ((_props$data2 = props.data) !== null && _props$data2 !== void 0 && _props$data2.length) {
var _props$data3;
return (_props$data3 = props.data) === null || _props$data3 === void 0 ? void 0 : _props$data3.map(function (tr_item, tr_index) {
var _props$data4, _props$columns2;
var _getRowFixedStyles = getRowFixedStyles(get(tr_item, props.rowKey || "id"), tr_index, ((_props$data4 = props.data) === null || _props$data4 === void 0 ? void 0 : _props$data4.length) || 0, props.fixedRows, rowAndColFixedPosition.value, tableRowFixedClasses),
style = _getRowFixedStyles.style,
classes = _getRowFixedStyles.classes;
var customClasses = formatRowClassNames(props.rowClassName, {
row: tr_item,
rowKey: props.rowKey,
rowIndex: tr_index,
type: "body"
}, props.rowKey || "id");
var trAttributes = formatRowAttributes(props.rowAttributes, {
row: tr_item,
rowIndex: tr_index,
type: "body"
}) || {};
return vue.createVNode("tr", vue.mergeProps(trAttributes, {
"key": tr_index,
"style": style,
"class": [classes, customClasses],
"onClick": function onClick($event) {
handleRowClick(tr_item, tr_index, $event);
}
}), [(_props$columns2 = props.columns) === null || _props$columns2 === void 0 ? void 0 : _props$columns2.map(function (td_item, td_index) {
var tdStyles = getColumnFixedStyles(td_item, td_index, rowAndColFixedPosition.value, tableColFixedClasses);
var customClasses2 = formatClassNames(td_item.className, {
col: td_item,
colIndex: td_index,
row: tr_item,
rowIndex: tr_index,
type: "td"
});
return vue.createVNode("td", {
"key": td_index,
"style": tdStyles.style,
"class": tdClassName(td_item, [tdStyles.classes, customClasses2]),
"onClick": function onClick($event) {
handleCellClick(tr_item, td_item, tr_index, td_index, $event);
}
}, [vue.createVNode("div", {
"class": td_item.ellipsis && ellipsisClasses.value
}, [renderCell({
row: tr_item,
col: td_item,
rowIndex: tr_index,
colIndex: td_index
}, context.slots, props.cellEmptyContent)])]);
})]);
});
}
};
context.expose({
refreshTable: refreshTable
});
return function () {
var _props$columns3, _props$columns4;
var renderLoading = renderTNodeJSX("loading", {
defaultNode: defaultLoadingContent
});
return vue.createVNode("div", {
"ref": tableRef,
"class": dynamicBaseTableClasses.value,
"style": "position: relative"
}, [vue.createVNode("div", {
"ref": tableContentRef,
"class": tableBaseClass.content,
"style": tableContentStyles.value,
"onScroll": onInnerVirtualScroll
}, [vue.createVNode("table", {
"ref": tableElmRef,
"class": tableElmClasses.value,
"style": tableElementStyles.value
}, [vue.createVNode("colgroup", null, [(_props$columns3 = props.columns) === null || _props$columns3 === void 0 ? void 0 : _props$columns3.map(function (col_item) {
return vue.createVNode("col", {
"key": col_item.colKey,
"style": colStyle(col_item)
}, null);
})]), props.showHeader && vue.createVNode("thead", {
"ref": theadRef,
"class": theadClasses.value
}, [vue.createVNode("tr", null, [(_props$columns4 = props.columns) === null || _props$columns4 === void 0 ? void 0 : _props$columns4.map(function (item_th, index_th) {
var thStyles = getColumnFixedStyles(item_th, index_th, rowAndColFixedPosition.value, tableColFixedClasses);
return vue.createVNode("th", {
"key": index_th,
"class": thClassName(item_th, thStyles.classes),
"style": thStyles.style,
"data-colKey": item_th.colKey
}, [vue.createVNode("div", {
"class": (item_th.ellipsisTitle || item_th.ellipsis) && ellipsisClasses.value
}, [renderTitle(context.slots, item_th, index_th)])]);
})])]), vue.createVNode("tbody", {
"class": tbodyClasses.value
}, [renderTableBody()])]), renderLoading && vue.createVNode("div", {
"class": loadingClasses.value
}, [renderLoading])])]);
};
}
});
var Table = withInstall(BaseTable, "TTable");
var TagProps = {
closable: Boolean,
content: {
type: [String, Function]
},
default: {
type: [String, Function]
},
disabled: Boolean,
icon: {
type: Function,
default: void 0
},
maxWidth: {
type: [String, Number]
},
shape: {
type: String,
default: "square",
validator: function validator(val) {
if (!val) return true;
return ["square", "round", "mark"].includes(val);
}
},
size: {
type: String,
default: "medium",
validator: function validator(val) {
if (!val) return true;
return ["small", "medium", "large", "extra-large"].includes(val);
}
},
theme: {
type: String,
default: "default",
validator: function validator(val) {
if (!val) return true;
return ["default", "primary", "warning", "danger", "success"].includes(val);
}
},
variant: {
type: String,
default: "dark",
validator: function validator(val) {
if (!val) return true;
return ["dark", "light", "outline", "light-outline"].includes(val);
}
},
onClick: Function,
onClose: Function
};
var prefix$d = config.prefix;
var _Tag = vue.defineComponent({
name: "".concat(prefix$d, "-tag"),
components: {
CloseIcon: CloseIcon
},
props: TagProps,
emits: ["close", "click"],
setup: function setup(props) {
var tagClass = usePrefixClass("tag");
var renderTNodeJSX = useTNodeJSX();
var renderContent = useContent();
var tagStyle = vue.computed(function () {
return props.maxWidth ? {
maxWidth: typeof props.maxWidth === "number" ? "".concat(props.maxWidth, "px") : props.maxWidth
} : {};
});
var tagClasses = vue.computed(function () {
return ["".concat(tagClass.value), "".concat(tagClass.value, "--").concat(props.theme), "".concat(tagClass.value, "--").concat(props.shape), "".concat(tagClass.value, "--").concat(props.variant), "".concat(tagClass.value, "--").concat(props.size), _defineProperty$3(_defineProperty$3({}, "".concat(tagClass.value, "--closable"), props.closable), "".concat(tagClass.value, "--disabled"), props.disabled)];
});
var handleClose = function handleClose(e) {
e.stopPropagation();
if (!props.disabled) {
var _props$onClose;
(_props$onClose = props.onClose) === null || _props$onClose === void 0 || _props$onClose.call(props, {
e: e
});
}
};
var handleClick = function handleClick(e) {
if (!props.disabled) {
var _props$onClick;
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, {
e: e
});
}
};
return function () {
var tagContent = renderContent("default", "content");
var icon = renderTNodeJSX("icon");
return vue.createVNode("span", {
"class": tagClasses.value,
"style": tagStyle.value,
"aria-disabled": props.disabled,
"role": "button",
"onClick": handleClick
}, [icon && vue.createVNode("span", {
"class": "".concat(tagClass.value, "__icon")
}, [icon]), vue.createVNode("span", {
"class": "".concat(tagClass.value, "__text")
}, [tagContent]), props.closable && vue.createVNode("span", {
"class": "".concat(tagClass.value, "__icon-close"),
"onClick": handleClose
}, [vue.createVNode(vue.resolveComponent("close-icon"), null, null)])]);
};
}
});
var CheckTagProps = {
checked: {
type: Boolean,
default: void 0
},
modelValue: {
type: Boolean,
default: void 0
},
defaultChecked: Boolean,
closable: Boolean,
content: {
type: [String, Number, Array, Function]
},
default: {
type: [String, Function]
},
disabled: Boolean,
icon: {
type: Function
},
shape: {
type: String,
default: "square",
validator: function validator(val) {
if (!val) return true;
return ["square", "round", "mark"].includes(val);
}
},
size: {
type: String,
default: "medium",
validator: function validator(val) {
if (!val) return true;
return ["small", "medium", "large"].includes(val);
}
},
variant: {
type: String,
default: "dark",
validator: function validator(val) {
if (!val) return true;
return ["dark", "light", "outline", "light-outline"].includes(val);
}
},
onChange: Function,
onClick: Function,
onClose: Function
};
var prefix$c = config.prefix;
var _CheckTag = vue.defineComponent({
name: "".concat(prefix$c, "-check-tag"),
props: CheckTagProps,
setup: function setup(props) {
var tagClass = usePrefixClass("tag");
var renderTNodeJSX = useTNodeJSX();
var renderContent = useContent();
var _toRefs = vue.toRefs(props),
checked = _toRefs.checked,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(checked, modelValue, props.defaultChecked, props.onChange, "checked"),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerChecked = _useVModel2[0],
setInnerChecked = _useVModel2[1];
var contentIsArray = vue.computed(function () {
if (Array.isArray(props.content) && props.content.length === 2) {
return true;
}
return false;
});
var tagClasses = vue.computed(function () {
return ["".concat(tagClass.value), "".concat(tagClass.value, "--checkable"), "".concat(tagClass.value, "--").concat(props.shape), "".concat(tagClass.value, "--").concat(innerChecked.value ? "primary" : "default"), "".concat(tagClass.value, "--").concat(props.size), "".concat(tagClass.value, "--").concat(props.variant), _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(tagClass.value, "--closable"), props.closable), "".concat(tagClass.value, "--disabled"), props.disabled), "".concat(tagClass.value, "--checked"), !props.disabled && innerChecked.value)];
});
var handleClick = function handleClick(e) {
if (!props.disabled) {
var _props$onClick;
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, {
e: e
});
setInnerChecked(!innerChecked.value);
}
};
var handleClose = function handleClose(e) {
e.stopPropagation();
if (!props.disabled) {
var _props$onClose;
(_props$onClose = props.onClose) === null || _props$onClose === void 0 || _props$onClose.call(props, {
e: e
});
}
};
return function () {
var icon = renderTNodeJSX("icon");
var readerText = function readerText() {
if (contentIsArray.value) {
return innerChecked.value ? props.content[0] : props.content[1];
}
var content = renderContent("default", "content");
return content;
};
return vue.createVNode("span", {
"class": tagClasses.value,
"aria-disabled": props.disabled,
"role": "button",
"onClick": handleClick
}, [icon && vue.createVNode("span", {
"class": "".concat(tagClass.value, "__icon")
}, [icon]), vue.createVNode("span", {
"class": "".concat(tagClass.value, "__text")
}, [readerText()]), props.closable && vue.createVNode("span", {
"class": "".concat(tagClass.value, "__icon-close"),
"onClick": handleClose
}, [vue.createVNode(CloseIcon, null, null)])]);
};
}
});
var Tag = withInstall(_Tag);
var CheckTag = withInstall(_CheckTag);
var props$7 = {
bgColor: {
type: String,
default: ""
},
borderless: Boolean,
color: {
type: String,
default: ""
},
icon: {
type: String,
default: ""
},
iconSize: {
type: [Number, Object],
default: 40
},
level: {
type: String,
default: "M",
validator: function validator(val) {
if (!val) return true;
return ["L", "M", "Q", "H"].includes(val);
}
},
size: {
type: Number,
default: 160
},
status: {
type: String,
default: "active",
validator: function validator(val) {
if (!val) return true;
return ["active", "expired", "loading", "scanned"].includes(val);
}
},
statusRender: {
type: Function
},
type: {
type: String,
default: "canvas",
validator: function validator(val) {
if (!val) return true;
return ["canvas", "svg"].includes(val);
}
},
value: {
type: String,
default: ""
},
onRefresh: Function
};
var _Mode, _Ecc;
function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0; } }
function _arrayLikeToArray$1(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function appendBits(val, len, bb) {
if (len < 0 || len > 31 || val >>> len !== 0) {
throw new RangeError("Value out of range");
}
for (var i = len - 1; i >= 0; i--) {
bb.push(val >>> i & 1);
}
}
function getBit(x, i) {
return (x >>> i & 1) !== 0;
}
function assert(cond) {
if (!cond) {
throw new Error("Assertion error");
}
}
var Mode = /*#__PURE__*/function () {
function Mode(modeBits, numBitsCharCount) {
_classCallCheck(this, Mode);
_defineProperty$3(this, "modeBits", void 0);
_defineProperty$3(this, "numBitsCharCount", void 0);
this.modeBits = modeBits;
this.numBitsCharCount = numBitsCharCount;
}
return _createClass(Mode, [{
key: "numCharCountBits",
value: function numCharCountBits(ver) {
return this.numBitsCharCount[Math.floor((ver + 7) / 17)];
}
}]);
}();
_Mode = Mode;
_defineProperty$3(Mode, "NUMERIC", new _Mode(1, [10, 12, 14]));
_defineProperty$3(Mode, "ALPHANUMERIC", new _Mode(2, [9, 11, 13]));
_defineProperty$3(Mode, "BYTE", new _Mode(4, [8, 16, 16]));
_defineProperty$3(Mode, "KANJI", new _Mode(8, [8, 10, 12]));
_defineProperty$3(Mode, "ECI", new _Mode(7, [0, 0, 0]));
var Ecc = /*#__PURE__*/_createClass(function Ecc(ordinal, formatBits) {
_classCallCheck(this, Ecc);
_defineProperty$3(this, "ordinal", void 0);
_defineProperty$3(this, "formatBits", void 0);
this.ordinal = ordinal;
this.formatBits = formatBits;
});
_Ecc = Ecc;
_defineProperty$3(Ecc, "LOW", new _Ecc(0, 1));
_defineProperty$3(Ecc, "MEDIUM", new _Ecc(1, 0));
_defineProperty$3(Ecc, "QUARTILE", new _Ecc(2, 3));
_defineProperty$3(Ecc, "HIGH", new _Ecc(3, 2));
var QrSegment = /*#__PURE__*/function () {
function QrSegment(mode, numChars, bitData) {
_classCallCheck(this, QrSegment);
_defineProperty$3(this, "mode", void 0);
_defineProperty$3(this, "numChars", void 0);
_defineProperty$3(this, "bitData", void 0);
this.mode = mode;
this.numChars = numChars;
this.bitData = bitData;
if (numChars < 0) {
throw new RangeError("Invalid argument");
}
this.bitData = bitData.slice();
}
return _createClass(QrSegment, [{
key: "getData",
value: function getData() {
return this.bitData.slice();
}
}], [{
key: "makeBytes",
value: function makeBytes(data) {
var bb = [];
var _iterator = _createForOfIteratorHelper$1(data),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var b = _step.value;
appendBits(b, 8, bb);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
return new QrSegment(Mode.BYTE, data.length, bb);
}
}, {
key: "makeNumeric",
value: function makeNumeric(digits) {
if (!QrSegment.isNumeric(digits)) {
throw new RangeError("String contains non-numeric characters");
}
var bb = [];
for (var i = 0; i < digits.length;) {
var n = Math.min(digits.length - i, 3);
appendBits(parseInt(digits.substring(i, i + n), 10), n * 3 + 1, bb);
i += n;
}
return new QrSegment(Mode.NUMERIC, digits.length, bb);
}
}, {
key: "makeAlphanumeric",
value: function makeAlphanumeric(text) {
if (!QrSegment.isAlphanumeric(text)) {
throw new RangeError("String contains unencodable characters in alphanumeric mode");
}
var bb = [];
var i;
for (i = 0; i + 2 <= text.length; i += 2) {
var temp = QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45;
temp += QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1));
appendBits(temp, 11, bb);
}
if (i < text.length) {
appendBits(QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6, bb);
}
return new QrSegment(Mode.ALPHANUMERIC, text.length, bb);
}
}, {
key: "makeSegments",
value: function makeSegments(text) {
if (text === "") {
return [];
}
if (QrSegment.isNumeric(text)) {
return [QrSegment.makeNumeric(text)];
}
if (QrSegment.isAlphanumeric(text)) {
return [QrSegment.makeAlphanumeric(text)];
}
return [QrSegment.makeBytes(QrSegment.toUtf8ByteArray(text))];
}
}, {
key: "makeEci",
value: function makeEci(assignVal) {
var bb = [];
if (assignVal < 0) {
throw new RangeError("ECI assignment value out of range");
} else if (assignVal < 1 << 7) {
appendBits(assignVal, 8, bb);
} else if (assignVal < 1 << 14) {
appendBits(2, 2, bb);
appendBits(assignVal, 14, bb);
} else if (assignVal < 1e6) {
appendBits(6, 3, bb);
appendBits(assignVal, 21, bb);
} else {
throw new RangeError("ECI assignment value out of range");
}
return new QrSegment(Mode.ECI, 0, bb);
}
}, {
key: "isNumeric",
value: function isNumeric(text) {
return QrSegment.NUMERIC_REGEX.test(text);
}
}, {
key: "isAlphanumeric",
value: function isAlphanumeric(text) {
return QrSegment.ALPHANUMERIC_REGEX.test(text);
}
}, {
key: "getTotalBits",
value: function getTotalBits(segs, version) {
var result = 0;
var _iterator2 = _createForOfIteratorHelper$1(segs),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var seg = _step2.value;
var ccbits = seg.mode.numCharCountBits(version);
if (seg.numChars >= 1 << ccbits) {
return Infinity;
}
result += 4 + ccbits + seg.bitData.length;
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
return result;
}
}, {
key: "toUtf8ByteArray",
value: function toUtf8ByteArray(input) {
var str = encodeURI(input);
var result = [];
for (var i = 0; i < str.length; i++) {
if (str.charAt(i) !== "%") {
result.push(str.charCodeAt(i));
} else {
result.push(parseInt(str.substring(i + 1, i + 3), 16));
i += 2;
}
}
return result;
}
}]);
}();
_defineProperty$3(QrSegment, "NUMERIC_REGEX", /^[0-9]*$/);
_defineProperty$3(QrSegment, "ALPHANUMERIC_REGEX", /^[A-Z0-9 $%*+.\/:-]*$/);
_defineProperty$3(QrSegment, "ALPHANUMERIC_CHARSET", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:");
var QrCode = /*#__PURE__*/function () {
function QrCode(version, errorCorrectionLevel, dataCodewords, oriMsk) {
_classCallCheck(this, QrCode);
_defineProperty$3(this, "size", void 0);
_defineProperty$3(this, "mask", void 0);
_defineProperty$3(this, "modules", []);
_defineProperty$3(this, "isFunction", []);
_defineProperty$3(this, "version", void 0);
_defineProperty$3(this, "errorCorrectionLevel", void 0);
var msk = oriMsk;
this.version = version;
this.errorCorrectionLevel = errorCorrectionLevel;
if (version < QrCode.MIN_VERSION || version > QrCode.MAX_VERSION) {
throw new RangeError("Version value out of range");
}
if (msk < -1 || msk > 7) {
throw new RangeError("Mask value out of range");
}
this.size = version * 4 + 17;
var row = [];
for (var i = 0; i < this.size; i++) {
row.push(false);
}
for (var _i = 0; _i < this.size; _i++) {
this.modules.push(row.slice());
this.isFunction.push(row.slice());
}
this.drawFunctionPatterns();
var allCodewords = this.addEccAndInterleave(dataCodewords);
this.drawCodewords(allCodewords);
if (msk === -1) {
var minPenalty = 1e9;
for (var _i2 = 0; _i2 < 8; _i2++) {
this.applyMask(_i2);
this.drawFormatBits(_i2);
var penalty = this.getPenaltyScore();
if (penalty < minPenalty) {
msk = _i2;
minPenalty = penalty;
}
this.applyMask(_i2);
}
}
assert(msk >= 0 && msk <= 7);
this.mask = msk;
this.applyMask(msk);
this.drawFormatBits(msk);
this.isFunction = [];
}
return _createClass(QrCode, [{
key: "getModule",
value: function getModule(x, y) {
return x >= 0 && x < this.size && y >= 0 && y < this.size && this.modules[y][x];
}
}, {
key: "getModules",
value: function getModules() {
return this.modules;
}
}, {
key: "drawFunctionPatterns",
value: function drawFunctionPatterns() {
for (var i = 0; i < this.size; i++) {
this.setFunctionModule(6, i, i % 2 === 0);
this.setFunctionModule(i, 6, i % 2 === 0);
}
this.drawFinderPattern(3, 3);
this.drawFinderPattern(this.size - 4, 3);
this.drawFinderPattern(3, this.size - 4);
var alignPatPos = this.getAlignmentPatternPositions();
var numAlign = alignPatPos.length;
for (var _i3 = 0; _i3 < numAlign; _i3++) {
for (var j = 0; j < numAlign; j++) {
if (!(_i3 === 0 && j === 0 || _i3 === 0 && j === numAlign - 1 || _i3 === numAlign - 1 && j === 0)) {
this.drawAlignmentPattern(alignPatPos[_i3], alignPatPos[j]);
}
}
}
this.drawFormatBits(0);
this.drawVersion();
}
}, {
key: "drawFormatBits",
value: function drawFormatBits(mask) {
var data = this.errorCorrectionLevel.formatBits << 3 | mask;
var rem = data;
for (var i = 0; i < 10; i++) {
rem = rem << 1 ^ (rem >>> 9) * 1335;
}
var bits = (data << 10 | rem) ^ 21522;
assert(bits >>> 15 === 0);
for (var _i4 = 0; _i4 <= 5; _i4++) {
this.setFunctionModule(8, _i4, getBit(bits, _i4));
}
this.setFunctionModule(8, 7, getBit(bits, 6));
this.setFunctionModule(8, 8, getBit(bits, 7));
this.setFunctionModule(7, 8, getBit(bits, 8));
for (var _i5 = 9; _i5 < 15; _i5++) {
this.setFunctionModule(14 - _i5, 8, getBit(bits, _i5));
}
for (var _i6 = 0; _i6 < 8; _i6++) {
this.setFunctionModule(this.size - 1 - _i6, 8, getBit(bits, _i6));
}
for (var _i7 = 8; _i7 < 15; _i7++) {
this.setFunctionModule(8, this.size - 15 + _i7, getBit(bits, _i7));
}
this.setFunctionModule(8, this.size - 8, true);
}
}, {
key: "drawVersion",
value: function drawVersion() {
if (this.version < 7) {
return;
}
var rem = this.version;
for (var i = 0; i < 12; i++) {
rem = rem << 1 ^ (rem >>> 11) * 7973;
}
var bits = this.version << 12 | rem;
assert(bits >>> 18 === 0);
for (var _i8 = 0; _i8 < 18; _i8++) {
var color = getBit(bits, _i8);
var a = this.size - 11 + _i8 % 3;
var b = Math.floor(_i8 / 3);
this.setFunctionModule(a, b, color);
this.setFunctionModule(b, a, color);
}
}
}, {
key: "drawFinderPattern",
value: function drawFinderPattern(x, y) {
for (var dy = -4; dy <= 4; dy++) {
for (var dx = -4; dx <= 4; dx++) {
var dist = Math.max(Math.abs(dx), Math.abs(dy));
var xx = x + dx;
var yy = y + dy;
if (xx >= 0 && xx < this.size && yy >= 0 && yy < this.size) {
this.setFunctionModule(xx, yy, dist !== 2 && dist !== 4);
}
}
}
}
}, {
key: "drawAlignmentPattern",
value: function drawAlignmentPattern(x, y) {
for (var dy = -2; dy <= 2; dy++) {
for (var dx = -2; dx <= 2; dx++) {
this.setFunctionModule(x + dx, y + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1);
}
}
}
}, {
key: "setFunctionModule",
value: function setFunctionModule(x, y, isDark) {
this.modules[y][x] = isDark;
this.isFunction[y][x] = true;
}
}, {
key: "addEccAndInterleave",
value: function addEccAndInterleave(data) {
var ver = this.version;
var ecl = this.errorCorrectionLevel;
if (data.length !== QrCode.getNumDataCodewords(ver, ecl)) {
throw new RangeError("Invalid argument");
}
var numBlocks = QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver];
var blockEccLen = QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver];
var rawCodewords = Math.floor(QrCode.getNumRawDataModules(ver) / 8);
var numShortBlocks = numBlocks - rawCodewords % numBlocks;
var shortBlockLen = Math.floor(rawCodewords / numBlocks);
var blocks = [];
var rsDiv = QrCode.reedSolomonComputeDivisor(blockEccLen);
for (var i = 0, k = 0; i < numBlocks; i++) {
var dat = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1));
k += dat.length;
var ecc = QrCode.reedSolomonComputeRemainder(dat, rsDiv);
if (i < numShortBlocks) {
dat.push(0);
}
blocks.push(dat.concat(ecc));
}
var result = [];
var _loop = function _loop(_i9) {
blocks.forEach(function (block, j) {
if (_i9 !== shortBlockLen - blockEccLen || j >= numShortBlocks) {
result.push(block[_i9]);
}
});
};
for (var _i9 = 0; _i9 < blocks[0].length; _i9++) {
_loop(_i9);
}
assert(result.length === rawCodewords);
return result;
}
}, {
key: "drawCodewords",
value: function drawCodewords(data) {
if (data.length !== Math.floor(QrCode.getNumRawDataModules(this.version) / 8)) {
throw new RangeError("Invalid argument");
}
var i = 0;
for (var right = this.size - 1; right >= 1; right -= 2) {
if (right === 6) {
right = 5;
}
for (var vert = 0; vert < this.size; vert++) {
for (var j = 0; j < 2; j++) {
var x = right - j;
var upward = (right + 1 & 2) === 0;
var y = upward ? this.size - 1 - vert : vert;
if (!this.isFunction[y][x] && i < data.length * 8) {
this.modules[y][x] = getBit(data[i >>> 3], 7 - (i & 7));
i++;
}
}
}
}
assert(i === data.length * 8);
}
}, {
key: "applyMask",
value: function applyMask(mask) {
if (mask < 0 || mask > 7) {
throw new RangeError("Mask value out of range");
}
for (var y = 0; y < this.size; y++) {
for (var x = 0; x < this.size; x++) {
var invert = void 0;
switch (mask) {
case 0:
invert = (x + y) % 2 === 0;
break;
case 1:
invert = y % 2 === 0;
break;
case 2:
invert = x % 3 === 0;
break;
case 3:
invert = (x + y) % 3 === 0;
break;
case 4:
invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 === 0;
break;
case 5:
invert = x * y % 2 + x * y % 3 === 0;
break;
case 6:
invert = (x * y % 2 + x * y % 3) % 2 === 0;
break;
case 7:
invert = ((x + y) % 2 + x * y % 3) % 2 === 0;
break;
default:
throw new Error("Unreachable");
}
if (!this.isFunction[y][x] && invert) {
this.modules[y][x] = !this.modules[y][x];
}
}
}
}
}, {
key: "getPenaltyScore",
value: function getPenaltyScore() {
var result = 0;
for (var y = 0; y < this.size; y++) {
var runColor = false;
var runX = 0;
var runHistory = [0, 0, 0, 0, 0, 0, 0];
for (var x = 0; x < this.size; x++) {
if (this.modules[y][x] === runColor) {
runX++;
if (runX === 5) {
result += QrCode.PENALTY_N1;
} else if (runX > 5) {
result++;
}
} else {
this.finderPenaltyAddHistory(runX, runHistory);
if (!runColor) {
result += this.finderPenaltyCountPatterns(runHistory) * QrCode.PENALTY_N3;
}
runColor = this.modules[y][x];
runX = 1;
}
}
result += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * QrCode.PENALTY_N3;
}
for (var _x = 0; _x < this.size; _x++) {
var _runColor = false;
var runY = 0;
var _runHistory = [0, 0, 0, 0, 0, 0, 0];
for (var _y = 0; _y < this.size; _y++) {
if (this.modules[_y][_x] === _runColor) {
runY++;
if (runY === 5) {
result += QrCode.PENALTY_N1;
} else if (runY > 5) {
result++;
}
} else {
this.finderPenaltyAddHistory(runY, _runHistory);
if (!_runColor) {
result += this.finderPenaltyCountPatterns(_runHistory) * QrCode.PENALTY_N3;
}
_runColor = this.modules[_y][_x];
runY = 1;
}
}
result += this.finderPenaltyTerminateAndCount(_runColor, runY, _runHistory) * QrCode.PENALTY_N3;
}
for (var _y2 = 0; _y2 < this.size - 1; _y2++) {
for (var _x2 = 0; _x2 < this.size - 1; _x2++) {
var color = this.modules[_y2][_x2];
if (color === this.modules[_y2][_x2 + 1] && color === this.modules[_y2 + 1][_x2] && color === this.modules[_y2 + 1][_x2 + 1]) {
result += QrCode.PENALTY_N2;
}
}
}
var dark = 0;
var _iterator3 = _createForOfIteratorHelper$1(this.modules),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
var row = _step3.value;
dark = row.reduce(function (sum, color) {
return sum + (color ? 1 : 0);
}, dark);
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
var total = this.size * this.size;
var k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;
assert(k >= 0 && k <= 9);
result += k * QrCode.PENALTY_N4;
assert(result >= 0 && result <= 2568888);
return result;
}
}, {
key: "getAlignmentPatternPositions",
value: function getAlignmentPatternPositions() {
if (this.version === 1) {
return [];
}
var numAlign = Math.floor(this.version / 7) + 2;
var step = this.version === 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2;
var result = [6];
for (var pos = this.size - 7; result.length < numAlign; pos -= step) {
result.splice(1, 0, pos);
}
return result;
}
}, {
key: "finderPenaltyCountPatterns",
value: function finderPenaltyCountPatterns(runHistory) {
var n = runHistory[1];
assert(n <= this.size * 3);
var core = n > 0 && runHistory[2] === n && runHistory[3] === n * 3 && runHistory[4] === n && runHistory[5] === n;
return (core && runHistory[0] >= n * 4 && runHistory[6] >= n ? 1 : 0) + (core && runHistory[6] >= n * 4 && runHistory[0] >= n ? 1 : 0);
}
}, {
key: "finderPenaltyTerminateAndCount",
value: function finderPenaltyTerminateAndCount(currentRunColor, oriCurrentRunLength, runHistory) {
var currentRunLength = oriCurrentRunLength;
if (currentRunColor) {
this.finderPenaltyAddHistory(currentRunLength, runHistory);
currentRunLength = 0;
}
currentRunLength += this.size;
this.finderPenaltyAddHistory(currentRunLength, runHistory);
return this.finderPenaltyCountPatterns(runHistory);
}
}, {
key: "finderPenaltyAddHistory",
value: function finderPenaltyAddHistory(oriCurrentRunLength, runHistory) {
var currentRunLength = oriCurrentRunLength;
if (runHistory[0] === 0) {
currentRunLength += this.size;
}
runHistory.pop();
runHistory.unshift(currentRunLength);
}
}], [{
key: "encodeText",
value: function encodeText(text, ecl) {
var segs = QrSegment.makeSegments(text);
return QrCode.encodeSegments(segs, ecl);
}
}, {
key: "encodeBinary",
value: function encodeBinary(data, ecl) {
var seg = QrSegment.makeBytes(data);
return QrCode.encodeSegments([seg], ecl);
}
}, {
key: "encodeSegments",
value: function encodeSegments(segs, oriEcl) {
var minVersion = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
var maxVersion = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 40;
var mask = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;
var boostEcl = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
if (!(QrCode.MIN_VERSION <= minVersion && minVersion <= maxVersion && maxVersion <= QrCode.MAX_VERSION) || mask < -1 || mask > 7) {
throw new RangeError("Invalid value");
}
var version;
var dataUsedBits;
for (version = minVersion;; version++) {
var dataCapacityBits2 = QrCode.getNumDataCodewords(version, oriEcl) * 8;
var usedBits = QrSegment.getTotalBits(segs, version);
if (usedBits <= dataCapacityBits2) {
dataUsedBits = usedBits;
break;
}
if (version >= maxVersion) {
throw new RangeError("Data too long");
}
}
var ecl = oriEcl;
for (var _i0 = 0, _arr = [Ecc.MEDIUM, Ecc.QUARTILE, Ecc.HIGH]; _i0 < _arr.length; _i0++) {
var newEcl = _arr[_i0];
if (boostEcl && dataUsedBits <= QrCode.getNumDataCodewords(version, newEcl) * 8) {
ecl = newEcl;
}
}
var bb = [];
var _iterator4 = _createForOfIteratorHelper$1(segs),
_step4;
try {
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
var seg = _step4.value;
appendBits(seg.mode.modeBits, 4, bb);
appendBits(seg.numChars, seg.mode.numCharCountBits(version), bb);
var _iterator5 = _createForOfIteratorHelper$1(seg.getData()),
_step5;
try {
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
var b = _step5.value;
bb.push(b);
}
} catch (err) {
_iterator5.e(err);
} finally {
_iterator5.f();
}
}
} catch (err) {
_iterator4.e(err);
} finally {
_iterator4.f();
}
assert(bb.length === dataUsedBits);
var dataCapacityBits = QrCode.getNumDataCodewords(version, ecl) * 8;
assert(bb.length <= dataCapacityBits);
appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb);
appendBits(0, (8 - bb.length % 8) % 8, bb);
assert(bb.length % 8 === 0);
for (var padByte = 236; bb.length < dataCapacityBits; padByte ^= 236 ^ 17) {
appendBits(padByte, 8, bb);
}
var dataCodewords = [];
while (dataCodewords.length * 8 < bb.length) {
dataCodewords.push(0);
}
bb.forEach(function (b, i) {
dataCodewords[i >>> 3] |= b << 7 - (i & 7);
});
return new QrCode(version, ecl, dataCodewords, mask);
}
}, {
key: "getNumRawDataModules",
value: function getNumRawDataModules(ver) {
if (ver < QrCode.MIN_VERSION || ver > QrCode.MAX_VERSION) {
throw new RangeError("Version number out of range");
}
var result = (16 * ver + 128) * ver + 64;
if (ver >= 2) {
var numAlign = Math.floor(ver / 7) + 2;
result -= (25 * numAlign - 10) * numAlign - 55;
if (ver >= 7) {
result -= 36;
}
}
assert(result >= 208 && result <= 29648);
return result;
}
}, {
key: "getNumDataCodewords",
value: function getNumDataCodewords(ver, ecl) {
return Math.floor(QrCode.getNumRawDataModules(ver) / 8) - QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] * QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver];
}
}, {
key: "reedSolomonComputeDivisor",
value: function reedSolomonComputeDivisor(degree) {
if (degree < 1 || degree > 255) {
throw new RangeError("Degree out of range");
}
var result = [];
for (var i = 0; i < degree - 1; i++) {
result.push(0);
}
result.push(1);
var root = 1;
for (var _i1 = 0; _i1 < degree; _i1++) {
for (var j = 0; j < result.length; j++) {
result[j] = QrCode.reedSolomonMultiply(result[j], root);
if (j + 1 < result.length) {
result[j] ^= result[j + 1];
}
}
root = QrCode.reedSolomonMultiply(root, 2);
}
return result;
}
}, {
key: "reedSolomonComputeRemainder",
value: function reedSolomonComputeRemainder(data, divisor) {
var result = divisor.map(function () {
return 0;
});
var _iterator6 = _createForOfIteratorHelper$1(data),
_step6;
try {
var _loop2 = function _loop2() {
var b = _step6.value;
var factor = b ^ result.shift();
result.push(0);
divisor.forEach(function (coef, i) {
result[i] ^= QrCode.reedSolomonMultiply(coef, factor);
});
};
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
_loop2();
}
} catch (err) {
_iterator6.e(err);
} finally {
_iterator6.f();
}
return result;
}
}, {
key: "reedSolomonMultiply",
value: function reedSolomonMultiply(x, y) {
if (x >>> 8 !== 0 || y >>> 8 !== 0) {
throw new RangeError("Byte out of range");
}
var z = 0;
for (var i = 7; i >= 0; i--) {
z = z << 1 ^ (z >>> 7) * 285;
z ^= (y >>> i & 1) * x;
}
assert(z >>> 8 === 0);
return z;
}
}]);
}();
_defineProperty$3(QrCode, "MIN_VERSION", 1);
_defineProperty$3(QrCode, "MAX_VERSION", 40);
_defineProperty$3(QrCode, "PENALTY_N1", 3);
_defineProperty$3(QrCode, "PENALTY_N2", 3);
_defineProperty$3(QrCode, "PENALTY_N3", 40);
_defineProperty$3(QrCode, "PENALTY_N4", 10);
_defineProperty$3(QrCode, "ECC_CODEWORDS_PER_BLOCK", [[-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30], [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28], [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30], [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]]);
_defineProperty$3(QrCode, "NUM_ERROR_CORRECTION_BLOCKS", [[-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25], [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49], [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68], [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81]]);
var ERROR_LEVEL_MAP = {
L: Ecc.LOW,
M: Ecc.MEDIUM,
Q: Ecc.QUARTILE,
H: Ecc.HIGH
};
var DEFAULT_FRONT_COLOR = "#000000";
var DEFAULT_NEED_MARGIN = false;
var DEFAULT_MINVERSION = 1;
var SPEC_MARGIN_SIZE = 4;
var DEFAULT_MARGIN_SIZE = 0;
var DEFAULT_IMG_SCALE = 0.1;
var generatePath = function generatePath(modules) {
var margin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var ops = [];
modules.forEach(function (row, y) {
var start = null;
row.forEach(function (cell, x) {
if (!cell && start !== null) {
ops.push("M".concat(start + margin, " ").concat(y + margin, "h").concat(x - start, "v1H").concat(start + margin, "z"));
start = null;
return;
}
if (x === row.length - 1) {
if (!cell) {
return;
}
if (start === null) {
ops.push("M".concat(x + margin, ",").concat(y + margin, " h1v1H").concat(x + margin, "z"));
} else {
ops.push("M".concat(start + margin, ",").concat(y + margin, " h").concat(x + 1 - start, "v1H").concat(start + margin, "z"));
}
return;
}
if (cell && start === null) {
start = x;
}
});
});
return ops.join("");
};
var excavateModules = function excavateModules(modules, excavation) {
return modules.slice().map(function (row, y) {
if (y < excavation.y || y >= excavation.y + excavation.h) {
return row;
}
return row.map(function (cell, x) {
if (x < excavation.x || x >= excavation.x + excavation.w) {
return cell;
}
return false;
});
});
};
var getImageSettings = function getImageSettings(cells, size, margin, imageSettings) {
if (imageSettings == null) {
return null;
}
var numCells = cells.length + margin * 2;
var defaultSize = Math.floor(size * DEFAULT_IMG_SCALE);
var scale = numCells / size;
var w = (imageSettings.width || defaultSize) * scale;
var h = (imageSettings.height || defaultSize) * scale;
var x = imageSettings.x == null ? cells.length / 2 - w / 2 : imageSettings.x * scale;
var y = imageSettings.y == null ? cells.length / 2 - h / 2 : imageSettings.y * scale;
var opacity = imageSettings.opacity == null ? 1 : imageSettings.opacity;
var excavation = null;
if (imageSettings.excavate) {
var floorX = Math.floor(x);
var floorY = Math.floor(y);
var ceilW = Math.ceil(w + x - floorX);
var ceilH = Math.ceil(h + y - floorY);
excavation = {
x: floorX,
y: floorY,
w: ceilW,
h: ceilH
};
}
var crossOrigin = imageSettings.crossOrigin;
return {
x: x,
y: y,
h: h,
w: w,
excavation: excavation,
opacity: opacity,
crossOrigin: crossOrigin
};
};
var getMarginSize = function getMarginSize(needMargin, marginSize) {
if (marginSize != null) {
return Math.max(Math.floor(marginSize), 0);
}
return needMargin ? SPEC_MARGIN_SIZE : DEFAULT_MARGIN_SIZE;
};
var isSupportPath2d = function () {
try {
new Path2D().addPath(new Path2D());
} catch (_unused) {
return false;
}
return true;
}();
var QRCodeSubComponentProps = {
value: {
type: String,
default: ""
},
size: {
type: Number,
default: 128
},
level: {
type: String,
default: "L"
},
bgColor: {
type: String,
default: "#FFFFFF"
},
fgColor: {
type: String,
default: "#000000"
},
style: {
type: Object,
default: function _default() {
return {};
}
},
includeMargin: {
type: Boolean,
default: false
},
marginSize: {
type: Number,
default: 0
},
imageSettings: {
type: Object,
default: function _default() {
return {};
}
},
title: {
type: String,
default: ""
},
minVersion: {
type: Number,
default: 1
}
};
var QRCodeStatusProps = {
locale: {
type: Object,
default: function _default() {
return {};
}
},
classPrefix: {
type: String,
default: "t"
},
onRefresh: {
type: Function
},
statusRender: {
type: Function
},
status: {
type: String,
default: "active"
}
};
var useQRCode = function useQRCode(opt) {
var value = opt.value,
level = opt.level,
minVersion = opt.minVersion,
includeMargin = opt.includeMargin,
marginSize = opt.marginSize,
imageSettings = opt.imageSettings,
size = opt.size;
var memoizedQrcode = vue.computed(function () {
var segments = QrSegment.makeSegments(value);
return QrCode.encodeSegments(segments, ERROR_LEVEL_MAP[level], minVersion);
});
var cs = vue.computed(function () {
return memoizedQrcode.value.getModules();
});
var mg = vue.computed(function () {
return getMarginSize(includeMargin, marginSize);
});
var cis = vue.computed(function () {
return getImageSettings(cs.value, size, mg.value, imageSettings);
});
return {
cells: cs,
margin: mg,
numCells: vue.computed(function () {
return cs.value.length + mg.value * 2;
}),
calculatedImageSettings: cis,
qrcode: memoizedQrcode
};
};
var QRCodeCanvas = vue.defineComponent({
name: "QRCodeCanvas",
props: QRCodeSubComponentProps,
setup: function setup(props) {
var imgSrc = vue.computed(function () {
var _props$imageSettings;
return (_props$imageSettings = props.imageSettings) === null || _props$imageSettings === void 0 ? void 0 : _props$imageSettings.src;
});
var imageRef = vue.ref(null);
var canvasRef = vue.ref(null);
var imgCrossOrigin = vue.ref("");
var renderQRCode = function renderQRCode() {
var _calculatedImageSetti;
var _useQRCode = useQRCode({
value: props.value,
level: props.level,
minVersion: DEFAULT_MINVERSION,
includeMargin: DEFAULT_NEED_MARGIN,
marginSize: props.marginSize,
imageSettings: props.imageSettings,
size: props.size
}),
margin = _useQRCode.margin,
cells = _useQRCode.cells,
numCells = _useQRCode.numCells,
calculatedImageSettings = _useQRCode.calculatedImageSettings;
if (!canvasRef.value) {
return;
}
var canvas = canvasRef.value;
var ctx = canvas.getContext("2d");
if (!ctx) {
return;
}
imgCrossOrigin.value = (_calculatedImageSetti = calculatedImageSettings.value) === null || _calculatedImageSetti === void 0 ? void 0 : _calculatedImageSetti.crossOrigin;
var cellsToDraw = cells;
var image = imageRef.value;
if (image) {
image.crossOrigin = calculatedImageSettings.value.crossOrigin;
}
var haveImageToRender = calculatedImageSettings.value && image !== null && image.complete && image.naturalHeight !== 0 && image.naturalWidth !== 0;
if (haveImageToRender && calculatedImageSettings.value.excavation != null) {
cellsToDraw = vue.computed(function () {
return excavateModules(cells.value, calculatedImageSettings.value.excavation);
});
}
var pixelRatio = window.devicePixelRatio || 1;
canvas.height = props.size * pixelRatio;
canvas.width = props.size * pixelRatio;
var scale = props.size / numCells.value * pixelRatio;
ctx.scale(scale, scale);
ctx.fillStyle = props.bgColor;
ctx.fillRect(0, 0, numCells.value, numCells.value);
ctx.fillStyle = props.fgColor;
if (isSupportPath2d) {
ctx.fill(new Path2D(generatePath(cellsToDraw.value, margin.value)));
} else {
cells.value.forEach(function (row, rdx) {
row.forEach(function (cell, cdx) {
if (cell) {
ctx.fillRect(cdx + margin.value, rdx + margin.value, 1, 1);
}
});
});
}
if (calculatedImageSettings) {
ctx.globalAlpha = calculatedImageSettings.value.opacity;
}
if (haveImageToRender) {
ctx.globalAlpha = calculatedImageSettings.value.opacity;
ctx.drawImage(image, calculatedImageSettings.value.x + margin.value, calculatedImageSettings.value.y + margin.value, calculatedImageSettings.value.w, calculatedImageSettings.value.h);
}
};
vue.watchEffect(function () {
renderQRCode();
});
vue.onMounted(function () {
renderQRCode();
});
return function () {
return vue.createVNode(vue.Fragment, null, [vue.createVNode("canvas", {
"ref": canvasRef,
"role": "img"
}, null), imgSrc.value != null ? vue.createVNode("img", {
"ref": imageRef,
"onLoad": renderQRCode,
"style": {
display: "none"
},
"src": imgSrc.value
}, null) : null]);
};
}
});
var QRCodeSVG = vue.defineComponent({
name: "QRCodeSVG",
props: QRCodeSubComponentProps,
setup: function setup(props) {
var _useQRCode = useQRCode({
value: props.value,
level: props.level,
minVersion: DEFAULT_MINVERSION,
includeMargin: DEFAULT_NEED_MARGIN,
marginSize: props.marginSize,
imageSettings: props.imageSettings,
size: props.size
}),
margin = _useQRCode.margin,
cells = _useQRCode.cells,
numCells = _useQRCode.numCells,
calculatedImageSettings = _useQRCode.calculatedImageSettings;
var cellsToDraw = vue.computed(function () {
var _calculatedImageSetti;
if (props.imageSettings && ((_calculatedImageSetti = calculatedImageSettings.value) === null || _calculatedImageSetti === void 0 ? void 0 : _calculatedImageSetti.excavation) != null) {
return excavateModules(cells.value, calculatedImageSettings.value.excavation);
}
return cells.value;
});
var imageNode = vue.computed(function () {
if (!props.imageSettings || !calculatedImageSettings.value) return null;
return vue.createVNode("image", {
"href": props.imageSettings.src,
"height": calculatedImageSettings.value.h,
"width": calculatedImageSettings.value.w,
"x": calculatedImageSettings.value.x + margin.value,
"y": calculatedImageSettings.value.y + margin.value,
"cross-origin": calculatedImageSettings.value.crossOrigin
}, null);
});
return function () {
var fgPath = generatePath(cellsToDraw.value, margin.value);
return vue.createVNode("svg", {
"height": props.size,
"width": props.size,
"viewBox": "0 0 ".concat(numCells.value, " ").concat(numCells.value),
"role": "img",
"style": props.style
}, [!!props.title && vue.createVNode("title", null, [props.title]), vue.createVNode("path", {
"fill": props.bgColor,
"d": "M0,0 h".concat(numCells.value, "v").concat(numCells.value, "H0z"),
"shape-rendering": "crispEdges"
}, null), vue.createVNode("path", {
"fill": props.fgColor,
"d": fgPath,
"shape-rendering": "crispEdges"
}, null), imageNode.value]);
};
}
});
var QRcodeStatus = vue.defineComponent({
name: "QRCodeStatus",
props: QRCodeStatusProps,
setup: function setup(props) {
var _locale$value3;
var _toRefs = vue.toRefs(props),
classPrefix = _toRefs.classPrefix,
locale = _toRefs.locale,
status = _toRefs.status;
var defaultSpin = vue.createVNode(Loading, {
"size": "32px"
}, null);
var defaultExpiredNode = vue.computed(function () {
var _locale$value, _locale$value2;
return vue.createVNode(vue.Fragment, null, [vue.createVNode("p", {
"class": "".concat(classPrefix.value, "-expired__text")
}, [(_locale$value = locale.value) === null || _locale$value === void 0 ? void 0 : _locale$value.expiredText]), (props === null || props === void 0 ? void 0 : props.onRefresh) && vue.createVNode("p", {
"class": "".concat(classPrefix.value, "-expired__button"),
"onClick": props === null || props === void 0 ? void 0 : props.onRefresh
}, [vue.createVNode(RefreshIcon, {
"size": "16"
}, null), (_locale$value2 = locale.value) === null || _locale$value2 === void 0 ? void 0 : _locale$value2.refreshText])]);
});
var defaultScannedNode = vue.createVNode("p", {
"class": "".concat(classPrefix.value, "-scanned")
}, [vue.createVNode(CheckCircleFilledIcon, {
"size": "16",
"class": "".concat(classPrefix.value, "-scanned__icon")
}, null), (_locale$value3 = locale.value) === null || _locale$value3 === void 0 ? void 0 : _locale$value3.scannedText]);
var defaultNodes = vue.computed(function () {
return {
expired: defaultExpiredNode.value,
loading: defaultSpin,
scanned: defaultScannedNode,
active: null
};
});
var renderStatus = function renderStatus(info) {
return defaultNodes.value[info.status];
};
return function () {
return vue.createVNode(vue.Fragment, null, [props.statusRender || renderStatus({
status: status.value,
onRefresh: props.onRefresh
})]);
};
}
});
var _QRCode = vue.defineComponent({
name: "TQRCode",
props: props$7,
setup: function setup(props2) {
var classPrefix = usePrefixClass();
var renderTNodeJSX = useTNodeJSX();
var _useConfig = useConfig("qrcode"),
globalConfig = _useConfig.globalConfig;
var _useVariables = useVariables({
themeFgColor: "--td-text-color-primary",
themeBgColor: "--td-bg-color-specialcomponent"
}),
themeFgColor = _useVariables.themeFgColor,
themeBgColor = _useVariables.themeBgColor;
var finalBgColor = vue.computed(function () {
return props2.bgColor || themeBgColor.value || "transparent";
});
var finalFgColor = vue.computed(function () {
return props2.color || themeFgColor.value || DEFAULT_FRONT_COLOR;
});
if (!props2.value) {
return null;
}
var imageSettings = vue.computed(function () {
var _props2$iconSize$heig, _props2$iconSize, _props2$iconSize$widt, _props2$iconSize2;
return {
src: props2.icon,
x: void 0,
y: void 0,
height: isNumber(props2.iconSize) ? props2.iconSize : (_props2$iconSize$heig = (_props2$iconSize = props2.iconSize) === null || _props2$iconSize === void 0 ? void 0 : _props2$iconSize.height) !== null && _props2$iconSize$heig !== void 0 ? _props2$iconSize$heig : 40,
width: isNumber(props2.iconSize) ? props2.iconSize : (_props2$iconSize$widt = (_props2$iconSize2 = props2.iconSize) === null || _props2$iconSize2 === void 0 ? void 0 : _props2$iconSize2.width) !== null && _props2$iconSize$widt !== void 0 ? _props2$iconSize$widt : 40,
excavate: true,
crossOrigin: "anonymous"
};
});
var classes = vue.computed(function () {
return ["".concat(classPrefix.value, "-qrcode"), _defineProperty$3(_defineProperty$3({}, "".concat(classPrefix.value, "-borderless"), props2.borderless), "".concat(classPrefix.value, "-qrcode-svg"), props2.type === "svg")];
});
var mergedStyle = vue.computed(function () {
return {
backgroundColor: finalBgColor.value,
width: "".concat(props2.size, "px"),
height: "".concat(props2.size, "px")
};
});
return function () {
var QRCodeProps = {
value: props2.value,
size: props2.size,
bgColor: finalBgColor.value,
fgColor: finalFgColor.value,
imageSettings: props2.icon ? imageSettings.value : void 0,
level: props2.level
};
return vue.createVNode("div", vue.mergeProps({
"class": classes.value,
"style": mergedStyle.value
}, {
level: props2.level
}), [props2.status !== "active" && vue.createVNode("div", {
"class": ["".concat(classPrefix.value, "-mask"), _defineProperty$3({}, "".concat(classPrefix.value, "-").concat(props2.status), props2.status !== "loading")]
}, [vue.createVNode(QRcodeStatus, {
"classPrefix": classPrefix.value,
"locale": globalConfig.value,
"status": props2.status,
"onRefresh": props2.onRefresh,
"statusRender": renderTNodeJSX("statusRender", {
params: {
status: props2.status,
onRefresh: props2.onRefresh
}
})
}, null)]), props2.type === "canvas" ? vue.createVNode(QRCodeCanvas, vue.mergeProps(QRCodeProps, {
"size": props2.size
}), null) : vue.createVNode(QRCodeSVG, vue.mergeProps(QRCodeProps, {
"size": props2.size
}), null)]);
};
}
});
var QRCode = withInstall(_QRCode, "TQrcode");
function _isSlot$5(s) {
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
}
var TActionSheetGrid = vue.defineComponent({
props: {
items: {
type: Array,
required: true
},
count: {
type: Number,
default: 8
},
selected: {
type: Function,
default: void 0
}
},
emits: ["selected"],
setup: function setup(props, _ref) {
var emit = _ref.emit;
var actionSheetClass = usePrefixClass("action-sheet");
var gridColumn = vue.computed(function () {
return Math.ceil(props.count / 2);
});
var pageNum = vue.computed(function () {
return Math.ceil(props.items.length / props.count);
});
var actionItems = vue.computed(function () {
var res = [];
for (var i = 0; i < pageNum.value; i++) {
var temp = props.items.slice(i * props.count, (i + 1) * props.count);
res.push(temp);
}
return res;
});
var gridClasses = vue.computed(function () {
return _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(actionSheetClass.value, "__grid"), true), "".concat(actionSheetClass.value, "__grid--swiper"), pageNum.value > 1), "".concat(actionSheetClass.value, "__dots"), pageNum.value > 1);
});
var handleSelected = function handleSelected(i) {
emit("selected", i);
};
return function () {
var swiper = function swiper() {
var swiperItems = actionItems.value.map(function (items, i) {
var gridItems = items.map(function (item, index) {
return vue.createVNode(GridItem, {
"key": index,
"text": item.label,
"description": item.description,
"image": item.icon,
"badge": item.badge,
"onClick": function onClick(event) {
event.preventDefault();
handleSelected(i * props.count + index);
}
}, null);
});
return vue.createVNode(SwiperItem, {
"key": i
}, {
default: function _default() {
return [vue.createVNode(Grid, {
"column": gridColumn.value
}, _isSlot$5(gridItems) ? gridItems : {
default: function _default() {
return [gridItems];
}
})];
}
});
});
if (actionItems.value.length > 1) {
return vue.createVNode(Swiper, {
"autoplay": false,
"pagination-position": "bottom",
"navigation": {
type: "dots",
showControls: false
},
"loop": false,
"class": "".concat(actionSheetClass.value, "__swiper-wrap"),
"height": 192
}, _isSlot$5(swiperItems) ? swiperItems : {
default: function _default() {
return [swiperItems];
}
});
}
return null;
};
var grid = function grid() {
if (actionItems.value.length === 1) {
var items = actionItems.value[0].map(function (item, index) {
return vue.createVNode(GridItem, {
"key": index,
"text": item.label,
"description": item.description,
"image": item.icon,
"badge": item.badge,
"onClick": function onClick() {
return handleSelected(index);
}
}, null);
});
return vue.createVNode(Grid, {
"column": gridColumn.value
}, _isSlot$5(items) ? items : {
default: function _default() {
return [items];
}
});
}
return null;
};
return vue.createVNode("div", {
"class": gridClasses.value
}, [swiper(), grid()]);
};
}
});
function _isSlot$4(s) {
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
}
var TActionSheetList = vue.defineComponent({
props: {
items: {
type: Array,
required: true
}
},
emits: ["selected"],
setup: function setup(props, _ref) {
var emit = _ref.emit;
var actionSheetClass = usePrefixClass("action-sheet");
var renderTNodeJSX = useTNodeDefault();
var _toRefs = vue.toRefs(props),
items = _toRefs.items;
var handleSelected = function handleSelected(index) {
emit("selected", index);
};
var itemClasses = vue.computed(function () {
return _defineProperty$3({}, "".concat(actionSheetClass.value, "__list-item"), true);
});
var renderTNode = function renderTNode(node) {
if (!node) return null;
if (typeof node === "function") {
return node(vue.h);
}
return node;
};
return function () {
var renderButtonNode = function renderButtonNode() {
var renderContent = function renderContent(item) {
var renderLabel = function renderLabel() {
if (item.badge) {
if (item.badge.dot || item.badge.count) {
return vue.createVNode(Badge, {
"count": item.badge.count,
"max-count": item.badge.maxCount || 99,
"dot": item.badge.dot,
"content": item.badge.content,
"size": item.badge.size,
"offset": item.badge.offset
}, {
default: function _default() {
return [vue.createVNode("span", {
"class": "".concat(actionSheetClass.value, "__list-item-text")
}, [" ", item.label])];
}
});
}
return renderTNodeJSX("badge", {
defaultNode: vue.createVNode("span", {
"class": "".concat(actionSheetClass.value, "__list-item-text")
}, [item.label])
});
}
return vue.createVNode("span", {
"class": "".concat(actionSheetClass.value, "__list-item-text")
}, [item.label]);
};
var iconContent = renderTNode(item.icon);
var suffixIconContent = renderTNode(item.suffixIcon);
return vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
"class": "".concat(actionSheetClass.value, "__list-item-content")
}, [iconContent && vue.createVNode("span", {
"class": "".concat(actionSheetClass.value, "__list-item-icon")
}, [iconContent]), renderLabel(), suffixIconContent && vue.createVNode("span", {
"class": "".concat(actionSheetClass.value, "__list-item-icon ").concat(actionSheetClass.value, "__list-item-icon--suffix")
}, [suffixIconContent])]), item.description && vue.createVNode("div", {
"class": "".concat(actionSheetClass.value, "__list-item-desc")
}, [item.description])]);
};
var buttonList = items.value.map(function (item, index) {
var _slot;
return vue.createVNode(Button, {
"key": index,
"variant": "text",
"block": true,
"class": [itemClasses.value, _defineProperty$3({}, "".concat(actionSheetClass.value, "__list-item--disabled"), item.disabled)],
"disabled": item.disabled,
"style": {
color: item.color
},
"onClick": function onClick() {
return handleSelected(index);
}
}, _isSlot$4(_slot = renderContent(item)) ? _slot : {
default: function _default() {
return [_slot];
}
});
});
return buttonList;
};
return vue.createVNode("div", {
"class": "".concat(actionSheetClass.value, "__list")
}, [renderButtonNode()]);
};
}
});
var props$6 = {
align: {
type: String,
default: "center",
validator: function validator(val) {
if (!val) return true;
return ["center", "left"].includes(val);
}
},
cancelText: {
type: String,
default: ""
},
count: {
type: Number,
default: 8
},
description: {
type: String,
default: ""
},
items: {
type: Array
},
popupProps: {
type: Object,
default: function _default() {
return {};
}
},
showCancel: {
type: Boolean,
default: true
},
showOverlay: {
type: Boolean,
default: true
},
theme: {
type: String,
default: "list",
validator: function validator(val) {
if (!val) return true;
return ["list", "grid"].includes(val);
}
},
visible: {
type: Boolean,
default: void 0
},
modelValue: {
type: Boolean,
default: void 0
},
defaultVisible: Boolean,
onCancel: Function,
onClose: Function,
onSelected: Function
};
function _isSlot$3(s) {
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
}
var prefix$b = config.prefix;
var ActionSheetVue = vue.defineComponent({
name: "".concat(prefix$b, "-action-sheet"),
props: props$6,
emits: ["selected", "update:modelValue", "cancel", "close", "update:visible"],
setup: function setup(props2, context) {
var actionSheetClass = usePrefixClass("action-sheet");
var _useConfig = useConfig("actionSheet"),
globalConfig = _useConfig.globalConfig;
var actionItems = vue.computed(function () {
return props2.items.map(function (item) {
if (typeof item === "string") {
return {
label: item
};
}
return item;
});
});
var _toRefs = vue.toRefs(props2),
visible = _toRefs.visible,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(visible, modelValue, props2.defaultVisible, function () {}, "visible"),
_useVModel2 = _slicedToArray(_useVModel, 1),
currentVisible = _useVModel2[0];
var rootClasses = vue.computed(function () {
return ["".concat(actionSheetClass.value), "".concat(actionSheetClass.value, "--").concat(props2.theme), "".concat(actionSheetClass.value, "--").concat(props2.align), _defineProperty$3({}, "".concat(actionSheetClass.value, "--no-description"), !props2.description)];
});
var hide = function hide(trigger) {
var _props2$onClose;
context.emit("update:modelValue", false);
(_props2$onClose = props2.onClose) === null || _props2$onClose === void 0 || _props2$onClose.call(props2, {
trigger: trigger
});
};
var handleCancel = function handleCancel() {
var _props2$onCancel;
(_props2$onCancel = props2.onCancel) === null || _props2$onCancel === void 0 || _props2$onCancel.call(props2);
context.emit("update:modelValue", false);
};
var handleSelected = function handleSelected(index) {
var _props2$onSelected;
(_props2$onSelected = props2.onSelected) === null || _props2$onSelected === void 0 || _props2$onSelected.call(props2, props2 === null || props2 === void 0 ? void 0 : props2.items[index], index);
hide("selected");
};
var handleClose = function handleClose() {
hide("overlay");
};
return function () {
var _slot;
var root = function root() {
var description = function description() {
if (props2.description) {
return vue.createVNode("p", {
"class": "".concat(actionSheetClass.value, "__description")
}, [props2.description]);
}
return null;
};
var list = function list() {
if (props2.theme === "list") {
return vue.createVNode(TActionSheetList, {
"items": actionItems.value,
"onSelected": handleSelected
}, null);
}
};
var grid = function grid() {
if (props2.theme === "grid") {
return vue.createVNode(TActionSheetGrid, {
"items": actionItems.value,
"count": props2.count,
"onSelected": handleSelected
}, null);
}
};
var cancel = function cancel() {
if (props2.showCancel) {
return vue.createVNode("div", {
"class": "".concat(actionSheetClass.value, "__footer")
}, [vue.createVNode("div", {
"class": "".concat(actionSheetClass.value, "__gap-").concat(props2.theme)
}, null), vue.createVNode(Button, {
"class": "".concat(actionSheetClass.value, "__cancel"),
"variant": "text",
"block": true,
"onClick": handleCancel
}, {
default: function _default() {
return [props2.cancelText || globalConfig.value.cancel];
}
})]);
}
};
return vue.createVNode("div", {
"class": "".concat(actionSheetClass.value, "__content")
}, [description(), list(), grid(), cancel()]);
};
return vue.createVNode(Popup, vue.mergeProps(props2.popupProps, {
"visible": currentVisible.value,
"placement": "bottom",
"destroy-on-close": true,
"class": rootClasses.value,
"onClose": handleClose,
"showOverlay": props2.showOverlay
}), _isSlot$3(_slot = root()) ? _slot : {
default: function _default() {
return [_slot];
}
});
};
}
});
function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var instance$1 = null;
var app$1;
function create$2(props) {
if (!isBrowser$1) return;
var root = document.createElement("div");
document.body.appendChild(root);
var visible = vue.ref(false);
var propsObject = _objectSpread$a({
visible: visible
}, props);
if (instance$1) {
instance$1.clear();
}
instance$1 = ActionSheetVue;
instance$1.clear = function (trigger) {
app$1.unmount();
root.remove();
if (propsObject.onClose && trigger && trigger.trigger !== "overlay") {
propsObject.onClose(trigger);
}
instance$1 = null;
};
app$1 = vue.createApp(instance$1, _objectSpread$a({}, propsObject));
app$1.mount(root);
vue.nextTick(function () {
visible.value = true;
});
return instance$1;
}
function ActionSheet(props) {
create$2(props);
}
ActionSheet.close = function (trigger) {
if (instance$1) {
instance$1.clear(trigger);
}
};
ActionSheet.show = function (props) {
create$2(props);
};
ActionSheet.install = function (app2) {
var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
app2.component(name || ActionSheetVue.name, ActionSheetVue);
};
var _ActionSheet = ActionSheet;
var props$5 = {
actions: {
type: [Array, Function]
},
buttonLayout: {
type: String,
default: "horizontal",
validator: function validator(val) {
if (!val) return true;
return ["horizontal", "vertical"].includes(val);
}
},
cancelBtn: {
type: [String, Object, Function]
},
closeBtn: Boolean,
closeOnOverlayClick: Boolean,
confirmBtn: {
type: [String, Object, Function]
},
content: {
type: [String, Function]
},
destroyOnClose: Boolean,
middle: {
type: Function
},
overlayProps: {
type: Object,
default: function _default() {
return {};
}
},
preventScrollThrough: {
type: Boolean,
default: true
},
showOverlay: {
type: Boolean,
default: true
},
title: {
type: [String, Function]
},
top: {
type: Function
},
visible: Boolean,
width: {
type: [String, Number]
},
zIndex: {
type: Number
},
onCancel: Function,
onClose: Function,
onClosed: Function,
onConfirm: Function,
onOverlayClick: Function
};
function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$a = config.prefix;
var Dialog = vue.defineComponent({
name: "".concat(prefix$a, "-dialog"),
props: props$5,
emits: ["update:visible", "confirm", "overlay-click", "cancel", "close", "closed"],
setup: function setup(props2, context) {
var dialogClass = usePrefixClass("dialog");
var renderTNodeJSX = useTNodeJSX();
var renderContent = useContent();
var isTextStyleBtn = vue.computed(function () {
return [props2 === null || props2 === void 0 ? void 0 : props2.confirmBtn, props2 === null || props2 === void 0 ? void 0 : props2.cancelBtn].concat(_toConsumableArray((props2 === null || props2 === void 0 ? void 0 : props2.actions) || [])).some(function (item) {
return get(item, "variant") === "text";
});
});
var footerClass = vue.computed(function () {
return ["".concat(dialogClass.value, "__footer"), _defineProperty$3(_defineProperty$3({}, "".concat(dialogClass.value, "__footer--column"), props2.buttonLayout === "vertical"), "".concat(dialogClass.value, "__footer--full"), isTextStyleBtn.value && get(props2.actions, "length", 0) === 0)];
});
var buttonClass = vue.computed(function () {
return ["".concat(dialogClass.value, "__button"), _defineProperty$3(_defineProperty$3({}, "".concat(dialogClass.value, "__button--").concat(props2.buttonLayout), !isTextStyleBtn.value), "".concat(dialogClass.value, "__button--text"), isTextStyleBtn.value)];
});
var rootStyles = vue.computed(function () {
return {
width: isString(props2.width) ? props2.width : "".concat(props2.width, "px")
};
});
var handleClose = function handleClose(args) {
var e = args.e;
context.emit("update:visible", false);
context.emit("close", {
e: e,
trigger: "close-btn"
});
};
var handleClosed = function handleClosed() {
context.emit("closed");
};
var handleConfirm = function handleConfirm(e) {
var _context$emit;
context.emit("update:visible", false);
(_context$emit = context.emit) === null || _context$emit === void 0 || _context$emit.call(context, "confirm", {
e: e
});
};
var handleCancel = function handleCancel(e) {
context.emit("update:visible", false);
context.emit("close", {
e: e,
trigger: "cancel"
});
context.emit("cancel", {
e: e
});
};
var handleOverlayClick = function handleOverlayClick(args) {
var e = args.e;
if (!props2.closeOnOverlayClick) {
return;
}
context.emit("update:visible", false);
context.emit("close", {
e: e,
trigger: "overlay"
});
context.emit("overlay-click", {
e: e
});
};
var calcBtn = function calcBtn(btn) {
if (isString(btn)) {
return {
content: btn
};
}
if (isObject$1(btn)) {
return btn;
}
return {};
};
var confirmBtnProps = vue.computed(function () {
return _objectSpread$9({
theme: "primary"
}, calcBtn(props2.confirmBtn));
});
var cancelBtnProps = vue.computed(function () {
return _objectSpread$9({
theme: isTextStyleBtn.value ? "default" : "light"
}, calcBtn(props2.cancelBtn));
});
var actionsBtnProps = vue.computed(function () {
var _props2$actions;
return (_props2$actions = props2.actions) === null || _props2$actions === void 0 ? void 0 : _props2$actions.map(function (item) {
return calcBtn(item);
});
});
var renderButtonNode = function renderButtonNode(btnType, btnProps, handleClick) {
if (actionsBtnProps.value) return null;
var btnNode = renderTNodeJSX(btnType);
if (!btnNode) return null;
if (context.slots[btnType]) {
return btnNode;
}
return vue.createVNode(Button, vue.mergeProps(btnProps, {
"class": buttonClass.value,
"onClick": handleClick
}), null);
};
return function () {
var renderTitleNode = function renderTitleNode() {
var titleNode = renderTNodeJSX("title");
if (!titleNode) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(dialogClass.value, "__header")
}, [titleNode]);
};
var renderContentNode = function renderContentNode() {
var contentNode = renderContent("default", "content");
if (!contentNode) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(dialogClass.value, "__body")
}, [vue.createVNode("div", {
"class": "".concat(dialogClass.value, "__body-text")
}, [contentNode])]);
};
var renderActionsNode = function renderActionsNode() {
if (actionsBtnProps.value) {
return actionsBtnProps.value.map(function (item, index) {
return vue.createVNode(Button, vue.mergeProps({
"key": index
}, item, {
"class": buttonClass.value,
"onClick": handleCancel
}), null);
});
}
return renderTNodeJSX("actions");
};
var renderCancelBtnNode = function renderCancelBtnNode() {
return renderButtonNode("cancelBtn", cancelBtnProps.value, handleCancel);
};
var renderConfirmBtnNode = function renderConfirmBtnNode() {
return renderButtonNode("confirmBtn", confirmBtnProps.value, handleConfirm);
};
return vue.createVNode(Popup, {
"class": "".concat(dialogClass.value, "__wrapper"),
"visible": props2.visible,
"placement": "center",
"show-overlay": props2.showOverlay,
"overlay-props": props2.overlayProps,
"prevent-scroll-through": props2.preventScrollThrough,
"destroy-on-close": props2.destroyOnClose,
"z-index": props2.zIndex,
"onClose": handleOverlayClick,
"onClosed": handleClosed
}, {
default: function _default() {
return [vue.createVNode("div", {
"class": "".concat(dialogClass.value, " ").concat(context.attrs.class || ""),
"style": rootStyles.value
}, [renderTNodeJSX("top"), props2.closeBtn && vue.createVNode("div", {
"class": "".concat(dialogClass.value, "__close-btn")
}, [vue.createVNode(CloseIcon, {
"onClick": handleClose
}, null)]), vue.createVNode("div", {
"class": "".concat(dialogClass.value, "__content")
}, [renderTitleNode(), renderContentNode()]), renderTNodeJSX("middle"), vue.createVNode("div", {
"class": footerClass.value
}, [renderActionsNode(), renderCancelBtnNode(), renderConfirmBtnNode()])])];
}
});
};
}
});
function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var DialogPropsDefault = {
title: "",
content: "",
confirmBtn: "",
cancelBtn: "",
visible: false,
zIndex: 2500,
showOverlay: true,
width: "320px",
closeOnOverlayClick: false
};
var propsFn = ["onConfirm", "onCancel", "onOverlayClick", "onClose", "onClosed"];
function create$1(options) {
if (!isBrowser$1) return;
var root = document.createElement("div");
document.body.appendChild(root);
var props = vue.ref({});
var propsObject = _objectSpread$8(_objectSpread$8({}, DialogPropsDefault), typeof options === "string" ? {
content: options
} : options);
function callFn(fnType, context) {
var fn = props.value[fnType] || propsObject[fnType];
typeof fn === "function" && fn(context);
}
var params = vue.reactive(_objectSpread$8(_objectSpread$8({}, propsObject), {}, {
onConfirm: function onConfirm(context) {
callFn("onConfirm", context);
params.visible = false;
},
onCancel: function onCancel(context) {
callFn("onCancel", context);
params.visible = false;
},
onOverlayClick: function onOverlayClick(context) {
callFn("onOverlayClick", context);
params.visible = false;
},
onClose: function onClose(context) {
callFn("onClose", context);
params.visible = false;
},
onClosed: function onClosed() {
callFn("onClosed");
vue.nextTick(function () {
params.destroyOnClose && app.unmount();
});
}
}));
var app = vue.createApp(function () {
return vue.h(Dialog, params);
});
app.mount(root);
var handler = {
destroy: function destroy() {
params.destroyOnClose = true;
vue.nextTick(function () {
params.visible = false;
root.remove();
});
},
hide: function hide() {
params.visible = false;
},
show: function show() {
params.visible = true;
},
update: function update(options2) {
if (typeof options2 === "string") {
params.content = options2;
} else {
for (var key in options2) {
if (propsFn.includes(key)) {
props.value[key] = options2[key];
} else {
params[key] = options2[key];
}
}
}
}
};
vue.nextTick(function () {
return params.visible = true;
});
return handler;
}
["show", "alert", "confirm"].forEach(function (type) {
Dialog[type] = function (options) {
var props = {
content: ""
};
if (typeof options === "string") {
props.content = options;
} else {
props = _objectSpread$8(_objectSpread$8({}, props), options);
}
if (type === "alert") {
props.cancelBtn = null;
}
return create$1(props);
};
});
Dialog.install = function (app) {
var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
app.component(name || Dialog.name, Dialog);
app.config.globalProperties.$dialog = Dialog;
app.provide("$dialog", Dialog);
};
var DialogPlugin = Dialog;
var DropdownMenuExpandState = /* @__PURE__ */function (DropdownMenuExpandState2) {
DropdownMenuExpandState2["expanded"] = "expanded";
DropdownMenuExpandState2["collapsed"] = "collapsed";
return DropdownMenuExpandState2;
}(DropdownMenuExpandState || {});
var oldOverflow = null;
var context = {
expandedMenuControl: null,
recordMenuExpanded: function recordMenuExpanded(container, menuControl, action) {
var containerDom = container;
if (action === "expanded" /* expanded */) {
var expandedMenuControl = this.expandedMenuControl;
if (expandedMenuControl && expandedMenuControl !== menuControl) {
expandedMenuControl.collapseMenu();
}
this.expandedMenuControl = menuControl;
if (oldOverflow === null) {
oldOverflow = container.style.overflow;
containerDom.style.overflow = "hidden";
}
} else if (action === "collapsed" /* collapsed */) {
if (this.expandedMenuControl === menuControl) {
this.expandedMenuControl = null;
}
if (!this.expandedMenuControl && oldOverflow !== null) {
containerDom.style.overflow = oldOverflow;
oldOverflow = null;
}
}
}
};
var findRelativeContainer = function findRelativeContainer(dom) {
var node = dom;
while (node && node !== document.body) {
var _getComputedStyle = getComputedStyle(node),
transform = _getComputedStyle.transform;
if (!/matrix\([\d,\s]+\)/.test(transform)) {
node = node.parentNode;
continue;
}
return node;
}
return null;
};
var findRelativeRect = function findRelativeRect(dom) {
var container = findRelativeContainer(dom);
var containerRect = container ? container.getBoundingClientRect() : {
top: 0,
left: 0
};
var _dom$getBoundingClien = dom.getBoundingClientRect(),
top = _dom$getBoundingClien.top,
left = _dom$getBoundingClien.left,
bottom = _dom$getBoundingClien.bottom,
right = _dom$getBoundingClien.right,
width = _dom$getBoundingClien.width,
height = _dom$getBoundingClien.height;
return {
top: top - containerRect.top,
bottom: bottom - containerRect.top,
left: left - containerRect.left,
right: right - containerRect.left,
width: width,
height: height
};
};
var DropdownMenuProps = {
closeOnClickOverlay: {
type: Boolean,
default: true
},
direction: {
type: String,
default: "down",
validator: function validator(val) {
if (!val) return true;
return ["down", "up"].includes(val);
}
},
duration: {
type: [String, Number],
default: 200
},
showOverlay: {
type: Boolean,
default: true
},
zIndex: {
type: Number,
default: 11600
}
};
function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$9 = config.prefix;
var _DropdownMenu = vue.defineComponent({
name: "".concat(prefix$9, "-dropdown-menu"),
components: {
CaretDownSmallIcon: CaretDownSmallIcon,
CaretUpSmallIcon: CaretUpSmallIcon
},
props: _objectSpread$7({
onMenuOpened: Function,
onMenuClosed: Function
}, DropdownMenuProps),
emits: ["menuOpened", "menuClosed"],
setup: function setup(props, _ref) {
var slots = _ref.slots;
var dropdownMenuClass = usePrefixClass("dropdown-menu");
var renderContent = useContent();
var state = vue.reactive({
activeId: null,
barRect: {},
childCount: 0,
itemsLabel: []
});
var menuItems = vue.ref([]);
var updateItems = function updateItems() {
if (slots.default) {
var itemName = "".concat(prefix$9, "-dropdown-item");
var children = slots.default();
menuItems.value = children.filter(function (child) {
var _child$type;
var childTypeName = child === null || child === void 0 || (_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.name;
return (childTypeName === null || childTypeName === void 0 ? void 0 : childTypeName.includes) && childTypeName.includes(itemName);
});
}
};
vue.watch(function () {
var _slots$default;
return slots === null || slots === void 0 || (_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
}, updateItems, {
deep: true,
immediate: true
});
var menuTitles = vue.computed(function () {
var _menuItems$value;
return (_menuItems$value = menuItems.value) === null || _menuItems$value === void 0 ? void 0 : _menuItems$value.map(function (item, index) {
var _keys$label2;
var _item$props = item.props,
keys = _item$props.keys,
label = _item$props.label,
value = _item$props.value,
modelValue = _item$props.modelValue,
defaultValue = _item$props.defaultValue,
disabled = _item$props.disabled,
options = _item$props.options,
icon = _item$props.icon;
var currentValue = value || modelValue || defaultValue;
var target = options === null || options === void 0 ? void 0 : options.find(function (item2) {
var _keys$value;
return get(item2, (_keys$value = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _keys$value !== void 0 ? _keys$value : "value") === currentValue;
});
if (state.itemsLabel.length < index + 1) {
var _keys$label;
var targetLabel = target && get(target, (_keys$label = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _keys$label !== void 0 ? _keys$label : "label") || "";
var computedLabel = label || targetLabel;
state.itemsLabel.push(computedLabel);
return {
labelProps: label,
label: computedLabel,
disabled: disabled !== void 0 && disabled !== false,
icon: icon
};
}
return {
labelProps: label,
label: label || get(target, (_keys$label2 = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _keys$label2 !== void 0 ? _keys$label2 : "label"),
disabled: disabled !== void 0 && disabled !== false,
icon: icon
};
});
});
vue.provide("dropdownMenuProps", props);
vue.provide("dropdownMenuState", state);
var classes = vue.computed(function () {
return ["".concat(dropdownMenuClass.value)];
});
var refBar = vue.ref();
var styleBarItem = vue.computed(function () {
return function (item, idx) {
return ["".concat(dropdownMenuClass.value, "__item"), _defineProperty$3(_defineProperty$3({}, "".concat(dropdownMenuClass.value, "__item--disabled"), item.disabled), "".concat(dropdownMenuClass.value, "__item--active"), idx === state.activeId)];
};
});
var styleIcon = vue.computed(function () {
return function (item, idx) {
return ["".concat(dropdownMenuClass.value, "__icon"), _defineProperty$3({}, "".concat(dropdownMenuClass.value, "__icon--active"), idx === state.activeId)];
};
});
var expandMenu = function expandMenu(item, idx) {
var _props$onMenuOpened;
var disabled = item.disabled;
if (disabled) return;
if (state.activeId === idx) {
var _props$onMenuClosed;
collapseMenu();
(_props$onMenuClosed = props.onMenuClosed) === null || _props$onMenuClosed === void 0 || _props$onMenuClosed.call(props, {
trigger: "menu"
});
return;
}
(_props$onMenuOpened = props.onMenuOpened) === null || _props$onMenuOpened === void 0 || _props$onMenuOpened.call(props, "menuOpened");
state.activeId = idx;
state.itemsLabel[idx] = item.label;
var bar = refBar.value;
var barRect = findRelativeRect(bar);
state.barRect = barRect;
var container = findRelativeContainer(bar) || document.body;
context.recordMenuExpanded(container, control, DropdownMenuExpandState.expanded);
};
var collapseMenu = function collapseMenu() {
menuTitles.value.forEach(function (_item, index) {
menuTitles.value[index].label = state.itemsLabel[index];
});
state.activeId = null;
var bar = refBar.value;
var container = findRelativeContainer(bar) || document.body;
context.recordMenuExpanded(container, control, DropdownMenuExpandState.collapsed);
};
onClickOutside(refBar, function () {
var _props$onMenuClosed2;
if (state.activeId === null) return;
collapseMenu();
(_props$onMenuClosed2 = props.onMenuClosed) === null || _props$onMenuClosed2 === void 0 || _props$onMenuClosed2.call(props, {
trigger: "outside"
});
});
var control = {
expandMenu: expandMenu,
collapseMenu: collapseMenu,
emitEvents: function emitEvents(emit, trigger) {
var eventHandler = props["on".concat(camelCase$1(emit))];
eventHandler === null || eventHandler === void 0 || eventHandler(trigger);
}
};
vue.provide("dropdownMenuControl", control);
useExpose({
toggle: function toggle(idx) {
if (idx != null) {
var item = menuTitles.value[idx];
expandMenu(item, idx);
} else {
collapseMenu();
}
}
});
useExpose({
expandMenu: expandMenu,
collapseMenu: collapseMenu
});
return function () {
var defaultSlot = renderContent("default", "content");
var renderDropdownItemIcon = function renderDropdownItemIcon(item, idx) {
var icon = item.icon;
var isActive = idx === state.activeId;
var iconClass = [styleIcon.value(item, idx)];
if (icon) {
var isArray = Array.isArray(icon);
var isTwoIcons = isArray && icon.length === 2;
var selectedIcon;
if (isTwoIcons) {
selectedIcon = isActive ? icon[0] : icon[1];
} else {
selectedIcon = isArray ? icon[0] : icon;
}
var iconContent = isFunction(selectedIcon) ? selectedIcon() : selectedIcon;
return vue.createVNode("div", {
"class": iconClass
}, [iconContent]);
}
return props.direction === "down" ? vue.createVNode(vue.resolveComponent("caret-down-small-icon"), {
"class": iconClass
}, null) : vue.createVNode(vue.resolveComponent("caret-up-small-icon"), {
"class": iconClass
}, null);
};
return vue.createVNode("div", {
"ref": refBar,
"class": classes.value
}, [(menuTitles.value || []).map(function (item, idx) {
return vue.createVNode("div", {
"class": styleBarItem.value(item, idx),
"onClick": function onClick() {
return expandMenu(item, idx);
}
}, [vue.createVNode("div", {
"class": "".concat(dropdownMenuClass.value, "__title")
}, [item.labelProps || item.label]), renderDropdownItemIcon(item, idx)]);
}), defaultSlot]);
};
}
});
var props$4 = {
disabled: Boolean,
footer: {
type: Function
},
icon: {
type: [Array, Function],
default: void 0
},
keys: {
type: Object
},
label: {
type: String,
default: ""
},
multiple: Boolean,
options: {
type: Array,
default: function _default() {
return [];
}
},
optionsColumns: {
type: [String, Number],
default: 1
},
placement: {
type: String,
default: "left",
validator: function validator(val) {
if (!val) return true;
return ["left", "right"].includes(val);
}
},
value: {
type: [String, Number, Array],
default: void 0
},
modelValue: {
type: [String, Number, Array],
default: void 0
},
defaultValue: {
type: [String, Number, Array],
default: void 0
},
onChange: Function,
onConfirm: Function,
onReset: Function
};
function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _isSlot$2(s) {
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
}
var prefix$8 = config.prefix;
var getUniqueID = uniqueFactory("dropdown-popup");
var _DropdownItem = vue.defineComponent({
name: "".concat(prefix$8, "-dropdown-item"),
props: props$4,
emits: ["change", "open", "opened", "close", "closed", "update:value", "update:modelValue"],
setup: function setup(props2) {
var classPrefix = usePrefixClass();
var dropdownItemClass = usePrefixClass("dropdown-item");
var _useConfig = useConfig("dropdownMenu"),
globalConfig = _useConfig.globalConfig;
var renderContent = useContent();
var renderTNodeJSX = useTNodeJSX();
var popupContent = vue.ref(null);
var _toRefs = vue.toRefs(props2),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props2.defaultValue),
_useVModel2 = _slicedToArray(_useVModel, 2),
passInValue = _useVModel2[0],
setValue = _useVModel2[1];
var menuProps = vue.inject("dropdownMenuProps");
var menuState = vue.inject("dropdownMenuState");
var _inject = vue.inject("dropdownMenuControl");
_inject.expandMenu;
var collapseMenu = _inject.collapseMenu,
emitEvents = _inject.emitEvents;
var classes = vue.computed(function () {
return ["".concat(dropdownItemClass.value)];
});
var itemId = vue.ref(0);
vue.onBeforeMount(function () {
itemId.value = menuState.childCount;
menuState.childCount += 1;
});
var state = vue.reactive({
showOverlay: vue.computed(function () {
return menuProps.showOverlay;
}),
duration: vue.computed(function () {
return menuProps.duration;
}),
isShowItems: false,
wrapperVisible: false,
expandStyle: {},
multiple: vue.computed(function () {
return props2.multiple;
}),
options: vue.computed(function () {
if (props2.keys) {
var _props2$options;
var keys = props2.keys;
return (_props2$options = props2.options) === null || _props2$options === void 0 ? void 0 : _props2$options.map(function (item) {
var _keys$value, _keys$label, _keys$disabled;
return {
value: get(item, (_keys$value = keys === null || keys === void 0 ? void 0 : keys.value) !== null && _keys$value !== void 0 ? _keys$value : "value"),
label: get(item, (_keys$label = keys === null || keys === void 0 ? void 0 : keys.label) !== null && _keys$label !== void 0 ? _keys$label : "label"),
disabled: get(item, (_keys$disabled = keys === null || keys === void 0 ? void 0 : keys.disabled) !== null && _keys$disabled !== void 0 ? _keys$disabled : "disabled")
};
});
}
return props2.options;
})
});
var isCheckedRadio = function isCheckedRadio(value2) {
return value2 === radioSelect.value;
};
var styleDropRadio = function styleDropRadio(value2) {
return ["".concat(dropdownItemClass.value, "__radio-item"), _defineProperty$3(_defineProperty$3({}, "".concat(classPrefix.value, "-is-tick"), !props2.multiple), "".concat(classPrefix.value, "-is-checked"), isCheckedRadio(value2))];
};
var popupStyle = vue.computed(function () {
return {
zIndex: menuProps.zIndex && menuProps.zIndex + 1,
position: "absolute",
overflow: "hidden"
};
});
var popupId = getUniqueID();
var setExpand = function setExpand(val) {
var _props;
var _menuState$barRect = menuState.barRect,
bottom = _menuState$barRect.bottom,
top = _menuState$barRect.top;
var winHeight = getWindowSize().height;
menuProps.direction === "up" ? state.expandStyle = {
zIndex: menuProps.zIndex,
bottom: "".concat(winHeight - top, "px")
} : state.expandStyle = {
zIndex: menuProps.zIndex,
top: "".concat(bottom, "px")
};
var duration2 = menuProps.duration;
(_props = props2["on".concat(val ? "Open" : "Close")]) === null || _props === void 0 || _props.call(props2);
if (val) {
state.wrapperVisible = true;
}
vue.nextTick(function () {
state.isShowItems = val;
});
if (!val) {
setTimeout(function () {
state.wrapperVisible = false;
}, Number(duration2));
}
setTimeout(function () {
var _props2;
(_props2 = props2["on".concat(val ? "Opened" : "Closed")]) === null || _props2 === void 0 || _props2.call(props2);
}, Number(duration2));
};
vue.watch(function () {
return menuState.activeId === itemId.value;
}, function (val) {
return setExpand(val);
});
var radioSelect = vue.ref();
var checkSelect = vue.ref();
var updateSelectValue = function updateSelectValue(val) {
if (!props2.multiple) {
var _ref2;
var list = state.options;
var firstChild = list === null || list === void 0 ? void 0 : list[0];
var newValue = (_ref2 = val !== null && val !== void 0 ? val : firstChild === null || firstChild === void 0 ? void 0 : firstChild.value) !== null && _ref2 !== void 0 ? _ref2 : null;
radioSelect.value = newValue;
} else if (props2.multiple) {
checkSelect.value = val !== null && val !== void 0 ? val : [];
}
};
updateSelectValue(passInValue.value || null);
vue.watch(function () {
return passInValue.value;
}, function (val) {
if (!val) return;
updateSelectValue(val);
});
var isBtnDisabled = vue.computed(function () {
return Array.isArray(checkSelect.value) && checkSelect.value.length <= 0;
});
var resetSelect = function resetSelect() {
var _props2$onReset;
checkSelect.value = [];
var values = checkSelect.value;
values = JSON.parse(JSON.stringify(values));
(_props2$onReset = props2.onReset) === null || _props2$onReset === void 0 || _props2$onReset.call(props2, values);
};
var confirmSelect = function confirmSelect() {
var _props2$onConfirm;
var values = checkSelect.value;
values = JSON.parse(JSON.stringify(values));
(_props2$onConfirm = props2.onConfirm) === null || _props2$onConfirm === void 0 || _props2$onConfirm.call(props2, values);
setValue(values);
collapseMenu();
emitEvents("menuClosed", "confirm");
};
vue.watch(checkSelect, function (val) {
if (!props2.multiple) return;
if (!state.isShowItems) return;
if (val) {
var _props2$onChange;
var value2 = JSON.stringify(passInValue.value || []);
var values = JSON.stringify(val);
if (value2 === values) return;
(_props2$onChange = props2.onChange) === null || _props2$onChange === void 0 || _props2$onChange.call(props2, JSON.parse(values));
}
});
vue.watch(radioSelect, function (val) {
var _props2$onChange2;
if (menuState.activeId !== null) {
var _state$options;
var target = (_state$options = state.options) === null || _state$options === void 0 ? void 0 : _state$options.find(function (item) {
return item.value === val;
});
menuState.itemsLabel[menuState.activeId] = target === null || target === void 0 ? void 0 : target.label;
}
if (props2.multiple) return;
if (!state.isShowItems) return;
var value2 = passInValue.value || [];
if (value2[0] === val) return;
(_props2$onChange2 = props2.onChange) === null || _props2$onChange2 === void 0 || _props2$onChange2.call(props2, val);
setValue(val);
collapseMenu();
emitEvents("menuClosed", "content");
});
var onVisibleChange = function onVisibleChange(visible) {
if (menuProps.closeOnClickOverlay && !visible) {
collapseMenu();
emitEvents("menuClosed", "overlay");
}
};
var _toRefs2 = vue.toRefs(state),
showOverlay = _toRefs2.showOverlay,
duration = _toRefs2.duration,
isShowItems = _toRefs2.isShowItems,
wrapperVisible = _toRefs2.wrapperVisible,
expandStyle = _toRefs2.expandStyle,
multiple = _toRefs2.multiple,
options = _toRefs2.options;
return function () {
var handleRadioChange = function handleRadioChange(value2) {
radioSelect.value = value2;
};
var handleCheckboxChange = function handleCheckboxChange(value2) {
checkSelect.value = value2;
};
var defaultSlot = function defaultSlot() {
var _slot2;
if (!multiple.value) {
var _slot;
return vue.createVNode(RadioGroup, {
"value": radioSelect.value,
"onChange": handleRadioChange,
"placement": props2.placement,
"class": "".concat(dropdownItemClass.value, "__radio-group")
}, _isSlot$2(_slot = (options.value || []).map(function (option) {
return vue.createVNode(Radio, {
"key": option.value,
"value": option.value,
"label": option.label,
"disabled": option.disabled,
"class": styleDropRadio(option.value),
"checked": isCheckedRadio(option.value),
"icon": "line"
}, null);
})) ? _slot : {
default: function _default() {
return [_slot];
}
});
}
return vue.createVNode(CheckboxGroup, {
"value": checkSelect.value,
"onChange": handleCheckboxChange,
"class": "".concat(dropdownItemClass.value, "__checkbox-group"),
"style": "grid-template-columns: repeat(".concat(props2.optionsColumns, ", 1fr)")
}, _isSlot$2(_slot2 = (options.value || []).map(function (option) {
return vue.createVNode(Checkbox, {
"key": option.value,
"class": "".concat(dropdownItemClass.value, "__checkbox-item t-checkbox--tag"),
"icon": false,
"borderless": true,
"value": option.value,
"label": option.label,
"disabled": option.disabled
}, null);
})) ? _slot2 : {
default: function _default() {
return [_slot2];
}
});
};
var footerSlot = function footerSlot() {
if (multiple.value) {
return vue.createVNode("div", {
"class": "".concat(dropdownItemClass.value, "__footer")
}, [vue.createVNode(Button, {
"theme": "light",
"class": "".concat(dropdownItemClass.value, "__footer-btn ").concat(dropdownItemClass.value, "__reset-btn"),
"disabled": isBtnDisabled.value,
"onClick": resetSelect
}, {
default: function _default() {
return [globalConfig.value.reset];
}
}), vue.createVNode(Button, {
"theme": "primary",
"class": "".concat(dropdownItemClass.value, "__footer-btn ").concat(dropdownItemClass.value, "__confirm-btn"),
"disabled": isBtnDisabled.value,
"onClick": confirmSelect
}, {
default: function _default() {
return [globalConfig.value.confirm];
}
})]);
}
};
var content = renderContent("default", "content");
var footer = renderTNodeJSX("footer");
return wrapperVisible.value && vue.createVNode("div", {
"id": popupId,
"class": classes.value,
"style": _objectSpread$6({}, expandStyle.value)
}, [vue.createVNode(Popup, {
"visible": isShowItems.value,
"placement": menuProps.direction === "up" ? "bottom" : "top",
"duration": Number(duration.value),
"showOverlay": showOverlay.value,
"style": popupStyle.value,
"overlayProps": {
style: "position: absolute"
},
"attach": "#".concat(popupId),
"onVisibleChange": onVisibleChange
}, {
default: function _default() {
return [vue.createVNode("div", {
"ref": popupContent,
"class": "".concat(dropdownItemClass.value, "__content")
}, [vue.createVNode("div", {
"class": "".concat(dropdownItemClass.value, "__body")
}, [content || defaultSlot()]), footer || footerSlot()])];
}
})]);
};
}
});
var DropdownMenu = withInstall(_DropdownMenu);
var DropdownItem = withInstall(_DropdownItem);
var top = 'top';
var bottom = 'bottom';
var right = 'right';
var left = 'left';
var auto = 'auto';
var basePlacements = [top, bottom, right, left];
var start = 'start';
var end = 'end';
var clippingParents = 'clippingParents';
var viewport = 'viewport';
var popper = 'popper';
var reference = 'reference';
var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {
return acc.concat([placement + "-" + start, placement + "-" + end]);
}, []);
var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {
return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
}, []); // modifiers that need to read the DOM
var beforeRead = 'beforeRead';
var read = 'read';
var afterRead = 'afterRead'; // pure-logic modifiers
var beforeMain = 'beforeMain';
var main = 'main';
var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)
var beforeWrite = 'beforeWrite';
var write = 'write';
var afterWrite = 'afterWrite';
var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
function getNodeName(element) {
return element ? (element.nodeName || '').toLowerCase() : null;
}
function getWindow(node) {
if (node == null) {
return window;
}
if (node.toString() !== '[object Window]') {
var ownerDocument = node.ownerDocument;
return ownerDocument ? ownerDocument.defaultView || window : window;
}
return node;
}
function isElement$1(node) {
var OwnElement = getWindow(node).Element;
return node instanceof OwnElement || node instanceof Element;
}
function isHTMLElement(node) {
var OwnElement = getWindow(node).HTMLElement;
return node instanceof OwnElement || node instanceof HTMLElement;
}
function isShadowRoot(node) {
// IE 11 has no ShadowRoot
if (typeof ShadowRoot === 'undefined') {
return false;
}
var OwnElement = getWindow(node).ShadowRoot;
return node instanceof OwnElement || node instanceof ShadowRoot;
}
// and applies them to the HTMLElements such as popper and arrow
function applyStyles(_ref) {
var state = _ref.state;
Object.keys(state.elements).forEach(function (name) {
var style = state.styles[name] || {};
var attributes = state.attributes[name] || {};
var element = state.elements[name]; // arrow is optional + virtual elements
if (!isHTMLElement(element) || !getNodeName(element)) {
return;
} // Flow doesn't support to extend this property, but it's the most
// effective way to apply styles to an HTMLElement
// $FlowFixMe[cannot-write]
Object.assign(element.style, style);
Object.keys(attributes).forEach(function (name) {
var value = attributes[name];
if (value === false) {
element.removeAttribute(name);
} else {
element.setAttribute(name, value === true ? '' : value);
}
});
});
}
function effect$2(_ref2) {
var state = _ref2.state;
var initialStyles = {
popper: {
position: state.options.strategy,
left: '0',
top: '0',
margin: '0'
},
arrow: {
position: 'absolute'
},
reference: {}
};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles = initialStyles;
if (state.elements.arrow) {
Object.assign(state.elements.arrow.style, initialStyles.arrow);
}
return function () {
Object.keys(state.elements).forEach(function (name) {
var element = state.elements[name];
var attributes = state.attributes[name] || {};
var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them
var style = styleProperties.reduce(function (style, property) {
style[property] = '';
return style;
}, {}); // arrow is optional + virtual elements
if (!isHTMLElement(element) || !getNodeName(element)) {
return;
}
Object.assign(element.style, style);
Object.keys(attributes).forEach(function (attribute) {
element.removeAttribute(attribute);
});
});
};
} // eslint-disable-next-line import/no-unused-modules
var applyStyles$1 = {
name: 'applyStyles',
enabled: true,
phase: 'write',
fn: applyStyles,
effect: effect$2,
requires: ['computeStyles']
};
function getBasePlacement(placement) {
return placement.split('-')[0];
}
var max = Math.max;
var min = Math.min;
var round = Math.round;
function getUAString() {
var uaData = navigator.userAgentData;
if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
return uaData.brands.map(function (item) {
return item.brand + "/" + item.version;
}).join(' ');
}
return navigator.userAgent;
}
function isLayoutViewport() {
return !/^((?!chrome|android).)*safari/i.test(getUAString());
}
function getBoundingClientRect(element, includeScale, isFixedStrategy) {
if (includeScale === void 0) {
includeScale = false;
}
if (isFixedStrategy === void 0) {
isFixedStrategy = false;
}
var clientRect = element.getBoundingClientRect();
var scaleX = 1;
var scaleY = 1;
if (includeScale && isHTMLElement(element)) {
scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
}
var _ref = isElement$1(element) ? getWindow(element) : window,
visualViewport = _ref.visualViewport;
var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
var width = clientRect.width / scaleX;
var height = clientRect.height / scaleY;
return {
width: width,
height: height,
top: y,
right: x + width,
bottom: y + height,
left: x,
x: x,
y: y
};
}
// means it doesn't take into account transforms.
function getLayoutRect(element) {
var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.
// Fixes https://github.com/popperjs/popper-core/issues/1223
var width = element.offsetWidth;
var height = element.offsetHeight;
if (Math.abs(clientRect.width - width) <= 1) {
width = clientRect.width;
}
if (Math.abs(clientRect.height - height) <= 1) {
height = clientRect.height;
}
return {
x: element.offsetLeft,
y: element.offsetTop,
width: width,
height: height
};
}
function contains(parent, child) {
var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
if (parent.contains(child)) {
return true;
} // then fallback to custom implementation with Shadow DOM support
else if (rootNode && isShadowRoot(rootNode)) {
var next = child;
do {
if (next && parent.isSameNode(next)) {
return true;
} // $FlowFixMe[prop-missing]: need a better way to handle this...
next = next.parentNode || next.host;
} while (next);
} // Give up, the result is false
return false;
}
function getComputedStyle$1(element) {
return getWindow(element).getComputedStyle(element);
}
function isTableElement(element) {
return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
}
function getDocumentElement(element) {
// $FlowFixMe[incompatible-return]: assume body is always available
return ((isElement$1(element) ? element.ownerDocument :
// $FlowFixMe[prop-missing]
element.document) || window.document).documentElement;
}
function getParentNode(element) {
if (getNodeName(element) === 'html') {
return element;
}
return (
// this is a quicker (but less type safe) way to save quite some bytes from the bundle
// $FlowFixMe[incompatible-return]
// $FlowFixMe[prop-missing]
element.assignedSlot ||
// step into the shadow DOM of the parent of a slotted node
element.parentNode || (
// DOM Element detected
isShadowRoot(element) ? element.host : null) ||
// ShadowRoot detected
// $FlowFixMe[incompatible-call]: HTMLElement is a Node
getDocumentElement(element) // fallback
);
}
function getTrueOffsetParent(element) {
if (!isHTMLElement(element) ||
// https://github.com/popperjs/popper-core/issues/837
getComputedStyle$1(element).position === 'fixed') {
return null;
}
return element.offsetParent;
} // `.offsetParent` reports `null` for fixed elements, while absolute elements
// return the containing block
function getContainingBlock(element) {
var isFirefox = /firefox/i.test(getUAString());
var isIE = /Trident/i.test(getUAString());
if (isIE && isHTMLElement(element)) {
// In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
var elementCss = getComputedStyle$1(element);
if (elementCss.position === 'fixed') {
return null;
}
}
var currentNode = getParentNode(element);
if (isShadowRoot(currentNode)) {
currentNode = currentNode.host;
}
while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that
// create a containing block.
// https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {
return currentNode;
} else {
currentNode = currentNode.parentNode;
}
}
return null;
} // Gets the closest ancestor positioned element. Handles some edge cases,
// such as table ancestors and cross browser bugs.
function getOffsetParent(element) {
var window = getWindow(element);
var offsetParent = getTrueOffsetParent(element);
while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {
offsetParent = getTrueOffsetParent(offsetParent);
}
if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) {
return window;
}
return offsetParent || getContainingBlock(element) || window;
}
function getMainAxisFromPlacement(placement) {
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
}
function within(min$1, value, max$1) {
return max(min$1, min(value, max$1));
}
function withinMaxClamp(min, value, max) {
var v = within(min, value, max);
return v > max ? max : v;
}
function getFreshSideObject() {
return {
top: 0,
right: 0,
bottom: 0,
left: 0
};
}
function mergePaddingObject(paddingObject) {
return Object.assign({}, getFreshSideObject(), paddingObject);
}
function expandToHashMap(value, keys) {
return keys.reduce(function (hashMap, key) {
hashMap[key] = value;
return hashMap;
}, {});
}
var toPaddingObject = function toPaddingObject(padding, state) {
padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {
placement: state.placement
})) : padding;
return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
};
function arrow(_ref) {
var _state$modifiersData$;
var state = _ref.state,
name = _ref.name,
options = _ref.options;
var arrowElement = state.elements.arrow;
var popperOffsets = state.modifiersData.popperOffsets;
var basePlacement = getBasePlacement(state.placement);
var axis = getMainAxisFromPlacement(basePlacement);
var isVertical = [left, right].indexOf(basePlacement) >= 0;
var len = isVertical ? 'height' : 'width';
if (!arrowElement || !popperOffsets) {
return;
}
var paddingObject = toPaddingObject(options.padding, state);
var arrowRect = getLayoutRect(arrowElement);
var minProp = axis === 'y' ? top : left;
var maxProp = axis === 'y' ? bottom : right;
var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
var startDiff = popperOffsets[axis] - state.rects.reference[axis];
var arrowOffsetParent = getOffsetParent(arrowElement);
var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
// outside of the popper bounds
var min = paddingObject[minProp];
var max = clientSize - arrowRect[len] - paddingObject[maxProp];
var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
var offset = within(min, center, max); // Prevents breaking syntax highlighting...
var axisProp = axis;
state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
}
function effect$1(_ref2) {
var state = _ref2.state,
options = _ref2.options;
var _options$element = options.element,
arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;
if (arrowElement == null) {
return;
} // CSS selector
if (typeof arrowElement === 'string') {
arrowElement = state.elements.popper.querySelector(arrowElement);
if (!arrowElement) {
return;
}
}
if (!contains(state.elements.popper, arrowElement)) {
return;
}
state.elements.arrow = arrowElement;
} // eslint-disable-next-line import/no-unused-modules
var arrow$1 = {
name: 'arrow',
enabled: true,
phase: 'main',
fn: arrow,
effect: effect$1,
requires: ['popperOffsets'],
requiresIfExists: ['preventOverflow']
};
function getVariation(placement) {
return placement.split('-')[1];
}
var unsetSides = {
top: 'auto',
right: 'auto',
bottom: 'auto',
left: 'auto'
}; // Round the offsets to the nearest suitable subpixel based on the DPR.
// Zooming can change the DPR, but it seems to report a value that will
// cleanly divide the values into the appropriate subpixels.
function roundOffsetsByDPR(_ref, win) {
var x = _ref.x,
y = _ref.y;
var dpr = win.devicePixelRatio || 1;
return {
x: round(x * dpr) / dpr || 0,
y: round(y * dpr) / dpr || 0
};
}
function mapToStyles(_ref2) {
var _Object$assign2;
var popper = _ref2.popper,
popperRect = _ref2.popperRect,
placement = _ref2.placement,
variation = _ref2.variation,
offsets = _ref2.offsets,
position = _ref2.position,
gpuAcceleration = _ref2.gpuAcceleration,
adaptive = _ref2.adaptive,
roundOffsets = _ref2.roundOffsets,
isFixed = _ref2.isFixed;
var _offsets$x = offsets.x,
x = _offsets$x === void 0 ? 0 : _offsets$x,
_offsets$y = offsets.y,
y = _offsets$y === void 0 ? 0 : _offsets$y;
var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({
x: x,
y: y
}) : {
x: x,
y: y
};
x = _ref3.x;
y = _ref3.y;
var hasX = offsets.hasOwnProperty('x');
var hasY = offsets.hasOwnProperty('y');
var sideX = left;
var sideY = top;
var win = window;
if (adaptive) {
var offsetParent = getOffsetParent(popper);
var heightProp = 'clientHeight';
var widthProp = 'clientWidth';
if (offsetParent === getWindow(popper)) {
offsetParent = getDocumentElement(popper);
if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') {
heightProp = 'scrollHeight';
widthProp = 'scrollWidth';
}
} // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
offsetParent = offsetParent;
if (placement === top || (placement === left || placement === right) && variation === end) {
sideY = bottom;
var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height :
// $FlowFixMe[prop-missing]
offsetParent[heightProp];
y -= offsetY - popperRect.height;
y *= gpuAcceleration ? 1 : -1;
}
if (placement === left || (placement === top || placement === bottom) && variation === end) {
sideX = right;
var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width :
// $FlowFixMe[prop-missing]
offsetParent[widthProp];
x -= offsetX - popperRect.width;
x *= gpuAcceleration ? 1 : -1;
}
}
var commonStyles = Object.assign({
position: position
}, adaptive && unsetSides);
var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
x: x,
y: y
}, getWindow(popper)) : {
x: x,
y: y
};
x = _ref4.x;
y = _ref4.y;
if (gpuAcceleration) {
var _Object$assign;
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
}
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
}
function computeStyles(_ref5) {
var state = _ref5.state,
options = _ref5.options;
var _options$gpuAccelerat = options.gpuAcceleration,
gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
_options$adaptive = options.adaptive,
adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
_options$roundOffsets = options.roundOffsets,
roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
var commonStyles = {
placement: getBasePlacement(state.placement),
variation: getVariation(state.placement),
popper: state.elements.popper,
popperRect: state.rects.popper,
gpuAcceleration: gpuAcceleration,
isFixed: state.options.strategy === 'fixed'
};
if (state.modifiersData.popperOffsets != null) {
state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
offsets: state.modifiersData.popperOffsets,
position: state.options.strategy,
adaptive: adaptive,
roundOffsets: roundOffsets
})));
}
if (state.modifiersData.arrow != null) {
state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
offsets: state.modifiersData.arrow,
position: 'absolute',
adaptive: false,
roundOffsets: roundOffsets
})));
}
state.attributes.popper = Object.assign({}, state.attributes.popper, {
'data-popper-placement': state.placement
});
} // eslint-disable-next-line import/no-unused-modules
var computeStyles$1 = {
name: 'computeStyles',
enabled: true,
phase: 'beforeWrite',
fn: computeStyles,
data: {}
};
var passive = {
passive: true
};
function effect(_ref) {
var state = _ref.state,
instance = _ref.instance,
options = _ref.options;
var _options$scroll = options.scroll,
scroll = _options$scroll === void 0 ? true : _options$scroll,
_options$resize = options.resize,
resize = _options$resize === void 0 ? true : _options$resize;
var window = getWindow(state.elements.popper);
var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
if (scroll) {
scrollParents.forEach(function (scrollParent) {
scrollParent.addEventListener('scroll', instance.update, passive);
});
}
if (resize) {
window.addEventListener('resize', instance.update, passive);
}
return function () {
if (scroll) {
scrollParents.forEach(function (scrollParent) {
scrollParent.removeEventListener('scroll', instance.update, passive);
});
}
if (resize) {
window.removeEventListener('resize', instance.update, passive);
}
};
} // eslint-disable-next-line import/no-unused-modules
var eventListeners = {
name: 'eventListeners',
enabled: true,
phase: 'write',
fn: function fn() {},
effect: effect,
data: {}
};
var hash$1 = {
left: 'right',
right: 'left',
bottom: 'top',
top: 'bottom'
};
function getOppositePlacement(placement) {
return placement.replace(/left|right|bottom|top/g, function (matched) {
return hash$1[matched];
});
}
var hash = {
start: 'end',
end: 'start'
};
function getOppositeVariationPlacement(placement) {
return placement.replace(/start|end/g, function (matched) {
return hash[matched];
});
}
function getWindowScroll(node) {
var win = getWindow(node);
var scrollLeft = win.pageXOffset;
var scrollTop = win.pageYOffset;
return {
scrollLeft: scrollLeft,
scrollTop: scrollTop
};
}
function getWindowScrollBarX(element) {
// If <html> has a CSS width greater than the viewport, then this will be
// incorrect for RTL.
// Popper 1 is broken in this case and never had a bug report so let's assume
// it's not an issue. I don't think anyone ever specifies width on <html>
// anyway.
// Browsers where the left scrollbar doesn't cause an issue report `0` for
// this (e.g. Edge 2019, IE11, Safari)
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
}
function getViewportRect(element, strategy) {
var win = getWindow(element);
var html = getDocumentElement(element);
var visualViewport = win.visualViewport;
var width = html.clientWidth;
var height = html.clientHeight;
var x = 0;
var y = 0;
if (visualViewport) {
width = visualViewport.width;
height = visualViewport.height;
var layoutViewport = isLayoutViewport();
if (layoutViewport || !layoutViewport && strategy === 'fixed') {
x = visualViewport.offsetLeft;
y = visualViewport.offsetTop;
}
}
return {
width: width,
height: height,
x: x + getWindowScrollBarX(element),
y: y
};
}
// of the `<html>` and `<body>` rect bounds if horizontally scrollable
function getDocumentRect(element) {
var _element$ownerDocumen;
var html = getDocumentElement(element);
var winScroll = getWindowScroll(element);
var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
var y = -winScroll.scrollTop;
if (getComputedStyle$1(body || html).direction === 'rtl') {
x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
}
return {
width: width,
height: height,
x: x,
y: y
};
}
function isScrollParent(element) {
// Firefox wants us to check `-x` and `-y` variations as well
var _getComputedStyle = getComputedStyle$1(element),
overflow = _getComputedStyle.overflow,
overflowX = _getComputedStyle.overflowX,
overflowY = _getComputedStyle.overflowY;
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
function getScrollParent$2(node) {
if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
// $FlowFixMe[incompatible-return]: assume body is always available
return node.ownerDocument.body;
}
if (isHTMLElement(node) && isScrollParent(node)) {
return node;
}
return getScrollParent$2(getParentNode(node));
}
/*
given a DOM element, return the list of all scroll parents, up the list of ancesors
until we get to the top window object. This list is what we attach scroll listeners
to, because if any of these parent elements scroll, we'll need to re-calculate the
reference element's position.
*/
function listScrollParents(element, list) {
var _element$ownerDocumen;
if (list === void 0) {
list = [];
}
var scrollParent = getScrollParent$2(element);
var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
var win = getWindow(scrollParent);
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
var updatedList = list.concat(target);
return isBody ? updatedList :
// $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
updatedList.concat(listScrollParents(getParentNode(target)));
}
function rectToClientRect(rect) {
return Object.assign({}, rect, {
left: rect.x,
top: rect.y,
right: rect.x + rect.width,
bottom: rect.y + rect.height
});
}
function getInnerBoundingClientRect(element, strategy) {
var rect = getBoundingClientRect(element, false, strategy === 'fixed');
rect.top = rect.top + element.clientTop;
rect.left = rect.left + element.clientLeft;
rect.bottom = rect.top + element.clientHeight;
rect.right = rect.left + element.clientWidth;
rect.width = element.clientWidth;
rect.height = element.clientHeight;
rect.x = rect.left;
rect.y = rect.top;
return rect;
}
function getClientRectFromMixedType(element, clippingParent, strategy) {
return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement$1(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
} // A "clipping parent" is an overflowable container with the characteristic of
// clipping (or hiding) overflowing elements with a position different from
// `initial`
function getClippingParents(element) {
var clippingParents = listScrollParents(getParentNode(element));
var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0;
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
if (!isElement$1(clipperElement)) {
return [];
} // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
return clippingParents.filter(function (clippingParent) {
return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
});
} // Gets the maximum area that the element is visible in due to any number of
// clipping parents
function getClippingRect(element, boundary, rootBoundary, strategy) {
var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
var firstClippingParent = clippingParents[0];
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
var rect = getClientRectFromMixedType(element, clippingParent, strategy);
accRect.top = max(rect.top, accRect.top);
accRect.right = min(rect.right, accRect.right);
accRect.bottom = min(rect.bottom, accRect.bottom);
accRect.left = max(rect.left, accRect.left);
return accRect;
}, getClientRectFromMixedType(element, firstClippingParent, strategy));
clippingRect.width = clippingRect.right - clippingRect.left;
clippingRect.height = clippingRect.bottom - clippingRect.top;
clippingRect.x = clippingRect.left;
clippingRect.y = clippingRect.top;
return clippingRect;
}
function computeOffsets(_ref) {
var reference = _ref.reference,
element = _ref.element,
placement = _ref.placement;
var basePlacement = placement ? getBasePlacement(placement) : null;
var variation = placement ? getVariation(placement) : null;
var commonX = reference.x + reference.width / 2 - element.width / 2;
var commonY = reference.y + reference.height / 2 - element.height / 2;
var offsets;
switch (basePlacement) {
case top:
offsets = {
x: commonX,
y: reference.y - element.height
};
break;
case bottom:
offsets = {
x: commonX,
y: reference.y + reference.height
};
break;
case right:
offsets = {
x: reference.x + reference.width,
y: commonY
};
break;
case left:
offsets = {
x: reference.x - element.width,
y: commonY
};
break;
default:
offsets = {
x: reference.x,
y: reference.y
};
}
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
if (mainAxis != null) {
var len = mainAxis === 'y' ? 'height' : 'width';
switch (variation) {
case start:
offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
break;
case end:
offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
break;
}
}
return offsets;
}
function detectOverflow(state, options) {
if (options === void 0) {
options = {};
}
var _options = options,
_options$placement = _options.placement,
placement = _options$placement === void 0 ? state.placement : _options$placement,
_options$strategy = _options.strategy,
strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,
_options$boundary = _options.boundary,
boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
_options$rootBoundary = _options.rootBoundary,
rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
_options$elementConte = _options.elementContext,
elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
_options$altBoundary = _options.altBoundary,
altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
_options$padding = _options.padding,
padding = _options$padding === void 0 ? 0 : _options$padding;
var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
var altContext = elementContext === popper ? reference : popper;
var popperRect = state.rects.popper;
var element = state.elements[altBoundary ? altContext : elementContext];
var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
var referenceClientRect = getBoundingClientRect(state.elements.reference);
var popperOffsets = computeOffsets({
reference: referenceClientRect,
element: popperRect,
strategy: 'absolute',
placement: placement
});
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
// 0 or negative = within the clipping rect
var overflowOffsets = {
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
};
var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
if (elementContext === popper && offsetData) {
var offset = offsetData[placement];
Object.keys(overflowOffsets).forEach(function (key) {
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
overflowOffsets[key] += offset[axis] * multiply;
});
}
return overflowOffsets;
}
function computeAutoPlacement(state, options) {
if (options === void 0) {
options = {};
}
var _options = options,
placement = _options.placement,
boundary = _options.boundary,
rootBoundary = _options.rootBoundary,
padding = _options.padding,
flipVariations = _options.flipVariations,
_options$allowedAutoP = _options.allowedAutoPlacements,
allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
var variation = getVariation(placement);
var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
return getVariation(placement) === variation;
}) : basePlacements;
var allowedPlacements = placements$1.filter(function (placement) {
return allowedAutoPlacements.indexOf(placement) >= 0;
});
if (allowedPlacements.length === 0) {
allowedPlacements = placements$1;
} // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
var overflows = allowedPlacements.reduce(function (acc, placement) {
acc[placement] = detectOverflow(state, {
placement: placement,
boundary: boundary,
rootBoundary: rootBoundary,
padding: padding
})[getBasePlacement(placement)];
return acc;
}, {});
return Object.keys(overflows).sort(function (a, b) {
return overflows[a] - overflows[b];
});
}
function getExpandedFallbackPlacements(placement) {
if (getBasePlacement(placement) === auto) {
return [];
}
var oppositePlacement = getOppositePlacement(placement);
return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
}
function flip(_ref) {
var state = _ref.state,
options = _ref.options,
name = _ref.name;
if (state.modifiersData[name]._skip) {
return;
}
var _options$mainAxis = options.mainAxis,
checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
_options$altAxis = options.altAxis,
checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
specifiedFallbackPlacements = options.fallbackPlacements,
padding = options.padding,
boundary = options.boundary,
rootBoundary = options.rootBoundary,
altBoundary = options.altBoundary,
_options$flipVariatio = options.flipVariations,
flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
allowedAutoPlacements = options.allowedAutoPlacements;
var preferredPlacement = state.options.placement;
var basePlacement = getBasePlacement(preferredPlacement);
var isBasePlacement = basePlacement === preferredPlacement;
var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {
placement: placement,
boundary: boundary,
rootBoundary: rootBoundary,
padding: padding,
flipVariations: flipVariations,
allowedAutoPlacements: allowedAutoPlacements
}) : placement);
}, []);
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var checksMap = new Map();
var makeFallbackChecks = true;
var firstFittingPlacement = placements[0];
for (var i = 0; i < placements.length; i++) {
var placement = placements[i];
var _basePlacement = getBasePlacement(placement);
var isStartVariation = getVariation(placement) === start;
var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
var len = isVertical ? 'width' : 'height';
var overflow = detectOverflow(state, {
placement: placement,
boundary: boundary,
rootBoundary: rootBoundary,
altBoundary: altBoundary,
padding: padding
});
var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
if (referenceRect[len] > popperRect[len]) {
mainVariationSide = getOppositePlacement(mainVariationSide);
}
var altVariationSide = getOppositePlacement(mainVariationSide);
var checks = [];
if (checkMainAxis) {
checks.push(overflow[_basePlacement] <= 0);
}
if (checkAltAxis) {
checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
}
if (checks.every(function (check) {
return check;
})) {
firstFittingPlacement = placement;
makeFallbackChecks = false;
break;
}
checksMap.set(placement, checks);
}
if (makeFallbackChecks) {
// `2` may be desired in some cases – research later
var numberOfChecks = flipVariations ? 3 : 1;
var _loop = function _loop(_i) {
var fittingPlacement = placements.find(function (placement) {
var checks = checksMap.get(placement);
if (checks) {
return checks.slice(0, _i).every(function (check) {
return check;
});
}
});
if (fittingPlacement) {
firstFittingPlacement = fittingPlacement;
return "break";
}
};
for (var _i = numberOfChecks; _i > 0; _i--) {
var _ret = _loop(_i);
if (_ret === "break") break;
}
}
if (state.placement !== firstFittingPlacement) {
state.modifiersData[name]._skip = true;
state.placement = firstFittingPlacement;
state.reset = true;
}
} // eslint-disable-next-line import/no-unused-modules
var flip$1 = {
name: 'flip',
enabled: true,
phase: 'main',
fn: flip,
requiresIfExists: ['offset'],
data: {
_skip: false
}
};
function getSideOffsets(overflow, rect, preventedOffsets) {
if (preventedOffsets === void 0) {
preventedOffsets = {
x: 0,
y: 0
};
}
return {
top: overflow.top - rect.height - preventedOffsets.y,
right: overflow.right - rect.width + preventedOffsets.x,
bottom: overflow.bottom - rect.height + preventedOffsets.y,
left: overflow.left - rect.width - preventedOffsets.x
};
}
function isAnySideFullyClipped(overflow) {
return [top, right, bottom, left].some(function (side) {
return overflow[side] >= 0;
});
}
function hide(_ref) {
var state = _ref.state,
name = _ref.name;
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var preventedOffsets = state.modifiersData.preventOverflow;
var referenceOverflow = detectOverflow(state, {
elementContext: 'reference'
});
var popperAltOverflow = detectOverflow(state, {
altBoundary: true
});
var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
state.modifiersData[name] = {
referenceClippingOffsets: referenceClippingOffsets,
popperEscapeOffsets: popperEscapeOffsets,
isReferenceHidden: isReferenceHidden,
hasPopperEscaped: hasPopperEscaped
};
state.attributes.popper = Object.assign({}, state.attributes.popper, {
'data-popper-reference-hidden': isReferenceHidden,
'data-popper-escaped': hasPopperEscaped
});
} // eslint-disable-next-line import/no-unused-modules
var hide$1 = {
name: 'hide',
enabled: true,
phase: 'main',
requiresIfExists: ['preventOverflow'],
fn: hide
};
function distanceAndSkiddingToXY(placement, rects, offset) {
var basePlacement = getBasePlacement(placement);
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
placement: placement
})) : offset,
skidding = _ref[0],
distance = _ref[1];
skidding = skidding || 0;
distance = (distance || 0) * invertDistance;
return [left, right].indexOf(basePlacement) >= 0 ? {
x: distance,
y: skidding
} : {
x: skidding,
y: distance
};
}
function offset(_ref2) {
var state = _ref2.state,
options = _ref2.options,
name = _ref2.name;
var _options$offset = options.offset,
offset = _options$offset === void 0 ? [0, 0] : _options$offset;
var data = placements.reduce(function (acc, placement) {
acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
return acc;
}, {});
var _data$state$placement = data[state.placement],
x = _data$state$placement.x,
y = _data$state$placement.y;
if (state.modifiersData.popperOffsets != null) {
state.modifiersData.popperOffsets.x += x;
state.modifiersData.popperOffsets.y += y;
}
state.modifiersData[name] = data;
} // eslint-disable-next-line import/no-unused-modules
var offset$1 = {
name: 'offset',
enabled: true,
phase: 'main',
requires: ['popperOffsets'],
fn: offset
};
function popperOffsets(_ref) {
var state = _ref.state,
name = _ref.name;
// Offsets are the actual position the popper needs to have to be
// properly positioned near its reference element
// This is the most basic placement, and will be adjusted by
// the modifiers in the next step
state.modifiersData[name] = computeOffsets({
reference: state.rects.reference,
element: state.rects.popper,
strategy: 'absolute',
placement: state.placement
});
} // eslint-disable-next-line import/no-unused-modules
var popperOffsets$1 = {
name: 'popperOffsets',
enabled: true,
phase: 'read',
fn: popperOffsets,
data: {}
};
function getAltAxis(axis) {
return axis === 'x' ? 'y' : 'x';
}
function preventOverflow(_ref) {
var state = _ref.state,
options = _ref.options,
name = _ref.name;
var _options$mainAxis = options.mainAxis,
checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
_options$altAxis = options.altAxis,
checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
boundary = options.boundary,
rootBoundary = options.rootBoundary,
altBoundary = options.altBoundary,
padding = options.padding,
_options$tether = options.tether,
tether = _options$tether === void 0 ? true : _options$tether,
_options$tetherOffset = options.tetherOffset,
tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
var overflow = detectOverflow(state, {
boundary: boundary,
rootBoundary: rootBoundary,
padding: padding,
altBoundary: altBoundary
});
var basePlacement = getBasePlacement(state.placement);
var variation = getVariation(state.placement);
var isBasePlacement = !variation;
var mainAxis = getMainAxisFromPlacement(basePlacement);
var altAxis = getAltAxis(mainAxis);
var popperOffsets = state.modifiersData.popperOffsets;
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
placement: state.placement
})) : tetherOffset;
var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {
mainAxis: tetherOffsetValue,
altAxis: tetherOffsetValue
} : Object.assign({
mainAxis: 0,
altAxis: 0
}, tetherOffsetValue);
var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
var data = {
x: 0,
y: 0
};
if (!popperOffsets) {
return;
}
if (checkMainAxis) {
var _offsetModifierState$;
var mainSide = mainAxis === 'y' ? top : left;
var altSide = mainAxis === 'y' ? bottom : right;
var len = mainAxis === 'y' ? 'height' : 'width';
var offset = popperOffsets[mainAxis];
var min$1 = offset + overflow[mainSide];
var max$1 = offset - overflow[altSide];
var additive = tether ? -popperRect[len] / 2 : 0;
var minLen = variation === start ? referenceRect[len] : popperRect[len];
var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go
// outside the reference bounds
var arrowElement = state.elements.arrow;
var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
width: 0,
height: 0
};
var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();
var arrowPaddingMin = arrowPaddingObject[mainSide];
var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want
// to include its full size in the calculation. If the reference is small
// and near the edge of a boundary, the popper can overflow even if the
// reference is not overflowing as well (e.g. virtual elements with no
// width or height)
var arrowLen = within(0, referenceRect[len], arrowRect[len]);
var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
var tetherMax = offset + maxOffset - offsetModifierValue;
var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
popperOffsets[mainAxis] = preventedOffset;
data[mainAxis] = preventedOffset - offset;
}
if (checkAltAxis) {
var _offsetModifierState$2;
var _mainSide = mainAxis === 'x' ? top : left;
var _altSide = mainAxis === 'x' ? bottom : right;
var _offset = popperOffsets[altAxis];
var _len = altAxis === 'y' ? 'height' : 'width';
var _min = _offset + overflow[_mainSide];
var _max = _offset - overflow[_altSide];
var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
popperOffsets[altAxis] = _preventedOffset;
data[altAxis] = _preventedOffset - _offset;
}
state.modifiersData[name] = data;
} // eslint-disable-next-line import/no-unused-modules
var preventOverflow$1 = {
name: 'preventOverflow',
enabled: true,
phase: 'main',
fn: preventOverflow,
requiresIfExists: ['offset']
};
function getHTMLElementScroll(element) {
return {
scrollLeft: element.scrollLeft,
scrollTop: element.scrollTop
};
}
function getNodeScroll(node) {
if (node === getWindow(node) || !isHTMLElement(node)) {
return getWindowScroll(node);
} else {
return getHTMLElementScroll(node);
}
}
function isElementScaled(element) {
var rect = element.getBoundingClientRect();
var scaleX = round(rect.width) / element.offsetWidth || 1;
var scaleY = round(rect.height) / element.offsetHeight || 1;
return scaleX !== 1 || scaleY !== 1;
} // Returns the composite rect of an element relative to its offsetParent.
// Composite means it takes into account transforms as well as layout.
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
if (isFixed === void 0) {
isFixed = false;
}
var isOffsetParentAnElement = isHTMLElement(offsetParent);
var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
var documentElement = getDocumentElement(offsetParent);
var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
var scroll = {
scrollLeft: 0,
scrollTop: 0
};
var offsets = {
x: 0,
y: 0
};
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
if (getNodeName(offsetParent) !== 'body' ||
// https://github.com/popperjs/popper-core/issues/1078
isScrollParent(documentElement)) {
scroll = getNodeScroll(offsetParent);
}
if (isHTMLElement(offsetParent)) {
offsets = getBoundingClientRect(offsetParent, true);
offsets.x += offsetParent.clientLeft;
offsets.y += offsetParent.clientTop;
} else if (documentElement) {
offsets.x = getWindowScrollBarX(documentElement);
}
}
return {
x: rect.left + scroll.scrollLeft - offsets.x,
y: rect.top + scroll.scrollTop - offsets.y,
width: rect.width,
height: rect.height
};
}
function order(modifiers) {
var map = new Map();
var visited = new Set();
var result = [];
modifiers.forEach(function (modifier) {
map.set(modifier.name, modifier);
}); // On visiting object, check for its dependencies and visit them recursively
function sort(modifier) {
visited.add(modifier.name);
var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
requires.forEach(function (dep) {
if (!visited.has(dep)) {
var depModifier = map.get(dep);
if (depModifier) {
sort(depModifier);
}
}
});
result.push(modifier);
}
modifiers.forEach(function (modifier) {
if (!visited.has(modifier.name)) {
// check for visited object
sort(modifier);
}
});
return result;
}
function orderModifiers(modifiers) {
// order based on dependencies
var orderedModifiers = order(modifiers); // order based on phase
return modifierPhases.reduce(function (acc, phase) {
return acc.concat(orderedModifiers.filter(function (modifier) {
return modifier.phase === phase;
}));
}, []);
}
function debounce(fn) {
var pending;
return function () {
if (!pending) {
pending = new Promise(function (resolve) {
Promise.resolve().then(function () {
pending = undefined;
resolve(fn());
});
});
}
return pending;
};
}
function mergeByName(modifiers) {
var merged = modifiers.reduce(function (merged, current) {
var existing = merged[current.name];
merged[current.name] = existing ? Object.assign({}, existing, current, {
options: Object.assign({}, existing.options, current.options),
data: Object.assign({}, existing.data, current.data)
}) : current;
return merged;
}, {}); // IE11 does not support Object.values
return Object.keys(merged).map(function (key) {
return merged[key];
});
}
var DEFAULT_OPTIONS = {
placement: 'bottom',
modifiers: [],
strategy: 'absolute'
};
function areValidElements() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return !args.some(function (element) {
return !(element && typeof element.getBoundingClientRect === 'function');
});
}
function popperGenerator(generatorOptions) {
if (generatorOptions === void 0) {
generatorOptions = {};
}
var _generatorOptions = generatorOptions,
_generatorOptions$def = _generatorOptions.defaultModifiers,
defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
_generatorOptions$def2 = _generatorOptions.defaultOptions,
defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
return function createPopper(reference, popper, options) {
if (options === void 0) {
options = defaultOptions;
}
var state = {
placement: 'bottom',
orderedModifiers: [],
options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
modifiersData: {},
elements: {
reference: reference,
popper: popper
},
attributes: {},
styles: {}
};
var effectCleanupFns = [];
var isDestroyed = false;
var instance = {
state: state,
setOptions: function setOptions(setOptionsAction) {
var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;
cleanupModifierEffects();
state.options = Object.assign({}, defaultOptions, state.options, options);
state.scrollParents = {
reference: isElement$1(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
popper: listScrollParents(popper)
}; // Orders the modifiers based on their dependencies and `phase`
// properties
var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers
state.orderedModifiers = orderedModifiers.filter(function (m) {
return m.enabled;
});
runModifierEffects();
return instance.update();
},
// Sync update – it will always be executed, even if not necessary. This
// is useful for low frequency updates where sync behavior simplifies the
// logic.
// For high frequency updates (e.g. `resize` and `scroll` events), always
// prefer the async Popper#update method
forceUpdate: function forceUpdate() {
if (isDestroyed) {
return;
}
var _state$elements = state.elements,
reference = _state$elements.reference,
popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements
// anymore
if (!areValidElements(reference, popper)) {
return;
} // Store the reference and popper rects to be read by modifiers
state.rects = {
reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),
popper: getLayoutRect(popper)
}; // Modifiers have the ability to reset the current update cycle. The
// most common use case for this is the `flip` modifier changing the
// placement, which then needs to re-run all the modifiers, because the
// logic was previously ran for the previous placement and is therefore
// stale/incorrect
state.reset = false;
state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier
// is filled with the initial data specified by the modifier. This means
// it doesn't persist and is fresh on each update.
// To ensure persistent data, use `${name}#persistent`
state.orderedModifiers.forEach(function (modifier) {
return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
});
for (var index = 0; index < state.orderedModifiers.length; index++) {
if (state.reset === true) {
state.reset = false;
index = -1;
continue;
}
var _state$orderedModifie = state.orderedModifiers[index],
fn = _state$orderedModifie.fn,
_state$orderedModifie2 = _state$orderedModifie.options,
_options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
name = _state$orderedModifie.name;
if (typeof fn === 'function') {
state = fn({
state: state,
options: _options,
name: name,
instance: instance
}) || state;
}
}
},
// Async and optimistically optimized update – it will not be executed if
// not necessary (debounced to run at most once-per-tick)
update: debounce(function () {
return new Promise(function (resolve) {
instance.forceUpdate();
resolve(state);
});
}),
destroy: function destroy() {
cleanupModifierEffects();
isDestroyed = true;
}
};
if (!areValidElements(reference, popper)) {
return instance;
}
instance.setOptions(options).then(function (state) {
if (!isDestroyed && options.onFirstUpdate) {
options.onFirstUpdate(state);
}
}); // Modifiers have the ability to execute arbitrary code before the first
// update cycle runs. They will be executed in the same order as the update
// cycle. This is useful when a modifier adds some persistent data that
// other modifiers need to use, but the modifier is run after the dependent
// one.
function runModifierEffects() {
state.orderedModifiers.forEach(function (_ref) {
var name = _ref.name,
_ref$options = _ref.options,
options = _ref$options === void 0 ? {} : _ref$options,
effect = _ref.effect;
if (typeof effect === 'function') {
var cleanupFn = effect({
state: state,
name: name,
instance: instance,
options: options
});
var noopFn = function noopFn() {};
effectCleanupFns.push(cleanupFn || noopFn);
}
});
}
function cleanupModifierEffects() {
effectCleanupFns.forEach(function (fn) {
return fn();
});
effectCleanupFns = [];
}
return instance;
};
}
var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
var createPopper = /*#__PURE__*/popperGenerator({
defaultModifiers: defaultModifiers
}); // eslint-disable-next-line import/no-unused-modules
var PopoverProps = {
closeOnClickOutside: {
type: Boolean,
default: true
},
content: {
type: [String, Function]
},
default: {
type: [String, Function]
},
placement: {
type: String,
default: "top",
validator: function validator(val) {
if (!val) return true;
return ["top", "left", "right", "bottom", "top-left", "top-right", "bottom-left", "bottom-right", "left-top", "left-bottom", "right-top", "right-bottom"].includes(val);
}
},
showArrow: {
type: Boolean,
default: true
},
theme: {
type: String,
default: "dark",
validator: function validator(val) {
if (!val) return true;
return ["dark", "light", "brand", "success", "warning", "error"].includes(val);
}
},
triggerElement: {
type: [String, Function]
},
visible: {
type: Boolean,
default: void 0
},
modelValue: {
type: Boolean,
default: void 0
},
defaultVisible: Boolean,
onVisibleChange: Function
};
function _isSlot$1(s) {
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
}
var prefix$7 = config.prefix;
var _Popover = vue.defineComponent({
name: "".concat(prefix$7, "-popover"),
props: PopoverProps,
emits: ["visible-change", "update:visible", "update:modelValue"],
setup: function setup(props, context) {
var popoverClass = usePrefixClass("popover");
var renderTNodeJSX = useTNodeJSX();
var renderContent = useContent();
var _toRefs = vue.toRefs(props),
visible = _toRefs.visible,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(visible, modelValue, props.defaultVisible, props.onVisibleChange, "visible"),
_useVModel2 = _slicedToArray(_useVModel, 2),
currentVisible = _useVModel2[0],
setCurrentVisible = _useVModel2[1];
var referenceRef = vue.ref();
var popoverRef = vue.ref();
var contentClasses = vue.computed(function () {
return ["".concat(popoverClass.value, "__content"), "".concat(popoverClass.value, "--").concat(props.theme), props.showArrow ? "".concat(popoverClass.value, "__content--arrow") : ""];
});
var popper;
var getPopperPlacement = function getPopperPlacement(placement) {
return placement === null || placement === void 0 ? void 0 : placement.replace(/-(left|top)$/, "-start").replace(/-(right|bottom)$/, "-end");
};
var getPopoverOptions = function getPopoverOptions() {
return {
placement: getPopperPlacement(props.placement),
modifiers: [{
name: "arrow",
options: {
padding: placementPadding
}
}]
};
};
var placementPadding = function placementPadding(_ref) {
var popper2 = _ref.popper,
reference = _ref.reference,
placement = _ref.placement;
var horizontal = ["top", "bottom"];
var vertical = ["left", "right"];
var isBase = [].concat(horizontal, vertical).find(function (item) {
return item === placement;
});
if (isBase) {
return 0;
}
var width = reference.width,
x = reference.x;
var popperWidth = popper2.width,
popperHeight = popper2.height;
var windowWidth = window.screen.width;
var isHorizontal = horizontal.find(function (item) {
return placement.includes(item);
});
var isEnd = placement.includes("end");
var small = function small(a, b) {
return a < b ? a : b;
};
if (isHorizontal) {
var padding = isEnd ? small(width + x, popperWidth) : small(windowWidth - x, popperWidth);
return _defineProperty$3({}, isEnd ? "left" : "right", padding - 28);
}
var isVertical = vertical.find(function (item) {
return placement.includes(item);
});
if (isVertical) {
return _defineProperty$3({}, isEnd ? "top" : "bottom", popperHeight - 28);
}
};
var updatePopper = function updatePopper() {
if (currentVisible.value && referenceRef.value && popoverRef.value) {
popper = createPopper(referenceRef.value, popoverRef.value, getPopoverOptions());
}
return null;
};
var destroyPopper = function destroyPopper() {
if (popper) {
var _popper;
(_popper = popper) === null || _popper === void 0 || _popper.destroy();
popper = null;
}
};
var onClickAway = function onClickAway() {
if (currentVisible.value && props.closeOnClickOutside) {
setCurrentVisible(false);
}
};
var closeOnClickOutside = vue.ref(useClickAway([referenceRef, popoverRef], function () {
onClickAway();
}, {
detectIframe: true
}));
var onClickReference = function onClickReference() {
setCurrentVisible(!currentVisible.value);
};
vue.onUnmounted(function () {
var _closeOnClickOutside$;
(_closeOnClickOutside$ = closeOnClickOutside.value) === null || _closeOnClickOutside$ === void 0 || _closeOnClickOutside$.call(closeOnClickOutside);
});
vue.watch(function () {
return props.placement;
}, function () {
destroyPopper();
updatePopper();
});
var renderArrow = function renderArrow() {
return props.showArrow && vue.createVNode("div", {
"class": "".concat(popoverClass.value, "__arrow"),
"data-popper-arrow": true
}, null);
};
var renderContentNode = function renderContentNode() {
return currentVisible.value && vue.createVNode("div", {
"ref": popoverRef,
"data-popper-placement": true,
"class": "".concat(popoverClass.value)
}, [vue.createVNode("div", {
"class": contentClasses.value
}, [renderTNodeJSX("content"), renderArrow()])]);
};
return function () {
var _slot;
var triggerElementContent = renderContent("default", "triggerElement");
return vue.createVNode(vue.Fragment, null, [vue.createVNode("div", {
"ref": referenceRef,
"class": "".concat(popoverClass.value, "__wrapper"),
"onClick": onClickReference
}, [triggerElementContent]), vue.createVNode(vue.Transition, {
"name": "".concat(popoverClass.value, "--animation"),
"appear": true,
"onEnter": updatePopper,
"onAfterLeave": destroyPopper
}, _isSlot$1(_slot = renderContentNode()) ? _slot : {
default: function _default() {
return [_slot];
}
})]);
};
}
});
var Popover = withInstall(_Popover);
var guideProps = {
backButtonProps: {
type: Object
},
counter: {
type: Function
},
current: {
type: Number,
default: void 0
},
modelValue: {
type: Number,
default: void 0
},
defaultCurrent: {
type: Number
},
finishButtonProps: {
type: Object
},
hideCounter: Boolean,
hideSkip: Boolean,
highlightPadding: {
type: Number,
default: 8
},
mode: {
type: String,
default: "popover",
validator: function validator(val) {
if (!val) return true;
return ["popover", "dialog"].includes(val);
}
},
nextButtonProps: {
type: Object
},
showOverlay: {
type: Boolean,
default: true
},
skipButtonProps: {
type: Object
},
steps: {
type: Array
},
zIndex: {
type: Number,
default: 999999
},
onBack: Function,
onChange: Function,
onFinish: Function,
onNextStepClick: Function,
onSkip: Function
};
function getElmCssPropValue(element, propName) {
var propValue = "";
if (document.defaultView && document.defaultView.getComputedStyle) {
propValue = document.defaultView.getComputedStyle(element, null).getPropertyValue(propName);
}
if (propValue && propValue.toLowerCase) {
return propValue.toLowerCase();
}
return propValue;
}
function isFixed(element) {
var p = element.parentNode;
if (!p || p.nodeName === "HTML") {
return false;
}
if (getElmCssPropValue(element, "position") === "fixed") {
return true;
}
return isFixed(p);
}
function getRelativePosition(elm) {
var relativeElm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.body;
var _getWindowScroll = getWindowScroll$1(),
scrollTop = _getWindowScroll.scrollTop,
scrollLeft = _getWindowScroll.scrollLeft;
var _elm$getBoundingClien = elm.getBoundingClientRect(),
elmTop = _elm$getBoundingClien.top,
elmLeft = _elm$getBoundingClien.left;
var _relativeElm$getBound = relativeElm.getBoundingClientRect(),
relElmTop = _relativeElm$getBound.top,
relElmLeft = _relativeElm$getBound.left;
var relativeElmPosition = getElmCssPropValue(relativeElm, "position");
if (relativeElm.tagName.toLowerCase() !== "body" && relativeElmPosition === "relative" || relativeElmPosition === "sticky") {
return {
top: elmTop - relElmTop,
left: elmLeft - relElmLeft
};
}
if (isFixed(elm)) {
return {
top: elmTop,
left: elmLeft
};
}
return {
top: elmTop + scrollTop,
left: elmLeft + scrollLeft
};
}
function getTargetElm(elm) {
if (elm) {
var _process;
var targetElement = null;
if (isString(elm)) {
targetElement = document.querySelector(elm);
} else if (isFunction(elm)) {
targetElement = elm();
} else {
throw new Error("elm should be string or function");
}
if (targetElement) {
return targetElement;
}
if (((_process = process) === null || _process === void 0 || (_process = _process.env) === null || _process === void 0 ? void 0 : _process.NODE_ENV) !== "test") {
throw new Error("There is no element with given.");
}
} else {
return document.body;
}
}
function getScrollParent$1(element) {
var style = window.getComputedStyle(element);
var excludeStaticParent = style.position === "absolute";
var overflowRegex = /(auto|scroll)/;
if (style.position === "fixed") return document.body;
for (var parent = element; parent.parentElement;) {
parent = parent.parentElement;
style = window.getComputedStyle(parent);
if (excludeStaticParent && style.position === "static") {
continue;
}
if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) return parent;
}
return document.body;
}
function scrollToParentVisibleArea(element) {
var parent = getScrollParent$1(element);
if (parent === document.body) return;
if (elementInViewport(element, parent)) return;
parent.scrollTop = element.offsetTop - parent.offsetTop;
}
function scrollToElm(elm) {
var rect = elm.getBoundingClientRect();
if (!elementInViewport(elm)) {
var winHeight = getWindowSize().height;
window.scrollTo({
top: rect.top - (winHeight / 2 - rect.height / 2),
behavior: "smooth"
});
}
}
function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$6 = config.prefix;
var _Guide = vue.defineComponent({
name: "".concat(prefix$6, "-guide"),
components: {
TPopover: Popover,
TButton: Button,
TPopup: Popup
},
props: guideProps,
setup: function setup(props, context) {
var _toRefs = vue.toRefs(props),
current = _toRefs.current,
modelValue = _toRefs.modelValue,
finishButtonProps = _toRefs.finishButtonProps,
hideCounter = _toRefs.hideCounter,
hideSkip = _toRefs.hideSkip,
steps = _toRefs.steps,
zIndex = _toRefs.zIndex;
var _useVModel = useVModel(current, modelValue, props.defaultCurrent, props.onChange, "current"),
_useVModel2 = _slicedToArray(_useVModel, 2),
innerCurrent = _useVModel2[0],
setInnerCurrent = _useVModel2[1];
var _useConfig = useConfig("guide"),
globalConfig = _useConfig.globalConfig;
var guideClass = usePrefixClass("guide");
var LOCK_CLASS = "".concat(guideClass.value, "--lock");
var overlayLayerRef = vue.ref();
var highlightLayerRef = vue.ref();
var referenceLayerRef = vue.ref();
var currentHighlightLayerElm = vue.ref();
var popoverWrapperRef = vue.ref();
var actived = vue.ref(false);
var stepsTotal = vue.computed(function () {
return steps.value.length;
});
var currentStepInfo = vue.computed(function () {
return steps.value[innerCurrent.value];
});
var isPopover = vue.computed(function () {
return getCurrentCrossProps("mode") === "popover";
});
var popoverVisible = vue.ref(false);
var isPopoverCenter = vue.computed(function () {
return isPopover.value && currentStepInfo.value.placement === "center";
});
var stepProps = vue.computed(function () {
if (isPopover.value) {
return _objectSpread$5({
visible: popoverVisible.value,
placement: isPopoverCenter.value ? "bottom" : currentStepInfo.value.placement,
theme: "light",
showArrow: false
}, currentStepInfo.value.popoverProps);
}
return {
visible: popoverVisible.value,
zIndex: zIndex.value,
placement: "center",
class: "".concat(guideClass.value, "__dialog"),
overlayProps: {
zIndex: zIndex.value - 1
}
};
});
var currentElmIsFixed = vue.computed(function () {
return isFixed(currentHighlightLayerElm.value || document.body);
});
var getCurrentCrossProps = function getCurrentCrossProps(propsName) {
var _currentStepInfo$valu;
return (_currentStepInfo$valu = currentStepInfo.value[propsName]) !== null && _currentStepInfo$valu !== void 0 ? _currentStepInfo$valu : props[propsName];
};
var hWithParams = function hWithParams() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
currentStepInfo: currentStepInfo.value
};
var newH = function newH() {
return vue.h.apply(void 0, arguments);
};
return Object.assign(newH, params);
};
var currentCustomHighlightContent = vue.computed(function () {
var highlightContent = currentStepInfo.value.highlightContent;
var node = highlightContent;
if (isFunction(highlightContent)) {
node = highlightContent(hWithParams());
} else if (context.slots.highlightContent) {
node = context.slots.highlightContent(hWithParams());
} else if (context.slots["highlight-content"]) {
node = context.slots["highlight-content"](hWithParams());
}
if (node) {
if (!node.props) node.props = {};
node.props.class = node.props.class || "";
}
return node;
});
var showCustomHighlightContent = vue.computed(function () {
return Boolean(currentCustomHighlightContent.value && isPopover.value);
});
var showOverlay = vue.computed(function () {
return getCurrentCrossProps("showOverlay");
});
var highlightClass = vue.computed(function () {
return ["".concat(guideClass.value, "__highlight"), "".concat(guideClass.value, "__highlight--").concat(isPopover.value ? "popover" : "dialog"), "".concat(guideClass.value, "--").concat(currentElmIsFixed.value && isPopover.value ? "fixed" : "absolute")];
});
var maskClass = vue.computed(function () {
return ["".concat(guideClass.value, "__highlight--").concat(showOverlay.value ? "mask" : "nomask")];
});
var wrapperClass = vue.computed(function () {
return ["".concat(guideClass.value, "__wrapper"), "".concat(guideClass.value, "--").concat(currentElmIsFixed.value ? "fixed" : "absolute"), _defineProperty$3({}, "".concat(guideClass.value, "__wrapper--content"), !!currentStepInfo.value.content)];
});
var popoverClass = vue.computed(function () {
return ["".concat(guideClass.value, "__reference")];
});
var contentClass = vue.computed(function () {
return ["".concat(guideClass.value, "__content--").concat(isPopover.value ? "popover" : "dialog")];
});
var footerClass = vue.computed(function () {
return ["".concat(guideClass.value, "__footer"), "".concat(guideClass.value, "__footer--").concat(isPopover.value ? "popover" : "dialog")];
});
var isLast = vue.computed(function () {
return innerCurrent.value === stepsTotal.value - 1;
});
var buttonSize = vue.computed(function () {
return isPopover.value ? "extra-small" : "medium";
});
var setHighlightLayerPosition = function setHighlightLayerPosition(highlightLayer) {
var isReference = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var _getRelativePosition = getRelativePosition(currentHighlightLayerElm.value),
top = _getRelativePosition.top,
left = _getRelativePosition.left;
var _currentHighlightLaye = currentHighlightLayerElm.value.getBoundingClientRect(),
width = _currentHighlightLaye.width,
height = _currentHighlightLaye.height;
var highlightPadding = getCurrentCrossProps("highlightPadding");
if (isPopover.value) {
width += highlightPadding * 2;
height += highlightPadding * 2;
top -= highlightPadding;
left -= highlightPadding;
} else {
var _getWindowScroll = getWindowScroll$1(),
scrollTop = _getWindowScroll.scrollTop,
scrollLeft = _getWindowScroll.scrollLeft;
top += scrollTop;
left += scrollLeft;
}
var style = {
top: "".concat(top, "px"),
left: "".concat(left, "px")
};
if (showCustomHighlightContent.value) {
if (isReference) {
var _highlightLayerRef$va = highlightLayerRef.value.getBoundingClientRect(),
width2 = _highlightLayerRef$va.width,
height2 = _highlightLayerRef$va.height;
Object.assign(style, {
width: "".concat(width2, "px"),
height: "".concat(height2, "px")
});
} else {
Object.assign(style, {
width: "auto",
height: "auto"
});
}
} else {
Object.assign(style, {
width: "".concat(width, "px"),
height: "".concat(height, "px")
});
}
setStyle(highlightLayer, style);
};
var setReferenceFullW = function setReferenceFullW(referenceElements) {
var style = {
left: 0,
width: "100vw"
};
referenceElements.forEach(function (elem) {
return setStyle(elem, style);
});
};
var showPopoverGuide = function showPopoverGuide() {
vue.nextTick(function () {
currentHighlightLayerElm.value = getTargetElm(currentStepInfo.value.element);
if (!currentHighlightLayerElm.value) return;
scrollToParentVisibleArea(currentHighlightLayerElm.value);
setHighlightLayerPosition(highlightLayerRef.value);
setHighlightLayerPosition(popoverWrapperRef.value, true);
setHighlightLayerPosition(referenceLayerRef.value, true);
scrollToElm(currentHighlightLayerElm.value);
isPopoverCenter.value && setReferenceFullW([referenceLayerRef.value, popoverWrapperRef.value]);
});
};
var showDialogGuide = function showDialogGuide() {
vue.nextTick(function () {
currentHighlightLayerElm.value = getTargetElm(currentStepInfo.value.element);
scrollToParentVisibleArea(currentHighlightLayerElm.value);
setHighlightLayerPosition(highlightLayerRef.value);
scrollToElm(currentHighlightLayerElm.value);
});
};
var showGuide = function showGuide() {
if (isPopover.value) {
showPopoverGuide();
} else {
showDialogGuide();
}
vue.nextTick(function () {
popoverVisible.value = true;
});
};
var destroyGuide = function destroyGuide() {
var _highlightLayerRef$va2, _overlayLayerRef$valu;
(_highlightLayerRef$va2 = highlightLayerRef.value) === null || _highlightLayerRef$va2 === void 0 || _highlightLayerRef$va2.parentNode.removeChild(highlightLayerRef.value);
(_overlayLayerRef$valu = overlayLayerRef.value) === null || _overlayLayerRef$valu === void 0 || _overlayLayerRef$valu.parentNode.removeChild(overlayLayerRef.value);
removeClass(document.body, LOCK_CLASS);
};
var renderButtonContent = function renderButtonContent(buttonProps, defaultContent) {
var _ref2 = buttonProps || {},
content = _ref2.content;
return isFunction(content) ? content(vue.h) : content || defaultContent;
};
var handleSkip = function handleSkip(e) {
var _props$onSkip;
var total = stepsTotal.value;
actived.value = false;
setInnerCurrent(-1, {
e: e,
total: total
});
(_props$onSkip = props.onSkip) === null || _props$onSkip === void 0 || _props$onSkip.call(props, {
e: e,
current: innerCurrent.value,
total: total
});
};
var handleNext = function handleNext(e) {
var _props$onNextStepClic;
var total = stepsTotal.value;
setInnerCurrent(innerCurrent.value + 1, {
e: e,
total: total
});
(_props$onNextStepClic = props.onNextStepClick) === null || _props$onNextStepClic === void 0 || _props$onNextStepClic.call(props, {
e: e,
next: innerCurrent.value + 1,
current: innerCurrent.value,
total: total
});
};
var handleFinish = function handleFinish(e) {
var _props$onFinish;
var total = stepsTotal.value;
actived.value = false;
setInnerCurrent(-1, {
e: e,
total: total
});
(_props$onFinish = props.onFinish) === null || _props$onFinish === void 0 || _props$onFinish.call(props, {
e: e,
current: innerCurrent.value,
total: total
});
};
var handleBack = function handleBack(e) {
var _props$onBack;
var total = stepsTotal.value;
setInnerCurrent(0, {
e: e,
total: total
});
(_props$onBack = props.onBack) === null || _props$onBack === void 0 || _props$onBack.call(props, {
e: e,
current: innerCurrent.value,
total: total
});
};
var contentProps = vue.computed(function () {
return {
handleSkip: handleSkip,
handleNext: handleNext,
handleFinish: handleFinish,
handleBack: handleBack,
current: innerCurrent.value,
total: stepsTotal.value
};
});
var initGuide = function initGuide() {
if (innerCurrent.value >= 0 && innerCurrent.value < steps.value.length) {
if (!actived.value) {
actived.value = true;
addClass(document.body, LOCK_CLASS);
}
showGuide();
}
};
vue.watch(innerCurrent, function (val) {
if (val >= 0 && val < stepsTotal.value) {
isPopover.value && (popoverVisible.value = false);
initGuide();
} else {
actived.value = false;
destroyGuide();
}
});
vue.onMounted(function () {
initGuide();
});
return function () {
var renderStepContent = function renderStepContent() {
var _finishButtonProps$va;
var renderTitleNode = function renderTitleNode() {
var title = currentStepInfo.value.title;
var renderTitle = null;
if (isFunction(title)) {
renderTitle = title(hWithParams());
} else if (context.slots.title) {
renderTitle = context.slots.title(hWithParams());
} else if (typeof title === "string") {
renderTitle = title;
} else if (title) {
renderTitle = vue.h(title);
}
return renderTitle;
};
var renderBodyNode = function renderBodyNode() {
var body = currentStepInfo.value.body;
var renderBody = null;
if (isFunction(body)) {
renderBody = body(hWithParams());
} else if (context.slots.body) {
renderBody = context.slots.body(hWithParams());
} else if (typeof body === "string") {
renderBody = body;
} else if (body) {
renderBody = vue.h(body);
}
return renderBody;
};
var renderCounterNode = function renderCounterNode() {
var params = {
total: stepsTotal.value,
current: innerCurrent.value
};
var renderCounter = null;
var counter = props.counter;
if (isFunction(counter)) {
renderCounter = counter(vue.h, params);
} else if (context.slots.counter) {
renderCounter = context.slots.counter(hWithParams(params));
} else if (counter) {
renderCounter = vue.h(counter, params);
}
return renderCounter || " (".concat(innerCurrent.value + 1, "/").concat(stepsTotal.value, ")");
};
return vue.createVNode("div", {
"class": contentClass.value
}, [vue.createVNode("div", {
"class": "".concat(guideClass.value, "__tooltip")
}, [vue.createVNode("div", {
"class": "".concat(guideClass.value, "__title")
}, [renderTitleNode()]), vue.createVNode("div", {
"class": "".concat(guideClass.value, "__desc")
}, [renderBodyNode()])]), vue.createVNode("div", {
"class": footerClass.value
}, [!hideSkip.value && !isLast.value && vue.createVNode(Button, vue.mergeProps({
"key": "skip",
"class": "".concat(guideClass.value, "__skip"),
"theme": "light",
"size": buttonSize.value,
"variant": "base",
"content": globalConfig.value.skip
}, getCurrentCrossProps("skipButtonProps"), {
"onClick": handleSkip
}), null), !isLast.value && vue.createVNode(Button, vue.mergeProps({
"key": "next",
"class": "".concat(guideClass.value, "__next"),
"theme": "primary",
"size": buttonSize.value,
"variant": "base"
}, getCurrentCrossProps("nextButtonProps"), {
"onClick": handleNext
}), {
content: function content() {
return vue.createVNode(vue.Fragment, null, [renderButtonContent(getCurrentCrossProps("nextButtonProps"), globalConfig.value.next), !hideCounter.value && renderCounterNode()]);
}
}), isLast.value && vue.createVNode(Button, vue.mergeProps({
"key": "back",
"class": "".concat(guideClass.value, "__back"),
"theme": "light",
"size": buttonSize.value,
"variant": "base",
"content": globalConfig.value.back
}, getCurrentCrossProps("backButtonProps"), {
"onClick": handleBack
}), null), isLast.value && vue.createVNode(Button, vue.mergeProps({
"key": "finish",
"class": "".concat(guideClass.value, "__finish"),
"theme": "primary",
"size": buttonSize.value,
"variant": "base"
}, (_finishButtonProps$va = finishButtonProps.value) !== null && _finishButtonProps$va !== void 0 ? _finishButtonProps$va : {}, {
"onClick": handleFinish
}), {
content: function content() {
return vue.createVNode(vue.Fragment, null, [renderButtonContent(finishButtonProps.value, globalConfig.value.finish), !hideCounter.value && renderCounterNode()]);
}
})])]);
};
var renderContentNode = function renderContentNode() {
var content = currentStepInfo.value.content;
var renderContent;
if (isFunction(content)) {
renderContent = content(hWithParams(contentProps.value));
} else if (context.slots.content) {
renderContent = context.slots.content(hWithParams(contentProps.value));
} else if (content) {
renderContent = vue.h(content, contentProps.value);
}
return renderContent;
};
var renderPopover = function renderPopover() {
return vue.createVNode(Popover, stepProps.value, {
triggerElement: function triggerElement() {
return isPopover.value && vue.createVNode("div", {
"ref": referenceLayerRef,
"class": _toConsumableArray(popoverClass.value)
}, null);
},
content: function content() {
return isPopover.value && renderContentNode() ? renderContentNode() : renderStepContent();
}
});
};
var renderPopup = function renderPopup() {
return vue.createVNode(Popup, stepProps.value, {
default: function _default() {
return isPopover.value && renderContentNode() ? renderContentNode() : renderStepContent();
}
});
};
var renderCurrentCustomHighlightContentNode = function renderCurrentCustomHighlightContentNode() {
var highlightContent = currentStepInfo.value.highlightContent;
var node = highlightContent;
if (isFunction(highlightContent)) {
node = highlightContent(hWithParams());
} else if (context.slots.highlightContent) {
node = context.slots.highlightContent(hWithParams());
} else if (context.slots["highlight-content"]) {
node = context.slots["highlight-content"](hWithParams());
}
if (node) {
if (!node.props) node.props = {};
node.props.class = node.props.class || "";
}
return node;
};
return vue.createVNode(vue.Fragment, null, [actived.value && vue.createVNode(vue.Teleport, {
"to": "body"
}, {
default: function _default() {
return [vue.createVNode("div", {
"ref": overlayLayerRef,
"class": "".concat(guideClass.value, "__overlay"),
"style": {
zIndex: "".concat(zIndex.value - 2)
}
}, null), vue.createVNode("div", {
"ref": highlightLayerRef,
"class": [].concat(_toConsumableArray(highlightClass.value), _toConsumableArray(maskClass.value)),
"style": {
zIndex: "".concat(zIndex.value - 1)
}
}, [showCustomHighlightContent.value && renderCurrentCustomHighlightContentNode()]), vue.createVNode("div", {
"ref": popoverWrapperRef,
"class": wrapperClass.value,
"style": {
zIndex: zIndex.value
}
}, [isPopover.value ? renderPopover() : renderPopup()])];
}
})]);
};
}
});
var Guide = withInstall(_Guide);
var props$3 = {
align: {
type: String,
default: "left",
validator: function validator(val) {
if (!val) return true;
return ["left", "center"].includes(val);
}
},
closeBtn: {
type: [String, Boolean, Function],
default: void 0
},
content: {
type: [String, Function]
},
duration: {
type: Number,
default: 3e3
},
gap: {
type: [String, Number, Boolean],
default: 12
},
icon: {
type: [Boolean, Function],
default: true
},
link: {
type: [String, Object, Function]
},
marquee: {
type: [Boolean, Object],
default: false
},
offset: {
type: Array
},
single: {
type: Boolean,
default: true
},
theme: {
type: String,
default: "info",
validator: function validator(val) {
if (!val) return true;
return ["info", "success", "warning", "error"].includes(val);
}
},
visible: {
type: Boolean,
default: void 0
},
modelValue: {
type: Boolean,
default: void 0
},
defaultVisible: Boolean,
zIndex: {
type: Number
},
onCloseBtnClick: Function,
onDurationEnd: Function,
onLinkClick: Function
};
function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$5 = config.prefix;
var iconDefault$1 = {
info: vue.h(InfoCircleFilledIcon),
success: vue.h(CheckCircleFilledIcon),
warning: vue.h(ErrorCircleFilledIcon),
error: vue.h(ErrorCircleFilledIcon)
};
var closeBtnDefault = vue.h(CloseIcon);
var messageIndex = -1;
var Message = vue.defineComponent({
name: "".concat(prefix$5, "-message"),
props: props$3,
setup: function setup(props2, context) {
var messageClass = usePrefixClass("message");
var renderTNodeJSX = useTNodeJSX();
var renderContent = useContent();
var messageRef = vue.ref(null);
var rect = vue.ref();
var state = vue.reactive({
duration: 0,
offset: 0,
listWidth: 0,
itemWidth: 0,
scroll: {
marquee: false,
speed: 50,
loop: -1,
delay: 300
}
});
var _toRefs = vue.toRefs(props2),
visible = _toRefs.visible,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(visible, modelValue, props2.defaultVisible),
_useVModel2 = _slicedToArray(_useVModel, 2),
currentVisible = _useVModel2[0],
setVisible = _useVModel2[1];
var rootClasses = vue.computed(function () {
return _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(messageClass.value), true), "".concat(messageClass.value, "--").concat(props2.theme), true), "".concat(messageClass.value, "-align--").concat(props2.align), !!props2.align);
});
var textWrapClasses = vue.computed(function () {
return _defineProperty$3(_defineProperty$3({}, "".concat(messageClass.value, "__text-wrap"), true), "".concat(messageClass.value, "__text-nowrap"), props2.marquee);
});
var getGap = function getGap() {
var _rect$value;
if (props2.single) {
return 0;
}
var gap = typeof props2.gap === "boolean" ? 12 : reconvertUnit(props2.gap);
return (gap + (((_rect$value = rect.value) === null || _rect$value === void 0 ? void 0 : _rect$value.height) || 0)) * messageIndex;
};
var changeNumToStr = function changeNumToStr() {
var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
return arr.map(function (item, index) {
var value = reconvertUnit(item);
return index === 0 ? "".concat(value + getGap(), "px") : "".concat(value, "px");
});
};
var getMessageStylesOffset = function getMessageStylesOffset(offset) {
var _messageRef$value;
rect.value = (_messageRef$value = messageRef.value) === null || _messageRef$value === void 0 ? void 0 : _messageRef$value.getBoundingClientRect();
var arr = changeNumToStr(offset);
return {
top: arr[0],
right: arr[1],
left: arr[1]
};
};
var rootStyles = vue.computed(function () {
var offset = props2.offset;
var offsetStyle = offset ? getMessageStylesOffset(offset) : [];
return _objectSpread$4({
zIndex: props2.zIndex
}, offsetStyle);
});
var linkContent = vue.computed(function () {
var _context$slots;
if (typeof props2.link === "function" || (_context$slots = context.slots) !== null && _context$slots !== void 0 && _context$slots.link) {
return renderTNodeJSX("link");
}
if (isObject$1(props2.link) || isString(props2.link)) {
var _link = isObject$1(props2.link) ? _objectSpread$4({}, props2.link) : {
content: props2.link
};
return vue.h(Link, _objectSpread$4({
theme: "primary"
}, _link));
}
return null;
});
var animateStyle = vue.computed(function () {
return {
transform: state.offset ? "translateX(".concat(state.offset, "px)") : "",
transitionDuration: "".concat(state.duration, "s"),
transitionTimingFunction: "linear"
};
});
var textWrapDOM = vue.ref();
var textDOM = vue.ref();
var handleScrolling = function handleScrolling() {
var _ref3, _props2$marquee, _props2$marquee2, _props2$marquee3, _props2$marquee4, _props2$marquee5, _props2$marquee6;
if (!(props2 !== null && props2 !== void 0 && props2.marquee) || ((_ref3 = isObject$1(props2 === null || props2 === void 0 ? void 0 : props2.marquee) && (props2 === null || props2 === void 0 ? void 0 : props2.marquee)) === null || _ref3 === void 0 ? void 0 : _ref3.loop) === 0) {
return;
}
var _state$scroll = state.scroll,
loop = _state$scroll.loop,
speed = _state$scroll.speed,
delay = _state$scroll.delay;
state.scroll = {
marquee: true,
loop: Math.max(props2.marquee === true || ((_props2$marquee = props2.marquee) === null || _props2$marquee === void 0 ? void 0 : _props2$marquee.loop) == null ? loop : (_props2$marquee2 = props2.marquee) === null || _props2$marquee2 === void 0 ? void 0 : _props2$marquee2.loop, -1),
speed: Math.max(props2.marquee === true || ((_props2$marquee3 = props2.marquee) === null || _props2$marquee3 === void 0 ? void 0 : _props2$marquee3.speed) == null ? speed : (_props2$marquee4 = props2.marquee) === null || _props2$marquee4 === void 0 ? void 0 : _props2$marquee4.speed, 1),
delay: Math.max(props2.marquee === true || ((_props2$marquee5 = props2.marquee) === null || _props2$marquee5 === void 0 ? void 0 : _props2$marquee5.delay) == null ? delay : (_props2$marquee6 = props2.marquee) === null || _props2$marquee6 === void 0 ? void 0 : _props2$marquee6.delay, 0)
};
state.offset = 0;
setTimeout(function () {
var _textWrapDOM$value, _textDOM$value;
var textWrapDOMWidth = (_textWrapDOM$value = textWrapDOM.value) === null || _textWrapDOM$value === void 0 ? void 0 : _textWrapDOM$value.getBoundingClientRect().width;
var textDOMWidth = (_textDOM$value = textDOM.value) === null || _textDOM$value === void 0 ? void 0 : _textDOM$value.getBoundingClientRect().width;
state.offset = -textDOMWidth;
state.duration = textDOMWidth / state.scroll.speed;
state.listWidth = textWrapDOMWidth;
state.itemWidth = textDOMWidth;
}, state.scroll.delay);
};
var handleTransitionend = function handleTransitionend() {
resetTransition();
if (state.scroll.loop === -1) {
return;
}
state.scroll.loop = --state.scroll.loop;
if (state.scroll.loop === 0) {
state.scroll.marquee = false;
}
};
var resetTransition = function resetTransition() {
state.duration = 0;
state.offset = state.listWidth;
setTimeout(function () {
state.offset = -state.itemWidth;
state.duration = (state.itemWidth + state.listWidth) / state.scroll.speed;
}, 0);
};
var onLinkClick = function onLinkClick(e) {
var _props2$onLinkClick;
(_props2$onLinkClick = props2.onLinkClick) === null || _props2$onLinkClick === void 0 || _props2$onLinkClick.call(props2, {
e: e
});
};
var onCloseBtnClick = function onCloseBtnClick(e) {
var _props2$onCloseBtnCli;
(_props2$onCloseBtnCli = props2.onCloseBtnClick) === null || _props2$onCloseBtnCli === void 0 || _props2$onCloseBtnCli.call(props2, {
e: e
});
setVisible(false);
};
var handleDuration = function handleDuration() {
if (props2.duration > 0) {
setTimeout(function () {
var _props2$onDurationEnd;
(_props2$onDurationEnd = props2.onDurationEnd) === null || _props2$onDurationEnd === void 0 || _props2$onDurationEnd.call(props2);
setVisible(false);
}, props2.duration);
}
};
vue.onMounted(function () {
vue.nextTick(function () {
if (currentVisible.value) {
handleScrolling();
}
});
});
var updateMessageIndex = function updateMessageIndex() {
var isAdd = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
if (props2.single) return;
if (isAdd) {
messageIndex += 1;
} else {
messageIndex -= 1;
}
};
vue.watch(function () {
return currentVisible.value;
}, function (val) {
if (val === false) {
updateMessageIndex(false);
return;
}
updateMessageIndex(true);
setVisible(true);
handleDuration();
vue.nextTick(handleScrolling);
});
return function () {
var prefixIconContent = renderTNodeJSX("icon", {
defaultNode: iconDefault$1 === null || iconDefault$1 === void 0 ? void 0 : iconDefault$1[props2.theme || "info"]
});
var computedContent = renderContent("default", "content");
var closeBtnContent = renderTNodeJSX("closeBtn", {
defaultNode: closeBtnDefault
});
return vue.createVNode(vue.Transition, {
"name": "message"
}, {
default: function _default() {
return [currentVisible.value && vue.createVNode("div", {
"ref": messageRef,
"class": rootClasses.value,
"style": rootStyles.value
}, [prefixIconContent && vue.createVNode("div", {
"class": "".concat(messageClass.value, "__icon--left")
}, [prefixIconContent]), vue.createVNode("div", {
"ref": textWrapDOM,
"class": textWrapClasses.value
}, [vue.createVNode("div", {
"ref": textDOM,
"class": "".concat(messageClass.value, "__text"),
"style": state.scroll.marquee ? animateStyle.value : "",
"onTransitionend": handleTransitionend
}, [computedContent])]), linkContent.value && vue.createVNode("div", {
"class": "".concat(messageClass.value, "__link"),
"onClick": onLinkClick
}, [linkContent.value]), closeBtnContent && vue.createVNode("div", {
"class": ["".concat(messageClass.value, "__close-wrap"), "".concat(messageClass.value, "__icon--right")],
"onClick": onCloseBtnClick
}, [closeBtnContent])])];
}
});
};
}
});
var _excluded = ["context"];
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var instanceMap = /* @__PURE__ */new Map();
function destroy(context, root) {
if (context.contains(root)) {
context.removeChild(root);
if (instanceMap.has(root)) {
instanceMap.delete(root);
}
}
}
function create(props) {
if (!isBrowser$1) return;
var context = props.context,
otherOptions = _objectWithoutProperties$1(props, _excluded);
if (!context) {
console.error("\u672A\u627E\u5230\u7EC4\u4EF6, \u8BF7\u786E\u8BA4 context \u662F\u5426\u6B63\u786E");
return;
}
var root = document.createElement("div");
context.appendChild(root);
var visible = vue.ref(false);
var component = vue.defineComponent({
render: function render() {
return vue.h(Message, _objectSpread$3(_objectSpread$3({}, otherOptions), {}, {
visible: visible.value,
onDurationEnd: function onDurationEnd() {
var _otherOptions$onDurat;
(_otherOptions$onDurat = otherOptions.onDurationEnd) === null || _otherOptions$onDurat === void 0 || _otherOptions$onDurat.call(otherOptions);
visible.value = false;
},
onCloseBtnClick: function onCloseBtnClick(context2) {
var _otherOptions$onClose;
(_otherOptions$onClose = otherOptions.onCloseBtnClick) === null || _otherOptions$onClose === void 0 || _otherOptions$onClose.call(otherOptions, context2);
visible.value = false;
},
onAfterLeave: function onAfterLeave() {
destroy(context, root);
}
}));
}
});
vue.createApp(component).mount(root);
instanceMap.set(root, {
context: context,
visible: visible
});
vue.nextTick(function () {
visible.value = true;
});
}
var defaultProps = {
align: "left",
closeBtn: false,
content: "",
duration: 3e3,
theme: "info",
visible: false,
zIndex: 5e3,
context: isBrowser$1 ? document.body : null,
onDurationEnd: function onDurationEnd() {},
onCloseBtnClick: function onCloseBtnClick() {}
};
["info", "success", "warning", "error"].forEach(function (theme) {
Message[theme] = function (options) {
var props = _objectSpread$3(_objectSpread$3({}, defaultProps), {}, {
theme: theme
});
if (typeof options === "string") {
props.content = options;
} else {
props = _objectSpread$3(_objectSpread$3({}, props), options);
}
create(props);
};
});
Message.closeAll = function () {
if (instanceMap instanceof Map) {
var _iterator = _createForOfIteratorHelper(instanceMap),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var _step$value = _slicedToArray(_step.value, 2),
key = _step$value[0],
value = _step$value[1];
var context = value.context,
visible = value.visible;
destroy(context, key);
visible.value = false;
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
};
Message.install = function (app) {
var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
app.component(name || Message.name, Message);
app.config.globalProperties.$message = Message;
};
var MessagePlugin = Message;
var props$2 = {
content: {
type: [String, Array, Function]
},
direction: {
type: String,
default: "horizontal",
validator: function validator(val) {
if (!val) return true;
return ["horizontal", "vertical"].includes(val);
}
},
interval: {
type: Number,
default: 2e3
},
marquee: {
type: [Boolean, Object],
default: false
},
operation: {
type: [String, Function]
},
prefixIcon: {
type: [Boolean, Function],
default: true
},
suffixIcon: {
type: Function
},
theme: {
type: String,
default: "info",
validator: function validator(val) {
if (!val) return true;
return ["info", "success", "warning", "error"].includes(val);
}
},
visible: {
type: Boolean,
default: void 0
},
modelValue: {
type: Boolean,
default: void 0
},
defaultVisible: Boolean,
onChange: Function,
onClick: Function
};
function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _isSlot(s) {
return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !vue.isVNode(s);
}
var prefix$4 = config.prefix;
var iconDefault = {
info: vue.createVNode(InfoCircleFilledIcon, null, null),
success: vue.createVNode(CheckCircleFilledIcon, null, null),
warning: vue.createVNode(ErrorCircleFilledIcon, null, null),
error: vue.createVNode(ErrorCircleFilledIcon, null, null)
};
var _NoticeBar = vue.defineComponent({
name: "".concat(prefix$4, "-notice-bar"),
props: props$2,
emits: ["change"],
setup: function setup(props2) {
var noticeBarClass = usePrefixClass("notice-bar");
var renderTNodeJSX = useTNodeJSX();
var state = vue.reactive({
duration: 0,
offset: 0,
listWidth: 0,
itemWidth: 0,
timer: null,
nextTimer: null,
scroll: {
marquee: false,
speed: 50,
loop: -1,
delay: 0
}
});
var rootClasses = vue.computed(function () {
return ["".concat(noticeBarClass.value), "".concat(noticeBarClass.value, "--").concat(props2.theme)];
});
var handleClick = function handleClick(trigger) {
var _props2$onClick;
(_props2$onClick = props2.onClick) === null || _props2$onClick === void 0 || _props2$onClick.call(props2, trigger);
};
var animateStyle = vue.computed(function () {
return {
transform: state.offset ? "translateX(".concat(state.offset, "px)") : "",
transitionDuration: "".concat(state.duration, "s"),
transitionTimingFunction: "linear"
};
});
var listDOM = vue.ref();
var itemDOM = vue.ref();
var _toRefs = vue.toRefs(props2),
visible = _toRefs.visible,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(visible, modelValue, props2.defaultVisible),
_useVModel2 = _slicedToArray(_useVModel, 2),
isShow = _useVModel2[0];
_useVModel2[1];
var handleScrolling = function handleScrolling() {
var _ref;
if (!(props2 !== null && props2 !== void 0 && props2.marquee) || ((_ref = isObject$1(props2 === null || props2 === void 0 ? void 0 : props2.marquee) && (props2 === null || props2 === void 0 ? void 0 : props2.marquee)) === null || _ref === void 0 ? void 0 : _ref.loop) === 0) {
return;
}
if (typeof props2.marquee === "boolean") {
state.scroll = _objectSpread$2(_objectSpread$2({}, state.scroll), {}, {
marquee: props2.marquee
});
}
if (isObject$1(props2.marquee)) {
var _marquee$speed, _marquee$delay;
var marquee = props2.marquee;
state.scroll = {
marquee: true,
loop: typeof (marquee === null || marquee === void 0 ? void 0 : marquee.loop) === "undefined" ? state.scroll.loop : marquee.loop,
speed: (_marquee$speed = marquee.speed) !== null && _marquee$speed !== void 0 ? _marquee$speed : state.scroll.speed,
delay: (_marquee$delay = marquee.delay) !== null && _marquee$delay !== void 0 ? _marquee$delay : state.scroll.delay
};
}
setTimeout(function () {
var _listDOM$value, _itemDOM$value;
var listDOMWidth = (_listDOM$value = listDOM.value) === null || _listDOM$value === void 0 ? void 0 : _listDOM$value.getBoundingClientRect().width;
var itemDOMWidth = (_itemDOM$value = itemDOM.value) === null || _itemDOM$value === void 0 ? void 0 : _itemDOM$value.getBoundingClientRect().width;
if (itemDOMWidth >= listDOMWidth) {
state.offset = -itemDOMWidth;
state.duration = itemDOMWidth / state.scroll.speed;
state.listWidth = listDOMWidth;
state.itemWidth = itemDOMWidth;
}
}, state.scroll.delay);
};
var handleTransitionend = function handleTransitionend() {
state.scroll.loop = --state.scroll.loop;
if (state.scroll.loop === 0) {
state.scroll = _objectSpread$2(_objectSpread$2({}, state.scroll), {}, {
marquee: false
});
return;
}
state.offset = state.listWidth;
state.duration = 0;
setTimeout(function () {
state.offset = -state.itemWidth;
state.duration = (state.itemWidth + state.listWidth) / state.scroll.speed;
}, 0);
};
vue.onMounted(function () {
vue.nextTick(function () {
if (isShow.value) {
handleScrolling();
}
});
});
vue.watch(function () {
return isShow.value;
}, function () {
vue.nextTick(function () {
if (isShow.value) {
state.offset = state.listWidth;
state.duration = 0;
handleScrolling();
}
});
});
return function () {
if (isShow.value) {
var renderPrefixIcon = function renderPrefixIcon() {
var prefixIconContent = renderTNodeJSX("prefixIcon", {
defaultNode: iconDefault[props2.theme || "info"]
});
if (props2.prefixIcon && prefixIconContent) {
return vue.createVNode("div", {
"class": "".concat(noticeBarClass.value, "__prefix-icon"),
"onClick": function onClick() {
return handleClick("prefix-icon");
}
}, [prefixIconContent]);
}
};
var renderContent = function renderContent() {
var _slot;
var renderShowContent = function renderShowContent() {
var showContent = renderTNodeJSX("content");
if (!showContent) {
return null;
}
return showContent;
};
var renderOperationContent = function renderOperationContent() {
var operationContent = renderTNodeJSX("operation");
if (!operationContent) {
return null;
}
return vue.createVNode("span", {
"class": "".concat(noticeBarClass.value, "__operation"),
"onClick": function onClick(event) {
event.stopPropagation();
handleClick("operation");
}
}, [operationContent]);
};
return vue.createVNode("div", {
"ref": listDOM,
"class": "".concat(noticeBarClass.value, "__content-wrap"),
"onClick": function onClick() {
return handleClick("content");
}
}, [props2.direction === "vertical" && isArray$1(props2.content) ? vue.createVNode("div", null, [vue.createVNode(Swiper, {
"autoplay": true,
"loop": true,
"direction": "vertical",
"duration": 2e3,
"height": 22,
"interval": props2 === null || props2 === void 0 ? void 0 : props2.interval,
"onChange": props2 === null || props2 === void 0 ? void 0 : props2.onChange,
"class": "".concat(noticeBarClass.value, "__content--vertical")
}, _isSlot(_slot = props2.content.map(function (item, index) {
return vue.createVNode(SwiperItem, {
"key": index
}, {
default: function _default() {
return [vue.createVNode("div", {
"class": "".concat(noticeBarClass.value, "__content--vertical-item")
}, [item])];
}
});
})) ? _slot : {
default: function _default() {
return [_slot];
}
})]) : vue.createVNode("div", {
"ref": itemDOM,
"class": ["".concat(noticeBarClass.value, "__content"), !state.scroll.marquee ? "".concat(noticeBarClass.value, "__content-wrapable") : ""],
"style": state.scroll.marquee ? animateStyle.value : "",
"onTransitionend": handleTransitionend
}, [renderShowContent(), renderOperationContent()])]);
};
var renderSuffixIconContent = function renderSuffixIconContent() {
var suffixIconContent = renderTNodeJSX("suffixIcon");
if (!suffixIconContent) {
return null;
}
return vue.createVNode("div", {
"class": "".concat(noticeBarClass.value, "__suffix-icon"),
"onClick": function onClick() {
return handleClick("suffix-icon");
}
}, [suffixIconContent]);
};
return vue.createVNode("div", {
"class": rootClasses.value
}, [renderPrefixIcon(), renderContent(), renderSuffixIconContent()]);
}
return null;
};
}
});
var NoticeBar = withInstall(_NoticeBar);
var PullDownRefreshProps = {
disabled: Boolean,
loadingBarHeight: {
type: [String, Number],
default: 50
},
loadingProps: {
type: Object
},
loadingTexts: {
type: Array,
default: function _default() {
return [];
}
},
maxBarHeight: {
type: [String, Number],
default: 80
},
refreshTimeout: {
type: Number,
default: 3e3
},
value: {
type: Boolean,
default: void 0
},
modelValue: {
type: Boolean,
default: void 0
},
defaultValue: Boolean,
onChange: Function,
onRefresh: Function,
onScrolltolower: Function,
onTimeout: Function
};
var isElement = function isElement(node) {
var ELEMENT_NODE_TYPE = 1;
return node.nodeType === ELEMENT_NODE_TYPE;
};
function useTouch() {
var startX = vue.ref(0);
var startY = vue.ref(0);
var diffX = vue.ref(0);
var diffY = vue.ref(0);
var start = function start(event) {
var _event$touches$ = event.touches[0],
clientX = _event$touches$.clientX,
clientY = _event$touches$.clientY;
startX.value = clientX;
startY.value = clientY;
diffY.value = 0;
diffX.value = 0;
};
var move = function move(event) {
var _event$touches$2 = event.touches[0],
clientX = _event$touches$2.clientX,
clientY = _event$touches$2.clientY;
diffY.value = clientY - startY.value;
diffX.value = clientX - startX.value;
};
return {
startX: startX,
startY: startY,
diffX: diffX,
diffY: diffY,
start: start,
move: move
};
}
var easeDistance = function easeDistance(distance, pullDistance) {
if (distance > pullDistance) {
if (distance < pullDistance * 2) {
distance = pullDistance + (distance - pullDistance) / 2;
} else {
distance = pullDistance * 1.5 + (distance - pullDistance * 2) / 4;
}
}
return Math.round(distance);
};
function getScrollParent(node) {
var res = node;
while (res && isElement(res)) {
var style = window.getComputedStyle(res);
var isScrollableY = /auto|scroll/i.test(style.overflowY);
var canScrollY = ["hidden", "visible"].includes(style.overflowY) && res.scrollHeight > res.clientHeight;
if (isScrollableY || canScrollY) {
return res;
}
res = res.parentNode;
}
return null;
}
var isReachTop = function isReachTop(e) {
var scrollParent = getScrollParent(e.target);
return !scrollParent || !scrollParent.scrollTop;
};
var prefix$3 = config.prefix;
var statusName = ["pulling", "loosing", "loading", "success", "initial"];
var _PullDownRefresh = vue.defineComponent({
name: "".concat(prefix$3, "-pull-down-refresh"),
components: {
TLoading: Loading
},
props: PullDownRefreshProps,
emits: ["refresh", "timeout", "scrolltolower", "update:value", "update:modelValue"],
setup: function setup(props) {
var pullDownRefreshClass = usePrefixClass("pull-down-refresh");
var _useConfig = useConfig("pullDownRefresh"),
globalConfig = _useConfig.globalConfig;
var renderContent = useContent();
var timer = null;
var distance = vue.ref(0);
var afterLoading = vue.ref(false);
var _toRefs = vue.toRefs(props),
value = _toRefs.value,
modelValue = _toRefs.modelValue;
var _useVModel = useVModel(value, modelValue, props.defaultValue, props.onChange),
_useVModel2 = _slicedToArray(_useVModel, 2),
loading = _useVModel2[0],
setLoading = _useVModel2[1];
var loadingText = vue.computed(function () {
var _props$loadingTexts;
var index = statusName.indexOf(status.value);
var loadingTexts = ((_props$loadingTexts = props.loadingTexts) === null || _props$loadingTexts === void 0 ? void 0 : _props$loadingTexts.length) > 0 ? props.loadingTexts : globalConfig.value.loadingTexts;
return index >= 0 ? loadingTexts[index] : "";
});
var touch = useTouch();
var loadingBar = vue.ref();
var maxBar = vue.ref();
var _useElementSize = useElementSize(loadingBar),
loadingBarHeight = _useElementSize.height;
var _useElementSize2 = useElementSize(maxBar),
maxBarHeight = _useElementSize2.height;
var actualLoadingBarHeight = vue.ref(0);
var touchDir;
var touchThreshold = 5;
vue.watch([loading, loadingBarHeight], function (_ref, _ref2) {
var _ref3 = _slicedToArray(_ref, 1),
val = _ref3[0];
var _ref4 = _slicedToArray(_ref2, 1),
prevVal = _ref4[0];
if (val) {
distance.value = loadingBarHeight.value;
}
if (!val && prevVal) {
afterLoading.value = true;
}
}, {
immediate: true
});
var status = vue.computed(function () {
if (afterLoading.value) {
return "success";
}
if (!loading.value && distance.value === 0) {
return "initial";
}
if (distance.value < reconvertUnit(props.loadingBarHeight)) {
return "pulling";
}
if (loading.value) {
return "loading";
}
return "loosing";
});
vue.watch(status, function (newVal) {
if (newVal === "success") {
setTimeout(function () {
distance.value = 0;
}, 300);
}
});
var isTouchable = function isTouchable() {
return loading.value || props.disabled;
};
var onTouchStart = function onTouchStart(e) {
if (isTouchable()) return;
if (!isReachTop(e)) return;
clearTimeout(timer);
timer = null;
distance.value = 0;
touch.start(e);
touchDir = 0;
};
var onTouchMove = function onTouchMove(e) {
if (isTouchable()) return;
if (!isReachTop(e)) return;
touch.move(e);
var diffY = touch.diffY,
diffX = touch.diffX;
var absX = Math.abs(diffX.value);
var absY = Math.abs(diffY.value);
if (!touchDir && absX < touchThreshold && absY < touchThreshold) {
return;
}
if (!touchDir && absX < absY) {
touchDir = -1;
} else if (!touchDir && absX >= absY) {
touchDir = 1;
}
if (touchDir === 1) return;
actualLoadingBarHeight.value = diffY.value;
var nextDistance = easeDistance(diffY.value, loadingBarHeight.value);
if (diffY.value > 0) {
preventDefault(e, false);
}
if (nextDistance >= 0 && nextDistance < maxBarHeight.value) {
distance.value = nextDistance;
}
};
var onTouchEnd = function onTouchEnd(e) {
if (isTouchable()) return;
if (!isReachTop(e)) return;
if (status.value === "loosing") {
var _props$onRefresh;
distance.value = loadingBarHeight.value;
setLoading(true);
(_props$onRefresh = props.onRefresh) === null || _props$onRefresh === void 0 || _props$onRefresh.call(props);
timer = setTimeout(function () {
if (loading.value) {
var _props$onTimeout;
(_props$onTimeout = props.onTimeout) === null || _props$onTimeout === void 0 || _props$onTimeout.call(props);
setLoading(false);
}
}, props.refreshTimeout);
} else {
distance.value = 0;
}
};
var onReachBottom = debounce$1(function () {
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
var _document$documentEle = document.documentElement,
clientHeight = _document$documentEle.clientHeight,
scrollHeight = _document$documentEle.scrollHeight;
var distance2 = 20;
if (scrollTop + clientHeight >= scrollHeight - distance2) {
var _props$onScrolltolowe;
(_props$onScrolltolowe = props.onScrolltolower) === null || _props$onScrolltolowe === void 0 || _props$onScrolltolowe.call(props);
}
}, 300, {
leading: true,
trailing: false
});
var onTransitionEnd = function onTransitionEnd() {
if (afterLoading.value) {
afterLoading.value = false;
}
};
var trackStyle = vue.computed(function () {
return {
transform: "translate3d(0, ".concat(distance.value, "px, 0)")
};
});
var heightDiff = (reconvertUnit(props.maxBarHeight) - reconvertUnit(props.loadingBarHeight)) / 2;
var loadingBarStyles = vue.computed(function () {
return {
transform: "translateY(".concat(heightDiff, "px)"),
height: "".concat(actualLoadingBarHeight.value, "px"),
maxHeight: convertUnit(props.loadingBarHeight)
};
});
var maxBarStyles = vue.computed(function () {
return {
height: convertUnit(props.maxBarHeight)
};
});
vue.onMounted(function () {
window.addEventListener("scroll", onReachBottom);
});
vue.onUnmounted(function () {
clearTimeout(timer);
window.removeEventListener("scroll", onReachBottom);
});
var renderLoading = function renderLoading() {
if (status.value === "loading") {
return vue.createVNode(vue.resolveComponent("t-loading"), vue.mergeProps({
"size": "24px",
"text": loadingText.value
}, props.loadingProps), null);
}
return vue.createVNode("div", {
"class": "".concat(pullDownRefreshClass.value, "__text")
}, [loadingText.value]);
};
return function () {
var content = renderContent("default", "content");
var className = "".concat(pullDownRefreshClass.value, "__track");
if (status.value !== "pulling") {
className = "".concat(className, " ").concat(pullDownRefreshClass.value, "__track--loosing");
}
return vue.createVNode("div", {
"class": pullDownRefreshClass.value
}, [vue.createVNode("div", {
"class": className,
"style": trackStyle.value,
"onTouchstart": onTouchStart,
"onTouchmove": onTouchMove,
"onTouchend": onTouchEnd,
"onTouchcancel": onTouchEnd,
"onTransitionend": onTransitionEnd
}, [vue.createVNode("div", {
"ref": maxBar,
"class": "".concat(pullDownRefreshClass.value, "__tips"),
"style": maxBarStyles.value
}, [vue.createVNode("div", {
"ref": loadingBar,
"class": "".concat(pullDownRefreshClass.value, "__loading"),
"style": loadingBarStyles.value
}, [renderLoading()])]), content])]);
};
}
});
var PullDownRefresh = withInstall(_PullDownRefresh);
var props$1 = {
content: {
type: [String, Function]
},
default: {
type: [String, Function]
},
disabled: Boolean,
left: {
type: [Array, Function]
},
opened: {
type: [Boolean, Array],
default: false
},
right: {
type: [Array, Function]
},
onChange: Function,
onClick: Function
};
function useSureConfirm(instance, initData) {
var sureRightRef = vue.ref();
var sureLeftRef = vue.ref();
var showSureRight = vue.ref(false);
var showSureLeft = vue.ref(false);
var sureMarginRight = vue.ref(0);
var sureMarginLeft = vue.ref(0);
var closedSure = vue.ref(false);
var sureRightContent = vue.ref();
var sureLeftContent = vue.ref();
var handleSureClick = vue.ref();
var sureRightBgStyle = vue.computed(function () {
var style = {
display: "inline-block",
position: "absolute",
width: "100%",
height: "100%",
backgroundColor: "rgba(0,0,0,0)",
transition: closedSure.value ? "none" : "background-color .6s cubic-bezier(0.18, 0.89, 0.32, 1)",
transform: "translate3d(".concat(initData.rightWidth, "px, 0, 0)"),
pointerEvents: "none"
};
if (showSureRight.value) {
style.backgroundColor = "rgba(0,0,0,.5)";
} else {
style.backgroundColor = "rgba(0,0,0,0)";
}
return style;
});
var sureLeftBgStyle = vue.computed(function () {
var style = {
display: "inline-block",
position: "absolute",
width: "100%",
height: "100%",
backgroundColor: "rgba(0,0,0,0)",
transition: closedSure.value ? "none" : "background-color .6s cubic-bezier(0.18, 0.89, 0.32, 1)",
transform: "translate3d(0, 0, 0)",
pointerEvents: "none"
};
if (showSureLeft.value) {
style.backgroundColor = "rgba(0,0,0,.5)";
} else {
style.backgroundColor = "rgba(0,0,0,0)";
}
return style;
});
var sureRightStyle = vue.computed(function () {
var style = {
display: "inline-block",
position: "absolute",
height: "100%",
top: 0,
minWidth: "100%",
transition: closedSure.value ? "none" : "transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)",
transform: "translate3d(0, 0, 0)"
};
if (showSureRight.value) {
style.transform = "translate3d(0, 0, 0)";
} else {
style.transform = "translate3d(".concat(initData.rightWidth, "px, 0, 0)");
}
return style;
});
var sureLeftStyle = vue.computed(function () {
var style = {
display: "inline-block",
position: "absolute",
height: "100%",
top: 0,
minWidth: "100%",
transition: closedSure.value ? "none" : "transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)",
transform: "translate3d(0, 0, 0)"
};
if (showSureLeft.value) {
style.transform = "translate3d(0, 0, 0)";
} else {
style.transform = "translate3d(".concat(-initData.leftWidth, "px, 0, 0)");
}
return style;
});
vue.watch(showSureRight, function () {
if (initData.pos < 0) {
if (showSureRight.value) {
var _sureRightRef$value;
var sureRightWidth = (_sureRightRef$value = sureRightRef.value) === null || _sureRightRef$value === void 0 ? void 0 : _sureRightRef$value.clientWidth;
sureMarginRight.value = Math.max(initData.rightWidth, sureRightWidth) - initData.rightWidth;
} else {
sureMarginRight.value = 0;
}
}
});
vue.watch(showSureLeft, function () {
if (initData.pos > 0) {
if (showSureLeft.value) {
var _sureLeftRef$value;
var sureLeftWidth = (_sureLeftRef$value = sureLeftRef.value) === null || _sureLeftRef$value === void 0 ? void 0 : _sureLeftRef$value.clientWidth;
sureMarginLeft.value = Math.max(initData.leftWidth, sureLeftWidth) - initData.leftWidth;
} else {
sureMarginLeft.value = 0;
}
}
});
var showSure = function showSure(sure, onClick) {
handleSureClick.value = onClick;
var sureContent = sureRightContent;
var sureVisible = showSureRight;
if (initData.pos > 0) {
sureContent = sureLeftContent;
sureVisible = showSureLeft;
}
if (isString(sure) && instance !== null && instance !== void 0 && instance.slots[sure]) {
sureContent.value = renderTNode(instance, sure);
} else if (isFunction(sure)) {
vue.setBlockTracking(-1);
sureContent.value = sure(vue.h);
vue.setBlockTracking(1);
} else {
sureContent.value = sure;
}
vue.nextTick(function () {
sureVisible.value = true;
});
};
return {
sureRightRef: sureRightRef,
sureLeftRef: sureLeftRef,
showSureRight: showSureRight,
showSureLeft: showSureLeft,
sureMarginRight: sureMarginRight,
sureMarginLeft: sureMarginLeft,
closedSure: closedSure,
sureRightContent: sureRightContent,
sureLeftContent: sureLeftContent,
sureLeftBgStyle: sureLeftBgStyle,
sureRightBgStyle: sureRightBgStyle,
sureRightStyle: sureRightStyle,
sureLeftStyle: sureLeftStyle,
showSure: showSure,
handleSureClick: handleSureClick
};
}
var prefix$2 = config.prefix;
var _SwipeCell = vue.defineComponent({
name: "".concat(prefix$2, "-swipe-cell"),
props: props$1,
setup: function setup(props2, context) {
var renderTNodeJSX = useTNodeJSX();
var renderTNodeContent = useContent();
var swipeCellClass = usePrefixClass("swipe-cell");
var internalInstance = vue.getCurrentInstance();
var leftRef = vue.ref();
var rightRef = vue.ref();
var swipeCellRef = vue.ref();
var wrapperStyle = vue.computed(function () {
var transform = "translate3d(".concat(initData.pos, "px, 0, 0)");
var transition = "margin-left .6s cubic-bezier(0.18, 0.89, 0.32, 1)";
transition += ",margin-right .6s cubic-bezier(0.18, 0.89, 0.32, 1)";
transition += initData.moving ? "" : ",transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)";
return {
position: "relative",
transition: transition,
transform: transform,
marginLeft: "".concat(sureMarginLeft.value, "px"),
marginRight: "".concat(sureMarginRight.value, "px")
};
});
var distance = 10;
var threshold = 0.3;
var initData = vue.reactive({
moving: false,
moved: false,
leftWidth: 0,
rightWidth: 0,
offset: 0,
pos: 0,
status: "close"
});
var _useSureConfirm = useSureConfirm(internalInstance, initData),
sureRightRef = _useSureConfirm.sureRightRef,
sureLeftRef = _useSureConfirm.sureLeftRef,
showSureRight = _useSureConfirm.showSureRight,
showSureLeft = _useSureConfirm.showSureLeft,
sureMarginRight = _useSureConfirm.sureMarginRight,
sureMarginLeft = _useSureConfirm.sureMarginLeft,
closedSure = _useSureConfirm.closedSure,
sureRightContent = _useSureConfirm.sureRightContent,
sureLeftContent = _useSureConfirm.sureLeftContent,
sureLeftBgStyle = _useSureConfirm.sureLeftBgStyle,
sureRightBgStyle = _useSureConfirm.sureRightBgStyle,
sureRightStyle = _useSureConfirm.sureRightStyle,
sureLeftStyle = _useSureConfirm.sureLeftStyle,
showSure = _useSureConfirm.showSure,
handleSureClick = _useSureConfirm.handleSureClick;
var range = function range(num, min, max) {
return Math.min(Math.max(num, min), max);
};
var swipeDir = 0;
var _useSwipe = useSwipe(swipeCellRef, {
threshold: 0,
onSwipeStart: function onSwipeStart(e) {
if (props2.disabled) {
return;
}
setPanelWidth();
swipeDir = 0;
initData.moved = false;
initData.offset = initData.pos;
},
onSwipe: function onSwipe(e) {
var absLenX = Math.abs(lengthX.value);
var absLenY = Math.abs(lengthY.value);
if (!swipeDir && absLenX < distance / 2 && absLenY < distance / 2) {
return;
}
if (!swipeDir && absLenX < absLenY) {
swipeDir = -1;
} else if (!swipeDir && absLenX >= absLenY) {
swipeDir = 1;
}
if (swipeDir < 0) {
swipeDir = -1;
return;
}
preventDefault(e, false);
if (props2.disabled || !initData.moved && Math.abs(lengthX.value) < distance) {
return;
}
if (showSureRight.value) {
closedSure.value = lengthX.value > 0 && initData.pos === 0;
showSureRight.value = false;
} else if (showSureLeft.value) {
closedSure.value = lengthX.value < 0 && initData.pos === 0;
showSureLeft.value = false;
}
initData.moving = true;
initData.moved = true;
var offset = range(initData.offset - lengthX.value, -initData.rightWidth, initData.leftWidth);
initData.pos = offset;
},
onSwipeEnd: function onSwipeEnd(e) {
if (props2.disabled) {
return;
}
initData.moving = false;
setTimeout(function () {
closedSure.value = false;
}, 0);
end();
}
}),
lengthX = _useSwipe.lengthX,
lengthY = _useSwipe.lengthY,
stop = _useSwipe.stop;
var setPanelWidth = function setPanelWidth() {
var _leftRef$value, _rightRef$value;
var leftWidth = (_leftRef$value = leftRef.value) === null || _leftRef$value === void 0 ? void 0 : _leftRef$value.clientWidth;
var rightWidth = (_rightRef$value = rightRef.value) === null || _rightRef$value === void 0 ? void 0 : _rightRef$value.clientWidth;
initData.leftWidth = leftWidth > 0 ? leftWidth : 0;
initData.rightWidth = rightWidth > 0 ? rightWidth : 0;
};
vue.computed(function () {
return ["".concat(name)];
});
vue.onMounted(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee() {
return regenerator.wrap(function (_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
setPanelWidth();
renderMenuStatus();
case 1:
case "end":
return _context.stop();
}
}, _callee);
})));
vue.onUnmounted(function () {
var _stopClickAway$value;
stop();
(_stopClickAway$value = stopClickAway.value) === null || _stopClickAway$value === void 0 || _stopClickAway$value.call(stopClickAway);
});
vue.watch(function () {
return props2.opened;
}, function () {
return renderMenuStatus();
}, {
deep: true
});
vue.watch(function () {
return initData.pos;
}, function (newVal, oldVal) {
if (rightRef.value && (newVal < 0 || newVal === 0 && oldVal < 0)) {
updateRightMenuPosStyle(newVal);
} else if (leftRef.value && (newVal > 0 || newVal === 0 && oldVal > 0)) {
updateLeftMenuPosStyle(newVal);
}
});
var updateRightMenuPosStyle = function updateRightMenuPosStyle(value) {
if (!rightRef.value) return;
var pos = value || initData.pos;
var children = rightRef.value.children || [];
var wArr = [];
for (var i = 0, len = children.length - 2; i < len; ++i) {
var el = children[i];
wArr.push((wArr[i - 1] || 0) + el.clientWidth);
}
for (var _i = 0, _len = children.length - 2; _i < _len; ++_i) {
var _el = children[_i];
var w = (1 + pos / initData.rightWidth) * (wArr[_i - 1] || 0);
if (_el) {
_el.style.transform = "translate3d(".concat(-w, "px, 0, 0)");
_el.style.transition = initData.moving ? "none" : "transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)";
}
}
};
var updateLeftMenuPosStyle = function updateLeftMenuPosStyle(value) {
if (!leftRef.value) return;
var pos = value || initData.pos;
var children = leftRef.value.children;
var wArr = [];
for (var i = 0, len = children.length - 2; i < len; ++i) {
var el = children[i];
wArr.push((wArr[i - 1] || 0) + el.clientWidth);
}
for (var _i2 = 0, _len2 = children.length - 2; _i2 < _len2; ++_i2) {
var _el2 = children[_i2];
var w = (1 - pos / initData.leftWidth) * (wArr[_i2 - 1] || 0);
if (_el2) {
_el2.style.transform = "translate3d(".concat(w, "px, 0, 0)");
_el2.style.transition = initData.moving ? "none" : "transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)";
}
}
};
var stopClickAway = vue.ref(useClickAway(swipeCellRef, function () {
close();
}, {
detectIframe: true
}));
var renderMenuStatus = function renderMenuStatus() {
if (isBoolean(props2.opened)) {
if (props2.opened && initData.rightWidth > 0) {
open("toLeft");
} else if (props2.opened && initData.leftWidth > 0) {
open("toRight");
} else if (!props2.opened && (initData.leftWidth > 0 || initData.rightWidth > 0)) {
close();
}
} else if (isArray$1(props2.opened)) {
if (props2.opened[1] && initData.rightWidth > 0) {
open("toLeft");
} else if (props2.opened[0] && initData.leftWidth > 0) {
open("toRight");
} else if (!props2.opened[1] && initData.rightWidth > 0 || !props2.opened[0] && initData.leftWidth > 0) {
close();
}
}
};
var end = function end() {
if (props2.disabled) {
return;
}
if (+initData.rightWidth > 0 && (-initData.offset < +initData.rightWidth && -initData.pos > +initData.rightWidth * threshold || -initData.offset === +initData.rightWidth && -initData.pos > +initData.rightWidth * (1 - threshold))) {
open("toLeft");
} else if (+initData.leftWidth > 0 && (initData.offset < +initData.leftWidth && initData.pos > +initData.leftWidth * threshold || initData.offset === +initData.leftWidth && initData.pos > +initData.leftWidth * (1 - threshold))) {
open("toRight");
} else if (initData.offset !== initData.pos) {
close("force");
}
};
var open = function open(direction) {
var isOpen = initData.status === "open";
initData.status = "open";
if (direction === "toLeft") {
initData.pos = -initData.rightWidth;
if (initData.rightWidth && !isOpen) {
var _props2$onChange;
(_props2$onChange = props2.onChange) === null || _props2$onChange === void 0 || _props2$onChange.call(props2, "right");
}
} else {
initData.pos = initData.leftWidth;
if (initData.leftWidth && !isOpen) {
var _props2$onChange2;
(_props2$onChange2 = props2.onChange) === null || _props2$onChange2 === void 0 || _props2$onChange2.call(props2, "left");
}
}
};
var close = function close(type) {
var _props2$onChange3;
if (initData.status === "close" && type !== "force") {
return;
}
sureMarginLeft.value = 0;
sureMarginRight.value = 0;
initData.status = "close";
initData.pos = 0;
(_props2$onChange3 = props2.onChange) === null || _props2$onChange3 === void 0 || _props2$onChange3.call(props2, void 0);
};
var handleClickBtn = function handleClickBtn(_ref2) {
var action = _ref2.action,
source = _ref2.source;
var clickFn = function clickFn() {
var _props2$onClick;
{
close();
}
if (action !== null && action !== void 0 && action.onClick) {
action.onClick();
return;
}
(_props2$onClick = props2.onClick) === null || _props2$onClick === void 0 || _props2$onClick.call(props2, action, source);
};
if (action !== null && action !== void 0 && action.sure) {
showSure(action.sure, clickFn);
return;
}
clickFn();
};
var handleCellClick = function handleCellClick(e) {
if (initData.moved) {
preventDefault(e, true);
}
e.stopPropagation();
};
context.expose({
showSure: showSure
});
var renderLeft = function renderLeft() {
var leftContent = function leftContent() {
if (Array.isArray(props2.left)) {
return props2.left.map(function (btn) {
var btnClass = ["".concat(swipeCellClass.value, "__content"), btn.className || ""];
var style = btn.style || "height: 100%";
var btnIcon = btn.icon;
var btnText = btn.text;
return vue.createVNode("div", {
"class": btnClass,
"style": style,
"onClick": function onClick(e) {
return handleClickBtn({
action: btn,
source: "left"
});
}
}, [btnIcon ? vue.createVNode(btnIcon, {
"class": "".concat(swipeCellClass.value, "__icon")
}, null) : null, btnText ? vue.createVNode("span", {
"class": "".concat(swipeCellClass.value, "__text")
}, [btnText]) : null]);
});
}
return renderTNodeJSX("left");
};
return vue.createVNode("div", {
"ref": leftRef,
"class": "".concat(swipeCellClass.value, "__left"),
"style": {
width: initData !== null && initData !== void 0 && initData.leftWidth ? "".concat(initData.leftWidth, "px") : "auto"
}
}, [leftContent(), vue.createVNode("div", {
"style": sureLeftBgStyle.value
}, null), vue.createVNode("div", {
"ref": sureLeftRef,
"style": sureLeftStyle.value,
"onClick": function onClick(e) {
return handleSureClick;
}
}, [sureLeftContent.value])]);
};
var renderRight = function renderRight() {
var rightContent = function rightContent() {
if (Array.isArray(props2.right)) {
return props2.right.map(function (btn) {
var btnClass = ["".concat(swipeCellClass.value, "__content"), btn.className || ""];
var style = btn.style || "height: 100%";
var btnIcon = btn.icon;
var btnText = btn.text;
return vue.createVNode("div", {
"class": btnClass,
"style": style,
"onClick": function onClick() {
return handleClickBtn({
action: btn,
source: "right"
});
}
}, [btnIcon && vue.createVNode(btnIcon, {
"class": "".concat(swipeCellClass.value, "__icon")
}, null), btnText && vue.createVNode("span", {
"class": "".concat(swipeCellClass.value, "__text")
}, [btnText])]);
});
}
return renderTNodeJSX("right");
};
return vue.createVNode("div", {
"ref": rightRef,
"class": "".concat(swipeCellClass.value, "__right"),
"style": {
width: initData.rightWidth ? "".concat(initData.rightWidth, "px") : "auto"
}
}, [rightContent(), vue.createVNode("div", {
"style": sureRightBgStyle.value
}, null), vue.createVNode("div", {
"ref": sureRightRef,
"style": sureRightStyle.value,
"onClick": function onClick(e) {
return handleSureClick;
}
}, [sureRightContent.value])]);
};
return function () {
return vue.createVNode("div", {
"ref": swipeCellRef,
"class": swipeCellClass.value,
"onClick": handleCellClick
}, [vue.createVNode("div", {
"class": "".concat(swipeCellClass.value, "__wrapper"),
"style": wrapperStyle.value
}, [renderLeft(), renderTNodeContent("default", "content"), renderRight()])]);
};
}
});
var SwipeCell = withInstall(_SwipeCell);
var ToastProps = {
direction: {
type: String,
default: "row",
validator: function validator(val) {
if (!val) return true;
return ["row", "column"].includes(val);
}
},
duration: {
type: Number,
default: 2e3
},
icon: {
type: [String, Function]
},
message: {
type: [String, Function]
},
overlayProps: {
type: Object,
default: function _default() {
return {};
}
},
placement: {
type: String,
default: "middle",
validator: function validator(val) {
if (!val) return true;
return ["top", "middle", "bottom"].includes(val);
}
},
preventScrollThrough: Boolean,
showOverlay: Boolean,
theme: {
type: String,
validator: function validator(val) {
if (!val) return true;
return ["loading", "success", "warning", "error"].includes(val);
}
},
onClose: Function,
onDestroy: Function
};
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var prefix$1 = config.prefix;
var vueToast = vue.defineComponent({
name: "".concat(prefix$1, "-toast"),
props: ToastProps,
setup: function setup(props) {
var toastTypeIcon = {
loading: LoadingIcon,
success: CheckCircleIcon,
warning: ErrorCircleIcon,
error: CloseCircleIcon
};
var toastClass = usePrefixClass("toast");
var renderTNodeJSX = useTNodeJSX();
var renderContent = useContent();
var toastRef = vue.ref();
var customOverlayProps = vue.computed(function () {
var toastOverlayProps = {
preventScrollThrough: props.preventScrollThrough,
visible: props.showOverlay
};
return _objectSpread$1(_objectSpread$1({}, props.overlayProps), toastOverlayProps);
});
var classes = vue.computed(function () {
return ["".concat(toastClass.value), "".concat(toastClass.value, "__content"), "".concat(toastClass.value, "__icon"), _defineProperty$3(_defineProperty$3(_defineProperty$3({}, "".concat(toastClass.value, "--").concat(props.direction), props.direction), "".concat(toastClass.value, "__content--").concat(props.direction), props.direction), "".concat(toastClass.value, "--loading"), props.theme === "loading")];
});
var topOptions = {
top: "25%",
bottom: "75%",
middle: "50%"
};
var computedStyle = vue.computed(function () {
return {
top: topOptions[props.placement]
};
});
var iconClasses = vue.computed(function () {
return [_defineProperty$3({}, "".concat(toastClass.value, "__icon--").concat(props.direction), props.direction)];
});
var iconContent = vue.computed(function () {
var iconNode = renderTNodeJSX("icon");
if (iconNode === void 0 && props.theme) {
iconNode = vue.h(toastTypeIcon[props.theme]);
}
return iconNode;
});
var renderIconContent = vue.computed(function () {
if (iconContent.value) {
return vue.createVNode("div", {
"class": iconClasses.value
}, [iconContent.value]);
}
return "";
});
var textClasses = vue.computed(function () {
return [_defineProperty$3(_defineProperty$3({}, "".concat(toastClass.value, "__text"), !iconContent.value), "".concat(toastClass.value, "__text--").concat(props.direction), props.direction)];
});
var messageContent = vue.computed(function () {
return renderContent("default", "message");
});
var renderMessageContent = vue.computed(function () {
if (messageContent.value) {
return vue.createVNode("div", {
"class": textClasses.value
}, [messageContent.value]);
}
return "";
});
useLockScroll(toastRef, function () {
return props.preventScrollThrough;
}, toastClass.value);
return function () {
return vue.createVNode("div", null, [vue.createVNode(Overlay, customOverlayProps.value, null), vue.createVNode("div", {
"class": classes.value,
"style": computedStyle.value
}, [renderIconContent.value, renderMessageContent.value])]);
};
}
});
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty$3(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var instance = null;
var app;
function Toast(props) {
if (!isBrowser$1) return;
var root = document.createElement("div");
var container = getAttach(isObject$1(props) ? props.attach : "body");
if (container) {
container.appendChild(root);
} else {
console.error("attach is not exist");
}
var propsObject = _objectSpread({
duration: 2e3
}, parseOptions(props));
if (instance) {
instance.clear();
}
instance = vueToast;
instance.clear = function () {
clearTimeout(instance.timer);
app.unmount();
root.remove();
if (propsObject.onClose) {
propsObject.onClose();
}
instance = null;
};
if (propsObject.duration && propsObject.duration > 0) {
instance.timer = setTimeout(function () {
instance.clear();
if (propsObject.onDestroy) {
propsObject.onDestroy();
}
}, propsObject.duration);
}
app = vue.createApp(instance, _objectSpread({}, propsObject));
app.mount(root);
return instance;
}
Toast.clear = function () {
if (instance) {
instance.clear();
}
};
["loading", "success", "warning", "error"].forEach(function (type) {
if (!type) {
return;
}
Toast[type] = function (options) {
var props = {
message: "",
theme: type
};
if (typeof options === "string") {
props.message = options;
} else {
props = _objectSpread(_objectSpread({}, props), options);
}
return Toast(props);
};
});
function parseOptions(message) {
if (typeof message === "string") {
return {
message: message
};
}
return message;
}
Toast.install = function (app2) {
app2.config.globalProperties.$toast = Toast;
};
var ToastPlugin = Toast;
var props = {
globalConfig: {
type: Object
}
};
var prefix = config.prefix;
var name$1 = "".concat(prefix, "-config-provider");
var _ConfigProvider = vue.defineComponent({
name: name$1,
props: props,
setup: function setup(props2) {
provideConfig(props2);
var renderTNodeJSX = useTNodeJSX();
return function () {
return vue.createVNode(vue.Fragment, null, [renderTNodeJSX("default")]);
};
}
});
var ConfigProvider = withInstall(_ConfigProvider);
var components = /*#__PURE__*/Object.freeze({
__proto__: null,
Button: Button,
Divider: Divider,
Fab: Fab,
Icon: Icon,
Row: Row,
Col: Col,
Link: Link,
BackTop: BackTop,
DrawerPlugin: DrawerPlugin,
Drawer: Drawer,
Indexes: Indexes,
IndexesAnchor: IndexesAnchor,
Navbar: Navbar,
SideBar: SideBar,
SideBarItem: SideBarItem,
StepItem: StepItem,
Steps: Steps,
TabBar: TabBar,
TabBarItem: TabBarItem,
Tabs: Tabs,
TabPanel: TabPanel,
Calendar: Calendar,
Cascader: Cascader,
Checkbox: Checkbox,
CheckboxGroup: CheckboxGroup,
ColorPicker: ColorPicker,
DateTimePicker: DateTimePicker,
Form: Form,
FormItem: FormItem,
Input: Input,
Picker: Picker,
Cascade: Cascade,
RadioGroup: RadioGroup,
Radio: Radio,
Rate: Rate,
Search: Search,
Slider: Slider,
Stepper: Stepper,
Switch: Switch,
Textarea: Textarea,
TreeSelect: TreeSelect,
Upload: Upload,
Watermark: Watermark,
Avatar: Avatar,
AvatarGroup: AvatarGroup,
Badge: Badge,
Cell: Cell,
CellGroup: CellGroup,
Collapse: Collapse,
CollapsePanel: CollapsePanel,
CountDown: CountDown,
Empty: Empty,
Footer: Footer,
Grid: Grid,
GridItem: GridItem,
Image: Image$1,
ImageViewer: ImageViewer,
List: List,
Progress: Progress,
Result: Result,
Skeleton: Skeleton,
Sticky: Sticky,
Swiper: Swiper,
SwiperItem: SwiperItem,
Table: Table,
Tag: Tag,
CheckTag: CheckTag,
QRCode: QRCode,
_ActionSheet: _ActionSheet,
DialogPlugin: DialogPlugin,
DropdownMenu: DropdownMenu,
DropdownItem: DropdownItem,
Guide: Guide,
LoadingPlugin: LoadingPlugin,
Loading: Loading,
MessagePlugin: MessagePlugin,
NoticeBar: NoticeBar,
Overlay: Overlay,
Popover: Popover,
Popup: Popup,
PullDownRefresh: PullDownRefresh,
SwipeCell: SwipeCell,
ToastPlugin: ToastPlugin,
ConfigProvider: ConfigProvider
});
var install = function install(app, option) {
Object.keys(components).forEach(function (key) {
app.use(components[key], option);
});
};
var version = "1.12.1";
var tdesign = {
install: install,
version: version
};
if (typeof console !== "undefined" && console.warn && typeof window !== "undefined") {
console.warn("You are using a whole package of TDesign!");
}
exports.ActionSheet = _ActionSheet;
exports.Avatar = Avatar;
exports.AvatarGroup = AvatarGroup;
exports.BackTop = BackTop;
exports.Badge = Badge;
exports.Button = Button;
exports.Calendar = Calendar;
exports.Cascade = Cascade;
exports.Cascader = Cascader;
exports.Cell = Cell;
exports.CellGroup = CellGroup;
exports.CheckTag = CheckTag;
exports.Checkbox = Checkbox;
exports.CheckboxGroup = CheckboxGroup;
exports.Col = Col;
exports.Collapse = Collapse;
exports.CollapsePanel = CollapsePanel;
exports.ColorPicker = ColorPicker;
exports.ConfigProvider = ConfigProvider;
exports.CountDown = CountDown;
exports.DateTimePicker = DateTimePicker;
exports.Dialog = DialogPlugin;
exports.DialogPlugin = DialogPlugin;
exports.Divider = Divider;
exports.Drawer = Drawer;
exports.DrawerPlugin = DrawerPlugin;
exports.DropdownItem = DropdownItem;
exports.DropdownMenu = DropdownMenu;
exports.Empty = Empty;
exports.Fab = Fab;
exports.Footer = Footer;
exports.Form = Form;
exports.FormItem = FormItem;
exports.Grid = Grid;
exports.GridItem = GridItem;
exports.Guide = Guide;
exports.Icon = Icon;
exports.Image = Image$1;
exports.ImageViewer = ImageViewer;
exports.Indexes = Indexes;
exports.IndexesAnchor = IndexesAnchor;
exports.Input = Input;
exports.Link = Link;
exports.List = List;
exports.Loading = Loading;
exports.LoadingPlugin = LoadingPlugin;
exports.Message = MessagePlugin;
exports.MessagePlugin = MessagePlugin;
exports.Navbar = Navbar;
exports.NoticeBar = NoticeBar;
exports.Overlay = Overlay;
exports.Picker = Picker;
exports.Popover = Popover;
exports.Popup = Popup;
exports.Progress = Progress;
exports.PullDownRefresh = PullDownRefresh;
exports.QRCode = QRCode;
exports.Radio = Radio;
exports.RadioGroup = RadioGroup;
exports.Rate = Rate;
exports.Result = Result;
exports.Row = Row;
exports.Search = Search;
exports.SideBar = SideBar;
exports.SideBarItem = SideBarItem;
exports.Skeleton = Skeleton;
exports.Slider = Slider;
exports.StepItem = StepItem;
exports.Stepper = Stepper;
exports.Steps = Steps;
exports.Sticky = Sticky;
exports.SwipeCell = SwipeCell;
exports.Swiper = Swiper;
exports.SwiperItem = SwiperItem;
exports.Switch = Switch;
exports.TabBar = TabBar;
exports.TabBarItem = TabBarItem;
exports.TabPanel = TabPanel;
exports.Table = Table;
exports.Tabs = Tabs;
exports.Tag = Tag;
exports.Textarea = Textarea;
exports.Toast = ToastPlugin;
exports.ToastPlugin = ToastPlugin;
exports.TreeSelect = TreeSelect;
exports.Upload = Upload;
exports.Watermark = Watermark;
exports._ActionSheet = _ActionSheet;
exports["default"] = tdesign;
exports.install = install;
exports.version = version;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=tdesign.js.map