diff --git a/Cargo.lock b/Cargo.lock index df6b51a..54af648 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1810,6 +1810,40 @@ dependencies = [ "uncased", ] +[[package]] +name = "rust-embed" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b68543d5527e158213414a92832d2aab11a84d2571a5eb021ebe22c43aab066" +dependencies = [ + "rust-embed-impl", + "rust-embed-utils", + "walkdir", +] + +[[package]] +name = "rust-embed-impl" +version = "6.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d4e0f0ced47ded9a68374ac145edd65a6c1fa13a96447b873660b2a568a0fd7" +dependencies = [ + "proc-macro2", + "quote", + "rust-embed-utils", + "syn 1.0.109", + "walkdir", +] + +[[package]] +name = "rust-embed-utils" +version = "7.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512b0ab6853f7e14e3c8754acb43d6f748bb9ced66aa5915a6553ac8213f7731" +dependencies = [ + "sha2", + "walkdir", +] + [[package]] name = "rustc-hash" version = "1.1.0" @@ -2423,7 +2457,9 @@ dependencies = [ "dioxus", "dioxus-autofmt", "dioxus-web", + "log", "markdown", + "rust-embed", "wasm-logger", ] diff --git a/Cargo.toml b/Cargo.toml index 838246e..96ced29 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,7 @@ rocket = "=0.5.0-rc.3" dioxus = "0.3.2" markdown = "1.0.0-alpha.7" dioxus-ssr = "0.3.0" +rust-embed = { version = "6.6.1" } [dependencies] void-be = { path = "./void-be" } diff --git a/public/fonts/DejaVuSansMono.ttf b/public/fonts/DejaVuSansMono.ttf new file mode 100644 index 0000000..10c879b Binary files /dev/null and b/public/fonts/DejaVuSansMono.ttf differ diff --git a/public/styles/tailwind.min.css b/public/styles/tailwind.min.css new file mode 100644 index 0000000..4cf4ee3 --- /dev/null +++ b/public/styles/tailwind.min.css @@ -0,0 +1 @@ +/*! tailwindcss v3.3.0 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.flex{display:flex}.min-h-screen{min-height:100vh}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.flex-col{flex-direction:column}.justify-center{justify-content:center}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.border-4{border-width:4px}.border-alice-werefox-red-dark{--tw-border-opacity:1;border-color:rgb(128 0 8/var(--tw-border-opacity))}.bg-alice-werefox-grey-light{--tw-bg-opacity:1;background-color:rgb(204 204 204/var(--tw-bg-opacity))}.bg-alice-werefox-grey-lightest{--tw-bg-opacity:1;background-color:rgb(238 238 238/var(--tw-bg-opacity))}.p-4{padding:1rem}.py-4{padding-top:1rem;padding-bottom:1rem}.font-nerd{font-family:DejaVuSansMono}.text-alice-werefox-red-dark{--tw-text-opacity:1;color:rgb(128 0 8/var(--tw-text-opacity))}@font-face{font-family:DejaVuSansMono;src:url(/fonts/DejaVuSansMono.ttf)}@media (prefers-color-scheme:dark){.dark\:border-alice-werefox-red{--tw-border-opacity:1;border-color:rgb(201 52 57/var(--tw-border-opacity))}.dark\:bg-alice-werefox-grey{--tw-bg-opacity:1;background-color:rgb(36 36 36/var(--tw-bg-opacity))}.dark\:bg-alice-werefox-grey-dark{--tw-bg-opacity:1;background-color:rgb(18 18 18/var(--tw-bg-opacity))}.dark\:text-alice-werefox-red-light{--tw-text-opacity:1;color:rgb(224 133 135/var(--tw-text-opacity))}} \ No newline at end of file diff --git a/void-fe/Cargo.toml b/void-fe/Cargo.toml index 9992400..3ebf2ec 100644 --- a/void-fe/Cargo.toml +++ b/void-fe/Cargo.toml @@ -14,3 +14,8 @@ dioxus-autofmt = "0.3.0" # WebAssembly Debug wasm-logger = "0.2.0" console_error_panic_hook = "0.1.7" +log = "0.4.17" + +[dependencies.rust-embed] +version = "6.6.1" +features = ["debug-embed"] diff --git a/void-fe/build.rs b/void-fe/build.rs index 8e080ea..bc180c8 100644 --- a/void-fe/build.rs +++ b/void-fe/build.rs @@ -13,3 +13,8 @@ fn main() { } } } +// let mut content = Vec::new(); +// for f in std::fs::read_dir("../data/poems").unwrap() { +// content.push(std::fs::read_to_string(f.unwrap().path()).unwrap()); +// } +// } \ No newline at end of file diff --git a/void-fe/data/poems/27.md b/void-fe/data/poems/27.md new file mode 100644 index 0000000..d7d01e4 --- /dev/null +++ b/void-fe/data/poems/27.md @@ -0,0 +1,45 @@ +# 27 + +**27**\ +*I used to think that day was just a far off dream for me*\ +*Dreading when I wake because I can't see past next week*\ +*"What's the point of living if I'm just living a lie?"*\ +*Those echoes in my memory are far away tonight* + +**27**\ +*I used to think that I was all alone feeling this pain*\ +*Using words and writing poems to keep up the pace*\ +*Whisper reassurances to myself to feel safe*\ +*Hugging pillows tightly as I'm drifting in this space* + +**27**\ +*Now the railing that I'm safely behind keeps me sane*\ +*I'm not quite the black rose that I pricked, but just the same*\ +*I still can't see past next week, but maybe that's okay*\ +*Maybe in this case my age was not an early grave* + +**27**\ +*Now I use a new name and I wear a different face*\ +*But I'm still the same girl even if I'm less afraid*\ +*Back then I sat on sidelines to watch everyone else live*\ +*And now, for once, it's my turn, I've got something new to give* + +**27**\ +*I don't need to tell myself that I'm not worth living*\ +*I don't need to hold onto my reassurances*\ +*I don't need to feel like if I left no one would care*\ +*I've made it this far and now I'm letting myself live* + +**27**\ +*I'm doing my best and I know that's all I can do* \ +*I know it's enough and I know you will see it, too*\ +*This life is so precious and that's why, now, I can say* \ +*I'm glad that I know that I'll be turning 28* + +*There's no big ending, no big rhyme to close off this chapter* \ +*I'm not ending anything with a bang or a whimper* \ +*Just acknowledging what I've now firmly put behind me* + +This is how it ends \ +This is how it starts \ +I deserve it. \ No newline at end of file diff --git a/void-fe/data/poems/a-moments-rest-at-a-peaceful-shore.md b/void-fe/data/poems/a-moments-rest-at-a-peaceful-shore.md new file mode 100644 index 0000000..eb5e6cc --- /dev/null +++ b/void-fe/data/poems/a-moments-rest-at-a-peaceful-shore.md @@ -0,0 +1,15 @@ +# A Moment's Rest at a Peaceful Shore + +The wind calms, the storm in my mind settles\ +The static pervading off the edges of my mind's perspective finally begins to focus itself into a clearer darkness + +My thoughts wedge themselves into place\ +For a brief moment, I am collected, as the fears and insecurities of my life slowly inch themselves further away + +The tide is low, I am standing at the shore\ +A breeze gently brushes past my skin as I ponder when the wind will pick up again and leave me to brave its harsh gusts + +Evidently, the storm will return\ +The static will regain its strength, and my thoughts will cloud themselves once more as I attempt to continue forward + +For now, in this moment, I am at peace \ No newline at end of file diff --git a/void-fe/data/poems/audio-reading.md b/void-fe/data/poems/audio-reading.md new file mode 100644 index 0000000..4566879 --- /dev/null +++ b/void-fe/data/poems/audio-reading.md @@ -0,0 +1,45 @@ +# im on repeat + +[Audio reading](https://cloud.werefox.dev/s/dq5ccm5QqmMF4GB) + +Death is like a memory. Ceaseless, and comforting\ +Knowing things will end has always helped me feel like I'm free\ +I can do what I want, I can say what I feel\ +In the end, I know, I know the end is coming, what's the deal? + +I'm looping,\ +I'm stagnant,\ +Feel like I'm on repeat\ +My heart has got a leak + +I'm writing\ +These lines\ +About my broken dreams\ +About my fucking sheets + +I'm hating\ +my thoughts\ +About my bad streaks\ +About my endless sleep + +break free\ +break free\ +break free\ +break free + +And when the thoughts and my memories come flowing through an endless string\ +I can't stop typing because they never stop they never cease\ +I'm just a stream of consciousness, typing on a digital sheet\ +Some lines they'll never read, a face they'll never see\ +And if this is the end of me then please try to remember me\ +I'm breaking down, I'm broken, but I'm still here and you're seeing me\ +Why can't I stop these bad feelings? I know everyone cares for me + +but all I see\ +when I look at the broken screen\ +are the fears and insecurities + +I'm nothing\ +I'm hopeless\ +I'm looping\ +I'm on repeat \ No newline at end of file diff --git a/void-fe/data/poems/bittersweet-cheers.md b/void-fe/data/poems/bittersweet-cheers.md new file mode 100644 index 0000000..f193beb --- /dev/null +++ b/void-fe/data/poems/bittersweet-cheers.md @@ -0,0 +1,62 @@ +# Bittersweet, Cheers + +**[Intro]**\ +*things are gonna change, yeah*\ +*things are gonna change*\ +*things are gonna change, yeah*\ +*things are gonna change* + +**[Verse 1]**\ +*I try to tell myself I'm happier in place*\ +*but that's a lie, dear*\ +*we all know my fears*\ +*I'm just worried what you think and what you'll say*\ +*am I talented yet?*\ +*questions in my own head* + +**[Pre-Chorus]**\ +*and if my friends and followers know me*\ +*then they'll know this song before I show them it* + +**[Chorus]**\ +*things are gonna change, yeah*\ +*things are gonna change*\ +*things are gonna change, yeah*\ +*things are gonna change*\ +*another year gone, am I stuck in place?*\ +*but when I look back I don't recognize my own face*\ +*things are gonna change, yeah*\ +*things are gonna change*\ +*things are gonna change, yeah*\ +*things are gonna change*\ +*even for better, for worse, I'm here*\ +*and my words are echoing clear, my dear* + +**[Verse 2]**\ +*feels like I can't write a happy poem*\ +*but what's there to say?*\ +*not happy everyday*\ +*and I don't need you to feel sorry for me*\ +*this one's for my peers*\ +*bittersweet thoughts, cheers* + +**[Pre-Chorus]**\ +*and if my friends and followers know me*\ +*then they'll know this song before I show them it* + +**[Chorus]**\ +*things are gonna change, yeah*\ +*things are gonna change*\ +*things are gonna change, yeah*\ +*things are gonna change*\ +*another year gone, am I stuck in place?*\ +*but when I look back I don't recognize my own face*\ +*things are gonna change, yeah*\ +*things are gonna change*\ +*things are gonna change, yeah*\ +*things are gonna change*\ +*even for better, for worse, I'm here*\ +*and my words are echoing clear, my dear* + +*another year gone, am I stuck in place?*\ +*but I don't look back, I just keep my pace* \ No newline at end of file diff --git a/void-fe/data/poems/black-rose-gray-skies.md b/void-fe/data/poems/black-rose-gray-skies.md new file mode 100644 index 0000000..e113510 --- /dev/null +++ b/void-fe/data/poems/black-rose-gray-skies.md @@ -0,0 +1,60 @@ +# Black Rose, Gray Skies + +**[Intro]**\ +Black rose, thorns sharp and trapped inside a clear vessel\ +Petals falling, won't you please come and save this wilting weed\ +Slower still, it's a tragic, but slow death inside the glass cage\ +Seasons change, nights fade and dissipate into similar shades of gray + +**[Chorus]**\ +*On the windowsill, perched and perfectly still*\ +*I can see the brightest stars in the sky*\ +*Yes, the wind is still, make a wish, if you will*\ +*And I will too in hopes that time goes by* + +**[Verse 1]**\ +*This is*\ +*Not a cry for help, I don't need my princess Belle*\ +*I just want to truly be set free*\ +*I am*\ +*Trapped in this case, though it's safe, I'm afraid*\ +*Will I be the rose I see inside?*\ +*You can*\ +*Find me up here, perched and perfectly still*\ +*Kicked my feet and staring up so high*\ +*Black rose*\ +*Prick me again, make me bleed, little friend*\ +*Oh, if only I weren't in my mind* + +**[Chorus]**\ +*On the windowsill, perched and perfectly still*\ +*I can see the brightest stars in the sky*\ +*Yes, the wind is still, make a wish, if you will*\ +*And I will too in hopes that time goes by* + +**[Verse 2]**\ +*I don't*\ +*Want to be afraid, there's much progress I have made*\ +*And I'm only getting further, still*\ +*I am*\ +*Trapped inside my cage, don't see a way I can escape*\ +*A cognitive prison, against my will*\ +*Looking down*\ +*Will never help, I see my death, my biggest doubts*\ +*A fall that's deep enough that it would kill*\ +*So I*\ +*Keep my head held high, looking up into the sky*\ +*As the petals wilt onto the 'sill* + +**[Chorus]**\ +*On the windowsill, perched and perfectly still*\ +*I can see the brightest stars in the sky*\ +*Yes, the wind is still, make a wish, if you will*\ +*And I will too in hopes that time goes by* + +**[Epilogue]**\ +I look down at the black rose, the vessel is as glossy and beautiful as the treasure it contains\ +The stars in the sky look down at me and smile, and I can feel their warm glow from here\ +If I could be that rose, take it outside its cell and transfuse its radiant beauty\ +I am a dreamer in the hopes that one day the vessel shatters and I too will be set free\ +A rose like no other, with thorns trimmed, and petals full as it blooms in the new morning Sun \ No newline at end of file diff --git a/void-fe/data/poems/drop-kicked-from-senselessness.md b/void-fe/data/poems/drop-kicked-from-senselessness.md new file mode 100644 index 0000000..ae86aa0 --- /dev/null +++ b/void-fe/data/poems/drop-kicked-from-senselessness.md @@ -0,0 +1,15 @@ +# Drop Kicked From Senselessness + +*Soft, muttered frequencies on the periphery of my subconscious*\ +*A tune I used to hear that flickers its presence*\ +*Giving me leverage of which to confine myself within the most secluded of spaces*\ +*That distant melody echoing against the walls of my mind*\ +*Silent, familiar wavelengths of nothingness that protrude*\ +*The flooding sensations of lights fluttering among darkness*\ +**Stop. Stop this.** + +*As the static fades out from its crescendo I am thrust outside those walls again*\ +*Glimmering bleak reality returning its vibrancy to mock my estate*\ +*The tempo and pacing and rhythm of the natural beats consume the timeline of my vision*\ +*Balancing myself and weighing my feet as though I've dropped from a short ledge*\ +*And that tune that was once so prominent is back in its chambers* \ No newline at end of file diff --git a/void-fe/data/poems/echoes.md b/void-fe/data/poems/echoes.md new file mode 100644 index 0000000..0077dcc --- /dev/null +++ b/void-fe/data/poems/echoes.md @@ -0,0 +1,72 @@ +# Echoes + +**[Verse 1]** + +*Echoes*\ +*Of someone I used to be*\ +*Though I think I left myself quite far behind*\ +*Troubles*\ +*Of my life, they fade away*\ +*Getting distant as I keep myself on time* + +**[Pre-Chorus]** + +*You can't see me, you can't see me*\ +*But I'm growing*\ +*Just believe me, just believe me*\ +*I can show it*\ +*I thought I was done with proving*\ +*Myself worthy* + +*No, I'm not*\ +*The show goes on, I'm sorry* + +**[Chorus]** + +*Echoes, echoes, echoes*\ +*Remind me of a time, my dear*\ +*When I was once alone beside myself*\ +*Echoes, echoes, echoes*\ +*Used to read between the lines to clear*\ +*Me up on blurry lenses in my mind* + +*Now the echoes fade away*\ +*And I'm not who I used to be, but that's okay, it fades away some day* + +**[Verse 2]** + +*Pictures*\ +*Of a thing I used to see*\ +*Yet I keep it out of focus in the end*\ +*Memories*\ +*The scenes of yesterday*\ +*I'm so happy that I'm not who I was then* + +**[Pre-Chorus]** + +*You can't see me, you can't see me*\ +*But I'm growing*\ +*Just believe me, just believe me*\ +*I can show it*\ +*I thought I was done with proving*\ +*Myself worthy* + +*No, I'm not*\ +*The show goes on, I'm sorry* + +**[Chorus]** + +*Echoes, echoes, echoes*\ +*Remind me of a time, my dear*\ +*When I was once alone beside myself*\ +*Echoes, echoes, echoes*\ +*Used to read between the lines to clear*\ +*Me up on blurry lenses in my mind* + +*Now the echoes fade away*\ +*And I'm not who I used to be, but that's okay, it fades away some day* + +*Echoes, echoes, echoes* + +*Now the echoes fade away*\ +*And I'm not who I used to be, but that's okay, it fades away some day* \ No newline at end of file diff --git a/void-fe/data/poems/filtered-thoughts.md b/void-fe/data/poems/filtered-thoughts.md new file mode 100644 index 0000000..182132f --- /dev/null +++ b/void-fe/data/poems/filtered-thoughts.md @@ -0,0 +1,21 @@ +# Filtered Thoughts + +*Sometimes I wonder if I could write to save my life*\ +*Sometimes I wonder if all the effort's worth the strife*\ +*I've been down this road before and now the twists are turns are pleasant*\ +*Don't get too comfy, though, because I'm throwing another curveball at you* + +*All the rhythms and the sounds and the echoes leave me restless*\ +*I've been thinking, I've been thinking, I've been thinking of the present*\ +*Turning circles in my head and now I'm spiraling down under but*\ +*Don't take me there because Australia's just too many timezones apart* + +*Fuck you, I don't need this judgemental mindless headspace*\ +*I've been trying to keep up with all the thoughts and it's got me displaced*\ +*I can feel like I'm alone, but like I'm here, and now it doesn't make sense*\ +*I wish you could see beyond these filtered thoughts, I'm crying when I'm silent* + +*It might feel like I'm just rambling in the distance*\ +*It might feel like there's no pattern here and it's all senseless*\ +*The waves of my mind keep my time and now I'm pondering still*\ +*Sometimes I wonder if I'm loved for my posts or my personality* \ No newline at end of file diff --git a/void-fe/data/poems/foxes-are-predators.md b/void-fe/data/poems/foxes-are-predators.md new file mode 100644 index 0000000..fdc56be --- /dev/null +++ b/void-fe/data/poems/foxes-are-predators.md @@ -0,0 +1,44 @@ +# Foxes Are Predators + +*I used to think about the monsters underneath my bed*\ +*Hiding in the darkness, now they're stuck inside my head*\ +*Why does everything I write feel like a call for help?*\ +*Reaching out and seeing that no one knows how to tell* + +*I've become the predator*\ +*The arrow on your hearts*\ +*Flailing wildly, spewing toxins*\ +*That's the hardest part*\ +*I'm no hunter, I don't bite, I think you might agree*\ +*Lately I've been seeing there's a deeper side of me* + +*Used to think about the many friendships I had held*\ +*Keeping people close, wondering if they kept me as well*\ +*Why does my destructive cycle keep on catching me?*\ +*Pushing them away and watching how they distance me* + +*I've become the predator*\ +*The arrow on your hearts*\ +*Flailing wildly, spewing toxins*\ +*That's the hardest part*\ +*I'm no hunter, I don't bite, I think you might agree*\ +*Lately I've been seeing there's a deeper side of me* + +*Lately I've been seeing there's a deeper side of me*\ +*Come on, see me closer, and I think you might agree*\ +*Look into my spiraling and thinking well of me*\ +*Promise that I'll hurt you, but don't misunderstand me* + +*I don't want to be villainous or toxic at my core*\ +*I really wish that I could just stop hurting anymore*\ +*I don't know how to fix this, but I'm trying all my tricks*\ +*I cannot keep on hurting people, 'cus it makes me sick* + +*I need you to believe me because sometimes I can't see it*\ +*So please look a little closer and I promise I will be a bit*\ +*More kind and empathetic and the person that you wanna be*\ +*Friends with, and maybe partners, maybe that's a little private see*\ +*I can't tell if I'm spiraling right now my thoughts keep flowing*\ +*And I don't know if you ever will quite know just what I'm knowing*\ +*Yeah, so let me finish writing and I'll get back to conspiring*\ +*How I'll be a better predator for you* \ No newline at end of file diff --git a/void-fe/data/poems/i-can-never-see-past-next-week.md b/void-fe/data/poems/i-can-never-see-past-next-week.md new file mode 100644 index 0000000..7924f99 --- /dev/null +++ b/void-fe/data/poems/i-can-never-see-past-next-week.md @@ -0,0 +1,19 @@ +# I can never see past next week + +*A moment of peace in a busy world of busy people*\ +*Staring out the window, the view of the balcony just blissfully capturing what my heart feels*\ +*Though the loving embrace of the morning sun shines on me again, I can't help but let those thoughts intrude*\ +*Still fearing the storm*\ +*Still waiting for it to show* + +*A path I know I am to travel again and travel fully*\ +*There is time again until I must stand up and walk this path with ceaseless confidence*\ +*Whether or not I am a changed woman, the journey continues ever onward toward the horizon*\ +*Never ending past the hills*\ +*Never did I quite sit still* + +__Silence__\ +__Stillness__\ +__Serenity__ + +*Someday, I will make my break upon that path again* \ No newline at end of file diff --git a/void-fe/data/poems/i-wish-i-wore-my-garters.md b/void-fe/data/poems/i-wish-i-wore-my-garters.md new file mode 100644 index 0000000..4c9e0ec --- /dev/null +++ b/void-fe/data/poems/i-wish-i-wore-my-garters.md @@ -0,0 +1,39 @@ +# I Wish I Wore My Garters + +*I hate my bedroom door*\ +*I have to try a couple times to push it open*\ +*I hate to feel like I'm confined*\ +*I have to pee, and now I wanna go outside*\ +*But I'm still trapped inside my mind* + +*I hate this wooden floor* \ +*The second floor was just a little too intrusive* \ +*And every time I have to climb* \ +*A flight of stairs to get to where I feel I'm fine* \ +*But I'm still trapped inside my mind* + +*This feels good, yeah, this feels real*\ +*This feels healthy, so it seems*\ +*A shot of dopamine has got me wondering if this keeps*\ +*Circling, winding, aching headaches*\ +*Swirling thoughts and catching feelings, too* \ +*I'll see you soon* + +*I hate my ceiling fan* \ +*I have to keep it on because if not it's too hot* \ +*But I don't mean that I look nice*\ +*I have to keep the room from heating up this time*\ +*But I'm still trapped inside my mind* + +*I hate my bedroom door* \ +*I have to try a couple times to push it open* \ +*I hate to feel like I'm confined* \ +*So many walls and I'm not fine* \ +*I want to get outside my mind* \ +*I can't stop thinking every time* \ +*I don't want thoughts to make me cry*\ +*I just want to feel satisfied* \ +*There's just so many times I've tried*\ +*I hope my partner helps me smile* \ +*I bet my friends will stay a while*\ +*But I'm still trapped inside my mind* \ No newline at end of file diff --git a/void-fe/data/poems/iced-coffee.md b/void-fe/data/poems/iced-coffee.md new file mode 100644 index 0000000..134a2ab --- /dev/null +++ b/void-fe/data/poems/iced-coffee.md @@ -0,0 +1,33 @@ +# Iced Coffee + +[Listen to the song on Soundcloud](https://soundcloud.com/alexis-werefox/iced-coffee/s-5SgBwPrLwyR) + +*Iced coffee on a cold Winter's day* \ +*Iced coffee bittersweet at the taste* \ +*Do you see me? I probably fade* \ +*Fade into darkness and I'll go away* + +Hmm.... + +Why can't you see me this mirror is broken \ +Why can't you see me I can't be this broken \ +Every line keeping me from satisfaction \ +I'm wondering why you can keep me in traction \ +I'm falling I'm sinking this love is a sinkhole \ +I don't understand why you keep me, this freakshow \ +I see you and there's so much better contestants \ +Competing and winning and gaining attention \ +And I'm consolation, the prize for obsession \ +Don't know why you'd even give me just a second + +*Iced coffee on a cold Winter's day*\ +*Iced coffee bittersweet at the taste*\ +*Do you see me? I probably fade*\ +*Fade into darkness and I'll go away* + +*Hmmmm....*\ +*Hmmmm....*\ +*Hmmmm....* **(it's like... I don't really even know why I bother)**\ +*Hmmmm....* **(am I even worth paying attention to in the first place?)**\ +*Hmmmm....*\ +*Hmmmm....* \ No newline at end of file diff --git a/void-fe/data/poems/introductions.md b/void-fe/data/poems/introductions.md new file mode 100644 index 0000000..9877874 --- /dev/null +++ b/void-fe/data/poems/introductions.md @@ -0,0 +1,26 @@ +# Introductions + +Hi! I'm Alice, and um... Uh.\ +I have something I wanna say, I guess... + +*Fuck yeah, I'm a trans girl*\ +*A "fuck the thoughts you had" girl*\ +*Yeah, I'm a bad bitch and I won't clean up my act, girl* + +Hah + +*I'm a poet and a hot mess*\ +*Don't wear a fucking suit and tie, I wanna wear cute dress*\ +**(moan)** *"Yes, ma'am," damn, I bet you wanna date this*\ +*Well, get in line, sweetie, I'm in high demand, wait list* + +Yeah + +*And I'm impatient*\ +*Only 3 months, downed the pills, and it leaves me fuckin restless*\ +*Your heart is on my wish list*\ +*Got pussy on my mind and not just 'cus I wanna lick clits* + +Damn \ +Better calm down a bit here \ +**(Is it hot in here? Or is that just me?)** \ No newline at end of file diff --git a/void-fe/data/poems/missing-the-mark.md b/void-fe/data/poems/missing-the-mark.md new file mode 100644 index 0000000..4dddad6 --- /dev/null +++ b/void-fe/data/poems/missing-the-mark.md @@ -0,0 +1,25 @@ +# Missing The Mark + +*Lately I've been thinking 'bout how miserable I've been*\ +*Sadness never comforts me, but it's been my best friend*\ +*And I could write more lines 'bout how I wish I could see*\ +*All the love and friendship all my peers tell me they see* + +*Oh God, I wish*\ +*I could be happy for myself*\ +*Oh God, I wish*\ +*I could be happy for myself* + +*Keeping myself busy so the bad thoughts stay away*\ +*Telling myself good things so emotions won't go stray*\ +*Battles, always battles, fight the bad side of my brain*\ +*No, I'm not alone, but still it sometimes feels that way* + +*Oh God, I wish*\ +*I could be happy for myself*\ +*Oh God, I wish*\ +*I could be happy for myself*\ +*Oh God, I wish*\ +*I could be happy for myself* + +**It always seems it should be easier than this** \ No newline at end of file diff --git a/void-fe/data/poems/molded-hearts-and-melted-love.md b/void-fe/data/poems/molded-hearts-and-melted-love.md new file mode 100644 index 0000000..ade9908 --- /dev/null +++ b/void-fe/data/poems/molded-hearts-and-melted-love.md @@ -0,0 +1,41 @@ +# Molded Hearts and Melted Love + +*Author’s Note: This song/poem has heavy overtones of relationship abuse. Please be aware of that before you read.* + +I’ve never been the one to think I’m waiting on their time\ +But days go by I’m wondering if they’re really satisfied\ +They tell me that that love me, and they’re happy to oblige\ +But when I ask for more forgiveness, it’s too much, I can’t deny + +I let myself believe that I’m the one who’s done wrong\ +And I can fix it baby, please, just let me write this little song\ +All the problems, all the issues, I can change myself you’ll see\ +I can mold myself so maybe you’ll stop yelling at me, please + +They’re wonderful, they’re pleasant, and I tell them every day\ +They message me on weekdays, other friends must stay away\ +When we’re calling every night I hear their voice just start to fade\ +They’re telling me it’s fine, and yet I know it’s not okay + +I let myself believe that I’m the one who’s done wrong\ +And I can fix it baby, please, just let me write this little song\ +All the problems, all the issues, I can change myself you’ll see\ +I can mold myself so maybe you’ll stop yelling at me, please + +I want them to be happy, I want them to be pleased\ +Why can’t I just be perfect? I’ll be anything they need\ +Since when did love become a game of trying to succeed\ +I hate this, every day I cry, I need to be set free + +(And yet)\ +I let myself believe that I’m the one who’s done wrong\ +And I can fix it baby, please, just let me write this little song\ +All the problems, all the issues, I can change myself you’ll see\ +I can mold myself so maybe you’ll stop yelling at me, please + +All the problems, all the issues, I can change myself you’ll see\ +I can mold myself so maybe you’ll stop yelling at me, please + +[Epilogue] + +(I love you, I just want you to love me... No, please, please say something... No don’t leave please just- I’m sorry. I’m sorry, I shouldn’t have said anything, you’re right.... I’ll stop talking to them... I’m sorry, please... Okay. Yes... Alright... I love you.... Are you okay?... I love you... I’m sorry... I’ll change, please just don’t leave me...) \ No newline at end of file diff --git a/void-fe/data/poems/notification-high.md b/void-fe/data/poems/notification-high.md new file mode 100644 index 0000000..b5d4c37 --- /dev/null +++ b/void-fe/data/poems/notification-high.md @@ -0,0 +1,31 @@ +# Notification High + +**[Chorus]**\ +*I'm hot, I'm cool, I'm the best you've ever seen*\ +*not my ego, not a brag, just the facts up on the screen*\ +*I take selfies cus I'm worth it and you all just need to see*\ +*click, snap, upload, tap, here come the notifs loud and clear* + +**[Verse 1]**\ +*I can't help it if you're falling over me (click, snap, upload, tap)*\ +*though it sure is fun to see your little squeaks (click, snap, upload, tap)*\ +*judge me perfect, I'm a quirky little freak (click, snap, upload, tap)*\ +*boost my pictures, tell me sweet words, pray to God that I will see (click, snap upload, tap)* + +**[Chorus]**\ +*I'm hot, I'm cool, I'm the best you've ever seen*\ +*not my ego, not a brag, just the facts up on the screen*\ +*I take selfies cus I'm worth it and you all just need to see*\ +*click, snap, upload, tap, here come the notifs loud and clear* + +**[Bridge]**\ +*click, snap, upload, tap, click, snap, upload, tap* (I sometimes think that I'm too much, it's true)\ +*click, snap, upload, tap, click, snap, upload, tap* (I sometimes act like I don't have a clue)\ +*click, snap, upload, tap, click, snap, upload, tap* (I sometimes worry if it is the truth)\ +*click, snap, upload, tap, click, snap, upload, tap* (All this attention, this attention, this attention, this attention) + +**[Chorus]**\ +*I'm hot, I'm cool, I'm the best you've ever seen*\ +*not my ego, not a brag, just the facts up on the screen*\ +*I take selfies cus I'm worth it and you all just need to see*\ +*click, snap, upload, tap, here come the notifs loud and clear* \ No newline at end of file diff --git a/void-fe/data/poems/poetry-to-the-void.md b/void-fe/data/poems/poetry-to-the-void.md new file mode 100644 index 0000000..917f1e7 --- /dev/null +++ b/void-fe/data/poems/poetry-to-the-void.md @@ -0,0 +1,19 @@ +# Poetry to the Void + +*Author's note: here's a bit of freeform poetry I wrote a while back that I thought I'd share. I know it doesn't flow super well, but I'm proud of it, and I think it's good sometimes to write stuff that's a bit off beat when it's meaningful to do so* + +Empty hearts and empty sheets \ +I'm sleeping in my dreams \ +And I wish I could say they were the same feel that I get when I see your name on my screen \ +Wish you were in my dreams when I'm fast asleep and I can't control the pace or the scene \ +But when I wake up it's still a fantasy \ +I'm alone and unseen \ +Empty hearts and black dreams \ +I'm sleeping in my sheets \ +And I wish that I could say you were here with me when I wake up and hear your name in my mind \ +Wish you were by my side and held tight and I can't convey how good it feels every time \ +But when I wake up it's still a fantasy \ +I'm alone and unseen \ +Tell me the difference between day dreaming and the way you pass right through my hands when I try to hold you \ +I'm missing someone I've never felt in the presence of my room or my heart before and I can't explain it, can't convey it \ +Still just writing lines to a void that comforts me as much as the paper I'd recycle when I'm done bleeding ink on the page \ No newline at end of file diff --git a/void-fe/data/poems/probably-bad-for-you.md b/void-fe/data/poems/probably-bad-for-you.md new file mode 100644 index 0000000..262d81d --- /dev/null +++ b/void-fe/data/poems/probably-bad-for-you.md @@ -0,0 +1,46 @@ +# Probably Bad For You + +*When did all the lights begin to fade away?*\ +*I see them now, I see them now*\ +*When did you decide to leave me hurt this way?*\ +*I'm healing now, won't bleed it out* + +*All the little silly things you said to put me down*\ +*And all the guilt trips sink into a funnel in the ground and now *\ +*It's clear I'm not gonna be by your side next year* + +*And now I'm probably bad for you*\ +*I know I'm kind of a sin to you*\ +*And maybe I'm still in love with you*\ +*But I am probably bad for you* + +*So when did you decide what's right from what's wrong?*\ +*Well, I'll sort it out, I'll sort it out*\ +*When did you decide I'm not the shining star you sought?*\ +*I'm shining now, bright through the clouds* + +*All the little silly things you said all those thoughts drown*\ +*And all the nights I stayed up hoping you would call me out and now*\ +*It's clear I'm not gonna be by your side next year* + +*And now I'm probably bad for you*\ +*I know I'm kind of a sin to you*\ +*And maybe I'm still in love with you*\ +*But I am probably bad for you* + +*Keep me close, keep me near*\ +*Tell me things I wanna hear*\ +*Let me know I'm not too far from home*\ +*Satisfy me just once more*\ +*Send excuses to my door*\ +*And don't forget to post it all, my dear*\ +*It's clear I'm not gonna be by your side next year* + +*I know I'm probably bad for you*\ +*I know I'm kind of a sin to you*\ +*And I don't think I'm in love with you*\ +*'Cus now I'm definitely bad for you* + +*All the little silly things I did to keep me in your mind*\ +*And all the times I sat alone at home and wondered why and now*\ +*It's clear I don't wanna be by your side next year* \ No newline at end of file diff --git a/void-fe/data/poems/senseless-murmurs-of-the-estranged-the-last-night.md b/void-fe/data/poems/senseless-murmurs-of-the-estranged-the-last-night.md new file mode 100644 index 0000000..0fe65ee --- /dev/null +++ b/void-fe/data/poems/senseless-murmurs-of-the-estranged-the-last-night.md @@ -0,0 +1,52 @@ +# Senseless Murmurs of the Estranged (~~The~~ Last Night) + +*Slithering fangs and pointy tails*\ +*Tell me if I'm not feeling well*\ +*My mindscape's hazard lights sing symphonies that plead me not to crash*\ +*Maybe that last line's just a touch-*\ +*I'm feeling obsessed with feeling up*\ +*But the rhythm of our continued stumbling keeps me anchored on the act* + +*Maybe I'm not making sense*\ +*Break it down a little first* + +*Singing out my heartstrings like they never gave a pause*\ +*I'm writing another washed out drawn out rant recalling how we stalled*\ +*And you were always the one I asked for in my nighttime bender gleam*\ +*Separate the colors, strip my words, and paint the walls with apathy* + +*Cold night summer sunsets bail*\ +*Another take out date night last meal*\ +*Surrender my senses call my cell and keep my phrases right on track*\ +*The writing is on the wall tonight*\ +*Blinding reflections kill my sight*\ +*A murderous moment of dismemberment from feelings that you lack* + +*Maybe I'm not making sense*\ +*Break it down a little first* + +*Singing out my heartstrings like they never gave a pause*\ +*I'm writing another washed out drawn out rant recalling how we stalled*\ +*And you were always the one I asked for in my nighttime bender gleam*\ +*Separate the colors, strip my words, and paint the walls with apathy* + +*Call me out on conflict resolution from temptation of my thoughts*\ +*Shatter the glass and flip the script of all the preface that you wrought*\ +*I'm not seeing light;*\ +*this blurry image right;*\ +*choke my eyes, drain my voice;*\ +*break my ego, mayday;*\ +*I'll take solace knowing this will be the last night of this play*\ +*Where I'm the actor, you're the audience and I'm the one who pays* + +*Maybe I'm not making sense*\ +*Break it down a little first* + +*Singing out my heartstrings like they never gave a pause*\ +*I'm writing another washed out drawn out rant recalling how we stalled*\ +*And I can't stab myself in places that I know I shouldn't keep-*\ +*Me- I mean you, and this is true, I'm waking from this heavy sleep*\ +*I'll write my will, I've had my doubts, I'm singing songs, I'm bleeding out*\ +*Waterfalls perched on the windows of my dreary excess pout*\ +*And you were always the one I asked for in my nighttime bender gleam*\ +*Separate the colors, strip my words, and paint the walls with apathy* \ No newline at end of file diff --git a/void-fe/data/poems/shes-not-who-she-used-to-be.md b/void-fe/data/poems/shes-not-who-she-used-to-be.md new file mode 100644 index 0000000..8d3a009 --- /dev/null +++ b/void-fe/data/poems/shes-not-who-she-used-to-be.md @@ -0,0 +1,37 @@ +# She's Not Who She Used To Be + +*She looks in the mirror and likes what she sees*\ +*It's obvious she's not who she used to be*\ +*Thought she had her life found out by 14*\ +*But isn't it easy to think that, it seems*\ +*Thinking it's over just ain't quite her style*\ +*"Running, I'm running" she said for a while*\ +*Run from her problems, run from mistakes*\ +*Run because she doesn't understand things* + +*She's not a model, she's not a queen*\ +*Stressed and depressed, she would look up and scream*\ +*Running in circles, she said she was fine*\ +*"It'll always be this way" she said with a sigh*\ +*That's just who she is, and it won't ever change*\ +*She felt like she'd always be looked at as strange*\ +*Hiding her gender, hiding her heart*\ +*Keeping it secret's the easiest part* + +*"I'm fed up, I'm stuck, and I've had enough"*\ +*She wanted a change, she knew it'd be tough*\ +*She took a deep breath and decided to try*\ +*She quit her job, outed herself, and then cried*\ +*There's no point in trying to live a big lie*\ +*There's no point in not even trying to try*\ +*She talked to some friends and she knew what to do*\ +*"I'll fight for myself, cus it's long overdue"* + +*She looks in the mirror and likes what she sees*\ +*It's obvious she's not who she used to be*\ +*The sad, lonely teenager just wanting friends*\ +*The stressed, upset college kid hiding her dread*\ +*"I know I'm a girl, and I see it right now"*\ +*Things line up neatly, and clearer, somehow*\ +*That's my big story, that's who you see* \ +*I'm glad that I'm not who I used to be* \ No newline at end of file diff --git a/void-fe/data/poems/since-when-did-winter-end.md b/void-fe/data/poems/since-when-did-winter-end.md new file mode 100644 index 0000000..2336bbd --- /dev/null +++ b/void-fe/data/poems/since-when-did-winter-end.md @@ -0,0 +1,54 @@ +# Since When Did Winter End + +*I’m a mess*\ +*A disaster, but I see it in a better light now than I did before*\ +*I’m a mess*\ +*But I manage every moment, and I get along well when it’s not as warm* + +*Seasons change, people change*\ +*I’m not a perfect model*\ +*I can tell you how to improve*\ +*While I lament all my struggles*\ +*Then you’ll see* + +*When Winter ends I think I get*\ +*A little less upsetting*\ +*So it seems* + +*Here’s the thing*\ +*I know it’s not quite summer, but I’ll make believe it’s just as bright outside*\ +*Here’s the thing*\ +*You would think it would be better, but predictions haven’t ever been my pride* + +*Seasons change, people change*\ +*It’s not always the weather*\ +*I look around at all the leaves*\ +*And see that change is better*\ +*It’s insane* + +*When Winter ends I think I get*\ +*A little less upsetting*\ +*So it seems* + +*It’s surreal*\ +*Can’t believe so much has happened, I reminisce and then I wonder if it’s real*\ +*It’s surreal*\ +*I know Winter’s fast approaching, I’m prepared and I’m excited now, I feel* + +*Seasons change, people change*\ +*I can’t believe I’m here now*\ +*The time goes by and I still*\ +*Think that yesterday was 1 month*\ +*I’m impressed* + +*When Winter ends I think I get*\ +*A little less upsetting*\ +*So it seems* + +*When Winter ends I think I get*\ +*A little less upsetting*\ +*A little less depressing*\ +*A little less regretting*\ +*A little less repressing*\ +*A little less regressing*\ +*So it seems* \ No newline at end of file diff --git a/void-fe/data/poems/support-class.md b/void-fe/data/poems/support-class.md new file mode 100644 index 0000000..f13e8a6 --- /dev/null +++ b/void-fe/data/poems/support-class.md @@ -0,0 +1,22 @@ +# Support Class + +*Words like knives carving thoughts into the pages of my life*\ +*Like scattered scraps of paper torn and fluttering in the wind*\ +*So too am I temporary and fleeting* + +*Like fingers pulling back and tearing at a lockbox of treasures*\ +*The tendrils scratching and aggressively tugging at my heart*\ +*It makes me feel wanted* + +*The thoughts and feelings and memories and doting and loving phrases echo in my mind ceaselessly to remind me that I am better and more whole than I was before*\ +*And when I look up into the stars and see them shining back at me it is a reminder that I am a small and insignificant being, but that I am wanted and loved and cared for all the same*\ +*And maybe when it's thoughts like this I don't feel so alone and afraid*\ +*And maybe I can learn for myself to love who I have become again* + +*We fall into these traps like moths and flies sinking deeply*\ +*Desperately clawing and bemoaning our woes and fears*\ +*But it's not too late* + +*Fight, bite, bark, and resist the plagues in your own self conscious*\ +*I am the protagonist of my own hopes, dreams, and desires*\ +*And you all are my support* \ No newline at end of file diff --git a/void-fe/data/poems/sweetheart-sweet-tea-6ck4.md b/void-fe/data/poems/sweetheart-sweet-tea-6ck4.md new file mode 100644 index 0000000..4aa43dc --- /dev/null +++ b/void-fe/data/poems/sweetheart-sweet-tea-6ck4.md @@ -0,0 +1,45 @@ +# Sweetheart, Sweet Tea + +Do you remember? \ +The first time that we had met \ +Oh, I'm sure I don't regret that memory \ +Do you remember? \ +It's a story I'll forget \ +But the resolution finds itself yet + +You said you'd never leave me, hun \ +Oh, please just don't deceive me, hun \ +My honeysuckle, lemon sweetener \ +She won't leave me if I keep her \ +Close and in my comfort space \ +I know my heart I can't replace \ +But if you find the heart to keep me \ +I know that you'll never leave me + +Do you remember? \ +It's getting harder to forget \ +Every memory we make along the way \ +Do you remember? \ +The first time I called you "friend"\ +Oh, the resolution finds itself yet + +You said you'd never leave me, hun \ +Oh, please just don't deceive me, hun \ +My honeysuckle, lemon sweetener \ +She won't leave me if I keep her \ +Close and in my comfort space \ +I know my heart I can't replace \ +But if you find the heart to keep me \ +I know that you'll never leave me + +Honeysuckle, lemon sweetener \ +She won't leave me if I keep her \ +But if you find the heart to keep me \ +I know that you'll never lead me on + +Do you remember? \ +Every day I don't regret \ +Oh, I'm sure I won't forget your simple smile \ +Do you remember? \ +Hopefully you're satisfied \ +Cus the resolution lets me stay a while \ No newline at end of file diff --git a/void-fe/data/poems/they-said-i-could-be-anything-when-i-grew-up-but-i-was-already-a-girl-im.md b/void-fe/data/poems/they-said-i-could-be-anything-when-i-grew-up-but-i-was-already-a-girl-im.md new file mode 100644 index 0000000..7e25164 --- /dev/null +++ b/void-fe/data/poems/they-said-i-could-be-anything-when-i-grew-up-but-i-was-already-a-girl-im.md @@ -0,0 +1,59 @@ +# They Said I Could Be Anything When I Grew Up, But I Was Already A Girl (I'm Living Proof) + +*I still can't see past next week\ +It feels like an eternity and I\ +Can't keep waiting up\ +Life's for living 'til we're dead\ +But I'm not finished writing yet and I\ +Hope you're keeping up\ +I can't keep saying "it'll be next year"* + +(I wanna be "me" today)\ +*Fuck your opinion - I'm not listening\ +Cause I won't let those words take hold of me\ +I'm not afraid to be me (fuck, if I'm not a girl, then what gives you the right to tell me)\ +Fuck your opinion - I'm not listening\ +Cause I'm done being afraid to reach my peak\ +I'm not afraid to be me\ +I'm not afraid to be me* + +*I still can't see past next week\ +I'd even fear it in my sleep and I\ +Can't keep waking up\ +Dreams are meant to be lived out\ +No, I won't let you shape my doubts and I\ +Won't stop looking up\ +I can't keep saying "it'll be next year"* + +(I wanna be "me" today)\ +*Fuck your opinion - I'm not listening\ +Cause I won't let those words take hold of me\ +I'm not afraid to be me (fuck, if I'm not a girl, then what gives you the right to tell me)\ +Fuck your opinion - I'm not listening\ +Cause I'm done being afraid to reach my peak\ +I'm not afraid to be me\ +I'm not afraid to be me* + +*There's always so damn much to fear\ +There's always something creeping near\ +And I can't wait inside my room forever clutching my own sides* + +*There's always someone making fun\ +There's always some fuck with a gun\ +But I can't let that stop me living for the first time in my life* + +(I wanna be "me" today)\ +*Fuck your opinion - I'm not listening\ +Cause I won't let those words take hold of me\ +I'm not afraid to be me (fuck, if I'm not a girl, then what gives you the right to tell me)\ +Fuck your opinion - I'm not listening\ +Cause I'm done being afraid to reach my peak\ +I'm not afraid to be me\ +I'm not afraid to be me* + +(I'm not afraid to be me) *Fuck your gender roles, fuck biology*\ +(I'm not afraid to be me) *I know that I'm a girl, don't need to "wait and see"*\ +(I'm not afraid to be me) *'Cause I'm not done yet, I'm just at the start*\ +(I'm not afraid to be me) *I'll keep on writing 'til I empty out my heart* + +[**Yeah, in case you hadn't noticed, I'm a fucking girl - deal with it.**] \ No newline at end of file diff --git a/void-fe/data/poems/what-do-you-mean-youre-not-gay-you-fucking-dated-me.md b/void-fe/data/poems/what-do-you-mean-youre-not-gay-you-fucking-dated-me.md new file mode 100644 index 0000000..03158bf --- /dev/null +++ b/void-fe/data/poems/what-do-you-mean-youre-not-gay-you-fucking-dated-me.md @@ -0,0 +1,54 @@ +# What do you mean you're not gay, you fucking dated me + +*Waiting on you to blink me to life*\ +*She said I'm her backup [gal] in the end*\ +*I've never been one to pull away*\ +*Say what you like, babe, love drunk in my bed*\ +*It never seemed like I was worth all the fuss*\ +*But if you made up your mind, then who could I trust?* + +*I'm wasting my years on you, babe*\ +*So you can call me your [girl]friend, or friend, anyway*\ +*It was never like you to change*\ +*The way that you view my life*\ +*So fuck off, screw you, I'm fine* + +*I'm just a mess who can't see my fate*\ +*Tell me again how to better serve you*\ +*Writing a post to get out my thoughts*\ +*I'd just be worse off, you told me the truth*\ +*"I just don't see you as a girl," she would try*\ +*And now you won't hear me say "this is my damn life"* + +*I'm wasting my years on you, babe*\ +*So you can call me your [girl]friend, or friend, anyway*\ +*It was never like you to change*\ +*The way that you view my life*\ +*So fuck off, screw you, I'm fine* + +*Tell me I'm not so useful anymore*\ +*You're moving on, and I'm just a bore*\ +*Say it to my face with this faded haze* + +**(spoken, ranting, raw)**\ +Cus let's face it, you wouldn't have the guts to say it sober\ +I'm worth so much more than you ever made me feel like\ +And the thought of you ending it on the note of how bad you feel just makes me angrier\ +It's like you literally never considered my feelings in your own selfish decisions\ +And then you have the fucking nerve to come to me\ +Saying shit like "I feel bad that things ended this way"\ +All while fucking deadnaming me in the process\ +I'm glad that you gave up on me, because I should have done it sooner\ +Oh, and that surgery you told me not to pursue because it would make you sad?\ +Fuck you. I'm getting it. I've needed it. Just leave me the fuck alone\ +Go back to your sad life with your miserable "career" and choke on it\ +You couldn't even make enough change to give yourself happiness\ +Why would I expect you to do so for me? + +*I'm wasting my years on you, babe*\ +*So you can call me your [girl]friend, or friend, anyway*\ +*It was never like you to change*\ +*The way that you view my life*\ +*So fuck off, screw you, I'm fine*\ +Fuck off, screw you, I'm fine. + diff --git a/void-fe/data/poems/writing-myself-into-my-own-grave-ill-never-be-happy.md b/void-fe/data/poems/writing-myself-into-my-own-grave-ill-never-be-happy.md new file mode 100644 index 0000000..5e4d6ec --- /dev/null +++ b/void-fe/data/poems/writing-myself-into-my-own-grave-ill-never-be-happy.md @@ -0,0 +1,50 @@ +# Writing Myself Into My Own Grave (“I’ll never be happy”) + +*You should keep your distance*\ +*You should never stay*\ +*You should learn your lesson*\ +*I’m never okay*\ +*I’ll always be wanting*\ +*More than I can say*\ +*Use your fucking head now*\ +*And please stay away*\ +*“I’ll never be happy”*\ +*That’s the simple phrase*\ +*Always pushing boundaries*\ +*Always such a pain*\ +*Writing lines is hopeless*\ +*Just pills to help delay*\ +*You should learn your lesson*\ +*I’m never okay* + +Mhm mhm.\ +**(It’s time for a break)** + +*I’m never satisfied, don’t you think that you’d agree?*\ +*Just a sad, pathetic, hopeless mess with endless strife and grief*\ +*You can say that I’m perfection, you can tell me that you care*\ +*You can say I deserve better, now just let me go from there*\ +*I’m nobody’s posession, no one’s aiming for my pride*\ +*And deserving better never helped me, I think that’s a lie*\ +*Now it’s not about attention, and it’s not about my worth*\ +*It’s not about a partnership I’ll never find on Earth*\ +*It’s the simple fact I’m broken and I’m tearing at the seams*\ +*Try to keep myself together helping other people, see?* + +*I worry about people*\ +*I worry how I’m seen*\ +*I worry what they think of me when I’m not on their screen*\ +*I worry if they think of me at all, just the same*\ +*I wonder if they worry ‘bout me too, when they’re in-game*\ +*I always seem to focus on if everyone’s alright*\ +*I always seem to go to bed and wonder through the night* + +*“Are they okay?”*\ +*“Did they see me?”*\ +*“Am I helping?”*\ +*I’m repeating* + +*I go to bed*\ +*I close my eyes*\ +*Another day*\ +*Another night* \ No newline at end of file diff --git a/void-fe/data/poems/youll-grow-out-of-this.md b/void-fe/data/poems/youll-grow-out-of-this.md new file mode 100644 index 0000000..08f10f3 --- /dev/null +++ b/void-fe/data/poems/youll-grow-out-of-this.md @@ -0,0 +1,35 @@ +# "You'll Grow Out Of This" + +**[Verse 1]** + +*I write songs I'll never sing*\ +*Like I write lines you'll never read*\ +*And I can't help but be afraid*\ +*That I can't finish anything* + +**[Verse 2]** + +*My emotions not in check*\ +*Sorry, did I just say that?*\ +*I don't know why I am so sad*\ +*Now I'll cry and say my bad* + +**[Chorus]** + +*This is where I'd make a break, a part of this song to repeat*\ +*But I don't care what it should say, 'cus I'm already bored, okay?*\ +*This is where I'd write some lines to keep myself from going on*\ +*And if I don't then you'll move on because this song is way too long* + +**[Verse 3]** + +*ADHD isn't grand*\ +*It's more than just attention span*\ +*I just hope you'll understand*\ +*That I cannot control my hands* + +**[Verse 4]** + +*I could write more songs I guess*\ +*Instead of doing all the rest*\ +*Depends on if I finish this* \ No newline at end of file diff --git a/void-fe/dist/assets/dioxus/snippets/dioxus-interpreter-js-1676574062e4c953/inline0.js b/void-fe/dist/assets/dioxus/snippets/dioxus-interpreter-js-1676574062e4c953/inline0.js new file mode 100644 index 0000000..8467b5d --- /dev/null +++ b/void-fe/dist/assets/dioxus/snippets/dioxus-interpreter-js-1676574062e4c953/inline0.js @@ -0,0 +1,180 @@ +let m,p,ls,lss,sp,d,t,c,s,sl,op,i,e,z,index,value,ns,n,ptr,many,text,event_name,len,root,id,field,bubbles,tmpl_id;const evt = [];const attr = [];const ns_cache = []; + class ListenerMap { + constructor(root) { + // bubbling events can listen at the root element + this.global = {}; + // non bubbling events listen at the element the listener was created at + this.local = {}; + this.root = null; + this.handler = null; + } + + create(event_name, element, bubbles) { + if (bubbles) { + if (this.global[event_name] === undefined) { + this.global[event_name] = {}; + this.global[event_name].active = 1; + this.root.addEventListener(event_name, this.handler); + } else { + this.global[event_name].active++; + } + } + else { + const id = element.getAttribute("data-dioxus-id"); + if (!this.local[id]) { + this.local[id] = {}; + } + element.addEventListener(event_name, this.handler); + } + } + + remove(element, event_name, bubbles) { + if (bubbles) { + this.global[event_name].active--; + if (this.global[event_name].active === 0) { + this.root.removeEventListener(event_name, this.global[event_name].callback); + delete this.global[event_name]; + } + } + else { + const id = element.getAttribute("data-dioxus-id"); + delete this.local[id][event_name]; + if (this.local[id].length === 0) { + delete this.local[id]; + } + element.removeEventListener(event_name, this.handler); + } + } + + removeAllNonBubbling(element) { + const id = element.getAttribute("data-dioxus-id"); + delete this.local[id]; + } + } + function SetAttributeInner(node, field, value, ns) { + const name = field; + if (ns === "style") { + // ????? why do we need to do this + if (node.style === undefined) { + node.style = {}; + } + node.style[name] = value; + } else if (ns !== null && ns !== undefined && ns !== "") { + node.setAttributeNS(ns, name, value); + } else { + switch (name) { + case "value": + if (value !== node.value) { + node.value = value; + } + break; + case "checked": + node.checked = value === "true"; + break; + case "selected": + node.selected = value === "true"; + break; + case "dangerous_inner_html": + node.innerHTML = value; + break; + default: + // https://github.com/facebook/react/blob/8b88ac2592c5f555f315f9440cbb665dd1e7457a/packages/react-dom/src/shared/DOMProperty.js#L352-L364 + if (value === "false" && bool_attrs.hasOwnProperty(name)) { + node.removeAttribute(name); + } else { + node.setAttribute(name, value); + } + } + } + } + function LoadChild(ptr, len) { + // iterate through each number and get that child + node = stack[stack.length - 1]; + ptr_end = ptr + len; + for (; ptr < ptr_end; ptr++) { + end = m.getUint8(ptr); + for (node = node.firstChild; end > 0; end--) { + node = node.nextSibling; + } + } + return node; + } + const listeners = new ListenerMap(); + let nodes = []; + let stack = []; + const templates = {}; + let node, els, end, ptr_end, k; + export function save_template(nodes, tmpl_id) { + templates[tmpl_id] = nodes; + } + export function set_node(id, node) { + nodes[id] = node; + } + export function initilize(root, handler) { + listeners.handler = handler; + nodes = [root]; + stack = [root]; + listeners.root = root; + } + function AppendChildren(id, many){ + root = nodes[id]; + els = stack.splice(stack.length-many); + for (k = 0; k < many; k++) { + root.appendChild(els[k]); + } + } + const bool_attrs = { + allowfullscreen: true, + allowpaymentrequest: true, + async: true, + autofocus: true, + autoplay: true, + checked: true, + controls: true, + default: true, + defer: true, + disabled: true, + formnovalidate: true, + hidden: true, + ismap: true, + itemscope: true, + loop: true, + multiple: true, + muted: true, + nomodule: true, + novalidate: true, + open: true, + playsinline: true, + readonly: true, + required: true, + reversed: true, + selected: true, + truespeed: true, + }; + export function create(r){d=r;c=new TextDecoder('utf-8',{fatal:true})}export function update_memory(r){m=new DataView(r.buffer)}export function set_buffer(b){m=new DataView(b)}export function run(){t=m.getUint8(d,true);if(t&1){ls=m.getUint32(d+1,true)}p=ls;if(t&2){lss=m.getUint32(d+5,true)}if(t&4){sl=m.getUint32(d+9,true);if(t&8){sp=lss;s="";e=sp+(sl/4|0)*4;while(sp>8,(t&16711680)>>16,t>>24);sp+=4}while(sp>>8)&255);evt[i&127]=event_name;}else{event_name=evt[i&127];}node = nodes[id]; if(node.listening){node.listening += 1;}else{node.listening = 1;} node.setAttribute('data-dioxus-id', `${id}`); listeners.create(event_name, node, (i>>>16)&255);p+=3;break;case 12:i=m.getUint32(p,true);p += 3;if((i&128)!=0){event_name=s.substring(sp,sp+=(i>>>8)&255);evt[i&127]=event_name;}else{event_name=evt[i&127];}bubbles=(i>>>16)&255;{node = nodes[m.getUint32(p,true)]; node.listening -= 1; node.removeAttribute('data-dioxus-id'); listeners.remove(node, event_name, bubbles);}p+=4;break;case 13:id=m.getUint32(p,true);p += 4;{nodes[id].textContent = s.substring(sp,sp+=m.getUint32(p,true));}p+=4;break;case 14:i=m.getUint32(p,true);p += 4;if((i&128)!=0){ns=s.substring(sp,sp+=(i>>>8)&255);ns_cache[i&127]=ns;}else{ns=ns_cache[i&127];}if((i&8388608)!=0){field=s.substring(sp,sp+=i>>>24);attr[(i>>>16)&127]=field;}else{field=attr[(i>>>16)&127];}id=m.getUint32(p,true);p += 4;{node = nodes[id]; SetAttributeInner(node, field, s.substring(sp,sp+=m.getUint32(p,true)), ns);}p+=4;break;case 15:i=m.getUint32(p,true);p += 4;if((i&128)!=0){ns=s.substring(sp,sp+=(i>>>8)&255);ns_cache[i&127]=ns;}else{ns=ns_cache[i&127];}if((i&8388608)!=0){field=s.substring(sp,sp+=i>>>24);attr[(i>>>16)&127]=field;}else{field=attr[(i>>>16)&127];}{name = field; + node = nodes[m.getUint32(p,true)]; + if (ns == "style") { + node.style.removeProperty(name); + } else if (ns !== null && ns !== undefined && ns !== "") { + node.removeAttributeNS(ns, name); + } else if (name === "value") { + node.value = ""; + } else if (name === "checked") { + node.checked = false; + } else if (name === "selected") { + node.selected = false; + } else if (name === "dangerous_inner_html") { + node.innerHTML = ""; + } else { + node.removeAttribute(name); + }}p+=4;break;case 16:len=m.getUint8(p,true);p += 1;ptr=m.getUint32(p,true);p += 4;{nodes[m.getUint32(p,true)] = LoadChild(ptr, len);}p+=4;break;case 17:len=m.getUint8(p,true);p += 1;value=s.substring(sp,sp+=m.getUint32(p,true));p += 4;ptr=m.getUint32(p,true);p += 4;{ + node = LoadChild(ptr, len); + if (node.nodeType == Node.TEXT_NODE) { + node.textContent = value; + } else { + let text = document.createTextNode(value); + node.replaceWith(text); + node = text; + } + nodes[m.getUint32(p,true)] = node; + }p+=4;break;case 18:len=m.getUint8(p,true);p += 1;ptr=m.getUint32(p,true);p += 4;{els = stack.splice(stack.length - m.getUint32(p,true)); node = LoadChild(ptr, len); node.replaceWith(...els);}p+=4;break;case 19:tmpl_id=m.getUint32(p,true);p += 4;index=m.getUint32(p,true);p += 4;{node = templates[tmpl_id][index].cloneNode(true); nodes[m.getUint32(p,true)] = node; stack.push(node);}p+=4;break;case 20:return true;}op>>>=8;}}} \ No newline at end of file diff --git a/void-fe/dist/assets/dioxus/void-werefox-cafe.js b/void-fe/dist/assets/dioxus/void-werefox-cafe.js new file mode 100644 index 0000000..f2a05cc --- /dev/null +++ b/void-fe/dist/assets/dioxus/void-werefox-cafe.js @@ -0,0 +1,1041 @@ +import { create, update_memory, save_template, initilize } from './snippets/dioxus-interpreter-js-1676574062e4c953/inline0.js'; +import * as __wbg_star0 from './snippets/dioxus-interpreter-js-1676574062e4c953/inline0.js'; + +let wasm; + +const heap = new Array(128).fill(undefined); + +heap.push(undefined, null, true, false); + +function getObject(idx) { return heap[idx]; } + +let heap_next = heap.length; + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + if (typeof(heap_next) !== 'number') throw new Error('corrupt heap'); + + heap[idx] = obj; + return idx; +} + +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +function _assertBoolean(n) { + if (typeof(n) !== 'boolean') { + throw new Error('expected a boolean argument'); + } +} + +const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +let cachedUint8Memory0 = null; + +function getUint8Memory0() { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +let WASM_VECTOR_LEN = 0; + +const cachedTextEncoder = new TextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (typeof(arg) !== 'string') throw new Error('expected a string argument'); + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length); + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len); + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3); + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + if (ret.read !== arg.length) throw new Error('failed to pass whole string'); + offset += ret.written; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +function isLikeNone(x) { + return x === undefined || x === null; +} + +let cachedInt32Memory0 = null; + +function getInt32Memory0() { + if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachedInt32Memory0; +} + +function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for(let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} + +function makeMutClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + // First up with a closure we increment the internal reference + // count. This ensures that the Rust closure environment won't + // be deallocated while we're invoking it. + state.cnt++; + const a = state.a; + state.a = 0; + try { + return f(a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_2.get(state.dtor)(a, state.b); + + } else { + state.a = a; + } + } + }; + real.original = state; + + return real; +} + +function logError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + let error = (function () { + try { + return e instanceof Error ? `${e.message}\n\nStack:\n${e.stack}` : e.toString(); + } catch(_) { + return ""; + } + }()); + console.error("wasm-bindgen: imported JS function that was not marked as `catch` threw an error:", error); + throw e; + } +} + +function _assertNum(n) { + if (typeof(n) !== 'number') throw new Error('expected a number argument'); +} + +let stack_pointer = 128; + +function addBorrowedObject(obj) { + if (stack_pointer == 1) throw new Error('out of js stack'); + heap[--stack_pointer] = obj; + return stack_pointer; +} +function __wbg_adapter_22(arg0, arg1, arg2) { + try { + _assertNum(arg0); + _assertNum(arg1); + wasm._dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h48233aaf91e57484(arg0, arg1, addBorrowedObject(arg2)); + } finally { + heap[stack_pointer++] = undefined; + } +} + +function __wbg_adapter_25(arg0, arg1, arg2) { + _assertNum(arg0); + _assertNum(arg1); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__he360c1b3b32f360f(arg0, arg1, addHeapObject(arg2)); +} + +function __wbg_adapter_28(arg0, arg1, arg2) { + _assertNum(arg0); + _assertNum(arg1); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hf1e9673798e59b8a(arg0, arg1, addHeapObject(arg2)); +} + +let cachedUint32Memory0 = null; + +function getUint32Memory0() { + if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) { + cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); + } + return cachedUint32Memory0; +} + +function getArrayJsValueFromWasm0(ptr, len) { + const mem = getUint32Memory0(); + const slice = mem.subarray(ptr / 4, ptr / 4 + len); + const result = []; + for (let i = 0; i < slice.length; i++) { + result.push(takeObject(slice[i])); + } + return result; +} + +function getCachedStringFromWasm0(ptr, len) { + if (ptr === 0) { + return getObject(len); + } else { + return getStringFromWasm0(ptr, len); + } +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_exn_store(addHeapObject(e)); + } +} + +async function load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + + } else { + return instance; + } + } +} + +function getImports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_cb_drop = function(arg0) { + const obj = takeObject(arg0).original; + if (obj.cnt-- == 1) { + obj.a = 0; + return true; + } + const ret = false; + _assertBoolean(ret); + return ret; + }; + imports.wbg.__wbg_create_84d0fe69433b2b4d = function() { return logError(function (arg0) { + create(arg0 >>> 0); + }, arguments) }; + imports.wbg.__wbg_updatememory_f8282a316a44bc6c = function() { return logError(function (arg0) { + update_memory(takeObject(arg0)); + }, arguments) }; + imports.wbg.__wbg_savetemplate_66c28e397e4ac81d = function() { return logError(function (arg0, arg1, arg2) { + var v0 = getArrayJsValueFromWasm0(arg0, arg1).slice(); + wasm.__wbindgen_free(arg0, arg1 * 4); + save_template(v0, arg2 >>> 0); + }, arguments) }; + imports.wbg.__wbg_initilize_b869c4536d6c8ce7 = function() { return logError(function (arg0, arg1) { + initilize(takeObject(arg0), getObject(arg1)); + }, arguments) }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbg_instanceof_Window_e266f02eee43b570 = function() { return logError(function (arg0) { + let result; + try { + result = getObject(arg0) instanceof Window; + } catch { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_document_950215a728589a2d = function() { return logError(function (arg0) { + const ret = getObject(arg0).document; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_location_797a1856892cc2de = function() { return logError(function (arg0) { + const ret = getObject(arg0).location; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_createElement_e2a0e21263eb5416 = function() { return handleError(function (arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).createElement(v0); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_createElementNS_0047de728927ea00 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + var v1 = getCachedStringFromWasm0(arg3, arg4); + const ret = getObject(arg0).createElementNS(v0, v1); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_createTextNode_866e33a51b47f04c = function() { return logError(function (arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).createTextNode(v0); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_getElementById_eb93a47327bb5585 = function() { return logError(function (arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).getElementById(v0); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_instanceof_HtmlInputElement_5c9d54338207f061 = function() { return logError(function (arg0) { + let result; + try { + result = getObject(arg0) instanceof HTMLInputElement; + } catch { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_checked_44c09d0c819e33ad = function() { return logError(function (arg0) { + const ret = getObject(arg0).checked; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_type_6bd11acdabd07813 = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).type; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_value_1f2c9e357d18d3ea = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).value; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_type_1dff9d19be2750ce = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).type; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_target_b629c177f9bee3da = function() { return logError(function (arg0) { + const ret = getObject(arg0).target; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_preventDefault_16b2170b12f56317 = function() { return logError(function (arg0) { + getObject(arg0).preventDefault(); + }, arguments) }; + imports.wbg.__wbg_data_af909e5dfe73e68c = function() { return logError(function (arg0) { + const ret = getObject(arg0).data; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_altKey_088afaf4c4a6fe7c = function() { return logError(function (arg0) { + const ret = getObject(arg0).altKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_metaKey_69f3ca388ab2c6b2 = function() { return logError(function (arg0) { + const ret = getObject(arg0).metaKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_ctrlKey_011662ff21669501 = function() { return logError(function (arg0) { + const ret = getObject(arg0).ctrlKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_shiftKey_5472f6ec6b0da088 = function() { return logError(function (arg0) { + const ret = getObject(arg0).shiftKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_instanceof_HtmlSelectElement_d22585b1943c6b08 = function() { return logError(function (arg0) { + let result; + try { + result = getObject(arg0) instanceof HTMLSelectElement; + } catch { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_value_1b15c45090422f7f = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).value; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_altKey_dff2a075455ac01b = function() { return logError(function (arg0) { + const ret = getObject(arg0).altKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_ctrlKey_993b558f853d64ce = function() { return logError(function (arg0) { + const ret = getObject(arg0).ctrlKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_shiftKey_31e62e9d172b26f0 = function() { return logError(function (arg0) { + const ret = getObject(arg0).shiftKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_metaKey_9f0f19692d0498bd = function() { return logError(function (arg0) { + const ret = getObject(arg0).metaKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_location_e0f6bf3e5e23180a = function() { return logError(function (arg0) { + const ret = getObject(arg0).location; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_repeat_7ef48474c78e74bd = function() { return logError(function (arg0) { + const ret = getObject(arg0).repeat; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_key_f0decac219aa904b = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).key; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_code_aed21120de275a12 = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).code; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_instanceof_Node_abf5312af68f179e = function() { return logError(function (arg0) { + let result; + try { + result = getObject(arg0) instanceof Node; + } catch { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_parentElement_0e8c9afce5cb9d6e = function() { return logError(function (arg0) { + const ret = getObject(arg0).parentElement; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_textContent_dff59ad5e030bb86 = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).textContent; + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_appendChild_b8199dc1655c852d = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).appendChild(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_pageX_fa6e927410d8f9a8 = function() { return logError(function (arg0) { + const ret = getObject(arg0).pageX; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_pageY_fcdd161e44399498 = function() { return logError(function (arg0) { + const ret = getObject(arg0).pageY; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_protocol_3767aa51aa3121ca = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg1).protocol; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_host_ab37f7d1be2315a7 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg1).host; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_instanceof_CompositionEvent_57e2f1c0e7330ddc = function() { return logError(function (arg0) { + let result; + try { + result = getObject(arg0) instanceof CompositionEvent; + } catch { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_data_70b505c651722930 = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).data; + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_setProperty_21e2e7868b86a93e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + var v1 = getCachedStringFromWasm0(arg3, arg4); + getObject(arg0).setProperty(v0, v1); + }, arguments) }; + imports.wbg.__wbg_length_5ce97df09b61b986 = function() { return logError(function (arg0) { + const ret = getObject(arg0).length; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_item_2ab86c1e3cb70ed3 = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg0).item(arg1 >>> 0); + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_screenX_efa7b61dc7fa2efd = function() { return logError(function (arg0) { + const ret = getObject(arg0).screenX; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_screenY_c5e6449919709a69 = function() { return logError(function (arg0) { + const ret = getObject(arg0).screenY; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_clientX_35f23f953e04ec0e = function() { return logError(function (arg0) { + const ret = getObject(arg0).clientX; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_clientY_8104e462abc0b3ec = function() { return logError(function (arg0) { + const ret = getObject(arg0).clientY; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_offsetX_413d9f02022e72ad = function() { return logError(function (arg0) { + const ret = getObject(arg0).offsetX; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_offsetY_488f80a0a9666028 = function() { return logError(function (arg0) { + const ret = getObject(arg0).offsetY; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_ctrlKey_e1b8f1de1eb24d5d = function() { return logError(function (arg0) { + const ret = getObject(arg0).ctrlKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_shiftKey_fdd99b6df96e25c5 = function() { return logError(function (arg0) { + const ret = getObject(arg0).shiftKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_altKey_d531a4d3704557cb = function() { return logError(function (arg0) { + const ret = getObject(arg0).altKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_metaKey_934772989e28020c = function() { return logError(function (arg0) { + const ret = getObject(arg0).metaKey; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_button_a1c470d5e4c997f2 = function() { return logError(function (arg0) { + const ret = getObject(arg0).button; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_buttons_42a7b7de33d8e572 = function() { return logError(function (arg0) { + const ret = getObject(arg0).buttons; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_instanceof_Element_cb847a3fc7b1b1a4 = function() { return logError(function (arg0) { + let result; + try { + result = getObject(arg0) instanceof Element; + } catch { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_getAttribute_2c20e00a5cd314af = function() { return logError(function (arg0, arg1, arg2, arg3) { + var v0 = getCachedStringFromWasm0(arg2, arg3); + const ret = getObject(arg1).getAttribute(v0); + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }, arguments) }; + imports.wbg.__wbg_setAttribute_79c9562d32d05e66 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + var v1 = getCachedStringFromWasm0(arg3, arg4); + getObject(arg0).setAttribute(v0, v1); + }, arguments) }; + imports.wbg.__wbg_setAttributeNS_6226a35b93f5c79c = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + var v1 = getCachedStringFromWasm0(arg3, arg4); + var v2 = getCachedStringFromWasm0(arg5, arg6); + getObject(arg0).setAttributeNS(v0, v1, v2); + }, arguments) }; + imports.wbg.__wbg_toggleAttribute_0d026e5820a28711 = function() { return handleError(function (arg0, arg1, arg2) { + var v0 = getCachedStringFromWasm0(arg1, arg2); + const ret = getObject(arg0).toggleAttribute(v0); + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_instanceof_HtmlElement_9e442d53bb553421 = function() { return logError(function (arg0) { + let result; + try { + result = getObject(arg0) instanceof HTMLElement; + } catch { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_style_2141664e428fef46 = function() { return logError(function (arg0) { + const ret = getObject(arg0).style; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_debug_7960d327fd96f71a = function() { return logError(function (arg0, arg1, arg2, arg3) { + console.debug(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3)); + }, arguments) }; + imports.wbg.__wbg_error_fe807da27c4a4ced = function() { return logError(function (arg0) { + console.error(getObject(arg0)); + }, arguments) }; + imports.wbg.__wbg_error_fd84ca2a8a977774 = function() { return logError(function (arg0, arg1, arg2, arg3) { + console.error(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3)); + }, arguments) }; + imports.wbg.__wbg_info_5566be377f5b52ae = function() { return logError(function (arg0, arg1, arg2, arg3) { + console.info(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3)); + }, arguments) }; + imports.wbg.__wbg_log_7b690f184ae4519b = function() { return logError(function (arg0, arg1, arg2, arg3) { + console.log(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3)); + }, arguments) }; + imports.wbg.__wbg_warn_48cbddced45e5414 = function() { return logError(function (arg0, arg1, arg2, arg3) { + console.warn(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3)); + }, arguments) }; + imports.wbg.__wbg_animationName_8b08b6b55e2871c3 = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).animationName; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_elapsedTime_b9b2848f0ce69c4d = function() { return logError(function (arg0) { + const ret = getObject(arg0).elapsedTime; + return ret; + }, arguments) }; + imports.wbg.__wbg_pseudoElement_489395cbb841b9a8 = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).pseudoElement; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_instanceof_HtmlTextAreaElement_4bc39f9d861a6832 = function() { return logError(function (arg0) { + let result; + try { + result = getObject(arg0) instanceof HTMLTextAreaElement; + } catch { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_value_00fb0fdc46959169 = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).value; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_propertyName_e41c6239ffb77f2a = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).propertyName; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_elapsedTime_6bbd8686761d767f = function() { return logError(function (arg0) { + const ret = getObject(arg0).elapsedTime; + return ret; + }, arguments) }; + imports.wbg.__wbg_pseudoElement_589db5e026c64890 = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).pseudoElement; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_setonmessage_5ea7e452fd7a5544 = function() { return logError(function (arg0, arg1) { + getObject(arg0).onmessage = getObject(arg1); + }, arguments) }; + imports.wbg.__wbg_new_8ad026ef33da9ab1 = function() { return handleError(function (arg0, arg1) { + var v0 = getCachedStringFromWasm0(arg0, arg1); + const ret = new WebSocket(v0); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_deltaX_b7d127c94d6265c0 = function() { return logError(function (arg0) { + const ret = getObject(arg0).deltaX; + return ret; + }, arguments) }; + imports.wbg.__wbg_deltaY_b32fa858e16edcc0 = function() { return logError(function (arg0) { + const ret = getObject(arg0).deltaY; + return ret; + }, arguments) }; + imports.wbg.__wbg_deltaZ_f74840dd94a2e4c0 = function() { return logError(function (arg0) { + const ret = getObject(arg0).deltaZ; + return ret; + }, arguments) }; + imports.wbg.__wbg_deltaMode_11f7b19e64d9a515 = function() { return logError(function (arg0) { + const ret = getObject(arg0).deltaMode; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_instanceof_HtmlFormElement_04e7484e36bd99d6 = function() { return logError(function (arg0) { + let result; + try { + result = getObject(arg0) instanceof HTMLFormElement; + } catch { + result = false; + } + const ret = result; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_elements_ce4445b6cda59af6 = function() { return logError(function (arg0) { + const ret = getObject(arg0).elements; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_pointerId_d2caae4465ba386f = function() { return logError(function (arg0) { + const ret = getObject(arg0).pointerId; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_width_a1d5efe9db3fb17a = function() { return logError(function (arg0) { + const ret = getObject(arg0).width; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_height_7a964b61a7a42a7d = function() { return logError(function (arg0) { + const ret = getObject(arg0).height; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_pressure_352c13794490720b = function() { return logError(function (arg0) { + const ret = getObject(arg0).pressure; + return ret; + }, arguments) }; + imports.wbg.__wbg_tangentialPressure_1dfc978ca995fe64 = function() { return logError(function (arg0) { + const ret = getObject(arg0).tangentialPressure; + return ret; + }, arguments) }; + imports.wbg.__wbg_tiltX_5e065070f9907bab = function() { return logError(function (arg0) { + const ret = getObject(arg0).tiltX; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_tiltY_88a95794fa24061b = function() { return logError(function (arg0) { + const ret = getObject(arg0).tiltY; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_twist_1ac0d3bf085b9fa5 = function() { return logError(function (arg0) { + const ret = getObject(arg0).twist; + _assertNum(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_pointerType_df759fa0bd6634ed = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).pointerType; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_isPrimary_31079f1bab7f6665 = function() { return logError(function (arg0) { + const ret = getObject(arg0).isPrimary; + _assertBoolean(ret); + return ret; + }, arguments) }; + imports.wbg.__wbg_newnoargs_2b8b6bd7753c76ba = function() { return logError(function (arg0, arg1) { + var v0 = getCachedStringFromWasm0(arg0, arg1); + const ret = new Function(v0); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_call_95d1ea488d03e4e8 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_resolve_fd40f858d9db1a04 = function() { return logError(function (arg0) { + const ret = Promise.resolve(getObject(arg0)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_then_ec5db6d509eb475f = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg0).then(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_globalThis_87cbb8506fecf3a9 = function() { return handleError(function () { + const ret = globalThis.globalThis; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_self_e7c1f827057f6584 = function() { return handleError(function () { + const ret = self.self; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_window_a09ec664e14b1b81 = function() { return handleError(function () { + const ret = window.window; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_global_c85a9259e621f3db = function() { return handleError(function () { + const ret = global.global; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbindgen_is_undefined = function(arg0) { + const ret = getObject(arg0) === undefined; + _assertBoolean(ret); + return ret; + }; + imports.wbg.__wbindgen_string_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbindgen_is_string = function(arg0) { + const ret = typeof(getObject(arg0)) === 'string'; + _assertBoolean(ret); + return ret; + }; + imports.wbg.__wbg_error_f851667af71bcfc6 = function() { return logError(function (arg0, arg1) { + var v0 = getCachedStringFromWasm0(arg0, arg1); + if (arg0 !== 0) { wasm.__wbindgen_free(arg0, arg1); } + console.error(v0); +}, arguments) }; +imports.wbg.__wbg_new_abda76e883ba8a5f = function() { return logError(function () { + const ret = new Error(); + return addHeapObject(ret); +}, arguments) }; +imports.wbg.__wbg_stack_658279fe44541cf6 = function() { return logError(function (arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; +}, arguments) }; +imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; +}; +imports.wbg.__wbindgen_object_drop_ref = function(arg0) { + takeObject(arg0); +}; +imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); +}; +imports.wbg.__wbindgen_memory = function() { + const ret = wasm.memory; + return addHeapObject(ret); +}; +imports.wbg.__wbindgen_closure_wrapper896 = function() { return logError(function (arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 118, __wbg_adapter_22); + return addHeapObject(ret); +}, arguments) }; +imports.wbg.__wbindgen_closure_wrapper898 = function() { return logError(function (arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 116, __wbg_adapter_25); + return addHeapObject(ret); +}, arguments) }; +imports.wbg.__wbindgen_closure_wrapper2223 = function() { return logError(function (arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 160, __wbg_adapter_28); + return addHeapObject(ret); +}, arguments) }; +imports['./snippets/dioxus-interpreter-js-1676574062e4c953/inline0.js'] = __wbg_star0; + +return imports; +} + +function initMemory(imports, maybe_memory) { + +} + +function finalizeInit(instance, module) { + wasm = instance.exports; + init.__wbindgen_wasm_module = module; + cachedInt32Memory0 = null; + cachedUint32Memory0 = null; + cachedUint8Memory0 = null; + + wasm.__wbindgen_start(); + return wasm; +} + +function initSync(module) { + const imports = getImports(); + + initMemory(imports); + + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + + const instance = new WebAssembly.Instance(module, imports); + + return finalizeInit(instance, module); +} + +async function init(input) { + + const imports = getImports(); + + if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) { + input = fetch(input); + } + + initMemory(imports); + + const { instance, module } = await load(await input, imports); + + return finalizeInit(instance, module); +} + +export { initSync } +export default init; diff --git a/void-fe/dist/assets/dioxus/void-werefox-cafe_bg.wasm b/void-fe/dist/assets/dioxus/void-werefox-cafe_bg.wasm new file mode 100644 index 0000000..fa9af2f Binary files /dev/null and b/void-fe/dist/assets/dioxus/void-werefox-cafe_bg.wasm differ diff --git a/void-fe/dist/fonts/DejaVuSansMono.ttf b/void-fe/dist/fonts/DejaVuSansMono.ttf new file mode 100644 index 0000000..10c879b Binary files /dev/null and b/void-fe/dist/fonts/DejaVuSansMono.ttf differ diff --git a/void-fe/dist/index.html b/void-fe/dist/index.html new file mode 100644 index 0000000..e1bc538 --- /dev/null +++ b/void-fe/dist/index.html @@ -0,0 +1,47 @@ + + + + A Letter to the Void + + + + + + + +
+ + + + \ No newline at end of file diff --git a/void-fe/dist/styles/tailwind.min.css b/void-fe/dist/styles/tailwind.min.css new file mode 100644 index 0000000..4cf4ee3 --- /dev/null +++ b/void-fe/dist/styles/tailwind.min.css @@ -0,0 +1 @@ +/*! tailwindcss v3.3.0 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.flex{display:flex}.min-h-screen{min-height:100vh}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.flex-col{flex-direction:column}.justify-center{justify-content:center}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.border-4{border-width:4px}.border-alice-werefox-red-dark{--tw-border-opacity:1;border-color:rgb(128 0 8/var(--tw-border-opacity))}.bg-alice-werefox-grey-light{--tw-bg-opacity:1;background-color:rgb(204 204 204/var(--tw-bg-opacity))}.bg-alice-werefox-grey-lightest{--tw-bg-opacity:1;background-color:rgb(238 238 238/var(--tw-bg-opacity))}.p-4{padding:1rem}.py-4{padding-top:1rem;padding-bottom:1rem}.font-nerd{font-family:DejaVuSansMono}.text-alice-werefox-red-dark{--tw-text-opacity:1;color:rgb(128 0 8/var(--tw-text-opacity))}@font-face{font-family:DejaVuSansMono;src:url(/fonts/DejaVuSansMono.ttf)}@media (prefers-color-scheme:dark){.dark\:border-alice-werefox-red{--tw-border-opacity:1;border-color:rgb(201 52 57/var(--tw-border-opacity))}.dark\:bg-alice-werefox-grey{--tw-bg-opacity:1;background-color:rgb(36 36 36/var(--tw-bg-opacity))}.dark\:bg-alice-werefox-grey-dark{--tw-bg-opacity:1;background-color:rgb(18 18 18/var(--tw-bg-opacity))}.dark\:text-alice-werefox-red-light{--tw-text-opacity:1;color:rgb(224 133 135/var(--tw-text-opacity))}} \ No newline at end of file diff --git a/void-fe/src/index.css b/void-fe/src/index.css new file mode 100644 index 0000000..89da347 --- /dev/null +++ b/void-fe/src/index.css @@ -0,0 +1,8 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@font-face { + font-family: "DejaVuSansMono"; + src: url("/fonts/DejaVuSansMono.ttf"); +} diff --git a/void-fe/src/lib.rs b/void-fe/src/lib.rs index e69de29..3a06aa2 100644 --- a/void-fe/src/lib.rs +++ b/void-fe/src/lib.rs @@ -0,0 +1,75 @@ +//! # Rust Letter Frontend +//! +//! Rendering functions for the site using [Dioxus](https://dioxuslabs.com/). + +#![allow(non_snake_case)] + +/// A module that handles the functions needed +/// to render the site. +pub mod void_app { + use std::borrow::Borrow; + + // import the prelude to get access to the `rsx!` macro and the `Scope` and `Element` types + pub use dioxus::prelude::*; + use rust_embed::RustEmbed; + + // #[derive(PartialEq, Props)] + // pub struct Poems { + // pub poems: Vec, + // } + + #[derive(PartialEq, Props)] + struct PoemContent { + content: String, + } + #[derive(RustEmbed)] + #[folder = "data/poems"] + pub struct Poems; + + /// Renders the app and returns the rendered Element. + pub fn App(cx: Scope) -> Element { + cx.render(rsx!( + div { class: "min-h-screen font-nerd bg-alice-werefox-grey-light dark:bg-alice-werefox-grey", + div { class: "container space-y-4 mx-auto p-4", + Poems::iter().map(|p| { + let poem_content = Poems::get(&p).expect("Found poem {&p:?}"); + let poem_to_str = std::str::from_utf8(poem_content.data.as_ref()).expect("Content is valid UT8."); + let poem_to_html_string = markdown::to_html(poem_to_str); + rsx!{ MakePoem{ content: poem_to_html_string } } + }) + } + } + )) + } + + #[cfg(any(target_family = "unix", target_family = "windows"))] + fn RenderPoemElement(cx: Scope) -> Element { + cx.render(rsx!( + div { class: "font-nerd flex flex-col space-y-4 mx-4 py-4", "{cx.props.content}" } + )) + } + + #[cfg(target_family = "wasm")] + fn RenderPoemElement(cx: Scope) -> Element { + cx.render(rsx!(div { + class: "font-nerd flex flex-col space-y-4 mx-4 py-4", + dangerous_inner_html: "{cx.props.content}" + })) + } + + fn MakePoem(cx: Scope) -> Element { + cx.render(rsx!( + div { class: "flex-col space-y-4", + p { class: "mx-auto max-w-fit flex justify-center bg-alice-werefox-grey-lightest dark:bg-alice-werefox-grey-dark border-4 border-alice-werefox-red-dark dark:border-alice-werefox-red text-alice-werefox-red-dark dark:text-alice-werefox-red-light p-4", + "POEM NAME HERE" + } + details { class: "mx-auto max-w-fit space-y-4 bg-alice-werefox-grey-lightest dark:bg-alice-werefox-grey-dark border-4 border-alice-werefox-red-dark dark:border-alice-werefox-red text-alice-werefox-red-dark dark:text-alice-werefox-red-light p-4", + summary { class: "flex justify-center border-4 bg-alice-werefox-grey-lightest dark:bg-alice-werefox-grey-dark border-alice-werefox-red-dark dark:border-alice-werefox-red text-alice-werefox-red-dark dark:text-alice-werefox-red-light p-4", + "Open" + } + RenderPoemElement { content: cx.props.content.clone() } + } + } + )) + } +} diff --git a/void-fe/src/main.rs b/void-fe/src/main.rs index e7a11a9..5189980 100644 --- a/void-fe/src/main.rs +++ b/void-fe/src/main.rs @@ -1,3 +1,17 @@ +use console_error_panic_hook; +use void_fe::void_app; +use wasm_logger; + + fn main() { - println!("Hello, world!"); + // init debug tool for WebAssembly + wasm_logger::init(wasm_logger::Config::default()); + console_error_panic_hook::set_once(); + + // let mut content = Vec::new(); + // for f in Poems::iter() { + // content.push(markdown::to_html(&f)); + // } + + dioxus_web::launch(void_app::App); }