mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-22 16:35:14 +00:00
1 line
89 KiB
JSON
1 line
89 KiB
JSON
{"ast":null,"code":"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}\n\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\n\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\n\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\n\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\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}\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}\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);\n\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\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\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\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\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 };","map":{"version":3,"sources":["/app/node_modules/history/esm/history.js"],"names":["_extends","resolvePathname","valueEqual","warning","invariant","addLeadingSlash","path","charAt","stripLeadingSlash","substr","hasBasename","prefix","toLowerCase","indexOf","length","stripBasename","stripTrailingSlash","slice","parsePath","pathname","search","hash","hashIndex","searchIndex","createPath","location","createLocation","state","key","currentLocation","undefined","decodeURI","e","URIError","locationsAreEqual","a","b","createTransitionManager","prompt","setPrompt","nextPrompt","process","env","NODE_ENV","confirmTransitionTo","action","getUserConfirmation","callback","result","listeners","appendListener","fn","isActive","listener","apply","arguments","push","filter","item","notifyListeners","_len","args","Array","_key","forEach","canUseDOM","window","document","createElement","getConfirmation","message","confirm","supportsHistory","ua","navigator","userAgent","history","supportsPopStateOnHashChange","supportsGoWithoutReloadUsingHash","isExtraneousPopstateEvent","event","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","props","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","Math","random","toString","transitionManager","setState","nextState","handlePopState","handlePop","handleHashChange","forceNextPop","ok","revertPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","initialLocation","createHref","href","pushState","prevIndex","nextKeys","replace","replaceState","n","goBack","goForward","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","url","getHashPath","substring","pushHashPath","replaceHashPath","createHashHistory","canGoWithoutReload","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","locationsAreEqual$$1","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","hashChanged","nextPaths","clamp","lowerBound","upperBound","min","max","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","index","map","entry","nextIndex","nextEntries","splice","canGo"],"mappings":"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","sourcesContent":["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"]},"metadata":{},"sourceType":"module"} |