pngwn commited on
Commit
c81c116
1 Parent(s): 2d41c90
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +9 -0
  2. .npmrc +1 -0
  3. README.md +31 -19
  4. build/_app/assets/fira-mono-all-400-normal-0d19eb5d.woff +0 -0
  5. build/_app/assets/fira-mono-cyrillic-400-normal-046b609f.woff2 +0 -0
  6. build/_app/assets/fira-mono-cyrillic-ext-400-normal-b3140dd3.woff2 +0 -0
  7. build/_app/assets/fira-mono-greek-400-normal-1f8b3a07.woff2 +0 -0
  8. build/_app/assets/fira-mono-greek-ext-400-normal-8659ae46.woff2 +0 -0
  9. build/_app/assets/fira-mono-latin-400-normal-a2f9dbe8.woff2 +0 -0
  10. build/_app/assets/fira-mono-latin-ext-400-normal-b6331a25.woff2 +0 -0
  11. build/_app/assets/pages/__layout.svelte-a7861b78.css +1 -0
  12. build/_app/assets/pages/about.svelte-bf4528fa.css +1 -0
  13. build/_app/assets/pages/index.svelte-c63fe1c6.css +1 -0
  14. build/_app/assets/pages/todos/index.svelte-784042c1.css +1 -0
  15. build/_app/assets/start-61d1577b.css +1 -0
  16. build/_app/assets/svelte-logo-87df40b8.svg +1 -0
  17. build/_app/chunks/vendor-d68c61c2.js +7 -0
  18. build/_app/error.svelte-97b7e85d.js +1 -0
  19. build/_app/manifest.json +90 -0
  20. build/_app/pages/__layout.svelte-2dd96704.js +1 -0
  21. build/_app/pages/about.svelte-a7982a52.js +9 -0
  22. build/_app/pages/index.svelte-934bb81d.js +5 -0
  23. build/_app/pages/todos/index.svelte-82693d56.js +1 -0
  24. build/_app/start-39c66b50.js +1 -0
  25. build/about/index.html +59 -0
  26. build/favicon.png +0 -0
  27. build/index.html +81 -0
  28. build/robots.txt +3 -0
  29. build/svelte-welcome.png +0 -0
  30. build/svelte-welcome.webp +0 -0
  31. build/todos.json +1 -0
  32. build/todos/index.html +71 -0
  33. jsconfig.json +10 -0
  34. package.json +22 -0
  35. pnpm-lock.yaml +472 -0
  36. src/app.css +107 -0
  37. src/app.html +13 -0
  38. src/global.d.ts +1 -0
  39. src/hooks.js +26 -0
  40. src/lib/Counter.svelte +97 -0
  41. src/lib/form.js +49 -0
  42. src/lib/header/Header.svelte +124 -0
  43. src/lib/header/svelte-logo.svg +1 -0
  44. src/routes/__layout.svelte +45 -0
  45. src/routes/about.svelte +50 -0
  46. src/routes/index.svelte +59 -0
  47. src/routes/todos/[uid].json.js +14 -0
  48. src/routes/todos/_api.js +45 -0
  49. src/routes/todos/index.json.js +28 -0
  50. src/routes/todos/index.svelte +220 -0
.gitignore ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ .DS_Store
2
+ node_modules
3
+ /.svelte-kit
4
+ /package
5
+ .env
6
+ .env.*
7
+ !.env.example
8
+ .vercel
9
+ .output
.npmrc ADDED
@@ -0,0 +1 @@
 
 
1
+ engine-strict=true
README.md CHANGED
@@ -5,32 +5,44 @@ colorFrom: purple
5
  colorTo: yellow
6
  sdk: static
7
  pinned: false
 
8
  ---
9
 
10
- # Configuration
11
 
12
- `title`: _string_
13
- Display title for the Space
14
 
15
- `emoji`: _string_
16
- Space emoji (emoji-only character allowed)
17
 
18
- `colorFrom`: _string_
19
- Color for Thumbnail gradient (red, yellow, green, blue, indigo, purple, pink, gray)
20
 
21
- `colorTo`: _string_
22
- Color for Thumbnail gradient (red, yellow, green, blue, indigo, purple, pink, gray)
 
23
 
24
- `sdk`: _string_
25
- Can be either `gradio`, `streamlit`, or `static`
 
26
 
27
- `sdk_version` : _string_
28
- Only applicable for `streamlit` SDK.
29
- See [doc](https://hf.co/docs/hub/spaces) for more info on supported versions.
30
 
31
- `app_file`: _string_
32
- Path to your main application file (which contains either `gradio` or `streamlit` Python code, or `static` html code).
33
- Path is relative to the root of the repository.
34
 
35
- `pinned`: _boolean_
36
- Whether the Space stays on top of your list.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  colorTo: yellow
6
  sdk: static
7
  pinned: false
8
+ app_file: build/index.html
9
  ---
10
 
11
+ # create-svelte
12
 
13
+ Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte);
 
14
 
15
+ ## Creating a project
 
16
 
17
+ If you're seeing this, you've probably already done this step. Congrats!
 
18
 
19
+ ```bash
20
+ # create a new project in the current directory
21
+ npm init svelte@next
22
 
23
+ # create a new project in my-app
24
+ npm init svelte@next my-app
25
+ ```
26
 
27
+ > Note: the `@next` is temporary
 
 
28
 
29
+ ## Developing
 
 
30
 
