fundus 0.22.1 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +119 -7
  2. package/build/client/_app/immutable/chunks/CCIxsMRK.js +1 -0
  3. package/build/client/_app/immutable/chunks/CCIxsMRK.js.br +0 -0
  4. package/build/client/_app/immutable/chunks/CCIxsMRK.js.gz +0 -0
  5. package/build/client/_app/immutable/chunks/{BrWiKjrr.js → CIZHDrUF.js} +1 -1
  6. package/build/client/_app/immutable/chunks/CIZHDrUF.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/CIZHDrUF.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{D68C0q2O.js → CnnMN4wM.js} +7 -7
  9. package/build/client/_app/immutable/chunks/CnnMN4wM.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/CnnMN4wM.js.gz +0 -0
  11. package/build/client/_app/immutable/entry/{app.C6utCKyq.js → app.BPBGxhbo.js} +2 -2
  12. package/build/client/_app/immutable/entry/app.BPBGxhbo.js.br +0 -0
  13. package/build/client/_app/immutable/entry/app.BPBGxhbo.js.gz +0 -0
  14. package/build/client/_app/immutable/entry/start.CTftTL5f.js +1 -0
  15. package/build/client/_app/immutable/entry/start.CTftTL5f.js.br +0 -0
  16. package/build/client/_app/immutable/entry/start.CTftTL5f.js.gz +0 -0
  17. package/build/client/_app/immutable/nodes/{0.D3X2aDLe.js → 0.CquXHiCP.js} +1 -1
  18. package/build/client/_app/immutable/nodes/0.CquXHiCP.js.br +0 -0
  19. package/build/client/_app/immutable/nodes/0.CquXHiCP.js.gz +0 -0
  20. package/build/client/_app/immutable/nodes/{1.CoCDztxo.js → 1.xSi5hUiK.js} +1 -1
  21. package/build/client/_app/immutable/nodes/1.xSi5hUiK.js.br +1 -0
  22. package/build/client/_app/immutable/nodes/1.xSi5hUiK.js.gz +0 -0
  23. package/build/client/_app/immutable/nodes/{2.D6Bsk2OP.js → 2.CgzHO6l0.js} +1 -1
  24. package/build/client/_app/immutable/nodes/2.CgzHO6l0.js.br +0 -0
  25. package/build/client/_app/immutable/nodes/2.CgzHO6l0.js.gz +0 -0
  26. package/build/client/_app/immutable/nodes/{3.ZFuSk2Qg.js → 3.B-HZ9QO3.js} +1 -1
  27. package/build/client/_app/immutable/nodes/3.B-HZ9QO3.js.br +0 -0
  28. package/build/client/_app/immutable/nodes/3.B-HZ9QO3.js.gz +0 -0
  29. package/build/client/_app/immutable/nodes/{4.CGsGyx14.js → 4._rTlKXDo.js} +1 -1
  30. package/build/client/_app/immutable/nodes/4._rTlKXDo.js.br +0 -0
  31. package/build/client/_app/immutable/nodes/{4.CGsGyx14.js.gz → 4._rTlKXDo.js.gz} +0 -0
  32. package/build/client/_app/version.json +1 -1
  33. package/build/client/_app/version.json.br +0 -0
  34. package/build/client/_app/version.json.gz +0 -0
  35. package/build/handler.js +7 -7
  36. package/build/index.js +7 -7
  37. package/build/server/chunks/chunks/{exports.js-BO7CNNsS.js → exports.js-CcnW-JJJ.js} +2 -2
  38. package/build/server/chunks/chunks/{exports.js-BO7CNNsS.js.map → exports.js-CcnW-JJJ.js.map} +1 -1
  39. package/build/server/chunks/chunks/{internal.js-CFdkiEzR.js → internal.js-ByBTomBV.js} +2 -2
  40. package/build/server/chunks/chunks/{internal.js-CFdkiEzR.js.map → internal.js-ByBTomBV.js.map} +1 -1
  41. package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -1
  42. package/build/server/chunks/chunks/{shared.js-CwOc93ku.js → shared.js-CCqNepI3.js} +2 -2
  43. package/build/server/chunks/chunks/{shared.js-CwOc93ku.js.map → shared.js-CCqNepI3.js.map} +1 -1
  44. package/build/server/chunks/chunks/{utils.js-CWPwVcP0.js → utils.js-GaDYRoLP.js} +3 -3
  45. package/build/server/chunks/chunks/{utils.js-CWPwVcP0.js.map → utils.js-GaDYRoLP.js.map} +1 -1
  46. package/build/server/chunks/{handler-lAULIciq.js → handler-DegMVxhC.js} +5 -5
  47. package/build/server/chunks/{handler-lAULIciq.js.map → handler-DegMVxhC.js.map} +1 -1
  48. package/build/server/chunks/{index.js-BZzPujOC.js → index.js-BrCnc8Gq.js} +5 -5
  49. package/build/server/chunks/{index.js-BZzPujOC.js.map → index.js-BrCnc8Gq.js.map} +1 -1
  50. package/build/server/chunks/{manifest.js-B45gle3C.js → manifest.js-mKxXvxuB.js} +7 -7
  51. package/build/server/chunks/{manifest.js-B45gle3C.js.map → manifest.js-mKxXvxuB.js.map} +1 -1
  52. package/build/server/chunks/nodes/{0.js-CeflwKeh.js → 0.js-Bnw_8E4c.js} +2 -2
  53. package/build/server/chunks/nodes/{0.js-CeflwKeh.js.map → 0.js-Bnw_8E4c.js.map} +1 -1
  54. package/build/server/chunks/nodes/1.js-DpvNtg1z.js +7 -0
  55. package/build/server/chunks/nodes/{1.js-BokZtd9m.js.map → 1.js-DpvNtg1z.js.map} +1 -1
  56. package/build/server/chunks/nodes/{2.js-DDXiE5Ra.js → 2.js-h7fLpCKT.js} +2 -2
  57. package/build/server/chunks/nodes/{2.js-DDXiE5Ra.js.map → 2.js-h7fLpCKT.js.map} +1 -1
  58. package/build/server/chunks/nodes/3.js-XlL1_Sjt.js +7 -0
  59. package/build/server/chunks/nodes/{3.js-BZ_k58Ty.js.map → 3.js-XlL1_Sjt.js.map} +1 -1
  60. package/build/server/chunks/nodes/{4.js-C4Z183Ra.js → 4.js-BRkm0s7e.js} +2 -2
  61. package/build/server/chunks/nodes/{4.js-C4Z183Ra.js.map → 4.js-BRkm0s7e.js.map} +1 -1
  62. package/dist/core/manifest-entry.d.ts +6 -7
  63. package/dist/runtime/canvas.d.ts +37 -0
  64. package/dist/runtime/canvas.js +71 -0
  65. package/dist/runtime/components/Slice.svelte +12 -23
  66. package/dist/runtime/geometry.d.ts +61 -33
  67. package/dist/runtime/geometry.js +54 -38
  68. package/dist/runtime/index.d.ts +6 -4
  69. package/dist/runtime/index.js +3 -3
  70. package/dist/runtime/kind-handlers.d.ts +5 -30
  71. package/dist/runtime/kind-handlers.js +16 -31
  72. package/dist/runtime/manifest.d.ts +13 -15
  73. package/dist/runtime/manifest.js +23 -23
  74. package/dist/runtime/preload-registry.d.ts +7 -26
  75. package/dist/runtime/preload-registry.js +27 -8
  76. package/dist/runtime/retained-entry.d.ts +48 -0
  77. package/dist/runtime/retained-entry.js +61 -0
  78. package/dist/runtime/slice-source-lifecycle.js +2 -2
  79. package/package.json +1 -1
  80. package/build/client/_app/immutable/chunks/BrWiKjrr.js.br +0 -0
  81. package/build/client/_app/immutable/chunks/BrWiKjrr.js.gz +0 -0
  82. package/build/client/_app/immutable/chunks/CK_6irtk.js +0 -1
  83. package/build/client/_app/immutable/chunks/CK_6irtk.js.br +0 -0
  84. package/build/client/_app/immutable/chunks/CK_6irtk.js.gz +0 -0
  85. package/build/client/_app/immutable/chunks/D68C0q2O.js.br +0 -0
  86. package/build/client/_app/immutable/chunks/D68C0q2O.js.gz +0 -0
  87. package/build/client/_app/immutable/entry/app.C6utCKyq.js.br +0 -0
  88. package/build/client/_app/immutable/entry/app.C6utCKyq.js.gz +0 -0
  89. package/build/client/_app/immutable/entry/start.BaAqfP-b.js +0 -1
  90. package/build/client/_app/immutable/entry/start.BaAqfP-b.js.br +0 -0
  91. package/build/client/_app/immutable/entry/start.BaAqfP-b.js.gz +0 -0
  92. package/build/client/_app/immutable/nodes/0.D3X2aDLe.js.br +0 -0
  93. package/build/client/_app/immutable/nodes/0.D3X2aDLe.js.gz +0 -0
  94. package/build/client/_app/immutable/nodes/1.CoCDztxo.js.br +0 -1
  95. package/build/client/_app/immutable/nodes/1.CoCDztxo.js.gz +0 -0
  96. package/build/client/_app/immutable/nodes/2.D6Bsk2OP.js.br +0 -0
  97. package/build/client/_app/immutable/nodes/2.D6Bsk2OP.js.gz +0 -0
  98. package/build/client/_app/immutable/nodes/3.ZFuSk2Qg.js.br +0 -0
  99. package/build/client/_app/immutable/nodes/3.ZFuSk2Qg.js.gz +0 -0
  100. package/build/client/_app/immutable/nodes/4.CGsGyx14.js.br +0 -0
  101. package/build/server/chunks/nodes/1.js-BokZtd9m.js +0 -7
  102. package/build/server/chunks/nodes/3.js-BZ_k58Ty.js +0 -7
