{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///navigo.min.js","webpack:///webpack/bootstrap 8b1001eea666c146fec8","webpack:///./src/index.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_toConsumableArray","arr","Array","isArray","i","arr2","length","from","isPushStateAvailable","window","history","pushState","Navigo","r","useHash","hash","_routes","_useHash","_hash","_paused","_destroyed","_lastRouteResolved","_resolvedRoutes","_notFoundHandler","_defaultHandler","_usePushState","_onLocationChange","bind","_genericHooks","_historyAPIUpdateMethod","replace","_cLoc","split","_listen","updatePageLinks","clean","s","RegExp","regExpResultToParams","match","names","slice","reduce","params","value","index","decodeURIComponent","replaceDynamicURLParts","route","regexp","paramNames","PARAMETER_REGEXP","full","dots","name","push","REPLACE_VARIABLE_REGEXP","WILDCARD_REGEXP","REPLACE_WILDCARD","FOLLOWED_BY_SLASH_REGEXP","MATCH_REGEXP_FLAGS","getUrlDepth","url","compareUrlDepth","urlA","urlB","findMatchedRoutes","routes","arguments","undefined","map","_replaceDynamicURLPar","filter","matched","fallbackURL","result","isHashChangeAPIAvailable","extractGETParameters","join","getOnlyURL","onlyURL","cleanGETParam","str","manageHooks","handler","hooks","beforeBackup","_typeof","before","shouldRoute","after","isHashedRoot","Object","defineProperty","_extends","assign","target","source","key","prototype","hasOwnProperty","Symbol","iterator","obj","constructor","helpers","navigate","path","absolute","to","shouldResolve","_getRoot","resolve","location","href","on","_this","_len","args","_key","func","uses","_add","orderedRoutes","keys","sort","forEach","off","notFound","current","_this2","GETParameters","query","already","_callLeave","fullUrl","correction","pop","destroy","clearTimeout","_listeningInterval","removeEventListener","self","document","hasListenerAttached","addEventListener","e","getClickedLink","getAttribute","hasAttribute","BACK_BUTTON_ATTR","getLinkPath","state","back","FALLBACK_HREF_ATTR","preventDefault","ctrlKey","metaKey","open","documentElement","tagName","toUpperCase","NOT_FOLLOW_ATTR","CUSTOM_NAVIGO_ATTR","parentElement","generate","data","toString","link","pause","status","resume","historyAPIUpdateMethod","disableIfAPINotAvailable","lastRouteResolved","encodeURI","as","_this3","cached","check","setTimeout","__NAVIGO_WINDOW_LOCATION_MOCK__","leave"],"mappings":"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","file":"navigo.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Navigo\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Navigo\"] = factory();\n\telse\n\t\troot[\"Navigo\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Navigo\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Navigo\"] = factory();\n\telse\n\t\troot[\"Navigo\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\t\n\tfunction isPushStateAvailable() {\n\t return !!(typeof window !== 'undefined' && window.history && window.history.pushState);\n\t}\n\t\n\tfunction Navigo(r, useHash, hash) {\n\t this.root = null;\n\t this._routes = [];\n\t this._useHash = useHash;\n\t this._hash = typeof hash === 'undefined' ? '#' : hash;\n\t this._paused = false;\n\t this._destroyed = false;\n\t this._lastRouteResolved = null;\n\t this._resolvedRoutes = [];\n\t this._notFoundHandler = null;\n\t this._defaultHandler = null;\n\t this._usePushState = !useHash && isPushStateAvailable();\n\t this._onLocationChange = this._onLocationChange.bind(this);\n\t this._genericHooks = null;\n\t this._historyAPIUpdateMethod = 'pushState';\n\t\n\t if (r) {\n\t this.root = useHash ? r.replace(/\\/$/, '/' + this._hash) : r.replace(/\\/$/, '');\n\t } else if (useHash) {\n\t this.root = this._cLoc().split(this._hash)[0].replace(/\\/$/, '/' + this._hash);\n\t }\n\t\n\t this._listen();\n\t this.updatePageLinks();\n\t}\n\t\n\tfunction clean(s) {\n\t if (s instanceof RegExp) return s;\n\t return s.replace(/\\/+$/, '').replace(/^\\/+/, '^/');\n\t}\n\t\n\tfunction regExpResultToParams(match, names) {\n\t if (names.length === 0) return null;\n\t if (!match) return null;\n\t return match.slice(1, match.length).reduce(function (params, value, index) {\n\t if (params === null) params = {};\n\t params[names[index]] = decodeURIComponent(value);\n\t return params;\n\t }, null);\n\t}\n\t\n\tfunction replaceDynamicURLParts(route) {\n\t var paramNames = [],\n\t regexp;\n\t\n\t if (route instanceof RegExp) {\n\t regexp = route;\n\t } else {\n\t regexp = new RegExp(route.replace(Navigo.PARAMETER_REGEXP, function (full, dots, name) {\n\t paramNames.push(name);\n\t return Navigo.REPLACE_VARIABLE_REGEXP;\n\t }).replace(Navigo.WILDCARD_REGEXP, Navigo.REPLACE_WILDCARD) + Navigo.FOLLOWED_BY_SLASH_REGEXP, Navigo.MATCH_REGEXP_FLAGS);\n\t }\n\t return { regexp: regexp, paramNames: paramNames };\n\t}\n\t\n\tfunction getUrlDepth(url) {\n\t return url.replace(/\\/$/, '').split('/').length;\n\t}\n\t\n\tfunction compareUrlDepth(urlA, urlB) {\n\t return getUrlDepth(urlB) - getUrlDepth(urlA);\n\t}\n\t\n\tfunction findMatchedRoutes(url) {\n\t var routes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\t\n\t return routes.map(function (route) {\n\t var _replaceDynamicURLPar = replaceDynamicURLParts(clean(route.route)),\n\t regexp = _replaceDynamicURLPar.regexp,\n\t paramNames = _replaceDynamicURLPar.paramNames;\n\t\n\t var match = url.replace(/^\\/+/, '/').match(regexp);\n\t var params = regExpResultToParams(match, paramNames);\n\t\n\t return match ? { match: match, route: route, params: params } : false;\n\t }).filter(function (m) {\n\t return m;\n\t });\n\t}\n\t\n\tfunction match(url, routes) {\n\t return findMatchedRoutes(url, routes)[0] || false;\n\t}\n\t\n\tfunction root(url, routes) {\n\t var matched = routes.map(function (route) {\n\t return route.route === '' || route.route === '*' ? url : url.split(new RegExp(route.route + '($|\\/)'))[0];\n\t });\n\t var fallbackURL = clean(url);\n\t\n\t if (matched.length > 1) {\n\t return matched.reduce(function (result, url) {\n\t if (result.length > url.length) result = url;\n\t return result;\n\t }, matched[0]);\n\t } else if (matched.length === 1) {\n\t return matched[0];\n\t }\n\t return fallbackURL;\n\t}\n\t\n\tfunction isHashChangeAPIAvailable() {\n\t return !!(typeof window !== 'undefined' && 'onhashchange' in window);\n\t}\n\t\n\tfunction extractGETParameters(url) {\n\t return url.split(/\\?(.*)?$/).slice(1).join('');\n\t}\n\t\n\tfunction getOnlyURL(url, useHash, hash) {\n\t var onlyURL = url,\n\t split;\n\t var cleanGETParam = function cleanGETParam(str) {\n\t return str.split(/\\?(.*)?$/)[0];\n\t };\n\t\n\t if (typeof hash === 'undefined') {\n\t // To preserve BC\n\t hash = '#';\n\t }\n\t\n\t if (isPushStateAvailable() && !useHash) {\n\t onlyURL = cleanGETParam(url).split(hash)[0];\n\t } else {\n\t split = url.split(hash);\n\t onlyURL = split.length > 1 ? cleanGETParam(split[1]) : cleanGETParam(split[0]);\n\t }\n\t\n\t return onlyURL;\n\t}\n\t\n\tfunction manageHooks(handler, hooks, params, beforeBackup) {\n\t if (hooks && (typeof hooks === 'undefined' ? 'undefined' : _typeof(hooks)) === 'object') {\n\t if (hooks.before) {\n\t hooks.before(function () {\n\t var shouldRoute = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t\n\t if (!shouldRoute) {\n\t beforeBackup();\n\t return;\n\t }\n\t handler();\n\t hooks.after && hooks.after(params);\n\t }, params);\n\t } else if (hooks.after) {\n\t handler();\n\t hooks.after && hooks.after(params);\n\t }\n\t return;\n\t }\n\t handler();\n\t};\n\t\n\tfunction isHashedRoot(url, useHash, hash) {\n\t if (isPushStateAvailable() && !useHash) {\n\t return false;\n\t }\n\t\n\t if (!url.match(hash)) {\n\t return false;\n\t }\n\t\n\t var split = url.split(hash);\n\t\n\t if (split.length < 2 || split[1] === '') {\n\t return true;\n\t }\n\t\n\t return false;\n\t};\n\t\n\tNavigo.prototype = {\n\t helpers: {\n\t match: match,\n\t root: root,\n\t clean: clean,\n\t getOnlyURL: getOnlyURL\n\t },\n\t navigate: function navigate(path, absolute) {\n\t var shouldResolve = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\t\n\t var to;\n\t\n\t path = path || '';\n\t if (this._usePushState) {\n\t to = (!absolute ? this._getRoot() + '/' : '') + path.replace(/^\\/+/, '/');\n\t to = to.replace(/([^:])(\\/{2,})/g, '$1/');\n\t history[this._historyAPIUpdateMethod]({}, '', to);\n\t if (shouldResolve) this.resolve();\n\t } else if (typeof window !== 'undefined') {\n\t path = path.replace(new RegExp('^' + this._hash), '');\n\t window.location.href = window.location.href.replace(/#$/, '').replace(new RegExp(this._hash + '.*$'), '') + this._hash + path;\n\t }\n\t return this;\n\t },\n\t on: function on() {\n\t var _this = this;\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t if (typeof args[0] === 'function') {\n\t this._defaultHandler = { handler: args[0], hooks: args[1] };\n\t } else if (args.length >= 2) {\n\t if (args[0] === '/') {\n\t var func = args[1];\n\t\n\t if (_typeof(args[1]) === 'object') {\n\t func = args[1].uses;\n\t }\n\t\n\t this._defaultHandler = { handler: func, hooks: args[2] };\n\t } else {\n\t this._add(args[0], args[1], args[2]);\n\t }\n\t } else if (_typeof(args[0]) === 'object') {\n\t var orderedRoutes = Object.keys(args[0]).sort(compareUrlDepth);\n\t\n\t orderedRoutes.forEach(function (route) {\n\t _this.on(route, args[0][route]);\n\t });\n\t }\n\t return this;\n\t },\n\t off: function off(handler) {\n\t if (this._defaultHandler !== null && handler === this._defaultHandler.handler) {\n\t this._defaultHandler = null;\n\t } else if (this._notFoundHandler !== null && handler === this._notFoundHandler.handler) {\n\t this._notFoundHandler = null;\n\t }\n\t this._routes = this._routes.reduce(function (result, r) {\n\t if (r.handler !== handler) result.push(r);\n\t return result;\n\t }, []);\n\t return this;\n\t },\n\t notFound: function notFound(handler, hooks) {\n\t this._notFoundHandler = { handler: handler, hooks: hooks };\n\t return this;\n\t },\n\t resolve: function resolve(current) {\n\t var _this2 = this;\n\t\n\t var handler, m, beforeBackup;\n\t var url = (current || this._cLoc()).replace(this._getRoot(), '');\n\t\n\t if (this._useHash) {\n\t url = url.replace(new RegExp('^\\/' + this._hash), '/');\n\t }\n\t\n\t var GETParameters = extractGETParameters(current || this._cLoc());\n\t var onlyURL = getOnlyURL(url, this._useHash, this._hash);\n\t\n\t if (this._paused) return false;\n\t\n\t if (this._lastRouteResolved && onlyURL === this._lastRouteResolved.url && GETParameters === this._lastRouteResolved.query) {\n\t if (this._lastRouteResolved.hooks && this._lastRouteResolved.hooks.already) {\n\t this._lastRouteResolved.hooks.already(this._lastRouteResolved.params);\n\t }\n\t return false;\n\t }\n\t\n\t m = match(onlyURL, this._routes);\n\t\n\t if (m) {\n\t this._callLeave();\n\t this._lastRouteResolved = {\n\t url: onlyURL,\n\t query: GETParameters,\n\t hooks: m.route.hooks,\n\t params: m.params,\n\t name: m.route.name\n\t };\n\t this._resolvedRoutes.push({ fullUrl: url, route: _extends({}, this._lastRouteResolved) });\n\t handler = m.route.handler;\n\t beforeBackup = function beforeBackup() {\n\t var correction = this._resolvedRoutes[this._resolvedRoutes.length - 2];\n\t\n\t if (!correction) return;\n\t this._lastRouteResolved = correction.route;\n\t this._resolvedRoutes.pop();\n\t this.navigate(correction.fullUrl, null, false);\n\t }.bind(this);\n\t manageHooks(function () {\n\t manageHooks(function () {\n\t m.route.route instanceof RegExp ? handler.apply(undefined, _toConsumableArray(m.match.slice(1, m.match.length))) : handler(m.params, GETParameters);\n\t }, m.route.hooks, m.params, beforeBackup);\n\t }, this._genericHooks, m.params, beforeBackup);\n\t return m;\n\t } else if (this._defaultHandler && (onlyURL === '' || onlyURL === '/' || onlyURL === this._hash || isHashedRoot(onlyURL, this._useHash, this._hash))) {\n\t manageHooks(function () {\n\t manageHooks(function () {\n\t _this2._callLeave();\n\t _this2._lastRouteResolved = { url: onlyURL, query: GETParameters, hooks: _this2._defaultHandler.hooks };\n\t _this2._defaultHandler.handler(GETParameters);\n\t }, _this2._defaultHandler.hooks, null, beforeBackup);\n\t }, this._genericHooks, null, beforeBackup);\n\t return true;\n\t } else if (this._notFoundHandler) {\n\t manageHooks(function () {\n\t manageHooks(function () {\n\t _this2._callLeave();\n\t _this2._lastRouteResolved = { url: onlyURL, query: GETParameters, hooks: _this2._notFoundHandler.hooks };\n\t _this2._notFoundHandler.handler(GETParameters);\n\t }, _this2._notFoundHandler.hooks, null, beforeBackup);\n\t }, this._genericHooks, null, beforeBackup);\n\t }\n\t return false;\n\t },\n\t destroy: function destroy() {\n\t this._routes = [];\n\t this._destroyed = true;\n\t clearTimeout(this._listeningInterval);\n\t if (typeof window !== 'undefined') {\n\t window.removeEventListener('popstate', this._onLocationChange);\n\t window.removeEventListener('hashchange', this._onLocationChange);\n\t }\n\t },\n\t updatePageLinks: function updatePageLinks() {\n\t var self = this;\n\t\n\t if (typeof document === 'undefined') return;\n\t\n\t if (!window.hasListenerAttached) {\n\t window.addEventListener('click', function (e) {\n\t var location, target;\n\t\n\t target = self.getClickedLink(e);\n\t\n\t if (!target || !target.getAttribute('href') && !target.hasAttribute(Navigo.BACK_BUTTON_ATTR)) {\n\t return;\n\t }\n\t\n\t location = self.getLinkPath(target);\n\t\n\t if (target.hasAttribute(Navigo.BACK_BUTTON_ATTR)) {\n\t // new tab\n\t if (window.history.length === 1 || !window.history.state) {\n\t location = target.hasAttribute(Navigo.FALLBACK_HREF_ATTR) ? target.getAttribute(Navigo.FALLBACK_HREF_ATTR) : '';\n\t } else {\n\t window.history.back();\n\t return;\n\t }\n\t }\n\t\n\t location = location.replace(/\\/+$/, '').replace(/^\\/+/, '/');\n\t if (!self._destroyed) {\n\t e.preventDefault();\n\t if (e.ctrlKey || e.metaKey) {\n\t window.open(location);\n\t } else {\n\t self.navigate(location);\n\t }\n\t }\n\t });\n\t window.hasListenerAttached = true;\n\t }\n\t },\n\t\n\t getClickedLink: function getClickedLink(e) {\n\t var target = e.target;\n\t\n\t while (target && target !== window.document.documentElement) {\n\t if (target.tagName.toUpperCase() === 'A' && !target.hasAttribute(Navigo.NOT_FOLLOW_ATTR) || target.tagName.toUpperCase() === 'LINK' && !target.hasAttribute(Navigo.NOT_FOLLOW_ATTR) || target.hasAttribute(Navigo.CUSTOM_NAVIGO_ATTR) && e.target === target || target.hasAttribute(Navigo.BACK_BUTTON_ATTR)) {\n\t return target;\n\t }\n\t target = target.parentElement;\n\t }\n\t return null;\n\t },\n\t generate: function generate(name) {\n\t var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\n\t var result = this._routes.reduce(function (result, route) {\n\t var key;\n\t\n\t if (route.name === name) {\n\t result = route.route;\n\t for (key in data) {\n\t result = result.toString().replace(':' + key, data[key]);\n\t }\n\t }\n\t return result;\n\t }, '');\n\t\n\t return this._useHash ? this._hash + result : result;\n\t },\n\t link: function link(path) {\n\t return this._getRoot() + path;\n\t },\n\t pause: function pause() {\n\t var status = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t\n\t this._paused = status;\n\t if (status) {\n\t this._historyAPIUpdateMethod = 'replaceState';\n\t } else {\n\t this._historyAPIUpdateMethod = 'pushState';\n\t }\n\t },\n\t resume: function resume() {\n\t this.pause(false);\n\t },\n\t historyAPIUpdateMethod: function historyAPIUpdateMethod(value) {\n\t if (typeof value === 'undefined') return this._historyAPIUpdateMethod;\n\t this._historyAPIUpdateMethod = value;\n\t return value;\n\t },\n\t disableIfAPINotAvailable: function disableIfAPINotAvailable() {\n\t if (!isPushStateAvailable()) {\n\t this.destroy();\n\t }\n\t },\n\t lastRouteResolved: function lastRouteResolved() {\n\t return this._lastRouteResolved;\n\t },\n\t getLinkPath: function getLinkPath(link) {\n\t return link.getAttribute('href');\n\t },\n\t hooks: function hooks(_hooks) {\n\t this._genericHooks = _hooks;\n\t },\n\t\n\t _add: function _add(route) {\n\t var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t var hooks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\t\n\t if (typeof route === 'string') {\n\t route = encodeURI(route);\n\t }\n\t if ((typeof handler === 'undefined' ? 'undefined' : _typeof(handler)) === 'object') {\n\t this._routes.push({\n\t route: route,\n\t handler: handler.uses,\n\t name: handler.as,\n\t hooks: hooks || handler.hooks\n\t });\n\t } else {\n\t this._routes.push({ route: route, handler: handler, hooks: hooks });\n\t }\n\t return this._add;\n\t },\n\t _getRoot: function _getRoot() {\n\t if (this.root !== null) return this.root;\n\t this.root = root(this._cLoc().split('?')[0], this._routes);\n\t return this.root;\n\t },\n\t _listen: function _listen() {\n\t var _this3 = this;\n\t\n\t if (this._usePushState) {\n\t window.addEventListener('popstate', this._onLocationChange);\n\t } else if (isHashChangeAPIAvailable()) {\n\t window.addEventListener('hashchange', this._onLocationChange);\n\t } else {\n\t var cached = this._cLoc(),\n\t current = void 0,\n\t _check = void 0;\n\t\n\t _check = function check() {\n\t current = _this3._cLoc();\n\t if (cached !== current) {\n\t cached = current;\n\t _this3.resolve();\n\t }\n\t _this3._listeningInterval = setTimeout(_check, 200);\n\t };\n\t _check();\n\t }\n\t },\n\t _cLoc: function _cLoc() {\n\t if (typeof window !== 'undefined') {\n\t if (typeof window.__NAVIGO_WINDOW_LOCATION_MOCK__ !== 'undefined') {\n\t return window.__NAVIGO_WINDOW_LOCATION_MOCK__;\n\t }\n\t return clean(window.location.href);\n\t }\n\t return '';\n\t },\n\t _onLocationChange: function _onLocationChange() {\n\t this.resolve();\n\t },\n\t _callLeave: function _callLeave() {\n\t if (this._lastRouteResolved && this._lastRouteResolved.hooks && this._lastRouteResolved.hooks.leave) {\n\t this._lastRouteResolved.hooks.leave();\n\t }\n\t }\n\t};\n\t\n\tNavigo.PARAMETER_REGEXP = /([:*])(\\w+)/g;\n\tNavigo.WILDCARD_REGEXP = /\\*/g;\n\tNavigo.REPLACE_VARIABLE_REGEXP = '([^\\/]+)';\n\tNavigo.REPLACE_WILDCARD = '(?:.*)';\n\tNavigo.FOLLOWED_BY_SLASH_REGEXP = '(?:\\/$|$)';\n\tNavigo.MATCH_REGEXP_FLAGS = '';\n\tNavigo.NOT_FOLLOW_ATTR = 'data-no-navigo';\n\tNavigo.BACK_BUTTON_ATTR = 'data-navigo-back';\n\tNavigo.FALLBACK_HREF_ATTR = 'data-navigo-fallback';\n\tNavigo.CUSTOM_NAVIGO_ATTR = 'data-navigo';\n\t\n\texports.default = Navigo;\n\tmodule.exports = exports['default'];\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** navigo.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 8b1001eea666c146fec8\n **/","function isPushStateAvailable() {\n return !!(\n typeof window !== 'undefined' &&\n window.history &&\n window.history.pushState\n );\n}\n\nfunction Navigo(r, useHash, hash) {\n this.root = null;\n this._routes = [];\n this._useHash = useHash;\n this._hash = typeof hash === 'undefined' ? '#' : hash;\n this._paused = false;\n this._destroyed = false;\n this._lastRouteResolved = null;\n this._resolvedRoutes = [];\n this._notFoundHandler = null;\n this._defaultHandler = null;\n this._usePushState = !useHash && isPushStateAvailable();\n this._onLocationChange = this._onLocationChange.bind(this);\n this._genericHooks = null;\n this._historyAPIUpdateMethod = 'pushState';\n\n if (r) {\n this.root = useHash ? r.replace(/\\/$/, '/' + this._hash) : r.replace(/\\/$/, '');\n } else if (useHash) {\n this.root = this._cLoc().split(this._hash)[0].replace(/\\/$/, '/' + this._hash);\n }\n\n this._listen();\n this.updatePageLinks();\n}\n\nfunction clean(s) {\n if (s instanceof RegExp) return s;\n return s.replace(/\\/+$/, '').replace(/^\\/+/, '^/');\n}\n\nfunction regExpResultToParams(match, names) {\n if (names.length === 0) return null;\n if (!match) return null;\n return match\n .slice(1, match.length)\n .reduce((params, value, index) => {\n if (params === null) params = {};\n params[names[index]] = decodeURIComponent(value);\n return params;\n }, null);\n}\n\nfunction replaceDynamicURLParts(route) {\n var paramNames = [], regexp;\n\n if (route instanceof RegExp) {\n regexp = route;\n } else {\n regexp = new RegExp(\n route.replace(Navigo.PARAMETER_REGEXP, function (full, dots, name) {\n paramNames.push(name);\n return Navigo.REPLACE_VARIABLE_REGEXP;\n })\n .replace(Navigo.WILDCARD_REGEXP, Navigo.REPLACE_WILDCARD) + Navigo.FOLLOWED_BY_SLASH_REGEXP\n , Navigo.MATCH_REGEXP_FLAGS);\n }\n return { regexp, paramNames };\n}\n\nfunction getUrlDepth(url) {\n return url.replace(/\\/$/, '').split('/').length;\n}\n\nfunction compareUrlDepth(urlA, urlB) {\n return getUrlDepth(urlB) - getUrlDepth(urlA);\n}\n\nfunction findMatchedRoutes(url, routes = []) {\n return routes\n .map(route => {\n var { regexp, paramNames } = replaceDynamicURLParts(clean(route.route));\n var match = url.replace(/^\\/+/, '/').match(regexp);\n var params = regExpResultToParams(match, paramNames);\n\n return match ? { match, route, params } : false;\n })\n .filter(m => m);\n}\n\nfunction match(url, routes) {\n return findMatchedRoutes(url, routes)[0] || false;\n}\n\nfunction root(url, routes) {\n var matched = routes.map(\n route => route.route === '' || route.route === '*' ? url : url.split(new RegExp(route.route + '($|\\/)'))[0]\n );\n var fallbackURL = clean(url);\n\n if (matched.length > 1) {\n return matched.reduce((result, url) => {\n if (result.length > url.length) result = url;\n return result;\n }, matched[0]);\n } else if (matched.length === 1) {\n return matched[0];\n }\n return fallbackURL;\n}\n\nfunction isHashChangeAPIAvailable() {\n return !!(\n typeof window !== 'undefined' &&\n 'onhashchange' in window\n );\n}\n\nfunction extractGETParameters(url) {\n return url.split(/\\?(.*)?$/).slice(1).join('');\n}\n\nfunction getOnlyURL(url, useHash, hash) {\n var onlyURL = url, split;\n var cleanGETParam = str => str.split(/\\?(.*)?$/)[0];\n\n if (typeof hash === 'undefined') {\n // To preserve BC\n hash = '#';\n }\n\n if (isPushStateAvailable() && !useHash) {\n onlyURL = cleanGETParam(url).split(hash)[0];\n } else {\n split = url.split(hash);\n onlyURL = split.length > 1 ? cleanGETParam(split[1]) : cleanGETParam(split[0]);\n }\n\n return onlyURL;\n}\n\nfunction manageHooks(handler, hooks, params, beforeBackup) {\n if (hooks && typeof hooks === 'object') {\n if (hooks.before) {\n hooks.before((shouldRoute = true) => {\n if (!shouldRoute) {\n beforeBackup();\n return;\n }\n handler();\n hooks.after && hooks.after(params);\n }, params);\n } else if (hooks.after) {\n handler();\n hooks.after && hooks.after(params);\n }\n return;\n }\n handler();\n};\n\nfunction isHashedRoot(url, useHash, hash) {\n if (isPushStateAvailable() && !useHash) {\n return false;\n }\n\n if (!url.match(hash)) {\n return false;\n }\n\n let split = url.split(hash);\n\n if (split.length < 2 || split[1] === '') {\n return true;\n }\n\n return false;\n};\n\nNavigo.prototype = {\n helpers: {\n match,\n root,\n clean,\n getOnlyURL\n },\n navigate: function (path, absolute, shouldResolve = true) {\n var to;\n\n path = path || '';\n if (this._usePushState) {\n to = (!absolute ? this._getRoot() + '/' : '') + path.replace(/^\\/+/, '/');\n to = to.replace(/([^:])(\\/{2,})/g, '$1/');\n history[this._historyAPIUpdateMethod]({}, '', to);\n if (shouldResolve) this.resolve();\n } else if (typeof window !== 'undefined') {\n path = path.replace(new RegExp('^' + this._hash), '');\n window.location.href =\n window.location.href\n .replace(/#$/, '')\n .replace(new RegExp(this._hash + '.*$'), '') + this._hash + path;\n }\n return this;\n },\n on: function (...args) {\n if (typeof args[0] === 'function') {\n this._defaultHandler = { handler: args[0], hooks: args[1] };\n } else if (args.length >= 2) {\n if (args[0] === '/') {\n let func = args[1];\n\n if (typeof args[1] === 'object') {\n func = args[1].uses;\n }\n\n this._defaultHandler = { handler: func, hooks: args[2] };\n } else {\n this._add(args[0], args[1], args[2]);\n }\n } else if (typeof args[0] === 'object') {\n let orderedRoutes = Object.keys(args[0]).sort(compareUrlDepth);\n\n orderedRoutes.forEach(route => {\n this.on(route, args[0][route]);\n });\n }\n return this;\n },\n off: function (handler) {\n if (this._defaultHandler !== null && handler === this._defaultHandler.handler) {\n this._defaultHandler = null;\n } else if (this._notFoundHandler !== null && handler === this._notFoundHandler.handler) {\n this._notFoundHandler = null;\n }\n this._routes = this._routes.reduce((result, r) => {\n if (r.handler !== handler) result.push(r);\n return result;\n }, []);\n return this;\n },\n notFound: function (handler, hooks) {\n this._notFoundHandler = { handler, hooks: hooks };\n return this;\n },\n resolve: function (current) {\n var handler, m, beforeBackup;\n var url = (current || this._cLoc()).replace(this._getRoot(), '');\n\n if (this._useHash) {\n url = url.replace(new RegExp('^\\/' + this._hash), '/');\n }\n\n let GETParameters = extractGETParameters(current || this._cLoc());\n let onlyURL = getOnlyURL(url, this._useHash, this._hash);\n\n if (this._paused) return false;\n\n if (\n this._lastRouteResolved &&\n onlyURL === this._lastRouteResolved.url &&\n GETParameters === this._lastRouteResolved.query\n ) {\n if (this._lastRouteResolved.hooks && this._lastRouteResolved.hooks.already) {\n this._lastRouteResolved.hooks.already(this._lastRouteResolved.params);\n }\n return false;\n }\n\n m = match(onlyURL, this._routes);\n\n if (m) {\n this._callLeave();\n this._lastRouteResolved = {\n url: onlyURL,\n query: GETParameters,\n hooks: m.route.hooks,\n params: m.params,\n name: m.route.name\n };\n this._resolvedRoutes.push({ fullUrl: url, route: {...this._lastRouteResolved} });\n handler = m.route.handler;\n beforeBackup = function beforeBackup() {\n var correction = this._resolvedRoutes[this._resolvedRoutes.length - 2];\n\n if (!correction) return;\n this._lastRouteResolved = correction.route;\n this._resolvedRoutes.pop();\n this.navigate(correction.fullUrl, null, false);\n }.bind(this);\n manageHooks(() => {\n manageHooks(() => {\n m.route.route instanceof RegExp ?\n handler(...(m.match.slice(1, m.match.length))) :\n handler(m.params, GETParameters);\n }, m.route.hooks, m.params, beforeBackup);\n }, this._genericHooks, m.params, beforeBackup);\n return m;\n } else if (this._defaultHandler && (\n onlyURL === '' ||\n onlyURL === '/' ||\n onlyURL === this._hash ||\n isHashedRoot(onlyURL, this._useHash, this._hash)\n )) {\n manageHooks(() => {\n manageHooks(() => {\n this._callLeave();\n this._lastRouteResolved = { url: onlyURL, query: GETParameters, hooks: this._defaultHandler.hooks };\n this._defaultHandler.handler(GETParameters);\n }, this._defaultHandler.hooks, null, beforeBackup);\n }, this._genericHooks, null, beforeBackup);\n return true;\n } else if (this._notFoundHandler) {\n manageHooks(() => {\n manageHooks(() => {\n this._callLeave();\n this._lastRouteResolved = { url: onlyURL, query: GETParameters, hooks: this._notFoundHandler.hooks };\n this._notFoundHandler.handler(GETParameters);\n }, this._notFoundHandler.hooks, null, beforeBackup);\n }, this._genericHooks, null, beforeBackup);\n }\n return false;\n },\n destroy: function () {\n this._routes = [];\n this._destroyed = true;\n clearTimeout(this._listeningInterval);\n if (typeof window !== 'undefined') {\n window.removeEventListener('popstate', this._onLocationChange);\n window.removeEventListener('hashchange', this._onLocationChange);\n }\n },\n updatePageLinks: function () {\n var self = this;\n\n if (typeof document === 'undefined') return;\n\n if (!window.hasListenerAttached) {\n window.addEventListener('click', function (e) {\n var location, target;\n\n target = self.getClickedLink(e);\n\n if (!target || (!target.getAttribute('href') && !target.hasAttribute(Navigo.BACK_BUTTON_ATTR))) {\n return;\n }\n\n location = self.getLinkPath(target);\n\n if (target.hasAttribute(Navigo.BACK_BUTTON_ATTR)) {\n // new tab\n if (window.history.length === 1 || !window.history.state) {\n location =\n target.hasAttribute(Navigo.FALLBACK_HREF_ATTR) ?\n target.getAttribute(Navigo.FALLBACK_HREF_ATTR) :\n '';\n } else {\n window.history.back();\n return;\n }\n }\n\n location = location.replace(/\\/+$/, '').replace(/^\\/+/, '/');\n if (!self._destroyed) {\n e.preventDefault();\n if (e.ctrlKey || e.metaKey) {\n window.open(location);\n } else {\n self.navigate(location);\n }\n }\n });\n window.hasListenerAttached = true;\n }\n },\n\n getClickedLink: function (e) {\n var target = e.target;\n\n while (target && target !== window.document.documentElement) {\n if (\n (target.tagName.toUpperCase() === 'A' && !target.hasAttribute(Navigo.NOT_FOLLOW_ATTR)) ||\n (target.tagName.toUpperCase() === 'LINK' && !target.hasAttribute(Navigo.NOT_FOLLOW_ATTR)) ||\n (target.hasAttribute(Navigo.CUSTOM_NAVIGO_ATTR) && e.target === target) ||\n (target.hasAttribute(Navigo.BACK_BUTTON_ATTR))\n ) {\n return target;\n }\n target = target.parentElement;\n }\n return null;\n },\n generate: function (name, data = {}) {\n var result = this._routes.reduce((result, route) => {\n var key;\n\n if (route.name === name) {\n result = route.route;\n for (key in data) {\n result = result.toString().replace(':' + key, data[key]);\n }\n }\n return result;\n }, '');\n\n return this._useHash ? this._hash + result : result;\n },\n link: function (path) {\n return this._getRoot() + path;\n },\n pause: function (status = true) {\n this._paused = status;\n if (status) {\n this._historyAPIUpdateMethod = 'replaceState';\n } else {\n this._historyAPIUpdateMethod = 'pushState';\n }\n },\n resume: function () {\n this.pause(false);\n },\n historyAPIUpdateMethod: function (value) {\n if (typeof value === 'undefined') return this._historyAPIUpdateMethod;\n this._historyAPIUpdateMethod = value;\n return value;\n },\n disableIfAPINotAvailable: function () {\n if (!isPushStateAvailable()) {\n this.destroy();\n }\n },\n lastRouteResolved() {\n return this._lastRouteResolved;\n },\n getLinkPath(link) {\n return link.getAttribute('href');\n },\n hooks(hooks) {\n this._genericHooks = hooks;\n },\n _add: function (route, handler = null, hooks = null) {\n if (typeof route === 'string') {\n route = encodeURI(route);\n }\n if (typeof handler === 'object') {\n this._routes.push({\n route,\n handler: handler.uses,\n name: handler.as,\n hooks: hooks || handler.hooks\n });\n } else {\n this._routes.push({ route, handler, hooks: hooks });\n }\n return this._add;\n },\n _getRoot: function () {\n if (this.root !== null) return this.root;\n this.root = root(this._cLoc().split('?')[0], this._routes);\n return this.root;\n },\n _listen: function () {\n if (this._usePushState) {\n window.addEventListener('popstate', this._onLocationChange);\n } else if (isHashChangeAPIAvailable()) {\n window.addEventListener('hashchange', this._onLocationChange);\n } else {\n let cached = this._cLoc(), current, check;\n\n check = () => {\n current = this._cLoc();\n if (cached !== current) {\n cached = current;\n this.resolve();\n }\n this._listeningInterval = setTimeout(check, 200);\n };\n check();\n }\n },\n _cLoc: function () {\n if (typeof window !== 'undefined') {\n if (typeof window.__NAVIGO_WINDOW_LOCATION_MOCK__ !== 'undefined') {\n return window.__NAVIGO_WINDOW_LOCATION_MOCK__;\n }\n return clean(window.location.href);\n }\n return '';\n },\n _onLocationChange: function () {\n this.resolve();\n },\n _callLeave() {\n if (this._lastRouteResolved && this._lastRouteResolved.hooks && this._lastRouteResolved.hooks.leave) {\n this._lastRouteResolved.hooks.leave();\n }\n }\n};\n\nNavigo.PARAMETER_REGEXP = /([:*])(\\w+)/g;\nNavigo.WILDCARD_REGEXP = /\\*/g;\nNavigo.REPLACE_VARIABLE_REGEXP = '([^\\/]+)';\nNavigo.REPLACE_WILDCARD = '(?:.*)';\nNavigo.FOLLOWED_BY_SLASH_REGEXP = '(?:\\/$|$)';\nNavigo.MATCH_REGEXP_FLAGS = '';\nNavigo.NOT_FOLLOW_ATTR = 'data-no-navigo';\nNavigo.BACK_BUTTON_ATTR = 'data-navigo-back';\nNavigo.FALLBACK_HREF_ATTR = 'data-navigo-fallback';\nNavigo.CUSTOM_NAVIGO_ATTR = 'data-navigo';\n\nexport default Navigo;\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/index.js\n **/"],"sourceRoot":""}