{"version":3,"sources":["webpack://web/./node_modules/history/esm/history.js"],"names":["addLeadingSlash","path","charAt","stripLeadingSlash","substr","stripBasename","prefix","toLowerCase","indexOf","length","hasBasename","stripTrailingSlash","slice","createPath","location","pathname","search","hash","createLocation","state","key","currentLocation","hashIndex","searchIndex","parsePath","undefined","decodeURI","e","URIError","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","callback","result","appendListener","fn","isActive","listener","apply","arguments","push","filter","item","notifyListeners","_len","args","Array","_key","forEach","canUseDOM","window","document","createElement","getConfirmation","message","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","props","ua","globalHistory","canUseHistory","navigator","userAgent","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","Math","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","replace","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","url","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","a","b","encodedPath","prevLocation","allPaths","lastIndexOf","baseTag","querySelector","getAttribute","pushHashPath","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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","file":"npm.history.42bbb85c948e6283178b.react.bundle.js","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"],"sourceRoot":""}