package/README.md CHANGED
@@ -96,15 +96,127 @@ Commit the config, library, raw originals, processed proxies, and generated
96
96
  modules. With the default config, those live in `fundus.config.ts`, `assets/`,
97
97
  `static/fundus/`, and `src/lib/fundus/`.
98
98
 
99
+ ## Canvas and custom renderers
100
+
101
+ For an existing canvas, retain the entries and use the synchronous drawing
102
+ helpers. Both accept a canvas element or its 2D context:
103
+
104
+ ```ts
105
+ import { drawImage, drawSlice, retainEntry } from 'fundus';
106
+ import { main } from '$lib/fundus/main.generated';
107
+
108
+ const [dialogFrame, logo] = await Promise.all([
109
+ retainEntry(main.dialogFrame),
110
+ retainEntry(main.logo)
111
+ ]);
112
+
113
+ // Set up the backing store once; resizing a canvas clears its contents.
114
+ const width = 640;
115
+ const height = 360;
116
+ const dpr = window.devicePixelRatio || 1;
117
+ canvas.width = Math.round(width * dpr);
118
+ canvas.height = Math.round(height * dpr);
119
+ canvas.style.width = `${width}px`;
120
+ canvas.style.height = `${height}px`;
121
+ const ctx = canvas.getContext('2d')!;
122
+ ctx.setTransform(canvas.width / width, 0, 0, canvas.height / height, 0, 0);
123
+
124
+ drawSlice(ctx, dialogFrame, 20, 30, 300, 180);
125
+ drawImage(ctx, logo, 40, 50, 120, 60);
126
+
127
+ // Release when finished, after the last draw or animation frame.
128
+ dialogFrame.release();
129
+ logo.release();
130
+ ```
131
+
132
+ `x`, `y`, `width`, and `height` use the context's current coordinate system;
133
+ with the setup above they are CSS pixels, and `(x, y)` is the top-left corner.
134
+ Fundus never applies an extra canvas DPR multiplier. A slice's asset
135
+ `pixelRatio` determines its fixed logical borders (a 20-source-pixel border
136
+ at @2x becomes 10 logical pixels), without changing the requested box size.
137
+ Images have no asset pixel-ratio metadata and stretch to the explicit target size.
138
+ Slice coordinates describe the element core; baked-in overdraw paints outside it.
139
+
140
+ The helpers preserve existing canvas contents and context state, including
141
+ transforms, clipping, alpha, compositing, and image smoothing. Slice painting
142
+ shares the component's geometry and drawing routine; the caller controls the
143
+ backing store and transforms, so fractional pixel placement can antialias cell
144
+ edges. Use integer backing-pixel boundaries when crisp slice edges matter.
145
+ Non-positive sizes are no-ops; non-finite coordinates throw, and so does
146
+ drawing with a released handle. The `<Slice>` component still loads
147
+ automatically.
148
+
149
+ `Promise.all` rejects on the first failed load while the other handles keep
150
+ their holds. When a failure must not leak, release the fulfilled handles, for
151
+ example after `Promise.allSettled`.
152
+
153
+ ### Retained entries
154
+
155
+ `retainEntry(entry)` takes one hold on the entry's own file and resolves with a
156
+ handle once it is loaded: decoded pixels (`HTMLImageElement | ImageBitmap`) for
157
+ images and slices, a playable URL (an object URL over the fully fetched file)
158
+ for video, chroma-key video, and audio. Loads are shared with manifests and
159
+ other handles, so after `await main.preload()` a handle resolves without
160
+ loading, but it is still a separate hold that needs `release()`. A
161
+ chroma-key video retains only its video; its mask and fallback are entries of
162
+ their own.
163
+
164
+ Keep a handle for as long as anything may read its source: renderers that
165
+ upload lazily or re-upload after a lost WebGL context, and media elements
166
+ playing the object URL. The source object is the same across handles only
167
+ while some holder keeps it loaded; after the last release a new handle loads a
168
+ new one. `release` is idempotent and safe to pass unbound. A `retainEntry`
169
+ promise nobody awaits still takes its hold and leaks it, so a component torn
170
+ down mid-load releases the handle once it arrives:
171
+
172
+ ```svelte
173
+ <script lang="ts">
174
+ import { retainEntry, type RetainedEntry } from 'fundus';
175
+ import { main } from '$lib/fundus/main.generated';
176
+
177
+ let chime = $state.raw<RetainedEntry<typeof main.chime>>();
178
+
179
+ $effect(() => {
180
+ let cancelled = false;
181
+ let handle: RetainedEntry<typeof main.chime> | undefined;
182
+ retainEntry(main.chime).then(
183
+ (retained) => {
184
+ if (cancelled) retained.release();
185
+ else chime = handle = retained;
186
+ },
187
+ // A rejected retain leaves no hold behind.
188
+ (error) => console.error(error)
189
+ );
190
+ return () => {
191
+ cancelled = true;
192
+ handle?.release();
193
+ chime = undefined;
194
+ };
195
+ });
196
+ </script>
197
+ ```
198
+
199
+ For WebGL, Pixi, or other renderers, combine `retainEntry` with
200
+ `sliceGrid(entry, x, y, width, height)`: four source edges (in source pixels)
201
+ and four destination edges per axis for the 3×3 grid, identical to what
202
+ `drawSlice` paints. Paint cell `(c, r)` only when all four spans are positive
203
+ (`sourceX[c + 1] > sourceX[c]`, likewise for `sourceY`, `destX`, and `destY`);
204
+ texture coordinates are the source edges divided by `sourceWidth` and
205
+ `sourceHeight`. Pass device-pixel units for seam-free edges. Always upload with
206
+ `UNPACK_PREMULTIPLY_ALPHA_WEBGL` set to `true`: image elements honor it, and
207
+ slice bitmaps ignore it because they are already premultiplied, so every texture
208
+ ends up premultiplied. Retained elements carry no `crossOrigin`, so proxies
209
+ hosted on another origin cannot be uploaded to WebGL from images or one-slices.
210
+
99
211
  ## Supported assets
