{"version":3,"file":"singletons.20f4ba39.js","sources":["../../../../../../node_modules/@sveltejs/kit/src/runtime/client/constants.js","../../../../../../node_modules/@sveltejs/kit/src/runtime/client/utils.js","../../../../../../node_modules/@sveltejs/kit/src/runtime/client/singletons.js"],"sourcesContent":["export const SNAPSHOT_KEY = 'sveltekit:snapshot';\nexport const SCROLL_KEY = 'sveltekit:scroll';\nexport const INDEX_KEY = 'sveltekit:index';\n\nexport const PRELOAD_PRIORITIES = /** @type {const} */ ({\n\ttap: 1,\n\thover: 2,\n\tviewport: 3,\n\teager: 4,\n\toff: -1,\n\tfalse: -1\n});\n","import { BROWSER, DEV } from 'esm-env';\nimport { writable } from 'svelte/store';\nimport { assets } from '__sveltekit/paths';\nimport { version } from '__sveltekit/environment';\nimport { PRELOAD_PRIORITIES } from './constants.js';\n\n/* global __SVELTEKIT_APP_VERSION_FILE__, __SVELTEKIT_APP_VERSION_POLL_INTERVAL__ */\n\nexport const origin = BROWSER ? location.origin : '';\n\n/** @param {HTMLDocument} doc */\nexport function get_base_uri(doc) {\n\tlet baseURI = doc.baseURI;\n\n\tif (!baseURI) {\n\t\tconst baseTags = doc.getElementsByTagName('base');\n\t\tbaseURI = baseTags.length ? baseTags[0].href : doc.URL;\n\t}\n\n\treturn baseURI;\n}\n\nexport function scroll_state() {\n\treturn {\n\t\tx: pageXOffset,\n\t\ty: pageYOffset\n\t};\n}\n\nconst warned = new WeakSet();\n\n/** @typedef {keyof typeof valid_link_options} LinkOptionName */\n\nconst valid_link_options = /** @type {const} */ ({\n\t'preload-code': ['', 'off', 'false', 'tap', 'hover', 'viewport', 'eager'],\n\t'preload-data': ['', 'off', 'false', 'tap', 'hover'],\n\tkeepfocus: ['', 'true', 'off', 'false'],\n\tnoscroll: ['', 'true', 'off', 'false'],\n\treload: ['', 'true', 'off', 'false'],\n\treplacestate: ['', 'true', 'off', 'false']\n});\n\n/**\n * @template {LinkOptionName} T\n * @typedef {typeof valid_link_options[T][number]} ValidLinkOptions\n */\n\n/**\n * @template {LinkOptionName} T\n * @param {Element} element\n * @param {T} name\n */\nfunction link_option(element, name) {\n\tconst value = /** @type {ValidLinkOptions | null} */ (\n\t\telement.getAttribute(`data-sveltekit-${name}`)\n\t);\n\n\tif (DEV) {\n\t\tvalidate_link_option(element, name, value);\n\t}\n\n\treturn value;\n}\n\n/**\n * @template {LinkOptionName} T\n * @template {ValidLinkOptions | null} U\n * @param {Element} element\n * @param {T} name\n * @param {U} value\n */\nfunction validate_link_option(element, name, value) {\n\tif (value === null) return;\n\n\t// @ts-expect-error - includes is dumb\n\tif (!warned.has(element) && !valid_link_options[name].includes(value)) {\n\t\tconsole.error(\n\t\t\t`Unexpected value for ${name} — should be one of ${valid_link_options[name]\n\t\t\t\t.map((option) => JSON.stringify(option))\n\t\t\t\t.join(', ')}`,\n\t\t\telement\n\t\t);\n\n\t\twarned.add(element);\n\t}\n}\n\nconst levels = {\n\t...PRELOAD_PRIORITIES,\n\t'': PRELOAD_PRIORITIES.hover\n};\n\n/**\n * @param {Element} element\n * @returns {Element | null}\n */\nfunction parent_element(element) {\n\tlet parent = element.assignedSlot ?? element.parentNode;\n\n\t// @ts-expect-error handle shadow roots\n\tif (parent?.nodeType === 11) parent = parent.host;\n\n\treturn /** @type {Element} */ (parent);\n}\n\n/**\n * @param {Element} element\n * @param {Element} target\n */\nexport function find_anchor(element, target) {\n\twhile (element && element !== target) {\n\t\tif (element.nodeName.toUpperCase() === 'A' && element.hasAttribute('href')) {\n\t\t\treturn /** @type {HTMLAnchorElement | SVGAElement} */ (element);\n\t\t}\n\n\t\telement = /** @type {Element} */ (parent_element(element));\n\t}\n}\n\n/**\n * @param {HTMLAnchorElement | SVGAElement} a\n * @param {string} base\n */\nexport function get_link_info(a, base) {\n\t/** @type {URL | undefined} */\n\tlet url;\n\n\ttry {\n\t\turl = new URL(a instanceof SVGAElement ? a.href.baseVal : a.href, document.baseURI);\n\t} catch {}\n\n\tconst target = a instanceof SVGAElement ? a.target.baseVal : a.target;\n\n\tconst external =\n\t\t!url ||\n\t\t!!target ||\n\t\tis_external_url(url, base) ||\n\t\t(a.getAttribute('rel') || '').split(/\\s+/).includes('external');\n\n\tconst download = url?.origin === origin && a.hasAttribute('download');\n\n\treturn { url, external, target, download };\n}\n\n/**\n * @param {HTMLFormElement | HTMLAnchorElement | SVGAElement} element\n */\nexport function get_router_options(element) {\n\t/** @type {ValidLinkOptions<'keepfocus'> | null} */\n\tlet keep_focus = null;\n\n\t/** @type {ValidLinkOptions<'noscroll'> | null} */\n\tlet noscroll = null;\n\n\t/** @type {ValidLinkOptions<'preload-code'> | null} */\n\tlet preload_code = null;\n\n\t/** @type {ValidLinkOptions<'preload-data'> | null} */\n\tlet preload_data = null;\n\n\t/** @type {ValidLinkOptions<'reload'> | null} */\n\tlet reload = null;\n\n\t/** @type {ValidLinkOptions<'replacestate'> | null} */\n\tlet replace_state = null;\n\n\t/** @type {Element} */\n\tlet el = element;\n\n\twhile (el && el !== document.documentElement) {\n\t\tif (preload_code === null) preload_code = link_option(el, 'preload-code');\n\t\tif (preload_data === null) preload_data = link_option(el, 'preload-data');\n\t\tif (keep_focus === null) keep_focus = link_option(el, 'keepfocus');\n\t\tif (noscroll === null) noscroll = link_option(el, 'noscroll');\n\t\tif (reload === null) reload = link_option(el, 'reload');\n\t\tif (replace_state === null) replace_state = link_option(el, 'replacestate');\n\n\t\tel = /** @type {Element} */ (parent_element(el));\n\t}\n\n\t/** @param {string | null} value */\n\tfunction get_option_state(value) {\n\t\tswitch (value) {\n\t\t\tcase '':\n\t\t\tcase 'true':\n\t\t\t\treturn true;\n\t\t\tcase 'off':\n\t\t\tcase 'false':\n\t\t\t\treturn false;\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn {\n\t\tpreload_code: levels[preload_code ?? 'off'],\n\t\tpreload_data: levels[preload_data ?? 'off'],\n\t\tkeep_focus: get_option_state(keep_focus),\n\t\tnoscroll: get_option_state(noscroll),\n\t\treload: get_option_state(reload),\n\t\treplace_state: get_option_state(replace_state)\n\t};\n}\n\n/** @param {any} value */\nexport function notifiable_store(value) {\n\tconst store = writable(value);\n\tlet ready = true;\n\n\tfunction notify() {\n\t\tready = true;\n\t\tstore.update((val) => val);\n\t}\n\n\t/** @param {any} new_value */\n\tfunction set(new_value) {\n\t\tready = false;\n\t\tstore.set(new_value);\n\t}\n\n\t/** @param {(value: any) => void} run */\n\tfunction subscribe(run) {\n\t\t/** @type {any} */\n\t\tlet old_value;\n\t\treturn store.subscribe((new_value) => {\n\t\t\tif (old_value === undefined || (ready && new_value !== old_value)) {\n\t\t\t\trun((old_value = new_value));\n\t\t\t}\n\t\t});\n\t}\n\n\treturn { notify, set, subscribe };\n}\n\nexport function create_updated_store() {\n\tconst { set, subscribe } = writable(false);\n\n\tif (DEV || !BROWSER) {\n\t\treturn {\n\t\t\tsubscribe,\n\t\t\tcheck: async () => false\n\t\t};\n\t}\n\n\tconst interval = __SVELTEKIT_APP_VERSION_POLL_INTERVAL__;\n\n\t/** @type {NodeJS.Timeout} */\n\tlet timeout;\n\n\t/** @type {() => Promise} */\n\tasync function check() {\n\t\tclearTimeout(timeout);\n\n\t\tif (interval) timeout = setTimeout(check, interval);\n\n\t\ttry {\n\t\t\tconst res = await fetch(`${assets}/${__SVELTEKIT_APP_VERSION_FILE__}`, {\n\t\t\t\theaders: {\n\t\t\t\t\tpragma: 'no-cache',\n\t\t\t\t\t'cache-control': 'no-cache'\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!res.ok) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst data = await res.json();\n\t\t\tconst updated = data.version !== version;\n\n\t\t\tif (updated) {\n\t\t\t\tset(true);\n\t\t\t\tclearTimeout(timeout);\n\t\t\t}\n\n\t\t\treturn updated;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tif (interval) timeout = setTimeout(check, interval);\n\n\treturn {\n\t\tsubscribe,\n\t\tcheck\n\t};\n}\n\n/**\n * @param {URL} url\n * @param {string} base\n */\nexport function is_external_url(url, base) {\n\treturn url.origin !== origin || !url.pathname.startsWith(base);\n}\n","import { writable } from 'svelte/store';\nimport { create_updated_store, notifiable_store } from './utils.js';\nimport { BROWSER } from 'esm-env';\n\n/** @type {import('./types.js').Client} */\nexport let client;\n\n/**\n * @param {{\n * client: import('./types.js').Client;\n * }} opts\n */\nexport function init(opts) {\n\tclient = opts.client;\n}\n\n/**\n * @template {keyof typeof client} T\n * @param {T} key\n * @returns {typeof client[T]}\n */\nexport function client_method(key) {\n\tif (!BROWSER) {\n\t\tif (key === 'before_navigate' || key === 'after_navigate' || key === 'on_navigate') {\n\t\t\t// @ts-expect-error doesn't recognize that both keys here return void so expects a async function\n\t\t\treturn () => {};\n\t\t} else {\n\t\t\t/** @type {Record} */\n\t\t\tconst name_lookup = {\n\t\t\t\tdisable_scroll_handling: 'disableScrollHandling',\n\t\t\t\tpreload_data: 'preloadData',\n\t\t\t\tpreload_code: 'preloadCode',\n\t\t\t\tinvalidate_all: 'invalidateAll'\n\t\t\t};\n\n\t\t\treturn () => {\n\t\t\t\tthrow new Error(`Cannot call ${name_lookup[key] ?? key}(...) on the server`);\n\t\t\t};\n\t\t}\n\t} else {\n\t\t// @ts-expect-error\n\t\treturn (...args) => client[key](...args);\n\t}\n}\n\nexport const stores = {\n\turl: /* @__PURE__ */ notifiable_store({}),\n\tpage: /* @__PURE__ */ notifiable_store({}),\n\tnavigating: /* @__PURE__ */ writable(\n\t\t/** @type {import('@sveltejs/kit').Navigation | null} */ (null)\n\t),\n\tupdated: /* @__PURE__ */ create_updated_store()\n};\n"],"names":["SNAPSHOT_KEY","SCROLL_KEY","INDEX_KEY","PRELOAD_PRIORITIES","origin","get_base_uri","doc","baseURI","baseTags","scroll_state","link_option","element","name","levels","parent_element","parent","find_anchor","target","get_link_info","a","base","url","external","is_external_url","download","get_router_options","keep_focus","noscroll","preload_code","preload_data","reload","replace_state","el","get_option_state","value","notifiable_store","store","writable","ready","notify","val","set","new_value","subscribe","run","old_value","create_updated_store","timeout","check","res","assets","updated","version","client","init","opts","client_method","key","args","stores"],"mappings":"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","x_google_ignoreList":[0,1,2]}