UNPKG

vue-devui

Version:

DevUI components based on Vite and Vue3

1,434 lines 328 kB
var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; import { ref, nextTick, defineComponent, watch, provide, reactive, toRefs, createVNode, onUnmounted, Transition, mergeProps, unref, withModifiers, Comment, Text, h, Fragment, inject, withDirectives, cloneVNode, computed, onMounted, Teleport, createTextVNode, onBeforeUnmount, render, getCurrentInstance, resolveDirective, vShow, resolveDynamicComponent, isVNode } from "vue"; import "clipboard"; import { offset, autoPlacement, arrow, shift, computePosition } from "@floating-ui/dom"; const defaultFormatter = (item) => { if (typeof item === "string") { return item; } return item !== null ? item.label || item.toString() : ""; }; const defaultValueParse = (item) => item; const autoCompleteProps = { modelValue: { type: String, default: "" }, source: { type: Array, default: null }, allowEmptyValueSearch: { type: Boolean, default: false }, appendToBody: { type: Boolean, default: false }, position: { type: Array, default: ["bottom-end"] }, disabled: { type: Boolean, default: false }, delay: { type: Number, default: 300 }, disabledKey: { type: String, default: null }, formatter: { type: Function, default: defaultFormatter }, isSearching: { type: Boolean, default: false }, sceneType: { type: String, default: null }, searchFn: { type: Function, default: null }, tipsText: { type: String, default: "\u6700\u8FD1\u8F93\u5165" }, latestSource: { type: Array, default: null }, valueParser: { type: Function, default: defaultValueParse }, enableLazyLoad: { type: Boolean, default: false }, width: { type: Number, default: 400 }, showAnimation: { type: Boolean, default: true }, maxHeight: { type: Number, default: 300 }, transInputFocusEmit: { type: Function, default: null }, selectValue: { type: Function, default: null }, loadMore: { type: Function, default: null }, placeholder: { type: String, default: "Search" }, prefix: { type: String, default: "" }, suffix: { type: String, default: "" }, size: { type: String, default: "md" }, clearable: { type: Boolean, default: false } }; const DropdownPropsKey = Symbol("DropdownPropsKey"); function useCustomTemplate(ctx2, modelValue) { const itemTemplate = (item, index2) => { const arr = { item, index: index2 }; if (ctx2.slots.item) { return ctx2.slots.item(arr); } return null; }; const noResultItemTemplate = () => { if (ctx2.slots.nothing) { return ctx2.slots.nothing(modelValue.value); } return null; }; const searchingTemplate = () => { if (ctx2.slots.searching) { return ctx2.slots.searching(modelValue.value); } return null; }; const customRenderSolts = () => { const slots = {}; if (ctx2.slots.item) { slots["itemTemplate"] = itemTemplate; } if (ctx2.slots.nothing) { slots["noResultItemTemplate"] = noResultItemTemplate; } if (ctx2.slots.searching) { slots["searchingTemplate"] = searchingTemplate; } return slots; }; return { customRenderSolts }; } function useSearchFn(ctx2, allowEmptyValueSearch, source, searchFn, formatter) { const searchList = ref([]); const showNoResultItemTemplate = ref(false); const defaultSearchFn = (term) => { const arr = []; source.value.forEach((item) => { let cur = formatter.value(item); cur = cur.toLowerCase(); if (cur.startsWith(term)) { arr.push(item); } }); return arr; }; const handleSearch = async (term, enableLazyLoad = false) => { if (term === "" && !allowEmptyValueSearch.value) { searchList.value = []; showNoResultItemTemplate.value = false; return; } let arr = []; term = term.toLowerCase(); if (enableLazyLoad) { arr = source.value; } else if (!searchFn.value) { arr = defaultSearchFn(term); } else { arr = await searchFn.value(term); } searchList.value = arr; if (searchList.value.length === 0) { showNoResultItemTemplate.value = true; } else { showNoResultItemTemplate.value = false; } }; const recentlyFocus = (latestSource) => { if (latestSource) { searchList.value = latestSource; } }; return { handleSearch, recentlyFocus, searchList, showNoResultItemTemplate }; } function useInputHandle(ctx2, searchList, showNoResultItemTemplate, modelValue, isDisabled, delay, handleSearch, transInputFocusEmit, recentlyFocus, latestSource) { const visible = ref(false); const inputRef = ref(); const searchStatus = ref(false); const isFocus = ref(false); const debounce = (cb, time) => { let timer; return (arg) => { if (timer) { clearTimeout(timer); } timer = setTimeout(async () => { searchStatus.value = true; await cb(arg); searchStatus.value = false; }, time); }; }; const onInputCb = async (value) => { await handleSearch(value); visible.value = true; }; const onInputDebounce = debounce(onInputCb, delay.value); const onInput = (e) => { const inp = e.target; searchStatus.value = false; showNoResultItemTemplate.value = false; ctx2.emit("update:modelValue", inp.value); onInputDebounce(inp.value); }; const onFocus = () => { isFocus.value = true; handleSearch(modelValue.value); recentlyFocus(latestSource == null ? void 0 : latestSource.value); transInputFocusEmit.value && transInputFocusEmit.value(); }; const onBlur = () => { isFocus.value = false; ctx2.emit("blur"); }; const onClear = () => { ctx2.emit("update:modelValue", ""); ctx2.emit("clear"); }; const handleClose = () => { visible.value = false; searchStatus.value = false; showNoResultItemTemplate.value = false; }; const toggleMenu = () => { if (!isDisabled.value) { if (visible.value) { handleClose(); } else { visible.value = true; if (ctx2.slots.noResultItemTemplate && searchList.value.length === 0 && modelValue.value.trim() !== "") { showNoResultItemTemplate.value = true; } } } }; return { handleClose, toggleMenu, onInput, onFocus, onBlur, onClear, isFocus, inputRef, visible, searchStatus }; } function useSelectHandle(ctx2, searchList, selectValue, handleSearch, formatter, handleClose) { const selectedIndex = ref(0); const getListIndex = (cur) => { if (searchList.value.length === 0) { return 0; } let ind = 0; searchList.value.forEach((item, index2) => { if (typeof item === "string") { if (item === cur) { ind = index2; } } else { if (String(item.label) === cur) { ind = index2; } } }); return ind === -1 ? 0 : ind; }; const selectOptionClick = async (item) => { const cur = formatter.value(item); ctx2.emit("update:modelValue", cur); handleClose(); await handleSearch(cur); selectedIndex.value = getListIndex(cur); selectValue.value && selectValue.value(cur); }; return { selectedIndex, selectOptionClick }; } function useLazyHandle(props, ctx2, handleSearch) { const showLoading = ref(false); const dropDownRef = ref(); const loadMore = () => { if (!props.enableLazyLoad && showLoading) { return; } const dropDownValue = dropDownRef.value; const height = dropDownValue.scrollHeight; const scrollTop = dropDownValue.clientHeight + dropDownValue.scrollTop; if (scrollTop >= height && scrollTop >= props.maxHeight) { props.loadMore(); showLoading.value = true; } }; async function loadFinish() { await handleSearch(props.modelValue, props.enableLazyLoad); showLoading.value = false; } ctx2.expose({ loadFinish }); return { showLoading, dropDownRef, loadMore }; } function useKeyBoardHandle(dropDownRef, visible, searchList, selectedIndex, searchStatus, showNoResultItemTemplate, selectOptionClick, handleClose) { var _a; const hoverIndex = ref((_a = selectedIndex.value) != null ? _a : 0); const scrollToActive = (index2) => { const ul = dropDownRef.value; const li = ul.children[index2]; nextTick(() => { if (li.scrollIntoViewIfNeeded) { li.scrollIntoViewIfNeeded(false); } else { const containerInfo = ul.getBoundingClientRect(); const elementInfo = li.getBoundingClientRect(); if (elementInfo.bottom > containerInfo.bottom || elementInfo.top < containerInfo.top) { li.scrollIntoView(false); } } }); }; const handlekeyDown = (e) => { var _a2; const keyCode = e.key || e.code; if (keyCode === "Escape" && (visible.value && searchList.value.length || searchStatus.value || showNoResultItemTemplate.value)) { handleClose(); return; } const status = visible.value && searchList.value.length && !searchStatus.value && !showNoResultItemTemplate.value; if (keyCode === "ArrowDown" && status) { if (hoverIndex.value === searchList.value.length - 1) { hoverIndex.value = 0; scrollToActive(hoverIndex.value); return; } hoverIndex.value = hoverIndex.value + 1; scrollToActive(hoverIndex.value); } else if (keyCode === "ArrowUp" && status) { if (hoverIndex.value === 0) { hoverIndex.value = searchList.value.length - 1; scrollToActive(hoverIndex.value); return; } hoverIndex.value = hoverIndex.value - 1; scrollToActive(hoverIndex.value); } if (keyCode === "Enter" && status) { selectOptionClick(searchList.value[hoverIndex.value]); hoverIndex.value = (_a2 = selectedIndex.value) != null ? _a2 : 0; return; } }; return { hoverIndex, handlekeyDown }; } const formProps = { data: { type: Object, default: () => ({}) }, layout: { type: String, default: "horizontal" }, labelSize: { type: String, default: "md" }, labelAlign: { type: String, default: "start" }, rules: { type: Object }, messageType: { type: String, default: "popover" }, popPosition: { type: Array, default: ["right", "bottom"] }, validateOnRuleChange: { type: Boolean, default: false }, showFeedback: { type: Boolean, default: false }, disabled: { type: Boolean, default: false }, size: { type: String }, hideRequiredMark: { type: Boolean, default: false }, styleType: { type: String, default: "default" }, appendToBodyScrollStrategy: { type: String, default: "reposition" } }; const FORM_TOKEN = Symbol("dForm"); const STYLE_TOKEN = Symbol("dForm"); const inBrowser = typeof window !== "undefined"; function lockScroll() { if (document.documentElement.scrollHeight > document.documentElement.clientHeight) { const scrollTop = document.documentElement.scrollTop; const style = document.documentElement.getAttribute("style"); document.documentElement.style.position = "fixed"; document.documentElement.style.top = `-${scrollTop}px`; document.documentElement.style.width = document.documentElement.style.width || "100%"; document.documentElement.style.overflowY = "scroll"; return () => { if (style) { document.documentElement.setAttribute("style", style); } else { document.documentElement.removeAttribute("style"); } document.documentElement.scrollTop = scrollTop; }; } return; } function createBem$1(namespace, element, modifier) { let cls = namespace; if (element) { cls += `__${element}`; } if (modifier) { cls += `--${modifier}`; } return cls; } function useNamespace$1(block, needDot = false) { const namespace = needDot ? `.devui-${block}` : `devui-${block}`; const b = () => createBem$1(namespace); const e = (element) => element ? createBem$1(namespace, element) : ""; const m = (modifier) => modifier ? createBem$1(namespace, "", modifier) : ""; const em = (element, modifier) => element && modifier ? createBem$1(namespace, element, modifier) : ""; return { b, e, m, em }; } function isUrl(value) { return /^((http|https):)?\/\//.test(value); } function useFieldCollection() { const itemContexts = []; const addItemContext = (field) => { itemContexts.push(field); }; const removeItemContext = (field) => { itemContexts.splice(itemContexts.indexOf(field), 1); }; return { itemContexts, addItemContext, removeItemContext }; } var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; var lodash = { exports: {} }; /** * @license * Lodash <https://lodash.com/> * Copyright OpenJS Foundation and other contributors <https://openjsf.org/> * Released under MIT license <https://lodash.com/license> * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors */ (function(module, exports) { (function() { var undefined$1; var VERSION = "4.17.21"; var LARGE_ARRAY_SIZE = 200; var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`"; var HASH_UNDEFINED = "__lodash_hash_undefined__"; var MAX_MEMOIZE_SIZE = 500; var PLACEHOLDER = "__lodash_placeholder__"; var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4; var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512; var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "..."; var HOT_COUNT = 800, HOT_SPAN = 16; var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3; var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0; var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; var wrapFlags = [ ["ary", WRAP_ARY_FLAG], ["bind", WRAP_BIND_FLAG], ["bindKey", WRAP_BIND_KEY_FLAG], ["curry", WRAP_CURRY_FLAG], ["curryRight", WRAP_CURRY_RIGHT_FLAG], ["flip", WRAP_FLIP_FLAG], ["partial", WRAP_PARTIAL_FLAG], ["partialRight", WRAP_PARTIAL_RIGHT_FLAG], ["rearg", WRAP_REARG_FLAG] ]; var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]"; var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[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]"; var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source); var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g; var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source); var reTrimStart = /^\s+/; var reWhitespace = /\s/; var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /; var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; var reEscapeChar = /\\(\\)?/g; var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; var reFlags = /\w*$/; var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; var reIsBinary = /^0b[01]+$/i; var reIsHostCtor = /^\[object .+?Constructor\]$/; var reIsOctal = /^0o[0-7]+$/i; var reIsUint = /^(?:0|[1-9]\d*)$/; var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; var reNoMatch = /($^)/; var reUnescapedString = /['\n\r\u2028\u2029\\]/g; 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; var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", 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"; var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?: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, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")"; var reApos = RegExp(rsApos, "g"); var reComboMark = RegExp(rsCombo, "g"); var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"); 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"); var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]"); 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 ]/; var contextProps = [ "Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout" ]; var templateCounter = -1; var typedArrayTags = {}; typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; var cloneableTags = {}; cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false; var deburredLetters = { "\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", "\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" }; var htmlEscapes = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }; var htmlUnescapes = { "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'" }; var stringEscapes = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }; var freeParseFloat = parseFloat, freeParseInt = parseInt; var freeGlobal = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; var freeSelf = typeof self == "object" && self && self.Object === Object && self; var root = freeGlobal || freeSelf || Function("return this")(); var freeExports = exports && !exports.nodeType && exports; var freeModule = freeExports && true && module && !module.nodeType && module; var moduleExports = freeModule && freeModule.exports === freeExports; var freeProcess = moduleExports && freeGlobal.process; var nodeUtil = function() { try { var types2 = freeModule && freeModule.require && freeModule.require("util").types; if (types2) { return types2; } return freeProcess && freeProcess.binding && freeProcess.binding("util"); } catch (e) { } }(); var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; 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); } function arrayAggregator(array4, setter, iteratee, accumulator) { var index2 = -1, length = array4 == null ? 0 : array4.length; while (++index2 < length) { var value = array4[index2]; setter(accumulator, value, iteratee(value), array4); } return accumulator; } function arrayEach(array4, iteratee) { var index2 = -1, length = array4 == null ? 0 : array4.length; while (++index2 < length) { if (iteratee(array4[index2], index2, array4) === false) { break; } } return array4; } function arrayEachRight(array4, iteratee) { var length = array4 == null ? 0 : array4.length; while (length--) { if (iteratee(array4[length], length, array4) === false) { break; } } return array4; } function arrayEvery(array4, predicate) { var index2 = -1, length = array4 == null ? 0 : array4.length; while (++index2 < length) { if (!predicate(array4[index2], index2, array4)) { return false; } } return true; } function arrayFilter(array4, predicate) { var index2 = -1, length = array4 == null ? 0 : array4.length, resIndex = 0, result = []; while (++index2 < length) { var value = array4[index2]; if (predicate(value, index2, array4)) { result[resIndex++] = value; } } return result; } function arrayIncludes(array4, value) { var length = array4 == null ? 0 : array4.length; return !!length && baseIndexOf(array4, value, 0) > -1; } function arrayIncludesWith(array4, value, comparator) { var index2 = -1, length = array4 == null ? 0 : array4.length; while (++index2 < length) { if (comparator(value, array4[index2])) { return true; } } return false; } function arrayMap(array4, iteratee) { var index2 = -1, length = array4 == null ? 0 : array4.length, result = Array(length); while (++index2 < length) { result[index2] = iteratee(array4[index2], index2, array4); } return result; } function arrayPush(array4, values) { var index2 = -1, length = values.length, offset2 = array4.length; while (++index2 < length) { array4[offset2 + index2] = values[index2]; } return array4; } function arrayReduce(array4, iteratee, accumulator, initAccum) { var index2 = -1, length = array4 == null ? 0 : array4.length; if (initAccum && length) { accumulator = array4[++index2]; } while (++index2 < length) { accumulator = iteratee(accumulator, array4[index2], index2, array4); } return accumulator; } function arrayReduceRight(array4, iteratee, accumulator, initAccum) { var length = array4 == null ? 0 : array4.length; if (initAccum && length) { accumulator = array4[--length]; } while (length--) { accumulator = iteratee(accumulator, array4[length], length, array4); } return accumulator; } function arraySome(array4, predicate) { var index2 = -1, length = array4 == null ? 0 : array4.length; while (++index2 < length) { if (predicate(array4[index2], index2, array4)) { return true; } } return false; } var asciiSize = baseProperty("length"); function asciiToArray(string3) { return string3.split(""); } function asciiWords(string3) { return string3.match(reAsciiWord) || []; } function baseFindKey(collection, predicate, eachFunc) { var result; eachFunc(collection, function(value, key, collection2) { if (predicate(value, key, collection2)) { result = key; return false; } }); return result; } function baseFindIndex(array4, predicate, fromIndex, fromRight) { var length = array4.length, index2 = fromIndex + (fromRight ? 1 : -1); while (fromRight ? index2-- : ++index2 < length) { if (predicate(array4[index2], index2, array4)) { return index2; } } return -1; } function baseIndexOf(array4, value, fromIndex) { return value === value ? strictIndexOf(array4, value, fromIndex) : baseFindIndex(array4, baseIsNaN, fromIndex); } function baseIndexOfWith(array4, value, fromIndex, comparator) { var index2 = fromIndex - 1, length = array4.length; while (++index2 < length) { if (comparator(array4[index2], value)) { return index2; } } return -1; } function baseIsNaN(value) { return value !== value; } function baseMean(array4, iteratee) { var length = array4 == null ? 0 : array4.length; return length ? baseSum(array4, iteratee) / length : NAN; } function baseProperty(key) { return function(object4) { return object4 == null ? undefined$1 : object4[key]; }; } function basePropertyOf(object4) { return function(key) { return object4 == null ? undefined$1 : object4[key]; }; } function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { eachFunc(collection, function(value, index2, collection2) { accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index2, collection2); }); return accumulator; } function baseSortBy(array4, comparer) { var length = array4.length; array4.sort(comparer); while (length--) { array4[length] = array4[length].value; } return array4; } function baseSum(array4, iteratee) { var result, index2 = -1, length = array4.length; while (++index2 < length) { var current = iteratee(array4[index2]); if (current !== undefined$1) { result = result === undefined$1 ? current : result + current; } } return result; } function baseTimes(n, iteratee) { var index2 = -1, result = Array(n); while (++index2 < n) { result[index2] = iteratee(index2); } return result; } function baseToPairs(object4, props) { return arrayMap(props, function(key) { return [key, object4[key]]; }); } function baseTrim(string3) { return string3 ? string3.slice(0, trimmedEndIndex(string3) + 1).replace(reTrimStart, "") : string3; } function baseUnary(func) { return function(value) { return func(value); }; } function baseValues(object4, props) { return arrayMap(props, function(key) { return object4[key]; }); } function cacheHas(cache, key) { return cache.has(key); } function charsStartIndex(strSymbols, chrSymbols) { var index2 = -1, length = strSymbols.length; while (++index2 < length && baseIndexOf(chrSymbols, strSymbols[index2], 0) > -1) { } return index2; } function charsEndIndex(strSymbols, chrSymbols) { var index2 = strSymbols.length; while (index2-- && baseIndexOf(chrSymbols, strSymbols[index2], 0) > -1) { } return index2; } function countHolders(array4, placeholder) { var length = array4.length, result = 0; while (length--) { if (array4[length] === placeholder) { ++result; } } return result; } var deburrLetter = basePropertyOf(deburredLetters); var escapeHtmlChar = basePropertyOf(htmlEscapes); function escapeStringChar(chr) { return "\\" + stringEscapes[chr]; } function getValue2(object4, key) { return object4 == null ? undefined$1 : object4[key]; } function hasUnicode(string3) { return reHasUnicode.test(string3); } function hasUnicodeWord(string3) { return reHasUnicodeWord.test(string3); } function iteratorToArray(iterator) { var data, result = []; while (!(data = iterator.next()).done) { result.push(data.value); } return result; } function mapToArray(map) { var index2 = -1, result = Array(map.size); map.forEach(function(value, key) { result[++index2] = [key, value]; }); return result; } function overArg(func, transform) { return function(arg) { return func(transform(arg)); }; } function replaceHolders(array4, placeholder) { var index2 = -1, length = array4.length, resIndex = 0, result = []; while (++index2 < length) { var value = array4[index2]; if (value === placeholder || value === PLACEHOLDER) { array4[index2] = PLACEHOLDER; result[resIndex++] = index2; } } return result; } function setToArray(set) { var index2 = -1, result = Array(set.size); set.forEach(function(value) { result[++index2] = value; }); return result; } function setToPairs(set) { var index2 = -1, result = Array(set.size); set.forEach(function(value) { result[++index2] = [value, value]; }); return result; } function strictIndexOf(array4, value, fromIndex) { var index2 = fromIndex - 1, length = array4.length; while (++index2 < length) { if (array4[index2] === value) { return index2; } } return -1; } function strictLastIndexOf(array4, value, fromIndex) { var index2 = fromIndex + 1; while (index2--) { if (array4[index2] === value) { return index2; } } return index2; } function stringSize(string3) { return hasUnicode(string3) ? unicodeSize(string3) : asciiSize(string3); } function stringToArray(string3) { return hasUnicode(string3) ? unicodeToArray(string3) : asciiToArray(string3); } function trimmedEndIndex(string3) { var index2 = string3.length; while (index2-- && reWhitespace.test(string3.charAt(index2))) { } return index2; } var unescapeHtmlChar = basePropertyOf(htmlUnescapes); function unicodeSize(string3) { var result = reUnicode.lastIndex = 0; while (reUnicode.test(string3)) { ++result; } return result; } function unicodeToArray(string3) { return string3.match(reUnicode) || []; } function unicodeWords(string3) { return string3.match(reUnicodeWord) || []; } var runInContext = function runInContext2(context) { context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError; var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype; var coreJsData = context["__core-js_shared__"]; var funcToString = funcProto.toString; var hasOwnProperty = objectProto.hasOwnProperty; var idCounter = 0; var maskSrcKey = function() { var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); return uid ? "Symbol(src)_1." + uid : ""; }(); var nativeObjectToString = objectProto.toString; var objectCtorString = funcToString.call(Object2); var oldDash = root._; var reIsNative = RegExp2("^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"); var Buffer2 = moduleExports ? context.Buffer : undefined$1, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined$1, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined$1, symIterator = Symbol2 ? Symbol2.iterator : undefined$1, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined$1; var defineProperty = function() { try { var func = getNative(Object2, "defineProperty"); func({}, "", {}); return func; } catch (e) { } }(); var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined$1, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse; var DataView = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create"); var metaMap = WeakMap2 && new WeakMap2(); var realNames = {}; var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2); var symbolProto = Symbol2 ? Symbol2.prototype : undefined$1, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined$1, symbolToString = symbolProto ? symbolProto.toString : undefined$1; function lodash2(value) { if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { if (value instanceof LodashWrapper) { return value; } if (hasOwnProperty.call(value, "__wrapped__")) { return wrapperClone(value); } } return new LodashWrapper(value); } var baseCreate = function() { function object4() { } return function(proto) { if (!isObject2(proto)) { return {}; } if (objectCreate) { return objectCreate(proto); } object4.prototype = proto; var result2 = new object4(); object4.prototype = undefined$1; return result2; }; }(); function baseLodash() { } function LodashWrapper(value, chainAll) { this.__wrapped__ = value; this.__actions__ = []; this.__chain__ = !!chainAll; this.__index__ = 0; this.__values__ = undefined$1; } lodash2.templateSettings = { "escape": reEscape, "evaluate": reEvaluate, "interpolate": reInterpolate, "variable": "", "imports": { "_": lodash2 } }; lodash2.prototype = baseLodash.prototype; lodash2.prototype.constructor = lodash2; LodashWrapper.prototype = baseCreate(baseLodash.prototype); LodashWrapper.prototype.constructor = LodashWrapper; function LazyWrapper(value) { this.__wrapped__ = value; this.__actions__ = []; this.__dir__ = 1; this.__filtered__ = false; this.__iteratees__ = []; this.__takeCount__ = MAX_ARRAY_LENGTH; this.__views__ = []; } function lazyClone() { var result2 = new LazyWrapper(this.__wrapped__); result2.__actions__ = copyArray(this.__actions__); result2.__dir__ = this.__dir__; result2.__filtered__ = this.__filtered__; result2.__iteratees__ = copyArray(this.__iteratees__); result2.__takeCount__ = this.__takeCount__; result2.__views__ = copyArray(this.__views__); return result2; } function lazyReverse() { if (this.__filtered__) { var result2 = new LazyWrapper(this); result2.__dir__ = -1; result2.__filtered__ = true; } else { result2 = this.clone(); result2.__dir__ *= -1; } return result2; } function lazyValue() { var array4 = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray(array4), isRight = dir < 0, arrLength = isArr ? array4.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end = view.end, length = end - start, index2 = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__); if (!isArr || !isRight && arrLength == length && takeCount == length) { return baseWrapperValue(array4, this.__actions__); } var result2 = []; outer: while (length-- && resIndex < takeCount) { index2 += dir; var iterIndex = -1, value = array4[index2]; while (++iterIndex < iterLength) { var data = iteratees[iterIndex], iteratee2 = data.iteratee, type4 = data.type, computed2 = iteratee2(value); if (type4 == LAZY_MAP_FLAG) { value = computed2; } else if (!computed2) { if (type4 == LAZY_FILTER_FLAG) { continue outer; } else { break outer; } } } result2[resIndex++] = value; } return result2; } LazyWrapper.prototype = baseCreate(baseLodash.prototype); LazyWrapper.prototype.constructor = LazyWrapper; function Hash(entries) { var index2 = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index2 < length) { var entry = entries[index2]; this.set(entry[0], entry[1]); } } function hashClear() { this.__data__ = nativeCreate ? nativeCreate(null) : {}; this.size = 0; } function hashDelete(key) { var result2 = this.has(key) && delete this.__data__[key]; this.size -= result2 ? 1 : 0; return result2; } function hashGet(key) { var data = this.__data__; if (nativeCreate) { var result2 = data[key]; return result2 === HASH_UNDEFINED ? undefined$1 : result2; } return hasOwnProperty.call(data, key) ? data[key] : undefined$1; } function hashHas(key) { var data = this.__data__; return nativeCreate ? data[key] !== undefined$1 : hasOwnProperty.call(data, key); } function hashSet(key, value) { var data = this.__data__; this.size += this.has(key) ? 0 : 1; data[key] = nativeCreate && value === undefined$1 ? HASH_UNDEFINED : value; return this; } Hash.prototype.clear = hashClear; Hash.prototype["delete"] = hashDelete; Hash.prototype.get = hashGet; Hash.prototype.has = hashHas; Hash.prototype.set = hashSet; function ListCache(entries) { var index2 = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index2 < length) { var entry = entries[index2]; this.set(entry[0], entry[1]); } } function listCacheClear() { this.__data__ = []; this.size = 0; } function listCacheDelete(key) { var data = this.__data__, index2 = assocIndexOf(data, key); if (index2 < 0) { return false; } var lastIndex = data.length - 1; if (index2 == lastIndex) { data.po