100
212
 
101
- | Type | Processing | Runtime |
102
- | ---------------- | ------------------------------------------------ | --------------------------------------- |
103
- | Image | WebP, PNG, AVIF, or JPEG; optional width | `<Image>` |
104
- | Slice | 1-, 3-, or 9-slice; optional stretch compression | `<Slice>` |
105
- | Video | H.264 MP4; optional width cap | `<Video>` |
106
- | Chroma-key video | H.264 MP4 with WebGL2 keying, mask, and fallback | `<ChromaKeyVideo>` |
107
- | Audio | Opus/WebM or AAC/M4A | Your audio engine via `audioSourceOf()` |
213
+ | Type | Processing | Runtime |
214
+ | ---------------- | ------------------------------------------------ | ------------------------------------- |
215
+ | Image | WebP, PNG, AVIF, or JPEG; optional width | `<Image>`, `drawImage()` |
216
+ | Slice | 1-, 3-, or 9-slice; optional stretch compression | `<Slice>`, `drawSlice()` |
217
+ | Video | H.264 MP4; optional width cap | `<Video>` |
218
+ | Chroma-key video | H.264 MP4 with WebGL2 keying, mask, and fallback | `<ChromaKeyVideo>` |
219
+ | Audio | Opus/WebM or AAC/M4A | Your audio engine via `retainEntry()` |
108
220
 
