This repository was archived by the owner on Sep 4, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrouter.mjs.map
1 lines (1 loc) · 10.1 KB
/
router.mjs.map
1
{"version":3,"file":"router.mjs.map","sources":["../src/index.js"],"sourcesContent":["/**\n * Creates a Router object.\n */\nexport function Router() {\n let routes = []\n let map = {}\n let oldUrl\n\n class Route {\n /**\n * @param {string} path\n * @param {string} name\n */\n constructor(path, name) {\n this.name = name\n this.path = path\n this.keys = []\n this.fns = []\n this.params = {}\n this.pathToRegexp = (path, keys, sensitive, strict) => {\n if (path instanceof RegExp) return path\n if (path instanceof Array) path = '(' + path.join('|') + ')'\n path = path\n .concat(strict ? '' : '/?')\n .replace(/\\/\\(/g, '(?:/')\n .replace(/\\+/g, '__plus__')\n .replace(/(\\/)?(\\.)?:(\\w+)(?:(\\(.*?\\)))?(\\?)?/g, function(\n _,\n slash,\n format,\n key,\n capture,\n optional\n ) {\n keys.push({ name: key, optional: !!optional })\n slash = slash || ''\n return (\n '' +\n (optional ? '' : slash) +\n '(?:' +\n (optional ? slash : '') +\n (format || '') +\n (capture || (format && '([^/.]+?)') || '([^/]+?)') +\n ')' +\n (optional || '')\n )\n })\n .replace(/([/.])/g, '\\\\$1')\n .replace(/__plus__/g, '(.+)')\n .replace(/\\*/g, '(.*)')\n return new RegExp('^' + path + '$', sensitive ? '' : 'i')\n }\n this.regex = this.pathToRegexp(this.path, this.keys, false, false)\n }\n\n /**\n * Adds a handler for \"this\" route.\n * @param {function} fn\n * @returns {void} undefined\n */\n addHandler(fn) {\n this.fns.push(fn)\n }\n\n /**\n * Removes specific handler for this route.\n * @param {function} fn\n * @returns {void} undefined\n */\n removeHandler(fn) {\n for (let i = 0, c = this.fns.length; i < c; i++) {\n let f = this.fns[i]\n if (fn == f) {\n this.fns.splice(i, 1)\n return\n }\n }\n }\n\n /**\n * Executes this route with specified params.\n *\n * @param {Object<string, any>} params\n * @returns {boolean} boolean\n */\n run(params) {\n for (let i = 0, c = this.fns.length; i < c; i++) {\n if (this.fns[i].apply(this, params) === false) return false\n }\n return true\n }\n\n /**\n * Tests a path of this route and runs if it's was successful.\n * @param {string} path\n * @param {Object<string, any>} params\n * @returns {boolean} boolean\n */\n match(path, params) {\n let m = this.regex.exec(path)\n if (!m) return false\n for (let i = 1, len = m.length; i < len; ++i) {\n let key = this.keys[i - 1]\n let val = typeof m[i] == 'string' ? decodeURIComponent(m[i]) : m[i]\n if (key) {\n this.params[key.name] = val\n }\n params.push(val)\n }\n return true\n }\n }\n /**\n * @typedef {Object} PathObject\n * @prop {string} path\n * @prop {(param?: any) => void} action\n */\n\n /**\n * This is the main constructor for router object.\n * Creates a route or navigates it if second parameter is empty.\n *\n * @param {PathObject[]} path The path to register or to navigate.\n * @returns {void} undefined\n */\n const router = (...path) => {\n let addHandler = (path, fn) => {\n if (!map[path]) {\n map[path] = new Route(path, name)\n routes.push(map[path])\n }\n map[path].addHandler(fn)\n }\n path.map(route => {\n addHandler(route.path, route.action)\n })\n router.reload()\n }\n\n /**\n * Removes specified handler for specified path.\n * Remeber that: one path can have multiple handlers/callbacks functions.\n * You should specify the exact object that refers to the handler.\n *\n * @param {string} path target path to remove.\n * @param {Function} fn handler function.\n * @returns {void} undefined\n */\n router.remove = (path, fn) => {\n let route = map[path]\n if (!route) return\n if (!fn) {\n delete map[path]\n } else {\n route.removeHandler(fn)\n }\n }\n\n /**\n * Removes all handlers and routes.\n *\n * @returns {void} undefined\n */\n router.removeAll = () => {\n map = {}\n routes = []\n oldUrl = ''\n }\n\n /**\n * Navigates current route to desired one\n *\n * @param {string} path target path to navigate\n * @returns {void} undefined\n */\n router.navigate = path => {\n window.location.hash = path\n }\n\n /**\n * Get the location hash.\n * @returns {string} string\n */\n const getHash = () => window.location.hash.substring(1)\n\n /**\n * Checks to see if a hash matches a route.\n * @param {string} hash\n * @param {Object<string, any>} route\n */\n const checkRoute = (hash, route) => {\n let params = []\n if (route.match(hash, params)) {\n return route.run(params) !== false ? 1 : 0\n }\n return -1\n }\n\n /**\n * Check whether location hash has changes\n */\n const hashChanged = (router.reload = () => {\n let hash = getHash()\n for (let i = 0, c = routes.length; i < c; i++) {\n let route = routes[i]\n let state = checkRoute(hash, route)\n if (state === 1) {\n // route processed:\n oldUrl = hash\n break\n } else if (state === 0) {\n // route rejected:\n router.navigate(oldUrl)\n break\n }\n }\n })\n\n window.addEventListener('hashchange', hashChanged, false)\n oldUrl = getHash()\n\n window['router'] = router\n\n return router\n}\n"],"names":["Router","oldUrl","routes","map","Route","path","name","keys","fns","params","pathToRegexp","sensitive","strict","RegExp","Array","join","concat","replace","_","slash","format","key","capture","optional","push","regex","fn","f","i","c","length","splice","apply","m","exec","len","val","decodeURIComponent","router","addHandler","route","action","reload","remove","removeHandler","removeAll","navigate","window","location","hash","getHash","substring","checkRoute","match","run","hashChanged","state","addEventListener"],"mappings":"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"}