{"version":3,"file":"vendor-8d4414ce.prod.7b0ae95e0014e85ad52a.js","mappings":"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","sources":["webpack://landing-page/./.yarn/cache/decode-uri-component-npm-0.2.0-5bcc0f3597-f3749344ab.zip/node_modules/decode-uri-component/index.js","webpack://landing-page/./.yarn/cache/dom-align-npm-1.12.2-def9f187ee-0523f4d7c8.zip/node_modules/dom-align/dist-web/index.js","webpack://landing-page/./.yarn/cache/filter-obj-npm-1.1.0-84128fc26d-cf2104a7c4.zip/node_modules/filter-obj/index.js","webpack://landing-page/./.yarn/cache/history-npm-4.10.1-ee217563ae-addd84bc46.zip/node_modules/history/esm/history.js"],"sourcesContent":["'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar vendorPrefix;\nvar jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-'\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n\n vendorPrefix = '';\n var style = document.createElement('p').style;\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"TransitionProperty\") : 'transitionProperty';\n}\n\nfunction getTransformName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"Transform\") : 'transform';\n}\nfunction setTransitionProperty(node, value) {\n var name = getTransitionName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n var name = getTransformName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nfunction getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\nfunction getTransformXY(node) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return {\n x: parseFloat(matrix[12] || matrix[4], 0),\n y: parseFloat(matrix[13] || matrix[5], 0)\n };\n }\n\n return {\n x: 0,\n y: 0\n };\n}\nvar matrix2d = /matrix\\((.*)\\)/;\nvar matrix3d = /matrix3d\\((.*)\\)/;\nfunction setTransformXY(node, xy) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var arr;\n var match2d = transform.match(matrix2d);\n\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, \"matrix(\".concat(arr.join(','), \")\"));\n } else {\n var match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, \"matrix3d(\".concat(arr.join(','), \")\"));\n }\n } else {\n setTransform(node, \"translateX(\".concat(xy.x, \"px) translateY(\").concat(xy.y, \"px) translateZ(0)\"));\n }\n}\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\nvar getComputedStyleX; // https://stackoverflow.com/a/3485654/3040605\n\nfunction forceRelayout(elem) {\n var originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n var value = v;\n\n if (_typeof(name) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n\n return undefined;\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = \"\".concat(value, \"px\");\n }\n\n el.style[name] = value;\n return undefined;\n }\n\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n var box;\n var x;\n var y;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement; // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n\n box = elem.getBoundingClientRect(); // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top; // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n\n if (typeof ret !== 'number') {\n var d = w.document; // ie6,7,8 standard mode\n\n ret = d.documentElement[method];\n\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\n\n\nfunction isWindow(obj) {\n // must use == for ie8\n\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n\n if (node.nodeType === 9) {\n return node;\n }\n\n return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n var computedStyle = cs;\n var val = '';\n var d = getDocument(elem);\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null); // https://github.com/kissyteam/kissy/issues/61\n\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp(\"^(\".concat(RE_NUM, \")(?!px)[a-z%]+$\"), 'i');\n\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT]; // prevent flashing of content\n\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; // Put in the new values to get a computed value out\n\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX; // Revert the changed values\n\n style[LEFT] = left;\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n} // 设置 elem 相对 elem.ownerDocument 的坐标\n\n\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var presetH = -999;\n var presetV = -999;\n var horizontalProperty = getOffsetDirection('left', option);\n var verticalProperty = getOffsetDirection('top', option);\n var oppositeHorizontalProperty = oppositeOffsetDirection(horizontalProperty);\n var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n\n var originalTransition = '';\n var originalOffset = getOffset(elem);\n\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = \"\".concat(presetH, \"px\");\n }\n\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = \"\".concat(presetV, \"px\");\n } // force relayout\n\n\n forceRelayout(elem);\n var old = getOffset(elem);\n var originalStyle = {};\n\n for (var key in offset) {\n if (offset.hasOwnProperty(key)) {\n var dir = getOffsetDirection(key, option);\n var preset = key === 'left' ? presetH : presetV;\n var off = originalOffset[key] - old[key];\n\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n\n css(elem, originalStyle); // force relayout\n\n forceRelayout(elem);\n\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n\n var ret = {};\n\n for (var _key in offset) {\n if (offset.hasOwnProperty(_key)) {\n var _dir = getOffsetDirection(_key, option);\n\n var _off = offset[_key] - originalOffset[_key];\n\n if (_key === _dir) {\n ret[_dir] = originalStyle[_dir] + _off;\n } else {\n ret[_dir] = originalStyle[_dir] - _off;\n }\n }\n }\n\n css(elem, ret);\n}\n\nfunction setTransform$1(elem, offset) {\n var originalOffset = getOffset(elem);\n var originalXY = getTransformXY(elem);\n var resultXY = {\n x: originalXY.x,\n y: originalXY.y\n };\n\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n\n setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n var oriOffset = getOffset(elem);\n var oLeft = oriOffset.left.toFixed(0);\n var oTop = oriOffset.top.toFixed(0);\n var tLeft = offset.left.toFixed(0);\n var tTop = offset.top.toFixed(0);\n\n if (oLeft === tLeft && oTop === tTop) {\n return;\n }\n }\n\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (option.useCssTransform && getTransformName() in document.body.style) {\n setTransform$1(elem, offset);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name; // Remember the old values, and insert the new ones\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem); // Revert the old values\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop;\n var j;\n var i;\n\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = void 0;\n\n if (prop === 'border') {\n cssProp = \"\".concat(prop).concat(which[i], \"Width\");\n } else {\n cssProp = prop + which[i];\n }\n\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n\n return value;\n}\n\nvar domUtils = {\n getParent: function getParent(element) {\n var parent = element;\n\n do {\n if (parent.nodeType === 11 && parent.host) {\n parent = parent.host;\n } else {\n parent = parent.parentNode;\n }\n } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n\n return parent;\n }\n};\neach(['Width', 'Height'], function (name) {\n domUtils[\"doc\".concat(name)] = function (refWin) {\n var d = refWin.document;\n return Math.max( // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[\"scroll\".concat(name)], // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[\"scroll\".concat(name)], domUtils[\"viewport\".concat(name)](d));\n };\n\n domUtils[\"viewport\".concat(name)] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = \"client\".concat(name);\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop]; // 标准模式取 documentElement\n // backcompat 取 body\n\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\n\nfunction getWH(elem, name, ex) {\n var extra = ex;\n\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.getBoundingClientRect().width : elem.getBoundingClientRect().height;\n var isBorderBox = isBorderBoxFn(elem);\n var cssBoxValue = 0;\n\n if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {\n borderBoxValue = undefined; // Fall back to computed then un computed css if necessary\n\n cssBoxValue = getComputedStyleX(elem, name);\n\n if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n } // Normalize '', auto, and prepare for extra\n\n\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n\n return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which) : getPBMWidth(elem, ['margin'], which));\n }\n\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n}; // fix #119 : https://github.com/kissyteam/kissy/issues/119\n\nfunction getWHIgnoreDisplay() {\n for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var val;\n var elem = args[0]; // in case elem is window\n // elem.offsetWidth === undefined\n\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n\n return val;\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n\n domUtils[\"outer\".concat(first)] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, v) {\n var val = v;\n\n if (val !== undefined) {\n if (elem) {\n var isBorderBox = isBorderBoxFn(elem);\n\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n\n return css(elem, name, val);\n }\n\n return undefined;\n }\n\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (var i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n\n return to;\n}\n\nvar utils = {\n getWindow: function getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument: getDocument,\n offset: function offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var i;\n var ret = {};\n\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n\n var overflow = obj.overflow;\n\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n\n return ret;\n },\n mix: mix,\n getWindowScrollLeft: function getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop: function getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge: function merge() {\n var ret = {};\n\n for (var i = 0; i < arguments.length; i++) {\n utils.mix(ret, i < 0 || arguments.length <= i ? undefined : arguments[i]);\n }\n\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0\n};\nmix(utils, domUtils);\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\n\nvar getParent = utils.getParent;\n\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n } // ie 这个也不是完全可行\n\n /*\n
\n
\n 元素 6 高 100px 宽 50px
\n
\n
\n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent;\n var positionStyle = utils.css(element, 'position');\n var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html' ? null : getParent(element);\n }\n\n for (parent = getParent(element); parent && parent !== body && parent.nodeType !== 9; parent = getParent(parent)) {\n positionStyle = utils.css(parent, 'position');\n\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n\n return null;\n}\n\nvar getParent$1 = utils.getParent;\nfunction isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent = null;\n\n for (parent = getParent$1(element); // 修复元素位于 document.documentElement 下导致崩溃问题\n parent && parent !== body && parent !== doc; parent = getParent$1(parent)) {\n var positionStyle = utils.css(parent, 'position');\n\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * 获得元素的显示部分的区域\n */\n\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n var visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity\n };\n var el = getOffsetParent(element);\n var doc = utils.getDocument(element);\n var win = doc.defaultView || doc.parentWindow;\n var body = doc.body;\n var documentElement = doc.documentElement; // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) && // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n el !== body && el !== documentElement && utils.css(el, 'overflow') !== 'visible') {\n var pos = utils.offset(el); // add border\n\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(visibleRect.right, // consider area without scrollBar\n pos.left + el.clientWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight);\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n\n el = getOffsetParent(el);\n } // Set element position to fixed\n // make sure absolute element itself don't affect it's visible area\n // https://github.com/ant-design/ant-design/issues/7601\n\n\n var originalPosition = null;\n\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n var position = utils.css(element, 'position');\n\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n var documentWidth = documentElement.scrollWidth;\n var documentHeight = documentElement.scrollHeight; // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n\n var bodyStyle = window.getComputedStyle(body);\n\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n } // Reset element position after calculate the visible area\n\n\n if (element.style) {\n element.style.position = originalPosition;\n }\n\n if (alwaysByViewport || isAncestorFixed(element)) {\n // Clip by viewport's size.\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n } else {\n // Clip by document's size.\n var maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n var maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;\n}\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n var pos = utils.clone(elFuturePos);\n var size = {\n width: elRegion.width,\n height: elRegion.height\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n } // Left edge inside and right edge outside viewport, try to resize it.\n\n\n if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) {\n size.width -= pos.left + size.width - visibleRect.right;\n } // Right edge outside viewport, try to move it.\n\n\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n } // Top edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n } // Top edge inside and bottom edge outside viewport, try to resize it.\n\n\n if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n } // Bottom edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return utils.mix(pos, size);\n}\n\nfunction getRegion(node) {\n var offset;\n var w;\n var h;\n\n if (!utils.isWindow(node) && node.nodeType !== 9) {\n offset = utils.offset(node);\n w = utils.outerWidth(node);\n h = utils.outerHeight(node);\n } else {\n var win = utils.getWindow(node);\n offset = {\n left: utils.getWindowScrollLeft(win),\n top: utils.getWindowScrollTop(win)\n };\n w = utils.viewportWidth(win);\n h = utils.viewportHeight(win);\n }\n\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\n/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\nfunction getAlignOffset(region, align) {\n var V = align.charAt(0);\n var H = align.charAt(1);\n var w = region.width;\n var h = region.height;\n var x = region.left;\n var y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y\n };\n}\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n var p1 = getAlignOffset(refNodeRegion, points[1]);\n var p2 = getAlignOffset(elRegion, points[0]);\n var diff = [p2.left - p1.left, p2.top - p1.top];\n return {\n left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1])\n };\n}\n\n/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right;\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom;\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left;\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top;\n}\n\nfunction flip(points, reg, map) {\n var ret = [];\n utils.each(points, function (p) {\n ret.push(p.replace(reg, function (m) {\n return map[m];\n }));\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n var n;\n\n if (/%$/.test(str)) {\n n = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\n\n\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n var points = align.points;\n var offset = align.offset || [0, 0];\n var targetOffset = align.targetOffset || [0, 0];\n var overflow = align.overflow;\n var source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n var newOverflowCfg = {};\n var fail = 0;\n var alwaysByViewport = !!(overflow && overflow.alwaysByViewport); // 当前节点可以被放置的显示区域\n\n var visibleRect = getVisibleRectForElement(source, alwaysByViewport); // 当前节点所占的区域, left/top/width/height\n\n var elRegion = getRegion(source); // 将 offset 转换成数值,支持百分比\n\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion); // 当前节点将要被放置的位置\n\n var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset); // 当前节点将要所处的区域\n\n var newElRegion = utils.merge(elRegion, elFuturePos); // 如果可视区域不能完全放置当前节点时允许调整\n\n if (visibleRect && (overflow.adjustX || overflow.adjustY) && isTgtRegionVisible) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l'\n }); // 偏移量也反下\n\n var newOffset = flipOffset(offset, 0);\n var newTargetOffset = flipOffset(targetOffset, 0);\n var newElFuturePos = getElFuturePos(elRegion, tgtRegion, newPoints, newOffset, newTargetOffset);\n\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var _newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't'\n }); // 偏移量也反下\n\n\n var _newOffset = flipOffset(offset, 1);\n\n var _newTargetOffset = flipOffset(targetOffset, 1);\n\n var _newElFuturePos = getElFuturePos(elRegion, tgtRegion, _newPoints, _newOffset, _newTargetOffset);\n\n if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = _newPoints;\n offset = _newOffset;\n targetOffset = _newTargetOffset;\n }\n }\n } // 如果失败,重新计算当前节点将要被放置的位置\n\n\n if (fail) {\n elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset);\n utils.mix(newElRegion, elFuturePos);\n }\n\n var isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect); // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n\n if (isStillFailX || isStillFailY) {\n var _newPoints2 = points; // 重置对应部分的翻转逻辑\n\n if (isStillFailX) {\n _newPoints2 = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l'\n });\n }\n\n if (isStillFailY) {\n _newPoints2 = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't'\n });\n }\n\n points = _newPoints2;\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n } // 2. 只有指定了可以调整当前方向才调整\n\n\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY; // 确实要调整,甚至可能会调整高度宽度\n\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg);\n }\n } // need judge to in case set fixed with in css on height auto element\n\n\n if (newElRegion.width !== elRegion.width) {\n utils.css(source, 'width', utils.width(source) + newElRegion.width - elRegion.width);\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(source, 'height', utils.height(source) + newElRegion.height - elRegion.height);\n } // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如
\n\n\n utils.offset(source, {\n left: newElRegion.left,\n top: newElRegion.top\n }, {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake\n });\n return {\n points: points,\n offset: offset,\n targetOffset: targetOffset,\n overflow: newOverflowCfg\n };\n}\n/**\n * 2012-04-26 yiminghe@gmail.com\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 yiminghe@gmail.com note:\n * - 增加智能对齐,以及大小调整选项\n **/\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n var visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n var targetRegion = getRegion(target);\n return !visibleRect || targetRegion.left + targetRegion.width <= visibleRect.left || targetRegion.top + targetRegion.height <= visibleRect.top || targetRegion.left >= visibleRect.right || targetRegion.top >= visibleRect.bottom;\n}\n\nfunction alignElement(el, refNode, align) {\n var target = align.target || refNode;\n var refNodeRegion = getRegion(target);\n var isTargetNotOutOfVisible = !isOutOfVisibleRect(target, align.overflow && align.overflow.alwaysByViewport);\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n var pageX;\n var pageY;\n var doc = utils.getDocument(el);\n var win = doc.defaultView || doc.parentWindow;\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n\n if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\n }\n\n var tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0\n };\n var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight; // Provide default target point\n\n var points = [align.points[0], 'cc'];\n return doAlign(el, tgtRegion, _objectSpread2(_objectSpread2({}, align), {}, {\n points: points\n }), pointInView);\n}\n\nexport default alignElement;\nexport { alignElement, alignPoint };\n//# sourceMappingURL=index.js.map\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n"],"names":["token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","err","length","left","slice","right","Array","prototype","concat","call","decode","input","tokens","match","i","module","exports","encodedURI","TypeError","replace","replaceMap","exec","result","entries","Object","keys","key","customDecodeURIComponent","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","obj","Symbol","iterator","constructor","value","configurable","writable","vendorPrefix","jsCssMap","Webkit","Moz","ms","O","getVendorPrefix","undefined","style","document","createElement","getTransitionName","getTransformName","setTransitionProperty","node","name","transitionProperty","setTransform","transform","getComputedStyleX","matrix2d","matrix3d","forceRelayout","elem","originalStyle","display","offsetHeight","css","el","v","hasOwnProperty","getScroll","w","top","ret","method","d","documentElement","body","getScrollLeft","getScrollTop","getOffset","pos","box","x","y","doc","ownerDocument","docElem","getBoundingClientRect","clientLeft","clientTop","getClientPosition","defaultView","parentWindow","isWindow","window","getDocument","nodeType","_RE_NUM_NO_PX","RE_POS","getOffsetDirection","dir","option","useCssRight","useCssBottom","oppositeOffsetDirection","setLeftTop","offset","position","presetH","presetV","horizontalProperty","verticalProperty","oppositeHorizontalProperty","oppositeVerticalProperty","originalTransition","originalOffset","old","preset","off","_key","_dir","_off","each","arr","fn","isBorderBoxFn","getComputedStyle","cs","computedStyle","val","getPropertyValue","test","rsLeft","pixelLeft","BOX_MODELS","swap","options","callback","getPBMWidth","props","which","prop","j","cssProp","parseFloat","domUtils","getParent","element","parent","host","parentNode","getWH","ex","extra","viewportWidth","viewportHeight","docWidth","docHeight","borderBoxValue","width","height","isBorderBox","cssBoxValue","Number","borderBoxValueOrIsBorderBox","refWin","Math","max","win","documentElementProp","compatMode","cssShow","visibility","getWHIgnoreDisplay","_len","args","_key2","offsetWidth","mix","to","from","first","charAt","toUpperCase","includeMargin","utils","getWindow","setTimeout","ignoreShake","oriOffset","oLeft","toFixed","oTop","tLeft","tTop","useCssTransform","originalXY","matrix","getTransformXY","resultXY","xy","match2d","map","item","setTransformXY","setTransform$1","setOffset","clone","overflow","getWindowScrollLeft","getWindowScrollTop","merge","getOffsetParent","positionStyle","nodeName","toLowerCase","getParent$1","getVisibleRectForElement","alwaysByViewport","visibleRect","Infinity","bottom","navigator","userAgent","indexOf","clientWidth","min","clientHeight","originalPosition","scrollX","scrollY","documentWidth","scrollWidth","documentHeight","scrollHeight","bodyStyle","overflowX","innerWidth","overflowY","innerHeight","isAncestorFixed","maxVisibleWidth","maxVisibleHeight","getRegion","h","outerWidth","outerHeight","getAlignOffset","region","align","V","H","getElFuturePos","elRegion","refNodeRegion","points","targetOffset","p1","p2","diff","round","isFailX","elFuturePos","isFailY","flip","reg","p","m","flipOffset","index","convertOffset","str","offsetLen","parseInt","substring","normalizeOffset","doAlign","tgtRegion","isTgtRegionVisible","newOverflowCfg","fail","newElRegion","adjustX","adjustY","newPoints","l","r","newOffset","newTargetOffset","isCompleteFailX","_newPoints","t","b","_newOffset","_newTargetOffset","isCompleteFailY","isStillFailX","isStillFailY","_newPoints2","size","resizeWidth","resizeHeight","adjustForViewport","alignElement","refNode","isTargetNotOutOfVisible","targetRegion","isOutOfVisibleRect","alignPoint","tgtPoint","pageX","pageY","clientX","clientY","pointInView","__getOffsetParent","__getVisibleRectForElement","predicate","isArr","isArray","addLeadingSlash","path","stripLeadingSlash","substr","stripBasename","prefix","hasBasename","stripTrailingSlash","createPath","location","pathname","search","hash","createLocation","state","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","e","URIError","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","appendListener","isActive","listener","notifyListeners","canUseDOM","getConfirmation","message","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","ua","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","random","toString","transitionManager","setState","nextState","handlePopState","event","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","n","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","href","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","url","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","a","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entry","nextIndex","nextEntries","splice","canGo"],"sourceRoot":""}