109
221
  Named presets in `fundus.config.ts` keep encoding choices consistent. Each asset
110
222
  currently produces one processed proxy, which is often exactly what an app wants
@@ -0,0 +1 @@
1
+ import{H as e,U as t,V as n,it as r,nt as i,r as a,t as o,tt as s}from"./DLEDBLL1.js";var c=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function ee(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function g(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var _=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&v.delete(b(e)),_(e,t));var v=new Map;function te(e,t){let n=b(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=g(e));let i=r.getAttribute(`data-ttl`);return i&&v.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function y(e,t,n){if(v.size>0){let t=b(e,n),r=v.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);v.delete(t)}}return window.fetch(t,n)}function b(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${ee(...e)}"]`}return n}var ne=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,re=/^\/\((?:[^)]+)\)$/;function x(e){let t=[];return{pattern:e===`/`||re.test(e)?/^\/$/:RegExp(`^${ae(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return se(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return se(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=ne.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return se(e)}).join(``)}).join(``)}/?$`),params:t}}function ie(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ae(e){return e.slice(1).split(`/`).filter(ie)}function oe(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function se(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}var ce=/\[(\[)?(\.\.\.)?(\w+?)(?:=(\w+))?\]\]?/g;function le(e,t){let n=ae(e),r=e!=`/`&&e.endsWith(`/`);return`/`+n.map(n=>n.replace(ce,(n,r,i,a)=>{let o=t[a];if(!o){if(r||i&&o!==void 0)return``;throw Error(`Missing parameter '${a}' in route ${e}`)}if(o.startsWith(`/`)||o.endsWith(`/`))throw Error(`Parameter '${a}' in route ${e} cannot start or end with a slash -- this would cause an invalid route like foo//bar`);return o})).filter(Boolean).join(`/`)+(r?`/`:``)}function ue({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=x(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return oe(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function de(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function fe(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_1ep40k3?.base??``,pe=globalThis.__sveltekit_1ep40k3?.assets??S??``,me=``;function he(...e){if(!e[0].startsWith(`/`))throw Error(`Cannot use \`resolve(...)\` with a non-absolute pathname or route ID (got "${e[0]}"). \`resolve\` is only for internal pathnames and route IDs; external URLs should be used directly.`);return S+me+le(e[0],e[1])}var ge=`1790248285787`,_e=`sveltekit:snapshot`,ve=`sveltekit:scroll`,ye=`sveltekit:states`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},E=location.origin;function be(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function D(){return{x:pageXOffset,y:pageYOffset}}function O(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var xe={...T,"":T.hover};function Se(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ce(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=Se(e)}}function we(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||A(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===E&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function k(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=O(s,`preload-code`)),i===null&&(i=O(s,`preload-data`)),t===null&&(t=O(s,`keepfocus`)),n===null&&(n=O(s,`noscroll`)),a===null&&(a=O(s,`reload`)),o===null&&(o=O(s,`replacestate`)),s=Se(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:xe[r??`off`],preload_data:xe[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Te(e){let t=r(e),n=!0;function i(){n=!0,t.update(e=>e)}function a(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:i,set:a,subscribe:o}}var Ee={v:h};function De(){let{set:e,subscribe:t}=r(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${pe}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==ge;return n&&(e(!0),Ee.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function A(e,t,n){return e.origin!==E||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Oe(e){}var ke=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...ke],[...new Set([...ke])];function Ae(e){return e.filter(e=>e!=null)}function j(e,t){return e+`/`+t}function je(e){return e instanceof c||e instanceof u?e.status:500}function Me(e){return e instanceof u?e.text:`Internal Error`}var M,N,P,Ne=a.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(a.toString()),Pe=`a:`;Ne?(M={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Pe)},N={current:null},P={current:!1}):(M=new class{#e=i({});get data(){return n(this.#e)}set data(e){s(this.#e,e)}#t=i(null);get form(){return n(this.#t)}set form(e){s(this.#t,e)}#n=i(null);get error(){return n(this.#n)}set error(e){s(this.#n,e)}#r=i({});get params(){return n(this.#r)}set params(e){s(this.#r,e)}#i=i({id:null});get route(){return n(this.#i)}set route(e){s(this.#i,e)}#a=i({});get state(){return n(this.#a)}set state(e){s(this.#a,e)}#o=i(-1);get status(){return n(this.#o)}set status(e){s(this.#o,e)}#s=i(new URL(Pe));get url(){return n(this.#s)}set url(e){s(this.#s,e)}},N=new class{#e=i(null);get current(){return n(this.#e)}set current(e){s(this.#e,e)}},P=new class{#e=i(!1);get current(){return n(this.#e)}set current(e){s(this.#e,e)}},Ee.v=()=>P.current=!0);function Fe(e){Object.assign(M,e)}var{onMount:Ie,tick:Le}=o,Re=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),F=null,I=de(`sveltekit:scroll`)??{},L=de(`sveltekit:snapshot`)??{},R={url:Te({}),page:Te({}),navigating:r(null),updated:De()};function ze(e){I[e]=D()}function Be(e,t){let n=e+1;for(;I[n];)delete I[n],n+=1;for(n=t+1;L[n];)delete L[n],n+=1}function z(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function Ve(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var He,Ue,We,B,Ge,V,Ke={},qe={},Je=[],Ye=[],H=null;function Xe(){H?.fork?.then(e=>e?.discard()),H=null,Q={element:void 0,href:void 0}}var Ze=new Map,Qe=new Set,$e=new Set,U=new Set,W={branch:[],error:null,url:null,nav:null},et=!1,tt=!1,nt=!0,G=!1,K=!1,rt=!1,it=!1,at,q,J,Y,ot=new Set,st=new Map,ct=new Map;async function lt(e,t,n){if(globalThis.__sveltekit_1ep40k3.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_1ep40k3.data;for(let t in e)Ke[t]=e[t];for(let e in n)Ke[e]=n[e];for(let e in r)Ke[e]=r[e];for(let e in t)qe[e]=t[e]}document.URL!==location.href&&(location.href=location.href),V=e,await e.hooks.init?.(),He=ue(e),B=document.documentElement,Ge=t,Ue=e.nodes[0],We=e.nodes[1],Ue(),We(),q=history.state?.[C],J=history.state?.[w],q||(q=J=Date.now(),history.replaceState({...history.state,[C]:q,[w]:J},``));let r=I[q];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await zt(Ge,n)):(await Z({type:`enter`,url:be(V.hash?Gt(new URL(location.href)):location.href),replace_state:!0}),i()),Rt()}function ut(){Je.length=0,it=!1}function dt(e){Ye.some(e=>e?.snapshot)&&(L[e]=Ye.map(e=>e?.snapshot?.capture()))}function ft(e){L[e]?.forEach((e,t)=>{Ye[t]?.snapshot?.restore(e)})}function pt(){ze(q),fe(ve,I),dt(J),fe(_e,L)}async function mt(e,n,r,i){let a,o;n.invalidateAll&&Xe(),await Z({type:`goto`,url:be(e),keepfocus:n.keepFocus,noscroll:n.noScroll,replace_state:n.replaceState,state:n.state,redirect_count:r,nav_token:i,accept:()=>{if(n.invalidateAll){it=!0,a=new Set;for(let[e,t]of st)for(let[n,r]of t)r.resource?.reset(),a.add(j(e,n));o=new Set;for(let[e,t]of ct)for(let n of t.keys())o.add(j(e,n))}n.invalidate&&n.invalidate.forEach(Lt)}}),n.invalidateAll&&t().then(t).then(()=>{for(let[e,t]of st)for(let[n,{resource:r}]of t)a?.has(j(e,n))&&r.start();for(let[e,t]of ct)for(let[n,{resource:r}]of t)o?.has(j(e,n))&&r.reconnect()})}async function ht(e){if(e.id!==H?.id){Xe();let t={};ot.add(t),H={id:e.id,token:t,promise:Tt({...e,preload:t}).then(e=>(ot.delete(t),e.type===`loaded`&&e.state.error&&Xe(),e)),fork:null}}return H.promise}async function gt(e){let t=(await X(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function _t(e,t,n){let r={params:W.params,route:{id:W.route?.id??null},url:new URL(location.href)};if(W={...e.state,nav:r},Fe(e.props.page),at=new V.root({target:t,props:{...e.props,stores:R,components:Ye},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:I[q]??D()},willUnload:!1,type:`enter`,complete:Promise.resolve()};U.forEach(t=>t(e))}ft(J),tt=!0}async function vt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Ae(n).map(e=>e.node.component),page:Wt(M)}};s!==void 0&&(l.props.form=s);let u={},f=!M,p=0;for(let e=0;e<Math.max(n.length,W.branch.length);e+=1){let t=n[e],r=W.branch[e];t?.data!==r?.data&&(f=!0),t&&(u={...u,...t.data},f&&(l.props[`data_${p}`]=u),p+=1)}return(!W.url||e.href!==W.url.href||W.error!==a||s!==void 0&&s!==M.form||f)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:f?u:M.data}),l}async function yt({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},s=await e();return{node:s,loader:e,server:a,universal:s.universal?.load?{type:`data`,data:null,uses:o}:null,data:a?.data??null,slash:s.universal?.trailingSlash??a?.slash}}function bt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:tt?y(r,i.href,t):te(r,t)}}function xt(e,t,n,r,i,a){if(it)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==W.params[e])return!0;for(let e of i.dependencies)if(Je.some(t=>t(new URL(e))))return!0;return!1}function St(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function Ct(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function wt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Wt(M),constructors:[]}}}async function Tt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(H?.id===e)return ot.delete(H.token),H.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=W.url?e!==At(W.url):!1,p=W.route?i.id!==W.route.id:!1,m=Ct(W.url,n),ee=!1,g=d.map(async(e,t)=>{if(!e)return;let a=W.branch[t];return e[1]===a?.loader&&!xt(ee,p,f,m,a.universal?.uses,r)?a:(ee=!0,yt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await g[n])?.data);return e},server_data_node:St(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of g)e.catch(h);let _=[];for(let e=0;e<d.length;e+=1)if(d[e])try{_.push(await g[e])}catch(t){if(t instanceof l)return{type:`redirect`,location:t.location};if(a&&ot.has(a))return wt({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=je(t),u;if(t instanceof c)u=t.body;else{if(await R.updated.check())return await Ve(),await z(n);u=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await Et(e,_,o);return d?vt({url:n,params:r,branch:_.slice(0,d.idx).concat(d.node),errors:o,status:s,error:u,route:i}):await Mt(n,{id:i.id},u,s)}else _.push(void 0);return vt({url:n,params:r,branch:_,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function Et(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Dt({status:e,error:t,url:n,route:r}){let i={};try{return vt({url:n,params:i,branch:[await yt({loader:Ue,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:St(null)}),{node:await We(),loader:We,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof l){await mt(new URL(t.location,location.href),{},0);return}let a=await V.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Ot(e){let t=e.href;if(Ze.has(t))return Ze.get(t);let n;try{let r=(async()=>{let t=await V.hooks.reroute({url:new URL(e),fetch:async(t,n)=>bt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);V.hash?n.hash=t:n.pathname=t,t=n}return t})();Ze.set(t,r),n=await r}catch{Ze.delete(t);return}return n}async function X(e,t){if(e&&!A(e,S,V.hash)){let n=await Ot(e);if(!n)return;let r=kt(n);for(let n of He){let i=n.exec(r);if(i)return{id:At(e),invalidating:t,route:n,params:p(i),url:e}}}}function kt(e){return f(V.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function At(e){return(V.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function jt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Ut(W,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return G||Qe.forEach(e=>e(c)),o?null:s}async function Z({type:n,url:r,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:d={},accept:f=h,block:p=h,event:m}){let ee=Y;Y=d;let g=await X(r,!1),_=n===`enter`?Ut(W,g,r,n):jt({url:r,type:n,delta:i?.delta,intent:g,scroll:i?.scroll,event:m});if(!_){p(),Y===d&&(Y=ee);return}let v=q,te=J;f(),G=!0,tt&&_.navigation.type!==`enter`&&R.navigating.set(N.current=_.navigation);let y=g&&await Tt(g);if(!y){if(A(r,S,V.hash))return await z(r,s);y=await Mt(r,{id:null},await $(new u(404,`Not Found`,`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404,s)}if(r=g?.url||r,Y!==d){_.reject(Error(`navigation aborted`));return}if(!y)return;if(y.type===`redirect`){if(l<20){await Z({type:n,url:new URL(y.location,r),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:d}),_.fulfil(void 0);return}if(y=await Dt({status:500,error:await $(Error(`Redirect loop`),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}}),!y)return}else if(y.props.page.status>=400&&await R.updated.check())return await Ve(),await z(r,s);if(ut(),ze(v),dt(te),y.props.page.url.pathname!==r.pathname&&(r.pathname=y.props.page.url.pathname),c=i?i.state:c,!i){let e=+!s,t={[C]:q+=e,[w]:J+=e,[ye]:c};(s?history.replaceState:history.pushState).call(history,t,``,r),s||Be(q,J)}let b=g&&H?.id===g.id?H.fork:null;H?.fork&&!b?Xe():(H=null,Q={element:void 0,href:void 0}),y.props.page.state=c;let ne;if(tt){let t=(await Promise.all(Array.from($e,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(t.length>0){function e(){t.forEach(e=>{U.delete(e)})}t.push(e),t.forEach(e=>{U.add(e)})}let n=_.navigation.to;W={...y.state,nav:{params:n.params,route:n.route,url:n.url}},y.props.page&&(y.props.page.url=r),!a&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let i=b&&await b;i?ne=i.commit():(F=null,at.$set(y.props),F&&Object.assign(y.props.page,F),Fe(y.props.page),ne=e?.()),rt=!0}else await _t(y,Ge,!1);let{activeElement:re}=document;if(await ne,await t(),await t(),Y!==d){_.reject(Error(`navigation aborted`));return}y.props.page&&F&&Object.assign(y.props.page,F);let x=null;if(nt){let e=i?i.scroll:o?D():null;e?scrollTo(e.x,e.y):(x=r.hash&&document.getElementById(Kt(r)))?x.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==re&&document.activeElement!==document.body;!a&&!ie&&Ht(r,!x),nt=!0,G=!1,_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=D()),U.forEach(e=>e(_.navigation)),n===`popstate`&&ft(J),R.navigating.set(N.current=null)}async function Mt(e,t,n,r,i){return e.origin===E&&e.pathname===location.pathname&&!et?await Dt({status:r,error:n,url:e,route:t}):await z(e,i)}var Q={element:void 0,href:void 0};function Nt(){let e,t;B.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,T.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],T.tap)}B.addEventListener(`mousedown`,n),B.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(gt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=Ce(e,B),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=we(r,S,V.hash);if(o||s)return;let c=k(r),l=a&&At(W.url)===At(a);if(!(c.reload||l))if(n<=c.preload_data){Q={element:r,href:r.href},t=T.tap;let e=await X(a,!1);if(!e)return;ht(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,gt(a))}function a(){r.disconnect();for(let e of B.querySelectorAll(`a`)){let{url:t,external:n,download:i}=we(e,S,V.hash);if(n||i)continue;let a=k(e);a.reload||(a.preload_code===T.viewport&&r.observe(e),a.preload_code===T.eager&&gt(t))}}U.add(a),a()}function $(e,t){if(e instanceof c)return e.body;let n=je(e),r=Me(e);return V.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Pt(e,t){Ie(()=>(e.add(t),()=>{e.delete(t)}))}function Ft(e){Pt(U,e)}function It(e,t={}){return e=new URL(be(e)),e.origin===E?mt(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function Lt(e){if(typeof e==`function`)Je.push(e);else{let{href:t}=new URL(e,location.href);Je.push(e=>e.href===t)}}function Rt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(pt(),!G){let e=Ut(W,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};Qe.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&pt()}),navigator.connection?.saveData||Nt(),B.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=Ce(t.composedPath()[0],B);if(!n)return;let{url:r,external:i,target:a,download:o}=we(n,S,V.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=k(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(V.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){jt({url:r,type:`link`,event:t})?G=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=W.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(K=!0,ze(q),e(r),!s.replace_state)return;K=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),B.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(A(r,S,!1))return;let i=e.target,a=k(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Vt)if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(Y={},n===q)return;let r=I[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=W.url?m(location)===m(W.url):!1;if(o===J&&(rt||s)){i!==M.state&&(M.state=i),e(a),I[q]=D(),r&&scrollTo(r.x,r.y),q=n;return}let c=n-q;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{q=n,J=o},block:()=>{history.go(-c)},nav_token:Y,event:t})}else K||(e(new URL(location.href)),V.hash&&location.reload())}),addEventListener(`hashchange`,()=>{K&&(K=!1,history.replaceState({...history.state,[C]:++q,[w]:J},``,location.href))});for(let e of document.querySelectorAll(`link`))Re.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&R.navigating.set(N.current=null)});function e(e){W.url=M.url=e,R.page.set(Wt(M)),R.page.notify()}}async function zt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){et=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await X(u,!1)||{}),d=He.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Bt(r.uses)),yt({loader:V.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:St(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await vt({url:u,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof l)return await z(new URL(t.location,location.href));f=await Dt({status:je(t),error:await $(t,{url:u,params:i,route:a}),url:u,route:a}),e.textContent=``,p=!1}f&&(f.props.page&&(f.props.page.state={}),await _t(f,e,p))}function Bt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var Vt=!1;function Ht(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=Kt(e);if(n&&document.getElementById(n)){let{x:r,y:i}=D();setTimeout(()=>{let a=history.state;Vt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Vt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Ut(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:D()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Wt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Gt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Kt(e){let t;if(V.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{N as a,Oe as c,R as i,he as l,It as n,M as o,lt as r,P as s,Ft as t};
@@ -1 +1 @@
1
- import"./DLEDBLL1.js";import{i as e,o as t}from"./CK_6irtk.js";var n={get data(){return t.data},get error(){return t.error},get form(){return t.form},get params(){return t.params},get route(){return t.route},get state(){return t.state},get status(){return t.status},get url(){return t.url}};e.updated.check;var r=n;export{r as t};
1
+ import"./DLEDBLL1.js";import{i as e,o as t}from"./CCIxsMRK.js";var n={get data(){return t.data},get error(){return t.error},get form(){return t.form},get params(){return t.params},get route(){return t.route},get state(){return t.state},get status(){return t.status},get url(){return t.url}};e.updated.check;var r=n;export{r as t};