Open in github.dev
Open in a new github.dev tab
Open in codespace
/
router.min.js.map
/
router.min.js.map
7 lines (7 loc) · 33.9 KB
/
router.min.js.map
1
2
3
4
5
6
7
{
"version": 3,
"sources": ["../src/route.ts", "../src/utils.ts", "../src/index.ts", "../builds/cdn.js"],
"sourcesContent": ["import type { Handler } from './types'\r\n\r\nclass Route {\r\n\tparams: { [key: string]: any } = {}\r\n\tpath: string\r\n\thandlers: Handler[] = []\r\n\tconstructor(path: string, options: { [key: string]: any } = {}) {\r\n\t\tthis.path = path\r\n\t\tObject.keys(options).forEach((opt) => {\r\n\t\t\tthis[opt] = options[opt]\r\n\t\t})\r\n\t\tif (options.template) {\r\n\t\t\tthis.programmaticTemplate = true\r\n\t\t}\r\n\t}\r\n\ttemplate: string = ''\r\n\tprogrammaticTemplate: boolean = false\r\n\thandlersDone: boolean = false\r\n\tcancelHandlers: boolean\r\n}\r\n\r\nexport default Route\r\n", "/**\r\n * taken from preact-router\r\n * https://github.com/preactjs/preact-router\r\n * @param url url to segmentize\r\n * @returns\r\n */\r\nfunction segmentize(url: string): string[] {\r\n\treturn url.replace(/(^\\/+|\\/+$)/g, '').split('/')\r\n}\r\n\r\n/**\r\n * check if a path match with this route\r\n * taken from preact-router\r\n * https://github.com/preactjs/preact-router\r\n * @param path {string}\r\n * @param routePath {string}\r\n * @returns {false|object}\r\n */\r\nexport function match(url: string, routePath: string): false | object {\r\n\tlet reg = /(?:\\?([^#]*))?(#.*)?$/,\r\n\t\tc = url.match(reg),\r\n\t\tmatches: any = {},\r\n\t\tret\r\n\tif (c && c[1]) {\r\n\t\tlet p = c[1].split('&')\r\n\t\tfor (let i = 0; i < p.length; i++) {\r\n\t\t\tlet r = p[i].split('=')\r\n\t\t\tmatches[decodeURIComponent(r[0])] = decodeURIComponent(\r\n\t\t\t\tr.slice(1).join('=')\r\n\t\t\t)\r\n\t\t}\r\n\t}\r\n\tlet urlSeg = segmentize(url.replace(reg, '')),\r\n\t\troute: string[] = segmentize(routePath || ''),\r\n\t\tmax = Math.max(urlSeg.length, route.length)\r\n\tfor (let i = 0; i < max; i++) {\r\n\t\tif (route[i] && route[i].charAt(0) === ':') {\r\n\t\t\tlet param: string = route[i].replace(/(^:|[+*?]+$)/g, ''),\r\n\t\t\t\tflags: string = (route[i].match(/[+*?]+$/) || {}).toString()[0],\r\n\t\t\t\tplus = ~flags.indexOf('+'),\r\n\t\t\t\tstar = ~flags.indexOf('*'),\r\n\t\t\t\tval = urlSeg[i] || ''\r\n\t\t\tif (!val && !star && (flags.indexOf('?') < 0 || plus)) {\r\n\t\t\t\tret = false\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tmatches[param] = decodeURIComponent(val)\r\n\t\t\tif (plus || star) {\r\n\t\t\t\tmatches[param] = urlSeg\r\n\t\t\t\t\t.slice(i)\r\n\t\t\t\t\t.map(decodeURIComponent)\r\n\t\t\t\t\t.join('/')\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t} else if (route[i] !== urlSeg[i]) {\r\n\t\t\tret = false\r\n\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\tif (ret === false) return false\r\n\treturn matches\r\n}\r\n\r\n/**\r\n * Call a function on all middlewares loaded, if any.\r\n * @param {string} func middleware function to call.\r\n * @param {any} args arguments to pass to the function.\r\n * @returns {boolean} false if the middleware function return false, i.e. it want to stop execution of the function and return.\r\n */\r\nexport function middleware(func: string, ...args: any): string | undefined {\r\n\tif (!window.PineconeRouterMiddlewares) return\r\n\tfor (const i in window.PineconeRouterMiddlewares) {\r\n\t\tlet plugin: any = window.PineconeRouterMiddlewares[i]\r\n\t\tif (plugin[func] == null) return\r\n\t\tlet ret = plugin[func](...args)\r\n\t\t// the return of the function will only be 'stop'\r\n\t\t// if the middleware request stopping the navigate function.\r\n\t\tif (ret == 'stop') return 'stop'\r\n\t}\r\n}\r\n\r\nexport function fetchError(error: string) {\r\n\tdocument.dispatchEvent(\r\n\t\tnew CustomEvent('fetch-error', { detail: error })\r\n\t)\r\n}", "import Route from './route'\r\nimport type { Settings, Context, Middleware, Handler } from './types'\r\nimport { fetchError, match, middleware } from './utils'\r\n\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tPineconeRouter: {\r\n\t\t\tversion: string\r\n\t\t\tname: string\r\n\t\t\tsettings: Settings\r\n\t\t\tnotfound: Route\r\n\t\t\troutes: Route[]\r\n\t\t\tcontext: Context\r\n\t\t\tloadStart: Event\r\n\t\t\tloadEnd: Event\r\n\t\t\tadd: (path: string, options?: {}) => number\r\n\t\t\tremove: (path: string) => void\r\n\t\t}\r\n\t\tPineconeRouterMiddlewares: Array<Middleware>\r\n\t}\r\n\tinterface HTMLTemplateElement {\r\n\t\t_x_PineconeRouter_undoTemplate: Function\r\n\t\t_x_PineconeRouter_CurrentTemplate: Element\r\n\t\t_x_PineconeRouter_route: string\r\n\t}\r\n}\r\n\r\nexport default function (Alpine) {\r\n\r\n\tconst PineconeRouter = Alpine.reactive(<Window[\"PineconeRouter\"]>{\r\n\t\tversion: '4.3.0',\r\n\t\tname: 'pinecone-router',\r\n\r\n\t\tsettings: <Settings>{\r\n\t\t\thash: false,\r\n\t\t\tbasePath: '/',\r\n\t\t\ttemplateTargetId: null\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @description The handler for 404 pages, can be overwritten by a notfound route\r\n\t\t */\r\n\t\tnotfound: new Route('notfound'),\r\n\r\n\t\t/**\r\n\t\t * @type Route[]\r\n\t\t * @summary array of routes instantiated from the Route class.\r\n\t\t */\r\n\t\troutes: <Route[]>[],\r\n\r\n\t\t/**\r\n\t\t * @type {Context}\r\n\t\t * @summary The context object for current path.\r\n\t\t */\r\n\t\tcontext: <Context>{\r\n\t\t\troute: '',\r\n\t\t\tpath: '',\r\n\t\t\tparams: {},\r\n\t\t\tquery: window.location.search.substring(1),\r\n\t\t\thash: window.location.hash.substring(1),\r\n\t\t\tredirect(path) {\r\n\t\t\t\tnavigate(path)\r\n\t\t\t\treturn 'stop'\r\n\t\t\t},\r\n\t\t\tnavigate(path) {\r\n\t\t\t\tnavigate(path)\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Add a new route\r\n\t\t */\r\n\t\tadd(path: string, options?: {}) {\r\n\t\t\t// check if the route was registered on the same router.\r\n\t\t\tif (this.routes.find((r: Route) => r.path == path) != null) {\r\n\t\t\t\tthrow new Error('Pinecone Router: route already exist')\r\n\t\t\t}\r\n\r\n\t\t\treturn this.routes.push(new Route(path, options)) - 1\r\n\t\t},\r\n\t\t/**\r\n\t\t * Remove a route\r\n\t\t */\r\n\t\tremove(path: string) {\r\n\t\t\tthis.routes = this.routes.filter((r: Route) => r.path != path)\r\n\t\t},\r\n\t\t/**\r\n\t\t * @event pinecone-start\r\n\t\t * @summary be dispatched to the window after before page start loading.\r\n\t\t */\r\n\t\tloadStart: new Event('pinecone-start'),\r\n\r\n\t\t/**\r\n\t\t * @event pinecone-end\r\n\t\t * @summary will be dispatched to the window after the views are fetched\r\n\t\t */\r\n\t\tloadEnd: new Event('pinecone-end'),\r\n\t})\r\n\r\n\twindow.PineconeRouter = PineconeRouter\r\n\r\n\tvar loadingTemplates: { [key: string]: Promise<string> } = {}\r\n\tvar cachedTemplates: { [key: string]: string } = {}\r\n\tconst inMakeProgress = new Set()\r\n\tvar preloadingTemplates: { [key: string]: Promise<string> } = {}\r\n\r\n\tconst load = (el: HTMLTemplateElement | HTMLElement, url: string, programmaticRoute: boolean = false) => {\r\n\t\tif (loadingTemplates[url] && !programmaticRoute) {\r\n\t\t\tloadingTemplates[url].then(html => el.innerHTML = html)\r\n\t\t} else {\r\n\t\t\tloadingTemplates[url] = fetch(url).then(r => {\r\n\t\t\t\tif (!r.ok) {\r\n\t\t\t\t\tfetchError(r.statusText);\r\n\t\t\t\t\treturn null\r\n\t\t\t\t}\r\n\t\t\t\treturn r.text()\r\n\t\t\t}).then(html => {\r\n\t\t\t\tif (html == null) {\r\n\t\t\t\t\tcachedTemplates[url] = null;\r\n\t\t\t\t\tloadingTemplates[url] = null\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t\tcachedTemplates[url] = html\r\n\t\t\t\tel.innerHTML = html\r\n\t\t\t\treturn html\r\n\t\t\t})\r\n\t\t}\r\n\t\treturn loadingTemplates[url]\r\n\t}\r\n\r\n\tconst make = (el: HTMLTemplateElement, expression: string, targetEl?: HTMLElement) => {\r\n\t\tif (inMakeProgress.has(expression)) return\r\n\t\tinMakeProgress.add(expression)\r\n\r\n\t\tconst clone = (el.content.cloneNode(true) as HTMLElement).firstElementChild\r\n\r\n\t\tif (!clone) return\r\n\r\n\t\tAlpine.addScopeToNode(clone, {}, el)\r\n\r\n\t\tAlpine.mutateDom(() => {\r\n\t\t\tif (targetEl != null) {\r\n\t\t\t\ttargetEl.appendChild(clone)\r\n\t\t\t} else\r\n\t\t\t\tel.after(clone)\r\n\t\t\tAlpine.initTree(clone)\r\n\t\t})\r\n\r\n\t\tel._x_PineconeRouter_CurrentTemplate = clone\r\n\r\n\t\tel._x_PineconeRouter_undoTemplate = () => {\r\n\t\t\tclone.remove()\r\n\r\n\t\t\tdelete el._x_PineconeRouter_CurrentTemplate\r\n\t\t}\r\n\r\n\t\tAlpine.nextTick(() => inMakeProgress.delete(expression))\r\n\t}\r\n\r\n\tfunction hide(el: HTMLTemplateElement) {\r\n\t\tif (el._x_PineconeRouter_undoTemplate) {\r\n\t\t\tel._x_PineconeRouter_undoTemplate()\r\n\t\t\tdelete el._x_PineconeRouter_undoTemplate\r\n\t\t}\r\n\t}\r\n\r\n\tfunction show(el: HTMLTemplateElement, expression: string, url?: string, targetEl?: HTMLElement) {\r\n\t\tif (el._x_PineconeRouter_CurrentTemplate) return el._x_PineconeRouter_CurrentTemplate\r\n\t\tif (el.content.firstElementChild) {\r\n\t\t\tmake(el, expression, targetEl)\r\n\t\t\tendLoading()\r\n\t\t} else if (url) {\r\n\t\t\t// Since during loading, the content is automatically put inside the template\r\n\t\t\t// This first case will only happen if the content of the template was cleared somehow\r\n\t\t\t// Likely manually\r\n\t\t\tif (cachedTemplates[url]) {\r\n\r\n\t\t\t\tel.innerHTML = cachedTemplates[url]\r\n\t\t\t\tmake(el, expression, targetEl)\r\n\t\t\t\tendLoading()\r\n\t\t\t} else {\r\n\t\t\t\t// This second case is that it didn't finish loading\r\n\t\t\t\tif (preloadingTemplates[url]) {\r\n\t\t\t\t\tpreloadingTemplates[url].then(() => make(el, expression, targetEl))\r\n\t\t\t\t} else {\r\n\t\t\t\t\tload(el, url).then(() => make(el, expression, targetEl)).finally(() => endLoading())\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst startLoading = () => {\r\n\t\tdocument.dispatchEvent(PineconeRouter.loadStart)\r\n\t}\r\n\r\n\tconst endLoading = () => {\r\n\t\tdocument.dispatchEvent(PineconeRouter.loadEnd)\r\n\t}\r\n\r\n\tconst addBasePath = (path) => {\r\n\t\tif (!PineconeRouter.settings.hash && PineconeRouter.settings.basePath != '/') {\r\n\t\t\treturn PineconeRouter.settings.basePath + path\r\n\t\t} return path\r\n\t}\r\n\r\n\tconst findRouteIndex = (path) => {\r\n\t\treturn PineconeRouter.routes.findIndex(\r\n\t\t\t(r) => r.path == path\r\n\t\t)\r\n\t}\r\n\r\n\tAlpine.directive(\r\n\t\t'route',\r\n\t\t(el: HTMLTemplateElement, { expression, modifiers }, { effect, cleanup }) => {\r\n\t\t\tlet path = expression\r\n\r\n\t\t\tmiddleware('onBeforeRouteProcessed', el, path)\r\n\r\n\t\t\tif (path.indexOf('#') > -1) {\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`Pinecone Router: A route's path may not have a hash character.`\r\n\t\t\t\t)\r\n\t\t\t}\r\n\r\n\t\t\tlet target = modifierValue(modifiers, 'target', null) ?? window.PineconeRouter.settings.templateTargetId\r\n\t\t\tlet targetEl = document.getElementById(target)\r\n\t\t\tif (target && !targetEl)\r\n\t\t\t\tthrow new Error(\"Pinecone Router: Can't find an element with the suplied target ID: \" + target + \"\")\r\n\r\n\t\t\tlet routeIndex = null\r\n\r\n\t\t\tif (path != 'notfound') {\r\n\t\t\t\t// if specified add the basePath\r\n\t\t\t\tpath = addBasePath(path)\r\n\t\t\t\t// register the new route if possible\r\n\t\t\t\trouteIndex = PineconeRouter.add(path)\r\n\t\t\t}\r\n\r\n\t\t\tlet route = PineconeRouter.routes[routeIndex] ?? PineconeRouter.notfound\r\n\r\n\t\t\t// set the path in the element so it is used by other directives\r\n\t\t\tel._x_PineconeRouter_route = path\r\n\r\n\t\t\tif (el.content.firstElementChild != null) {\r\n\t\t\t\tAlpine.nextTick(() => {\r\n\t\t\t\t\teffect(() => {\r\n\t\t\t\t\t\tlet found = route.handlersDone && PineconeRouter.context.route == path\r\n\t\t\t\t\t\tfound ? show(el, expression, null, targetEl) : hide(el)\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\tcleanup(() => {\r\n\t\t\t\tel._x_PineconeRouter_undoTemplate && el._x_PineconeRouter_undoTemplate();\r\n\t\t\t\tPineconeRouter.remove(path);\r\n\t\t\t\tdelete el._x_PineconeRouter_route\r\n\t\t\t})\r\n\r\n\t\t\tmiddleware('onAfterRouteProcessed', el, path)\r\n\r\n\r\n\t\t}\r\n\t)\r\n\r\n\tAlpine.directive(\r\n\t\t'handler',\r\n\t\t(\r\n\t\t\tel,\r\n\t\t\t{ expression },\r\n\t\t\t{ evaluate, cleanup }\r\n\t\t) => {\r\n\t\t\tif (!el._x_PineconeRouter_route) {\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`Pinecone Router: x-handler must be set on the same element as x-route.`\r\n\t\t\t\t)\r\n\t\t\t}\r\n\r\n\t\t\tlet handlers\r\n\r\n\t\t\t// check if the handlers expression is an array\r\n\t\t\t// if not make it one\r\n\t\t\tif (\r\n\t\t\t\t!(expression.startsWith('[') && expression.endsWith(']')) &&\r\n\t\t\t\t!(expression.startsWith('Array(') && expression.endsWith(')'))\r\n\t\t\t) {\r\n\t\t\t\texpression = `[${expression}]`\r\n\t\t\t}\r\n\r\n\t\t\tlet evaluatedExpression = evaluate(expression)\r\n\r\n\t\t\tif (typeof evaluatedExpression == 'object')\r\n\t\t\t\thandlers = evaluatedExpression\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\r\n\t\t\t\t\t`Pinecone Router: Invalid handler type: ${typeof evaluatedExpression}.`\r\n\t\t\t\t)\r\n\t\t\t}\r\n\r\n\t\t\t// add `this` context for handlers inside an Alpine.component\r\n\t\t\tfor (let index = 0; index < handlers.length; index++) {\r\n\t\t\t\thandlers[index] = handlers[index].bind(Alpine.$data(el))\r\n\t\t\t}\r\n\r\n\t\t\t// add handlers to the route\r\n\t\t\tlet path = el._x_PineconeRouter_route\r\n\t\t\tlet route = path == 'notfound' ? PineconeRouter.notfound : PineconeRouter.routes[findRouteIndex(path)];\r\n\t\t\troute.handlers = handlers\r\n\r\n\t\t\tcleanup(() => {\r\n\t\t\t\troute.handlers = []\r\n\t\t\t\troute.handlersDone = true\r\n\t\t\t\troute.cancelHandlers = false\r\n\t\t\t})\r\n\t\t}\r\n\t)\r\n\r\n\tAlpine.directive(\r\n\t\t'template',\r\n\t\t(el: HTMLTemplateElement, { modifiers, expression }, { Alpine, effect, cleanup }) => {\r\n\r\n\t\t\tif (!el._x_PineconeRouter_route) throw new Error(\"Pinecone Router: x-template must be used on the same element as x-route.\")\r\n\r\n\t\t\tif (el.content.firstElementChild != null) throw new Error(\"Pinecone Router: x-template cannot be used alongside an inline template (template element should not have a child).\")\r\n\r\n\t\t\tlet url: string = expression\r\n\r\n\t\t\tlet target = modifierValue(modifiers, 'target', null) ?? window.PineconeRouter.settings.templateTargetId\r\n\t\t\tlet targetEl = document.getElementById(target)\r\n\r\n\t\t\tif (target && !targetEl)\r\n\t\t\t\tthrow new Error(\"Pinecone Router: Can't find an element with the suplied target ID: \" + target + \"\")\r\n\r\n\t\t\tif (modifiers.includes(\"preload\")) {\r\n\t\t\t\tpreloadingTemplates[url] = load(el, url).finally(() => {\r\n\t\t\t\t\tpreloadingTemplates[url] = null;\r\n\t\t\t\t\tendLoading()\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\t// add template to the route\r\n\t\t\tlet path = el._x_PineconeRouter_route\r\n\t\t\tlet route = path == 'notfound' ? PineconeRouter.notfound : PineconeRouter.routes[findRouteIndex(path)];\r\n\t\t\troute.template = url\r\n\r\n\r\n\t\t\tAlpine.nextTick(() => {\r\n\t\t\t\teffect(() => {\r\n\t\t\t\t\tlet found = route.handlersDone && PineconeRouter.context.route == route.path\r\n\t\t\t\t\tfound ? show(el, expression, url, targetEl) : hide(el)\r\n\t\t\t\t})\r\n\t\t\t})\r\n\r\n\t\t\tcleanup(() => {\r\n\t\t\t\tel._x_PineconeRouter_undoTemplate && el._x_PineconeRouter_undoTemplate();\r\n\t\t\t})\r\n\r\n\t\t}\r\n\t)\r\n\r\n\tAlpine.$router = PineconeRouter.context\r\n\tAlpine.magic('router', () => PineconeRouter.context)\r\n\r\n\tdocument.addEventListener('alpine:initialized', () => {\r\n\t\tmiddleware('init')\r\n\t\t// virtually navigate the path on the first page load\r\n\t\t// this will register the path in history and sets the pathvariable\r\n\t\t// navigate(window.location.pathname, false, true)\r\n\t\tif (PineconeRouter.settings.hash == false) {\r\n\t\t\t// navigate to the current page to handle it\r\n\t\t\t// ONLY if we not using hash routing for the default router\r\n\t\t\tnavigate(location.pathname, false, true)\r\n\t\t} else {\r\n\t\t\tnavigate(location.hash.substring(1), false, true)\r\n\t\t}\r\n\t})\r\n\r\n\t// handle navigation events not emitted by links, for example, back button.\r\n\twindow.addEventListener('popstate', () => {\r\n\t\tif (PineconeRouter.settings.hash) {\r\n\t\t\tif (window.location.hash != '') {\r\n\t\t\t\tnavigate(window.location.hash.substring(1), true)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tnavigate(window.location.pathname, true)\r\n\t\t}\r\n\t})\r\n\r\n\t// intercept click event in links\r\n\tinterceptLinks()\r\n\r\n\t/**\r\n\t * @description Add a handler to click events on all valid links\r\n\t */\r\n\tfunction interceptLinks() {\r\n\t\tfunction validateLink(node) {\r\n\t\t\t// only valid elements\r\n\t\t\tif (!node || !node.getAttribute) return;\r\n\r\n\t\t\tlet href = node.getAttribute('href'),\r\n\t\t\t\ttarget = node.getAttribute('target');\r\n\r\n\t\t\t// ignore links with targets and non-path URLs\r\n\t\t\tif (!href || !href.match(/^\\//g) || (target && !target.match(/^_?self$/i)))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tif (typeof href !== 'string' && href.url) {\r\n\t\t\t\thref = href.url;\r\n\t\t\t}\r\n\t\t\treturn href\r\n\r\n\t\t}\r\n\t\twindow.document.body.addEventListener(\r\n\t\t\t'click',\r\n\t\t\tfunction (e: any) {\r\n\t\t\t\tif (e.ctrlKey || e.metaKey || e.altKey || e.shiftKey || e.button || e.defaultPrevented) return;\r\n\r\n\r\n\t\t\t\tlet currentRoute = PineconeRouter.routes[findRouteIndex(PineconeRouter.context.route)] ?? PineconeRouter.notfound\r\n\r\n\t\t\t\t// stop handlers in progress before navigating to the next page\r\n\t\t\t\tif (!currentRoute.handlersDone) {\r\n\t\t\t\t\tcurrentRoute.cancelHandlers = true\r\n\t\t\t\t\tendLoading()\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet node = e.target;\r\n\r\n\t\t\t\tdo {\r\n\t\t\t\t\tif (node.localName === 'a' && node.getAttribute('href')) {\r\n\t\t\t\t\t\tif (node.hasAttribute('data-native') || node.hasAttribute('native')) return;\r\n\t\t\t\t\t\tlet href = validateLink(node)\r\n\t\t\t\t\t\tif (href) {\r\n\t\t\t\t\t\t\tnavigate(href)\r\n\t\t\t\t\t\t\tif (e.stopImmediatePropagation) e.stopImmediatePropagation();\r\n\t\t\t\t\t\t\tif (e.stopPropagation) e.stopPropagation();\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while ((node = node.parentNode));\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n\r\n\t/**\r\n\t * Go to the specified path without reloading\r\n\t * @param {string} path the path with no hash even if using hash routing\r\n\t * @param {boolean} fromPopState this will be set to true if called from window.onpopstate event\r\n\t * @param {boolean} firstLoad this will be set to true if this is the first page loaded, also from page reload\r\n\t */\r\n\tasync function navigate(path, fromPopState = false, firstLoad = false) {\r\n\t\tif (!path) path = '/'\r\n\t\tPineconeRouter.context.path = path\r\n\r\n\t\t// only add basePath if it was set\r\n\t\t// if not using hash routing\r\n\t\t// and if it wasn't added already\r\n\t\tif (!PineconeRouter.settings.hash) {\r\n\t\t\tif (\r\n\t\t\t\tPineconeRouter.settings.basePath != '/' &&\r\n\t\t\t\t!path.startsWith(PineconeRouter.settings.basePath)\r\n\t\t\t) {\r\n\t\t\t\tpath = PineconeRouter.settings.basePath + path\r\n\t\t\t}\r\n\t\t\tif (\r\n\t\t\t\tpath == PineconeRouter.settings.basePath &&\r\n\t\t\t\t!path.endsWith('/')\r\n\t\t\t) {\r\n\t\t\t\tpath += '/'\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst route: Route = PineconeRouter.routes.find(\r\n\t\t\t(route: Route) => {\r\n\t\t\t\tlet m = match(path, route.path)\r\n\t\t\t\troute.params = m != false ? m : {}\r\n\t\t\t\treturn m != false\r\n\t\t\t}\r\n\t\t) ?? PineconeRouter.notfound\r\n\r\n\t\t// if the route has handlres, it will mark them unhandled\r\n\t\t// this is so templates wont render till then.\r\n\t\troute.handlersDone = !route.handlers.length\r\n\r\n\t\tif (route.handlers.length || route.template) {\r\n\t\t\tstartLoading()\r\n\t\t}\r\n\r\n\t\tlet context = buildContext(route.path, path, route.params)\r\n\r\n\t\tPineconeRouter.context = context\r\n\r\n\t\t// the middleware may return 'stop' to stop execution of this function\r\n\t\tif (\r\n\t\t\tmiddleware('onBeforeHandlersExecuted', route, path, firstLoad) == 'stop'\r\n\t\t) {\r\n\t\t\tendLoading()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\r\n\t\t// do not call pushstate from popstate event https://stackoverflow.com/a/50830905\r\n\t\tif (!fromPopState) {\r\n\t\t\tlet fullPath = ''\r\n\t\t\tif (PineconeRouter.settings.hash) {\r\n\t\t\t\tfullPath = '#'\r\n\t\t\t\tfullPath += window.location.search + path\r\n\t\t\t} else {\r\n\t\t\t\tfullPath = path + window.location.search + window.location.hash\r\n\t\t\t}\r\n\t\t\t// don't create duplicate history entry on first page load\r\n\t\t\tif (!firstLoad) history.pushState({ path: fullPath }, '', fullPath)\r\n\t\t\telse {\r\n\t\t\t\tif (PineconeRouter.settings.hash) {\r\n\t\t\t\t\tif (path == '/') {\r\n\t\t\t\t\t\tPineconeRouter.context = context\r\n\t\t\t\t\t\treturn navigate('/', false, false)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\t(route && route.handlers.length)\r\n\t\t) {\r\n\t\t\troute.cancelHandlers = false\r\n\t\t\tlet ok = await handle(route.handlers, context)\r\n\t\t\tif (!ok) {\r\n\t\t\t\tendLoading()\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\troute.handlersDone = true\r\n\t\t\tif (!route.template) endLoading()\r\n\t\t}\r\n\r\n\r\n\t\t// show templates added programmatically\r\n\t\tif (route.template && route.programmaticTemplate) {\r\n\t\t\tlet target = document.getElementById(PineconeRouter.settings.templateTargetId)\r\n\t\t\tif (cachedTemplates[route.template]) {\r\n\t\t\t\ttarget.innerHTML = cachedTemplates[route.template]\r\n\t\t\t\tendLoading()\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tload(target, route.template).then(() => {\r\n\t\t\t\t\ttarget.innerHTML = cachedTemplates[route.template]\r\n\t\t\t\t\tendLoading()\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tmiddleware('onHandlersExecuted', route, path, firstLoad)\r\n\t}\r\n\r\n\tfunction buildContext(route: string, path: string, params: {}): Context {\r\n\t\treturn {\r\n\t\t\troute: route,\r\n\t\t\tpath: path,\r\n\t\t\tparams: params,\r\n\t\t\tquery: window.location.search.substring(1), // query w/out leading '?'\r\n\t\t\thash: window.location.hash.substring(1), // hash without leading '#'\r\n\t\t\tredirect(path) {\r\n\t\t\t\tnavigate(path)\r\n\t\t\t\treturn 'stop'\r\n\t\t\t},\r\n\t\t\tnavigate(path) {\r\n\t\t\t\tnavigate(path)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction modifierValue(modifiers, key, fallback) {\r\n\t\t// If the modifier isn't present, use the default.\r\n\t\tif (modifiers.indexOf(key) === -1) return fallback\r\n\r\n\t\t// If it IS present, grab the value after it\r\n\t\tconst rawValue = modifiers[modifiers.indexOf(key) + 1]\r\n\r\n\t\tif (!rawValue) return fallback\r\n\r\n\t\tif (key === 'target') {\r\n\t\t\tlet match = rawValue.match(/([a-z0-9_-]+)/)\r\n\t\t\tif (match) return match[1]\r\n\t\t}\r\n\t\treturn rawValue\r\n\t}\r\n\t/**\r\n\t * execute the handlers of routes that are given passing them the context.\r\n\t */\r\n\tasync function handle(handlers, context) {\r\n\t\tfor (let i = 0; i < handlers.length; i++) {\r\n\t\t\tif (typeof handlers[i] == 'function') {\r\n\t\t\t\t// stop if the handlers were canceled for example the user clicked a link\r\n\t\t\t\tlet route = PineconeRouter.routes[findRouteIndex(context.route)] ?? PineconeRouter.notfound\r\n\t\t\t\tif (route.cancelHandlers) {\r\n\t\t\t\t\troute.cancelHandlers = false\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t\tlet result\r\n\t\t\t\tif (handlers[i].constructor.name === 'AsyncFunction')\r\n\t\t\t\t\tresult = await handlers[i](context)\r\n\t\t\t\telse\r\n\t\t\t\t\tresult = handlers[i](context)\r\n\t\t\t\t// if the handler redirected, return\r\n\t\t\t\tif (result == 'stop') return false\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n}\r\n\r\n", "import magic from '../src/index.js'\r\n\r\ndocument.addEventListener('alpine:init', () => {\r\n window.Alpine.plugin(magic)\r\n})\r\n"],
"mappings": "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",
"names": ["Route", "path", "options", "opt", "route_default", "segmentize", "url", "match", "routePath", "reg", "c", "matches", "ret", "p", "i", "r", "urlSeg", "route", "max", "param", "flags", "plus", "star", "val", "middleware", "func", "args", "plugin", "fetchError", "error", "src_default", "Alpine", "PineconeRouter", "route_default", "path", "navigate", "options", "r", "loadingTemplates", "cachedTemplates", "inMakeProgress", "preloadingTemplates", "load", "el", "url", "programmaticRoute", "html", "fetchError", "make", "expression", "targetEl", "clone", "hide", "show", "endLoading", "startLoading", "addBasePath", "findRouteIndex", "modifiers", "effect", "cleanup", "middleware", "target", "modifierValue", "routeIndex", "route", "evaluate", "handlers", "evaluatedExpression", "index", "interceptLinks", "validateLink", "node", "href", "e", "currentRoute", "fromPopState", "firstLoad", "m", "match", "context", "buildContext", "fullPath", "handle", "params", "key", "fallback", "rawValue", "i", "result", "src_default"]
}