{"version":3,"file":"main.js","sources":["../../Dependencies/alpinejs-router/dist/module.esm.js","../../node_modules/.pnpm/alpinejs@3.13.3/node_modules/alpinejs/dist/module.esm.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/enums.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/userAgent.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper.js","../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/.pnpm/tippy.js@6.3.7/node_modules/tippy.js/dist/tippy.esm.js","../../node_modules/.pnpm/@alpinejs+ui@3.13.3-beta.4/node_modules/@alpinejs/ui/dist/module.esm.js","../../node_modules/.pnpm/@alpinejs+focus@3.13.3/node_modules/@alpinejs/focus/dist/module.esm.js","../../node_modules/.pnpm/@alpinejs+persist@3.13.3/node_modules/@alpinejs/persist/dist/module.esm.js","../../node_modules/.pnpm/@ryangjchandler+alpine-clipboard@2.3.0/node_modules/@ryangjchandler/alpine-clipboard/src/index.js","../../src/main.js"],"sourcesContent":["// src/url.js\nvar RouterURL = class {\n #url;\n constructor(foo, opts = {}) {\n this.#url = new URL(foo);\n this.base = opts.base ?? \"\";\n }\n set url(val) {\n this.#url = new URL(val);\n }\n get url() {\n return this.#url.href;\n }\n get hash() {\n return this.#url.hash;\n }\n get path() {\n return this.#url.pathname.replace(this.base, \"\");\n }\n get query() {\n return Object.fromEntries(\n new URLSearchParams(\n this.#url.href.indexOf(\"?\") > -1 ? this.#url.href.split(\"?\").pop() : \"\"\n )\n );\n }\n resolve(path, params, replace = false) {\n const l = this.#url.origin + this.base + path;\n const r = replace ? new URLSearchParams(params).toString() : new URLSearchParams({ ...this.query, ...params }).toString();\n this.url = l + (r ? \"?\" + r : \"\") + this.#url.hash;\n return this;\n }\n};\n\n// src/pattern.js\nvar URLPattern = class {\n static build(path) {\n if (path.indexOf(\":\") === -1) {\n return path;\n }\n const pattern = path.split(\"/\").map((e) => {\n if (!e.startsWith(\":\")) {\n return e;\n }\n let field = e.substr(1);\n let fieldPattern = \"[^/]+\";\n const ef = field.match(/\\((.+?)\\)/);\n if (ef) {\n field = field.substr(0, field.indexOf(\"(\"));\n fieldPattern = ef[1];\n }\n return `(?<${field}>${fieldPattern})`;\n }).join(\"/\");\n return new RegExp(`^${pattern}$`);\n }\n static match(path, pattern) {\n if (pattern instanceof RegExp) {\n const found = path.match(pattern);\n if (!found)\n return false;\n return { ...found.groups };\n }\n return path === pattern;\n }\n static is(path, pattern) {\n if (pattern instanceof RegExp) {\n return pattern.test(path);\n }\n return path === pattern;\n }\n};\n\n// src/router.js\nvar Router = class {\n #patterns = {};\n #cache = {};\n add(route) {\n this.#patterns = {\n ...this.#patterns,\n [route]: this.#cache[route] ?? URLPattern.build(route)\n };\n }\n match(target) {\n console.assert(target instanceof RouterURL);\n const path = target.path;\n for (const [route, pattern] of Object.entries(this.#patterns)) {\n const found = URLPattern.match(path, pattern);\n if (found) {\n return found === true ? {} : found;\n }\n }\n return false;\n }\n is(target, ...routes) {\n console.assert(target instanceof RouterURL);\n const path = target.path;\n for (const route of routes) {\n const pattern = this.#patterns[route] ?? this.#cache[route] ?? URLPattern.build(route);\n this.#cache[route] = pattern;\n if (URLPattern.is(path, pattern)) {\n return true;\n }\n }\n return false;\n }\n not(target, ...routes) {\n console.assert(target instanceof RouterURL);\n const path = target.path;\n for (const route of routes) {\n const pattern = this.#patterns[route] ?? this.#cache[route] ?? URLPattern.build(route);\n this.#cache[route] = pattern;\n if (URLPattern.is(path, pattern)) {\n return false;\n }\n }\n return true;\n }\n notfound(target) {\n console.assert(target instanceof RouterURL);\n const path = target.path;\n return Object.values(this.#patterns).findIndex(\n (e) => URLPattern.is(path, e)\n ) === -1;\n }\n};\n\n// src/index.js\nfunction src_default(Alpine) {\n const router = new Router();\n const state = Alpine.reactive({\n base: \"\",\n href: location.href,\n path: \"\",\n hash: location.hash,\n query: {},\n params: {},\n loading: false\n });\n const route = {\n get path() {\n return state.path;\n },\n get query() {\n return state.query;\n },\n get hash() {\n return state.hash;\n },\n get params() {\n return state.params || {};\n },\n get loading() {\n return state.loading;\n },\n config(config = {}) {\n if (config.base && config.base.endsWith(\"/\"))\n config.base = config.base.slice(0, -1);\n state.base = config.base ?? \"\";\n },\n push(...args) {\n return push(...args);\n },\n replace(...args) {\n return replace(...args);\n },\n resolve(query = {}) {\n return getTargetURL(state.href).resolve(state.path, query).url;\n },\n is(...paths) {\n return router.is(getTargetURL(state.href), ...paths);\n },\n not(...paths) {\n return router.not(getTargetURL(state.href), ...paths);\n },\n get notfound() {\n return router.notfound(getTargetURL(state.href));\n }\n };\n Alpine.$router = route;\n Alpine.magic(\"router\", () => route);\n function getTargetURL(href) {\n return new RouterURL(href, { base: state.base });\n }\n function parse() {\n const url = getTargetURL(state.href);\n state.path = url.path;\n state.query = url.query;\n state.params = router.match(url);\n if (state.hash !== url.hash) {\n state.hash = url.hash;\n if (url.hash !== \"\") {\n Alpine.nextTick(() => {\n let el = document.getElementById(url.hash.substring(1));\n if (el) {\n el.scrollIntoView();\n }\n });\n }\n }\n }\n Alpine.effect(() => parse());\n Alpine.nextTick(() => {\n if (!state.base)\n parse();\n });\n window.addEventListener(\"popstate\", () => state.href = location.href);\n function push(path, options = {}) {\n if (!path.startsWith(location.origin)) {\n path = location.origin + state.base + path;\n }\n if (location.href !== path) {\n history[options.replace ? \"replaceState\" : \"pushState\"]({}, \"\", path);\n state.href = path;\n }\n }\n function replace(path) {\n push(path, { replace: true });\n }\n const templateCaches = {};\n const inLoadProgress = {};\n const inMakeProgress = /* @__PURE__ */ new Set();\n Alpine.directive(\"route\", (el, { modifiers, expression }, { effect, cleanup }) => {\n if (!modifiers.includes(\"notfound\")) {\n router.add(expression);\n }\n const load = (url) => {\n if (inLoadProgress[url]) {\n inLoadProgress[url].then((html) => el.innerHTML = html);\n } else {\n inLoadProgress[url] = fetch(url).then((r) => r.text()).then((html) => {\n templateCaches[url] = html;\n el.innerHTML = html;\n return html;\n });\n }\n return inLoadProgress[url];\n };\n const tpl = el.getAttribute(\"template\") ?? el.getAttribute(\"template.preload\");\n let loading;\n if (el.hasAttribute(\"template.preload\")) {\n loading = load(tpl).finally(() => loading = false);\n }\n function show() {\n if (el._x_currentIfEl)\n return el._x_currentIfEl;\n const make = () => {\n if (inMakeProgress.has(expression))\n return;\n inMakeProgress.add(expression);\n const clone = el.content.cloneNode(true).firstElementChild;\n Alpine.addScopeToNode(clone, {}, el);\n Alpine.mutateDom(() => {\n el.after(clone);\n Alpine.initTree(clone);\n });\n el._x_currentIfEl = clone;\n el._x_undoIf = () => {\n clone.remove();\n delete el._x_currentIfEl;\n };\n Alpine.nextTick(() => inMakeProgress.delete(expression));\n };\n if (el.content.firstElementChild) {\n make();\n } else if (tpl) {\n if (templateCaches[tpl]) {\n el.innerHTML = templateCaches[tpl];\n make();\n } else {\n if (loading) {\n loading.then(() => make());\n } else {\n state.loading = true;\n load(tpl).then(() => make()).finally(() => state.loading = false);\n }\n }\n } else {\n console.error(`Template for '${expression}' is missing`);\n }\n }\n function hide() {\n if (el._x_undoIf) {\n el._x_undoIf();\n delete el._x_undoIf;\n }\n }\n Alpine.nextTick(() => {\n effect(() => {\n const target = getTargetURL(state.href);\n const found = modifiers.includes(\"notfound\") ? router.notfound(target) : router.is(target, expression);\n found ? show() : hide();\n });\n });\n cleanup(() => el._x_undoIf && el._x_undoIf());\n });\n Alpine.directive(\"link\", (el, { modifiers, expression }, { evaluate, effect, cleanup }) => {\n const url = getTargetURL(el.href);\n el.href = url.resolve(url.path, url.query, true).url;\n function go(e) {\n e.preventDefault();\n push(el.href, { replace: modifiers.includes(\"replace\") });\n }\n el.addEventListener(\"click\", go);\n if (modifiers.includes(\"activity\")) {\n const classes = expression ? evaluate(expression) : {};\n classes.active ??= \"active\";\n classes.exactActive ??= \"exact-active\";\n effect(() => {\n const [l, r] = [getTargetURL(el.href), getTargetURL(state.href)];\n el.classList.toggle(classes.active, r.path.startsWith(l.path));\n el.classList.toggle(classes.exactActive, l.path === r.path);\n });\n }\n cleanup(() => {\n el.removeEventListener(\"click\", go);\n });\n });\n}\n\n// builds/module.js\nvar module_default = src_default;\nexport {\n module_default as default\n};\n","// packages/alpinejs/src/scheduler.js\nvar flushPending = false;\nvar flushing = false;\nvar queue = [];\nvar lastFlushedIndex = -1;\nfunction scheduler(callback) {\n queueJob(callback);\n}\nfunction queueJob(job) {\n if (!queue.includes(job))\n queue.push(job);\n queueFlush();\n}\nfunction dequeueJob(job) {\n let index = queue.indexOf(job);\n if (index !== -1 && index > lastFlushedIndex)\n queue.splice(index, 1);\n}\nfunction queueFlush() {\n if (!flushing && !flushPending) {\n flushPending = true;\n queueMicrotask(flushJobs);\n }\n}\nfunction flushJobs() {\n flushPending = false;\n flushing = true;\n for (let i = 0; i < queue.length; i++) {\n queue[i]();\n lastFlushedIndex = i;\n }\n queue.length = 0;\n lastFlushedIndex = -1;\n flushing = false;\n}\n\n// packages/alpinejs/src/reactivity.js\nvar reactive;\nvar effect;\nvar release;\nvar raw;\nvar shouldSchedule = true;\nfunction disableEffectScheduling(callback) {\n shouldSchedule = false;\n callback();\n shouldSchedule = true;\n}\nfunction setReactivityEngine(engine) {\n reactive = engine.reactive;\n release = engine.release;\n effect = (callback) => engine.effect(callback, { scheduler: (task) => {\n if (shouldSchedule) {\n scheduler(task);\n } else {\n task();\n }\n } });\n raw = engine.raw;\n}\nfunction overrideEffect(override) {\n effect = override;\n}\nfunction elementBoundEffect(el) {\n let cleanup2 = () => {\n };\n let wrappedEffect = (callback) => {\n let effectReference = effect(callback);\n if (!el._x_effects) {\n el._x_effects = /* @__PURE__ */ new Set();\n el._x_runEffects = () => {\n el._x_effects.forEach((i) => i());\n };\n }\n el._x_effects.add(effectReference);\n cleanup2 = () => {\n if (effectReference === void 0)\n return;\n el._x_effects.delete(effectReference);\n release(effectReference);\n };\n return effectReference;\n };\n return [wrappedEffect, () => {\n cleanup2();\n }];\n}\n\n// packages/alpinejs/src/utils/dispatch.js\nfunction dispatch(el, name, detail = {}) {\n el.dispatchEvent(\n new CustomEvent(name, {\n detail,\n bubbles: true,\n // Allows events to pass the shadow DOM barrier.\n composed: true,\n cancelable: true\n })\n );\n}\n\n// packages/alpinejs/src/utils/walk.js\nfunction walk(el, callback) {\n if (typeof ShadowRoot === \"function\" && el instanceof ShadowRoot) {\n Array.from(el.children).forEach((el2) => walk(el2, callback));\n return;\n }\n let skip = false;\n callback(el, () => skip = true);\n if (skip)\n return;\n let node = el.firstElementChild;\n while (node) {\n walk(node, callback, false);\n node = node.nextElementSibling;\n }\n}\n\n// packages/alpinejs/src/utils/warn.js\nfunction warn(message, ...args) {\n console.warn(`Alpine Warning: ${message}`, ...args);\n}\n\n// packages/alpinejs/src/lifecycle.js\nvar started = false;\nfunction start() {\n if (started)\n warn(\"Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems.\");\n started = true;\n if (!document.body)\n warn(\"Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's `