diff --git a/app.py b/app.py index 321926e19ffefdc6a2b161c21034633fb919fc17..d728980d7c9e3be70c4f0617badc409ec3931d7d 100644 --- a/app.py +++ b/app.py @@ -40,7 +40,7 @@ logger.info("Done.") # Create the app. logger.info("Creating app...") -app = Flask(__name__) +app = Flask(__name__, static_url_path="") logger.info("Done.") # Route for the loading page. diff --git a/source/ui/src/app.html b/source/ui/src/app.html index 97027429e75c53c5ec7b4583304d7c2f20a30503..7c2d5fe99eec63c028c105e2b71a88d6f4665970 100644 --- a/source/ui/src/app.html +++ b/source/ui/src/app.html @@ -1,12 +1,18 @@ <!DOCTYPE html> <html lang="en"> - <head> - <meta charset="utf-8" /> - <link rel="icon" href="%svelte.assets%/favicon.png" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - %svelte.head% - </head> - <body> - <div>%svelte.body%</div> - </body> + <head> + <meta charset="utf-8" /> + <meta name="description" content="" /> + <link rel="icon" href="%svelte.assets%/favicon.png" /> + <link rel="preconnect" href="https://fonts.googleapis.com" /> + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> + <link href="https://fonts.googleapis.com/css2?family=Italiana&family=Lato&display=swap" rel="stylesheet" /> + <link rel="stylesheet" href="%svelte.assets%/style.css" /> + <link href="https://fonts.googleapis.com/css2?family=Italiana&family=Lato&display=swap" rel="stylesheet" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + %svelte.head% + </head> + <body> + <div>%svelte.body%</div> + </body> </html> diff --git a/source/ui/src/config/styles.json b/source/ui/src/config/styles.json new file mode 100644 index 0000000000000000000000000000000000000000..4506c9c61bf7f08029e37c7a2d6162a09f155b06 --- /dev/null +++ b/source/ui/src/config/styles.json @@ -0,0 +1,9 @@ +{ + "piano": "Piano", + "chamber": "Chamber Music", + "rock_and_metal": "Rock and Metal", + "synth": "Synthesizer", + "church": "Church", + "timpani_strings_harp": "Timpani, Contrabass, Harp", + "country": "Country" +} diff --git a/source/ui/src/lib/ComposeButton.svelte b/source/ui/src/lib/ComposeButton.svelte new file mode 100644 index 0000000000000000000000000000000000000000..58616691ecc25c07cfa8f3fda8bce06633b52718 --- /dev/null +++ b/source/ui/src/lib/ComposeButton.svelte @@ -0,0 +1,29 @@ +<script lang="ts"> +import { loading } from '$lib/stores'; + +$: text = $loading ? 'Composing...' : 'Compose ✨'; +</script> + +<button disabled={$loading}>{text}</button> + +<style> +button { + display: block; + font-size: 1.2rem; + font-family: 'Lato', sans-serif; + font-weight: 700; + color: hsl(0 0% 97%); + background: transparent; + border: 3px solid hsl(0 0% 97%); + border-radius: 0.375rem; + padding: 0.5rem 1rem; + cursor: pointer; + margin: 1rem auto 2rem; +} + +button[disabled] { + border-color: hsl(0 0% 50%); + color: hsl(0 0% 50%); + cursor: initial; +} +</style> diff --git a/source/ui/src/lib/DensityOptions.svelte b/source/ui/src/lib/DensityOptions.svelte new file mode 100644 index 0000000000000000000000000000000000000000..f5a787731c6ea7d2a2bf9b0492ec3cc079fdbc45 --- /dev/null +++ b/source/ui/src/lib/DensityOptions.svelte @@ -0,0 +1,29 @@ +<script lang="ts"> +import Radio from './Radio.svelte'; +const options = ['Low', 'Medium', 'High']; +const type: string = 'density'; +</script> + +<div> + <fieldset> + <legend>Note density</legend> + <Radio {options} {type} /> + </fieldset> +</div> + +<style> +fieldset { + padding: 0; + border: none; + margin-top: 1rem; +} + +legend { + text-align: center; + font-size: 1.25rem; + font-weight: 700; + padding: 0; + margin-bottom: 1rem; + +} +</style> diff --git a/source/ui/src/lib/NoteTokens.svelte b/source/ui/src/lib/NoteTokens.svelte new file mode 100644 index 0000000000000000000000000000000000000000..cdf39bc4cbec9e0bf8cee0115d207116f0b815b3 --- /dev/null +++ b/source/ui/src/lib/NoteTokens.svelte @@ -0,0 +1,31 @@ +<section> + <h2>Tokenized notes</h2> + <p> + PIECE_START TRACK_START INST=DRUMS DENSITY=6 BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 + TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 + NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 + NOTE_OFF=35 NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 + TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 + TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 + NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 + TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 + NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 + </p> +</section> + +<style> +/* h2 { + font-family: 'Italiana', serif; +} */ +section { + border: 2px solid hsl(0 0% 80%); + border-radius: 0.375rem; + /* background: hsl(0 0% 20% / 50%); */ + padding: 1rem; +} +</style> diff --git a/source/ui/src/lib/NoteVisualisation.svelte b/source/ui/src/lib/NoteVisualisation.svelte new file mode 100644 index 0000000000000000000000000000000000000000..f3a9d95ee08cf4d278f2c6df60f0d3c5ada55da0 --- /dev/null +++ b/source/ui/src/lib/NoteVisualisation.svelte @@ -0,0 +1,21 @@ +<section> + <h2>Visualised notes</h2> + <img src="compose.png" alt="MIDI notes of composition" /> +</section> + +<style> +section { + border: 2px solid hsl(0 0% 80%); + border-radius: 0.375rem; + /* background: hsl(0 0% 20% / 50%); */ + padding: 1rem; +} +/* h2 { + font-family: 'Italiana', serif; +} */ +img { + display: block; + margin: auto; + max-width: 100%; +} +</style> diff --git a/source/ui/src/lib/Playback.svelte b/source/ui/src/lib/Playback.svelte new file mode 100644 index 0000000000000000000000000000000000000000..2fef85a52367c192408c206ba202d4afcee5d6b9 --- /dev/null +++ b/source/ui/src/lib/Playback.svelte @@ -0,0 +1,18 @@ +<script lang="ts"> +import { playing } from '$lib/stores'; +</script> + +<audio controls src="download.wav" /> + +<style> +audio { + width: 100%; + margin: 1rem auto; +} + +@media (min-width: 600px) { + audio { + max-width: 40rem; + } +} +</style> diff --git a/source/ui/src/lib/Radio.svelte b/source/ui/src/lib/Radio.svelte new file mode 100644 index 0000000000000000000000000000000000000000..76dfde5115561242f982122380836ce237c3ac9b --- /dev/null +++ b/source/ui/src/lib/Radio.svelte @@ -0,0 +1,63 @@ +<script lang="ts"> +export let options: string[]; +export let type: string; +let selection: string = options[1]; +</script> + +<div class="options"> + {#each options as option, i} + <label data-selected={option === selection}> + {option} + <input type="radio" bind:group={selection} value={option} /> + </label> + {/each} + <input type="radio" checked /> +</div> + +<style> +.options { + display: flex; + flex-direction: row; + justify-content: center; + width: 100%; + margin: auto; +} + +label { + display: block; + margin-bottom: 1rem; + padding: 0.5rem 0.5rem; + border: 2px solid hsl(0 0% 97%); + border-right: none; + text-align: center; + transition: background-color 0.25s; + cursor: pointer; +} + +label:nth-of-type(1) { + border-top-left-radius: 0.375rem; + border-bottom-left-radius: 0.375rem; + border-right-width: 0; +} +label:last-of-type { + border-top-right-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; + border-right: 2px solid hsl(0 0% 97%); +} + +label[data-selected='true'] { + background-color: hsl(0 0% 100%); + color: hsl(0 0% 20%); + font-weight: 700; +} + +label:focus { + outline: red; +} + +input { + position: fixed; + opacity: 0; + pointer-events: none; +} +</style> diff --git a/source/ui/src/lib/StyleOptions.svelte b/source/ui/src/lib/StyleOptions.svelte new file mode 100644 index 0000000000000000000000000000000000000000..42719479aa764d0f66fe07f36bfdc59cc22d083d --- /dev/null +++ b/source/ui/src/lib/StyleOptions.svelte @@ -0,0 +1,93 @@ +<script lang="ts"> +import stylesConfig from '../config/styles.json'; +import StyleOptionsButton from './StyleOptionsButton.svelte'; + +const keys: string[] = Object.keys(stylesConfig); + +let selection: string = 'synth'; +</script> + +<fieldset> + <legend>{stylesConfig[selection] || 'Synthesizer'}</legend> + <div class="grid"> + {#each keys as key, i} + <label data-selected={selection === key}> + <div> + <img src={`${key}.svg`} alt={stylesConfig[key]} /> + </div> + <input type="radio" bind:group={selection} value={key} /> + </label> + {/each} + </div> +</fieldset> + +<style> +fieldset { + position: relative; + padding: 0; + border: none; + margin-top: 1rem; +} + +legend { + text-align: center; + font-size: 1.25rem; + font-weight: 700; + padding: 0; +} + +.grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 1rem; + width: min-content; + margin: 1rem auto; +} + +img { + width: 100%; + height: 100%; + filter: invert(1); + margin: auto; +} + +label { + background-color: transparent; + border-radius: 0.375rem; + transition: background-color 0.25s; + cursor: pointer; +} + +label > div { + width: 3rem; + aspect-ratio: 1 / 1; +} + +input { + position: fixed; + opacity: 0; + pointer-events: none; +} + +label[data-selected='true'] { + background-color: hsl(0 0% 97%); + border-radius: 0.375rem; +} + +label[data-selected='true'] img { + filter: none; +} + +@media (min-width: 600px) and (max-width: 899px) { + .grid { + display: flex; + flex-direction: row; + } +} + +@media (min-width: 900px) { + .grid { + grid-template-columns: repeat(4, 1fr); + } +} +</style> diff --git a/source/ui/src/lib/StyleOptionsButton.svelte b/source/ui/src/lib/StyleOptionsButton.svelte new file mode 100644 index 0000000000000000000000000000000000000000..2124acc37ce8937eaaf7b83ee42c182fcc61ddfd --- /dev/null +++ b/source/ui/src/lib/StyleOptionsButton.svelte @@ -0,0 +1,14 @@ +<script lang="ts"> +export let key: string; +export let style: string; +</script> + +<button value={key} name={style}>🥁</button> + +<style> +button { + width: 3.2rem; + aspect-ratio: 1 / 1; + cursor: pointer; +} +</style> diff --git a/source/ui/src/lib/TemperatureOptions.svelte b/source/ui/src/lib/TemperatureOptions.svelte new file mode 100644 index 0000000000000000000000000000000000000000..05dc3123f17d4886d06417300c01435a818acd82 --- /dev/null +++ b/source/ui/src/lib/TemperatureOptions.svelte @@ -0,0 +1,28 @@ +<script lang="ts"> +import Radio from './Radio.svelte'; +const options: string[] = ['Low', 'Medium', 'High', 'Very High']; +const type: string = 'temperature'; +</script> + +<div> + <fieldset> + <legend>Temperature</legend> + <Radio {options} {type} /> + </fieldset> +</div> + +<style> +fieldset { + padding: 0; + border: none; + margin-top: 1rem; +} + +legend { + text-align: center; + font-size: 1.25rem; + font-weight: 700; + padding: 0; + margin-bottom: 1rem; +} +</style> diff --git a/source/ui/src/lib/stores.ts b/source/ui/src/lib/stores.ts new file mode 100644 index 0000000000000000000000000000000000000000..1db935579170b2ff9969311f13b1c4ea043c2c79 --- /dev/null +++ b/source/ui/src/lib/stores.ts @@ -0,0 +1,6 @@ +import { writable } from 'svelte/store'; + +import type { Writable } from 'svelte/store'; + +export const loading: Writable<boolean> = writable(false); +export const playing: Writable<boolean> = writable(true); diff --git a/source/ui/src/routes/index.svelte b/source/ui/src/routes/index.svelte index 5982b0ae37dddc9f0a4528bcb91aefdfa249fbd9..77a718b8aad0da233871ac544404b06fcc52af17 100644 --- a/source/ui/src/routes/index.svelte +++ b/source/ui/src/routes/index.svelte @@ -1,2 +1,62 @@ -<h1>Welcome to SvelteKit</h1> -<p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p> +<script lang="ts"> +import StyleOptions from '$lib/StyleOptions.svelte'; +import DensityOptions from '$lib/DensityOptions.svelte'; +import TemperatureOptions from '$lib/TemperatureOptions.svelte'; +import ComposeButton from '$lib/ComposeButton.svelte'; +import Playback from '$lib/Playback.svelte'; +import NoteVisualisation from '$lib/NoteVisualisation.svelte'; +import NoteTokens from '$lib/NoteTokens.svelte'; +</script> + +<main> + <h1>Composer</h1> + <p>A hundred thousand songs used to train. One AI model. Infinite compositions.</p> + <section id="options"> + <StyleOptions /> + <DensityOptions /> + <TemperatureOptions /> + </section> + <ComposeButton /> + <Playback /> + <NoteVisualisation /> + <NoteTokens /> +</main> + +<style> +main { + width: 100%; + display: flex; + flex-direction: column; + gap: 1rem; + margin: 0 auto; +} + +h1 { + font-size: 1.5rem; + border-left: 0.25ch solid hsl(0 0% 97%); + padding-left: 0.5ch; +} + +p { + font-size: 2.25rem; +} + +#options { + display: flex; + flex-direction: column; + justify-content: space-between; +} + +@media (min-width: 600px) { + main { + max-width: 60rem; + } +} +@media (min-width: 900px) { + #options { + display: flex; + flex-direction: row; + justify-content: space-between; + } +} +</style> diff --git a/source/ui/static/chamber.svg b/source/ui/static/chamber.svg new file mode 100644 index 0000000000000000000000000000000000000000..19aeaf88f1f78664c0b1073c2697e8462e001200 --- /dev/null +++ b/source/ui/static/chamber.svg @@ -0,0 +1 @@ +<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"> <path d="M 24 2 A 1 1 0 0 0 23 3 A 1 1 0 0 0 23.816406 3.9824219 L 18.933594 8.4804688 L 20.515625 10.0625 L 24.033203 6.2480469 A 1 1 0 0 0 25 7 A 1 1 0 0 0 26 6 A 1 1 0 0 0 25.167969 5.015625 L 26.005859 4.1074219 A 1 1 0 0 0 27 5 A 1 1 0 0 0 28 4 A 1 1 0 0 0 27 3 A 1 1 0 0 0 26.951172 3.0019531 C 27.051129 2.7380063 26.995469 2.4305701 26.785156 2.21875 C 26.504156 1.93675 26.050813 1.9263125 25.757812 2.1953125 L 24.994141 2.8984375 A 1 1 0 0 0 24 2 z M 18.933594 8.4804688 L 18.808594 8.3554688 C 17.000594 6.5464687 14.055094 6.5454687 12.246094 8.3554688 L 10.421875 10.181641 L 10.744141 10.787109 C 11.113141 11.480109 10.977281 12.202406 10.363281 12.816406 C 9.9632812 13.216406 9.5356875 13.42025 9.0546875 13.40625 C 8.6216875 13.39325 8.1795 13.184406 7.8125 12.816406 L 7.15625 12.158203 L 4.6308594 14.685547 C 2.4598594 16.856547 2.4598594 20.389547 4.6308594 22.560547 L 4.828125 22.759766 L 8.2949219 19.292969 C 8.6859219 18.901969 9.3179844 18.901969 9.7089844 19.292969 C 10.099984 19.683969 10.099984 20.314078 9.7089844 20.705078 L 6.2402344 24.173828 L 6.4375 24.371094 C 7.5225 25.456094 8.9499531 26 10.376953 26 C 11.803953 26 13.228453 25.457094 14.314453 24.371094 L 16.841797 21.84375 L 16.185547 21.1875 C 15.568547 20.5705 15.243594 19.576719 16.183594 18.636719 C 16.799594 18.022719 17.520891 17.886859 18.212891 18.255859 L 18.818359 18.578125 L 20.644531 16.751953 C 22.454531 14.942953 22.454531 11.998453 20.644531 10.189453 L 20.517578 10.0625 L 15.773438 15.208984 L 13.792969 13.212891 L 18.933594 8.4804688 z M 6.2402344 24.173828 L 4.828125 22.759766 L 4.8261719 22.759766 L 3.2929688 24.292969 C 2.9019687 24.683969 2.9019687 25.316031 3.2929688 25.707031 C 3.4879687 25.902031 3.744 26 4 26 C 4.256 26 4.5120312 25.902031 4.7070312 25.707031 L 6.2402344 24.173828 z"/></svg> \ No newline at end of file diff --git a/source/ui/static/church.svg b/source/ui/static/church.svg new file mode 100644 index 0000000000000000000000000000000000000000..87c9a8097195a9f2c6f8d42bcf86b8e415fa5000 --- /dev/null +++ b/source/ui/static/church.svg @@ -0,0 +1 @@ +<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"><path d="M 15 1 C 14.448 1 14 1.448 14 2 L 14 3 L 13 3 A 1.0001 1.0001 0 1 0 13 5 L 14 5 L 14 6.5859375 L 10 9 L 10 11.501953 L 5.0351562 14.115234 A 1.0001 1.0001 0 1 0 5.9648438 15.884766 L 6 15.867188 L 6 27 L 24 27 L 24 15.867188 L 24.035156 15.884766 A 1.0001 1.0001 0 1 0 24.964844 14.115234 L 20 11.501953 L 20 9 L 16 6.5859375 L 16 5 L 17 5 A 1.0001 1.0001 0 1 0 17 3 L 16 3 L 16 2 C 16 1.448 15.552 1 15 1 z M 17.642578 14.005859 C 17.827578 13.968859 18 14.109828 18 14.298828 L 18 16.259766 C 18 16.407766 17.895 16.535453 17.75 16.564453 L 15 17.386719 L 15 21.177734 C 15 22.662734 14.492422 24 12.732422 24 C 11.592422 24 11 23.337891 11 22.337891 C 11 19.733891 14 20.655203 14 19.408203 L 14 15.763672 C 14 15.312672 14.301328 14.917828 14.736328 14.798828 L 17.642578 14.005859 z"/></svg> \ No newline at end of file diff --git a/source/ui/static/compose.png b/source/ui/static/compose.png new file mode 100644 index 0000000000000000000000000000000000000000..8452daac7ffed9d22903a35aa2307f1397845dfd Binary files /dev/null and b/source/ui/static/compose.png differ diff --git a/source/ui/static/country.svg b/source/ui/static/country.svg new file mode 100644 index 0000000000000000000000000000000000000000..c723c6830b49c68b9418e59dbe507c41f111c254 --- /dev/null +++ b/source/ui/static/country.svg @@ -0,0 +1 @@ +<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"> <path d="M 12 5 C 10.428 5 9.704 6.221 9 8.5 C 8.323 10.69 7 16.644531 7 16.644531 C 7 16.644531 10.018 18 15 18 C 19.982 18 23 16.644531 23 16.644531 C 23 16.644531 21.677 10.69 21 8.5 C 20.296 6.221 19.572 5 18 5 C 16.848 5 16.274 6 15 6 C 13.726 6 13.152 5 12 5 z M 4 14 C 2.3 14 1 15.3 1 17 C 1 20.9 4.8 24 15 24 C 25.2 24 29 20.8 29 17 C 29 15.3 27.7 14 26 14 C 24.3 14 23 15.3 23 17 C 23 20.56 17.5 21 15 21 C 12.5 21 7 21 7 17 C 7 15.3 5.7 14 4 14 z"/></svg> \ No newline at end of file diff --git a/source/ui/static/download.wav b/source/ui/static/download.wav new file mode 100644 index 0000000000000000000000000000000000000000..daa1e40fe193d35691ec740406788ebd4454a99b Binary files /dev/null and b/source/ui/static/download.wav differ diff --git a/source/ui/static/piano.svg b/source/ui/static/piano.svg new file mode 100644 index 0000000000000000000000000000000000000000..358c4e7152808e7dd3a4c3ff7d8393f18171ccb7 --- /dev/null +++ b/source/ui/static/piano.svg @@ -0,0 +1 @@ +<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"> <path d="M 8 4 C 5.239 4 3 6.239 3 9 L 3 19 L 3 25 A 1.0001 1.0001 0 0 0 4 26 L 26 26 A 1.0001 1.0001 0 0 0 27 25 L 27 19 L 27 14 C 27 11.791 25.209 10 23 10 L 21.140625 10 C 19.803625 10 18.5545 9.33175 17.8125 8.21875 L 16.78125 6.671875 C 15.66725 5.002875 13.795063 4 11.789062 4 L 8 4 z M 5 19 L 7 19 L 7 22.5 C 7 22.776 7.224 23 7.5 23 L 8.5 23 C 8.776 23 9 22.776 9 22.5 L 9 19 L 10 19 L 10 22.5 C 10 22.776 10.224 23 10.5 23 L 11.5 23 C 11.776 23 12 22.776 12 22.5 L 12 19 L 15 19 L 15 22.5 C 15 22.776 15.224 23 15.5 23 L 16.5 23 C 16.776 23 17 22.776 17 22.5 L 17 19 L 18 19 L 18 22.5 C 18 22.776 18.224 23 18.5 23 L 19.5 23 C 19.776 23 20 22.776 20 22.5 L 20 19 L 21 19 L 21 22.5 C 21 22.776 21.224 23 21.5 23 L 22.5 23 C 22.776 23 23 22.776 23 22.5 L 23 19 L 25 19 L 25 24 L 5 24 L 5 19 z"/></svg> \ No newline at end of file diff --git a/source/ui/static/rock_and_metal.svg b/source/ui/static/rock_and_metal.svg new file mode 100644 index 0000000000000000000000000000000000000000..e720a0cbd1168821794ff078797e996a99ff5814 --- /dev/null +++ b/source/ui/static/rock_and_metal.svg @@ -0,0 +1 @@ +<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"><path d="M 24.447266 3 C 23.879228 3 23.336231 3.2429081 22.957031 3.6660156 L 13.652344 14.048828 C 12.866283 12.47013 14 10.852708 14 9 C 11.511 9 10 9.7580938 10 11.871094 C 10 13.013094 9.1353594 14 7.8183594 14 C 7.0063594 14 5.7301406 14.35775 4.6191406 15.46875 C 2.4531406 17.68975 2.2887812 21.021516 5.1757812 23.853516 C 8.0637812 26.741516 11.339859 26.519516 13.505859 24.353516 C 14.782859 23.076516 14.782219 21.910453 14.949219 20.689453 C 15.228219 18.411453 19 19.475 19 16 C 16.962836 16 15.778947 15.711992 15.101562 15.429688 L 22.697266 6.953125 A 1 1 0 0 0 23 7 A 1 1 0 0 0 24 6 A 1 1 0 0 0 23.914062 5.5957031 L 24.447266 5 L 26 5 A 1.0001 1.0001 0 1 0 26 3 L 24.447266 3 z M 10.25 16 C 10.442 16 10.63475 16.07225 10.78125 16.21875 L 12.78125 18.21875 C 13.07325 18.51275 13.072297 18.986297 12.779297 19.279297 C 12.633297 19.425297 12.442 19.5 12.25 19.5 C 12.058 19.5 11.866703 19.426297 11.720703 19.279297 L 9.7207031 17.279297 C 9.4277031 16.986297 9.4277031 16.51175 9.7207031 16.21875 C 9.8672031 16.07225 10.058 16 10.25 16 z M 7.75 18.5 C 7.942 18.5 8.13475 18.57225 8.28125 18.71875 L 10.28125 20.71875 C 10.57325 21.01275 10.572297 21.486297 10.279297 21.779297 C 10.133297 21.926297 9.942 22 9.75 22 C 9.558 22 9.3667031 21.926297 9.2207031 21.779297 L 7.2207031 19.779297 C 6.9277031 19.486297 6.9277031 19.01175 7.2207031 18.71875 C 7.3672031 18.57225 7.558 18.5 7.75 18.5 z"/></svg> \ No newline at end of file diff --git a/source/ui/static/script.js b/source/ui/static/script.js new file mode 100644 index 0000000000000000000000000000000000000000..b7cbfd7de291dc6582fc786e84929b99834e970f --- /dev/null +++ b/source/ui/static/script.js @@ -0,0 +1,67 @@ +function compose() { + + // Get the value of the select with id selected_midi_program. + var selected_music_style = document.getElementById("selected_music_style").value; + var selected_density = document.getElementById("selected_density").value; + var selected_temperature = document.getElementById("selected_temperature").value; + + var xhr = new XMLHttpRequest(); + xhr.open("POST", "compose", true); + xhr.setRequestHeader("Content-Type", "application/json"); + xhr.send(JSON.stringify({ + music_style: selected_music_style, + density: selected_density, + temperature: selected_temperature + })); + + xhr.onreadystatechange = function() { + if (xhr.readyState == 4 && xhr.status == 200) { + var response = JSON.parse(xhr.responseText); + console.log(response); + + if (response.status == "OK") { + + // Replace the inner html of the div with id token_sequence with the token sequence. + document.getElementById("token_sequence").innerHTML = response.tokens; + + // Replace the source of the audio element with id audio.. + var audio = document.getElementById("audio_id"); + audio.src = response.audio; + + // Replace the source of the image element with id image. + var image = document.getElementById("image_id"); + image.src = response.image; + + } + else { + alert("Error: " + response.error); + } + } + } +} + + +function post_command(command_name, command_parameters, reload) { + var xhr = new XMLHttpRequest(); + xhr.open("POST", "/command", true); + xhr.setRequestHeader("Content-Type", "application/json"); + xhr.send(JSON.stringify({command_name: command_name, command_parameters: command_parameters})); + + xhr.onreadystatechange = function() { + if (xhr.readyState == 4 && xhr.status == 200) { + var response = JSON.parse(xhr.responseText); + if (response.status == "OK") { + + // Reload the page if requested. + if (reload) { + console.log("Reloading."); + load_cells(); + } + + } + else { + alert("Error: " + response.error); + } + } + } +} diff --git a/source/ui/static/style.css b/source/ui/static/style.css new file mode 100644 index 0000000000000000000000000000000000000000..38efe2490f6d0e164076a2d194c9a36a668dca45 --- /dev/null +++ b/source/ui/static/style.css @@ -0,0 +1,21 @@ +body { + /* width: 100%; */ + padding: 2rem; + font-family: 'Lato', sans-serif; + background-color: hsl(0 0% 1%); +} + + +h1 { + font-family: 'Italiana', serif; + letter-spacing: 0.05ch; +} + + +body, h1 { + color: hsl(0 0% 97%); +} + +/* #options h3 { + font-weight: 700; +} */ diff --git a/source/ui/static/synth.svg b/source/ui/static/synth.svg new file mode 100644 index 0000000000000000000000000000000000000000..76bb68d272351fe96c951655dbf292acbcf0e2a2 --- /dev/null +++ b/source/ui/static/synth.svg @@ -0,0 +1 @@ +<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"> <path d="M 4 5 C 2.895 5 2 5.895 2 7 L 2 23 C 2 24.105 2.895 25 4 25 L 26 25 C 27.105 25 28 24.105 28 23 L 28 7 C 28 5.895 27.105 5 26 5 L 4 5 z M 6 7 L 15 7 C 15.552 7 16 7.448 16 8 L 16 12 C 16 12.552 15.552 13 15 13 L 6 13 C 5.448 13 5 12.552 5 12 L 5 8 C 5 7.448 5.448 7 6 7 z M 20 9 C 20.552 9 21 9.448 21 10 C 21 10.552 20.552 11 20 11 C 19.448 11 19 10.552 19 10 C 19 9.448 19.448 9 20 9 z M 24 9 C 24.552 9 25 9.448 25 10 C 25 10.552 24.552 11 24 11 C 23.448 11 23 10.552 23 10 C 23 9.448 23.448 9 24 9 z M 4 16 L 7 16 L 7 20.5 C 7 20.776 7.224 21 7.5 21 L 8.5 21 C 8.776 21 9 20.776 9 20.5 L 9 16 L 10 16 L 10 20.5 C 10 20.776 10.224 21 10.5 21 L 11.5 21 C 11.776 21 12 20.776 12 20.5 L 12 16 L 15 16 L 15 20.5 C 15 20.776 15.224 21 15.5 21 L 16.5 21 C 16.776 21 17 20.776 17 20.5 L 17 16 L 18 16 L 18 20.5 C 18 20.776 18.224 21 18.5 21 L 19.5 21 C 19.776 21 20 20.776 20 20.5 L 20 16 L 21 16 L 21 20.5 C 21 20.776 21.224 21 21.5 21 L 22.5 21 C 22.776 21 23 20.776 23 20.5 L 23 16 L 26 16 L 26 23 L 4 23 L 4 16 z"/></svg> \ No newline at end of file diff --git a/source/ui/static/timpani_strings_harp.svg b/source/ui/static/timpani_strings_harp.svg new file mode 100644 index 0000000000000000000000000000000000000000..9b55a1522ef2bc5c344d65994c376d8f0041dbe7 --- /dev/null +++ b/source/ui/static/timpani_strings_harp.svg @@ -0,0 +1 @@ +<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"><path d="M 15 3 C 12.116977 3 9.5027569 3.5137985 7.5195312 4.40625 C 6.5279185 4.8524758 5.6871834 5.3936064 5.0566406 6.0644531 C 4.5454366 6.6083331 4.1809669 7.2679298 4.0566406 7.9882812 A 1.0001 1.0001 0 0 0 3.984375 7.9863281 A 1.0001 1.0001 0 0 0 3.0195312 9.1953125 L 4.0195312 14.195312 A 1.0001 1.0001 0 0 0 5.2304688 15 C 5.9909542 16.942198 7.0742771 18.651603 8.3886719 19.988281 L 7.1054688 22.552734 A 1.0001165 1.0001165 0 0 0 8.8945312 23.447266 L 9.953125 21.328125 C 11.183497 22.192188 12.551426 22.754027 14 22.933594 L 14 26 A 1.0001 1.0001 0 1 0 16 26 L 16 22.933594 C 17.448574 22.754028 18.816503 22.192144 20.046875 21.328125 L 21.105469 23.447266 A 1.0001163 1.0001163 0 1 0 22.894531 22.552734 L 21.611328 19.988281 C 22.9258 18.651623 24.009039 16.942048 24.769531 15 A 1.0001 1.0001 0 0 0 25.980469 14.195312 L 26.980469 9.1953125 A 1.0001 1.0001 0 0 0 25.984375 7.9863281 A 1.0001 1.0001 0 0 0 25.943359 7.9902344 C 25.819369 7.2691376 25.455013 6.6088117 24.943359 6.0644531 C 24.312817 5.3936064 23.472082 4.8524758 22.480469 4.40625 C 20.497243 3.5137985 17.883023 3 15 3 z M 15 5 C 17.639825 5 20.024094 5.4942406 21.660156 6.2304688 C 22.478188 6.5985828 23.104816 7.0276954 23.486328 7.4335938 C 23.86784 7.8394921 24 8.1789242 24 8.5 C 24 8.8210758 23.86784 9.1605079 23.486328 9.5664062 C 23.104816 9.9723046 22.478188 10.401417 21.660156 10.769531 C 20.024094 11.505759 17.639825 12 15 12 C 12.360175 12 9.9759062 11.505759 8.3398438 10.769531 C 7.5218123 10.401417 6.8951842 9.9723048 6.5136719 9.5664062 C 6.1321596 9.1605081 6 8.8210758 6 8.5 C 6 8.1789242 6.1321596 7.8394919 6.5136719 7.4335938 C 6.8951842 7.0276954 7.5218124 6.5985827 8.3398438 6.2304688 C 9.9759062 5.4942406 12.360175 5 15 5 z M 5.4863281 11.337891 C 6.0521103 11.825988 6.7362112 12.241256 7.5195312 12.59375 C 9.5027569 13.486202 12.116977 14 15 14 C 17.883023 14 20.497243 13.486202 22.480469 12.59375 C 23.263789 12.241256 23.94789 11.825988 24.513672 11.337891 L 24.019531 13.804688 A 1.0001 1.0001 0 0 0 23.996094 14.037109 C 21.926557 15.14735 19.17714 15.846987 16 15.96875 L 16 19 C 16 19.552 15.552 20 15 20 C 14.448 20 14 19.552 14 19 L 14 15.96875 C 10.82286 15.84618 8.0734432 15.14738 6.0039062 14.037109 A 1.0001 1.0001 0 0 0 5.9804688 13.804688 L 5.4863281 11.337891 z"/></svg> \ No newline at end of file diff --git a/source/ui/svelte.config.js b/source/ui/svelte.config.js index 9ae00617823b379d70eea704fe62397caebeaf8c..1c418390d755418d3cfbeda05eccbb9e7b7a5afc 100644 --- a/source/ui/svelte.config.js +++ b/source/ui/svelte.config.js @@ -8,6 +8,7 @@ const config = { kit: { adapter: adapter({ pages: '../../templates', + assets: '../../static', }), prerender: { default: true, diff --git a/static/_app/assets/pages/index.svelte-de534b64.css b/static/_app/assets/pages/index.svelte-de534b64.css new file mode 100644 index 0000000000000000000000000000000000000000..8280c6b25b7041ebe01dec50db3ffca45dd92589 --- /dev/null +++ b/static/_app/assets/pages/index.svelte-de534b64.css @@ -0,0 +1 @@ +button.svelte-tf23mt{width:3.2rem;aspect-ratio:1 / 1;cursor:pointer}fieldset.svelte-1r9pswz.svelte-1r9pswz{position:relative;padding:0;border:none;margin-top:1rem}legend.svelte-1r9pswz.svelte-1r9pswz{text-align:center;font-size:1.25rem;font-weight:700;padding:0}.grid.svelte-1r9pswz.svelte-1r9pswz{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;width:min-content;margin:1rem auto}img.svelte-1r9pswz.svelte-1r9pswz{width:100%;height:100%;filter:invert(1);margin:auto}label.svelte-1r9pswz.svelte-1r9pswz{background-color:transparent;border-radius:.375rem;transition:background-color .25s;cursor:pointer}label.svelte-1r9pswz>div.svelte-1r9pswz{width:3rem;aspect-ratio:1 / 1}input.svelte-1r9pswz.svelte-1r9pswz{position:fixed;opacity:0;pointer-events:none}label[data-selected=true].svelte-1r9pswz.svelte-1r9pswz{background-color:#f7f7f7;border-radius:.375rem}label[data-selected=true].svelte-1r9pswz img.svelte-1r9pswz{filter:none}@media (min-width: 600px) and (max-width: 899px){.grid.svelte-1r9pswz.svelte-1r9pswz{display:flex;flex-direction:row}}@media (min-width: 900px){.grid.svelte-1r9pswz.svelte-1r9pswz{grid-template-columns:repeat(4,1fr)}}.options.svelte-1m848u0{display:flex;flex-direction:row;justify-content:center;width:100%;margin:auto}label.svelte-1m848u0{display:block;margin-bottom:1rem;padding:.5rem;border:2px solid hsl(0 0% 97%);border-right:none;text-align:center;transition:background-color .25s;cursor:pointer}label.svelte-1m848u0:nth-of-type(1){border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-right-width:0}label.svelte-1m848u0:last-of-type{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem;border-right:2px solid hsl(0 0% 97%)}label[data-selected=true].svelte-1m848u0{background-color:#fff;color:#333;font-weight:700}label.svelte-1m848u0:focus{outline:red}input.svelte-1m848u0{position:fixed;opacity:0;pointer-events:none}fieldset.svelte-1cq0vc2{padding:0;border:none;margin-top:1rem}legend.svelte-1cq0vc2{text-align:center;font-size:1.25rem;font-weight:700;padding:0;margin-bottom:1rem}fieldset.svelte-nlqy14{padding:0;border:none;margin-top:1rem}legend.svelte-nlqy14{text-align:center;font-size:1.25rem;font-weight:700;padding:0;margin-bottom:1rem}button.svelte-aq73nm{display:block;font-size:1.2rem;font-family:Lato,sans-serif;font-weight:700;color:#f7f7f7;background:transparent;border:3px solid hsl(0 0% 97%);border-radius:.375rem;padding:.5rem 1rem;cursor:pointer;margin:1rem auto 2rem}button[disabled].svelte-aq73nm{border-color:gray;color:gray;cursor:initial}audio.svelte-1e9isw9{width:100%;margin:1rem auto}@media (min-width: 600px){audio.svelte-1e9isw9{max-width:40rem}}section.svelte-1tzlz20{border:2px solid hsl(0 0% 80%);border-radius:.375rem;padding:1rem}img.svelte-1tzlz20{display:block;margin:auto;max-width:100%}section.svelte-1sitrxx{border:2px solid hsl(0 0% 80%);border-radius:.375rem;padding:1rem}main.svelte-1m4hhxp{width:100%;display:flex;flex-direction:column;gap:1rem;margin:0 auto}h1.svelte-1m4hhxp{font-size:1.5rem;border-left:.25ch solid hsl(0 0% 97%);padding-left:.5ch}p.svelte-1m4hhxp{font-size:2.25rem}#options.svelte-1m4hhxp{display:flex;flex-direction:column;justify-content:space-between}@media (min-width: 600px){main.svelte-1m4hhxp{max-width:60rem}}@media (min-width: 900px){#options.svelte-1m4hhxp{display:flex;flex-direction:row;justify-content:space-between}} diff --git a/static/_app/chunks/index-a16eaf24.js b/static/_app/chunks/index-a16eaf24.js new file mode 100644 index 0000000000000000000000000000000000000000..a20844e7028c6414f77755bd6d6468b6736ff8c1 --- /dev/null +++ b/static/_app/chunks/index-a16eaf24.js @@ -0,0 +1 @@ +import{E as f,s as l}from"./index-bc271058.js";const e=[];function h(n,u=f){let o;const i=new Set;function r(t){if(l(n,t)&&(n=t,o)){const c=!e.length;for(const s of i)s[1](),e.push(s,n);if(c){for(let s=0;s<e.length;s+=2)e[s][0](e[s+1]);e.length=0}}}function b(t){r(t(n))}function p(t,c=f){const s=[t,c];return i.add(s),i.size===1&&(o=u(r)||f),t(n),()=>{i.delete(s),i.size===0&&(o(),o=null)}}return{set:r,update:b,subscribe:p}}export{h as w}; diff --git a/static/_app/chunks/index-bc271058.js b/static/_app/chunks/index-bc271058.js new file mode 100644 index 0000000000000000000000000000000000000000..5b0ed0894da58dc0a3f861d96272e9244fb4d3b3 --- /dev/null +++ b/static/_app/chunks/index-bc271058.js @@ -0,0 +1 @@ +function v(){}function F(t,n){for(const e in n)t[e]=n[e];return t}function L(t){return t()}function M(){return Object.create(null)}function p(t){t.forEach(L)}function H(t){return typeof t=="function"}function lt(t,n){return t!=t?n==n:t!==n||t&&typeof t=="object"||typeof t=="function"}let g;function ot(t,n){return g||(g=document.createElement("a")),g.href=n,t===g.href}function I(t){return Object.keys(t).length===0}function G(t,...n){if(t==null)return v;const e=t.subscribe(...n);return e.unsubscribe?()=>e.unsubscribe():e}function ut(t,n,e){t.$$.on_destroy.push(G(n,e))}function st(t,n,e,i){if(t){const c=T(t,n,e,i);return t[0](c)}}function T(t,n,e,i){return t[1]&&i?F(e.ctx.slice(),t[1](i(n))):e.ctx}function ft(t,n,e,i){if(t[2]&&i){const c=t[2](i(e));if(n.dirty===void 0)return c;if(typeof c=="object"){const s=[],l=Math.max(n.dirty.length,c.length);for(let o=0;o<l;o+=1)s[o]=n.dirty[o]|c[o];return s}return n.dirty|c}return n.dirty}function at(t,n,e,i,c,s){if(c){const l=T(n,e,i,s);t.p(l,c)}}function _t(t){if(t.ctx.length>32){const n=[],e=t.ctx.length/32;for(let i=0;i<e;i++)n[i]=-1;return n}return-1}let w=!1;function J(){w=!0}function K(){w=!1}function W(t,n,e,i){for(;t<n;){const c=t+(n-t>>1);e(c)<=i?t=c+1:n=c}return t}function Q(t){if(t.hydrate_init)return;t.hydrate_init=!0;let n=t.childNodes;if(t.nodeName==="HEAD"){const r=[];for(let u=0;u<n.length;u++){const a=n[u];a.claim_order!==void 0&&r.push(a)}n=r}const e=new Int32Array(n.length+1),i=new Int32Array(n.length);e[0]=-1;let c=0;for(let r=0;r<n.length;r++){const u=n[r].claim_order,a=(c>0&&n[e[c]].claim_order<=u?c+1:W(1,c,y=>n[e[y]].claim_order,u))-1;i[r]=e[a]+1;const f=a+1;e[f]=r,c=Math.max(f,c)}const s=[],l=[];let o=n.length-1;for(let r=e[c]+1;r!=0;r=i[r-1]){for(s.push(n[r-1]);o>=r;o--)l.push(n[o]);o--}for(;o>=0;o--)l.push(n[o]);s.reverse(),l.sort((r,u)=>r.claim_order-u.claim_order);for(let r=0,u=0;r<l.length;r++){for(;u<s.length&&l[r].claim_order>=s[u].claim_order;)u++;const a=u<s.length?s[u]:null;t.insertBefore(l[r],a)}}function R(t,n){if(w){for(Q(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;n!==t.actual_end_child?(n.claim_order!==void 0||n.parentNode!==t)&&t.insertBefore(n,t.actual_end_child):t.actual_end_child=n.nextSibling}else(n.parentNode!==t||n.nextSibling!==null)&&t.appendChild(n)}function dt(t,n,e){w&&!e?R(t,n):(n.parentNode!==t||n.nextSibling!=e)&&t.insertBefore(n,e||null)}function U(t){t.parentNode.removeChild(t)}function ht(t,n){for(let e=0;e<t.length;e+=1)t[e]&&t[e].d(n)}function V(t){return document.createElement(t)}function N(t){return document.createTextNode(t)}function mt(){return N(" ")}function pt(){return N("")}function yt(t,n,e,i){return t.addEventListener(n,e,i),()=>t.removeEventListener(n,e,i)}function gt(t,n,e){e==null?t.removeAttribute(n):t.getAttribute(n)!==e&&t.setAttribute(n,e)}function X(t){return Array.from(t.childNodes)}function Y(t){t.claim_info===void 0&&(t.claim_info={last_index:0,total_claimed:0})}function O(t,n,e,i,c=!1){Y(t);const s=(()=>{for(let l=t.claim_info.last_index;l<t.length;l++){const o=t[l];if(n(o)){const r=e(o);return r===void 0?t.splice(l,1):t[l]=r,c||(t.claim_info.last_index=l),o}}for(let l=t.claim_info.last_index-1;l>=0;l--){const o=t[l];if(n(o)){const r=e(o);return r===void 0?t.splice(l,1):t[l]=r,c?r===void 0&&t.claim_info.last_index--:t.claim_info.last_index=l,o}}return i()})();return s.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,s}function Z(t,n,e,i){return O(t,c=>c.nodeName===n,c=>{const s=[];for(let l=0;l<c.attributes.length;l++){const o=c.attributes[l];e[o.name]||s.push(o.name)}s.forEach(l=>c.removeAttribute(l))},()=>i(n))}function xt(t,n,e){return Z(t,n,e,V)}function tt(t,n){return O(t,e=>e.nodeType===3,e=>{const i=""+n;if(e.data.startsWith(i)){if(e.data.length!==i.length)return e.splitText(i.length)}else e.data=i},()=>N(n),!0)}function bt(t){return tt(t," ")}function $t(t,n){n=""+n,t.wholeText!==n&&(t.data=n)}function wt(t,n,e,i){e===null?t.style.removeProperty(n):t.style.setProperty(n,e,i?"important":"")}let m;function h(t){m=t}function A(){if(!m)throw new Error("Function called outside component initialization");return m}function Et(t){A().$$.on_mount.push(t)}function kt(t){A().$$.after_update.push(t)}function jt(t,n){A().$$.context.set(t,n)}const d=[],q=[],b=[],B=[],P=Promise.resolve();let k=!1;function z(){k||(k=!0,P.then(D))}function vt(){return z(),P}function j(t){b.push(t)}const E=new Set;let x=0;function D(){const t=m;do{for(;x<d.length;){const n=d[x];x++,h(n),nt(n.$$)}for(h(null),d.length=0,x=0;q.length;)q.pop()();for(let n=0;n<b.length;n+=1){const e=b[n];E.has(e)||(E.add(e),e())}b.length=0}while(d.length);for(;B.length;)B.pop()();k=!1,E.clear(),h(t)}function nt(t){if(t.fragment!==null){t.update(),p(t.before_update);const n=t.dirty;t.dirty=[-1],t.fragment&&t.fragment.p(t.ctx,n),t.after_update.forEach(j)}}const $=new Set;let _;function Nt(){_={r:0,c:[],p:_}}function At(){_.r||p(_.c),_=_.p}function et(t,n){t&&t.i&&($.delete(t),t.i(n))}function St(t,n,e,i){if(t&&t.o){if($.has(t))return;$.add(t),_.c.push(()=>{$.delete(t),i&&(e&&t.d(1),i())}),t.o(n)}}function Ct(t,n){const e={},i={},c={$$scope:1};let s=t.length;for(;s--;){const l=t[s],o=n[s];if(o){for(const r in l)r in o||(i[r]=1);for(const r in o)c[r]||(e[r]=o[r],c[r]=1);t[s]=o}else for(const r in l)c[r]=1}for(const l in i)l in e||(e[l]=void 0);return e}function Mt(t){return typeof t=="object"&&t!==null?t:{}}function qt(t){t&&t.c()}function Bt(t,n){t&&t.l(n)}function it(t,n,e,i){const{fragment:c,on_mount:s,on_destroy:l,after_update:o}=t.$$;c&&c.m(n,e),i||j(()=>{const r=s.map(L).filter(H);l?l.push(...r):p(r),t.$$.on_mount=[]}),o.forEach(j)}function rt(t,n){const e=t.$$;e.fragment!==null&&(p(e.on_destroy),e.fragment&&e.fragment.d(n),e.on_destroy=e.fragment=null,e.ctx=[])}function ct(t,n){t.$$.dirty[0]===-1&&(d.push(t),z(),t.$$.dirty.fill(0)),t.$$.dirty[n/31|0]|=1<<n%31}function Lt(t,n,e,i,c,s,l,o=[-1]){const r=m;h(t);const u=t.$$={fragment:null,ctx:null,props:s,update:v,not_equal:c,bound:M(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(n.context||(r?r.$$.context:[])),callbacks:M(),dirty:o,skip_bound:!1,root:n.target||r.$$.root};l&&l(u.root);let a=!1;if(u.ctx=e?e(t,n.props||{},(f,y,...S)=>{const C=S.length?S[0]:y;return u.ctx&&c(u.ctx[f],u.ctx[f]=C)&&(!u.skip_bound&&u.bound[f]&&u.bound[f](C),a&&ct(t,f)),y}):[],u.update(),a=!0,p(u.before_update),u.fragment=i?i(u.ctx):!1,n.target){if(n.hydrate){J();const f=X(n.target);u.fragment&&u.fragment.l(f),f.forEach(U)}else u.fragment&&u.fragment.c();n.intro&&et(t.$$.fragment),it(t,n.target,n.anchor,n.customElement),K(),D()}h(r)}class Tt{$destroy(){rt(this,1),this.$destroy=v}$on(n,e){const i=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return i.push(e),()=>{const c=i.indexOf(e);c!==-1&&i.splice(c,1)}}$set(n){this.$$set&&!I(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}}export{Mt as A,rt as B,F as C,vt as D,v as E,st as F,at as G,_t as H,ft as I,R as J,ot as K,yt as L,ht as M,ut as N,Tt as S,X as a,gt as b,xt as c,U as d,V as e,wt as f,dt as g,tt as h,Lt as i,$t as j,mt as k,pt as l,bt as m,Nt as n,St as o,At as p,et as q,jt as r,lt as s,N as t,kt as u,Et as v,qt as w,Bt as x,it as y,Ct as z}; diff --git a/templates/_app/error.svelte-5990926f.js b/static/_app/error.svelte-b9cb04fa.js similarity index 55% rename from templates/_app/error.svelte-5990926f.js rename to static/_app/error.svelte-b9cb04fa.js index 8520b8cca72aa022485dcb85976e714e23f15360..bdfc736d43b9e77dc45f388994e18ac2fca69473 100644 --- a/templates/_app/error.svelte-5990926f.js +++ b/static/_app/error.svelte-b9cb04fa.js @@ -1 +1 @@ -import{S as w,i as y,s as z,e as E,t as v,c as d,a as b,h as P,d as o,g as n,J as R,j as N,k as S,l as C,m as j,n as H}from"./chunks/index-60624bc8.js";function J(r){let l,t=r[1].frame+"",a;return{c(){l=E("pre"),a=v(t)},l(f){l=d(f,"PRE",{});var s=b(l);a=P(s,t),s.forEach(o)},m(f,s){n(f,l,s),R(l,a)},p(f,s){s&2&&t!==(t=f[1].frame+"")&&N(a,t)},d(f){f&&o(l)}}}function h(r){let l,t=r[1].stack+"",a;return{c(){l=E("pre"),a=v(t)},l(f){l=d(f,"PRE",{});var s=b(l);a=P(s,t),s.forEach(o)},m(f,s){n(f,l,s),R(l,a)},p(f,s){s&2&&t!==(t=f[1].stack+"")&&N(a,t)},d(f){f&&o(l)}}}function A(r){let l,t,a,f,s=r[1].message+"",c,k,u,p,i=r[1].frame&&J(r),_=r[1].stack&&h(r);return{c(){l=E("h1"),t=v(r[0]),a=S(),f=E("pre"),c=v(s),k=S(),i&&i.c(),u=S(),_&&_.c(),p=C()},l(e){l=d(e,"H1",{});var m=b(l);t=P(m,r[0]),m.forEach(o),a=j(e),f=d(e,"PRE",{});var q=b(f);c=P(q,s),q.forEach(o),k=j(e),i&&i.l(e),u=j(e),_&&_.l(e),p=C()},m(e,m){n(e,l,m),R(l,t),n(e,a,m),n(e,f,m),R(f,c),n(e,k,m),i&&i.m(e,m),n(e,u,m),_&&_.m(e,m),n(e,p,m)},p(e,[m]){m&1&&N(t,e[0]),m&2&&s!==(s=e[1].message+"")&&N(c,s),e[1].frame?i?i.p(e,m):(i=J(e),i.c(),i.m(u.parentNode,u)):i&&(i.d(1),i=null),e[1].stack?_?_.p(e,m):(_=h(e),_.c(),_.m(p.parentNode,p)):_&&(_.d(1),_=null)},i:H,o:H,d(e){e&&o(l),e&&o(a),e&&o(f),e&&o(k),i&&i.d(e),e&&o(u),_&&_.d(e),e&&o(p)}}}function F({error:r,status:l}){return{props:{error:r,status:l}}}function B(r,l,t){let{status:a}=l,{error:f}=l;return r.$$set=s=>{"status"in s&&t(0,a=s.status),"error"in s&&t(1,f=s.error)},[a,f]}class G extends w{constructor(l){super(),y(this,l,B,A,z,{status:0,error:1})}}export{G as default,F as load}; +import{S as w,i as y,s as z,e as E,t as v,c as d,a as b,h as P,d as o,g as u,J as R,j as N,k as S,l as C,m as j,E as H}from"./chunks/index-bc271058.js";function J(r){let l,t=r[1].frame+"",a;return{c(){l=E("pre"),a=v(t)},l(f){l=d(f,"PRE",{});var s=b(l);a=P(s,t),s.forEach(o)},m(f,s){u(f,l,s),R(l,a)},p(f,s){s&2&&t!==(t=f[1].frame+"")&&N(a,t)},d(f){f&&o(l)}}}function h(r){let l,t=r[1].stack+"",a;return{c(){l=E("pre"),a=v(t)},l(f){l=d(f,"PRE",{});var s=b(l);a=P(s,t),s.forEach(o)},m(f,s){u(f,l,s),R(l,a)},p(f,s){s&2&&t!==(t=f[1].stack+"")&&N(a,t)},d(f){f&&o(l)}}}function A(r){let l,t,a,f,s=r[1].message+"",c,k,n,p,i=r[1].frame&&J(r),_=r[1].stack&&h(r);return{c(){l=E("h1"),t=v(r[0]),a=S(),f=E("pre"),c=v(s),k=S(),i&&i.c(),n=S(),_&&_.c(),p=C()},l(e){l=d(e,"H1",{});var m=b(l);t=P(m,r[0]),m.forEach(o),a=j(e),f=d(e,"PRE",{});var q=b(f);c=P(q,s),q.forEach(o),k=j(e),i&&i.l(e),n=j(e),_&&_.l(e),p=C()},m(e,m){u(e,l,m),R(l,t),u(e,a,m),u(e,f,m),R(f,c),u(e,k,m),i&&i.m(e,m),u(e,n,m),_&&_.m(e,m),u(e,p,m)},p(e,[m]){m&1&&N(t,e[0]),m&2&&s!==(s=e[1].message+"")&&N(c,s),e[1].frame?i?i.p(e,m):(i=J(e),i.c(),i.m(n.parentNode,n)):i&&(i.d(1),i=null),e[1].stack?_?_.p(e,m):(_=h(e),_.c(),_.m(p.parentNode,p)):_&&(_.d(1),_=null)},i:H,o:H,d(e){e&&o(l),e&&o(a),e&&o(f),e&&o(k),i&&i.d(e),e&&o(n),_&&_.d(e),e&&o(p)}}}function F({error:r,status:l}){return{props:{error:r,status:l}}}function B(r,l,t){let{status:a}=l,{error:f}=l;return r.$$set=s=>{"status"in s&&t(0,a=s.status),"error"in s&&t(1,f=s.error)},[a,f]}class G extends w{constructor(l){super(),y(this,l,B,A,z,{status:0,error:1})}}export{G as default,F as load}; diff --git a/static/_app/layout.svelte-b226a993.js b/static/_app/layout.svelte-b226a993.js new file mode 100644 index 0000000000000000000000000000000000000000..90fc05390f7219e124ebaadd984f05b894d5c735 --- /dev/null +++ b/static/_app/layout.svelte-b226a993.js @@ -0,0 +1 @@ +import{S as l,i,s as r,F as u,G as f,H as _,I as c,q as p,o as d}from"./chunks/index-bc271058.js";function m(n){let s;const o=n[1].default,e=u(o,n,n[0],null);return{c(){e&&e.c()},l(t){e&&e.l(t)},m(t,a){e&&e.m(t,a),s=!0},p(t,[a]){e&&e.p&&(!s||a&1)&&f(e,o,t,t[0],s?c(o,t[0],a,null):_(t[0]),null)},i(t){s||(p(e,t),s=!0)},o(t){d(e,t),s=!1},d(t){e&&e.d(t)}}}function $(n,s,o){let{$$slots:e={},$$scope:t}=s;return n.$$set=a=>{"$$scope"in a&&o(0,t=a.$$scope)},[t,e]}class h extends l{constructor(s){super(),i(this,s,$,m,r,{})}}export{h as default}; diff --git a/templates/_app/manifest.json b/static/_app/manifest.json similarity index 59% rename from templates/_app/manifest.json rename to static/_app/manifest.json index bb0512826f20d00f5ea6b88d7817203740e8d743..22478048d1fdec38e0ca551f3d1cff5a815a6b33 100644 --- a/templates/_app/manifest.json +++ b/static/_app/manifest.json @@ -1,10 +1,11 @@ { ".svelte-kit/runtime/client/start.js": { - "file": "start-b41bef43.js", + "file": "start-c175317f.js", "src": ".svelte-kit/runtime/client/start.js", "isEntry": true, "imports": [ - "_index-60624bc8.js" + "_index-bc271058.js", + "_index-a16eaf24.js" ], "dynamicImports": [ ".svelte-kit/runtime/components/layout.svelte", @@ -13,33 +14,43 @@ ] }, ".svelte-kit/runtime/components/layout.svelte": { - "file": "layout.svelte-e3a1ab0e.js", + "file": "layout.svelte-b226a993.js", "src": ".svelte-kit/runtime/components/layout.svelte", "isEntry": true, "isDynamicEntry": true, "imports": [ - "_index-60624bc8.js" + "_index-bc271058.js" ] }, ".svelte-kit/runtime/components/error.svelte": { - "file": "error.svelte-5990926f.js", + "file": "error.svelte-b9cb04fa.js", "src": ".svelte-kit/runtime/components/error.svelte", "isEntry": true, "isDynamicEntry": true, "imports": [ - "_index-60624bc8.js" + "_index-bc271058.js" ] }, "src/routes/index.svelte": { - "file": "pages/index.svelte-47304b27.js", + "file": "pages/index.svelte-8e87fac9.js", "src": "src/routes/index.svelte", "isEntry": true, "isDynamicEntry": true, "imports": [ - "_index-60624bc8.js" + "_index-bc271058.js", + "_index-a16eaf24.js" + ], + "css": [ + "assets/pages/index.svelte-de534b64.css" ] }, - "_index-60624bc8.js": { - "file": "chunks/index-60624bc8.js" + "_index-bc271058.js": { + "file": "chunks/index-bc271058.js" + }, + "_index-a16eaf24.js": { + "file": "chunks/index-a16eaf24.js", + "imports": [ + "_index-bc271058.js" + ] } } \ No newline at end of file diff --git a/static/_app/pages/index.svelte-8e87fac9.js b/static/_app/pages/index.svelte-8e87fac9.js new file mode 100644 index 0000000000000000000000000000000000000000..543726398bfb3ad3eb1d8d8b5894845dfe9014a7 --- /dev/null +++ b/static/_app/pages/index.svelte-8e87fac9.js @@ -0,0 +1,27 @@ +import{S as C,i as B,s as z,e as u,k as m,c as h,a as f,d as c,m as v,K as x,b as N,g as D,J as o,L as se,t as M,h as $,j as J,E as p,M as ne,w as y,x as b,y as S,q as R,o as w,B as k,N as le}from"../chunks/index-bc271058.js";import{w as Ee}from"../chunks/index-a16eaf24.js";const Te="Piano",ae="Chamber Music",re="Rock and Metal",Oe="Synthesizer",oe="Church",ie="Timpani, Contrabass, Harp",Ne="Country";var G={piano:Te,chamber:ae,rock_and_metal:re,synth:Oe,church:oe,timpani_strings_harp:ie,country:Ne};function X(T,e,s){const n=T.slice();return n[4]=e[s],n[6]=s,n}function Z(T){let e,s,n,a,_,l,E,t,r,i,O,g;return{c(){e=u("label"),s=u("div"),n=u("img"),l=m(),E=u("input"),r=m(),this.h()},l(d){e=h(d,"LABEL",{"data-selected":!0,class:!0});var I=f(e);s=h(I,"DIV",{class:!0});var L=f(s);n=h(L,"IMG",{src:!0,alt:!0,class:!0}),L.forEach(c),l=v(I),E=h(I,"INPUT",{type:!0,class:!0}),r=v(I),I.forEach(c),this.h()},h(){x(n.src,a=`${T[4]}.svg`)||N(n,"src",a),N(n,"alt",_=G[T[4]]),N(n,"class","svelte-1r9pswz"),N(s,"class","svelte-1r9pswz"),N(E,"type","radio"),E.__value=t=T[4],E.value=E.__value,N(E,"class","svelte-1r9pswz"),T[3][0].push(E),N(e,"data-selected",i=T[0]===T[4]),N(e,"class","svelte-1r9pswz")},m(d,I){D(d,e,I),o(e,s),o(s,n),o(e,l),o(e,E),E.checked=E.__value===T[0],o(e,r),O||(g=se(E,"change",T[2]),O=!0)},p(d,I){I&1&&(E.checked=E.__value===d[0]),I&1&&i!==(i=d[0]===d[4])&&N(e,"data-selected",i)},d(d){d&&c(e),T[3][0].splice(T[3][0].indexOf(E),1),O=!1,g()}}}function ce(T){let e,s,n=(G[T[0]]||"Synthesizer")+"",a,_,l,E=T[1],t=[];for(let r=0;r<E.length;r+=1)t[r]=Z(X(T,E,r));return{c(){e=u("fieldset"),s=u("legend"),a=M(n),_=m(),l=u("div");for(let r=0;r<t.length;r+=1)t[r].c();this.h()},l(r){e=h(r,"FIELDSET",{class:!0});var i=f(e);s=h(i,"LEGEND",{class:!0});var O=f(s);a=$(O,n),O.forEach(c),_=v(i),l=h(i,"DIV",{class:!0});var g=f(l);for(let d=0;d<t.length;d+=1)t[d].l(g);g.forEach(c),i.forEach(c),this.h()},h(){N(s,"class","svelte-1r9pswz"),N(l,"class","grid svelte-1r9pswz"),N(e,"class","svelte-1r9pswz")},m(r,i){D(r,e,i),o(e,s),o(s,a),o(e,_),o(e,l);for(let O=0;O<t.length;O+=1)t[O].m(l,null)},p(r,[i]){if(i&1&&n!==(n=(G[r[0]]||"Synthesizer")+"")&&J(a,n),i&3){E=r[1];let O;for(O=0;O<E.length;O+=1){const g=X(r,E,O);t[O]?t[O].p(g,i):(t[O]=Z(g),t[O].c(),t[O].m(l,null))}for(;O<t.length;O+=1)t[O].d(1);t.length=E.length}},i:p,o:p,d(r){r&&c(e),ne(t,r)}}}function ue(T,e,s){const n=Object.keys(G);let a="synth";const _=[[]];function l(){a=this.__value,s(0,a)}return[a,n,l,_]}class he extends C{constructor(e){super(),B(this,e,ue,ce,z,{})}}function ee(T,e,s){const n=T.slice();return n[5]=e[s],n[7]=s,n}function te(T){let e,s=T[5]+"",n,a,_,l,E,t,r;return{c(){e=u("label"),n=M(s),a=m(),_=u("input"),this.h()},l(i){e=h(i,"LABEL",{"data-selected":!0,class:!0});var O=f(e);n=$(O,s),a=v(O),_=h(O,"INPUT",{type:!0,class:!0}),O.forEach(c),this.h()},h(){N(_,"type","radio"),_.__value=l=T[5],_.value=_.__value,N(_,"class","svelte-1m848u0"),T[4][0].push(_),N(e,"data-selected",E=T[5]===T[1]),N(e,"class","svelte-1m848u0")},m(i,O){D(i,e,O),o(e,n),o(e,a),o(e,_),_.checked=_.__value===T[1],t||(r=se(_,"change",T[3]),t=!0)},p(i,O){O&1&&s!==(s=i[5]+"")&&J(n,s),O&1&&l!==(l=i[5])&&(_.__value=l,_.value=_.__value),O&2&&(_.checked=_.__value===i[1]),O&3&&E!==(E=i[5]===i[1])&&N(e,"data-selected",E)},d(i){i&&c(e),T[4][0].splice(T[4][0].indexOf(_),1),t=!1,r()}}}function fe(T){let e,s,n,a=T[0],_=[];for(let l=0;l<a.length;l+=1)_[l]=te(ee(T,a,l));return{c(){e=u("div");for(let l=0;l<_.length;l+=1)_[l].c();s=m(),n=u("input"),this.h()},l(l){e=h(l,"DIV",{class:!0});var E=f(e);for(let t=0;t<_.length;t+=1)_[t].l(E);s=v(E),n=h(E,"INPUT",{type:!0,class:!0}),E.forEach(c),this.h()},h(){N(n,"type","radio"),n.checked=!0,N(n,"class","svelte-1m848u0"),N(e,"class","options svelte-1m848u0")},m(l,E){D(l,e,E);for(let t=0;t<_.length;t+=1)_[t].m(e,null);o(e,s),o(e,n)},p(l,[E]){if(E&3){a=l[0];let t;for(t=0;t<a.length;t+=1){const r=ee(l,a,t);_[t]?_[t].p(r,E):(_[t]=te(r),_[t].c(),_[t].m(e,s))}for(;t<_.length;t+=1)_[t].d(1);_.length=a.length}},i:p,o:p,d(l){l&&c(e),ne(_,l)}}}function de(T,e,s){let{options:n}=e,{type:a}=e,_=n[1];const l=[[]];function E(){_=this.__value,s(1,_)}return T.$$set=t=>{"options"in t&&s(0,n=t.options),"type"in t&&s(2,a=t.type)},[n,_,a,E,l]}class _e extends C{constructor(e){super(),B(this,e,de,fe,z,{options:0,type:2})}}function Fe(T){let e,s,n,a,_,l,E;return l=new _e({props:{options:T[0],type:pe}}),{c(){e=u("div"),s=u("fieldset"),n=u("legend"),a=M("Note density"),_=m(),y(l.$$.fragment),this.h()},l(t){e=h(t,"DIV",{});var r=f(e);s=h(r,"FIELDSET",{class:!0});var i=f(s);n=h(i,"LEGEND",{class:!0});var O=f(n);a=$(O,"Note density"),O.forEach(c),_=v(i),b(l.$$.fragment,i),i.forEach(c),r.forEach(c),this.h()},h(){N(n,"class","svelte-1cq0vc2"),N(s,"class","svelte-1cq0vc2")},m(t,r){D(t,e,r),o(e,s),o(s,n),o(n,a),o(s,_),S(l,s,null),E=!0},p,i(t){E||(R(l.$$.fragment,t),E=!0)},o(t){w(l.$$.fragment,t),E=!1},d(t){t&&c(e),k(l)}}}const pe="density";function me(T){return[["Low","Medium","High"]]}class ve extends C{constructor(e){super(),B(this,e,me,Fe,z,{})}}function Ae(T){let e,s,n,a,_,l,E;return l=new _e({props:{options:T[0],type:Ie}}),{c(){e=u("div"),s=u("fieldset"),n=u("legend"),a=M("Temperature"),_=m(),y(l.$$.fragment),this.h()},l(t){e=h(t,"DIV",{});var r=f(e);s=h(r,"FIELDSET",{class:!0});var i=f(s);n=h(i,"LEGEND",{class:!0});var O=f(n);a=$(O,"Temperature"),O.forEach(c),_=v(i),b(l.$$.fragment,i),i.forEach(c),r.forEach(c),this.h()},h(){N(n,"class","svelte-nlqy14"),N(s,"class","svelte-nlqy14")},m(t,r){D(t,e,r),o(e,s),o(s,n),o(n,a),o(s,_),S(l,s,null),E=!0},p,i(t){E||(R(l.$$.fragment,t),E=!0)},o(t){w(l.$$.fragment,t),E=!1},d(t){t&&c(e),k(l)}}}const Ie="temperature";function ge(T){return[["Low","Medium","High","Very High"]]}class De extends C{constructor(e){super(),B(this,e,ge,Ae,z,{})}}const Le=Ee(!1);function Me(T){let e,s;return{c(){e=u("button"),s=M(T[1]),this.h()},l(n){e=h(n,"BUTTON",{class:!0});var a=f(e);s=$(a,T[1]),a.forEach(c),this.h()},h(){e.disabled=T[0],N(e,"class","svelte-aq73nm")},m(n,a){D(n,e,a),o(e,s)},p(n,[a]){a&2&&J(s,n[1]),a&1&&(e.disabled=n[0])},i:p,o:p,d(n){n&&c(e)}}}function $e(T,e,s){let n,a;return le(T,Le,_=>s(0,a=_)),T.$$.update=()=>{T.$$.dirty&1&&s(1,n=a?"Composing...":"Compose \u2728")},[a,n]}class ye extends C{constructor(e){super(),B(this,e,$e,Me,z,{})}}function be(T){let e,s;return{c(){e=u("audio"),this.h()},l(n){e=h(n,"AUDIO",{src:!0,class:!0}),f(e).forEach(c),this.h()},h(){e.controls=!0,x(e.src,s="download.wav")||N(e,"src",s),N(e,"class","svelte-1e9isw9")},m(n,a){D(n,e,a)},p,i:p,o:p,d(n){n&&c(e)}}}class Se extends C{constructor(e){super(),B(this,e,null,be,z,{})}}function Re(T){let e,s,n,a,_,l;return{c(){e=u("section"),s=u("h2"),n=M("Visualised notes"),a=m(),_=u("img"),this.h()},l(E){e=h(E,"SECTION",{class:!0});var t=f(e);s=h(t,"H2",{});var r=f(s);n=$(r,"Visualised notes"),r.forEach(c),a=v(t),_=h(t,"IMG",{src:!0,alt:!0,class:!0}),t.forEach(c),this.h()},h(){x(_.src,l="compose.png")||N(_,"src",l),N(_,"alt","MIDI notes of composition"),N(_,"class","svelte-1tzlz20"),N(e,"class","svelte-1tzlz20")},m(E,t){D(E,e,t),o(e,s),o(s,n),o(e,a),o(e,_)},p,i:p,o:p,d(E){E&&c(e)}}}class we extends C{constructor(e){super(),B(this,e,null,Re,z,{})}}function ke(T){let e,s,n,a,_,l;return{c(){e=u("section"),s=u("h2"),n=M("Tokenized notes"),a=m(),_=u("p"),l=M(`PIECE_START TRACK_START INST=DRUMS DENSITY=6 BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 + TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 + NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 + NOTE_OFF=35 NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 + TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 + TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 + NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 + TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 + NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42`),this.h()},l(E){e=h(E,"SECTION",{class:!0});var t=f(e);s=h(t,"H2",{});var r=f(s);n=$(r,"Tokenized notes"),r.forEach(c),a=v(t),_=h(t,"P",{});var i=f(_);l=$(i,`PIECE_START TRACK_START INST=DRUMS DENSITY=6 BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 + TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 + NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 + NOTE_OFF=35 NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 + TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 + TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 + NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 + TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 + NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42`),i.forEach(c),t.forEach(c),this.h()},h(){N(e,"class","svelte-1sitrxx")},m(E,t){D(E,e,t),o(e,s),o(s,n),o(e,a),o(e,_),o(_,l)},p,i:p,o:p,d(E){E&&c(e)}}}class Ce extends C{constructor(e){super(),B(this,e,null,ke,z,{})}}function Be(T){let e,s,n,a,_,l,E,t,r,i,O,g,d,I,L,K,P,j,V,Y,q,U;return r=new he({}),O=new ve({}),d=new De({}),L=new ye({}),P=new Se({}),V=new we({}),q=new Ce({}),{c(){e=u("main"),s=u("h1"),n=M("Composer"),a=m(),_=u("p"),l=M("A hundred thousand songs used to train. One AI model. Infinite compositions."),E=m(),t=u("section"),y(r.$$.fragment),i=m(),y(O.$$.fragment),g=m(),y(d.$$.fragment),I=m(),y(L.$$.fragment),K=m(),y(P.$$.fragment),j=m(),y(V.$$.fragment),Y=m(),y(q.$$.fragment),this.h()},l(F){e=h(F,"MAIN",{class:!0});var A=f(e);s=h(A,"H1",{class:!0});var Q=f(s);n=$(Q,"Composer"),Q.forEach(c),a=v(A),_=h(A,"P",{class:!0});var W=f(_);l=$(W,"A hundred thousand songs used to train. One AI model. Infinite compositions."),W.forEach(c),E=v(A),t=h(A,"SECTION",{id:!0,class:!0});var H=f(t);b(r.$$.fragment,H),i=v(H),b(O.$$.fragment,H),g=v(H),b(d.$$.fragment,H),H.forEach(c),I=v(A),b(L.$$.fragment,A),K=v(A),b(P.$$.fragment,A),j=v(A),b(V.$$.fragment,A),Y=v(A),b(q.$$.fragment,A),A.forEach(c),this.h()},h(){N(s,"class","svelte-1m4hhxp"),N(_,"class","svelte-1m4hhxp"),N(t,"id","options"),N(t,"class","svelte-1m4hhxp"),N(e,"class","svelte-1m4hhxp")},m(F,A){D(F,e,A),o(e,s),o(s,n),o(e,a),o(e,_),o(_,l),o(e,E),o(e,t),S(r,t,null),o(t,i),S(O,t,null),o(t,g),S(d,t,null),o(e,I),S(L,e,null),o(e,K),S(P,e,null),o(e,j),S(V,e,null),o(e,Y),S(q,e,null),U=!0},p,i(F){U||(R(r.$$.fragment,F),R(O.$$.fragment,F),R(d.$$.fragment,F),R(L.$$.fragment,F),R(P.$$.fragment,F),R(V.$$.fragment,F),R(q.$$.fragment,F),U=!0)},o(F){w(r.$$.fragment,F),w(O.$$.fragment,F),w(d.$$.fragment,F),w(L.$$.fragment,F),w(P.$$.fragment,F),w(V.$$.fragment,F),w(q.$$.fragment,F),U=!1},d(F){F&&c(e),k(r),k(O),k(d),k(L),k(P),k(V),k(q)}}}class Ve extends C{constructor(e){super(),B(this,e,null,Be,z,{})}}export{Ve as default}; diff --git a/static/_app/start-c175317f.js b/static/_app/start-c175317f.js new file mode 100644 index 0000000000000000000000000000000000000000..d0db3b080184231c9c13dfbc38f5af59f4acf5ba --- /dev/null +++ b/static/_app/start-c175317f.js @@ -0,0 +1 @@ +var et=Object.defineProperty,tt=Object.defineProperties;var nt=Object.getOwnPropertyDescriptors;var fe=Object.getOwnPropertySymbols;var Te=Object.prototype.hasOwnProperty,De=Object.prototype.propertyIsEnumerable;var Ie=(n,e,t)=>e in n?et(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,P=(n,e)=>{for(var t in e||(e={}))Te.call(e,t)&&Ie(n,t,e[t]);if(fe)for(var t of fe(e))De.call(e,t)&&Ie(n,t,e[t]);return n},ne=(n,e)=>tt(n,nt(e));var Ve=(n,e)=>{var t={};for(var s in n)Te.call(n,s)&&e.indexOf(s)<0&&(t[s]=n[s]);if(n!=null&&fe)for(var s of fe(n))e.indexOf(s)<0&&De.call(n,s)&&(t[s]=n[s]);return t};import{S as rt,i as st,s as it,e as at,c as ot,a as ct,d as V,b as we,f as B,g as q,t as lt,h as ft,j as ut,k as dt,l as C,m as pt,n as M,o as j,p as F,q as I,r as ht,u as _t,v as $e,w as z,x as se,y as J,z as ie,A as ae,B as K,C as oe,D as qe}from"./chunks/index-bc271058.js";import{w as ue}from"./chunks/index-a16eaf24.js";let ze="",He="";function mt(n){ze=n.base,He=n.assets||ze}function gt(n){let e,t,s;const l=[n[1]||{}];var c=n[0][0];function f(r){let i={};for(let a=0;a<l.length;a+=1)i=oe(i,l[a]);return{props:i}}return c&&(e=new c(f())),{c(){e&&z(e.$$.fragment),t=C()},l(r){e&&se(e.$$.fragment,r),t=C()},m(r,i){e&&J(e,r,i),q(r,t,i),s=!0},p(r,i){const a=i&2?ie(l,[ae(r[1]||{})]):{};if(c!==(c=r[0][0])){if(e){M();const d=e;j(d.$$.fragment,1,0,()=>{K(d,1)}),F()}c?(e=new c(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else c&&e.$set(a)},i(r){s||(e&&I(e.$$.fragment,r),s=!0)},o(r){e&&j(e.$$.fragment,r),s=!1},d(r){r&&V(t),e&&K(e,r)}}}function wt(n){let e,t,s;const l=[n[1]||{}];var c=n[0][0];function f(r){let i={$$slots:{default:[$t]},$$scope:{ctx:r}};for(let a=0;a<l.length;a+=1)i=oe(i,l[a]);return{props:i}}return c&&(e=new c(f(n))),{c(){e&&z(e.$$.fragment),t=C()},l(r){e&&se(e.$$.fragment,r),t=C()},m(r,i){e&&J(e,r,i),q(r,t,i),s=!0},p(r,i){const a=i&2?ie(l,[ae(r[1]||{})]):{};if(i&525&&(a.$$scope={dirty:i,ctx:r}),c!==(c=r[0][0])){if(e){M();const d=e;j(d.$$.fragment,1,0,()=>{K(d,1)}),F()}c?(e=new c(f(r)),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else c&&e.$set(a)},i(r){s||(e&&I(e.$$.fragment,r),s=!0)},o(r){e&&j(e.$$.fragment,r),s=!1},d(r){r&&V(t),e&&K(e,r)}}}function bt(n){let e,t,s;const l=[n[2]||{}];var c=n[0][1];function f(r){let i={};for(let a=0;a<l.length;a+=1)i=oe(i,l[a]);return{props:i}}return c&&(e=new c(f())),{c(){e&&z(e.$$.fragment),t=C()},l(r){e&&se(e.$$.fragment,r),t=C()},m(r,i){e&&J(e,r,i),q(r,t,i),s=!0},p(r,i){const a=i&4?ie(l,[ae(r[2]||{})]):{};if(c!==(c=r[0][1])){if(e){M();const d=e;j(d.$$.fragment,1,0,()=>{K(d,1)}),F()}c?(e=new c(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else c&&e.$set(a)},i(r){s||(e&&I(e.$$.fragment,r),s=!0)},o(r){e&&j(e.$$.fragment,r),s=!1},d(r){r&&V(t),e&&K(e,r)}}}function yt(n){let e,t,s;const l=[n[2]||{}];var c=n[0][1];function f(r){let i={$$slots:{default:[vt]},$$scope:{ctx:r}};for(let a=0;a<l.length;a+=1)i=oe(i,l[a]);return{props:i}}return c&&(e=new c(f(n))),{c(){e&&z(e.$$.fragment),t=C()},l(r){e&&se(e.$$.fragment,r),t=C()},m(r,i){e&&J(e,r,i),q(r,t,i),s=!0},p(r,i){const a=i&4?ie(l,[ae(r[2]||{})]):{};if(i&521&&(a.$$scope={dirty:i,ctx:r}),c!==(c=r[0][1])){if(e){M();const d=e;j(d.$$.fragment,1,0,()=>{K(d,1)}),F()}c?(e=new c(f(r)),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else c&&e.$set(a)},i(r){s||(e&&I(e.$$.fragment,r),s=!0)},o(r){e&&j(e.$$.fragment,r),s=!1},d(r){r&&V(t),e&&K(e,r)}}}function vt(n){let e,t,s;const l=[n[3]||{}];var c=n[0][2];function f(r){let i={};for(let a=0;a<l.length;a+=1)i=oe(i,l[a]);return{props:i}}return c&&(e=new c(f())),{c(){e&&z(e.$$.fragment),t=C()},l(r){e&&se(e.$$.fragment,r),t=C()},m(r,i){e&&J(e,r,i),q(r,t,i),s=!0},p(r,i){const a=i&8?ie(l,[ae(r[3]||{})]):{};if(c!==(c=r[0][2])){if(e){M();const d=e;j(d.$$.fragment,1,0,()=>{K(d,1)}),F()}c?(e=new c(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else c&&e.$set(a)},i(r){s||(e&&I(e.$$.fragment,r),s=!0)},o(r){e&&j(e.$$.fragment,r),s=!1},d(r){r&&V(t),e&&K(e,r)}}}function $t(n){let e,t,s,l;const c=[yt,bt],f=[];function r(i,a){return i[0][2]?0:1}return e=r(n),t=f[e]=c[e](n),{c(){t.c(),s=C()},l(i){t.l(i),s=C()},m(i,a){f[e].m(i,a),q(i,s,a),l=!0},p(i,a){let d=e;e=r(i),e===d?f[e].p(i,a):(M(),j(f[d],1,1,()=>{f[d]=null}),F(),t=f[e],t?t.p(i,a):(t=f[e]=c[e](i),t.c()),I(t,1),t.m(s.parentNode,s))},i(i){l||(I(t),l=!0)},o(i){j(t),l=!1},d(i){f[e].d(i),i&&V(s)}}}function Je(n){let e,t=n[5]&&Ke(n);return{c(){e=at("div"),t&&t.c(),this.h()},l(s){e=ot(s,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var l=ct(e);t&&t.l(l),l.forEach(V),this.h()},h(){we(e,"id","svelte-announcer"),we(e,"aria-live","assertive"),we(e,"aria-atomic","true"),B(e,"position","absolute"),B(e,"left","0"),B(e,"top","0"),B(e,"clip","rect(0 0 0 0)"),B(e,"clip-path","inset(50%)"),B(e,"overflow","hidden"),B(e,"white-space","nowrap"),B(e,"width","1px"),B(e,"height","1px")},m(s,l){q(s,e,l),t&&t.m(e,null)},p(s,l){s[5]?t?t.p(s,l):(t=Ke(s),t.c(),t.m(e,null)):t&&(t.d(1),t=null)},d(s){s&&V(e),t&&t.d()}}}function Ke(n){let e;return{c(){e=lt(n[6])},l(t){e=ft(t,n[6])},m(t,s){q(t,e,s)},p(t,s){s&64&&ut(e,t[6])},d(t){t&&V(e)}}}function kt(n){let e,t,s,l,c;const f=[wt,gt],r=[];function i(d,R){return d[0][1]?0:1}e=i(n),t=r[e]=f[e](n);let a=n[4]&&Je(n);return{c(){t.c(),s=dt(),a&&a.c(),l=C()},l(d){t.l(d),s=pt(d),a&&a.l(d),l=C()},m(d,R){r[e].m(d,R),q(d,s,R),a&&a.m(d,R),q(d,l,R),c=!0},p(d,[R]){let y=e;e=i(d),e===y?r[e].p(d,R):(M(),j(r[y],1,1,()=>{r[y]=null}),F(),t=r[e],t?t.p(d,R):(t=r[e]=f[e](d),t.c()),I(t,1),t.m(s.parentNode,s)),d[4]?a?a.p(d,R):(a=Je(d),a.c(),a.m(l.parentNode,l)):a&&(a.d(1),a=null)},i(d){c||(I(t),c=!0)},o(d){j(t),c=!1},d(d){r[e].d(d),d&&V(s),a&&a.d(d),d&&V(l)}}}function Et(n,e,t){let{stores:s}=e,{page:l}=e,{components:c}=e,{props_0:f=null}=e,{props_1:r=null}=e,{props_2:i=null}=e;ht("__svelte__",s),_t(s.page.notify);let a=!1,d=!1,R=null;return $e(()=>{const y=s.page.subscribe(()=>{a&&(t(5,d=!0),t(6,R=document.title||"untitled page"))});return t(4,a=!0),y}),n.$$set=y=>{"stores"in y&&t(7,s=y.stores),"page"in y&&t(8,l=y.page),"components"in y&&t(0,c=y.components),"props_0"in y&&t(1,f=y.props_0),"props_1"in y&&t(2,r=y.props_1),"props_2"in y&&t(3,i=y.props_2)},n.$$.update=()=>{n.$$.dirty&384&&s.page.set(l)},[c,f,r,i,a,d,R,s,l]}class Rt extends rt{constructor(e){super(),st(this,e,Et,kt,it,{stores:7,page:8,components:0,props_0:1,props_1:2,props_2:3})}}const St="modulepreload",Be={},Lt="/_app/",be=function(e,t){return!t||t.length===0?e():Promise.all(t.map(s=>{if(s=`${Lt}${s}`,s in Be)return;Be[s]=!0;const l=s.endsWith(".css"),c=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${c}`))return;const f=document.createElement("link");if(f.rel=l?"stylesheet":St,l||(f.as="script",f.crossOrigin=""),f.href=s,document.head.appendChild(f),l)return new Promise((r,i)=>{f.addEventListener("load",r),f.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>e())},Ut={},Ee=[()=>be(()=>import("./layout.svelte-b226a993.js"),["layout.svelte-b226a993.js","chunks/index-bc271058.js"]),()=>be(()=>import("./error.svelte-b9cb04fa.js"),["error.svelte-b9cb04fa.js","chunks/index-bc271058.js"]),()=>be(()=>import("./pages/index.svelte-8e87fac9.js"),["pages/index.svelte-8e87fac9.js","assets/pages/index.svelte-de534b64.css","chunks/index-bc271058.js","chunks/index-a16eaf24.js"])],At={"":[[0,2],[1]]};function We(n){return n instanceof Error||n&&n.name&&n.message?n:new Error(JSON.stringify(n))}function Ye(n){if(n.fallthrough)throw new Error("fallthrough is no longer supported. Use matchers instead: https://kit.svelte.dev/docs/routing#advanced-routing-matching");if("maxage"in n)throw new Error("maxage should be replaced with cache: { maxage }");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 s=typeof n.error=="string"?new Error(n.error):n.error;return s 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:s}):{status:t,error:s}:{status:500,error:new Error(`"error" property returned from load() must be a string or instance of Error, received type "${typeof s}"`)}}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.dependencies&&(!Array.isArray(n.dependencies)||n.dependencies.some(t=>typeof t!="string")))return{status:500,error:new Error('"dependencies" property returned from load() must be of type 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 Nt(n,e){return n==="/"||e==="ignore"?n:e==="never"?n.endsWith("/")?n.slice(0,-1):n:e==="always"&&!n.endsWith("/")?n+"/":n}function Ot(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 Me(n){let e=n.baseURI;if(!e){const t=n.getElementsByTagName("base");e=t.length?t[0].href:n.URL}return e}function ke(){return{x:pageXOffset,y:pageYOffset}}function Fe(n){return n.composedPath().find(t=>t instanceof Node&&t.nodeName.toUpperCase()==="A")}function Ge(n){return n instanceof SVGAElement?new URL(n.href.baseVal,document.baseURI):new URL(n.href)}function Xe(n){const e=ue(n);let t=!0;function s(){t=!0,e.update(f=>f)}function l(f){t=!1,e.set(f)}function c(f){let r;return e.subscribe(i=>{(r===void 0||t&&i!==r)&&f(r=i)})}return{notify:s,set:l,subscribe:c}}function xt(){const{set:n,subscribe:e}=ue(!1),t="1651126615853";let s;async function l(){clearTimeout(s);const f=await fetch(`${He}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(f.ok){const{version:r}=await f.json(),i=r!==t;return i&&(n(!0),clearTimeout(s)),i}else throw new Error(`Version check failed: ${f.status}`)}return{subscribe:e,check:l}}function Pt(n,e){let s=`script[sveltekit\\:data-type="data"][sveltekit\\:data-url=${JSON.stringify(typeof n=="string"?n:n.url)}]`;e&&typeof e.body=="string"&&(s+=`[sveltekit\\:data-body="${Ot(e.body)}"]`);const l=document.querySelector(s);if(l&&l.textContent){const c=JSON.parse(l.textContent),{body:f}=c,r=Ve(c,["body"]);return Promise.resolve(new Response(f,r))}return fetch(n,e)}const Ct=/^(\.\.\.)?(\w+)(?:=(\w+))?$/;function jt(n){const e=[],t=[];let s=!0;return{pattern:n===""?/^\/$/:new RegExp(`^${decodeURIComponent(n).split(/(?:@[a-zA-Z0-9_-]+)?(?:\/|$)/).map((c,f,r)=>{const i=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(c);if(i)return e.push(i[1]),t.push(i[2]),"(?:/(.*))?";const a=f===r.length-1;return c&&"/"+c.split(/\[(.+?)\]/).map((d,R)=>{if(R%2){const[,y,Z,G]=Ct.exec(d);return e.push(Z),t.push(G),y?"(.*?)":"([^/]+?)"}return a&&d.includes(".")&&(s=!1),d.normalize().replace(/%5[Bb]/g,"[").replace(/%5[Dd]/g,"]").replace(/#/g,"%23").replace(/\?/g,"%3F").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}).join("")}).join("")}${s?"/?":""}$`),names:e,types:t}}function It(n,e,t,s){const l={};for(let c=0;c<e.length;c+=1){const f=e[c],r=t[c],i=n[c+1]||"";if(r){const a=s[r];if(!a)throw new Error(`Missing "${r}" param matcher`);if(!a(i))return}l[f]=i}return l}function Tt(n,e,t){return Object.entries(e).map(([l,[c,f,r]])=>{const{pattern:i,names:a,types:d}=jt(l);return{id:l,exec:R=>{const y=i.exec(R);if(y)return It(y,a,d,t)},a:c.map(R=>n[R]),b:f.map(R=>n[R]),has_shadow:!!r}})}const Qe="sveltekit:scroll",W="sveltekit:index",ye=Tt(Ee,At,Ut),Dt=Ee[0](),Vt=Ee[1](),Ze={};let re={};try{re=JSON.parse(sessionStorage[Qe])}catch{}function ve(n){re[n]=ke()}function qt({target:n,session:e,base:t,trailing_slash:s}){var Ce;const l=new Map,c=[],f={url:Xe({}),page:Xe({}),navigating:ue(null),session:ue(e),updated:xt()},r={id:null,promise:null},i={before_navigate:[],after_navigate:[]};let a={branch:[],error:null,session_id:0,stuff:Ze,url:null},d=!1,R=!0,y=!1,Z=1,G=null,Re,Se,Le=!1;f.session.subscribe(async o=>{Se=o,Le&&(Z+=1,_e(new URL(location.href),[],!0))}),Le=!0;let X=!0,T=(Ce=history.state)==null?void 0:Ce[W];T||(T=Date.now(),history.replaceState(ne(P({},history.state),{[W]:T}),"",location.href));const de=re[T];de&&(history.scrollRestoration="manual",scrollTo(de.x,de.y));let pe=!1,he,Ue;async function Ae(o,{noscroll:p=!1,replaceState:w=!1,keepfocus:u=!1,state:h={}},b){const _=new URL(o,Me(document));if(X)return ge({url:_,scroll:p?ke():null,keepfocus:u,redirect_chain:b,details:{state:h,replaceState:w},accepted:()=>{},blocked:()=>{}});await ee(_)}async function Ne(o){const p=Pe(o);if(!p)throw new Error("Attempted to prefetch a URL that does not belong to this app");return r.promise=xe(p,!1),r.id=p.id,r.promise}async function _e(o,p,w,u){var g,$,S;const h=Pe(o),b=Ue={};let _=h&&await xe(h,w);if(!_&&o.origin===location.origin&&o.pathname===location.pathname&&(_=await Q({status:404,error:new Error(`Not found: ${o.pathname}`),url:o,routeId:null})),!_)return await ee(o),!1;if(Ue!==b)return!1;if(c.length=0,_.redirect)if(p.length>10||p.includes(o.pathname))_=await Q({status:500,error:new Error("Redirect loop"),url:o,routeId:null});else return X?Ae(new URL(_.redirect,o).href,{},[...p,o.pathname]):await ee(new URL(_.redirect,location.href)),!1;else(($=(g=_.props)==null?void 0:g.page)==null?void 0:$.status)>=400&&await f.updated.check()&&await ee(o);if(y=!0,u&&u.details){const{details:k}=u,E=k.replaceState?0:1;k.state[W]=T+=E,history[k.replaceState?"replaceState":"pushState"](k.state,"",o)}if(d?(a=_.state,Re.$set(_.props)):Oe(_),u){const{scroll:k,keepfocus:E}=u;if(!E){const m=document.body,A=m.getAttribute("tabindex");(S=getSelection())==null||S.removeAllRanges(),m.tabIndex=-1,m.focus(),A!==null?m.setAttribute("tabindex",A):m.removeAttribute("tabindex")}if(await qe(),R){const m=o.hash&&document.getElementById(o.hash.slice(1));k?scrollTo(k.x,k.y):m?m.scrollIntoView():scrollTo(0,0)}}else await qe();r.promise=null,r.id=null,R=!0,y=!1,_.props.page&&(he=_.props.page);const v=_.state.branch[_.state.branch.length-1];return X=(v==null?void 0:v.module.router)!==!1,!0}function Oe(o){a=o.state;const p=document.querySelector("style[data-sveltekit]");if(p&&p.remove(),he=o.props.page,Re=new Rt({target:n,props:ne(P({},o.props),{stores:f}),hydrate:!0}),d=!0,X){const w={from:null,to:new URL(location.href)};i.after_navigate.forEach(u=>u(w))}}async function me({url:o,params:p,stuff:w,branch:u,status:h,error:b,routeId:_}){var m,A;const v=u.filter(Boolean),g=v.find(U=>{var O;return(O=U.loaded)==null?void 0:O.redirect}),$={redirect:(m=g==null?void 0:g.loaded)==null?void 0:m.redirect,state:{url:o,params:p,branch:u,error:b,stuff:w,session_id:Z},props:{components:v.map(U=>U.module.default)}};for(let U=0;U<v.length;U+=1){const O=v[U].loaded;$.props[`props_${U}`]=O?await O.props:null}if(!a.url||o.href!==a.url.href||a.error!==b||a.stuff!==w){$.props.page={error:b,params:p,routeId:_,status:h,stuff:w,url:o};const U=(O,L)=>{Object.defineProperty($.props.page,O,{get:()=>{throw new Error(`$page.${O} has been replaced by $page.url.${L}`)}})};U("origin","origin"),U("path","pathname"),U("query","searchParams")}const k=v[v.length-1],E=(A=k==null?void 0:k.loaded)==null?void 0:A.cache;if(E){const U=o.pathname+o.search;let O=!1;const L=()=>{l.get(U)===$&&l.delete(U),x(),clearTimeout(N)},N=setTimeout(L,E.maxage*1e3),x=f.session.subscribe(()=>{O&&L()});O=!0,l.set(U,$)}return $}async function H({status:o,error:p,module:w,url:u,params:h,stuff:b,props:_,routeId:v}){const g={module:w,uses:{params:new Set,url:!1,session:!1,stuff:!1,dependencies:new Set},loaded:null,stuff:b};function $(E){const{href:m}=new URL(E,u);g.uses.dependencies.add(m)}_&&g.uses.dependencies.add(u.href);const S={};for(const E in h)Object.defineProperty(S,E,{get(){return g.uses.params.add(E),h[E]},enumerable:!0});const k=Se;if(w.load){const E={routeId:v,params:S,props:_||{},get url(){return g.uses.url=!0,u},get session(){return g.uses.session=!0,k},get stuff(){return g.uses.stuff=!0,P({},b)},fetch(A,U){const O=typeof A=="string"?A:A.url;return $(O),d?fetch(A,U):Pt(A,U)},status:o!=null?o:null,error:p!=null?p:null},m=await w.load.call(null,E);if(!m)throw new Error("load function must return a value");g.loaded=Ye(m),g.loaded.stuff&&(g.stuff=g.loaded.stuff),g.loaded.dependencies&&g.loaded.dependencies.forEach($)}else _&&(g.loaded=Ye({props:_}));return g}async function xe({id:o,url:p,params:w,route:u},h){var A,U,O;if(r.id===o&&r.promise)return r.promise;if(!h){const L=l.get(o);if(L)return L}const{a:b,b:_,has_shadow:v}=u,g=a.url&&{url:o!==a.url.pathname+a.url.search,params:Object.keys(w).filter(L=>a.params[L]!==w[L]),session:Z!==a.session_id};let $=[],S=Ze,k=!1,E=200,m=null;b.forEach(L=>L());e:for(let L=0;L<b.length;L+=1){let N;try{if(!b[L])continue;const x=await b[L](),D=a.branch[L];if(!D||x!==D.module||g.url&&D.uses.url||g.params.some(Y=>D.uses.params.has(Y))||g.session&&D.uses.session||Array.from(D.uses.dependencies).some(Y=>c.some(le=>le(Y)))||k&&D.uses.stuff){let Y={};const le=v&&L===b.length-1;if(le){const te=await fetch(`${p.pathname}${p.pathname.endsWith("/")?"":"/"}__data.json${p.search}`,{headers:{"x-sveltekit-load":"true"}});if(te.ok){const je=te.headers.get("x-sveltekit-location");if(je)return{redirect:je,props:{},state:a};Y=te.status===204?{}:await te.json()}else E=te.status,m=new Error("Failed to load data")}if(m||(N=await H({module:x,url:p,params:w,props:Y,stuff:S,routeId:u.id})),N&&(le&&(N.uses.url=!0),N.loaded)){if(N.loaded.error&&(E=N.loaded.status,m=N.loaded.error),N.loaded.redirect)return{redirect:N.loaded.redirect,props:{},state:a};N.loaded.stuff&&(k=!0)}}else N=D}catch(x){E=500,m=We(x)}if(m){for(;L--;)if(_[L]){let x,D,ce=L;for(;!(D=$[ce]);)ce-=1;try{if(x=await H({status:E,error:m,module:await _[L](),url:p,params:w,stuff:D.stuff,routeId:u.id}),(A=x==null?void 0:x.loaded)!=null&&A.error)continue;(U=x==null?void 0:x.loaded)!=null&&U.stuff&&(S=P(P({},S),x.loaded.stuff)),$=$.slice(0,ce+1).concat(x);break e}catch{continue}}return await Q({status:E,error:m,url:p,routeId:u.id})}else(O=N==null?void 0:N.loaded)!=null&&O.stuff&&(S=P(P({},S),N.loaded.stuff)),$.push(N)}return await me({url:p,params:w,stuff:S,branch:$,status:E,error:m,routeId:u.id})}async function Q({status:o,error:p,url:w,routeId:u}){var v,g;const h={},b=await H({module:await Dt,url:w,params:h,stuff:{},routeId:u}),_=await H({status:o,error:p,module:await Vt,url:w,params:h,stuff:b&&b.loaded&&b.loaded.stuff||{},routeId:u});return await me({url:w,params:h,stuff:P(P({},(v=b==null?void 0:b.loaded)==null?void 0:v.stuff),(g=_==null?void 0:_.loaded)==null?void 0:g.stuff),branch:[b,_],status:o,error:p,routeId:u})}function Pe(o){if(o.origin!==location.origin||!o.pathname.startsWith(t))return;const p=decodeURI(o.pathname.slice(t.length)||"/");for(const w of ye){const u=w.exec(p);if(u)return{id:o.pathname+o.search,route:w,params:u,url:o}}}async function ge({url:o,scroll:p,keepfocus:w,redirect_chain:u,details:h,accepted:b,blocked:_}){const v=a.url;let g=!1;const $={from:v,to:o,cancel:()=>g=!0};if(i.before_navigate.forEach(m=>m($)),g){_();return}const S=Nt(o.pathname,s),k=new URL(o.origin+S+o.search+o.hash);if(ve(T),b(),d&&f.navigating.set({from:a.url,to:k}),await _e(k,u,!1,{scroll:p,keepfocus:w,details:h})){const m={from:v,to:k};i.after_navigate.forEach(A=>A(m)),f.navigating.set(null)}}function ee(o){return location.href=o.href,new Promise(()=>{})}return{after_navigate:o=>{$e(()=>(i.after_navigate.push(o),()=>{const p=i.after_navigate.indexOf(o);i.after_navigate.splice(p,1)}))},before_navigate:o=>{$e(()=>(i.before_navigate.push(o),()=>{const p=i.before_navigate.indexOf(o);i.before_navigate.splice(p,1)}))},disable_scroll_handling:()=>{(y||!d)&&(R=!1)},goto:(o,p={})=>Ae(o,p,[]),invalidate:o=>{if(typeof o=="function")c.push(o);else{const{href:p}=new URL(o,location.href);c.push(w=>w===p)}return G||(G=Promise.resolve().then(async()=>{await _e(new URL(location.href),[],!0),G=null})),G},prefetch:async o=>{const p=new URL(o,Me(document));await Ne(p)},prefetch_routes:async o=>{const w=(o?ye.filter(u=>o.some(h=>u.exec(h))):ye).map(u=>Promise.all(u.a.map(h=>h())));await Promise.all(w)},_start_router:()=>{history.scrollRestoration="manual",addEventListener("beforeunload",u=>{let h=!1;const b={from:a.url,to:null,cancel:()=>h=!0};i.before_navigate.forEach(_=>_(b)),h?(u.preventDefault(),u.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{if(document.visibilityState==="hidden"){ve(T);try{sessionStorage[Qe]=JSON.stringify(re)}catch{}}});const o=u=>{const h=Fe(u);h&&h.href&&h.hasAttribute("sveltekit:prefetch")&&Ne(Ge(h))};let p;const w=u=>{clearTimeout(p),p=setTimeout(()=>{var h;(h=u.target)==null||h.dispatchEvent(new CustomEvent("sveltekit:trigger_prefetch",{bubbles:!0}))},20)};addEventListener("touchstart",o),addEventListener("mousemove",w),addEventListener("sveltekit:trigger_prefetch",o),addEventListener("click",u=>{if(!X||u.button||u.which!==1||u.metaKey||u.ctrlKey||u.shiftKey||u.altKey||u.defaultPrevented)return;const h=Fe(u);if(!h||!h.href)return;const b=h instanceof SVGAElement,_=Ge(h);if(!b&&_.origin==="null")return;const v=(h.getAttribute("rel")||"").split(/\s+/);if(h.hasAttribute("download")||v.includes("external")||h.hasAttribute("sveltekit:reload")||(b?h.target.baseVal:h.target))return;const[g,$]=_.href.split("#");if($!==void 0&&g===location.href.split("#")[0]){pe=!0,ve(T),f.page.set(ne(P({},he),{url:_})),f.page.notify();return}ge({url:_,scroll:h.hasAttribute("sveltekit:noscroll")?ke():null,keepfocus:!1,redirect_chain:[],details:{state:{},replaceState:_.href===location.href},accepted:()=>u.preventDefault(),blocked:()=>u.preventDefault()})}),addEventListener("popstate",u=>{if(u.state&&X){if(u.state[W]===T)return;ge({url:new URL(location.href),scroll:re[u.state[W]],keepfocus:!1,redirect_chain:[],details:null,accepted:()=>{T=u.state[W]},blocked:()=>{const h=T-u.state[W];history.go(h)}})}}),addEventListener("hashchange",()=>{pe&&(pe=!1,history.replaceState(ne(P({},history.state),{[W]:++T}),"",location.href))})},_hydrate:async({status:o,error:p,nodes:w,params:u,routeId:h})=>{const b=new URL(location.href),_=[];let v={},g,$;try{for(let S=0;S<w.length;S+=1){const k=S===w.length-1;let E;if(k){const A=document.querySelector('script[sveltekit\\:data-type="props"]');A&&(E=JSON.parse(A.textContent))}const m=await H({module:await w[S],url:b,params:u,stuff:v,status:k?o:void 0,error:k?p:void 0,props:E,routeId:h});if(E&&(m.uses.dependencies.add(b.href),m.uses.url=!0),_.push(m),m&&m.loaded)if(m.loaded.error){if(p)throw m.loaded.error;$={status:m.loaded.status,error:m.loaded.error,url:b,routeId:h}}else m.loaded.stuff&&(v=P(P({},v),m.loaded.stuff))}g=$?await Q($):await me({url:b,params:u,stuff:v,branch:_,status:o,error:p,routeId:h})}catch(S){if(p)throw S;g=await Q({status:500,error:We(S),url:b,routeId:h})}g.redirect&&await ee(new URL(g.redirect,location.href)),Oe(g)}}}async function Bt({paths:n,target:e,session:t,route:s,spa:l,trailing_slash:c,hydrate:f}){const r=qt({target:e,session:t,base:n.base,trailing_slash:c});mt(n),f&&await r._hydrate(f),s&&(l&&r.goto(location.href,{replaceState:!0}),r._start_router()),dispatchEvent(new CustomEvent("sveltekit:start"))}export{Bt as start}; diff --git a/static/_app/version.json b/static/_app/version.json new file mode 100644 index 0000000000000000000000000000000000000000..7d58911da4be2bf6ae406831a4d438384091af46 --- /dev/null +++ b/static/_app/version.json @@ -0,0 +1 @@ +{"version":"1651126615853"} \ No newline at end of file diff --git a/static/chamber.svg b/static/chamber.svg new file mode 100644 index 0000000000000000000000000000000000000000..19aeaf88f1f78664c0b1073c2697e8462e001200 --- /dev/null +++ b/static/chamber.svg @@ -0,0 +1 @@ +<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"> <path d="M 24 2 A 1 1 0 0 0 23 3 A 1 1 0 0 0 23.816406 3.9824219 L 18.933594 8.4804688 L 20.515625 10.0625 L 24.033203 6.2480469 A 1 1 0 0 0 25 7 A 1 1 0 0 0 26 6 A 1 1 0 0 0 25.167969 5.015625 L 26.005859 4.1074219 A 1 1 0 0 0 27 5 A 1 1 0 0 0 28 4 A 1 1 0 0 0 27 3 A 1 1 0 0 0 26.951172 3.0019531 C 27.051129 2.7380063 26.995469 2.4305701 26.785156 2.21875 C 26.504156 1.93675 26.050813 1.9263125 25.757812 2.1953125 L 24.994141 2.8984375 A 1 1 0 0 0 24 2 z M 18.933594 8.4804688 L 18.808594 8.3554688 C 17.000594 6.5464687 14.055094 6.5454687 12.246094 8.3554688 L 10.421875 10.181641 L 10.744141 10.787109 C 11.113141 11.480109 10.977281 12.202406 10.363281 12.816406 C 9.9632812 13.216406 9.5356875 13.42025 9.0546875 13.40625 C 8.6216875 13.39325 8.1795 13.184406 7.8125 12.816406 L 7.15625 12.158203 L 4.6308594 14.685547 C 2.4598594 16.856547 2.4598594 20.389547 4.6308594 22.560547 L 4.828125 22.759766 L 8.2949219 19.292969 C 8.6859219 18.901969 9.3179844 18.901969 9.7089844 19.292969 C 10.099984 19.683969 10.099984 20.314078 9.7089844 20.705078 L 6.2402344 24.173828 L 6.4375 24.371094 C 7.5225 25.456094 8.9499531 26 10.376953 26 C 11.803953 26 13.228453 25.457094 14.314453 24.371094 L 16.841797 21.84375 L 16.185547 21.1875 C 15.568547 20.5705 15.243594 19.576719 16.183594 18.636719 C 16.799594 18.022719 17.520891 17.886859 18.212891 18.255859 L 18.818359 18.578125 L 20.644531 16.751953 C 22.454531 14.942953 22.454531 11.998453 20.644531 10.189453 L 20.517578 10.0625 L 15.773438 15.208984 L 13.792969 13.212891 L 18.933594 8.4804688 z M 6.2402344 24.173828 L 4.828125 22.759766 L 4.8261719 22.759766 L 3.2929688 24.292969 C 2.9019687 24.683969 2.9019687 25.316031 3.2929688 25.707031 C 3.4879687 25.902031 3.744 26 4 26 C 4.256 26 4.5120312 25.902031 4.7070312 25.707031 L 6.2402344 24.173828 z"/></svg> \ No newline at end of file diff --git a/static/church.svg b/static/church.svg new file mode 100644 index 0000000000000000000000000000000000000000..87c9a8097195a9f2c6f8d42bcf86b8e415fa5000 --- /dev/null +++ b/static/church.svg @@ -0,0 +1 @@ +<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"><path d="M 15 1 C 14.448 1 14 1.448 14 2 L 14 3 L 13 3 A 1.0001 1.0001 0 1 0 13 5 L 14 5 L 14 6.5859375 L 10 9 L 10 11.501953 L 5.0351562 14.115234 A 1.0001 1.0001 0 1 0 5.9648438 15.884766 L 6 15.867188 L 6 27 L 24 27 L 24 15.867188 L 24.035156 15.884766 A 1.0001 1.0001 0 1 0 24.964844 14.115234 L 20 11.501953 L 20 9 L 16 6.5859375 L 16 5 L 17 5 A 1.0001 1.0001 0 1 0 17 3 L 16 3 L 16 2 C 16 1.448 15.552 1 15 1 z M 17.642578 14.005859 C 17.827578 13.968859 18 14.109828 18 14.298828 L 18 16.259766 C 18 16.407766 17.895 16.535453 17.75 16.564453 L 15 17.386719 L 15 21.177734 C 15 22.662734 14.492422 24 12.732422 24 C 11.592422 24 11 23.337891 11 22.337891 C 11 19.733891 14 20.655203 14 19.408203 L 14 15.763672 C 14 15.312672 14.301328 14.917828 14.736328 14.798828 L 17.642578 14.005859 z"/></svg> \ No newline at end of file diff --git a/static/compose.png b/static/compose.png new file mode 100644 index 0000000000000000000000000000000000000000..8452daac7ffed9d22903a35aa2307f1397845dfd Binary files /dev/null and b/static/compose.png differ diff --git a/static/country.svg b/static/country.svg new file mode 100644 index 0000000000000000000000000000000000000000..c723c6830b49c68b9418e59dbe507c41f111c254 --- /dev/null +++ b/static/country.svg @@ -0,0 +1 @@ +<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"> <path d="M 12 5 C 10.428 5 9.704 6.221 9 8.5 C 8.323 10.69 7 16.644531 7 16.644531 C 7 16.644531 10.018 18 15 18 C 19.982 18 23 16.644531 23 16.644531 C 23 16.644531 21.677 10.69 21 8.5 C 20.296 6.221 19.572 5 18 5 C 16.848 5 16.274 6 15 6 C 13.726 6 13.152 5 12 5 z M 4 14 C 2.3 14 1 15.3 1 17 C 1 20.9 4.8 24 15 24 C 25.2 24 29 20.8 29 17 C 29 15.3 27.7 14 26 14 C 24.3 14 23 15.3 23 17 C 23 20.56 17.5 21 15 21 C 12.5 21 7 21 7 17 C 7 15.3 5.7 14 4 14 z"/></svg> \ No newline at end of file diff --git a/static/download.wav b/static/download.wav new file mode 100644 index 0000000000000000000000000000000000000000..daa1e40fe193d35691ec740406788ebd4454a99b Binary files /dev/null and b/static/download.wav differ diff --git a/templates/favicon.png b/static/favicon.png similarity index 100% rename from templates/favicon.png rename to static/favicon.png diff --git a/static/piano.svg b/static/piano.svg new file mode 100644 index 0000000000000000000000000000000000000000..358c4e7152808e7dd3a4c3ff7d8393f18171ccb7 --- /dev/null +++ b/static/piano.svg @@ -0,0 +1 @@ +<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"> <path d="M 8 4 C 5.239 4 3 6.239 3 9 L 3 19 L 3 25 A 1.0001 1.0001 0 0 0 4 26 L 26 26 A 1.0001 1.0001 0 0 0 27 25 L 27 19 L 27 14 C 27 11.791 25.209 10 23 10 L 21.140625 10 C 19.803625 10 18.5545 9.33175 17.8125 8.21875 L 16.78125 6.671875 C 15.66725 5.002875 13.795063 4 11.789062 4 L 8 4 z M 5 19 L 7 19 L 7 22.5 C 7 22.776 7.224 23 7.5 23 L 8.5 23 C 8.776 23 9 22.776 9 22.5 L 9 19 L 10 19 L 10 22.5 C 10 22.776 10.224 23 10.5 23 L 11.5 23 C 11.776 23 12 22.776 12 22.5 L 12 19 L 15 19 L 15 22.5 C 15 22.776 15.224 23 15.5 23 L 16.5 23 C 16.776 23 17 22.776 17 22.5 L 17 19 L 18 19 L 18 22.5 C 18 22.776 18.224 23 18.5 23 L 19.5 23 C 19.776 23 20 22.776 20 22.5 L 20 19 L 21 19 L 21 22.5 C 21 22.776 21.224 23 21.5 23 L 22.5 23 C 22.776 23 23 22.776 23 22.5 L 23 19 L 25 19 L 25 24 L 5 24 L 5 19 z"/></svg> \ No newline at end of file diff --git a/static/rock_and_metal.svg b/static/rock_and_metal.svg new file mode 100644 index 0000000000000000000000000000000000000000..e720a0cbd1168821794ff078797e996a99ff5814 --- /dev/null +++ b/static/rock_and_metal.svg @@ -0,0 +1 @@ +<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"><path d="M 24.447266 3 C 23.879228 3 23.336231 3.2429081 22.957031 3.6660156 L 13.652344 14.048828 C 12.866283 12.47013 14 10.852708 14 9 C 11.511 9 10 9.7580938 10 11.871094 C 10 13.013094 9.1353594 14 7.8183594 14 C 7.0063594 14 5.7301406 14.35775 4.6191406 15.46875 C 2.4531406 17.68975 2.2887812 21.021516 5.1757812 23.853516 C 8.0637812 26.741516 11.339859 26.519516 13.505859 24.353516 C 14.782859 23.076516 14.782219 21.910453 14.949219 20.689453 C 15.228219 18.411453 19 19.475 19 16 C 16.962836 16 15.778947 15.711992 15.101562 15.429688 L 22.697266 6.953125 A 1 1 0 0 0 23 7 A 1 1 0 0 0 24 6 A 1 1 0 0 0 23.914062 5.5957031 L 24.447266 5 L 26 5 A 1.0001 1.0001 0 1 0 26 3 L 24.447266 3 z M 10.25 16 C 10.442 16 10.63475 16.07225 10.78125 16.21875 L 12.78125 18.21875 C 13.07325 18.51275 13.072297 18.986297 12.779297 19.279297 C 12.633297 19.425297 12.442 19.5 12.25 19.5 C 12.058 19.5 11.866703 19.426297 11.720703 19.279297 L 9.7207031 17.279297 C 9.4277031 16.986297 9.4277031 16.51175 9.7207031 16.21875 C 9.8672031 16.07225 10.058 16 10.25 16 z M 7.75 18.5 C 7.942 18.5 8.13475 18.57225 8.28125 18.71875 L 10.28125 20.71875 C 10.57325 21.01275 10.572297 21.486297 10.279297 21.779297 C 10.133297 21.926297 9.942 22 9.75 22 C 9.558 22 9.3667031 21.926297 9.2207031 21.779297 L 7.2207031 19.779297 C 6.9277031 19.486297 6.9277031 19.01175 7.2207031 18.71875 C 7.3672031 18.57225 7.558 18.5 7.75 18.5 z"/></svg> \ No newline at end of file diff --git a/static/style.css b/static/style.css index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..38efe2490f6d0e164076a2d194c9a36a668dca45 100644 --- a/static/style.css +++ b/static/style.css @@ -0,0 +1,21 @@ +body { + /* width: 100%; */ + padding: 2rem; + font-family: 'Lato', sans-serif; + background-color: hsl(0 0% 1%); +} + + +h1 { + font-family: 'Italiana', serif; + letter-spacing: 0.05ch; +} + + +body, h1 { + color: hsl(0 0% 97%); +} + +/* #options h3 { + font-weight: 700; +} */ diff --git a/static/synth.svg b/static/synth.svg new file mode 100644 index 0000000000000000000000000000000000000000..76bb68d272351fe96c951655dbf292acbcf0e2a2 --- /dev/null +++ b/static/synth.svg @@ -0,0 +1 @@ +<?xml version="1.0"?><svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"> <path d="M 4 5 C 2.895 5 2 5.895 2 7 L 2 23 C 2 24.105 2.895 25 4 25 L 26 25 C 27.105 25 28 24.105 28 23 L 28 7 C 28 5.895 27.105 5 26 5 L 4 5 z M 6 7 L 15 7 C 15.552 7 16 7.448 16 8 L 16 12 C 16 12.552 15.552 13 15 13 L 6 13 C 5.448 13 5 12.552 5 12 L 5 8 C 5 7.448 5.448 7 6 7 z M 20 9 C 20.552 9 21 9.448 21 10 C 21 10.552 20.552 11 20 11 C 19.448 11 19 10.552 19 10 C 19 9.448 19.448 9 20 9 z M 24 9 C 24.552 9 25 9.448 25 10 C 25 10.552 24.552 11 24 11 C 23.448 11 23 10.552 23 10 C 23 9.448 23.448 9 24 9 z M 4 16 L 7 16 L 7 20.5 C 7 20.776 7.224 21 7.5 21 L 8.5 21 C 8.776 21 9 20.776 9 20.5 L 9 16 L 10 16 L 10 20.5 C 10 20.776 10.224 21 10.5 21 L 11.5 21 C 11.776 21 12 20.776 12 20.5 L 12 16 L 15 16 L 15 20.5 C 15 20.776 15.224 21 15.5 21 L 16.5 21 C 16.776 21 17 20.776 17 20.5 L 17 16 L 18 16 L 18 20.5 C 18 20.776 18.224 21 18.5 21 L 19.5 21 C 19.776 21 20 20.776 20 20.5 L 20 16 L 21 16 L 21 20.5 C 21 20.776 21.224 21 21.5 21 L 22.5 21 C 22.776 21 23 20.776 23 20.5 L 23 16 L 26 16 L 26 23 L 4 23 L 4 16 z"/></svg> \ No newline at end of file diff --git a/static/timpani_strings_harp.svg b/static/timpani_strings_harp.svg new file mode 100644 index 0000000000000000000000000000000000000000..9b55a1522ef2bc5c344d65994c376d8f0041dbe7 --- /dev/null +++ b/static/timpani_strings_harp.svg @@ -0,0 +1 @@ +<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" width="100px" height="100px"><path d="M 15 3 C 12.116977 3 9.5027569 3.5137985 7.5195312 4.40625 C 6.5279185 4.8524758 5.6871834 5.3936064 5.0566406 6.0644531 C 4.5454366 6.6083331 4.1809669 7.2679298 4.0566406 7.9882812 A 1.0001 1.0001 0 0 0 3.984375 7.9863281 A 1.0001 1.0001 0 0 0 3.0195312 9.1953125 L 4.0195312 14.195312 A 1.0001 1.0001 0 0 0 5.2304688 15 C 5.9909542 16.942198 7.0742771 18.651603 8.3886719 19.988281 L 7.1054688 22.552734 A 1.0001165 1.0001165 0 0 0 8.8945312 23.447266 L 9.953125 21.328125 C 11.183497 22.192188 12.551426 22.754027 14 22.933594 L 14 26 A 1.0001 1.0001 0 1 0 16 26 L 16 22.933594 C 17.448574 22.754028 18.816503 22.192144 20.046875 21.328125 L 21.105469 23.447266 A 1.0001163 1.0001163 0 1 0 22.894531 22.552734 L 21.611328 19.988281 C 22.9258 18.651623 24.009039 16.942048 24.769531 15 A 1.0001 1.0001 0 0 0 25.980469 14.195312 L 26.980469 9.1953125 A 1.0001 1.0001 0 0 0 25.984375 7.9863281 A 1.0001 1.0001 0 0 0 25.943359 7.9902344 C 25.819369 7.2691376 25.455013 6.6088117 24.943359 6.0644531 C 24.312817 5.3936064 23.472082 4.8524758 22.480469 4.40625 C 20.497243 3.5137985 17.883023 3 15 3 z M 15 5 C 17.639825 5 20.024094 5.4942406 21.660156 6.2304688 C 22.478188 6.5985828 23.104816 7.0276954 23.486328 7.4335938 C 23.86784 7.8394921 24 8.1789242 24 8.5 C 24 8.8210758 23.86784 9.1605079 23.486328 9.5664062 C 23.104816 9.9723046 22.478188 10.401417 21.660156 10.769531 C 20.024094 11.505759 17.639825 12 15 12 C 12.360175 12 9.9759062 11.505759 8.3398438 10.769531 C 7.5218123 10.401417 6.8951842 9.9723048 6.5136719 9.5664062 C 6.1321596 9.1605081 6 8.8210758 6 8.5 C 6 8.1789242 6.1321596 7.8394919 6.5136719 7.4335938 C 6.8951842 7.0276954 7.5218124 6.5985827 8.3398438 6.2304688 C 9.9759062 5.4942406 12.360175 5 15 5 z M 5.4863281 11.337891 C 6.0521103 11.825988 6.7362112 12.241256 7.5195312 12.59375 C 9.5027569 13.486202 12.116977 14 15 14 C 17.883023 14 20.497243 13.486202 22.480469 12.59375 C 23.263789 12.241256 23.94789 11.825988 24.513672 11.337891 L 24.019531 13.804688 A 1.0001 1.0001 0 0 0 23.996094 14.037109 C 21.926557 15.14735 19.17714 15.846987 16 15.96875 L 16 19 C 16 19.552 15.552 20 15 20 C 14.448 20 14 19.552 14 19 L 14 15.96875 C 10.82286 15.84618 8.0734432 15.14738 6.0039062 14.037109 A 1.0001 1.0001 0 0 0 5.9804688 13.804688 L 5.4863281 11.337891 z"/></svg> \ No newline at end of file diff --git a/templates/_app/chunks/index-60624bc8.js b/templates/_app/chunks/index-60624bc8.js deleted file mode 100644 index 7084d3a2702149c9ee2666efd384cf2f1b04fe62..0000000000000000000000000000000000000000 --- a/templates/_app/chunks/index-60624bc8.js +++ /dev/null @@ -1 +0,0 @@ -function B(){}function F(t,n){for(const e in n)t[e]=n[e];return t}function T(t){return t()}function v(){return Object.create(null)}function p(t){t.forEach(T)}function H(t){return typeof t=="function"}function rt(t,n){return t!=t?n==n:t!==n||t&&typeof t=="object"||typeof t=="function"}function I(t){return Object.keys(t).length===0}function ct(t,n,e,r){if(t){const c=O(t,n,e,r);return t[0](c)}}function O(t,n,e,r){return t[1]&&r?F(e.ctx.slice(),t[1](r(n))):e.ctx}function lt(t,n,e,r){if(t[2]&&r){const c=t[2](r(e));if(n.dirty===void 0)return c;if(typeof c=="object"){const f=[],l=Math.max(n.dirty.length,c.length);for(let o=0;o<l;o+=1)f[o]=n.dirty[o]|c[o];return f}return n.dirty|c}return n.dirty}function ot(t,n,e,r,c,f){if(c){const l=O(n,e,r,f);t.p(l,c)}}function ut(t){if(t.ctx.length>32){const n=[],e=t.ctx.length/32;for(let r=0;r<e;r++)n[r]=-1;return n}return-1}let $=!1;function G(){$=!0}function J(){$=!1}function L(t,n,e,r){for(;t<n;){const c=t+(n-t>>1);e(c)<=r?t=c+1:n=c}return t}function W(t){if(t.hydrate_init)return;t.hydrate_init=!0;let n=t.childNodes;if(t.nodeName==="HEAD"){const i=[];for(let u=0;u<n.length;u++){const s=n[u];s.claim_order!==void 0&&i.push(s)}n=i}const e=new Int32Array(n.length+1),r=new Int32Array(n.length);e[0]=-1;let c=0;for(let i=0;i<n.length;i++){const u=n[i].claim_order,s=(c>0&&n[e[c]].claim_order<=u?c+1:L(1,c,y=>n[e[y]].claim_order,u))-1;r[i]=e[s]+1;const a=s+1;e[a]=i,c=Math.max(a,c)}const f=[],l=[];let o=n.length-1;for(let i=e[c]+1;i!=0;i=r[i-1]){for(f.push(n[i-1]);o>=i;o--)l.push(n[o]);o--}for(;o>=0;o--)l.push(n[o]);f.reverse(),l.sort((i,u)=>i.claim_order-u.claim_order);for(let i=0,u=0;i<l.length;i++){for(;u<f.length&&l[i].claim_order>=f[u].claim_order;)u++;const s=u<f.length?f[u]:null;t.insertBefore(l[i],s)}}function K(t,n){if($){for(W(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;n!==t.actual_end_child?(n.claim_order!==void 0||n.parentNode!==t)&&t.insertBefore(n,t.actual_end_child):t.actual_end_child=n.nextSibling}else(n.parentNode!==t||n.nextSibling!==null)&&t.appendChild(n)}function ft(t,n,e){$&&!e?K(t,n):(n.parentNode!==t||n.nextSibling!=e)&&t.insertBefore(n,e||null)}function Q(t){t.parentNode.removeChild(t)}function R(t){return document.createElement(t)}function j(t){return document.createTextNode(t)}function at(){return j(" ")}function st(){return j("")}function dt(t,n,e){e==null?t.removeAttribute(n):t.getAttribute(n)!==e&&t.setAttribute(n,e)}function U(t){return Array.from(t.childNodes)}function V(t){t.claim_info===void 0&&(t.claim_info={last_index:0,total_claimed:0})}function P(t,n,e,r,c=!1){V(t);const f=(()=>{for(let l=t.claim_info.last_index;l<t.length;l++){const o=t[l];if(n(o)){const i=e(o);return i===void 0?t.splice(l,1):t[l]=i,c||(t.claim_info.last_index=l),o}}for(let l=t.claim_info.last_index-1;l>=0;l--){const o=t[l];if(n(o)){const i=e(o);return i===void 0?t.splice(l,1):t[l]=i,c?i===void 0&&t.claim_info.last_index--:t.claim_info.last_index=l,o}}return r()})();return f.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,f}function X(t,n,e,r){return P(t,c=>c.nodeName===n,c=>{const f=[];for(let l=0;l<c.attributes.length;l++){const o=c.attributes[l];e[o.name]||f.push(o.name)}f.forEach(l=>c.removeAttribute(l))},()=>r(n))}function _t(t,n,e){return X(t,n,e,R)}function Y(t,n){return P(t,e=>e.nodeType===3,e=>{const r=""+n;if(e.data.startsWith(r)){if(e.data.length!==r.length)return e.splitText(r.length)}else e.data=r},()=>j(n),!0)}function ht(t){return Y(t," ")}function mt(t,n){n=""+n,t.wholeText!==n&&(t.data=n)}function pt(t,n,e,r){e===null?t.style.removeProperty(n):t.style.setProperty(n,e,r?"important":"")}let m;function h(t){m=t}function A(){if(!m)throw new Error("Function called outside component initialization");return m}function yt(t){A().$$.on_mount.push(t)}function gt(t){A().$$.after_update.push(t)}function xt(t,n){A().$$.context.set(t,n)}const _=[],C=[],x=[],M=[],q=Promise.resolve();let k=!1;function z(){k||(k=!0,q.then(D))}function bt(){return z(),q}function E(t){x.push(t)}const w=new Set;let g=0;function D(){const t=m;do{for(;g<_.length;){const n=_[g];g++,h(n),Z(n.$$)}for(h(null),_.length=0,g=0;C.length;)C.pop()();for(let n=0;n<x.length;n+=1){const e=x[n];w.has(e)||(w.add(e),e())}x.length=0}while(_.length);for(;M.length;)M.pop()();k=!1,w.clear(),h(t)}function Z(t){if(t.fragment!==null){t.update(),p(t.before_update);const n=t.dirty;t.dirty=[-1],t.fragment&&t.fragment.p(t.ctx,n),t.after_update.forEach(E)}}const b=new Set;let d;function $t(){d={r:0,c:[],p:d}}function wt(){d.r||p(d.c),d=d.p}function tt(t,n){t&&t.i&&(b.delete(t),t.i(n))}function kt(t,n,e,r){if(t&&t.o){if(b.has(t))return;b.add(t),d.c.push(()=>{b.delete(t),r&&(e&&t.d(1),r())}),t.o(n)}}function Et(t,n){const e={},r={},c={$$scope:1};let f=t.length;for(;f--;){const l=t[f],o=n[f];if(o){for(const i in l)i in o||(r[i]=1);for(const i in o)c[i]||(e[i]=o[i],c[i]=1);t[f]=o}else for(const i in l)c[i]=1}for(const l in r)l in e||(e[l]=void 0);return e}function jt(t){return typeof t=="object"&&t!==null?t:{}}function At(t){t&&t.c()}function Nt(t,n){t&&t.l(n)}function nt(t,n,e,r){const{fragment:c,on_mount:f,on_destroy:l,after_update:o}=t.$$;c&&c.m(n,e),r||E(()=>{const i=f.map(T).filter(H);l?l.push(...i):p(i),t.$$.on_mount=[]}),o.forEach(E)}function et(t,n){const e=t.$$;e.fragment!==null&&(p(e.on_destroy),e.fragment&&e.fragment.d(n),e.on_destroy=e.fragment=null,e.ctx=[])}function it(t,n){t.$$.dirty[0]===-1&&(_.push(t),z(),t.$$.dirty.fill(0)),t.$$.dirty[n/31|0]|=1<<n%31}function St(t,n,e,r,c,f,l,o=[-1]){const i=m;h(t);const u=t.$$={fragment:null,ctx:null,props:f,update:B,not_equal:c,bound:v(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(n.context||(i?i.$$.context:[])),callbacks:v(),dirty:o,skip_bound:!1,root:n.target||i.$$.root};l&&l(u.root);let s=!1;if(u.ctx=e?e(t,n.props||{},(a,y,...N)=>{const S=N.length?N[0]:y;return u.ctx&&c(u.ctx[a],u.ctx[a]=S)&&(!u.skip_bound&&u.bound[a]&&u.bound[a](S),s&&it(t,a)),y}):[],u.update(),s=!0,p(u.before_update),u.fragment=r?r(u.ctx):!1,n.target){if(n.hydrate){G();const a=U(n.target);u.fragment&&u.fragment.l(a),a.forEach(Q)}else u.fragment&&u.fragment.c();n.intro&&tt(t.$$.fragment),nt(t,n.target,n.anchor,n.customElement),J(),D()}h(i)}class vt{$destroy(){et(this,1),this.$destroy=B}$on(n,e){const r=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return r.push(e),()=>{const c=r.indexOf(e);c!==-1&&r.splice(c,1)}}$set(n){this.$$set&&!I(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}}export{Et as A,jt as B,et as C,F as D,bt as E,ct as F,ot as G,ut as H,lt as I,K as J,vt as S,U as a,dt as b,_t as c,Q as d,R as e,pt as f,ft as g,Y as h,St as i,mt as j,at as k,st as l,ht as m,B as n,$t as o,kt as p,wt as q,tt as r,rt as s,j as t,xt as u,gt as v,yt as w,At as x,Nt as y,nt as z}; diff --git a/templates/_app/layout.svelte-e3a1ab0e.js b/templates/_app/layout.svelte-e3a1ab0e.js deleted file mode 100644 index d3ea571cf10f0c2db6ba1c4aab689644102aa583..0000000000000000000000000000000000000000 --- a/templates/_app/layout.svelte-e3a1ab0e.js +++ /dev/null @@ -1 +0,0 @@ -import{S as o,i,s as r,F as u,G as f,H as _,I as c,r as p,p as d}from"./chunks/index-60624bc8.js";function m(n){let s;const l=n[1].default,e=u(l,n,n[0],null);return{c(){e&&e.c()},l(t){e&&e.l(t)},m(t,a){e&&e.m(t,a),s=!0},p(t,[a]){e&&e.p&&(!s||a&1)&&f(e,l,t,t[0],s?c(l,t[0],a,null):_(t[0]),null)},i(t){s||(p(e,t),s=!0)},o(t){d(e,t),s=!1},d(t){e&&e.d(t)}}}function $(n,s,l){let{$$slots:e={},$$scope:t}=s;return n.$$set=a=>{"$$scope"in a&&l(0,t=a.$$scope)},[t,e]}class h extends o{constructor(s){super(),i(this,s,$,m,r,{})}}export{h as default}; diff --git a/templates/_app/pages/index.svelte-47304b27.js b/templates/_app/pages/index.svelte-47304b27.js deleted file mode 100644 index 34b037e605524f4d594f454d4a2285f11b77c7ff..0000000000000000000000000000000000000000 --- a/templates/_app/pages/index.svelte-47304b27.js +++ /dev/null @@ -1 +0,0 @@ -import{S as y,i as K,s as V,e as v,t as c,k as W,c as u,a as _,h,d as l,m as b,b as q,g as x,J as o,n as k}from"../chunks/index-60624bc8.js";function A(E){let e,d,r,a,m,s,p,f;return{c(){e=v("h1"),d=c("Welcome to SvelteKit"),r=W(),a=v("p"),m=c("Visit "),s=v("a"),p=c("kit.svelte.dev"),f=c(" to read the documentation"),this.h()},l(t){e=u(t,"H1",{});var i=_(e);d=h(i,"Welcome to SvelteKit"),i.forEach(l),r=b(t),a=u(t,"P",{});var n=_(a);m=h(n,"Visit "),s=u(n,"A",{href:!0});var S=_(s);p=h(S,"kit.svelte.dev"),S.forEach(l),f=h(n," to read the documentation"),n.forEach(l),this.h()},h(){q(s,"href","https://kit.svelte.dev")},m(t,i){x(t,e,i),o(e,d),x(t,r,i),x(t,a,i),o(a,m),o(a,s),o(s,p),o(a,f)},p:k,i:k,o:k,d(t){t&&l(e),t&&l(r),t&&l(a)}}}class H extends y{constructor(e){super(),K(this,e,null,A,V,{})}}export{H as default}; diff --git a/templates/_app/start-b41bef43.js b/templates/_app/start-b41bef43.js deleted file mode 100644 index 1992bd602f1eb1b571ffc2dcc0c48357d6f653e4..0000000000000000000000000000000000000000 --- a/templates/_app/start-b41bef43.js +++ /dev/null @@ -1 +0,0 @@ -var st=Object.defineProperty,rt=Object.defineProperties;var it=Object.getOwnPropertyDescriptors;var ue=Object.getOwnPropertySymbols;var Ve=Object.prototype.hasOwnProperty,qe=Object.prototype.propertyIsEnumerable;var De=(n,e,t)=>e in n?st(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,P=(n,e)=>{for(var t in e||(e={}))Ve.call(e,t)&&De(n,t,e[t]);if(ue)for(var t of ue(e))qe.call(e,t)&&De(n,t,e[t]);return n},se=(n,e)=>rt(n,it(e));var ze=(n,e)=>{var t={};for(var r in n)Ve.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&ue)for(var r of ue(n))e.indexOf(r)<0&&qe.call(n,r)&&(t[r]=n[r]);return t};import{n as be,s as et,S as at,i as ot,e as ct,c as lt,a as ft,d as V,b as ye,f as B,g as q,t as ut,h as dt,j as pt,k as ht,l as C,m as _t,o as M,p as j,q as F,r as I,u as mt,v as gt,w as Ee,x as z,y as ie,z as J,A as ae,B as oe,C as K,D as ce,E as Je}from"./chunks/index-60624bc8.js";const Z=[];function de(n,e=be){let t;const r=new Set;function l(s){if(et(n,s)&&(n=s,t)){const i=!Z.length;for(const a of r)a[1](),Z.push(a,n);if(i){for(let a=0;a<Z.length;a+=2)Z[a][0](Z[a+1]);Z.length=0}}}function o(s){l(s(n))}function f(s,i=be){const a=[s,i];return r.add(a),r.size===1&&(t=e(l)||be),s(n),()=>{r.delete(a),r.size===0&&(t(),t=null)}}return{set:l,update:o,subscribe:f}}let Ke="",tt="";function wt(n){Ke=n.base,tt=n.assets||Ke}function bt(n){let e,t,r;const l=[n[1]||{}];var o=n[0][0];function f(s){let i={};for(let a=0;a<l.length;a+=1)i=ce(i,l[a]);return{props:i}}return o&&(e=new o(f())),{c(){e&&z(e.$$.fragment),t=C()},l(s){e&&ie(e.$$.fragment,s),t=C()},m(s,i){e&&J(e,s,i),q(s,t,i),r=!0},p(s,i){const a=i&2?ae(l,[oe(s[1]||{})]):{};if(o!==(o=s[0][0])){if(e){M();const d=e;j(d.$$.fragment,1,0,()=>{K(d,1)}),F()}o?(e=new o(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else o&&e.$set(a)},i(s){r||(e&&I(e.$$.fragment,s),r=!0)},o(s){e&&j(e.$$.fragment,s),r=!1},d(s){s&&V(t),e&&K(e,s)}}}function yt(n){let e,t,r;const l=[n[1]||{}];var o=n[0][0];function f(s){let i={$$slots:{default:[Et]},$$scope:{ctx:s}};for(let a=0;a<l.length;a+=1)i=ce(i,l[a]);return{props:i}}return o&&(e=new o(f(n))),{c(){e&&z(e.$$.fragment),t=C()},l(s){e&&ie(e.$$.fragment,s),t=C()},m(s,i){e&&J(e,s,i),q(s,t,i),r=!0},p(s,i){const a=i&2?ae(l,[oe(s[1]||{})]):{};if(i&525&&(a.$$scope={dirty:i,ctx:s}),o!==(o=s[0][0])){if(e){M();const d=e;j(d.$$.fragment,1,0,()=>{K(d,1)}),F()}o?(e=new o(f(s)),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else o&&e.$set(a)},i(s){r||(e&&I(e.$$.fragment,s),r=!0)},o(s){e&&j(e.$$.fragment,s),r=!1},d(s){s&&V(t),e&&K(e,s)}}}function vt(n){let e,t,r;const l=[n[2]||{}];var o=n[0][1];function f(s){let i={};for(let a=0;a<l.length;a+=1)i=ce(i,l[a]);return{props:i}}return o&&(e=new o(f())),{c(){e&&z(e.$$.fragment),t=C()},l(s){e&&ie(e.$$.fragment,s),t=C()},m(s,i){e&&J(e,s,i),q(s,t,i),r=!0},p(s,i){const a=i&4?ae(l,[oe(s[2]||{})]):{};if(o!==(o=s[0][1])){if(e){M();const d=e;j(d.$$.fragment,1,0,()=>{K(d,1)}),F()}o?(e=new o(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else o&&e.$set(a)},i(s){r||(e&&I(e.$$.fragment,s),r=!0)},o(s){e&&j(e.$$.fragment,s),r=!1},d(s){s&&V(t),e&&K(e,s)}}}function $t(n){let e,t,r;const l=[n[2]||{}];var o=n[0][1];function f(s){let i={$$slots:{default:[kt]},$$scope:{ctx:s}};for(let a=0;a<l.length;a+=1)i=ce(i,l[a]);return{props:i}}return o&&(e=new o(f(n))),{c(){e&&z(e.$$.fragment),t=C()},l(s){e&&ie(e.$$.fragment,s),t=C()},m(s,i){e&&J(e,s,i),q(s,t,i),r=!0},p(s,i){const a=i&4?ae(l,[oe(s[2]||{})]):{};if(i&521&&(a.$$scope={dirty:i,ctx:s}),o!==(o=s[0][1])){if(e){M();const d=e;j(d.$$.fragment,1,0,()=>{K(d,1)}),F()}o?(e=new o(f(s)),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else o&&e.$set(a)},i(s){r||(e&&I(e.$$.fragment,s),r=!0)},o(s){e&&j(e.$$.fragment,s),r=!1},d(s){s&&V(t),e&&K(e,s)}}}function kt(n){let e,t,r;const l=[n[3]||{}];var o=n[0][2];function f(s){let i={};for(let a=0;a<l.length;a+=1)i=ce(i,l[a]);return{props:i}}return o&&(e=new o(f())),{c(){e&&z(e.$$.fragment),t=C()},l(s){e&&ie(e.$$.fragment,s),t=C()},m(s,i){e&&J(e,s,i),q(s,t,i),r=!0},p(s,i){const a=i&8?ae(l,[oe(s[3]||{})]):{};if(o!==(o=s[0][2])){if(e){M();const d=e;j(d.$$.fragment,1,0,()=>{K(d,1)}),F()}o?(e=new o(f()),z(e.$$.fragment),I(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else o&&e.$set(a)},i(s){r||(e&&I(e.$$.fragment,s),r=!0)},o(s){e&&j(e.$$.fragment,s),r=!1},d(s){s&&V(t),e&&K(e,s)}}}function Et(n){let e,t,r,l;const o=[$t,vt],f=[];function s(i,a){return i[0][2]?0:1}return e=s(n),t=f[e]=o[e](n),{c(){t.c(),r=C()},l(i){t.l(i),r=C()},m(i,a){f[e].m(i,a),q(i,r,a),l=!0},p(i,a){let d=e;e=s(i),e===d?f[e].p(i,a):(M(),j(f[d],1,1,()=>{f[d]=null}),F(),t=f[e],t?t.p(i,a):(t=f[e]=o[e](i),t.c()),I(t,1),t.m(r.parentNode,r))},i(i){l||(I(t),l=!0)},o(i){j(t),l=!1},d(i){f[e].d(i),i&&V(r)}}}function Be(n){let e,t=n[5]&&We(n);return{c(){e=ct("div"),t&&t.c(),this.h()},l(r){e=lt(r,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var l=ft(e);t&&t.l(l),l.forEach(V),this.h()},h(){ye(e,"id","svelte-announcer"),ye(e,"aria-live","assertive"),ye(e,"aria-atomic","true"),B(e,"position","absolute"),B(e,"left","0"),B(e,"top","0"),B(e,"clip","rect(0 0 0 0)"),B(e,"clip-path","inset(50%)"),B(e,"overflow","hidden"),B(e,"white-space","nowrap"),B(e,"width","1px"),B(e,"height","1px")},m(r,l){q(r,e,l),t&&t.m(e,null)},p(r,l){r[5]?t?t.p(r,l):(t=We(r),t.c(),t.m(e,null)):t&&(t.d(1),t=null)},d(r){r&&V(e),t&&t.d()}}}function We(n){let e;return{c(){e=ut(n[6])},l(t){e=dt(t,n[6])},m(t,r){q(t,e,r)},p(t,r){r&64&&pt(e,t[6])},d(t){t&&V(e)}}}function Rt(n){let e,t,r,l,o;const f=[yt,bt],s=[];function i(d,R){return d[0][1]?0:1}e=i(n),t=s[e]=f[e](n);let a=n[4]&&Be(n);return{c(){t.c(),r=ht(),a&&a.c(),l=C()},l(d){t.l(d),r=_t(d),a&&a.l(d),l=C()},m(d,R){s[e].m(d,R),q(d,r,R),a&&a.m(d,R),q(d,l,R),o=!0},p(d,[R]){let y=e;e=i(d),e===y?s[e].p(d,R):(M(),j(s[y],1,1,()=>{s[y]=null}),F(),t=s[e],t?t.p(d,R):(t=s[e]=f[e](d),t.c()),I(t,1),t.m(r.parentNode,r)),d[4]?a?a.p(d,R):(a=Be(d),a.c(),a.m(l.parentNode,l)):a&&(a.d(1),a=null)},i(d){o||(I(t),o=!0)},o(d){j(t),o=!1},d(d){s[e].d(d),d&&V(r),a&&a.d(d),d&&V(l)}}}function St(n,e,t){let{stores:r}=e,{page:l}=e,{components:o}=e,{props_0:f=null}=e,{props_1:s=null}=e,{props_2:i=null}=e;mt("__svelte__",r),gt(r.page.notify);let a=!1,d=!1,R=null;return Ee(()=>{const y=r.page.subscribe(()=>{a&&(t(5,d=!0),t(6,R=document.title||"untitled page"))});return t(4,a=!0),y}),n.$$set=y=>{"stores"in y&&t(7,r=y.stores),"page"in y&&t(8,l=y.page),"components"in y&&t(0,o=y.components),"props_0"in y&&t(1,f=y.props_0),"props_1"in y&&t(2,s=y.props_1),"props_2"in y&&t(3,i=y.props_2)},n.$$.update=()=>{n.$$.dirty&384&&r.page.set(l)},[o,f,s,i,a,d,R,r,l]}class Lt extends at{constructor(e){super(),ot(this,e,St,Rt,et,{stores:7,page:8,components:0,props_0:1,props_1:2,props_2:3})}}const Ut="modulepreload",Ye={},At="/_app/",ve=function(e,t){return!t||t.length===0?e():Promise.all(t.map(r=>{if(r=`${At}${r}`,r in Ye)return;Ye[r]=!0;const l=r.endsWith(".css"),o=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${r}"]${o}`))return;const f=document.createElement("link");if(f.rel=l?"stylesheet":Ut,l||(f.as="script",f.crossOrigin=""),f.href=r,document.head.appendChild(f),l)return new Promise((s,i)=>{f.addEventListener("load",s),f.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${r}`)))})})).then(()=>e())},Nt={},Se=[()=>ve(()=>import("./layout.svelte-e3a1ab0e.js"),["layout.svelte-e3a1ab0e.js","chunks/index-60624bc8.js"]),()=>ve(()=>import("./error.svelte-5990926f.js"),["error.svelte-5990926f.js","chunks/index-60624bc8.js"]),()=>ve(()=>import("./pages/index.svelte-47304b27.js"),["pages/index.svelte-47304b27.js","chunks/index-60624bc8.js"])],Ot={"":[[0,2],[1]]};function Me(n){return n instanceof Error||n&&n.name&&n.message?n:new Error(JSON.stringify(n))}function Fe(n){if(n.fallthrough)throw new Error("fallthrough is no longer supported. Use matchers instead: https://kit.svelte.dev/docs/routing#advanced-routing-matching");if("maxage"in n)throw new Error("maxage should be replaced with cache: { maxage }");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.dependencies&&(!Array.isArray(n.dependencies)||n.dependencies.some(t=>typeof t!="string")))return{status:500,error:new Error('"dependencies" property returned from load() must be of type 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 xt(n,e){return n==="/"||e==="ignore"?n:e==="never"?n.endsWith("/")?n.slice(0,-1):n:e==="always"&&!n.endsWith("/")?n+"/":n}function Pt(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 Ge(n){let e=n.baseURI;if(!e){const t=n.getElementsByTagName("base");e=t.length?t[0].href:n.URL}return e}function Re(){return{x:pageXOffset,y:pageYOffset}}function Xe(n){return n.composedPath().find(t=>t instanceof Node&&t.nodeName.toUpperCase()==="A")}function Ze(n){return n instanceof SVGAElement?new URL(n.href.baseVal,document.baseURI):new URL(n.href)}function He(n){const e=de(n);let t=!0;function r(){t=!0,e.update(f=>f)}function l(f){t=!1,e.set(f)}function o(f){let s;return e.subscribe(i=>{(s===void 0||t&&i!==s)&&f(s=i)})}return{notify:r,set:l,subscribe:o}}function Ct(){const{set:n,subscribe:e}=de(!1),t="1651120415467";let r;async function l(){clearTimeout(r);const f=await fetch(`${tt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(f.ok){const{version:s}=await f.json(),i=s!==t;return i&&(n(!0),clearTimeout(r)),i}else throw new Error(`Version check failed: ${f.status}`)}return{subscribe:e,check:l}}function jt(n,e){let r=`script[sveltekit\\:data-type="data"][sveltekit\\:data-url=${JSON.stringify(typeof n=="string"?n:n.url)}]`;e&&typeof e.body=="string"&&(r+=`[sveltekit\\:data-body="${Pt(e.body)}"]`);const l=document.querySelector(r);if(l&&l.textContent){const o=JSON.parse(l.textContent),{body:f}=o,s=ze(o,["body"]);return Promise.resolve(new Response(f,s))}return fetch(n,e)}const It=/^(\.\.\.)?(\w+)(?:=(\w+))?$/;function Tt(n){const e=[],t=[];let r=!0;return{pattern:n===""?/^\/$/:new RegExp(`^${decodeURIComponent(n).split(/(?:@[a-zA-Z0-9_-]+)?(?:\/|$)/).map((o,f,s)=>{const i=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(o);if(i)return e.push(i[1]),t.push(i[2]),"(?:/(.*))?";const a=f===s.length-1;return o&&"/"+o.split(/\[(.+?)\]/).map((d,R)=>{if(R%2){const[,y,H,G]=It.exec(d);return e.push(H),t.push(G),y?"(.*?)":"([^/]+?)"}return a&&d.includes(".")&&(r=!1),d.normalize().replace(/%5[Bb]/g,"[").replace(/%5[Dd]/g,"]").replace(/#/g,"%23").replace(/\?/g,"%3F").replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}).join("")}).join("")}${r?"/?":""}$`),names:e,types:t}}function Dt(n,e,t,r){const l={};for(let o=0;o<e.length;o+=1){const f=e[o],s=t[o],i=n[o+1]||"";if(s){const a=r[s];if(!a)throw new Error(`Missing "${s}" param matcher`);if(!a(i))return}l[f]=i}return l}function Vt(n,e,t){return Object.entries(e).map(([l,[o,f,s]])=>{const{pattern:i,names:a,types:d}=Tt(l);return{id:l,exec:R=>{const y=i.exec(R);if(y)return Dt(y,a,d,t)},a:o.map(R=>n[R]),b:f.map(R=>n[R]),has_shadow:!!s}})}const nt="sveltekit:scroll",W="sveltekit:index",$e=Vt(Se,Ot,Nt),qt=Se[0](),zt=Se[1](),Qe={};let re={};try{re=JSON.parse(sessionStorage[nt])}catch{}function ke(n){re[n]=Re()}function Jt({target:n,session:e,base:t,trailing_slash:r}){var Ie;const l=new Map,o=[],f={url:He({}),page:He({}),navigating:de(null),session:de(e),updated:Ct()},s={id:null,promise:null},i={before_navigate:[],after_navigate:[]};let a={branch:[],error:null,session_id:0,stuff:Qe,url:null},d=!1,R=!0,y=!1,H=1,G=null,Le,Ue,Ae=!1;f.session.subscribe(async c=>{Ue=c,Ae&&(H+=1,me(new URL(location.href),[],!0))}),Ae=!0;let X=!0,T=(Ie=history.state)==null?void 0:Ie[W];T||(T=Date.now(),history.replaceState(se(P({},history.state),{[W]:T}),"",location.href));const pe=re[T];pe&&(history.scrollRestoration="manual",scrollTo(pe.x,pe.y));let he=!1,_e,Ne;async function Oe(c,{noscroll:p=!1,replaceState:w=!1,keepfocus:u=!1,state:h={}},b){const _=new URL(c,Ge(document));if(X)return we({url:_,scroll:p?Re():null,keepfocus:u,redirect_chain:b,details:{state:h,replaceState:w},accepted:()=>{},blocked:()=>{}});await te(_)}async function xe(c){const p=je(c);if(!p)throw new Error("Attempted to prefetch a URL that does not belong to this app");return s.promise=Ce(p,!1),s.id=p.id,s.promise}async function me(c,p,w,u){var g,$,S;const h=je(c),b=Ne={};let _=h&&await Ce(h,w);if(!_&&c.origin===location.origin&&c.pathname===location.pathname&&(_=await ee({status:404,error:new Error(`Not found: ${c.pathname}`),url:c,routeId:null})),!_)return await te(c),!1;if(Ne!==b)return!1;if(o.length=0,_.redirect)if(p.length>10||p.includes(c.pathname))_=await ee({status:500,error:new Error("Redirect loop"),url:c,routeId:null});else return X?Oe(new URL(_.redirect,c).href,{},[...p,c.pathname]):await te(new URL(_.redirect,location.href)),!1;else(($=(g=_.props)==null?void 0:g.page)==null?void 0:$.status)>=400&&await f.updated.check()&&await te(c);if(y=!0,u&&u.details){const{details:k}=u,E=k.replaceState?0:1;k.state[W]=T+=E,history[k.replaceState?"replaceState":"pushState"](k.state,"",c)}if(d?(a=_.state,Le.$set(_.props)):Pe(_),u){const{scroll:k,keepfocus:E}=u;if(!E){const m=document.body,A=m.getAttribute("tabindex");(S=getSelection())==null||S.removeAllRanges(),m.tabIndex=-1,m.focus(),A!==null?m.setAttribute("tabindex",A):m.removeAttribute("tabindex")}if(await Je(),R){const m=c.hash&&document.getElementById(c.hash.slice(1));k?scrollTo(k.x,k.y):m?m.scrollIntoView():scrollTo(0,0)}}else await Je();s.promise=null,s.id=null,R=!0,y=!1,_.props.page&&(_e=_.props.page);const v=_.state.branch[_.state.branch.length-1];return X=(v==null?void 0:v.module.router)!==!1,!0}function Pe(c){a=c.state;const p=document.querySelector("style[data-sveltekit]");if(p&&p.remove(),_e=c.props.page,Le=new Lt({target:n,props:se(P({},c.props),{stores:f}),hydrate:!0}),d=!0,X){const w={from:null,to:new URL(location.href)};i.after_navigate.forEach(u=>u(w))}}async function ge({url:c,params:p,stuff:w,branch:u,status:h,error:b,routeId:_}){var m,A;const v=u.filter(Boolean),g=v.find(U=>{var O;return(O=U.loaded)==null?void 0:O.redirect}),$={redirect:(m=g==null?void 0:g.loaded)==null?void 0:m.redirect,state:{url:c,params:p,branch:u,error:b,stuff:w,session_id:H},props:{components:v.map(U=>U.module.default)}};for(let U=0;U<v.length;U+=1){const O=v[U].loaded;$.props[`props_${U}`]=O?await O.props:null}if(!a.url||c.href!==a.url.href||a.error!==b||a.stuff!==w){$.props.page={error:b,params:p,routeId:_,status:h,stuff:w,url:c};const U=(O,L)=>{Object.defineProperty($.props.page,O,{get:()=>{throw new Error(`$page.${O} has been replaced by $page.url.${L}`)}})};U("origin","origin"),U("path","pathname"),U("query","searchParams")}const k=v[v.length-1],E=(A=k==null?void 0:k.loaded)==null?void 0:A.cache;if(E){const U=c.pathname+c.search;let O=!1;const L=()=>{l.get(U)===$&&l.delete(U),x(),clearTimeout(N)},N=setTimeout(L,E.maxage*1e3),x=f.session.subscribe(()=>{O&&L()});O=!0,l.set(U,$)}return $}async function Q({status:c,error:p,module:w,url:u,params:h,stuff:b,props:_,routeId:v}){const g={module:w,uses:{params:new Set,url:!1,session:!1,stuff:!1,dependencies:new Set},loaded:null,stuff:b};function $(E){const{href:m}=new URL(E,u);g.uses.dependencies.add(m)}_&&g.uses.dependencies.add(u.href);const S={};for(const E in h)Object.defineProperty(S,E,{get(){return g.uses.params.add(E),h[E]},enumerable:!0});const k=Ue;if(w.load){const E={routeId:v,params:S,props:_||{},get url(){return g.uses.url=!0,u},get session(){return g.uses.session=!0,k},get stuff(){return g.uses.stuff=!0,P({},b)},fetch(A,U){const O=typeof A=="string"?A:A.url;return $(O),d?fetch(A,U):jt(A,U)},status:c!=null?c:null,error:p!=null?p:null},m=await w.load.call(null,E);if(!m)throw new Error("load function must return a value");g.loaded=Fe(m),g.loaded.stuff&&(g.stuff=g.loaded.stuff),g.loaded.dependencies&&g.loaded.dependencies.forEach($)}else _&&(g.loaded=Fe({props:_}));return g}async function Ce({id:c,url:p,params:w,route:u},h){var A,U,O;if(s.id===c&&s.promise)return s.promise;if(!h){const L=l.get(c);if(L)return L}const{a:b,b:_,has_shadow:v}=u,g=a.url&&{url:c!==a.url.pathname+a.url.search,params:Object.keys(w).filter(L=>a.params[L]!==w[L]),session:H!==a.session_id};let $=[],S=Qe,k=!1,E=200,m=null;b.forEach(L=>L());e:for(let L=0;L<b.length;L+=1){let N;try{if(!b[L])continue;const x=await b[L](),D=a.branch[L];if(!D||x!==D.module||g.url&&D.uses.url||g.params.some(Y=>D.uses.params.has(Y))||g.session&&D.uses.session||Array.from(D.uses.dependencies).some(Y=>o.some(fe=>fe(Y)))||k&&D.uses.stuff){let Y={};const fe=v&&L===b.length-1;if(fe){const ne=await fetch(`${p.pathname}${p.pathname.endsWith("/")?"":"/"}__data.json${p.search}`,{headers:{"x-sveltekit-load":"true"}});if(ne.ok){const Te=ne.headers.get("x-sveltekit-location");if(Te)return{redirect:Te,props:{},state:a};Y=ne.status===204?{}:await ne.json()}else E=ne.status,m=new Error("Failed to load data")}if(m||(N=await Q({module:x,url:p,params:w,props:Y,stuff:S,routeId:u.id})),N&&(fe&&(N.uses.url=!0),N.loaded)){if(N.loaded.error&&(E=N.loaded.status,m=N.loaded.error),N.loaded.redirect)return{redirect:N.loaded.redirect,props:{},state:a};N.loaded.stuff&&(k=!0)}}else N=D}catch(x){E=500,m=Me(x)}if(m){for(;L--;)if(_[L]){let x,D,le=L;for(;!(D=$[le]);)le-=1;try{if(x=await Q({status:E,error:m,module:await _[L](),url:p,params:w,stuff:D.stuff,routeId:u.id}),(A=x==null?void 0:x.loaded)!=null&&A.error)continue;(U=x==null?void 0:x.loaded)!=null&&U.stuff&&(S=P(P({},S),x.loaded.stuff)),$=$.slice(0,le+1).concat(x);break e}catch{continue}}return await ee({status:E,error:m,url:p,routeId:u.id})}else(O=N==null?void 0:N.loaded)!=null&&O.stuff&&(S=P(P({},S),N.loaded.stuff)),$.push(N)}return await ge({url:p,params:w,stuff:S,branch:$,status:E,error:m,routeId:u.id})}async function ee({status:c,error:p,url:w,routeId:u}){var v,g;const h={},b=await Q({module:await qt,url:w,params:h,stuff:{},routeId:u}),_=await Q({status:c,error:p,module:await zt,url:w,params:h,stuff:b&&b.loaded&&b.loaded.stuff||{},routeId:u});return await ge({url:w,params:h,stuff:P(P({},(v=b==null?void 0:b.loaded)==null?void 0:v.stuff),(g=_==null?void 0:_.loaded)==null?void 0:g.stuff),branch:[b,_],status:c,error:p,routeId:u})}function je(c){if(c.origin!==location.origin||!c.pathname.startsWith(t))return;const p=decodeURI(c.pathname.slice(t.length)||"/");for(const w of $e){const u=w.exec(p);if(u)return{id:c.pathname+c.search,route:w,params:u,url:c}}}async function we({url:c,scroll:p,keepfocus:w,redirect_chain:u,details:h,accepted:b,blocked:_}){const v=a.url;let g=!1;const $={from:v,to:c,cancel:()=>g=!0};if(i.before_navigate.forEach(m=>m($)),g){_();return}const S=xt(c.pathname,r),k=new URL(c.origin+S+c.search+c.hash);if(ke(T),b(),d&&f.navigating.set({from:a.url,to:k}),await me(k,u,!1,{scroll:p,keepfocus:w,details:h})){const m={from:v,to:k};i.after_navigate.forEach(A=>A(m)),f.navigating.set(null)}}function te(c){return location.href=c.href,new Promise(()=>{})}return{after_navigate:c=>{Ee(()=>(i.after_navigate.push(c),()=>{const p=i.after_navigate.indexOf(c);i.after_navigate.splice(p,1)}))},before_navigate:c=>{Ee(()=>(i.before_navigate.push(c),()=>{const p=i.before_navigate.indexOf(c);i.before_navigate.splice(p,1)}))},disable_scroll_handling:()=>{(y||!d)&&(R=!1)},goto:(c,p={})=>Oe(c,p,[]),invalidate:c=>{if(typeof c=="function")o.push(c);else{const{href:p}=new URL(c,location.href);o.push(w=>w===p)}return G||(G=Promise.resolve().then(async()=>{await me(new URL(location.href),[],!0),G=null})),G},prefetch:async c=>{const p=new URL(c,Ge(document));await xe(p)},prefetch_routes:async c=>{const w=(c?$e.filter(u=>c.some(h=>u.exec(h))):$e).map(u=>Promise.all(u.a.map(h=>h())));await Promise.all(w)},_start_router:()=>{history.scrollRestoration="manual",addEventListener("beforeunload",u=>{let h=!1;const b={from:a.url,to:null,cancel:()=>h=!0};i.before_navigate.forEach(_=>_(b)),h?(u.preventDefault(),u.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{if(document.visibilityState==="hidden"){ke(T);try{sessionStorage[nt]=JSON.stringify(re)}catch{}}});const c=u=>{const h=Xe(u);h&&h.href&&h.hasAttribute("sveltekit:prefetch")&&xe(Ze(h))};let p;const w=u=>{clearTimeout(p),p=setTimeout(()=>{var h;(h=u.target)==null||h.dispatchEvent(new CustomEvent("sveltekit:trigger_prefetch",{bubbles:!0}))},20)};addEventListener("touchstart",c),addEventListener("mousemove",w),addEventListener("sveltekit:trigger_prefetch",c),addEventListener("click",u=>{if(!X||u.button||u.which!==1||u.metaKey||u.ctrlKey||u.shiftKey||u.altKey||u.defaultPrevented)return;const h=Xe(u);if(!h||!h.href)return;const b=h instanceof SVGAElement,_=Ze(h);if(!b&&_.origin==="null")return;const v=(h.getAttribute("rel")||"").split(/\s+/);if(h.hasAttribute("download")||v.includes("external")||h.hasAttribute("sveltekit:reload")||(b?h.target.baseVal:h.target))return;const[g,$]=_.href.split("#");if($!==void 0&&g===location.href.split("#")[0]){he=!0,ke(T),f.page.set(se(P({},_e),{url:_})),f.page.notify();return}we({url:_,scroll:h.hasAttribute("sveltekit:noscroll")?Re():null,keepfocus:!1,redirect_chain:[],details:{state:{},replaceState:_.href===location.href},accepted:()=>u.preventDefault(),blocked:()=>u.preventDefault()})}),addEventListener("popstate",u=>{if(u.state&&X){if(u.state[W]===T)return;we({url:new URL(location.href),scroll:re[u.state[W]],keepfocus:!1,redirect_chain:[],details:null,accepted:()=>{T=u.state[W]},blocked:()=>{const h=T-u.state[W];history.go(h)}})}}),addEventListener("hashchange",()=>{he&&(he=!1,history.replaceState(se(P({},history.state),{[W]:++T}),"",location.href))})},_hydrate:async({status:c,error:p,nodes:w,params:u,routeId:h})=>{const b=new URL(location.href),_=[];let v={},g,$;try{for(let S=0;S<w.length;S+=1){const k=S===w.length-1;let E;if(k){const A=document.querySelector('script[sveltekit\\:data-type="props"]');A&&(E=JSON.parse(A.textContent))}const m=await Q({module:await w[S],url:b,params:u,stuff:v,status:k?c:void 0,error:k?p:void 0,props:E,routeId:h});if(E&&(m.uses.dependencies.add(b.href),m.uses.url=!0),_.push(m),m&&m.loaded)if(m.loaded.error){if(p)throw m.loaded.error;$={status:m.loaded.status,error:m.loaded.error,url:b,routeId:h}}else m.loaded.stuff&&(v=P(P({},v),m.loaded.stuff))}g=$?await ee($):await ge({url:b,params:u,stuff:v,branch:_,status:c,error:p,routeId:h})}catch(S){if(p)throw S;g=await ee({status:500,error:Me(S),url:b,routeId:h})}g.redirect&&await te(new URL(g.redirect,location.href)),Pe(g)}}}async function Wt({paths:n,target:e,session:t,route:r,spa:l,trailing_slash:o,hydrate:f}){const s=Jt({target:e,session:t,base:n.base,trailing_slash:o});wt(n),f&&await s._hydrate(f),r&&(l&&s.goto(location.href,{replaceState:!0}),s._start_router()),dispatchEvent(new CustomEvent("sveltekit:start"))}export{Wt as start}; diff --git a/templates/_app/version.json b/templates/_app/version.json deleted file mode 100644 index e2ac4c43051dac3a6c23b3a5e1582765834e6811..0000000000000000000000000000000000000000 --- a/templates/_app/version.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"1651120415467"} \ No newline at end of file diff --git a/templates/composer.html b/templates/composer.html deleted file mode 100644 index a942f23b73ff2e8a2a726700745ab9ae91aed321..0000000000000000000000000000000000000000 --- a/templates/composer.html +++ /dev/null @@ -1,49 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta name="viewport" content="width=device-width, initial-scale=1.0"/> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> - <title>Composer</title> - <script src="https://kit.fontawesome.com/d6e88637ad.js" crossorigin="anonymous"></script> - <link rel="stylesheet" href="static/style.css" /> - <script src="static/script.js"></script> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> - </head> - - <body> - <div class="container"> - - <div>Style</div> - <select id="selected_music_style"> - {%for compose_style in compose_styles%} - <option value="{{compose_style[0]}}">{{compose_style[1]}}</option> - {%endfor%} - </select> - - <div>Density</div> - <select id="selected_density"> - {%for density in densities%} - <option value="{{density[0]}}">{{density[1]}}</option> - {%endfor%} - </select> - - <div>Temperature</div> - <select id="selected_temperature"> - {%for temperature in temperatures%} - <option value="{{temperature[0]}}">{{temperature[1]}}</option> - {%endfor%} - </select> - - <audio id="audio_id" controls="controls" autobuffer="autobuffer" autoplay="autoplay"> - <source src="" /> - </audio> - - <img id="image_id" src="" /> - - <div class="item btn" command="compose" style="cursor: pointer;" onclick="compose()">Compose</div> - - <div id="token_sequence">PIECE_START</div> - - </div> - </body> -</html> \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 8d047168c0b6221e00dc4624fc9bbabd91b743fa..207e9cd40be51faf5e664eab287d9d33a96bd871 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,27 +1,99 @@ <!DOCTYPE html> <html lang="en"> - <head> - <meta charset="utf-8" /> - <link rel="icon" href="./favicon.png" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - <meta http-equiv="content-security-policy" content=""> - <link rel="modulepreload" href="/_app/start-b41bef43.js"> - <link rel="modulepreload" href="/_app/chunks/index-60624bc8.js"> - <link rel="modulepreload" href="/_app/layout.svelte-e3a1ab0e.js"> - <link rel="modulepreload" href="/_app/pages/index.svelte-47304b27.js"> - </head> - <body> - <div> + <head> + <meta charset="utf-8" /> + <meta name="description" content="" /> + <link rel="icon" href="./favicon.png" /> + <link rel="preconnect" href="https://fonts.googleapis.com" /> + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> + <link href="https://fonts.googleapis.com/css2?family=Italiana&family=Lato&display=swap" rel="stylesheet" /> + <link rel="stylesheet" href="./style.css" /> + <link href="https://fonts.googleapis.com/css2?family=Italiana&family=Lato&display=swap" rel="stylesheet" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta http-equiv="content-security-policy" content=""> + <link rel="stylesheet" href="/_app/assets/pages/index.svelte-de534b64.css"> + <link rel="modulepreload" href="/_app/start-c175317f.js"> + <link rel="modulepreload" href="/_app/chunks/index-bc271058.js"> + <link rel="modulepreload" href="/_app/chunks/index-a16eaf24.js"> + <link rel="modulepreload" href="/_app/layout.svelte-b226a993.js"> + <link rel="modulepreload" href="/_app/pages/index.svelte-8e87fac9.js"> + </head> + <body> + <div> -<h1>Welcome to SvelteKit</h1> -<p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p> +<main class="svelte-1m4hhxp"><h1 class="svelte-1m4hhxp">Composer</h1> + <p class="svelte-1m4hhxp">A hundred thousand songs used to train. One AI model. Infinite compositions.</p> + <section id="options" class="svelte-1m4hhxp"><fieldset class="svelte-1r9pswz"><legend class="svelte-1r9pswz">Synthesizer</legend> + <div class="grid svelte-1r9pswz"><label data-selected="false" class="svelte-1r9pswz"><div class="svelte-1r9pswz"><img src="piano.svg" alt="Piano" class="svelte-1r9pswz"></div> + <input type="radio" value="piano" class="svelte-1r9pswz"> + </label><label data-selected="false" class="svelte-1r9pswz"><div class="svelte-1r9pswz"><img src="chamber.svg" alt="Chamber Music" class="svelte-1r9pswz"></div> + <input type="radio" value="chamber" class="svelte-1r9pswz"> + </label><label data-selected="false" class="svelte-1r9pswz"><div class="svelte-1r9pswz"><img src="rock_and_metal.svg" alt="Rock and Metal" class="svelte-1r9pswz"></div> + <input type="radio" value="rock_and_metal" class="svelte-1r9pswz"> + </label><label data-selected="true" class="svelte-1r9pswz"><div class="svelte-1r9pswz"><img src="synth.svg" alt="Synthesizer" class="svelte-1r9pswz"></div> + <input type="radio" value="synth" class="svelte-1r9pswz" checked> + </label><label data-selected="false" class="svelte-1r9pswz"><div class="svelte-1r9pswz"><img src="church.svg" alt="Church" class="svelte-1r9pswz"></div> + <input type="radio" value="church" class="svelte-1r9pswz"> + </label><label data-selected="false" class="svelte-1r9pswz"><div class="svelte-1r9pswz"><img src="timpani_strings_harp.svg" alt="Timpani, Contrabass, Harp" class="svelte-1r9pswz"></div> + <input type="radio" value="timpani_strings_harp" class="svelte-1r9pswz"> + </label><label data-selected="false" class="svelte-1r9pswz"><div class="svelte-1r9pswz"><img src="country.svg" alt="Country" class="svelte-1r9pswz"></div> + <input type="radio" value="country" class="svelte-1r9pswz"> + </label></div> +</fieldset> + <div><fieldset class="svelte-1cq0vc2"><legend class="svelte-1cq0vc2">Note density</legend> + <div class="options svelte-1m848u0"><label data-selected="false" class="svelte-1m848u0">Low + <input type="radio" value="Low" class="svelte-1m848u0"> + </label><label data-selected="true" class="svelte-1m848u0">Medium + <input type="radio" value="Medium" class="svelte-1m848u0" checked> + </label><label data-selected="false" class="svelte-1m848u0">High + <input type="radio" value="High" class="svelte-1m848u0"> + </label> + <input type="radio" checked class="svelte-1m848u0"> +</div></fieldset> +</div> + <div><fieldset class="svelte-nlqy14"><legend class="svelte-nlqy14">Temperature</legend> + <div class="options svelte-1m848u0"><label data-selected="false" class="svelte-1m848u0">Low + <input type="radio" value="Low" class="svelte-1m848u0"> + </label><label data-selected="true" class="svelte-1m848u0">Medium + <input type="radio" value="Medium" class="svelte-1m848u0" checked> + </label><label data-selected="false" class="svelte-1m848u0">High + <input type="radio" value="High" class="svelte-1m848u0"> + </label><label data-selected="false" class="svelte-1m848u0">Very High + <input type="radio" value="Very High" class="svelte-1m848u0"> + </label> + <input type="radio" checked class="svelte-1m848u0"> +</div></fieldset> +</div></section> + <button class="svelte-aq73nm">Compose ✨</button> + <audio controls src="download.wav" class="svelte-1e9isw9"></audio> + <section class="svelte-1tzlz20"><h2>Visualised notes</h2> + <img src="compose.png" alt="MIDI notes of composition" class="svelte-1tzlz20"> +</section> + <section class="svelte-1sitrxx"><h2>Tokenized notes</h2> + <p>PIECE_START TRACK_START INST=DRUMS DENSITY=6 BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 + TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 + NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 + NOTE_OFF=35 NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 + TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 + TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 + NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 + NOTE_OFF=42 BAR_END BAR_START NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 + TIME_DELTA=1 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=38 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=38 NOTE_OFF=42 TIME_DELTA=1 + NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=35 NOTE_ON=42 TIME_DELTA=1 + NOTE_OFF=35 NOTE_OFF=42 TIME_DELTA=1 NOTE_ON=42 TIME_DELTA=1 NOTE_OFF=42 + </p> +</section> +</main> - <script type="module" data-hydrate="1oibf46"> - import { start } from "/_app/start-b41bef43.js"; + <script type="module" data-hydrate="ebdsx2"> + import { start } from "/_app/start-c175317f.js"; start({ - target: document.querySelector('[data-hydrate="1oibf46"]').parentNode, + target: document.querySelector('[data-hydrate="ebdsx2"]').parentNode, paths: {"base":"","assets":""}, session: {}, route: true, @@ -31,13 +103,13 @@ status: 200, error: null, nodes: [ - import("/_app/layout.svelte-e3a1ab0e.js"), - import("/_app/pages/index.svelte-47304b27.js") + import("/_app/layout.svelte-b226a993.js"), + import("/_app/pages/index.svelte-8e87fac9.js") ], params: {}, routeId: "" } }); </script></div> - </body> + </body> </html>