31
+ Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
32
+
33
+ ```bash
34
+ npm run dev
35
+
36
+ # or start the server and open the app in a new browser tab
37
+ npm run dev -- --open
38
+ ```
39
+
40
+ ## Building
41
+
42
+ Before creating a production version of your app, install an [adapter](https://kit.svelte.dev/docs#adapters) for your target environment. Then:
43
+
44
+ ```bash
45
+ npm run build
46
+ ```
47
+
48
+ > You can preview the built app with `npm run preview`, regardless of whether you installed an adapter. This should _not_ be used to serve your app in production.
build/_app/assets/fira-mono-all-400-normal-0d19eb5d.woff ADDED
Binary file (77.4 kB). View file
 
build/_app/assets/fira-mono-cyrillic-400-normal-046b609f.woff2 ADDED
Binary file (9.3 kB). View file
 
build/_app/assets/fira-mono-cyrillic-ext-400-normal-b3140dd3.woff2 ADDED
Binary file (16.5 kB). View file
 
build/_app/assets/fira-mono-greek-400-normal-1f8b3a07.woff2 ADDED
Binary file (10.7 kB). View file
 
build/_app/assets/fira-mono-greek-ext-400-normal-8659ae46.woff2 ADDED
Binary file (8.04 kB). View file
 
build/_app/assets/fira-mono-latin-400-normal-a2f9dbe8.woff2 ADDED
Binary file (16.8 kB). View file
 
build/_app/assets/fira-mono-latin-ext-400-normal-b6331a25.woff2 ADDED
Binary file (12.1 kB). View file
 
build/_app/assets/pages/__layout.svelte-a7861b78.css ADDED
@@ -0,0 +1 @@
 
 
1
+ header.svelte-t2wq17.svelte-t2wq17{display:flex;justify-content:space-between}.corner.svelte-t2wq17.svelte-t2wq17{width:3em;height:3em}.corner.svelte-t2wq17 a.svelte-t2wq17{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.corner.svelte-t2wq17 img.svelte-t2wq17{width:2em;height:2em;object-fit:contain}nav.svelte-t2wq17.svelte-t2wq17{display:flex;justify-content:center;--background:rgba(255, 255, 255, .7)}svg.svelte-t2wq17.svelte-t2wq17{width:2em;height:3em;display:block}path.svelte-t2wq17.svelte-t2wq17{fill:var(--background)}ul.svelte-t2wq17.svelte-t2wq17{position:relative;padding:0;margin:0;height:3em;display:flex;justify-content:center;align-items:center;list-style:none;background:var(--background);background-size:contain}li.svelte-t2wq17.svelte-t2wq17{position:relative;height:100%}li.active.svelte-t2wq17.svelte-t2wq17:before{--size:6px;content:"";width:0;height:0;position:absolute;top:0;left:calc(50% - var(--size));border:var(--size) solid transparent;border-top:var(--size) solid var(--accent-color)}nav.svelte-t2wq17 a.svelte-t2wq17{display:flex;height:100%;align-items:center;padding:0 1em;color:var(--heading-color);font-weight:700;font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;text-decoration:none;transition:color .2s linear}a.svelte-t2wq17.svelte-t2wq17:hover{color:var(--accent-color)}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_app/assets/fira-mono-cyrillic-ext-400-normal-b3140dd3.woff2) format("woff2"),url(/_app/assets/fira-mono-all-400-normal-0d19eb5d.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_app/assets/fira-mono-cyrillic-400-normal-046b609f.woff2) format("woff2"),url(/_app/assets/fira-mono-all-400-normal-0d19eb5d.woff) format("woff");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_app/assets/fira-mono-greek-ext-400-normal-8659ae46.woff2) format("woff2"),url(/_app/assets/fira-mono-all-400-normal-0d19eb5d.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_app/assets/fira-mono-greek-400-normal-1f8b3a07.woff2) format("woff2"),url(/_app/assets/fira-mono-all-400-normal-0d19eb5d.woff) format("woff");unicode-range:U+0370-03FF}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_app/assets/fira-mono-latin-ext-400-normal-b6331a25.woff2) format("woff2"),url(/_app/assets/fira-mono-all-400-normal-0d19eb5d.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fira Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_app/assets/fira-mono-latin-400-normal-a2f9dbe8.woff2) format("woff2"),url(/_app/assets/fira-mono-all-400-normal-0d19eb5d.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{font-family:Arial,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;--font-mono: "Fira Mono", monospace;--pure-white: #ffffff;--primary-color: #b9c6d2;--secondary-color: #d0dde9;--tertiary-color: #edf0f8;--accent-color: #ff3e00;--heading-color: rgba(0, 0, 0, .7);--text-color: #444444;--background-without-opacity: rgba(255, 255, 255, .7);--column-width: 42rem;--column-margin-top: 4rem}body{min-height:100vh;margin:0;background-color:var(--primary-color);background:linear-gradient(180deg,var(--primary-color) 0%,var(--secondary-color) 10.45%,var(--tertiary-color) 41.35%)}body:before{content:"";width:80vw;height:100vh;position:absolute;top:0;left:10vw;z-index:-1;background:radial-gradient(50% 50% at 50% 50%,var(--pure-white) 0%,rgba(255,255,255,0) 100%);opacity:.05}#svelte{min-height:100vh;display:flex;flex-direction:column}h1,h2,p{font-weight:400;color:var(--heading-color)}p{line-height:1.5}a{color:var(--accent-color);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:2rem;text-align:center}h2{font-size:1rem}pre{font-size:16px;font-family:var(--font-mono);background-color:#ffffff73;border-radius:3px;box-shadow:2px 2px 6px #ffffff40;padding:.5em;overflow-x:auto;color:var(--text-color)}input,button{font-size:inherit;font-family:inherit}button:focus:not(:focus-visible){outline:none}@media (min-width: 720px){h1{font-size:2.4rem}}main.svelte-1izrdc8.svelte-1izrdc8{flex:1;display:flex;flex-direction:column;padding:1rem;width:100%;max-width:1024px;margin:0 auto;box-sizing:border-box}footer.svelte-1izrdc8.svelte-1izrdc8{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:40px}footer.svelte-1izrdc8 a.svelte-1izrdc8{font-weight:700}@media (min-width: 480px){footer.svelte-1izrdc8.svelte-1izrdc8{padding:40px 0}}
build/_app/assets/pages/about.svelte-bf4528fa.css ADDED
@@ -0,0 +1 @@
 
 
1
+ .content.svelte-cf77e8{width:100%;max-width:var(--column-width);margin:var(--column-margin-top) auto 0 auto}
build/_app/assets/pages/index.svelte-c63fe1c6.css ADDED
@@ -0,0 +1 @@
 
 
1
+ .counter.svelte-139m1ow.svelte-139m1ow{display:flex;border-top:1px solid rgba(0,0,0,.1);border-bottom:1px solid rgba(0,0,0,.1);margin:1rem 0}.counter.svelte-139m1ow button.svelte-139m1ow{width:2em;padding:0;display:flex;align-items:center;justify-content:center;border:0;background-color:transparent;color:var(--text-color);font-size:2rem}.counter.svelte-139m1ow button.svelte-139m1ow:hover{background-color:var(--secondary-color)}svg.svelte-139m1ow.svelte-139m1ow{width:25%;height:25%}path.svelte-139m1ow.svelte-139m1ow{vector-effect:non-scaling-stroke;stroke-width:2px;stroke:var(--text-color)}.counter-viewport.svelte-139m1ow.svelte-139m1ow{width:8em;height:4em;overflow:hidden;text-align:center;position:relative}.counter-viewport.svelte-139m1ow strong.svelte-139m1ow{position:absolute;display:flex;width:100%;height:100%;font-weight:400;color:var(--accent-color);font-size:4rem;align-items:center;justify-content:center}.counter-digits.svelte-139m1ow.svelte-139m1ow{position:absolute;width:100%;height:100%}section.svelte-mjk9ig.svelte-mjk9ig{display:flex;flex-direction:column;justify-content:center;align-items:center;flex:1}h1.svelte-mjk9ig.svelte-mjk9ig{width:100%}.welcome.svelte-mjk9ig.svelte-mjk9ig{position:relative;width:100%;height:0;padding:0 0 24.16992%}.welcome.svelte-mjk9ig img.svelte-mjk9ig{position:absolute;width:100%;height:100%;top:0;display:block}
build/_app/assets/pages/todos/index.svelte-784042c1.css ADDED
@@ -0,0 +1 @@
 
 
1
+ .todos.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd{width:100%;max-width:var(--column-width);margin:var(--column-margin-top) auto 0 auto;line-height:1}.new.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd{margin:0 0 .5rem}input.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd{border:1px solid transparent}input.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd:focus-visible{box-shadow:inset 1px 1px 6px #0000001a;border:1px solid #ff3e00!important;outline:none}.new.svelte-dmxqmd input.svelte-dmxqmd.svelte-dmxqmd{font-size:28px;width:100%;padding:.5em 1em .3em;box-sizing:border-box;background:rgba(255,255,255,.05);border-radius:8px;text-align:center}.todo.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd{display:grid;grid-template-columns:2rem 1fr 2rem;grid-gap:.5rem;align-items:center;margin:0 0 .5rem;padding:.5rem;background-color:#fff;border-radius:8px;filter:drop-shadow(2px 4px 6px rgba(0,0,0,.1));transform:translate(-1px,-1px);transition:filter .2s,transform .2s}.done.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd{transform:none;opacity:.4;filter:drop-shadow(0px 0px 1px rgba(0,0,0,.1))}form.text.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd{position:relative;display:flex;align-items:center;flex:1}.todo.svelte-dmxqmd input.svelte-dmxqmd.svelte-dmxqmd{flex:1;padding:.5em 2em .5em .8em;border-radius:3px}.todo.svelte-dmxqmd button.svelte-dmxqmd.svelte-dmxqmd{width:2em;height:2em;border:none;background-color:transparent;background-position:50% 50%;background-repeat:no-repeat}button.toggle.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd{border:1px solid rgba(0,0,0,.2);border-radius:50%;box-sizing:border-box;background-size:1em auto}.done.svelte-dmxqmd .toggle.svelte-dmxqmd.svelte-dmxqmd{background-image:url("data:image/svg+xml,%3Csvg width='22' height='16' viewBox='0 0 22 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.5 1.5L7.4375 14.5L1.5 8.5909' stroke='%23676778' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.delete.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd{background-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.5 5V22H19.5V5H4.5Z' fill='%23676778' stroke='%23676778' stroke-width='1.5' stroke-linejoin='round'/%3E%3Cpath d='M10 10V16.5' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M14 10V16.5' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M2 5H22' stroke='%23676778' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M8 5L9.6445 2H14.3885L16 5H8Z' fill='%23676778' stroke='%23676778' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E%0A");opacity:.2}.delete.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd:hover,.delete.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd:focus{transition:opacity .2s;opacity:1}.save.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd{position:absolute;right:0;opacity:0;background-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.5 2H3.5C2.67158 2 2 2.67157 2 3.5V20.5C2 21.3284 2.67158 22 3.5 22H20.5C21.3284 22 22 21.3284 22 20.5V3.5C22 2.67157 21.3284 2 20.5 2Z' fill='%23676778' stroke='%23676778' stroke-width='1.5' stroke-linejoin='round'/%3E%3Cpath d='M17 2V11H7.5V2H17Z' fill='white' stroke='white' stroke-width='1.5' stroke-linejoin='round'/%3E%3Cpath d='M13.5 5.5V7.5' stroke='%23676778' stroke-width='1.5' stroke-linecap='round'/%3E%3Cpath d='M5.99844 2H18.4992' stroke='%23676778' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E%0A")}.todo.svelte-dmxqmd input.svelte-dmxqmd:focus+.save.svelte-dmxqmd,.save.svelte-dmxqmd.svelte-dmxqmd.svelte-dmxqmd:focus{transition:opacity .2s;opacity:1}
build/_app/assets/start-61d1577b.css ADDED
@@ -0,0 +1 @@
 
 
1
+ #svelte-announcer.svelte-1j55zn5{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}
build/_app/assets/svelte-logo-87df40b8.svg ADDED
build/_app/chunks/vendor-d68c61c2.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ function x(){}const tt=t=>t;function bt(t,e){for(const n in e)t[n]=e[n];return t}function et(t){return t()}function nt(){return Object.create(null)}function C(t){t.forEach(et)}function B(t){return typeof t=="function"}function wt(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}let D;function Ut(t,e){return D||(D=document.createElement("a")),D.href=e,t===D.href}function xt(t){return Object.keys(t).length===0}function $t(t,...e){if(t==null)return x;const n=t.subscribe(...e);return n.unsubscribe?()=>n.unsubscribe():n}function Vt(t,e,n){t.$$.on_destroy.push($t(e,n))}function Xt(t,e,n,r){if(t){const i=st(t,e,n,r);return t[0](i)}}function st(t,e,n,r){return t[1]&&r?bt(n.ctx.slice(),t[1](r(e))):n.ctx}function Yt(t,e,n,r){if(t[2]&&r){const i=t[2](r(n));if(e.dirty===void 0)return i;if(typeof i=="object"){const l=[],s=Math.max(e.dirty.length,i.length);for(let c=0;c<s;c+=1)l[c]=e.dirty[c]|i[c];return l}return e.dirty|i}return e.dirty}function Zt(t,e,n,r,i,l){if(i){const s=st(e,n,r,l);t.p(s,i)}}function te(t){if(t.ctx.length>32){const e=[],n=t.ctx.length/32;for(let r=0;r<n;r++)e[r]=-1;return e}return-1}function ee(t){return t&&B(t.destroy)?t.destroy:x}const it=typeof window!="undefined";let P=it?()=>window.performance.now():()=>Date.now(),G=it?t=>requestAnimationFrame(t):x;const A=new Set;function rt(t){A.forEach(e=>{e.c(t)||(A.delete(e),e.f())}),A.size!==0&&G(rt)}function J(t){let e;return A.size===0&&G(rt),{promise:new Promise(n=>{A.add(e={c:t,f:n})}),abort(){A.delete(e)}}}let z=!1;function kt(){z=!0}function Et(){z=!1}function St(t,e,n,r){for(;t<e;){const i=t+(e-t>>1);n(i)<=r?t=i+1:e=i}return t}function Ct(t){if(t.hydrate_init)return;t.hydrate_init=!0;let e=t.childNodes;if(t.nodeName==="HEAD"){const o=[];for(let a=0;a<e.length;a++){const _=e[a];_.claim_order!==void 0&&o.push(_)}e=o}const n=new Int32Array(e.length+1),r=new Int32Array(e.length);n[0]=-1;let i=0;for(let o=0;o<e.length;o++){const a=e[o].claim_order,_=(i>0&&e[n[i]].claim_order<=a?i+1:St(1,i,f=>e[n[f]].claim_order,a))-1;r[o]=n[_]+1;const u=_+1;n[u]=o,i=Math.max(u,i)}const l=[],s=[];let c=e.length-1;for(let o=n[i]+1;o!=0;o=r[o-1]){for(l.push(e[o-1]);c>=o;c--)s.push(e[c]);c--}for(;c>=0;c--)s.push(e[c]);l.reverse(),s.sort((o,a)=>o.claim_order-a.claim_order);for(let o=0,a=0;o<s.length;o++){for(;a<l.length&&s[o].claim_order>=l[a].claim_order;)a++;const _=a<l.length?l[a]:null;t.insertBefore(s[o],_)}}function At(t,e){t.appendChild(e)}function ot(t){if(!t)return document;const e=t.getRootNode?t.getRootNode():t.ownerDocument;return e&&e.host?e:t.ownerDocument}function Mt(t){const e=ct("style");return jt(ot(t),e),e}function jt(t,e){At(t.head||t,e)}function Nt(t,e){if(z){for(Ct(t),(t.actual_end_child===void 0||t.actual_end_child!==null&&t.actual_end_child.parentElement!==t)&&(t.actual_end_child=t.firstChild);t.actual_end_child!==null&&t.actual_end_child.claim_order===void 0;)t.actual_end_child=t.actual_end_child.nextSibling;e!==t.actual_end_child?(e.claim_order!==void 0||e.parentNode!==t)&&t.insertBefore(e,t.actual_end_child):t.actual_end_child=e.nextSibling}else(e.parentNode!==t||e.nextSibling!==null)&&t.appendChild(e)}function ne(t,e,n){z&&!n?Nt(t,e):(e.parentNode!==t||e.nextSibling!=n)&&t.insertBefore(e,n||null)}function vt(t){t.parentNode.removeChild(t)}function ct(t){return document.createElement(t)}function qt(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function K(t){return document.createTextNode(t)}function se(){return K(" ")}function ie(){return K("")}function re(t,e,n,r){return t.addEventListener(e,n,r),()=>t.removeEventListener(e,n,r)}function oe(t,e,n){n==null?t.removeAttribute(e):t.getAttribute(e)!==n&&t.setAttribute(e,n)}function Rt(t){return Array.from(t.childNodes)}function Ot(t){t.claim_info===void 0&&(t.claim_info={last_index:0,total_claimed:0})}function lt(t,e,n,r,i=!1){Ot(t);const l=(()=>{for(let s=t.claim_info.last_index;s<t.length;s++){const c=t[s];if(e(c)){const o=n(c);return o===void 0?t.splice(s,1):t[s]=o,i||(t.claim_info.last_index=s),c}}for(let s=t.claim_info.last_index-1;s>=0;s--){const c=t[s];if(e(c)){const o=n(c);return o===void 0?t.splice(s,1):t[s]=o,i?o===void 0&&t.claim_info.last_index--:t.claim_info.last_index=s,c}}return r()})();return l.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,l}function at(t,e,n,r){return lt(t,i=>i.nodeName===e,i=>{const l=[];for(let s=0;s<i.attributes.length;s++){const c=i.attributes[s];n[c.name]||l.push(c.name)}l.forEach(s=>i.removeAttribute(s))},()=>r(e))}function ce(t,e,n){return at(t,e,n,ct)}function le(t,e,n){return at(t,e,n,qt)}function Bt(t,e){return lt(t,n=>n.nodeType===3,n=>{const r=""+e;if(n.data.startsWith(r)){if(n.data.length!==r.length)return n.splitText(r.length)}else n.data=r},()=>K(e),!0)}function ae(t){return Bt(t," ")}function fe(t,e){e=""+e,t.wholeText!==e&&(t.data=e)}function ue(t,e,n,r){t.style.setProperty(e,n,r?"important":"")}function de(t,e,n){t.classList[n?"add":"remove"](e)}function Dt(t,e,n=!1){const r=document.createEvent("CustomEvent");return r.initCustomEvent(t,n,!1,e),r}function _e(t,e=document.body){return Array.from(e.querySelectorAll(t))}const Q=new Set;let T=0;function Pt(t){let e=5381,n=t.length;for(;n--;)e=(e<<5)-e^t.charCodeAt(n);return e>>>0}function U(t,e,n,r,i,l,s,c=0){const o=16.666/r;let a=`{
2
+ `;for(let m=0;m<=1;m+=o){const p=e+(n-e)*l(m);a+=m*100+`%{${s(p,1-p)}}
3
+ `}const _=a+`100% {${s(n,1-n)}}
4
+ }`,u=`__svelte_${Pt(_)}_${c}`,f=ot(t);Q.add(f);const d=f.__svelte_stylesheet||(f.__svelte_stylesheet=Mt(t).sheet),h=f.__svelte_rules||(f.__svelte_rules={});h[u]||(h[u]=!0,d.insertRule(`@keyframes ${u} ${_}`,d.cssRules.length));const y=t.style.animation||"";return t.style.animation=`${y?`${y}, `:""}${u} ${r}ms linear ${i}ms 1 both`,T+=1,u}function ft(t,e){const n=(t.style.animation||"").split(", "),r=n.filter(e?l=>l.indexOf(e)<0:l=>l.indexOf("__svelte")===-1),i=n.length-r.length;i&&(t.style.animation=r.join(", "),T-=i,T||zt())}function zt(){G(()=>{T||(Q.forEach(t=>{const e=t.__svelte_stylesheet;let n=e.cssRules.length;for(;n--;)e.deleteRule(n);t.__svelte_rules={}}),Q.clear())})}function he(t,e,n,r){if(!e)return x;const i=t.getBoundingClientRect();if(e.left===i.left&&e.right===i.right&&e.top===i.top&&e.bottom===i.bottom)return x;const{delay:l=0,duration:s=300,easing:c=tt,start:o=P()+l,end:a=o+s,tick:_=x,css:u}=n(t,{from:e,to:i},r);let f=!0,d=!1,h;function y(){u&&(h=U(t,0,1,s,l,c,u)),l||(d=!0)}function m(){u&&ft(t,h),f=!1}return J(p=>{if(!d&&p>=o&&(d=!0),d&&p>=a&&(_(1,0),m()),!f)return!1;if(d){const w=p-o,b=0+1*c(w/s);_(b,1-b)}return!0}),y(),_(0,1),m}function me(t){const e=getComputedStyle(t);if(e.position!=="absolute"&&e.position!=="fixed"){const{width:n,height:r}=e,i=t.getBoundingClientRect();t.style.position="absolute",t.style.width=n,t.style.height=r,Tt(t,i)}}function Tt(t,e){const n=t.getBoundingClientRect();if(e.left!==n.left||e.top!==n.top){const r=getComputedStyle(t),i=r.transform==="none"?"":r.transform;t.style.transform=`${i} translate(${e.left-n.left}px, ${e.top-n.top}px)`}}let N;function v(t){N=t}function L(){if(!N)throw new Error("Function called outside component initialization");return N}function pe(t){L().$$.on_mount.push(t)}function ye(t){L().$$.after_update.push(t)}function ge(t,e){L().$$.context.set(t,e)}function be(t){return L().$$.context.get(t)}const q=[],ut=[],F=[],dt=[],_t=Promise.resolve();let V=!1;function ht(){V||(V=!0,_t.then(mt))}function we(){return ht(),_t}function H(t){F.push(t)}const X=new Set;let I=0;function mt(){const t=N;do{for(;I<q.length;){const e=q[I];I++,v(e),Lt(e.$$)}for(v(null),q.length=0,I=0;ut.length;)ut.pop()();for(let e=0;e<F.length;e+=1){const n=F[e];X.has(n)||(X.add(n),n())}F.length=0}while(q.length);for(;dt.length;)dt.pop()();V=!1,X.clear(),v(t)}function Lt(t){if(t.fragment!==null){t.update(),C(t.before_update);const e=t.dirty;t.dirty=[-1],t.fragment&&t.fragment.p(t.ctx,e),t.after_update.forEach(H)}}let R;function Ft(){return R||(R=Promise.resolve(),R.then(()=>{R=null})),R}function Y(t,e,n){t.dispatchEvent(Dt(`${e?"intro":"outro"}${n}`))}const W=new Set;let E;function xe(){E={r:0,c:[],p:E}}function $e(){E.r||C(E.c),E=E.p}function pt(t,e){t&&t.i&&(W.delete(t),t.i(e))}function Ht(t,e,n,r){if(t&&t.o){if(W.has(t))return;W.add(t),E.c.push(()=>{W.delete(t),r&&(n&&t.d(1),r())}),t.o(e)}}const It={duration:0};function ke(t,e,n,r){let i=e(t,n),l=r?0:1,s=null,c=null,o=null;function a(){o&&ft(t,o)}function _(f,d){const h=f.b-l;return d*=Math.abs(h),{a:l,b:f.b,d:h,duration:d,start:f.start,end:f.start+d,group:f.group}}function u(f){const{delay:d=0,duration:h=300,easing:y=tt,tick:m=x,css:p}=i||It,w={start:P()+d,b:f};f||(w.group=E,E.r+=1),s||c?c=w:(p&&(a(),o=U(t,l,f,h,d,y,p)),f&&m(0,1),s=_(w,h),H(()=>Y(t,f,"start")),J(b=>{if(c&&b>c.start&&(s=_(c,h),c=null,Y(t,s.b,"start"),p&&(a(),o=U(t,l,s.b,s.duration,0,y,i.css))),s){if(b>=s.end)m(l=s.b,1-l),Y(t,s.b,"end"),c||(s.b?a():--s.group.r||C(s.group.c)),s=null;else if(b>=s.start){const S=b-s.start;l=s.a+s.d*y(S/s.duration),m(l,1-l)}}return!!(s||c)}))}return{run(f){B(i)?Ft().then(()=>{i=i(),u(f)}):u(f)},end(){a(),s=c=null}}}function Wt(t,e){Ht(t,1,1,()=>{e.delete(t.key)})}function Ee(t,e){t.f(),Wt(t,e)}function Se(t,e,n,r,i,l,s,c,o,a,_,u){let f=t.length,d=l.length,h=f;const y={};for(;h--;)y[t[h].key]=h;const m=[],p=new Map,w=new Map;for(h=d;h--;){const g=u(i,l,h),$=n(g);let k=s.get($);k?r&&k.p(g,e):(k=a($,g),k.c()),p.set($,m[h]=k),$ in y&&w.set($,Math.abs(h-y[$]))}const b=new Set,S=new Set;function j(g){pt(g,1),g.m(c,_),s.set(g.key,g),_=g.first,d--}for(;f&&d;){const g=m[d-1],$=t[f-1],k=g.key,O=$.key;g===$?(_=g.first,f--,d--):p.has(O)?!s.has(k)||b.has(k)?j(g):S.has(O)?f--:w.get(k)>w.get(O)?(S.add(k),j(g)):(b.add(O),f--):(o($,s),f--)}for(;f--;){const g=t[f];p.has(g.key)||o(g,s)}for(;d;)j(m[d-1]);return m}function Ce(t,e){const n={},r={},i={$$scope:1};let l=t.length;for(;l--;){const s=t[l],c=e[l];if(c){for(const o in s)o in c||(r[o]=1);for(const o in c)i[o]||(n[o]=c[o],i[o]=1);t[l]=c}else for(const o in s)i[o]=1}for(const s in r)s in n||(n[s]=void 0);return n}function Ae(t){return typeof t=="object"&&t!==null?t:{}}function Me(t){t&&t.c()}function je(t,e){t&&t.l(e)}function Gt(t,e,n,r){const{fragment:i,on_mount:l,on_destroy:s,after_update:c}=t.$$;i&&i.m(e,n),r||H(()=>{const o=l.map(et).filter(B);s?s.push(...o):C(o),t.$$.on_mount=[]}),c.forEach(H)}function Jt(t,e){const n=t.$$;n.fragment!==null&&(C(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function Kt(t,e){t.$$.dirty[0]===-1&&(q.push(t),ht(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<<e%31}function Ne(t,e,n,r,i,l,s,c=[-1]){const o=N;v(t);const a=t.$$={fragment:null,ctx:null,props:l,update:x,not_equal:i,bound:nt(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(o?o.$$.context:[])),callbacks:nt(),dirty:c,skip_bound:!1,root:e.target||o.$$.root};s&&s(a.root);let _=!1;if(a.ctx=n?n(t,e.props||{},(u,f,...d)=>{const h=d.length?d[0]:f;return a.ctx&&i(a.ctx[u],a.ctx[u]=h)&&(!a.skip_bound&&a.bound[u]&&a.bound[u](h),_&&Kt(t,u)),f}):[],a.update(),_=!0,C(a.before_update),a.fragment=r?r(a.ctx):!1,e.target){if(e.hydrate){kt();const u=Rt(e.target);a.fragment&&a.fragment.l(u),u.forEach(vt)}else a.fragment&&a.fragment.c();e.intro&&pt(t.$$.fragment),Gt(t,e.target,e.anchor,e.customElement),Et(),mt()}v(o)}class ve{$destroy(){Jt(this,1),this.$destroy=x}$on(e,n){const r=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return r.push(n),()=>{const i=r.indexOf(n);i!==-1&&r.splice(i,1)}}$set(e){this.$$set&&!xt(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const M=[];function Qt(t,e=x){let n;const r=new Set;function i(c){if(wt(t,c)&&(t=c,n)){const o=!M.length;for(const a of r)a[1](),M.push(a,t);if(o){for(let a=0;a<M.length;a+=2)M[a][0](M[a+1]);M.length=0}}}function l(c){i(c(t))}function s(c,o=x){const a=[c,o];return r.add(a),r.size===1&&(n=e(i)||x),c(t),()=>{r.delete(a),r.size===0&&(n(),n=null)}}return{set:i,update:l,subscribe:s}}function yt(t){const e=t-1;return e*e*e+1}function gt(t){return Object.prototype.toString.call(t)==="[object Date]"}function Z(t,e,n,r){if(typeof n=="number"||gt(n)){const i=r-n,l=(n-e)/(t.dt||1/60),s=t.opts.stiffness*i,c=t.opts.damping*l,o=(s-c)*t.inv_mass,a=(l+o)*t.dt;return Math.abs(a)<t.opts.precision&&Math.abs(i)<t.opts.precision?r:(t.settled=!1,gt(n)?new Date(n.getTime()+a):n+a)}else{if(Array.isArray(n))return n.map((i,l)=>Z(t,e[l],n[l],r[l]));if(typeof n=="object"){const i={};for(const l in n)i[l]=Z(t,e[l],n[l],r[l]);return i}else throw new Error(`Cannot spring ${typeof n} values`)}}function qe(t,e={}){const n=Qt(t),{stiffness:r=.15,damping:i=.8,precision:l=.01}=e;let s,c,o,a=t,_=t,u=1,f=0,d=!1;function h(m,p={}){_=m;const w=o={};if(t==null||p.hard||y.stiffness>=1&&y.damping>=1)return d=!0,s=P(),a=m,n.set(t=_),Promise.resolve();if(p.soft){const b=p.soft===!0?.5:+p.soft;f=1/(b*60),u=0}return c||(s=P(),d=!1,c=J(b=>{if(d)return d=!1,c=null,!1;u=Math.min(u+f,1);const S={inv_mass:u,opts:y,settled:!0,dt:(b-s)*60/1e3},j=Z(S,a,t,_);return s=b,a=t,n.set(t=j),S.settled&&(c=null),!S.settled})),new Promise(b=>{c.promise.then(()=>{w===o&&b()})})}const y={set:h,update:(m,p)=>h(m(_,t),p),subscribe:n.subscribe,stiffness:r,damping:i,precision:l};return y}function Re(t,{delay:e=0,duration:n=400,easing:r=yt,start:i=0,opacity:l=0}={}){const s=getComputedStyle(t),c=+s.opacity,o=s.transform==="none"?"":s.transform,a=1-i,_=c*(1-l);return{delay:e,duration:n,easing:r,css:(u,f)=>`
5
+ transform: ${o} scale(${1-a*f});
6
+ opacity: ${c-_*f}
7
+ `}}function Oe(t,{from:e,to:n},r={}){const i=getComputedStyle(t),l=i.transform==="none"?"":i.transform,[s,c]=i.transformOrigin.split(" ").map(parseFloat),o=e.left+e.width*s/n.width-(n.left+s),a=e.top+e.height*c/n.height-(n.top+c),{delay:_=0,duration:u=d=>Math.sqrt(d)*120,easing:f=yt}=r;return{delay:_,duration:B(u)?u(Math.sqrt(o*o+a*a)):u,easing:f,css:(d,h)=>{const y=h*o,m=h*a,p=d+h*e.width/n.width,w=d+h*e.height/n.height;return`transform: ${l} translate(${y}px, ${m}px) scale(${p}, ${w});`}}}export{H as $,Jt as A,bt as B,Qt as C,we as D,be as E,qt as F,le as G,Ut as H,de as I,Nt as J,x as K,Vt as L,Xt as M,Zt as N,te as O,Yt as P,ue as Q,re as R,ve as S,C as T,qe as U,_e as V,ee as W,B as X,me as Y,Tt as Z,he as _,Rt as a,ke as a0,Se as a1,Oe as a2,Re as a3,Ee as a4,oe as b,ce as c,vt as d,ct as e,ne as f,Bt as g,fe as h,Ne as i,se as j,ie as k,ae as l,xe as m,Ht as n,$e as o,pt as p,ge as q,ye as r,wt as s,K as t,pe as u,Me as v,je as w,Gt as x,Ce as y,Ae as z};
build/_app/error.svelte-97b7e85d.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import{S as K,i as w,s as y,e as d,t as v,c as E,a as b,g as P,d as n,f as u,J as R,h as j,j as N,k as q,l as S,K as C}from"./chunks/vendor-d68c61c2.js";function H(r){let f,t=r[1].frame+"",a;return{c(){f=d("pre"),a=v(t)},l(l){f=E(l,"PRE",{});var s=b(f);a=P(s,t),s.forEach(n)},m(l,s){u(l,f,s),R(f,a)},p(l,s){s&2&&t!==(t=l[1].frame+"")&&j(a,t)},d(l){l&&n(f)}}}function J(r){let f,t=r[1].stack+"",a;return{c(){f=d("pre"),a=v(t)},l(l){f=E(l,"PRE",{});var s=b(f);a=P(s,t),s.forEach(n)},m(l,s){u(l,f,s),R(f,a)},p(l,s){s&2&&t!==(t=l[1].stack+"")&&j(a,t)},d(l){l&&n(f)}}}function z(r){let f,t,a,l,s=r[1].message+"",c,k,m,p,i=r[1].frame&&H(r),o=r[1].stack&&J(r);return{c(){f=d("h1"),t=v(r[0]),a=N(),l=d("pre"),c=v(s),k=N(),i&&i.c(),m=N(),o&&o.c(),p=q()},l(e){f=E(e,"H1",{});var _=b(f);t=P(_,r[0]),_.forEach(n),a=S(e),l=E(e,"PRE",{});var h=b(l);c=P(h,s),h.forEach(n),k=S(e),i&&i.l(e),m=S(e),o&&o.l(e),p=q()},m(e,_){u(e,f,_),R(f,t),u(e,a,_),u(e,l,_),R(l,c),u(e,k,_),i&&i.m(e,_),u(e,m,_),o&&o.m(e,_),u(e,p,_)},p(e,[_]){_&1&&j(t,e[0]),_&2&&s!==(s=e[1].message+"")&&j(c,s),e[1].frame?i?i.p(e,_):(i=H(e),i.c(),i.m(m.parentNode,m)):i&&(i.d(1),i=null),e[1].stack?o?o.p(e,_):(o=J(e),o.c(),o.m(p.parentNode,p)):o&&(o.d(1),o=null)},i:C,o:C,d(e){e&&n(f),e&&n(a),e&&n(l),e&&n(k),i&&i.d(e),e&&n(m),o&&o.d(e),e&&n(p)}}}function D({error:r,status:f}){return{props:{error:r,status:f}}}function A(r,f,t){let{status:a}=f,{error:l}=f;return r.$$set=s=>{"status"in s&&t(0,a=s.status),"error"in s&&t(1,l=s.error)},[a,l]}class F extends K{constructor(f){super();w(this,f,A,z,y,{status:0,error:1})}}export{F as default,D as load};
build/_app/manifest.json ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ ".svelte-kit/build/runtime/internal/start.js": {
3
+ "file": "start-39c66b50.js",
4
+ "src": ".svelte-kit/build/runtime/internal/start.js",
5
+ "isEntry": true,
6
+ "imports": [
7
+ "_vendor-d68c61c2.js"
8
+ ],
9
+ "dynamicImports": [
10
+ "src/routes/__layout.svelte",
11
+ ".svelte-kit/build/components/error.svelte",
12
+ "src/routes/index.svelte",
13
+ "src/routes/about.svelte",
14
+ "src/routes/todos/index.svelte"
15
+ ],
16
+ "css": [
17
+ "assets/start-61d1577b.css"
18
+ ]
19
+ },
20
+ "src/routes/__layout.svelte": {
21
+ "file": "pages/__layout.svelte-2dd96704.js",
22
+ "src": "src/routes/__layout.svelte",
23
+ "isEntry": true,
24
+ "isDynamicEntry": true,
25
+ "imports": [
26
+ "_vendor-d68c61c2.js"
27
+ ],
28
+ "css": [
29
+ "assets/pages/__layout.svelte-a7861b78.css"
30
+ ],
31
+ "assets": [
32
+ "assets/svelte-logo-87df40b8.svg",
33
+ "assets/fira-mono-cyrillic-ext-400-normal-b3140dd3.woff2",
34
+ "assets/fira-mono-all-400-normal-0d19eb5d.woff",
35
+ "assets/fira-mono-cyrillic-400-normal-046b609f.woff2",
36
+ "assets/fira-mono-greek-ext-400-normal-8659ae46.woff2",
37
+ "assets/fira-mono-greek-400-normal-1f8b3a07.woff2",
38
+ "assets/fira-mono-latin-ext-400-normal-b6331a25.woff2",
39
+ "assets/fira-mono-latin-400-normal-a2f9dbe8.woff2"
40
+ ]
41
+ },
42
+ ".svelte-kit/build/components/error.svelte": {
43
+ "file": "error.svelte-97b7e85d.js",
44
+ "src": ".svelte-kit/build/components/error.svelte",
45
+ "isEntry": true,
46
+ "isDynamicEntry": true,
47
+ "imports": [
48
+ "_vendor-d68c61c2.js"
49
+ ]
50
+ },
51
+ "src/routes/index.svelte": {
52
+ "file": "pages/index.svelte-934bb81d.js",
53
+ "src": "src/routes/index.svelte",
54
+ "isEntry": true,
55
+ "isDynamicEntry": true,
56
+ "imports": [
57
+ "_vendor-d68c61c2.js"
58
+ ],
59
+ "css": [
60
+ "assets/pages/index.svelte-c63fe1c6.css"
61
+ ]
62
+ },
63
+ "src/routes/about.svelte": {
64
+ "file": "pages/about.svelte-a7982a52.js",
65
+ "src": "src/routes/about.svelte",
66
+ "isEntry": true,
67
+ "isDynamicEntry": true,
68
+ "imports": [
69
+ "_vendor-d68c61c2.js"
70
+ ],
71
+ "css": [
72
+ "assets/pages/about.svelte-bf4528fa.css"
73
+ ]
74
+ },
75
+ "src/routes/todos/index.svelte": {
76
+ "file": "pages/todos/index.svelte-82693d56.js",
77
+ "src": "src/routes/todos/index.svelte",
78
+ "isEntry": true,
79
+ "isDynamicEntry": true,
80
+ "imports": [
81
+ "_vendor-d68c61c2.js"
82
+ ],
83
+ "css": [
84
+ "assets/pages/todos/index.svelte-784042c1.css"
85
+ ]
86
+ },
87
+ "_vendor-d68c61c2.js": {
88
+ "file": "chunks/vendor-d68c61c2.js"
89
+ }
90
+ }
build/_app/pages/__layout.svelte-2dd96704.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import{E as ne,S as se,i as ae,s as le,e as u,j as y,F as V,t as z,c as f,a as c,d as l,l as H,G as j,g as D,H as ve,b as e,I as N,f as T,J as s,K as re,L as ue,M as fe,v as _e,w as de,x as he,N as pe,O as me,P as ge,p as oe,n as ie,A as be}from"../chunks/vendor-d68c61c2.js";const Ee=()=>{const o=ne("__svelte__");return{page:{subscribe:o.page.subscribe},navigating:{subscribe:o.navigating.subscribe},get preloading(){return console.error("stores.preloading is deprecated; use stores.navigating instead"),{subscribe:o.navigating.subscribe}},session:o.session}},we={subscribe(o){return Ee().page.subscribe(o)}};var $e="/_app/assets/svelte-logo-87df40b8.svg";function qe(o){let a,d,i,n,m,w,p,_,q,S,v,b,r,t,h,$,g,M,x,A,L,F,G,I,B,P,O;return{c(){a=u("header"),d=u("div"),i=u("a"),n=u("img"),w=y(),p=u("nav"),_=V("svg"),q=V("path"),S=y(),v=u("ul"),b=u("li"),r=u("a"),t=z("Home"),h=y(),$=u("li"),g=u("a"),M=z("About"),x=y(),A=u("li"),L=u("a"),F=z("Todos"),G=y(),I=V("svg"),B=V("path"),P=y(),O=u("div"),this.h()},l(k){a=f(k,"HEADER",{class:!0});var E=c(a);d=f(E,"DIV",{class:!0});var R=c(d);i=f(R,"A",{href:!0,class:!0});var Z=c(i);n=f(Z,"IMG",{src:!0,alt:!0,class:!0}),Z.forEach(l),R.forEach(l),w=H(E),p=f(E,"NAV",{class:!0});var C=c(p);_=j(C,"svg",{viewBox:!0,"aria-hidden":!0,class:!0});var J=c(_);q=j(J,"path",{d:!0,class:!0}),c(q).forEach(l),J.forEach(l),S=H(C),v=f(C,"UL",{class:!0});var K=c(v);b=f(K,"LI",{class:!0});var U=c(b);r=f(U,"A",{"sveltekit:prefetch":!0,href:!0,class:!0});var Q=c(r);t=D(Q,"Home"),Q.forEach(l),U.forEach(l),h=H(K),$=f(K,"LI",{class:!0});var W=c($);g=f(W,"A",{"sveltekit:prefetch":!0,href:!0,class:!0});var X=c(g);M=D(X,"About"),X.forEach(l),W.forEach(l),x=H(K),A=f(K,"LI",{class:!0});var Y=c(A);L=f(Y,"A",{"sveltekit:prefetch":!0,href:!0,class:!0});var ee=c(L);F=D(ee,"Todos"),ee.forEach(l),Y.forEach(l),K.forEach(l),G=H(C),I=j(C,"svg",{viewBox:!0,"aria-hidden":!0,class:!0});var te=c(I);B=j(te,"path",{d:!0,class:!0}),c(B).forEach(l),te.forEach(l),C.forEach(l),P=H(E),O=f(E,"DIV",{class:!0});var ce=c(O);ce.forEach(l),E.forEach(l),this.h()},h(){ve(n.src,m=$e)||e(n,"src",m),e(n,"alt","SvelteKit"),e(n,"class","svelte-t2wq17"),e(i,"href","https://kit.svelte.dev"),e(i,"class","svelte-t2wq17"),e(d,"class","corner svelte-t2wq17"),e(q,"d","M0,0 L1,2 C1.5,3 1.5,3 2,3 L2,0 Z"),e(q,"class","svelte-t2wq17"),e(_,"viewBox","0 0 2 3"),e(_,"aria-hidden","true"),e(_,"class","svelte-t2wq17"),e(r,"sveltekit:prefetch",""),e(r,"href","/"),e(r,"class","svelte-t2wq17"),e(b,"class","svelte-t2wq17"),N(b,"active",o[0].url.pathname==="/"),e(g,"sveltekit:prefetch",""),e(g,"href","/about"),e(g,"class","svelte-t2wq17"),e($,"class","svelte-t2wq17"),N($,"active",o[0].url.pathname==="/about"),e(L,"sveltekit:prefetch",""),e(L,"href","/todos"),e(L,"class","svelte-t2wq17"),e(A,"class","svelte-t2wq17"),N(A,"active",o[0].url.pathname==="/todos"),e(v,"class","svelte-t2wq17"),e(B,"d","M0,0 L0,3 C0.5,3 0.5,3 1,2 L2,0 Z"),e(B,"class","svelte-t2wq17"),e(I,"viewBox","0 0 2 3"),e(I,"aria-hidden","true"),e(I,"class","svelte-t2wq17"),e(p,"class","svelte-t2wq17"),e(O,"class","corner svelte-t2wq17"),e(a,"class","svelte-t2wq17")},m(k,E){T(k,a,E),s(a,d),s(d,i),s(i,n),s(a,w),s(a,p),s(p,_),s(_,q),s(p,S),s(p,v),s(v,b),s(b,r),s(r,t),s(v,h),s(v,$),s($,g),s(g,M),s(v,x),s(v,A),s(A,L),s(L,F),s(p,G),s(p,I),s(I,B),s(a,P),s(a,O)},p(k,[E]){E&1&&N(b,"active",k[0].url.pathname==="/"),E&1&&N($,"active",k[0].url.pathname==="/about"),E&1&&N(A,"active",k[0].url.pathname==="/todos")},i:re,o:re,d(k){k&&l(a)}}}function ke(o,a,d){let i;return ue(o,we,n=>d(0,i=n)),[i]}class Ae extends se{constructor(a){super();ae(this,a,ke,qe,le,{})}}function Le(o){let a,d,i,n,m,w,p,_,q,S,v;a=new Ae({});const b=o[1].default,r=fe(b,o,o[0],null);return{c(){_e(a.$$.fragment),d=y(),i=u("main"),r&&r.c(),n=y(),m=u("footer"),w=u("p"),p=z("visit "),_=u("a"),q=z("kit.svelte.dev"),S=z(" to learn SvelteKit"),this.h()},l(t){de(a.$$.fragment,t),d=H(t),i=f(t,"MAIN",{class:!0});var h=c(i);r&&r.l(h),h.forEach(l),n=H(t),m=f(t,"FOOTER",{class:!0});var $=c(m);w=f($,"P",{});var g=c(w);p=D(g,"visit "),_=f(g,"A",{href:!0,class:!0});var M=c(_);q=D(M,"kit.svelte.dev"),M.forEach(l),S=D(g," to learn SvelteKit"),g.forEach(l),$.forEach(l),this.h()},h(){e(i,"class","svelte-1izrdc8"),e(_,"href","https://kit.svelte.dev"),e(_,"class","svelte-1izrdc8"),e(m,"class","svelte-1izrdc8")},m(t,h){he(a,t,h),T(t,d,h),T(t,i,h),r&&r.m(i,null),T(t,n,h),T(t,m,h),s(m,w),s(w,p),s(w,_),s(_,q),s(w,S),v=!0},p(t,[h]){r&&r.p&&(!v||h&1)&&pe(r,b,t,t[0],v?ge(b,t[0],h,null):me(t[0]),null)},i(t){v||(oe(a.$$.fragment,t),oe(r,t),v=!0)},o(t){ie(a.$$.fragment,t),ie(r,t),v=!1},d(t){be(a,t),t&&l(d),t&&l(i),r&&r.d(t),t&&l(n),t&&l(m)}}}function Ie(o,a,d){let{$$slots:i={},$$scope:n}=a;return o.$$set=m=>{"$$scope"in m&&d(0,n=m.$$scope)},[n,i]}class He extends se{constructor(a){super();ae(this,a,Ie,Le,le,{})}}export{He as default};
build/_app/pages/about.svelte-a7982a52.js ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import{S as F,i as G,s as N,j as _,e as i,t as o,V as Q,d as a,l as m,c as r,a as d,g as s,b as B,f as R,J as t,K as L}from"../chunks/vendor-d68c61c2.js";const U=!0,W=!1;function X(z){let h,e,f,b,E,p,S,u,k,x,A,g,J,K,y,O,P,c,D,v,H,j;return{c(){h=_(),e=i("div"),f=i("h1"),b=o("About this app"),E=_(),p=i("p"),S=o("This is a "),u=i("a"),k=o("SvelteKit"),x=o(` app. You can make your own by typing the
2
+ following into your command line and following the prompts:`),A=_(),g=i("pre"),J=o("npm init svelte@next"),K=_(),y=i("p"),O=o(`The page you're looking at is purely static HTML, with no client-side interactivity needed.
3
+ Because of that, we don't need to load any JavaScript. Try viewing the page's source, or opening
4
+ the devtools network panel and reloading.`),P=_(),c=i("p"),D=o("The "),v=i("a"),H=o("TODOs"),j=o(` page illustrates SvelteKit's data loading and form handling. Try using
5
+ it with JavaScript disabled!`),this.h()},l(l){Q('[data-svelte="svelte-1ine71f"]',document.head).forEach(a),h=m(l),e=r(l,"DIV",{class:!0});var n=d(e);f=r(n,"H1",{});var M=d(f);b=s(M,"About this app"),M.forEach(a),E=m(n),p=r(n,"P",{});var w=d(p);S=s(w,"This is a "),u=r(w,"A",{href:!0});var V=d(u);k=s(V,"SvelteKit"),V.forEach(a),x=s(w,` app. You can make your own by typing the
6
+ following into your command line and following the prompts:`),w.forEach(a),A=m(n),g=r(n,"PRE",{});var Y=d(g);J=s(Y,"npm init svelte@next"),Y.forEach(a),K=m(n),y=r(n,"P",{});var C=d(y);O=s(C,`The page you're looking at is purely static HTML, with no client-side interactivity needed.
7
+ Because of that, we don't need to load any JavaScript. Try viewing the page's source, or opening
8
+ the devtools network panel and reloading.`),C.forEach(a),P=m(n),c=r(n,"P",{});var T=d(c);D=s(T,"The "),v=r(T,"A",{href:!0});var I=d(v);H=s(I,"TODOs"),I.forEach(a),j=s(T,` page illustrates SvelteKit's data loading and form handling. Try using
9
+ it with JavaScript disabled!`),T.forEach(a),n.forEach(a),this.h()},h(){document.title="About",B(u,"href","https://kit.svelte.dev"),B(v,"href","/todos"),B(e,"class","content svelte-cf77e8")},m(l,q){R(l,h,q),R(l,e,q),t(e,f),t(f,b),t(e,E),t(e,p),t(p,S),t(p,u),t(u,k),t(p,x),t(e,A),t(e,g),t(g,J),t(e,K),t(e,y),t(y,O),t(e,P),t(e,c),t(c,D),t(c,v),t(v,H),t(c,j)},p:L,i:L,o:L,d(l){l&&a(h),l&&a(e)}}}const $=W,tt=U,et=!0;class at extends F{constructor(h){super();G(this,h,null,X,N,{})}}export{at as default,$ as hydrate,et as prerender,tt as router};
build/_app/pages/index.svelte-934bb81d.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ import{S as J,i as P,s as Q,e as _,F as V,j,t as $,c as m,a as i,G as H,d as o,l as C,g as D,b as t,Q as L,f as q,J as e,R as W,h as z,K,T as X,U as Y,L as Z,v as ee,V as te,w as se,H as ae,x as re,p as le,n as oe,A as ne}from"../chunks/vendor-d68c61c2.js";function ce(f){let s,a,l,c,u,d,v,n,E=Math.floor(f[1]+1)+"",I,R,b,k=Math.floor(f[1])+"",w,B,p,g,T,y,O;return{c(){s=_("div"),a=_("button"),l=V("svg"),c=V("path"),u=j(),d=_("div"),v=_("div"),n=_("strong"),I=$(E),R=j(),b=_("strong"),w=$(k),B=j(),p=_("button"),g=V("svg"),T=V("path"),this.h()},l(r){s=m(r,"DIV",{class:!0});var h=i(s);a=m(h,"BUTTON",{"aria-label":!0,class:!0});var S=i(a);l=H(S,"svg",{"aria-hidden":!0,viewBox:!0,class:!0});var M=i(l);c=H(M,"path",{d:!0,class:!0}),i(c).forEach(o),M.forEach(o),S.forEach(o),u=C(h),d=m(h,"DIV",{class:!0});var G=i(d);v=m(G,"DIV",{class:!0,style:!0});var x=i(v);n=m(x,"STRONG",{style:!0,"aria-hidden":!0,class:!0});var N=i(n);I=D(N,E),N.forEach(o),R=C(x),b=m(x,"STRONG",{class:!0});var U=i(b);w=D(U,k),U.forEach(o),x.forEach(o),G.forEach(o),B=C(h),p=m(h,"BUTTON",{"aria-label":!0,class:!0});var A=i(p);g=H(A,"svg",{"aria-hidden":!0,viewBox:!0,class:!0});var F=i(g);T=H(F,"path",{d:!0,class:!0}),i(T).forEach(o),F.forEach(o),A.forEach(o),h.forEach(o),this.h()},h(){t(c,"d","M0,0.5 L1,0.5"),t(c,"class","svelte-139m1ow"),t(l,"aria-hidden","true"),t(l,"viewBox","0 0 1 1"),t(l,"class","svelte-139m1ow"),t(a,"aria-label","Decrease the counter by one"),t(a,"class","svelte-139m1ow"),L(n,"top","-100%"),t(n,"aria-hidden","true"),t(n,"class","svelte-139m1ow"),t(b,"class","svelte-139m1ow"),t(v,"class","counter-digits svelte-139m1ow"),L(v,"transform","translate(0, "+100*f[2]+"%)"),t(d,"class","counter-viewport svelte-139m1ow"),t(T,"d","M0,0.5 L1,0.5 M0.5,0 L0.5,1"),t(T,"class","svelte-139m1ow"),t(g,"aria-hidden","true"),t(g,"viewBox","0 0 1 1"),t(g,"class","svelte-139m1ow"),t(p,"aria-label","Increase the counter by one"),t(p,"class","svelte-139m1ow"),t(s,"class","counter svelte-139m1ow")},m(r,h){q(r,s,h),e(s,a),e(a,l),e(l,c),e(s,u),e(s,d),e(d,v),e(v,n),e(n,I),e(v,R),e(v,b),e(b,w),e(s,B),e(s,p),e(p,g),e(g,T),y||(O=[W(a,"click",f[4]),W(p,"click",f[5])],y=!0)},p(r,[h]){h&2&&E!==(E=Math.floor(r[1]+1)+"")&&z(I,E),h&2&&k!==(k=Math.floor(r[1])+"")&&z(w,k),h&4&&L(v,"transform","translate(0, "+100*r[2]+"%)")},i:K,o:K,d(r){r&&o(s),y=!1,X(O)}}}function ie(f,s){return(f%s+s)%s}function ue(f,s,a){let l,c,u=0;const d=Y();Z(f,d,E=>a(1,c=E));const v=()=>a(0,u-=1),n=()=>a(0,u+=1);return f.$$.update=()=>{f.$$.dirty&1&&d.set(u),f.$$.dirty&2&&a(2,l=ie(c,1))},[u,c,l,d,v,n]}class de extends J{constructor(s){super();P(this,s,ue,ce,Q,{})}}function ve(f){let s,a,l,c,u,d,v,n,E,I,R,b,k,w,B,p,g,T,y,O;return y=new de({}),{c(){s=j(),a=_("section"),l=_("h1"),c=_("div"),u=_("picture"),d=_("source"),v=j(),n=_("img"),I=$(`
2
+
3
+ to your new`),R=_("br"),b=$("SvelteKit app"),k=j(),w=_("h2"),B=$("try editing "),p=_("strong"),g=$("src/routes/index.svelte"),T=j(),ee(y.$$.fragment),this.h()},l(r){te('[data-svelte="svelte-1anpopb"]',document.head).forEach(o),s=C(r),a=m(r,"SECTION",{class:!0});var S=i(a);l=m(S,"H1",{class:!0});var M=i(l);c=m(M,"DIV",{class:!0});var G=i(c);u=m(G,"PICTURE",{});var x=i(u);d=m(x,"SOURCE",{srcset:!0,type:!0}),v=C(x),n=m(x,"IMG",{src:!0,alt:!0,class:!0}),x.forEach(o),G.forEach(o),I=D(M,`
4
+
5
+ to your new`),R=m(M,"BR",{}),b=D(M,"SvelteKit app"),M.forEach(o),k=C(S),w=m(S,"H2",{});var N=i(w);B=D(N,"try editing "),p=m(N,"STRONG",{});var U=i(p);g=D(U,"src/routes/index.svelte"),U.forEach(o),N.forEach(o),T=C(S),se(y.$$.fragment,S),S.forEach(o),this.h()},h(){document.title="Home",t(d,"srcset","svelte-welcome.webp"),t(d,"type","image/webp"),ae(n.src,E="svelte-welcome.png")||t(n,"src",E),t(n,"alt","Welcome"),t(n,"class","svelte-mjk9ig"),t(c,"class","welcome svelte-mjk9ig"),t(l,"class","svelte-mjk9ig"),t(a,"class","svelte-mjk9ig")},m(r,h){q(r,s,h),q(r,a,h),e(a,l),e(l,c),e(c,u),e(u,d),e(u,v),e(u,n),e(l,I),e(l,R),e(l,b),e(a,k),e(a,w),e(w,B),e(w,p),e(p,g),e(a,T),re(y,a,null),O=!0},p:K,i(r){O||(le(y.$$.fragment,r),O=!0)},o(r){oe(y.$$.fragment,r),O=!1},d(r){r&&o(s),r&&o(a),ne(y)}}}const _e=!0;class me extends J{constructor(s){super();P(this,s,null,ve,Q,{})}}export{me as default,_e as prerender};
build/_app/pages/todos/index.svelte-82693d56.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import{S as ae,i as oe,s as ne,e as E,j as D,c as T,a as y,l as F,d as k,b as n,I as Q,f as K,J as f,W as V,X as W,Y as le,Z as se,_ as re,$ as ie,a0 as x,T as de,t as ue,V as ce,g as _e,a1 as fe,o as he,p as me,n as pe,a2 as ve,a3 as $,m as be,a4 as ge,K as ke}from"../../chunks/vendor-d68c61c2.js";function C(d,{pending:t,error:e,result:a}){let h;async function j(m){const c=h={};m.preventDefault();const v=new FormData(d);t&&t(v,d);try{const r=await fetch(d.action,{method:d.method,headers:{accept:"application/json"},body:v});if(c!==h)return;r.ok?a(r,d):e?e(r,null,d):console.error(await r.text())}catch(r){if(e)e(null,r,d);else throw r}}return d.addEventListener("submit",j),{destroy(){d.removeEventListener("submit",j)}}}function ee(d,t,e){const a=d.slice();return a[6]=t[e],a[7]=t,a[8]=e,a}function te(d,t){let e,a,h,j,m,c,v,r,o,p,_,b,I,M,O,s,i,l,q,R,N,B,L,U,A,H=ke,w,J,X;function Y(...g){return t[3](t[6],t[7],t[8],...g)}function Z(){return t[4](t[6],t[7],t[8])}function z(){return t[5](t[6])}return{key:d,first:null,c(){e=E("div"),a=E("form"),h=E("input"),m=D(),c=E("button"),p=D(),_=E("form"),b=E("input"),M=D(),O=E("button"),i=D(),l=E("form"),q=E("button"),L=D(),this.h()},l(g){e=T(g,"DIV",{class:!0});var u=y(e);a=T(u,"FORM",{action:!0,method:!0});var P=y(a);h=T(P,"INPUT",{type:!0,name:!0,class:!0}),m=F(P),c=T(P,"BUTTON",{class:!0,"aria-label":!0}),y(c).forEach(k),P.forEach(k),p=F(u),_=T(u,"FORM",{class:!0,action:!0,method:!0});var S=y(_);b=T(S,"INPUT",{"aria-label":!0,type:!0,name:!0,class:!0}),M=F(S),O=T(S,"BUTTON",{class:!0,"aria-label":!0}),y(O).forEach(k),S.forEach(k),i=F(u),l=T(u,"FORM",{action:!0,method:!0});var G=y(l);q=T(G,"BUTTON",{class:!0,"aria-label":!0}),y(q).forEach(k),G.forEach(k),L=F(u),u.forEach(k),this.h()},h(){n(h,"type","hidden"),n(h,"name","done"),h.value=j=t[6].done?"":"true",n(h,"class","svelte-dmxqmd"),n(c,"class","toggle svelte-dmxqmd"),n(c,"aria-label",v="Mark todo as "+(t[6].done?"not done":"done")),n(a,"action",r="/todos/"+t[6].uid+".json?_method=patch"),n(a,"method","post"),n(b,"aria-label","Edit todo"),n(b,"type","text"),n(b,"name","text"),b.value=I=t[6].text,n(b,"class","svelte-dmxqmd"),n(O,"class","save svelte-dmxqmd"),n(O,"aria-label","Save todo"),n(_,"class","text svelte-dmxqmd"),n(_,"action",s="/todos/"+t[6].uid+".json?_method=patch"),n(_,"method","post"),n(q,"class","delete svelte-dmxqmd"),n(q,"aria-label","Delete todo"),q.disabled=R=t[6].pending_delete,n(l,"action",N="/todos/"+t[6].uid+".json?_method=delete"),n(l,"method","post"),n(e,"class","todo svelte-dmxqmd"),Q(e,"done",t[6].done),this.first=e},m(g,u){K(g,e,u),f(e,a),f(a,h),f(a,m),f(a,c),f(e,p),f(e,_),f(_,b),f(_,M),f(_,O),f(e,i),f(e,l),f(l,q),f(e,L),w=!0,J||(X=[V(o=C.call(null,a,{pending:Y,result:t[1]})),V(C.call(null,_,{result:t[1]})),V(B=C.call(null,l,{pending:Z,result:z}))],J=!0)},p(g,u){t=g,(!w||u&1&&j!==(j=t[6].done?"":"true"))&&(h.value=j),(!w||u&1&&v!==(v="Mark todo as "+(t[6].done?"not done":"done")))&&n(c,"aria-label",v),(!w||u&1&&r!==(r="/todos/"+t[6].uid+".json?_method=patch"))&&n(a,"action",r),o&&W(o.update)&&u&1&&o.update.call(null,{pending:Y,result:t[1]}),(!w||u&1&&I!==(I=t[6].text)&&b.value!==I)&&(b.value=I),(!w||u&1&&s!==(s="/todos/"+t[6].uid+".json?_method=patch"))&&n(_,"action",s),(!w||u&1&&R!==(R=t[6].pending_delete))&&(q.disabled=R),(!w||u&1&&N!==(N="/todos/"+t[6].uid+".json?_method=delete"))&&n(l,"action",N),B&&W(B.update)&&u&1&&B.update.call(null,{pending:Z,result:z}),u&1&&Q(e,"done",t[6].done)},r(){A=e.getBoundingClientRect()},f(){le(e),H(),se(e,A)},a(){H(),H=re(e,A,ve,{duration:200})},i(g){w||(g&&ie(()=>{U||(U=x(e,$,{start:.7},!0)),U.run(1)}),w=!0)},o(g){g&&(U||(U=x(e,$,{start:.7},!1)),U.run(0)),w=!1},d(g){g&&k(e),g&&U&&U.end(),J=!1,de(X)}}}function je(d){let t,e,a,h,j,m,c,v,r,o=[],p=new Map,_,b,I,M=d[0];const O=s=>s[6].uid;for(let s=0;s<M.length;s+=1){let i=ee(d,M,s),l=O(i);p.set(l,o[s]=te(l,i))}return{c(){t=D(),e=E("div"),a=E("h1"),h=ue("Todos"),j=D(),m=E("form"),c=E("input"),r=D();for(let s=0;s<o.length;s+=1)o[s].c();this.h()},l(s){ce('[data-svelte="svelte-181o7gf"]',document.head).forEach(k),t=F(s),e=T(s,"DIV",{class:!0});var l=y(e);a=T(l,"H1",{});var q=y(a);h=_e(q,"Todos"),q.forEach(k),j=F(l),m=T(l,"FORM",{class:!0,action:!0,method:!0});var R=y(m);c=T(R,"INPUT",{name:!0,"aria-label":!0,placeholder:!0,class:!0}),R.forEach(k),r=F(l);for(let N=0;N<o.length;N+=1)o[N].l(l);l.forEach(k),this.h()},h(){document.title="Todos",n(c,"name","text"),n(c,"aria-label","Add todo"),n(c,"placeholder","+ tap to add a todo"),n(c,"class","svelte-dmxqmd"),n(m,"class","new svelte-dmxqmd"),n(m,"action","/todos.json"),n(m,"method","post"),n(e,"class","todos svelte-dmxqmd")},m(s,i){K(s,t,i),K(s,e,i),f(e,a),f(a,h),f(e,j),f(e,m),f(m,c),f(e,r);for(let l=0;l<o.length;l+=1)o[l].m(e,null);_=!0,b||(I=V(v=C.call(null,m,{result:d[2]})),b=!0)},p(s,[i]){if(v&&W(v.update)&&i&1&&v.update.call(null,{result:s[2]}),i&3){M=s[0],be();for(let l=0;l<o.length;l+=1)o[l].r();o=fe(o,i,O,1,s,M,p,e,ge,te,null,ee);for(let l=0;l<o.length;l+=1)o[l].a();he()}},i(s){if(!_){for(let i=0;i<M.length;i+=1)me(o[i]);_=!0}},o(s){for(let i=0;i<o.length;i+=1)pe(o[i]);_=!1},d(s){s&&k(t),s&&k(e);for(let i=0;i<o.length;i+=1)o[i].d();b=!1,I()}}}const qe=async({fetch:d})=>{const t=await d("/todos.json");if(t.ok)return{props:{todos:await t.json()}};const{message:e}=await t.json();return{error:new Error(e)}};function Ee(d,t,e){let{todos:a}=t;async function h(r){const o=await r.json();e(0,a=a.map(p=>p.uid===o.uid?o:p))}const j=async(r,o)=>{const p=await r.json();e(0,a=[...a,p]),o.reset()},m=(r,o,p,_)=>{e(0,o[p].done=!!_.get("done"),a)},c=(r,o,p)=>e(0,o[p].pending_delete=!0,a),v=r=>{e(0,a=a.filter(o=>o.uid!==r.uid))};return d.$$set=r=>{"todos"in r&&e(0,a=r.todos)},[a,h,j,m,c,v]}class we extends ae{constructor(t){super();oe(this,t,Ee,je,ne,{todos:0})}}export{we as default,qe as load};
build/_app/start-39c66b50.js ADDED
@@ -0,0 +1 @@
 
 
1
+ var ne=Object.defineProperty,ie=Object.defineProperties;var ae=Object.getOwnPropertyDescriptors;var B=Object.getOwnPropertySymbols;var J=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable;var M=(n,e,t)=>e in n?ne(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,A=(n,e)=>{for(var t in e||(e={}))J.call(e,t)&&M(n,t,e[t]);if(B)for(var t of B(e))G.call(e,t)&&M(n,t,e[t]);return n},Y=(n,e)=>ie(n,ae(e));var X=(n,e)=>{var t={};for(var r in n)J.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&B)for(var r of B(n))e.indexOf(r)<0&&G.call(n,r)&&(t[r]=n[r]);return t};import{S as oe,i as le,s as ce,e as fe,c as ue,a as he,d as y,b as K,f as k,t as de,g as _e,h as pe,j as me,k as m,l as ge,m as T,n as g,o as j,p as w,q as we,r as be,u as ve,v as E,w as O,x as R,y as C,z as I,A as L,B as V,C as W,D as F}from"./chunks/vendor-d68c61c2.js";function ye(n){let e,t,r;const l=[n[1]||{}];var i=n[0][0];function a(s){let o={};for(let c=0;c<l.length;c+=1)o=V(o,l[c]);return{props:o}}return i&&(e=new i(a())),{c(){e&&E(e.$$.fragment),t=m()},l(s){e&&O(e.$$.fragment,s),t=m()},m(s,o){e&&R(e,s,o),k(s,t,o),r=!0},p(s,o){const c=o&2?C(l,[I(s[1]||{})]):{};if(i!==(i=s[0][0])){if(e){T();const f=e;g(f.$$.fragment,1,0,()=>{L(f,1)}),j()}i?(e=new i(a()),E(e.$$.fragment),w(e.$$.fragment,1),R(e,t.parentNode,t)):e=null}else i&&e.$set(c)},i(s){r||(e&&w(e.$$.fragment,s),r=!0)},o(s){e&&g(e.$$.fragment,s),r=!1},d(s){s&&y(t),e&&L(e,s)}}}function $e(n){let e,t,r;const l=[n[1]||{}];var i=n[0][0];function a(s){let o={$$slots:{default:[Le]},$$scope:{ctx:s}};for(let c=0;c<l.length;c+=1)o=V(o,l[c]);return{props:o}}return i&&(e=new i(a(n))),{c(){e&&E(e.$$.fragment),t=m()},l(s){e&&O(e.$$.fragment,s),t=m()},m(s,o){e&&R(e,s,o),k(s,t,o),r=!0},p(s,o){const c=o&2?C(l,[I(s[1]||{})]):{};if(o&525&&(c.$$scope={dirty:o,ctx:s}),i!==(i=s[0][0])){if(e){T();const f=e;g(f.$$.fragment,1,0,()=>{L(f,1)}),j()}i?(e=new i(a(s)),E(e.$$.fragment),w(e.$$.fragment,1),R(e,t.parentNode,t)):e=null}else i&&e.$set(c)},i(s){r||(e&&w(e.$$.fragment,s),r=!0)},o(s){e&&g(e.$$.fragment,s),r=!1},d(s){s&&y(t),e&&L(e,s)}}}function ke(n){let e,t,r;const l=[n[2]||{}];var i=n[0][1];function a(s){let o={};for(let c=0;c<l.length;c+=1)o=V(o,l[c]);return{props:o}}return i&&(e=new i(a())),{c(){e&&E(e.$$.fragment),t=m()},l(s){e&&O(e.$$.fragment,s),t=m()},m(s,o){e&&R(e,s,o),k(s,t,o),r=!0},p(s,o){const c=o&4?C(l,[I(s[2]||{})]):{};if(i!==(i=s[0][1])){if(e){T();const f=e;g(f.$$.fragment,1,0,()=>{L(f,1)}),j()}i?(e=new i(a()),E(e.$$.fragment),w(e.$$.fragment,1),R(e,t.parentNode,t)):e=null}else i&&e.$set(c)},i(s){r||(e&&w(e.$$.fragment,s),r=!0)},o(s){e&&g(e.$$.fragment,s),r=!1},d(s){s&&y(t),e&&L(e,s)}}}function Ee(n){let e,t,r;const l=[n[2]||{}];var i=n[0][1];function a(s){let o={$$slots:{default:[Re]},$$scope:{ctx:s}};for(let c=0;c<l.length;c+=1)o=V(o,l[c]);return{props:o}}return i&&(e=new i(a(n))),{c(){e&&E(e.$$.fragment),t=m()},l(s){e&&O(e.$$.fragment,s),t=m()},m(s,o){e&&R(e,s,o),k(s,t,o),r=!0},p(s,o){const c=o&4?C(l,[I(s[2]||{})]):{};if(o&521&&(c.$$scope={dirty:o,ctx:s}),i!==(i=s[0][1])){if(e){T();const f=e;g(f.$$.fragment,1,0,()=>{L(f,1)}),j()}i?(e=new i(a(s)),E(e.$$.fragment),w(e.$$.fragment,1),R(e,t.parentNode,t)):e=null}else i&&e.$set(c)},i(s){r||(e&&w(e.$$.fragment,s),r=!0)},o(s){e&&g(e.$$.fragment,s),r=!1},d(s){s&&y(t),e&&L(e,s)}}}function Re(n){let e,t,r;const l=[n[3]||{}];var i=n[0][2];function a(s){let o={};for(let c=0;c<l.length;c+=1)o=V(o,l[c]);return{props:o}}return i&&(e=new i(a())),{c(){e&&E(e.$$.fragment),t=m()},l(s){e&&O(e.$$.fragment,s),t=m()},m(s,o){e&&R(e,s,o),k(s,t,o),r=!0},p(s,o){const c=o&8?C(l,[I(s[3]||{})]):{};if(i!==(i=s[0][2])){if(e){T();const f=e;g(f.$$.fragment,1,0,()=>{L(f,1)}),j()}i?(e=new i(a()),E(e.$$.fragment),w(e.$$.fragment,1),R(e,t.parentNode,t)):e=null}else i&&e.$set(c)},i(s){r||(e&&w(e.$$.fragment,s),r=!0)},o(s){e&&g(e.$$.fragment,s),r=!1},d(s){s&&y(t),e&&L(e,s)}}}function Le(n){let e,t,r,l;const i=[Ee,ke],a=[];function s(o,c){return o[0][2]?0:1}return e=s(n),t=a[e]=i[e](n),{c(){t.c(),r=m()},l(o){t.l(o),r=m()},m(o,c){a[e].m(o,c),k(o,r,c),l=!0},p(o,c){let f=e;e=s(o),e===f?a[e].p(o,c):(T(),g(a[f],1,1,()=>{a[f]=null}),j(),t=a[e],t?t.p(o,c):(t=a[e]=i[e](o),t.c()),w(t,1),t.m(r.parentNode,r))},i(o){l||(w(t),l=!0)},o(o){g(t),l=!1},d(o){a[e].d(o),o&&y(r)}}}function H(n){let e,t=n[5]&&Q(n);return{c(){e=fe("div"),t&&t.c(),this.h()},l(r){e=ue(r,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,class:!0});var l=he(e);t&&t.l(l),l.forEach(y),this.h()},h(){K(e,"id","svelte-announcer"),K(e,"aria-live","assertive"),K(e,"aria-atomic","true"),K(e,"class","svelte-1j55zn5")},m(r,l){k(r,e,l),t&&t.m(e,null)},p(r,l){r[5]?t?t.p(r,l):(t=Q(r),t.c(),t.m(e,null)):t&&(t.d(1),t=null)},d(r){r&&y(e),t&&t.d()}}}function Q(n){let e;return{c(){e=de(n[6])},l(t){e=_e(t,n[6])},m(t,r){k(t,e,r)},p(t,r){r&64&&pe(e,t[6])},d(t){t&&y(e)}}}function Se(n){let e,t,r,l,i;const a=[$e,ye],s=[];function o(f,h){return f[0][1]?0:1}e=o(n),t=s[e]=a[e](n);let c=n[4]&&H(n);return{c(){t.c(),r=me(),c&&c.c(),l=m()},l(f){t.l(f),r=ge(f),c&&c.l(f),l=m()},m(f,h){s[e].m(f,h),k(f,r,h),c&&c.m(f,h),k(f,l,h),i=!0},p(f,[h]){let u=e;e=o(f),e===u?s[e].p(f,h):(T(),g(s[u],1,1,()=>{s[u]=null}),j(),t=s[e],t?t.p(f,h):(t=s[e]=a[e](f),t.c()),w(t,1),t.m(r.parentNode,r)),f[4]?c?c.p(f,h):(c=H(f),c.c(),c.m(l.parentNode,l)):c&&(c.d(1),c=null)},i(f){i||(w(t),i=!0)},o(f){g(t),i=!1},d(f){s[e].d(f),f&&y(r),c&&c.d(f),f&&y(l)}}}function Ue(n,e,t){let{stores:r}=e,{page:l}=e,{components:i}=e,{props_0:a=null}=e,{props_1:s=null}=e,{props_2:o=null}=e;we("__svelte__",r),be(r.page.notify);let c=!1,f=!1,h=null;return ve(()=>{const u=r.page.subscribe(()=>{c&&(t(5,f=!0),t(6,h=document.title||"untitled page"))});return t(4,c=!0),u}),n.$$set=u=>{"stores"in u&&t(7,r=u.stores),"page"in u&&t(8,l=u.page),"components"in u&&t(0,i=u.components),"props_0"in u&&t(1,a=u.props_0),"props_1"in u&&t(2,s=u.props_1),"props_2"in u&&t(3,o=u.props_2)},n.$$.update=()=>{n.$$.dirty&384&&r.page.set(l)},[i,a,s,o,c,f,h,r,l]}class Ae extends oe{constructor(e){super();le(this,e,Ue,Se,ce,{stores:7,page:8,components:0,props_0:1,props_1:2,props_2:3})}}const Pe="modulepreload",Z={},Te="/_app/",D=function(e,t){return!t||t.length===0?e():Promise.all(t.map(r=>{if(r=`${Te}${r}`,r in Z)return;Z[r]=!0;const l=r.endsWith(".css"),i=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${r}"]${i}`))return;const a=document.createElement("link");if(a.rel=l?"stylesheet":Pe,l||(a.as="script",a.crossOrigin=""),a.href=r,document.head.appendChild(a),l)return new Promise((s,o)=>{a.addEventListener("load",s),a.addEventListener("error",o)})})).then(()=>e())},$=[()=>D(()=>import("./pages/__layout.svelte-2dd96704.js"),["pages/__layout.svelte-2dd96704.js","assets/pages/__layout.svelte-a7861b78.css","chunks/vendor-d68c61c2.js"]),()=>D(()=>import("./error.svelte-97b7e85d.js"),["error.svelte-97b7e85d.js","chunks/vendor-d68c61c2.js"]),()=>D(()=>import("./pages/index.svelte-934bb81d.js"),["pages/index.svelte-934bb81d.js","assets/pages/index.svelte-c63fe1c6.css","chunks/vendor-d68c61c2.js"]),()=>D(()=>import("./pages/about.svelte-a7982a52.js"),["pages/about.svelte-a7982a52.js","assets/pages/about.svelte-bf4528fa.css","chunks/vendor-d68c61c2.js"]),()=>D(()=>import("./pages/todos/index.svelte-82693d56.js"),["pages/todos/index.svelte-82693d56.js","assets/pages/todos/index.svelte-784042c1.css","chunks/vendor-d68c61c2.js"])],je=[[/^\/$/,[$[0],$[2]],[$[1]]],[/^\/about\/?$/,[$[0],$[3]],[$[1]]],,[/^\/todos\/?$/,[$[0],$[4]],[$[1]]]],Ne=[$[0](),$[1]()];function Oe(n){let e=n.baseURI;if(!e){const t=n.getElementsByTagName("base");e=t.length?t[0].href:n.URL}return e}let x="";function Ce(n){x=n.base,n.assets}function z(){return{x:pageXOffset,y:pageYOffset}}function ee(n){return n.composedPath().find(t=>t instanceof Node&&t.nodeName.toUpperCase()==="A")}function te(n){return n instanceof SVGAElement?new URL(n.href.baseVal,document.baseURI):new URL(n.href)}class Ie{constructor({base:e,routes:t,trailing_slash:r,renderer:l}){this.base=e,this.routes=t,this.trailing_slash=r,this.navigating=0,this.renderer=l,l.router=this,this.enabled=!0,document.body.setAttribute("tabindex","-1"),history.replaceState(history.state||{},"",location.href)}init_listeners(){"scrollRestoration"in history&&(history.scrollRestoration="manual"),addEventListener("beforeunload",()=>{history.scrollRestoration="auto"}),addEventListener("load",()=>{history.scrollRestoration="manual"});let e;addEventListener("scroll",()=>{clearTimeout(e),e=setTimeout(()=>{const i=Y(A({},history.state||{}),{"sveltekit:scroll":z()});history.replaceState(i,document.title,window.location.href)},200)});const t=i=>{const a=ee(i);a&&a.href&&a.hasAttribute("sveltekit:prefetch")&&this.prefetch(te(a))};let r;const l=i=>{clearTimeout(r),r=setTimeout(()=>{var a;(a=i.target)==null||a.dispatchEvent(new CustomEvent("sveltekit:trigger_prefetch",{bubbles:!0}))},20)};addEventListener("touchstart",t),addEventListener("mousemove",l),addEventListener("sveltekit:trigger_prefetch",t),addEventListener("click",i=>{if(!this.enabled||i.button||i.which!==1||i.metaKey||i.ctrlKey||i.shiftKey||i.altKey||i.defaultPrevented)return;const a=ee(i);if(!a||!a.href)return;const s=te(a);if(s.toString()===location.href){location.hash||i.preventDefault();return}const c=(a.getAttribute("rel")||"").split(/\s+/);if(a.hasAttribute("download")||c&&c.includes("external")||(a instanceof SVGAElement?a.target.baseVal:a.target)||!this.owns(s))return;if(s.href.split("#")[0]===location.href.split("#")[0]){setTimeout(()=>history.pushState({},"",s.href));return}history.pushState({},"",s.href);const f=a.hasAttribute("sveltekit:noscroll");this._navigate(s,f?z():null,!1,[],s.hash),i.preventDefault()}),addEventListener("popstate",i=>{if(i.state&&this.enabled){const a=new URL(location.href);this._navigate(a,i.state["sveltekit:scroll"],!1,[])}})}owns(e){return e.origin===location.origin&&e.pathname.startsWith(this.base)}parse(e){if(this.owns(e)){const t=decodeURI(e.pathname.slice(this.base.length)||"/");return{id:e.pathname+e.search,routes:this.routes.filter(([r])=>r.test(t)),url:e,path:t}}}async goto(e,{noscroll:t=!1,replaceState:r=!1,keepfocus:l=!1,state:i={}}={},a){const s=new URL(e,Oe(document));return this.enabled&&this.owns(s)?(history[r?"replaceState":"pushState"](i,"",e),this._navigate(s,t?z():null,l,a,s.hash)):(location.href=s.href,new Promise(()=>{}))}enable(){this.enabled=!0}disable(){this.enabled=!1}async prefetch(e){const t=this.parse(e);if(!t)throw new Error("Attempted to prefetch a URL that does not belong to this app");return this.renderer.load(t)}async _navigate(e,t,r,l,i){const a=this.parse(e);if(!a)throw new Error("Attempted to navigate to a URL that does not belong to this app");this.navigating||dispatchEvent(new CustomEvent("sveltekit:navigation-start")),this.navigating++;let{pathname:s}=e;this.trailing_slash==="never"?s!=="/"&&s.endsWith("/")&&(s=s.slice(0,-1)):this.trailing_slash==="always"&&!e.pathname.split("/").pop().includes(".")&&!s.endsWith("/")&&(s+="/"),a.url=new URL(e.origin+s+e.search+e.hash),history.replaceState({},"",a.url),await this.renderer.handle_navigation(a,l,!1,{hash:i,scroll:t,keepfocus:r}),this.navigating--,this.navigating||dispatchEvent(new CustomEvent("sveltekit:navigation-end"))}}function se(n){return n instanceof Error||n&&n.name&&n.message?n:new Error(JSON.stringify(n))}function Ve(n){let e=5381,t=n.length;if(typeof n=="string")for(;t;)e=e*33^n.charCodeAt(--t);else for(;t;)e=e*33^n[--t];return(e>>>0).toString(36)}function De(n){const e=n.status&&n.status>=400&&n.status<=599&&!n.redirect;if(n.error||e){const t=n.status;if(!n.error&&e)return{status:t||500,error:new Error};const r=typeof n.error=="string"?new Error(n.error):n.error;return r instanceof Error?!t||t<400||t>599?(console.warn('"error" returned from load() without a valid status code \u2014 defaulting to 500'),{status:500,error:r}):{status:t,error:r}:{status:500,error:new Error(`"error" property returned from load() must be a string or instance of Error, received type "${typeof r}"`)}}if(n.redirect){if(!n.status||Math.floor(n.status/100)!==3)return{status:500,error:new Error('"redirect" property returned from load() must be accompanied by a 3xx status code')};if(typeof n.redirect!="string")return{status:500,error:new Error('"redirect" property returned from load() must be a string')}}if(n.context)throw new Error('You are returning "context" from a load function. "context" was renamed to "stuff", please adjust your code accordingly.');return n}function re(n){const e=W(n);let t=!0;function r(){t=!0,e.update(a=>a)}function l(a){t=!1,e.set(a)}function i(a){let s;return e.subscribe(o=>{(s===void 0||t&&o!==s)&&a(s=o)})}return{notify:r,set:l,subscribe:i}}function qe(n,e){const t=typeof n=="string"?n:n.url;let r=`script[data-type="svelte-data"][data-url=${JSON.stringify(t)}]`;e&&typeof e.body=="string"&&(r+=`[data-body="${Ve(e.body)}"]`);const l=document.querySelector(r);if(l&&l.textContent){const i=JSON.parse(l.textContent),{body:a}=i,s=X(i,["body"]);return Promise.resolve(new Response(a,s))}return fetch(n,e)}class Be{constructor({Root:e,fallback:t,target:r,session:l}){this.Root=e,this.fallback=t,this.router,this.target=r,this.started=!1,this.session_id=1,this.invalid=new Set,this.invalidating=null,this.autoscroll=!0,this.updating=!1,this.current={url:null,session_id:0,branch:[]},this.cache=new Map,this.loading={id:null,promise:null},this.stores={url:re({}),page:re({}),navigating:W(null),session:W(l)},this.$session=null,this.root=null;let i=!1;this.stores.session.subscribe(async a=>{if(this.$session=a,!i||!this.router)return;this.session_id+=1;const s=this.router.parse(new URL(location.href));s&&this.update(s,[],!0)}),i=!0}disable_scroll_handling(){(this.updating||!this.started)&&(this.autoscroll=!1)}async start({status:e,error:t,nodes:r,url:l,params:i}){const a=[];let s={},o,c;try{for(let f=0;f<r.length;f+=1){const h=f===r.length-1,u=await this._load_node({module:await r[f],url:l,params:i,stuff:s,status:h?e:void 0,error:h?t:void 0});if(a.push(u),u&&u.loaded)if(u.loaded.error){if(t)throw u.loaded.error;c={status:u.loaded.status,error:u.loaded.error,url:l}}else u.loaded.stuff&&(s=A(A({},s),u.loaded.stuff))}o=c?await this._load_error(c):await this._get_navigation_result_from_branch({url:l,params:i,branch:a,status:e,error:t})}catch(f){if(t)throw f;o=await this._load_error({status:500,error:se(f),url:l})}if(o.redirect){location.href=new URL(o.redirect,location.href).href;return}this._init(o)}async handle_navigation(e,t,r,l){this.started&&this.stores.navigating.set({from:this.current.url,to:e.url}),await this.update(e,t,r,l)}async update(e,t,r,l){var o;const i=this.token={};let a=await this._get_navigation_result(e,r);if(i!==this.token)return;if(this.invalid.clear(),a.redirect)if(t.length>10||t.includes(e.url.pathname))a=await this._load_error({status:500,error:new Error("Redirect loop"),url:e.url});else{this.router?this.router.goto(a.redirect,{replaceState:!0},[...t,e.url.pathname]):location.href=new URL(a.redirect,location.href).href;return}if(this.updating=!0,this.started?(this.current=a.state,this.root.$set(a.props),this.stores.navigating.set(null)):this._init(a),l){const{hash:c,scroll:f,keepfocus:h}=l;if(h||((o=getSelection())==null||o.removeAllRanges(),document.body.focus()),await F(),this.autoscroll){const u=c&&document.getElementById(c.slice(1));f?scrollTo(f.x,f.y):u?u.scrollIntoView():scrollTo(0,0)}}else await F();if(this.loading.promise=null,this.loading.id=null,this.autoscroll=!0,this.updating=!1,!this.router)return;const s=a.state.branch[a.state.branch.length-1];s&&s.module.router===!1?this.router.disable():this.router.enable()}load(e){return this.loading.promise=this._get_navigation_result(e,!1),this.loading.id=e.id,this.loading.promise}invalidate(e){return this.invalid.add(e),this.invalidating||(this.invalidating=Promise.resolve().then(async()=>{const t=this.router&&this.router.parse(new URL(location.href));t&&await this.update(t,[],!0),this.invalidating=null})),this.invalidating}_init(e){this.current=e.state;const t=document.querySelector("style[data-svelte]");t&&t.remove(),this.root=new this.Root({target:this.target,props:A({stores:this.stores},e.props),hydrate:!0}),this.started=!0}async _get_navigation_result(e,t){if(this.loading.id===e.id&&this.loading.promise)return this.loading.promise;for(let r=0;r<e.routes.length;r+=1){const l=e.routes[r];let i=r+1;for(;i<e.routes.length;){const s=e.routes[i];if(s[0].toString()===l[0].toString())s[1].forEach(o=>o()),i+=1;else break}const a=await this._load({route:l,info:e},t);if(a)return a}return await this._load_error({status:404,error:new Error(`Not found: ${e.url.pathname}`),url:e.url})}async _get_navigation_result_from_branch({url:e,params:t,branch:r,status:l,error:i}){const a=r.filter(Boolean),s=a.find(h=>h.loaded&&h.loaded.redirect),o={redirect:s&&s.loaded?s.loaded.redirect:void 0,state:{url:e,params:t,branch:r,session_id:this.session_id},props:{components:a.map(h=>h.module.default)}};for(let h=0;h<a.length;h+=1){const u=a[h].loaded;o.props[`props_${h}`]=u?await u.props:null}if(!this.current.url||e.href!==this.current.url.href){o.props.page={url:e,params:t,status:l,error:i};const h=(u,p)=>{Object.defineProperty(o.props.page,u,{get:()=>{throw new Error(`$page.${u} has been replaced by $page.url.${p}`)}})};h("origin","origin"),h("path","pathname"),h("query","searchParams")}const c=a[a.length-1],f=c.loaded&&c.loaded.maxage;if(f){const h=e.pathname+e.search;let u=!1;const p=()=>{this.cache.get(h)===o&&this.cache.delete(h),S(),clearTimeout(P)},P=setTimeout(p,f*1e3),S=this.stores.session.subscribe(()=>{u&&p()});u=!0,this.cache.set(h,o)}return o}async _load_node({status:e,error:t,module:r,url:l,params:i,stuff:a}){const s={module:r,uses:{params:new Set,url:!1,session:!1,stuff:!1,dependencies:[]},loaded:null,stuff:a},o={};for(const f in i)Object.defineProperty(o,f,{get(){return s.uses.params.add(f),i[f]},enumerable:!0});const c=this.$session;if(r.load){const{started:f}=this,h={params:o,get url(){return s.uses.url=!0,l},get session(){return s.uses.session=!0,c},get stuff(){return s.uses.stuff=!0,A({},a)},fetch(p,P){const S=typeof p=="string"?p:p.url,{href:U}=new URL(S,l);return s.uses.dependencies.push(U),f?fetch(p,P):qe(p,P)}};t&&(h.status=e,h.error=t);const u=await r.load.call(null,h);if(!u)return;s.loaded=De(u),s.loaded.stuff&&(s.stuff=s.loaded.stuff)}return s}async _load({route:e,info:{url:t,path:r}},l){const i=t.pathname+t.search;if(!l){const d=this.cache.get(i);if(d)return d}const[a,s,o,c]=e,f=c?c(a.exec(r)):{},h=this.current.url&&{url:i!==this.current.url.pathname+this.current.url.search,params:Object.keys(f).filter(d=>this.current.params[d]!==f[d]),session:this.session_id!==this.current.session_id};let u=[],p={},P=!1,S=200,U;s.forEach(d=>d());e:for(let d=0;d<s.length;d+=1){let _;try{if(!s[d])continue;const b=await s[d](),v=this.current.branch[d];if(!v||b!==v.module||h.url&&v.uses.url||h.params.some(N=>v.uses.params.has(N))||h.session&&v.uses.session||v.uses.dependencies.some(N=>this.invalid.has(N))||P&&v.uses.stuff){_=await this._load_node({module:b,url:t,params:f,stuff:p});const N=d===s.length-1;if(_&&_.loaded){if(_.loaded.error&&(S=_.loaded.status,U=_.loaded.error),_.loaded.redirect)return{redirect:_.loaded.redirect,props:{},state:this.current};_.loaded.stuff&&(P=!0)}else if(N&&b.load)return}else _=v}catch(b){S=500,U=se(b)}if(U){for(;d--;)if(o[d]){let b,v,q=d;for(;!(v=u[q]);)q-=1;try{if(b=await this._load_node({status:S,error:U,module:await o[d](),url:t,params:f,stuff:v.stuff}),b&&b.loaded&&b.loaded.error)continue;u=u.slice(0,q+1).concat(b);break e}catch{continue}}return await this._load_error({status:S,error:U,url:t})}else _&&_.loaded&&_.loaded.stuff&&(p=A(A({},p),_.loaded.stuff)),u.push(_)}return await this._get_navigation_result_from_branch({url:t,params:f,branch:u,status:S,error:U})}async _load_error({status:e,error:t,url:r}){const l={},i=await this._load_node({module:await this.fallback[0],url:r,params:l,stuff:{}}),a=[i,await this._load_node({status:e,error:t,module:await this.fallback[1],url:r,params:l,stuff:i&&i.loaded&&i.loaded.stuff||{}})];return await this._get_navigation_result_from_branch({url:r,params:l,branch:a,status:e,error:t})}}async function ze({paths:n,target:e,session:t,route:r,spa:l,trailing_slash:i,hydrate:a}){const s=new Be({Root:Ae,fallback:Ne,target:e,session:t}),o=r?new Ie({base:n.base,routes:je,trailing_slash:i,renderer:s}):null;Ce(n),a&&await s.start(a),o&&(l&&o.goto(location.href,{replaceState:!0},[]),o.init_listeners()),dispatchEvent(new CustomEvent("sveltekit:start"))}export{ze as start};
build/about/index.html ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="description" content="Svelte demo app" />
6
+ <link rel="icon" href="./favicon.png" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
8
+ <title>About</title>
9
+
10
+
11
+
12
+ <link rel="stylesheet" href="/_app/assets/start-61d1577b.css">
13
+ <link rel="stylesheet" href="/_app/assets/pages/__layout.svelte-a7861b78.css">
14
+ <link rel="stylesheet" href="/_app/assets/pages/about.svelte-bf4528fa.css">
15
+
16
+
17
+ </head>
18
+ <body>
19
+ <div id="svelte">
20
+
21
+
22
+ <header class="svelte-t2wq17"><div class="corner svelte-t2wq17"><a href="https://kit.svelte.dev" class="svelte-t2wq17"><img src="/_app/assets/svelte-logo-87df40b8.svg" alt="SvelteKit" class="svelte-t2wq17"></a></div>
23
+
24
+ <nav class="svelte-t2wq17"><svg viewBox="0 0 2 3" aria-hidden="true" class="svelte-t2wq17"><path d="M0,0 L1,2 C1.5,3 1.5,3 2,3 L2,0 Z" class="svelte-t2wq17"></path></svg>
25
+ <ul class="svelte-t2wq17"><li class="svelte-t2wq17"><a sveltekit:prefetch href="/" class="svelte-t2wq17">Home</a></li>
26
+ <li class="svelte-t2wq17 active"><a sveltekit:prefetch href="/about" class="svelte-t2wq17">About</a></li>
27
+ <li class="svelte-t2wq17"><a sveltekit:prefetch href="/todos" class="svelte-t2wq17">Todos</a></li></ul>
28
+ <svg viewBox="0 0 2 3" aria-hidden="true" class="svelte-t2wq17"><path d="M0,0 L0,3 C0.5,3 0.5,3 1,2 L2,0 Z" class="svelte-t2wq17"></path></svg></nav>
29
+
30
+ <div class="corner svelte-t2wq17"></div>
31
+ </header>
32
+
33
+ <main class="svelte-1izrdc8">
34
+
35
+ <div class="content svelte-cf77e8"><h1>About this app</h1>
36
+
37
+ <p>This is a <a href="https://kit.svelte.dev">SvelteKit</a> app. You can make your own by typing the
38
+ following into your command line and following the prompts:
39
+ </p>
40
+
41
+
42
+ <pre>npm init svelte@next</pre>
43
+
44
+ <p>The page you&#39;re looking at is purely static HTML, with no client-side interactivity needed.
45
+ Because of that, we don&#39;t need to load any JavaScript. Try viewing the page&#39;s source, or opening
46
+ the devtools network panel and reloading.
47
+ </p>
48
+
49
+ <p>The <a href="/todos">TODOs</a> page illustrates SvelteKit&#39;s data loading and form handling. Try using
50
+ it with JavaScript disabled!
51
+ </p>
52
+ </div></main>
53
+
54
+ <footer class="svelte-1izrdc8"><p>visit <a href="https://kit.svelte.dev" class="svelte-1izrdc8">kit.svelte.dev</a> to learn SvelteKit</p>
55
+ </footer>
56
+
57
+ </div>
58
+ </body>
59
+ </html>
build/favicon.png ADDED
build/index.html ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="description" content="Svelte demo app" />
6
+ <link rel="icon" href="./favicon.png" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
8
+ <title>Home</title>
9
+
10
+
11
+
12
+ <link rel="stylesheet" href="/_app/assets/start-61d1577b.css">
13
+ <link rel="stylesheet" href="/_app/assets/pages/__layout.svelte-a7861b78.css">
14
+ <link rel="stylesheet" href="/_app/assets/pages/index.svelte-c63fe1c6.css">
15
+ <link rel="modulepreload" href="/_app/start-39c66b50.js">
16
+ <link rel="modulepreload" href="/_app/chunks/vendor-d68c61c2.js">
17
+ <link rel="modulepreload" href="/_app/pages/__layout.svelte-2dd96704.js">
18
+ <link rel="modulepreload" href="/_app/pages/index.svelte-934bb81d.js">
19
+
20
+ <script type="module">
21
+ import { start } from "/_app/start-39c66b50.js";
22
+ start({
23
+ target: document.querySelector("#svelte"),
24
+ paths: {"base":"","assets":""},
25
+ session: {},
26
+ route: true,
27
+ spa: false,
28
+ trailing_slash: "never",
29
+ hydrate: {
30
+ status: 200,
31
+ error: null,
32
+ nodes: [
33
+ import("/_app/pages/__layout.svelte-2dd96704.js"),
34
+ import("/_app/pages/index.svelte-934bb81d.js")
35
+ ],
36
+ url: new URL("http://prerender/"),
37
+ params: {}
38
+ }
39
+ });
40
+ </script>
41
+ </head>
42
+ <body>
43
+ <div id="svelte">
44
+
45
+
46
+ <header class="svelte-t2wq17"><div class="corner svelte-t2wq17"><a href="https://kit.svelte.dev" class="svelte-t2wq17"><img src="/_app/assets/svelte-logo-87df40b8.svg" alt="SvelteKit" class="svelte-t2wq17"></a></div>
47
+
48
+ <nav class="svelte-t2wq17"><svg viewBox="0 0 2 3" aria-hidden="true" class="svelte-t2wq17"><path d="M0,0 L1,2 C1.5,3 1.5,3 2,3 L2,0 Z" class="svelte-t2wq17"></path></svg>
49
+ <ul class="svelte-t2wq17"><li class="svelte-t2wq17 active"><a sveltekit:prefetch href="/" class="svelte-t2wq17">Home</a></li>
50
+ <li class="svelte-t2wq17"><a sveltekit:prefetch href="/about" class="svelte-t2wq17">About</a></li>
51
+ <li class="svelte-t2wq17"><a sveltekit:prefetch href="/todos" class="svelte-t2wq17">Todos</a></li></ul>
52
+ <svg viewBox="0 0 2 3" aria-hidden="true" class="svelte-t2wq17"><path d="M0,0 L0,3 C0.5,3 0.5,3 1,2 L2,0 Z" class="svelte-t2wq17"></path></svg></nav>
53
+
54
+ <div class="corner svelte-t2wq17"></div>
55
+ </header>
56
+
57
+ <main class="svelte-1izrdc8">
58
+
59
+ <section class="svelte-mjk9ig"><h1 class="svelte-mjk9ig"><div class="welcome svelte-mjk9ig"><picture><source srcset="svelte-welcome.webp" type="image/webp">
60
+ <img src="svelte-welcome.png" alt="Welcome" class="svelte-mjk9ig"></picture></div>
61
+
62
+ to your new<br>SvelteKit app
63
+ </h1>
64
+
65
+ <h2>try editing <strong>src/routes/index.svelte</strong></h2>
66
+
67
+ <div class="counter svelte-139m1ow"><button aria-label="Decrease the counter by one" class="svelte-139m1ow"><svg aria-hidden="true" viewBox="0 0 1 1" class="svelte-139m1ow"><path d="M0,0.5 L1,0.5" class="svelte-139m1ow"></path></svg></button>
68
+
69
+ <div class="counter-viewport svelte-139m1ow"><div class="counter-digits svelte-139m1ow" style="transform: translate(0, 0%)"><strong style="top: -100%" aria-hidden="true" class="svelte-139m1ow">1</strong>
70
+ <strong class="svelte-139m1ow">0</strong></div></div>
71
+
72
+ <button aria-label="Increase the counter by one" class="svelte-139m1ow"><svg aria-hidden="true" viewBox="0 0 1 1" class="svelte-139m1ow"><path d="M0,0.5 L1,0.5 M0.5,0 L0.5,1" class="svelte-139m1ow"></path></svg></button>
73
+ </div>
74
+ </section></main>
75
+
76
+ <footer class="svelte-1izrdc8"><p>visit <a href="https://kit.svelte.dev" class="svelte-1izrdc8">kit.svelte.dev</a> to learn SvelteKit</p>
77
+ </footer>
78
+
79
+ </div>
80
+ </body>
81
+ </html>
build/robots.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ # https://www.robotstxt.org/robotstxt.html
2
+ User-agent: *
3
+ Disallow:
build/svelte-welcome.png ADDED
build/svelte-welcome.webp ADDED
build/todos.json ADDED
@@ -0,0 +1 @@
 
 
1
+ []
build/todos/index.html ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="description" content="Svelte demo app" />
6
+ <link rel="icon" href="./favicon.png" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
8
+ <title>Todos</title>
9
+
10
+
11
+
12
+ <link rel="stylesheet" href="/_app/assets/start-61d1577b.css">
13
+ <link rel="stylesheet" href="/_app/assets/pages/__layout.svelte-a7861b78.css">
14
+ <link rel="stylesheet" href="/_app/assets/pages/todos/index.svelte-784042c1.css">
15
+ <link rel="modulepreload" href="/_app/start-39c66b50.js">
16
+ <link rel="modulepreload" href="/_app/chunks/vendor-d68c61c2.js">
17
+ <link rel="modulepreload" href="/_app/pages/__layout.svelte-2dd96704.js">
18
+ <link rel="modulepreload" href="/_app/pages/todos/index.svelte-82693d56.js">
19
+
20
+ <script type="module">
21
+ import { start } from "/_app/start-39c66b50.js";
22
+ start({
23
+ target: document.querySelector("#svelte"),
24
+ paths: {"base":"","assets":""},
25
+ session: {},
26
+ route: true,
27
+ spa: false,
28
+ trailing_slash: "never",
29
+ hydrate: {
30
+ status: 200,
31
+ error: null,
32
+ nodes: [
33
+ import("/_app/pages/__layout.svelte-2dd96704.js"),
34
+ import("/_app/pages/todos/index.svelte-82693d56.js")
35
+ ],
36
+ url: new URL("http://prerender/todos"),
37
+ params: {}
38
+ }
39
+ });
40
+ </script>
41
+ </head>
42
+ <body>
43
+ <div id="svelte">
44
+
45
+
46
+ <header class="svelte-t2wq17"><div class="corner svelte-t2wq17"><a href="https://kit.svelte.dev" class="svelte-t2wq17"><img src="/_app/assets/svelte-logo-87df40b8.svg" alt="SvelteKit" class="svelte-t2wq17"></a></div>
47
+
48
+ <nav class="svelte-t2wq17"><svg viewBox="0 0 2 3" aria-hidden="true" class="svelte-t2wq17"><path d="M0,0 L1,2 C1.5,3 1.5,3 2,3 L2,0 Z" class="svelte-t2wq17"></path></svg>
49
+ <ul class="svelte-t2wq17"><li class="svelte-t2wq17"><a sveltekit:prefetch href="/" class="svelte-t2wq17">Home</a></li>
50
+ <li class="svelte-t2wq17"><a sveltekit:prefetch href="/about" class="svelte-t2wq17">About</a></li>
51
+ <li class="svelte-t2wq17 active"><a sveltekit:prefetch href="/todos" class="svelte-t2wq17">Todos</a></li></ul>
52
+ <svg viewBox="0 0 2 3" aria-hidden="true" class="svelte-t2wq17"><path d="M0,0 L0,3 C0.5,3 0.5,3 1,2 L2,0 Z" class="svelte-t2wq17"></path></svg></nav>
53
+
54
+ <div class="corner svelte-t2wq17"></div>
55
+ </header>
56
+
57
+ <main class="svelte-1izrdc8">
58
+
59
+ <div class="todos svelte-dmxqmd"><h1>Todos</h1>
60
+
61
+ <form class="new svelte-dmxqmd" action="/todos.json" method="post"><input name="text" aria-label="Add todo" placeholder="+ tap to add a todo" class="svelte-dmxqmd"></form>
62
+
63
+
64
+ </div></main>
65
+
66
+ <footer class="svelte-1izrdc8"><p>visit <a href="https://kit.svelte.dev" class="svelte-1izrdc8">kit.svelte.dev</a> to learn SvelteKit</p>
67
+ </footer>
68
+
69
+ <script type="application/json" data-type="svelte-data" data-url="/todos.json">{"status":200,"statusText":"","headers":{"content-type":"application/json; charset=utf-8"},"body":"[]"}</script></div>
70
+ </body>
71
+ </html>
jsconfig.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "compilerOptions": {
3
+ "baseUrl": ".",
4
+ "paths": {
5
+ "$lib": ["src/lib"],
6
+ "$lib/*": ["src/lib/*"]
7
+ }
8
+ },
9
+ "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"]
10
+ }
package.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "sp-static-noconfig",
3
+ "version": "0.0.1",
4
+ "scripts": {
5
+ "dev": "svelte-kit dev",
6
+ "build": "svelte-kit build",
7
+ "package": "svelte-kit package",
8
+ "preview": "svelte-kit preview"
9
+ },
10
+ "devDependencies": {
11
+ "@sveltejs/adapter-auto": "next",
12
+ "@sveltejs/kit": "next",
13
+ "svelte": "^3.44.0"
14
+ },
15
+ "type": "module",
16
+ "dependencies": {
17
+ "@fontsource/fira-mono": "^4.5.0",
18
+ "@lukeed/uuid": "^2.0.0",
19
+ "@sveltejs/adapter-static": "^1.0.0-next.24",
20
+ "cookie": "^0.4.1"
21
+ }
22
+ }
pnpm-lock.yaml ADDED
@@ -0,0 +1,472 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ lockfileVersion: 5.3
2
+
3
+ specifiers:
4
+ '@fontsource/fira-mono': ^4.5.0
5
+ '@lukeed/uuid': ^2.0.0
6
+ '@sveltejs/adapter-auto': next
7
+ '@sveltejs/adapter-static': ^1.0.0-next.24
8
+ '@sveltejs/kit': next
9
+ cookie: ^0.4.1
10
+ svelte: ^3.44.0
11
+
12
+ dependencies:
13
+ '@fontsource/fira-mono': 4.5.0
14
+ '@lukeed/uuid': 2.0.0
15
+ '@sveltejs/adapter-static': 1.0.0-next.24
16
+ cookie: 0.4.1
17
+
18
+ devDependencies:
19
+ '@sveltejs/adapter-auto': 1.0.0-next.10
20
+ '@sveltejs/kit': 1.0.0-next.218_svelte@3.45.0
21
+ svelte: 3.45.0
22
+
23
+ packages:
24
+
25
+ /@fontsource/fira-mono/4.5.0:
26
+ resolution: {integrity: sha512-KE+d3wmgq/YKM0BqgUF7p2yeBNi805Nfof1lC1wJ7E9i2EWoC363sGdKG+MQBVm+ei3GYZu+Bo8Xha1w1pkB7g==}
27
+ dev: false
28
+
29
+ /@iarna/toml/2.2.5:
30
+ resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==}
31
+ dev: true
32
+
33
+ /@lukeed/csprng/1.0.1:
34
+ resolution: {integrity: sha512-uSvJdwQU5nK+Vdf6zxcWAY2A8r7uqe+gePwLWzJ+fsQehq18pc0I2hJKwypZ2aLM90+Er9u1xn4iLJPZ+xlL4g==}
35
+ engines: {node: '>=8'}
36
+ dev: false
37
+
38
+ /@lukeed/uuid/2.0.0:
39
+ resolution: {integrity: sha512-dUz8OmYvlY5A9wXaroHIMSPASpSYRLCqbPvxGSyHguhtTQIy24lC+EGxQlwv71AhRCO55WOtgwhzQLpw27JaJQ==}
40
+ engines: {node: '>=8'}
41
+ dependencies:
42
+ '@lukeed/csprng': 1.0.1
43
+ dev: false
44
+
45
+ /@rollup/pluginutils/4.1.2:
46
+ resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==}
47
+ engines: {node: '>= 8.0.0'}
48
+ dependencies:
49
+ estree-walker: 2.0.2
50
+ picomatch: 2.3.1
51
+ dev: true
52
+
53
+ /@sveltejs/adapter-auto/1.0.0-next.10:
54
+ resolution: {integrity: sha512-ETMhpg8bUtLpRAqGxuRmm7teRCdg8u8ANF6eC8R2QLSy1ylPP6RPPg8D5q6LiJavVG/kHMH8fj7vvfobpVfwFg==}
55
+ dependencies:
56
+ '@sveltejs/adapter-cloudflare': 1.0.0-next.7
57
+ '@sveltejs/adapter-netlify': 1.0.0-next.38
58
+ '@sveltejs/adapter-vercel': 1.0.0-next.36
59
+ dev: true
60
+
61
+ /@sveltejs/adapter-cloudflare/1.0.0-next.7:
62
+ resolution: {integrity: sha512-P2rq+Tdvv9IKX4SVrIRqgZ2DnjmpPjp/bhAISs6cgbMzc2AmLMCeN++DXAZAVWugIjF1freLmtXcCl3/0HByNg==}
63
+ dependencies:
64
+ esbuild: 0.13.15
65
+ dev: true
66
+
67
+ /@sveltejs/adapter-netlify/1.0.0-next.38:
68
+ resolution: {integrity: sha512-u0mCV3YOBakdeiIt4Sd7buiTACkzHpPuUoSkLjtmJ5PsbrvtFhFNKE4AARqI8nDoX1yjs6pUKlIX3IZDmEeM5A==}
69
+ dependencies:
70
+ '@iarna/toml': 2.2.5
71
+ esbuild: 0.13.15
72
+ tiny-glob: 0.2.9
73
+ dev: true
74
+
75
+ /@sveltejs/adapter-static/1.0.0-next.24:
76
+ resolution: {integrity: sha512-lMiwZrZumWRrTQxaj9pFs5oW0h/97spyDl1QjmnkNaA006WeqornoETt31WpU0Lz2/2uYNXvUBBcL1LGc9Vylg==}
77
+ dependencies:
78
+ tiny-glob: 0.2.9
79
+ dev: false
80
+
81
+ /@sveltejs/adapter-vercel/1.0.0-next.36:
82
+ resolution: {integrity: sha512-IpvxBb5n9k5l6nikwq8mCeBg0VtSqAt7AY/PSujwjGs5KqYx3CrVu/Cyj4b0dyCO2Yyt2dr2QjS/R2R42PRBeA==}
83
+ dependencies:
84
+ esbuild: 0.13.15
85
+ dev: true
86
+
87
+ /@sveltejs/kit/1.0.0-next.218_svelte@3.45.0:
88
+ resolution: {integrity: sha512-reimVgWaFq0qIvxkKnWE4nq35JFd6yQ6Lkge+o3WkX3hV8CAtrLbSAzFaEIUu5Ph09gJkl2PnqQa32WVDaeBZg==}
89
+ engines: {node: '>=14.13'}
90
+ hasBin: true
91
+ peerDependencies:
92
+ svelte: ^3.44.0
93
+ dependencies:
94
+ '@sveltejs/vite-plugin-svelte': 1.0.0-next.34_svelte@3.45.0+vite@2.7.10
95
+ sade: 1.8.1
96
+ svelte: 3.45.0
97
+ vite: 2.7.10
98
+ transitivePeerDependencies:
99
+ - diff-match-patch
100
+ - less
101
+ - sass
102
+ - stylus
103
+ - supports-color
104
+ dev: true
105
+
106
+ /@sveltejs/vite-plugin-svelte/1.0.0-next.34_svelte@3.45.0+vite@2.7.10:
107
+ resolution: {integrity: sha512-qZH2jndijrdkvevgbO7OH3iQsviM5Kz7h5APiNP4yEMZTrwq9bifzYvco6BprwtPvLb5wYlRVFZUOdusY6AovQ==}
108
+ engines: {node: ^14.13.1 || >= 16}
109
+ peerDependencies:
110
+ diff-match-patch: ^1.0.5
111
+ svelte: ^3.44.0
112
+ vite: ^2.7.0
113
+ peerDependenciesMeta:
114
+ diff-match-patch:
115
+ optional: true
116
+ dependencies:
117
+ '@rollup/pluginutils': 4.1.2
118
+ debug: 4.3.3
119
+ kleur: 4.1.4
120
+ magic-string: 0.25.7
121
+ require-relative: 0.8.7
122
+ svelte: 3.45.0
123
+ svelte-hmr: 0.14.9_svelte@3.45.0
124
+ vite: 2.7.10
125
+ transitivePeerDependencies:
126
+ - supports-color
127
+ dev: true
128
+
129
+ /cookie/0.4.1:
130
+ resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==}
131
+ engines: {node: '>= 0.6'}
132
+ dev: false
133
+
134
+ /debug/4.3.3:
135
+ resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==}
136
+ engines: {node: '>=6.0'}
137
+ peerDependencies:
138
+ supports-color: '*'
139
+ peerDependenciesMeta:
140
+ supports-color:
141
+ optional: true
142
+ dependencies:
143
+ ms: 2.1.2
144
+ dev: true
145
+
146
+ /esbuild-android-arm64/0.13.15:
147
+ resolution: {integrity: sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==}
148
+ cpu: [arm64]
149
+ os: [android]
150
+ requiresBuild: true
151
+ dev: true
152
+ optional: true
153
+
154
+ /esbuild-darwin-64/0.13.15:
155
+ resolution: {integrity: sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==}
156
+ cpu: [x64]
157
+ os: [darwin]
158
+ requiresBuild: true
159
+ dev: true
160
+ optional: true
161
+
162
+ /esbuild-darwin-arm64/0.13.15:
163
+ resolution: {integrity: sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==}
164
+ cpu: [arm64]
165
+ os: [darwin]
166
+ requiresBuild: true
167
+ dev: true
168
+ optional: true
169
+
170
+ /esbuild-freebsd-64/0.13.15:
171
+ resolution: {integrity: sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==}
172
+ cpu: [x64]
173
+ os: [freebsd]
174
+ requiresBuild: true
175
+ dev: true
176
+ optional: true
177
+
178
+ /esbuild-freebsd-arm64/0.13.15:
179
+ resolution: {integrity: sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==}
180
+ cpu: [arm64]
181
+ os: [freebsd]
182
+ requiresBuild: true
183
+ dev: true
184
+ optional: true
185
+
186
+ /esbuild-linux-32/0.13.15:
187
+ resolution: {integrity: sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==}
188
+ cpu: [ia32]
189
+ os: [linux]
190
+ requiresBuild: true
191
+ dev: true
192
+ optional: true
193
+
194
+ /esbuild-linux-64/0.13.15:
195
+ resolution: {integrity: sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==}
196
+ cpu: [x64]
197
+ os: [linux]
198
+ requiresBuild: true
199
+ dev: true
200
+ optional: true
201
+
202
+ /esbuild-linux-arm/0.13.15:
203
+ resolution: {integrity: sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==}
204
+ cpu: [arm]
205
+ os: [linux]
206
+ requiresBuild: true
207
+ dev: true
208
+ optional: true
209
+
210
+ /esbuild-linux-arm64/0.13.15:
211
+ resolution: {integrity: sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==}
212
+ cpu: [arm64]
213
+ os: [linux]
214
+ requiresBuild: true
215
+ dev: true
216
+ optional: true
217
+
218
+ /esbuild-linux-mips64le/0.13.15:
219
+ resolution: {integrity: sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==}
220
+ cpu: [mips64el]
221
+ os: [linux]
222
+ requiresBuild: true
223
+ dev: true
224
+ optional: true
225
+
226
+ /esbuild-linux-ppc64le/0.13.15:
227
+ resolution: {integrity: sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==}
228
+ cpu: [ppc64]
229
+ os: [linux]
230
+ requiresBuild: true
231
+ dev: true
232
+ optional: true
233
+
234
+ /esbuild-netbsd-64/0.13.15:
235
+ resolution: {integrity: sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==}
236
+ cpu: [x64]
237
+ os: [netbsd]
238
+ requiresBuild: true
239
+ dev: true
240
+ optional: true
241
+
242
+ /esbuild-openbsd-64/0.13.15:
243
+ resolution: {integrity: sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==}
244
+ cpu: [x64]
245
+ os: [openbsd]
246
+ requiresBuild: true
247
+ dev: true
248
+ optional: true
249
+
250
+ /esbuild-sunos-64/0.13.15:
251
+ resolution: {integrity: sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==}
252
+ cpu: [x64]
253
+ os: [sunos]
254
+ requiresBuild: true
255
+ dev: true
256
+ optional: true
257
+
258
+ /esbuild-windows-32/0.13.15:
259
+ resolution: {integrity: sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==}
260
+ cpu: [ia32]
261
+ os: [win32]
262
+ requiresBuild: true
263
+ dev: true
264
+ optional: true
265
+
266
+ /esbuild-windows-64/0.13.15:
267
+ resolution: {integrity: sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==}
268
+ cpu: [x64]
269
+ os: [win32]
270
+ requiresBuild: true
271
+ dev: true
272
+ optional: true
273
+
274
+ /esbuild-windows-arm64/0.13.15:
275
+ resolution: {integrity: sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==}
276
+ cpu: [arm64]
277
+ os: [win32]
278
+ requiresBuild: true
279
+ dev: true
280
+ optional: true
281
+
282
+ /esbuild/0.13.15:
283
+ resolution: {integrity: sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==}
284
+ hasBin: true
285
+ requiresBuild: true
286
+ optionalDependencies:
287
+ esbuild-android-arm64: 0.13.15
288
+ esbuild-darwin-64: 0.13.15
289
+ esbuild-darwin-arm64: 0.13.15
290
+ esbuild-freebsd-64: 0.13.15
291
+ esbuild-freebsd-arm64: 0.13.15
292
+ esbuild-linux-32: 0.13.15
293
+ esbuild-linux-64: 0.13.15
294
+ esbuild-linux-arm: 0.13.15
295
+ esbuild-linux-arm64: 0.13.15
296
+ esbuild-linux-mips64le: 0.13.15
297
+ esbuild-linux-ppc64le: 0.13.15
298
+ esbuild-netbsd-64: 0.13.15
299
+ esbuild-openbsd-64: 0.13.15
300
+ esbuild-sunos-64: 0.13.15
301
+ esbuild-windows-32: 0.13.15
302
+ esbuild-windows-64: 0.13.15
303
+ esbuild-windows-arm64: 0.13.15
304
+ dev: true
305
+
306
+ /estree-walker/2.0.2:
307
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
308
+ dev: true
309
+
310
+ /fsevents/2.3.2:
311
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
312
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
313
+ os: [darwin]
314
+ requiresBuild: true
315
+ dev: true
316
+ optional: true
317
+
318
+ /function-bind/1.1.1:
319
+ resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
320
+ dev: true
321
+
322
+ /globalyzer/0.1.0:
323
+ resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
324
+
325
+ /globrex/0.1.2:
326
+ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
327
+
328
+ /has/1.0.3:
329
+ resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
330
+ engines: {node: '>= 0.4.0'}
331
+ dependencies:
332
+ function-bind: 1.1.1
333
+ dev: true
334
+
335
+ /is-core-module/2.8.1:
336
+ resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==}
337
+ dependencies:
338
+ has: 1.0.3
339
+ dev: true
340
+
341
+ /kleur/4.1.4:
342
+ resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==}
343
+ engines: {node: '>=6'}
344
+ dev: true
345
+
346
+ /magic-string/0.25.7:
347
+ resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==}
348
+ dependencies:
349
+ sourcemap-codec: 1.4.8
350
+ dev: true
351
+
352
+ /mri/1.2.0:
353
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
354
+ engines: {node: '>=4'}
355
+ dev: true
356
+
357
+ /ms/2.1.2:
358
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
359
+ dev: true
360
+
361
+ /nanoid/3.1.30:
362
+ resolution: {integrity: sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==}
363
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
364
+ hasBin: true
365
+ dev: true
366
+
367
+ /path-parse/1.0.7:
368
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
369
+ dev: true
370
+
371
+ /picocolors/1.0.0:
372
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
373
+ dev: true
374
+
375
+ /picomatch/2.3.1:
376
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
377
+ engines: {node: '>=8.6'}
378
+ dev: true
379
+
380
+ /postcss/8.4.5:
381
+ resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==}
382
+ engines: {node: ^10 || ^12 || >=14}
383
+ dependencies:
384
+ nanoid: 3.1.30
385
+ picocolors: 1.0.0
386
+ source-map-js: 1.0.1
387
+ dev: true
388
+
389
+ /require-relative/0.8.7:
390
+ resolution: {integrity: sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=}
391
+ dev: true
392
+
393
+ /resolve/1.21.0:
394
+ resolution: {integrity: sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==}
395
+ hasBin: true
396
+ dependencies:
397
+ is-core-module: 2.8.1
398
+ path-parse: 1.0.7
399
+ supports-preserve-symlinks-flag: 1.0.0
400
+ dev: true
401
+
402
+ /rollup/2.63.0:
403
+ resolution: {integrity: sha512-nps0idjmD+NXl6OREfyYXMn/dar3WGcyKn+KBzPdaLecub3x/LrId0wUcthcr8oZUAcZAR8NKcfGGFlNgGL1kQ==}
404
+ engines: {node: '>=10.0.0'}
405
+ hasBin: true
406
+ optionalDependencies:
407
+ fsevents: 2.3.2
408
+ dev: true
409
+
410
+ /sade/1.8.1:
411
+ resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
412
+ engines: {node: '>=6'}
413
+ dependencies:
414
+ mri: 1.2.0
415
+ dev: true
416
+
417
+ /source-map-js/1.0.1:
418
+ resolution: {integrity: sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==}
419
+ engines: {node: '>=0.10.0'}
420
+ dev: true
421
+
422
+ /sourcemap-codec/1.4.8:
423
+ resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
424
+ dev: true
425
+
426
+ /supports-preserve-symlinks-flag/1.0.0:
427
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
428
+ engines: {node: '>= 0.4'}
429
+ dev: true
430
+
431
+ /svelte-hmr/0.14.9_svelte@3.45.0:
432
+ resolution: {integrity: sha512-bKE9+4qb4sAnA+TKHiYurUl970rjA0XmlP9TEP7K/ncyWz3m81kA4HOgmlZK/7irGK7gzZlaPDI3cmf8fp/+tg==}
433
+ peerDependencies:
434
+ svelte: '>=3.19.0'
435
+ dependencies:
436
+ svelte: 3.45.0
437
+ dev: true
438
+
439
+ /svelte/3.45.0:
440
+ resolution: {integrity: sha512-6AWftH2eqqKLYH1HvKpuUWe8OfjflarhegN57P/Cqwc2Rb2F5oIdDtANU/jMscyZMzG0v6nTQox0siZR9cmRVQ==}
441
+ engines: {node: '>= 8'}
442
+ dev: true
443
+
444
+ /tiny-glob/0.2.9:
445
+ resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
446
+ dependencies:
447
+ globalyzer: 0.1.0
448
+ globrex: 0.1.2
449
+
450
+ /vite/2.7.10:
451
+ resolution: {integrity: sha512-KEY96ntXUid1/xJihJbgmLZx7QSC2D4Tui0FdS0Old5OokYzFclcofhtxtjDdGOk/fFpPbHv9yw88+rB93Tb8w==}
452
+ engines: {node: '>=12.2.0'}
453
+ hasBin: true
454
+ peerDependencies:
455
+ less: '*'
456
+ sass: '*'
457
+ stylus: '*'
458
+ peerDependenciesMeta:
459
+ less:
460
+ optional: true
461
+ sass:
462
+ optional: true
463
+ stylus:
464
+ optional: true
465
+ dependencies:
466
+ esbuild: 0.13.15
467
+ postcss: 8.4.5
468
+ resolve: 1.21.0
469
+ rollup: 2.63.0
470
+ optionalDependencies:
471
+ fsevents: 2.3.2
472
+ dev: true
src/app.css ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import '@fontsource/fira-mono';
2
+
3
+ :root {
4
+ font-family: Arial, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,
5
+ Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
6
+ --font-mono: 'Fira Mono', monospace;
7
+ --pure-white: #ffffff;
8
+ --primary-color: #b9c6d2;
9
+ --secondary-color: #d0dde9;
10
+ --tertiary-color: #edf0f8;
11
+ --accent-color: #ff3e00;
12
+ --heading-color: rgba(0, 0, 0, 0.7);
13
+ --text-color: #444444;
14
+ --background-without-opacity: rgba(255, 255, 255, 0.7);
15
+ --column-width: 42rem;
16
+ --column-margin-top: 4rem;
17
+ }
18
+
19
+ body {
20
+ min-height: 100vh;
21
+ margin: 0;
22
+ background-color: var(--primary-color);
23
+ background: linear-gradient(
24
+ 180deg,
25
+ var(--primary-color) 0%,
26
+ var(--secondary-color) 10.45%,
27
+ var(--tertiary-color) 41.35%
28
+ );
29
+ }
30
+
31
+ body::before {
32
+ content: '';
33
+ width: 80vw;
34
+ height: 100vh;
35
+ position: absolute;
36
+ top: 0;
37
+ left: 10vw;
38
+ z-index: -1;
39
+ background: radial-gradient(
40
+ 50% 50% at 50% 50%,
41
+ var(--pure-white) 0%,
42
+ rgba(255, 255, 255, 0) 100%
43
+ );
44
+ opacity: 0.05;
45
+ }
46
+
47
+ #svelte {
48
+ min-height: 100vh;
49
+ display: flex;
50
+ flex-direction: column;
51
+ }
52
+
53
+ h1,
54
+ h2,
55
+ p {
56
+ font-weight: 400;
57
+ color: var(--heading-color);
58
+ }
59
+
60
+ p {
61
+ line-height: 1.5;
62
+ }
63
+
64
+ a {
65
+ color: var(--accent-color);
66
+ text-decoration: none;
67
+ }
68
+
69
+ a:hover {
70
+ text-decoration: underline;
71
+ }
72
+
73
+ h1 {
74
+ font-size: 2rem;
75
+ text-align: center;
76
+ }
77
+
78
+ h2 {
79
+ font-size: 1rem;
80
+ }
81
+
82
+ pre {
83
+ font-size: 16px;
84
+ font-family: var(--font-mono);
85
+ background-color: rgba(255, 255, 255, 0.45);
86
+ border-radius: 3px;
87
+ box-shadow: 2px 2px 6px rgb(255 255 255 / 25%);
88
+ padding: 0.5em;
89
+ overflow-x: auto;
90
+ color: var(--text-color);
91
+ }
92
+
93
+ input,
94
+ button {
95
+ font-size: inherit;
96
+ font-family: inherit;
97
+ }
98
+
99
+ button:focus:not(:focus-visible) {
100
+ outline: none;
101
+ }
102
+
103
+ @media (min-width: 720px) {
104
+ h1 {
105
+ font-size: 2.4rem;
106
+ }
107
+ }
src/app.html ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="description" content="Svelte demo app" />
6
+ <link rel="icon" href="%svelte.assets%/favicon.png" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
8
+ %svelte.head%
9
+ </head>
10
+ <body>
11
+ <div id="svelte">%svelte.body%</div>
12
+ </body>
13
+ </html>
src/global.d.ts ADDED
@@ -0,0 +1 @@
 
 
1
+ /// <reference types="@sveltejs/kit" />
src/hooks.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import cookie from 'cookie';
2
+ import { v4 as uuid } from '@lukeed/uuid';
3
+
4
+ export const handle = async ({ request, resolve }) => {
5
+ const cookies = cookie.parse(request.headers.cookie || '');
6
+ request.locals.userid = cookies.userid || uuid();
7
+
8
+ // TODO https://github.com/sveltejs/kit/issues/1046
9
+ const method = request.url.searchParams.get('_method');
10
+ if (method) {
11
+ request.method = method.toUpperCase();
12
+ }
13
+
14
+ const response = await resolve(request);
15
+
16
+ if (!cookies.userid) {
17
+ // if this is the first time the user has visited this app,
18
+ // set a cookie so that we recognise them when they return
19
+ response.headers['set-cookie'] = cookie.serialize('userid', request.locals.userid, {
20
+ path: '/',
21
+ httpOnly: true
22
+ });
23
+ }
24
+
25
+ return response;
26
+ };
src/lib/Counter.svelte ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script>
2
+ import { spring } from 'svelte/motion';
3
+
4
+ let count = 0;
5
+
6
+ const displayed_count = spring();
7
+ $: displayed_count.set(count);
8
+ $: offset = modulo($displayed_count, 1);
9
+
10
+ function modulo(n, m) {
11
+ // handle negative numbers
12
+ return ((n % m) + m) % m;
13
+ }
14
+ </script>
15
+
16
+ <div class="counter">
17
+ <button on:click={() => (count -= 1)} aria-label="Decrease the counter by one">
18
+ <svg aria-hidden="true" viewBox="0 0 1 1">
19
+ <path d="M0,0.5 L1,0.5" />
20
+ </svg>
21
+ </button>
22
+
23
+ <div class="counter-viewport">
24
+ <div class="counter-digits" style="transform: translate(0, {100 * offset}%)">
25
+ <strong style="top: -100%" aria-hidden="true">{Math.floor($displayed_count + 1)}</strong>
26
+ <strong>{Math.floor($displayed_count)}</strong>
27
+ </div>
28
+ </div>
29
+
30
+ <button on:click={() => (count += 1)} aria-label="Increase the counter by one">
31
+ <svg aria-hidden="true" viewBox="0 0 1 1">
32
+ <path d="M0,0.5 L1,0.5 M0.5,0 L0.5,1" />
33
+ </svg>
34
+ </button>
35
+ </div>
36
+
37
+ <style>
38
+ .counter {
39
+ display: flex;
40
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
41
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
42
+ margin: 1rem 0;
43
+ }
44
+
45
+ .counter button {
46
+ width: 2em;
47
+ padding: 0;
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ border: 0;
52
+ background-color: transparent;
53
+ color: var(--text-color);
54
+ font-size: 2rem;
55
+ }
56
+
57
+ .counter button:hover {
58
+ background-color: var(--secondary-color);
59
+ }
60
+
61
+ svg {
62
+ width: 25%;
63
+ height: 25%;
64
+ }
65
+
66
+ path {
67
+ vector-effect: non-scaling-stroke;
68
+ stroke-width: 2px;
69
+ stroke: var(--text-color);
70
+ }
71
+
72
+ .counter-viewport {
73
+ width: 8em;
74
+ height: 4em;
75
+ overflow: hidden;
76
+ text-align: center;
77
+ position: relative;
78
+ }
79
+
80
+ .counter-viewport strong {
81
+ position: absolute;
82
+ display: flex;
83
+ width: 100%;
84
+ height: 100%;
85
+ font-weight: 400;
86
+ color: var(--accent-color);
87
+ font-size: 4rem;
88
+ align-items: center;
89
+ justify-content: center;
90
+ }
91
+
92
+ .counter-digits {
93
+ position: absolute;
94
+ width: 100%;
95
+ height: 100%;
96
+ }
97
+ </style>
src/lib/form.js ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // this action (https://svelte.dev/tutorial/actions) allows us to
2
+ // progressively enhance a <form> that already works without JS
3
+ export function enhance(form, { pending, error, result }) {
4
+ let current_token;
5
+
6
+ async function handle_submit(e) {
7
+ const token = (current_token = {});
8
+
9
+ e.preventDefault();
10
+
11
+ const body = new FormData(form);
12
+
13
+ if (pending) pending(body, form);
14
+
15
+ try {
16
+ const res = await fetch(form.action, {
17
+ method: form.method,
18
+ headers: {
19
+ accept: 'application/json'
20
+ },
21
+ body
22
+ });
23
+
24
+ if (token !== current_token) return;
25
+
26
+ if (res.ok) {
27
+ result(res, form);
28
+ } else if (error) {
29
+ error(res, null, form);
30
+ } else {
31
+ console.error(await res.text());
32
+ }
33
+ } catch (e) {
34
+ if (error) {
35
+ error(null, e, form);
36
+ } else {
37
+ throw e;
38
+ }
39
+ }
40
+ }
41
+
42
+ form.addEventListener('submit', handle_submit);
43
+
44
+ return {
45
+ destroy() {
46
+ form.removeEventListener('submit', handle_submit);
47
+ }
48
+ };
49
+ }
src/lib/header/Header.svelte ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script>
2
+ import { page } from '$app/stores';
3
+ import logo from './svelte-logo.svg';
4
+ </script>
5
+
6
+ <header>
7
+ <div class="corner">
8
+ <a href="https://kit.svelte.dev">
9
+ <img src={logo} alt="SvelteKit" />
10
+ </a>
11
+ </div>
12
+
13
+ <nav>
14
+ <svg viewBox="0 0 2 3" aria-hidden="true">
15
+ <path d="M0,0 L1,2 C1.5,3 1.5,3 2,3 L2,0 Z" />
16
+ </svg>
17
+ <ul>
18
+ <li class:active={$page.url.pathname === '/'}><a sveltekit:prefetch href="/">Home</a></li>
19
+ <li class:active={$page.url.pathname === '/about'}>
20
+ <a sveltekit:prefetch href="/about">About</a>
21
+ </li>
22
+ <li class:active={$page.url.pathname === '/todos'}>
23
+ <a sveltekit:prefetch href="/todos">Todos</a>
24
+ </li>
25
+ </ul>
26
+ <svg viewBox="0 0 2 3" aria-hidden="true">
27
+ <path d="M0,0 L0,3 C0.5,3 0.5,3 1,2 L2,0 Z" />
28
+ </svg>
29
+ </nav>
30
+
31
+ <div class="corner">
32
+ <!-- TODO put something else here? github link? -->
33
+ </div>
34
+ </header>
35
+
36
+ <style>
37
+ header {
38
+ display: flex;
39
+ justify-content: space-between;
40
+ }
41
+
42
+ .corner {
43
+ width: 3em;
44
+ height: 3em;
45
+ }
46
+
47
+ .corner a {
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ width: 100%;
52
+ height: 100%;
53
+ }
54
+
55
+ .corner img {
56
+ width: 2em;
57
+ height: 2em;
58
+ object-fit: contain;
59
+ }
60
+
61
+ nav {
62
+ display: flex;
63
+ justify-content: center;
64
+ --background: rgba(255, 255, 255, 0.7);
65
+ }
66
+
67
+ svg {
68
+ width: 2em;
69
+ height: 3em;
70
+ display: block;
71
+ }
72
+
73
+ path {
74
+ fill: var(--background);
75
+ }
76
+
77
+ ul {
78
+ position: relative;
79
+ padding: 0;
80
+ margin: 0;
81
+ height: 3em;
82
+ display: flex;
83
+ justify-content: center;
84
+ align-items: center;
85
+ list-style: none;
86
+ background: var(--background);
87
+ background-size: contain;
88
+ }
89
+
90
+ li {
91
+ position: relative;
92
+ height: 100%;
93
+ }
94
+
95
+ li.active::before {
96
+ --size: 6px;
97
+ content: '';
98
+ width: 0;
99
+ height: 0;
100
+ position: absolute;
101
+ top: 0;
102
+ left: calc(50% - var(--size));
103
+ border: var(--size) solid transparent;
104
+ border-top: var(--size) solid var(--accent-color);
105
+ }
106
+
107
+ nav a {
108
+ display: flex;
109
+ height: 100%;
110
+ align-items: center;
111
+ padding: 0 1em;
112
+ color: var(--heading-color);
113
+ font-weight: 700;
114
+ font-size: 0.8rem;
115
+ text-transform: uppercase;
116
+ letter-spacing: 0.1em;
117
+ text-decoration: none;
118
+ transition: color 0.2s linear;
119
+ }
120
+
121
+ a:hover {
122
+ color: var(--accent-color);
123
+ }
124
+ </style>
src/lib/header/svelte-logo.svg ADDED
src/routes/__layout.svelte ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script>
2
+ import Header from '$lib/header/Header.svelte';
3
+ import '../app.css';
4
+ </script>
5
+
6
+ <Header />
7
+
8
+ <main>
9
+ <slot />
10
+ </main>
11
+
12
+ <footer>
13
+ <p>visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to learn SvelteKit</p>
14
+ </footer>
15
+
16
+ <style>
17
+ main {
18
+ flex: 1;
19
+ display: flex;
20
+ flex-direction: column;
21
+ padding: 1rem;
22
+ width: 100%;
23
+ max-width: 1024px;
24
+ margin: 0 auto;
25
+ box-sizing: border-box;
26
+ }
27
+
28
+ footer {
29
+ display: flex;
30
+ flex-direction: column;
31
+ justify-content: center;
32
+ align-items: center;
33
+ padding: 40px;
34
+ }
35
+
36
+ footer a {
37
+ font-weight: bold;
38
+ }
39
+
40
+ @media (min-width: 480px) {
41
+ footer {
42
+ padding: 40px 0;
43
+ }
44
+ }
45
+ </style>
src/routes/about.svelte ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script context="module">
2
+ import { browser, dev } from '$app/env';
3
+
4
+ // we don't need any JS on this page, though we'll load
5
+ // it in dev so that we get hot module replacement...
6
+ export const hydrate = dev;
7
+
8
+ // ...but if the client-side router is already loaded
9
+ // (i.e. we came here from elsewhere in the app), use it
10
+ export const router = browser;
11
+
12
+ // since there's no dynamic data here, we can prerender
13
+ // it so that it gets served as a static asset in prod
14
+ export const prerender = true;
15
+ </script>
16
+
17
+ <svelte:head>
18
+ <title>About</title>
19
+ </svelte:head>
20
+
21
+ <div class="content">
22
+ <h1>About this app</h1>
23
+
24
+ <p>
25
+ This is a <a href="https://kit.svelte.dev">SvelteKit</a> app. You can make your own by typing the
26
+ following into your command line and following the prompts:
27
+ </p>
28
+
29
+ <!-- TODO lose the @next! -->
30
+ <pre>npm init svelte@next</pre>
31
+
32
+ <p>
33
+ The page you're looking at is purely static HTML, with no client-side interactivity needed.
34
+ Because of that, we don't need to load any JavaScript. Try viewing the page's source, or opening
35
+ the devtools network panel and reloading.
36
+ </p>
37
+
38
+ <p>
39
+ The <a href="/todos">TODOs</a> page illustrates SvelteKit's data loading and form handling. Try using
40
+ it with JavaScript disabled!
41
+ </p>
42
+ </div>
43
+
44
+ <style>
45
+ .content {
46
+ width: 100%;
47
+ max-width: var(--column-width);
48
+ margin: var(--column-margin-top) auto 0 auto;
49
+ }
50
+ </style>
src/routes/index.svelte ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script context="module">
2
+ export const prerender = true;
3
+ </script>
4
+
5
+ <script>
6
+ import Counter from '$lib/Counter.svelte';
7
+ </script>
8
+
9
+ <svelte:head>
10
+ <title>Home</title>
11
+ </svelte:head>
12
+
13
+ <section>
14
+ <h1>
15
+ <div class="welcome">
16
+ <picture>
17
+ <source srcset="svelte-welcome.webp" type="image/webp" />
18
+ <img src="svelte-welcome.png" alt="Welcome" />
19
+ </picture>
20
+ </div>
21
+
22
+ to your new<br />SvelteKit app
23
+ </h1>
24
+
25
+ <h2>
26
+ try editing <strong>src/routes/index.svelte</strong>
27
+ </h2>
28
+
29
+ <Counter />
30
+ </section>
31
+
32
+ <style>
33
+ section {
34
+ display: flex;
35
+ flex-direction: column;
36
+ justify-content: center;
37
+ align-items: center;
38
+ flex: 1;
39
+ }
40
+
41
+ h1 {
42
+ width: 100%;
43
+ }
44
+
45
+ .welcome {
46
+ position: relative;
47
+ width: 100%;
48
+ height: 0;
49
+ padding: 0 0 calc(100% * 495 / 2048) 0;
50
+ }
51
+
52
+ .welcome img {
53
+ position: absolute;
54
+ width: 100%;
55
+ height: 100%;
56
+ top: 0;
57
+ display: block;
58
+ }
59
+ </style>
src/routes/todos/[uid].json.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { api } from './_api';
2
+
3
+ // PATCH /todos/:uid.json
4
+ export const patch = async (request) => {
5
+ return api(request, `todos/${request.locals.userid}/${request.params.uid}`, {
6
+ text: request.body.get('text'),
7
+ done: request.body.has('done') ? !!request.body.get('done') : undefined
8
+ });
9
+ };
10
+
11
+ // DELETE /todos/:uid.json
12
+ export const del = async (request) => {
13
+ return api(request, `todos/${request.locals.userid}/${request.params.uid}`);
14
+ };
src/routes/todos/_api.js ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ This module is used by the /todos.json and /todos/[uid].json
3
+ endpoints to make calls to api.svelte.dev, which stores todos
4
+ for each user. The leading underscore indicates that this is
5
+ a private module, _not_ an endpoint — visiting /todos/_api
6
+ will net you a 404 response.
7
+
8
+ (The data on the todo app will expire periodically; no
9
+ guarantees are made. Don't use it to organise your life.)
10
+ */
11
+
12
+ const base = 'https://api.svelte.dev';
13
+
14
+ export async function api(request, resource, data) {
15
+ // user must have a cookie set
16
+ if (!request.locals.userid) {
17
+ return { status: 401 };
18
+ }
19
+
20
+ const res = await fetch(`${base}/${resource}`, {
21
+ method: request.method,
22
+ headers: {
23
+ 'content-type': 'application/json'
24
+ },
25
+ body: data && JSON.stringify(data)
26
+ });
27
+
28
+ // if the request came from a <form> submission, the browser's default
29
+ // behaviour is to show the URL corresponding to the form's "action"
30
+ // attribute. in those cases, we want to redirect them back to the
31
+ // /todos page, rather than showing the response
32
+ if (res.ok && request.method !== 'GET' && request.headers.accept !== 'application/json') {
33
+ return {
34
+ status: 303,
35
+ headers: {
36
+ location: '/todos'
37
+ }
38
+ };
39
+ }
40
+
41
+ return {
42
+ status: res.status,
43
+ body: await res.json()
44
+ };
45
+ }
src/routes/todos/index.json.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { api } from './_api';
2
+
3
+ // GET /todos.json
4
+ export const get = async (request) => {
5
+ // request.locals.userid comes from src/hooks.js
6
+ const response = await api(request, `todos/${request.locals.userid}`);
7
+
8
+ if (response.status === 404) {
9
+ // user hasn't created a todo list.
10
+ // start with an empty array
11
+ return { body: [] };
12
+ }
13
+
14
+ return response;
15
+ };
16
+
17
+ // POST /todos.json
18
+ export const post = async (request) => {
19
+ const response = await api(request, `todos/${request.locals.userid}`, {
20
+ // because index.svelte posts a FormData object,
21
+ // request.body is _also_ a (readonly) FormData
22
+ // object, which allows us to get form data
23
+ // with the `body.get(key)` method
24
+ text: request.body.get('text')
25
+ });
26
+
27
+ return response;
28
+ };
src/routes/todos/index.svelte ADDED
@@ -0,0 +1,220 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script context="module">
2
+ import { enhance } from '$lib/form';
3
+
4
+ // see https://kit.svelte.dev/docs#loading
5
+ export const load = async ({ fetch }) => {
6
+ const res = await fetch('/todos.json');
7
+
8
+ if (res.ok) {
9
+ const todos = await res.json();
10
+
11
+ return {
12
+ props: { todos }
13
+ };
14
+ }
15
+
16
+ const { message } = await res.json();
17
+
18
+ return {
19
+ error: new Error(message)
20
+ };
21
+ };
22
+ </script>
23
+
24
+ <script>
25
+ import { scale } from 'svelte/transition';
26
+ import { flip } from 'svelte/animate';
27
+
28
+ export let todos;
29
+
30
+ async function patch(res) {
31
+ const todo = await res.json();
32
+
33
+ todos = todos.map((t) => {
34
+ if (t.uid === todo.uid) return todo;
35
+ return t;
36
+ });
37
+ }
38
+ </script>
39
+
40
+ <svelte:head>
41
+ <title>Todos</title>
42
+ </svelte:head>
43
+
44
+ <div class="todos">
45
+ <h1>Todos</h1>
46
+
47
+ <form
48
+ class="new"
49
+ action="/todos.json"
50
+ method="post"
51
+ use:enhance={{
52
+ result: async (res, form) => {
53
+ const created = await res.json();
54
+ todos = [...todos, created];
55
+
56
+ form.reset();
57
+ }
58
+ }}
59
+ >
60
+ <input name="text" aria-label="Add todo" placeholder="+ tap to add a todo" />
61
+ </form>
62
+
63
+ {#each todos as todo (todo.uid)}
64
+ <div
65
+ class="todo"
66
+ class:done={todo.done}
67
+ transition:scale|local={{ start: 0.7 }}
68
+ animate:flip={{ duration: 200 }}
69
+ >
70
+ <form
71
+ action="/todos/{todo.uid}.json?_method=patch"
72
+ method="post"
73
+ use:enhance={{
74
+ pending: (data) => {
75
+ todo.done = !!data.get('done');
76
+ },
77
+ result: patch
78
+ }}
79
+ >
80
+ <input type="hidden" name="done" value={todo.done ? '' : 'true'} />
81
+ <button class="toggle" aria-label="Mark todo as {todo.done ? 'not done' : 'done'}" />
82
+ </form>
83
+
84
+ <form
85
+ class="text"
86
+ action="/todos/{todo.uid}.json?_method=patch"
87
+ method="post"
88
+ use:enhance={{
89
+ result: patch
90
+ }}
91
+ >
92
+ <input aria-label="Edit todo" type="text" name="text" value={todo.text} />
93
+ <button class="save" aria-label="Save todo" />
94
+ </form>
95
+
96
+ <form
97
+ action="/todos/{todo.uid}.json?_method=delete"
98
+ method="post"
99
+ use:enhance={{
100
+ pending: () => (todo.pending_delete = true),
101
+ result: () => {
102
+ todos = todos.filter((t) => t.uid !== todo.uid);
103
+ }
104
+ }}
105
+ >
106
+ <button class="delete" aria-label="Delete todo" disabled={todo.pending_delete} />
107
+ </form>
108
+ </div>
109
+ {/each}
110
+ </div>
111
+
112
+ <style>
113
+ .todos {
114
+ width: 100%;
115
+ max-width: var(--column-width);
116
+ margin: var(--column-margin-top) auto 0 auto;
117
+ line-height: 1;
118
+ }
119
+
120
+ .new {
121
+ margin: 0 0 0.5rem 0;
122
+ }
123
+
124
+ input {
125
+ border: 1px solid transparent;
126
+ }
127
+
128
+ input:focus-visible {
129
+ box-shadow: inset 1px 1px 6px rgba(0, 0, 0, 0.1);
130
+ border: 1px solid #ff3e00 !important;
131
+ outline: none;
132
+ }
133
+
134
+ .new input {
135
+ font-size: 28px;
136
+ width: 100%;
137
+ padding: 0.5em 1em 0.3em 1em;
138
+ box-sizing: border-box;
139
+ background: rgba(255, 255, 255, 0.05);
140
+ border-radius: 8px;
141
+ text-align: center;
142
+ }
143
+
144
+ .todo {
145
+ display: grid;
146
+ grid-template-columns: 2rem 1fr 2rem;
147
+ grid-gap: 0.5rem;
148
+ align-items: center;
149
+ margin: 0 0 0.5rem 0;
150
+ padding: 0.5rem;
151
+ background-color: white;
152
+ border-radius: 8px;
153
+ filter: drop-shadow(2px 4px 6px rgba(0, 0, 0, 0.1));
154
+ transform: translate(-1px, -1px);
155
+ transition: filter 0.2s, transform 0.2s;
156
+ }
157
+
158
+ .done {
159
+ transform: none;
160
+ opacity: 0.4;
161
+ filter: drop-shadow(0px 0px 1px rgba(0, 0, 0, 0.1));
162
+ }
163
+
164
+ form.text {
165
+ position: relative;
166
+ display: flex;
167
+ align-items: center;
168
+ flex: 1;
169
+ }
170
+
171
+ .todo input {
172
+ flex: 1;
173
+ padding: 0.5em 2em 0.5em 0.8em;
174
+ border-radius: 3px;
175
+ }
176
+
177
+ .todo button {
178
+ width: 2em;
179
+ height: 2em;
180
+ border: none;
181
+ background-color: transparent;
182
+ background-position: 50% 50%;
183
+ background-repeat: no-repeat;
184
+ }
185
+
186
+ button.toggle {
187
+ border: 1px solid rgba(0, 0, 0, 0.2);
188
+ border-radius: 50%;
189
+ box-sizing: border-box;
190
+ background-size: 1em auto;
191
+ }
192
+
193
+ .done .toggle {
194
+ background-image: url("data:image/svg+xml,%3Csvg width='22' height='16' viewBox='0 0 22 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.5 1.5L7.4375 14.5L1.5 8.5909' stroke='%23676778' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
195
+ }
196
+
197
+ .delete {
198
+ background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.5 5V22H19.5V5H4.5Z' fill='%23676778' stroke='%23676778' stroke-width='1.5' stroke-linejoin='round'/%3E%3Cpath d='M10 10V16.5' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M14 10V16.5' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M2 5H22' stroke='%23676778' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M8 5L9.6445 2H14.3885L16 5H8Z' fill='%23676778' stroke='%23676778' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E%0A");
199
+ opacity: 0.2;
200
+ }
201
+
202
+ .delete:hover,
203
+ .delete:focus {
204
+ transition: opacity 0.2s;
205
+ opacity: 1;
206
+ }
207
+
208
+ .save {
209
+ position: absolute;
210
+ right: 0;
211
+ opacity: 0;
212
+ background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.5 2H3.5C2.67158 2 2 2.67157 2 3.5V20.5C2 21.3284 2.67158 22 3.5 22H20.5C21.3284 22 22 21.3284 22 20.5V3.5C22 2.67157 21.3284 2 20.5 2Z' fill='%23676778' stroke='%23676778' stroke-width='1.5' stroke-linejoin='round'/%3E%3Cpath d='M17 2V11H7.5V2H17Z' fill='white' stroke='white' stroke-width='1.5' stroke-linejoin='round'/%3E%3Cpath d='M13.5 5.5V7.5' stroke='%23676778' stroke-width='1.5' stroke-linecap='round'/%3E%3Cpath d='M5.99844 2H18.4992' stroke='%23676778' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E%0A");
213
+ }
214
+
215
+ .todo input:focus + .save,
216
+ .save:focus {
217
+ transition: opacity 0.2s;
218
+ opacity: 1;
219
+ }
220
+ </style>