initial version

This commit is contained in:
zoe 2023-08-26 15:06:24 +02:00
parent c4927b3120
commit 41218ae8a9
58 changed files with 1531 additions and 53 deletions

95
Cargo.lock generated
View File

@ -103,7 +103,7 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0487f8598afe49e6bc950a613a678bd962c4a6f431022ded62643c8b990301a"
dependencies = [
"darling",
"darling 0.20.3",
"proc-macro2",
"quote",
"syn 2.0.29",
@ -365,6 +365,42 @@ version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
[[package]]
name = "cached"
version = "0.44.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b195e4fbc4b6862bbd065b991a34750399c119797efff72492f28a5864de8700"
dependencies = [
"async-trait",
"cached_proc_macro",
"cached_proc_macro_types",
"futures",
"hashbrown 0.13.2",
"instant",
"once_cell",
"thiserror",
"tokio",
]
[[package]]
name = "cached_proc_macro"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b48814962d2fd604c50d2b9433c2a41a0ab567779ee2c02f7fba6eca1221f082"
dependencies = [
"cached_proc_macro_types",
"darling 0.14.4",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "cached_proc_macro_types"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663"
[[package]]
name = "cc"
version = "1.0.83"
@ -495,14 +531,38 @@ dependencies = [
"cipher",
]
[[package]]
name = "darling"
version = "0.14.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850"
dependencies = [
"darling_core 0.14.4",
"darling_macro 0.14.4",
]
[[package]]
name = "darling"
version = "0.20.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e"
dependencies = [
"darling_core",
"darling_macro",
"darling_core 0.20.3",
"darling_macro 0.20.3",
]
[[package]]
name = "darling_core"
version = "0.14.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0"
dependencies = [
"fnv",
"ident_case",
"proc-macro2",
"quote",
"strsim",
"syn 1.0.109",
]
[[package]]
@ -519,13 +579,24 @@ dependencies = [
"syn 2.0.29",
]
[[package]]
name = "darling_macro"
version = "0.14.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
dependencies = [
"darling_core 0.14.4",
"quote",
"syn 1.0.109",
]
[[package]]
name = "darling_macro"
version = "0.20.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
dependencies = [
"darling_core",
"darling_core 0.20.3",
"quote",
"syn 2.0.29",
]
@ -867,6 +938,12 @@ version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
[[package]]
name = "hashbrown"
version = "0.14.0"
@ -1068,6 +1145,15 @@ dependencies = [
"generic-array",
]
[[package]]
name = "instant"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
dependencies = [
"cfg-if",
]
[[package]]
name = "iso8601"
version = "0.6.1"
@ -2272,6 +2358,7 @@ dependencies = [
"axum",
"axum-jsonschema",
"axum-macros",
"cached",
"confy",
"fastrand",
"hyper",

View File

@ -51,3 +51,4 @@ tower-http = { version = "0.4", features = [
] }
fastrand = { version = "2", features = ["std"] }
strum = { version = "0.25", features = ["strum_macros", "derive"] }
cached = "0.44.0"

View File

@ -1,12 +1,16 @@
use std::hash::Hash;
use aide::axum::{
routing::{get_with, post_with},
ApiRouter,
};
use axum::{extract::Query, http::StatusCode, Json};
use cached::proc_macro::cached;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use sqlx::FromRow;
mod description;
mod kind;
mod names;
mod position;
@ -47,17 +51,16 @@ pub fn routes() -> ApiRouter {
/// this gets stored in the db,
/// the other stuff is generated using
/// the id as a seed
#[derive(Serialize, FromRow, Clone, Deserialize, JsonSchema)]
#[derive(Serialize, FromRow, Clone, Deserialize, JsonSchema, PartialEq, Eq, Hash)]
pub struct Protostar {
pub id: i32,
/// hex code of the stars color
pub color: String,
}
#[derive(Serialize, Deserialize, JsonSchema)]
#[derive(Serialize, Deserialize, JsonSchema, Clone)]
pub struct Star {
pub core: Protostar,
pub size: size::Size,
pub position: position::Position,
pub kind: kind::Kind,
pub name: String,
@ -71,16 +74,21 @@ pub struct DiscoveryLog {
impl Into<Star> for Protostar {
fn into(self) -> Star {
let mut rng = fastrand::Rng::with_seed(self.id.abs() as u64);
let range = 0..u64::MAX;
Star {
core: self.clone(),
kind: kind::Kind::random(rng.u64(range.clone())),
size: size::Size::random(rng.u64(range.clone())),
position: position::Position::random(rng.u64(range.clone())),
name: format!("{}-{}", names::random_name(rng.u64(range.clone())), self.id,).into(),
description: format!("a star!").into(),
}
star_from_seed(self.id.abs() as u64, self.clone())
}
}
#[cached]
fn star_from_seed(seed: u64, protostar: Protostar) -> Star {
let mut rng = fastrand::Rng::with_seed(seed);
let range = 0..u64::MAX;
let kind = kind::Kind::random(rng.u64(range.clone()));
Star {
core: protostar.clone(),
position: position::Position::random(rng.u64(range.clone())),
name: format!("{}-{}", names::random_name(rng.u64(range.clone())), seed,).into(),
description: protostar.generate_description(&kind, rng.u64(range.clone())),
kind,
}
}

View File

@ -0,0 +1,333 @@
use super::{kind::Kind, Protostar};
use fastrand::Rng;
use strum::{EnumIter, IntoEnumIterator};
impl Protostar {
pub fn generate_description(&self, kind: &Kind, seed: u64) -> String {
let mut rng = Rng::with_seed(seed);
let kind_name = match kind {
Kind::Planet => "planet",
Kind::Star => "star",
Kind::Nova => "nova",
Kind::Banana => "banana shaped planet",
Kind::Station => "space station",
};
let size_multiplier = rng.u16(0..u16::MAX);
let size_compare_item = rng.choice(comparison_items()).unwrap_or("ohio".into());
let life = rng.choice(Life::iter()).unwrap_or(Life::NoLife);
let life_description = rng
.choice(life.descriptions())
.unwrap_or("sensor sweep for life failed".to_string());
let danger_warning = rng
.choice(ThreatLevel::iter())
.unwrap_or(ThreatLevel::Boring)
.warning();
let description = format!(
"this {kind_name} is about {size_multiplier} times the size of {size_compare_item}.
{life_description}
{danger_warning}
"
);
description.into()
}
}
fn comparison_items() -> Vec<String> {
let results = items();
let mut results = results
.iter()
.map(|s| s.to_string())
.collect::<Vec<String>>();
// add actions
for actor in actors().iter() {
for posession in posessions().iter() {
results.push(format!("the {posession} of {actor}"));
}
}
results
}
fn actors() -> Vec<&'static str> {
vec![
"a manatee",
"a machine",
"an artist",
"a small kobold",
"a large kobold",
"a kittycat",
"a worm",
"a dog",
"a shrimp",
"a tiger",
"an elephant",
"an engineer",
"a clown",
"a prawn",
"a monster",
"an actor",
"a celebrity",
"a singer",
"a conductor",
"a firefighter",
"a president",
"a farmer",
"a queen",
"an ant",
"a kitten",
"a dragon",
"a sloth",
"a monkey",
"a brain in a jar",
"a seashell",
"a lobster",
"a crab",
"a shark",
"a programmer",
"a janitor",
"an iguana",
"a child",
"an astronaut",
"an ai",
"an android",
"famous actor bela lugosi",
"famous actor bruce lee",
"famous actor irrfan khan",
"famous actor james avery",
"famous actor patrick stewart",
"famous author terry pratchett",
"famous author douglas adams",
"famous author neil gaiman",
"forgotten video game mascot polygon man",
"forgotten video game mascot segata sanshiro",
"a perfectly spherical cow",
"alice",
"bob",
"mallory",
]
}
fn posessions() -> Vec<&'static str> {
vec![
"dreams",
"hopes",
"aspirations",
"sleepyness",
"fanbase",
"home",
"beliefs",
"honesty",
"belief",
"love",
"justifications",
"breakdancing ability",
"ability",
"memory",
]
}
fn items() -> Vec<&'static str> {
vec![
"florida",
"a pack of rats",
"the eiffel tower",
"ohio",
"texas",
"a baseball field",
"a football field (american)",
"a football field (european)",
"a ford f-150",
"a 1:3900 scale replica of the starship voyager",
"the potassium atoms in a banana",
"the great pyramid of giza",
"a small boulder the size of a large boulder",
"a large boulder the size of a small boulder",
"a banana (for scale)",
"a pebble",
"a basketball court",
"100,000,000,000$ in small and unmarked bills",
"a box of donuts",
"zeng jinlian, the tallest woman ever as reported by guiness world records",
"a candle",
"a box of of chocolates",
"an airbus A318",
"an embraer ERJ135",
"a fairchild dornier 328-300JET",
"a sunflower",
"a pebble",
"the great wall of china",
"a funny joke",
"an unfunny joke",
"the oldest joke",
"france",
"china",
"hawaii",
"the kīlauea lighthouse",
"the forbidden city",
"bowl of hot soup",
"a cold drink",
]
}
#[derive(EnumIter)]
pub enum ThreatLevel {
Boring,
Harmless,
MostlyHarmless,
SlightlyDangerous,
Dangerous,
CertainDeath,
}
impl ThreatLevel {
pub fn warning(&self) -> &'static str {
match self {
ThreatLevel::Boring => "it's a bit boring here.",
ThreatLevel::Harmless => "this place is harmless.",
ThreatLevel::MostlyHarmless => "this place is mostly harmless.",
ThreatLevel::SlightlyDangerous => "this place is slightly dangerous! watch out!",
ThreatLevel::Dangerous => "this place is seriously messed up! don't go here!",
ThreatLevel::CertainDeath => "this place means certain death! STAY CLEAR!",
}
}
}
#[derive(EnumIter)]
pub enum Life {
NoLife,
LifePossible,
Primitive,
Intelligent,
}
impl Life {
pub fn descriptions(&self) -> Vec<String> {
match self {
Life::NoLife => no_life_descriptions(),
Life::LifePossible => life_possible_description(),
Life::Primitive => primitive_life_description(),
Life::Intelligent => intelligent_life_description(),
}
}
}
fn no_life_descriptions() -> Vec<String> {
vec!["life is not possible here..."]
.iter()
.map(|s| s.to_string())
.collect::<Vec<String>>()
}
fn life_possible_description() -> Vec<String> {
vec![
"life seems possible but our sensors aren't picking anything up.",
"our sensor sweep for life failed.",
]
.iter()
.map(|s| s.to_string())
.collect::<Vec<String>>()
}
fn primitive_life_description() -> Vec<String> {
vec!["our sensors are picking up single celled lifeforms."]
.iter()
.map(|s| s.to_string())
.collect::<Vec<String>>()
}
fn intelligent_life_description() -> Vec<String> {
let mut results = vec![];
for inhabitant in inhabitants().iter() {
for action in inhabitant_actions().iter() {
results.push(format!(
"our life sensors have picked up {inhabitant} {action}"
))
}
}
results
}
fn inhabitants() -> Vec<&'static str> {
vec![
"strange creatures",
"clowns",
"androids",
"slime people",
"sea creatures",
"lizards",
"hamsters",
"mice",
"dolphins",
"fish",
"crows",
"snakes",
"snake monsters",
"dragons",
"kobolds",
"tentacle monsters",
"rats",
"vampires",
"spooky skeletons",
"punks",
"werewolfs",
"minotaurs",
"ghouls",
"krakens",
"eldritch horrors",
"tadpoles",
"frog people",
"beings made of smoke",
"ghosts",
"scary monsters",
"ancient romans",
"cool guys with sunglasses and leather jackets",
"clones of you",
]
}
fn inhabitant_actions() -> Vec<&'static str> {
vec![
"who throw rocks at intruders.",
"who like to make music.",
"who like to climb.",
"who like to swim.",
"who program computers.",
"who bake.",
"who make dangerous potions.",
"who like to collect rocks.",
"who like to write strongly worded letters.",
"who scare off intruders by debating politics with them.",
"who like to make lifelike chocolate statues.",
"who grow soap on trees!",
"who like to make video games.",
"who like to sleep all day!",
"who like to watch anime.",
"who drive expensive cars!",
"who collect little figures.",
"who start projects but never finish them.",
"who like to play video games.",
"who like to paint each others nails.",
"who like to swim in clear lakes.",
"who grow their own tomatoes.",
"who fall asleep on the train.",
"who tell each other lies for fun.",
"who pirate music.",
"who like to sleep on warm rocks.",
"who think digital watches are cool.",
"who like to repair electronics.",
"who like to repair machines.",
"who give visitors a little kiss on the forehead.",
"who forget to drink enough water.",
"who are too sleepy to do anything today.",
"who want to achieve more in life.",
"who like to braid each others hair.",
"who watch movies together.",
"who like to fly model airplanes.",
"who are trying to get over their social media addiction.",
"who are waiting for the year of linux on the desktop.",
]
}

View File

@ -3,7 +3,7 @@ use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use strum::{EnumIter, IntoEnumIterator};
#[derive(Serialize, Deserialize, JsonSchema, EnumIter)]
#[derive(Clone, Copy, Serialize, Deserialize, JsonSchema, EnumIter)]
pub enum Kind {
Planet,
Star,

View File

@ -3,7 +3,7 @@ use fastrand::Rng;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(JsonSchema, Serialize, Deserialize)]
#[derive(JsonSchema, Serialize, Deserialize, Clone, Copy)]
pub struct Position {
pub right: f64,
pub bottom: f64,

View File

@ -1 +1 @@
.star[data-v-6d90fabb]{position:absolute}img[data-v-6d90fabb]{width:100%;aspect-ratio:1/1}.star-color[data-v-6d90fabb]{border-radius:9999999px;aspect-ratio:1/1;opacity:.8}[data-v-bc8ceaa8]:root{--fs-small:0.8rem;--fs-regular:calc(var(--fs-small)*1.61803);--fs-large:calc(var(--fs-regular)*1.61803);--fs-xl:calc(var(--fs-large)*1.61803);--fs-xxl:calc(var(--fs-xl)*1.61803);--pad-size-small:calc(var(--fs-small));--pad-size:var(--fs-regular);--radius:calc(var(--fs-large));--border-width:calc(var(--pad-size-small)*0.618);--accent:#aaf0d1;--ternary-accent:#d1aaf0;--secondary-accent:#f0d1aa;--black:#030f0a;--white:#fdfffe;--black-transparent:rgba(3,15,10,.6)}.starchart[data-v-bc8ceaa8]{padding:420px;position:relative;left:0;top:0}.app[data-v-bc8ceaa8]{display:flex;flex-direction:column}.nav[data-v-bc8ceaa8]{width:100%;background-color:orange}
.star[data-v-6d90fabb]{position:absolute}img[data-v-6d90fabb]{width:100%;aspect-ratio:1/1}.star-color[data-v-6d90fabb]{border-radius:9999999px;aspect-ratio:1/1;opacity:.8}[data-v-184dbf25]:root{--fs-small:0.8rem;--fs-regular:calc(var(--fs-small)*1.61803);--fs-large:calc(var(--fs-regular)*1.61803);--fs-xl:calc(var(--fs-large)*1.61803);--fs-xxl:calc(var(--fs-xl)*1.61803);--pad-size-small:calc(var(--fs-small));--pad-size:var(--fs-regular);--radius:calc(var(--fs-large));--border-width:calc(var(--pad-size-small)*0.618);--accent:#aaf0d1;--ternary-accent:#d1aaf0;--secondary-accent:#f0d1aa;--black:#030f0a;--white:#fdfffe;--black-transparent:rgba(3,15,10,.6)}.starchart[data-v-184dbf25]{cursor:grab;padding:420px;position:relative;left:0;top:0}.app[data-v-184dbf25]{display:flex;flex-direction:column}.nav[data-v-184dbf25]{width:100%;background-color:orange}

View File

@ -1 +0,0 @@
.star[data-v-6d90fabb]{position:absolute}img[data-v-6d90fabb]{width:100%;aspect-ratio:1/1}.star-color[data-v-6d90fabb]{border-radius:9999999px;aspect-ratio:1/1;opacity:.8}

1
web/dist/css/382.be72546d.css vendored Normal file
View File

@ -0,0 +1 @@
canvas{width:100%;aspect-ratio:1/1}.description[data-v-4d6c2eaa]{padding:1em}.star-view[data-v-984b3372]{height:100%;display:flex;justify-content:center;gap:1em;align-items:center}.star-model[data-v-984b3372]{width:100%;aspect-ratio:1/1;flex-grow:1;max-height:100%}.star-info[data-v-984b3372]{flex-grow:2;width:100%}@media (max-width:720px){.star-view[data-v-984b3372]{width:100%;align-items:stretch;flex-direction:column}}

1
web/dist/css/599.ed3354dc.css vendored Normal file
View File

@ -0,0 +1 @@
.discover[data-v-5acd6253]{flex-direction:column;gap:1em;height:100%;width:100%;display:flex;justify-content:center;align-items:center}.colorpicker[data-v-5acd6253],[data-v-5acd6253]::-moz-color-swatch{cursor:pointer;border:none;border-color:transparent;background-color:transparent;outline-style:none}input[type=color][data-v-5acd6253]::-webkit-color-swatch-wrapper{padding:0}input[type=color][data-v-5acd6253]::-webkit-color-swatch{border:none}input[type=color][data-v-5acd6253]{-webkit-appearance:none;border:none;cursor:pointer}button[data-v-5acd6253],label[data-v-5acd6253]{color:#aaf0d1;cursor:pointer}button[data-v-5acd6253]{background-color:transparent;border-style:none;font-size:large}button[data-v-5acd6253]:focus,button[data-v-5acd6253]:hover{color:#f0d1aa}

View File

@ -1 +0,0 @@
.discover[data-v-2134d9ee]{flex-direction:column;gap:1em;height:100%;width:100%;display:flex;justify-content:center;align-items:center}.colorpicker[data-v-2134d9ee],[data-v-2134d9ee]::-moz-color-swatch{cursor:pointer;border:none;border-color:transparent;background-color:transparent;outline-style:none}button[data-v-2134d9ee],label[data-v-2134d9ee]{color:#aaf0d1;cursor:pointer}button[data-v-2134d9ee]{background-color:transparent;border-style:none;font-size:large}button[data-v-2134d9ee]:focus,button[data-v-2134d9ee]:hover{color:#f0d1aa}

1
web/dist/css/app.855d7570.css vendored Normal file
View File

@ -0,0 +1 @@
*{padding:0;margin:0;font-family:Daisy}@font-face{font-family:Daisy;src:url(/fonts/HeadUpDaisy.17a30b4e.ttf)}html{height:100%;width:100%;background-color:#030f0a;color:#aaf0d1}canvas{image-rendering:pixelated}@keyframes movebg-2ecceaf1{0%{background-position:0 0}to{background-position:0 1080px}}.app[data-v-2ecceaf1]{overflow:hidden;display:flex;flex-direction:column;height:100vh}.content[data-v-2ecceaf1]{overflow:hidden;flex-grow:1;width:100%;background-image:url(/img/background.08e112eb.webp);animation-name:movebg-2ecceaf1;animation-timing-function:linear;animation-iteration-count:infinite;animation-duration:30s}nav[data-v-2ecceaf1]{border-top-style:solid;padding:1em;display:flex;justify-content:space-around;flex-wrap:wrap}nav a[data-v-2ecceaf1]{text-decoration:none;font-size:large;color:#aaf0d1}nav a[data-v-2ecceaf1]:focus,nav a[data-v-2ecceaf1]:hover{color:#f0d1aa}

View File

@ -1 +0,0 @@
*{padding:0;margin:0;font-family:Daisy}@font-face{font-family:Daisy;src:url(/fonts/HeadUpDaisy.17a30b4e.ttf)}html{height:100%;width:100%;background-color:#030f0a;color:#aaf0d1}@keyframes movebg-96fb61fe{0%{background-position:0 0}to{background-position:0 1080px}}.app[data-v-96fb61fe]{overflow:hidden;display:flex;flex-direction:column;height:100vh}.content[data-v-96fb61fe]{overflow:scroll;flex-grow:1;width:100%;background-image:url(/img/background.08e112eb.webp);animation-name:movebg-96fb61fe;animation-timing-function:linear;animation-iteration-count:infinite;animation-duration:30s}nav[data-v-96fb61fe]{border-top-style:solid;padding:1em;display:flex;justify-content:space-around;flex-wrap:wrap}nav a[data-v-96fb61fe]{text-decoration:none;font-size:large;color:#aaf0d1}nav a[data-v-96fb61fe]:focus,nav a[data-v-96fb61fe]:hover{color:#f0d1aa}

BIN
web/dist/images/banana.webp vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
web/dist/images/banana.webp~ vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
web/dist/images/nova.webp vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
web/dist/images/station.webp vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
web/dist/images/station.webp~ vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
web/dist/images/supernova.webp vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

2
web/dist/index.html vendored
View File

@ -1 +1 @@
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>starchart</title><script defer="defer" src="/js/chunk-vendors.503fd127.js"></script><script defer="defer" src="/js/app.469295fb.js"></script><link href="/css/app.9472f46c.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but starchart doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>starchart</title><script defer="defer" src="/js/chunk-vendors.43ff8180.js"></script><script defer="defer" src="/js/app.55f4c6ef.js"></script><link href="/css/app.855d7570.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but starchart doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
web/dist/js/254.bb932fa5.js vendored Normal file
View File

@ -0,0 +1,2 @@
"use strict";(self["webpackChunkstarchart"]=self["webpackChunkstarchart"]||[]).push([[254],{7998:function(t,r,s){s.r(r),s.d(r,{default:function(){return v}});var a=s(3396),e=s(7139),o=s(4870),i=s(2752),c=s(1642);const l={class:"star-color"},n=["src"];var p=(0,a.aZ)({__name:"SmallStar",props:{star:{type:Object,required:!0}},setup(t){const r=t,s=(0,a.Fl)((()=>{var t=r.star.kind.toString().toLowerCase();return`/images/${t}.webp`})),o=(0,a.Fl)((()=>(0,c.i)(r.star.core.color)));return(r,i)=>{const c=(0,a.up)("router-link");return(0,a.wg)(),(0,a.j4)(c,{to:"/visit/"+t.star.core.id,class:"star",style:(0,e.j5)({left:`${t.star.position.bottom}%`,top:`${t.star.position.right}%`,width:`${t.star.position.width}px`,filter:`drop-shadow(0 0 5px ${t.star.core.color}) drop-shadow(0 0 10px white) sepia(1) hue-rotate(${o.value-38}deg)`})},{default:(0,a.w5)((()=>[(0,a._)("div",l,[(0,a._)("img",{src:s.value},null,8,n)])])),_:1},8,["to","style"])}}}),u=s(89);const d=(0,u.Z)(p,[["__scopeId","data-v-6d90fabb"]]);var h=d,w=(0,a.aZ)({__name:"ChartView",setup(t){const r=(0,i.g)();return r.fetchChart(),(t,s)=>((0,a.wg)(),(0,a.iD)("div",{class:"starchart",style:(0,e.j5)({width:24*(0,o.SU)(r).stars.length+"px",height:24*(0,o.SU)(r).stars.length+"px"})},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)((0,o.SU)(r).stars,(t=>((0,a.wg)(),(0,a.j4)(h,{key:t.core.id,star:t},null,8,["star"])))),128))],4))}});const g=(0,u.Z)(w,[["__scopeId","data-v-184dbf25"]]);var v=g}}]);
//# sourceMappingURL=254.bb932fa5.js.map

1
web/dist/js/254.bb932fa5.js.map vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
"use strict";(self["webpackChunkstarchart"]=self["webpackChunkstarchart"]||[]).push([[300],{300:function(r,a,e){e.r(a),e.d(a,{default:function(){return f}});var n=e(3396);const t=r=>((0,n.dD)("data-v-39e997a1"),r=r(),(0,n.Cn)(),r),c={class:"error"},s=t((()=>(0,n._)("h1",null,"you're all alone here...",-1))),u=[s];function l(r,a){return(0,n.wg)(),(0,n.iD)("div",c,u)}var o=e(89);const d={},h=(0,o.Z)(d,[["render",l],["__scopeId","data-v-39e997a1"]]);var f=h}}]);
//# sourceMappingURL=300.2462eb59.js.map
//# sourceMappingURL=300.04882785.js.map

View File

@ -1 +1 @@
{"version":3,"file":"js/300.2462eb59.js","mappings":"0OACOA,MAAM,S,UACTC,EAAAA,EAAAA,GAAiC,UAA7B,4BAAwB,K,GAA5BC,G,kCADFC,EAAAA,EAAAA,IAEM,MAFNC,EAEMC,E,aCFR,MAAMC,EAAS,CAAC,EAKVC,GAA2B,OAAgBD,EAAQ,CAAC,CAAC,SAASE,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://starchart/./src/views/NotFoundVue.vue","webpack://starchart/./src/views/NotFoundVue.vue?88bb"],"sourcesContent":["<template>\n <div class=\"error\">\n <h1>you're all alone here...</h1>\n </div>\n</template>\n\n<style scoped>\nh1 {\n color: #f0d1aa;\n text-align: center;\n}\n\n.error {\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n</style>\n","import { render } from \"./NotFoundVue.vue?vue&type=template&id=39e997a1&scoped=true\"\nconst script = {}\n\nimport \"./NotFoundVue.vue?vue&type=style&index=0&id=39e997a1&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-39e997a1\"]])\n\nexport default __exports__"],"names":["class","_createElementVNode","_hoisted_2","_createElementBlock","_hoisted_1","_hoisted_3","script","__exports__","render"],"sourceRoot":""}
{"version":3,"file":"js/300.04882785.js","mappings":"0OACOA,MAAM,S,UACTC,EAAAA,EAAAA,GAAiC,UAA7B,4BAAwB,K,GAA5BC,G,kCADFC,EAAAA,EAAAA,IAEM,MAFNC,EAEMC,E,aCFR,MAAMC,EAAS,CAAC,EAKVC,GAA2B,OAAgBD,EAAQ,CAAC,CAAC,SAASE,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://starchart/./src/views/NotFoundVue.vue","webpack://starchart/./src/views/NotFoundVue.vue?88bb"],"sourcesContent":["<template>\n <div class=\"error\">\n <h1>you're all alone here...</h1>\n </div>\n</template>\n\n<style scoped>\nh1 {\n color: #f0d1aa;\n text-align: center;\n}\n\n.error {\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n</style>\n","import { render } from \"./NotFoundVue.vue?vue&type=template&id=39e997a1&scoped=true\"\nconst script = {}\n\nimport \"./NotFoundVue.vue?vue&type=style&index=0&id=39e997a1&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-39e997a1\"]])\n\nexport default __exports__"],"names":["class","_createElementVNode","_hoisted_2","_createElementBlock","_hoisted_1","_hoisted_3","script","__exports__","render"],"sourceRoot":""}

View File

@ -1,2 +0,0 @@
"use strict";(self["webpackChunkstarchart"]=self["webpackChunkstarchart"]||[]).push([[325],{5184:function(t,r,a){a.r(r),a.d(r,{default:function(){return p}});var s=a(3396),n=a(4870),i=a(9218),e=a(2752),u=a(2483),c=(0,s.aZ)({__name:"StarView",setup(t){const r=(0,u.yj)(),a=r.params.id.toString(),c=(0,e.g)();return c.visit(parseInt(a)??1),(t,r)=>(0,n.SU)(c).visiting?((0,s.wg)(),(0,s.j4)(i.Z,{key:0,star:(0,n.SU)(c).visiting},null,8,["star"])):(0,s.kq)("",!0)}});const k=c;var p=k}}]);
//# sourceMappingURL=325.c318954d.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"js/325.c318954d.js","mappings":"oNAQA,GAA4BA,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,WACRC,KAAAA,CAAMC,GAER,MAAMC,GAAQC,EAAAA,EAAAA,MACRC,EAAaF,EAAMG,OAAOD,GAAGE,WAE7BC,GAAQC,EAAAA,EAAAA,KAGd,OAFAD,EAAME,MAAMC,SAASN,IAAO,GAErB,CAACO,EAAUC,KACRC,EAAAA,EAAAA,IAAON,GAAOO,WACjBC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAaC,EAAAA,EAAW,CACrCC,IAAK,EACLC,MAAMN,EAAAA,EAAAA,IAAON,GAAOO,UACnB,KAAM,EAAG,CAAC,WACbM,EAAAA,EAAAA,IAAoB,IAAI,EAE9B,ICvBA,MAAMC,EAAc,EAEpB,O","sources":["webpack://starchart/./src/views/StarView.vue?4cb9","webpack://starchart/./src/views/StarView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport SmallStar from \"@/components/SmallStar.vue\";\nimport { useChartStore } from \"@/state/stars\";\nimport { useRoute } from \"vue-router\";\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'StarView',\n setup(__props) {\n\nconst route = useRoute();\nconst id: string = route.params.id.toString();\n\nconst store = useChartStore();\nstore.visit(parseInt(id) ?? 1);\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(store).visiting)\n ? (_openBlock(), _createBlock(SmallStar, {\n key: 0,\n star: _unref(store).visiting!\n }, null, 8, [\"star\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./StarView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./StarView.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__"],"names":["_defineComponent","__name","setup","__props","route","useRoute","id","params","toString","store","useChartStore","visit","parseInt","_ctx","_cache","_unref","visiting","_openBlock","_createBlock","SmallStar","key","star","_createCommentVNode","__exports__"],"sourceRoot":""}

8
web/dist/js/382.f7685422.js vendored Normal file

File diff suppressed because one or more lines are too long

1
web/dist/js/382.f7685422.js.map vendored Normal file

File diff suppressed because one or more lines are too long

2
web/dist/js/599.dbf8a90d.js vendored Normal file
View File

@ -0,0 +1,2 @@
"use strict";(self["webpackChunkstarchart"]=self["webpackChunkstarchart"]||[]).push([[599],{9599:function(a,c,e){e.r(c),e.d(c,{default:function(){return f}});e(7658);var o=e(3396),t=e(9242),n=e(4870),r=e(2752),l=e(3824);const s=a=>((0,o.dD)("data-v-5acd6253"),a=a(),(0,o.Cn)(),a),i={class:"discover"},u=s((()=>(0,o._)("label",{for:"planet-color"},"pick a color",-1)));var d=(0,o.aZ)({__name:"DiscoverView",setup(a){const c=(0,r.g)(),e=(0,n.iH)("#aaf0d1");async function s(){await c.discover(e.value),console.log(e.value),l.Z.push(`/visit/${c.visiting?.core.id}`)}return(a,c)=>((0,o.wg)(),(0,o.iD)("div",i,[u,(0,o.wy)((0,o._)("input",{type:"color",id:"planet-color","onUpdate:modelValue":c[0]||(c[0]=a=>e.value=a),class:"colorpicker"},null,512),[[t.nr,e.value]]),(0,o._)("button",{onClick:c[1]||(c[1]=a=>s())},"discover!")]))}}),v=e(89);const p=(0,v.Z)(d,[["__scopeId","data-v-5acd6253"]]);var f=p}}]);
//# sourceMappingURL=599.dbf8a90d.js.map

View File

@ -1 +1 @@
{"version":3,"file":"js/858.3d9fc85d.js","mappings":"4NAGA,MAAMA,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,EAAa,CAAEC,MAAO,YACtBC,EAA2BN,GAAa,KAAmBO,EAAAA,EAAAA,GAAoB,QAAS,CAAEC,IAAK,gBAAkB,gBAAiB,KAOxI,OAA4BC,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,eACRC,KAAAA,CAAMC,GAER,MAAMC,GAAQC,EAAAA,EAAAA,KACRC,GAAQC,EAAAA,EAAAA,IAAI,WAElBC,eAAeC,UACPL,EAAMM,SAASJ,EAAMK,OAC3BC,QAAQC,IAAIP,EAAMK,OAClBG,EAAAA,EAAOC,KAAK,UAAUX,EAAMY,UAAUC,KAAKC,KAE7C,CAEA,MAAO,CAACC,EAAUC,MACRC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO3B,EAAY,CAC3DE,GACA0B,EAAAA,EAAAA,KAAgBzB,EAAAA,EAAAA,GAAoB,QAAS,CAC3C0B,KAAM,QACNN,GAAI,eACJ,sBAAuBE,EAAO,KAAOA,EAAO,GAAMK,GAAkBnB,EAAOK,MAAQc,GACnF7B,MAAO,eACN,KAAM,KAAM,CACb,CAAC8B,EAAAA,GAAapB,EAAMK,UAEtBb,EAAAA,EAAAA,GAAoB,SAAU,CAC5B6B,QAASP,EAAO,KAAOA,EAAO,GAAMK,GAAiBhB,MACpD,eAGP,I,QCpCA,MAAMmB,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O","sources":["webpack://starchart/./src/views/DiscoverView.vue?1a59","webpack://starchart/./src/views/DiscoverView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2134d9ee\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"discover\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"label\", { for: \"planet-color\" }, \"pick a color\", -1))\n\nimport { ref } from \"vue\";\nimport { useChartStore } from \"@/state/stars\";\nimport router from \"@/router\";\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'DiscoverView',\n setup(__props) {\n\nconst store = useChartStore();\nconst color = ref(\"#aaf0d1\");\n\nasync function send() {\n await store.discover(color.value);\n console.log(color.value);\n router.push(`/visit/${store.visiting?.core.id}`);\n return;\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _withDirectives(_createElementVNode(\"input\", {\n type: \"color\",\n id: \"planet-color\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((color).value = $event)),\n class: \"colorpicker\"\n }, null, 512), [\n [_vModelText, color.value]\n ]),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (send()))\n }, \"discover!\")\n ]))\n}\n}\n\n})","import script from \"./DiscoverView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DiscoverView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./DiscoverView.vue?vue&type=style&index=0&id=2134d9ee&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2134d9ee\"]])\n\nexport default __exports__"],"names":["_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","class","_hoisted_2","_createElementVNode","for","_defineComponent","__name","setup","__props","store","useChartStore","color","ref","async","send","discover","value","console","log","router","push","visiting","core","id","_ctx","_cache","_openBlock","_createElementBlock","_withDirectives","type","$event","_vModelText","onClick","__exports__"],"sourceRoot":""}
{"version":3,"file":"js/599.dbf8a90d.js","mappings":"4NAGA,MAAMA,EAAeC,KAAMC,EAAAA,EAAAA,IAAa,mBAAmBD,EAAEA,KAAIE,EAAAA,EAAAA,MAAcF,GACzEG,EAAa,CAAEC,MAAO,YACtBC,EAA2BN,GAAa,KAAmBO,EAAAA,EAAAA,GAAoB,QAAS,CAAEC,IAAK,gBAAkB,gBAAiB,KAOxI,OAA4BC,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,eACRC,KAAAA,CAAMC,GAER,MAAMC,GAAQC,EAAAA,EAAAA,KACRC,GAAQC,EAAAA,EAAAA,IAAI,WAElBC,eAAeC,UACPL,EAAMM,SAASJ,EAAMK,OAC3BC,QAAQC,IAAIP,EAAMK,OAClBG,EAAAA,EAAOC,KAAK,UAAUX,EAAMY,UAAUC,KAAKC,KAE7C,CAEA,MAAO,CAACC,EAAUC,MACRC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO3B,EAAY,CAC3DE,GACA0B,EAAAA,EAAAA,KAAgBzB,EAAAA,EAAAA,GAAoB,QAAS,CAC3C0B,KAAM,QACNN,GAAI,eACJ,sBAAuBE,EAAO,KAAOA,EAAO,GAAMK,GAAkBnB,EAAOK,MAAQc,GACnF7B,MAAO,eACN,KAAM,KAAM,CACb,CAAC8B,EAAAA,GAAapB,EAAMK,UAEtBb,EAAAA,EAAAA,GAAoB,SAAU,CAC5B6B,QAASP,EAAO,KAAOA,EAAO,GAAMK,GAAiBhB,MACpD,eAGP,I,QCpCA,MAAMmB,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O","sources":["webpack://starchart/./src/views/DiscoverView.vue?1a59","webpack://starchart/./src/views/DiscoverView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, vModelText as _vModelText, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5acd6253\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"discover\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"label\", { for: \"planet-color\" }, \"pick a color\", -1))\n\nimport { ref } from \"vue\";\nimport { useChartStore } from \"@/state/stars\";\nimport router from \"@/router\";\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'DiscoverView',\n setup(__props) {\n\nconst store = useChartStore();\nconst color = ref(\"#aaf0d1\");\n\nasync function send() {\n await store.discover(color.value);\n console.log(color.value);\n router.push(`/visit/${store.visiting?.core.id}`);\n return;\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _withDirectives(_createElementVNode(\"input\", {\n type: \"color\",\n id: \"planet-color\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((color).value = $event)),\n class: \"colorpicker\"\n }, null, 512), [\n [_vModelText, color.value]\n ]),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (send()))\n }, \"discover!\")\n ]))\n}\n}\n\n})","import script from \"./DiscoverView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DiscoverView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./DiscoverView.vue?vue&type=style&index=0&id=5acd6253&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5acd6253\"]])\n\nexport default __exports__"],"names":["_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_1","class","_hoisted_2","_createElementVNode","for","_defineComponent","__name","setup","__props","store","useChartStore","color","ref","async","send","discover","value","console","log","router","push","visiting","core","id","_ctx","_cache","_openBlock","_createElementBlock","_withDirectives","type","$event","_vModelText","onClick","__exports__"],"sourceRoot":""}

2
web/dist/js/642.6ef406c4.js vendored Normal file

File diff suppressed because one or more lines are too long

1
web/dist/js/642.6ef406c4.js.map vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
web/dist/js/752.0fa9b066.js.map vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
"use strict";(self["webpackChunkstarchart"]=self["webpackChunkstarchart"]||[]).push([[858],{6858:function(e,a,o){o.r(a),o.d(a,{default:function(){return f}});o(7658);var c=o(3396),t=o(9242),n=o(4870),r=o(2752),l=o(3824);const s=e=>((0,c.dD)("data-v-2134d9ee"),e=e(),(0,c.Cn)(),e),i={class:"discover"},u=s((()=>(0,c._)("label",{for:"planet-color"},"pick a color",-1)));var d=(0,c.aZ)({__name:"DiscoverView",setup(e){const a=(0,r.g)(),o=(0,n.iH)("#aaf0d1");async function s(){await a.discover(o.value),console.log(o.value),l.Z.push(`/visit/${a.visiting?.core.id}`)}return(e,a)=>((0,c.wg)(),(0,c.iD)("div",i,[u,(0,c.wy)((0,c._)("input",{type:"color",id:"planet-color","onUpdate:modelValue":a[0]||(a[0]=e=>o.value=e),class:"colorpicker"},null,512),[[t.nr,o.value]]),(0,c._)("button",{onClick:a[1]||(a[1]=e=>s())},"discover!")]))}}),v=o(89);const p=(0,v.Z)(d,[["__scopeId","data-v-2134d9ee"]]);var f=p}}]);
//# sourceMappingURL=858.3d9fc85d.js.map

View File

@ -1,2 +0,0 @@
"use strict";(self["webpackChunkstarchart"]=self["webpackChunkstarchart"]||[]).push([[919],{1737:function(t,a,s){s.r(a),s.d(a,{default:function(){return d}});var r=s(3396),e=s(7139),c=s(4870),n=s(2752),h=s(9218),u=(0,r.aZ)({__name:"ChartView",setup(t){const a=(0,n.g)();return a.fetchChart(),(t,s)=>((0,r.wg)(),(0,r.iD)("div",{class:"starchart",style:(0,e.j5)({width:24*(0,c.SU)(a).stars.length+"px",height:24*(0,c.SU)(a).stars.length+"px"})},[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,c.SU)(a).stars,(t=>((0,r.wg)(),(0,r.j4)(h.Z,{key:t.core.id,star:t},null,8,["star"])))),128))],4))}}),l=s(89);const i=(0,l.Z)(u,[["__scopeId","data-v-bc8ceaa8"]]);var d=i}}]);
//# sourceMappingURL=919.b3504ac5.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"js/919.b3504ac5.js","mappings":"oNAMA,GAA4BA,EAAAA,EAAAA,IAAiB,CAC3CC,OAAQ,YACRC,KAAAA,CAAMC,GAER,MAAMC,GAAQC,EAAAA,EAAAA,KAGd,OAFAD,EAAME,aAEC,CAACC,EAAUC,MACRC,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,IAAoB,MAAO,CAC/CC,MAAO,YACPC,OAAOC,EAAAA,EAAAA,IAAgB,CACrBC,MAAuC,IAA7BC,EAAAA,EAAAA,IAAOX,GAAOY,MAAMC,OAAvB,KACPC,OAAwC,IAA7BH,EAAAA,EAAAA,IAAOX,GAAOY,MAAMC,OAAvB,QAET,GACAR,EAAAA,EAAAA,KAAW,IAAOC,EAAAA,EAAAA,IAAoBS,EAAAA,GAAW,MAAMC,EAAAA,EAAAA,KAAYL,EAAAA,EAAAA,IAAOX,GAAOY,OAAQK,KAChFZ,EAAAA,EAAAA,OAAca,EAAAA,EAAAA,IAAaC,EAAAA,EAAW,CAC5CC,IAAKH,EAAKI,KAAKC,GACfL,KAAMA,GACL,KAAM,EAAG,CAAC,YACX,OACH,GAEL,I,QCvBA,MAAMM,GAA2B,OAAgB,EAAQ,CAAC,CAAC,YAAY,qBAEvE,O","sources":["webpack://starchart/./src/views/ChartView.vue?ec53","webpack://starchart/./src/views/ChartView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, normalizeStyle as _normalizeStyle } from \"vue\"\n\nimport { useChartStore } from \"@/state/stars\";\nimport SmallStar from \"@/components/SmallStar.vue\";\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ChartView',\n setup(__props) {\n\nconst store = useChartStore();\nstore.fetchChart();\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"starchart\",\n style: _normalizeStyle({\n width: `${_unref(store).stars.length * 24}px`,\n height: `${_unref(store).stars.length * 24}px`,\n })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(store).stars, (star) => {\n return (_openBlock(), _createBlock(SmallStar, {\n key: star.core.id,\n star: star\n }, null, 8, [\"star\"]))\n }), 128))\n ], 4))\n}\n}\n\n})","import script from \"./ChartView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ChartView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./ChartView.vue?vue&type=style&index=0&id=bc8ceaa8&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-bc8ceaa8\"]])\n\nexport default __exports__"],"names":["_defineComponent","__name","setup","__props","store","useChartStore","fetchChart","_ctx","_cache","_openBlock","_createElementBlock","class","style","_normalizeStyle","width","_unref","stars","length","height","_Fragment","_renderList","star","_createBlock","SmallStar","key","core","id","__exports__"],"sourceRoot":""}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
web/dist/js/app.55f4c6ef.js vendored Normal file

File diff suppressed because one or more lines are too long

1
web/dist/js/app.55f4c6ef.js.map vendored Normal file

File diff suppressed because one or more lines are too long

8
web/dist/js/chunk-vendors.43ff8180.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

211
web/dist/models/banana.gltf vendored Normal file
View File

@ -0,0 +1,211 @@
{
"asset":{
"generator":"Khronos glTF Blender I/O v3.5.30",
"version":"2.0"
},
"scene":0,
"scenes":[
{
"name":"Scene",
"nodes":[
0
]
}
],
"nodes":[
{
"mesh":0,
"name":"Cylinder",
"scale":[
0.3151196837425232,
0.3151196837425232,
0.3151196837425232
],
"translation":[
0,
-0.4174487292766571,
0
]
}
],
"materials":[
{
"doubleSided":true,
"name":"Light",
"pbrMetallicRoughness":{
"baseColorFactor":[
1,
0.7184775471687317,
0.0997823104262352,
1
],
"metallicFactor":0,
"roughnessFactor":0.5
}
},
{
"doubleSided":true,
"name":"Dark",
"pbrMetallicRoughness":{
"baseColorFactor":[
0.8140411972999573,
0.02744733728468418,
0.13738077878952026,
1
],
"metallicFactor":0
}
}
],
"meshes":[
{
"name":"Cylinder",
"primitives":[
{
"attributes":{
"POSITION":0,
"TEXCOORD_0":1,
"NORMAL":2
},
"indices":3,
"material":0
},
{
"attributes":{
"POSITION":4,
"TEXCOORD_0":5,
"NORMAL":6
},
"indices":7,
"material":1
}
]
}
],
"accessors":[
{
"bufferView":0,
"componentType":5126,
"count":36,
"max":[
1.0150490999221802,
5.494449615478516,
0.80901700258255
],
"min":[
-1.5585846900939941,
-1.6041733026504517,
-1
],
"type":"VEC3"
},
{
"bufferView":1,
"componentType":5126,
"count":36,
"type":"VEC2"
},
{
"bufferView":2,
"componentType":5126,
"count":36,
"type":"VEC3"
},
{
"bufferView":3,
"componentType":5123,
"count":150,
"type":"SCALAR"
},
{
"bufferView":4,
"componentType":5126,
"count":34,
"max":[
-0.25792595744132996,
6.0098876953125,
0.5532032251358032
],
"min":[
-1.6626043319702148,
-1.9625250101089478,
-0.683796763420105
],
"type":"VEC3"
},
{
"bufferView":5,
"componentType":5126,
"count":34,
"type":"VEC2"
},
{
"bufferView":6,
"componentType":5126,
"count":34,
"type":"VEC3"
},
{
"bufferView":7,
"componentType":5123,
"count":78,
"type":"SCALAR"
}
],
"bufferViews":[
{
"buffer":0,
"byteLength":432,
"byteOffset":0,
"target":34962
},
{
"buffer":0,
"byteLength":288,
"byteOffset":432,
"target":34962
},
{
"buffer":0,
"byteLength":432,
"byteOffset":720,
"target":34962
},
{
"buffer":0,
"byteLength":300,
"byteOffset":1152,
"target":34963
},
{
"buffer":0,
"byteLength":408,
"byteOffset":1452,
"target":34962
},
{
"buffer":0,
"byteLength":272,
"byteOffset":1860,
"target":34962
},
{
"buffer":0,
"byteLength":408,
"byteOffset":2132,
"target":34962
},
{
"buffer":0,
"byteLength":156,
"byteOffset":2540,
"target":34963
}
],
"buffers":[
{
"byteLength":2696,
"uri":"data:application/octet-stream;base64,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"
}
]
}

141
web/dist/models/nebula.gltf vendored Normal file

File diff suppressed because one or more lines are too long

164
web/dist/models/nova.gltf vendored Normal file
View File

@ -0,0 +1,164 @@
{
"asset":{
"generator":"Khronos glTF Blender I/O v3.5.30",
"version":"2.0"
},
"extensionsUsed":[
"KHR_materials_clearcoat",
"KHR_materials_transmission",
"KHR_materials_emissive_strength",
"KHR_materials_specular",
"KHR_materials_ior"
],
"scene":0,
"scenes":[
{
"name":"Scene",
"nodes":[
0
]
}
],
"nodes":[
{
"mesh":0,
"name":"Cone",
"scale":[
0.5690511465072632,
0.5690511465072632,
0.5690511465072632
],
"translation":[
0,
0.02206335961818695,
0
]
}
],
"materials":[
{
"doubleSided":true,
"emissiveFactor":[
1,
0.7336805926539774,
0.2730392248840733
],
"extensions":{
"KHR_materials_clearcoat":{
"clearcoatFactor":1,
"clearcoatRoughnessFactor":0.029999999329447746
},
"KHR_materials_transmission":{
"transmissionFactor":1
},
"KHR_materials_emissive_strength":{
"emissiveStrength":2.998099133671275
},
"KHR_materials_specular":{
"specularColorFactor":[
1,
1,
1
]
},
"KHR_materials_ior":{
"ior":1.4500000476837158
}
},
"name":"Material.001",
"pbrMetallicRoughness":{
"baseColorFactor":[
0.8000000715255737,
0.5938380360603333,
0.34376785159111023,
1
],
"roughnessFactor":0.5
}
}
],
"meshes":[
{
"name":"Cone",
"primitives":[
{
"attributes":{
"POSITION":0,
"TEXCOORD_0":1,
"NORMAL":2
},
"indices":3,
"material":0
}
]
}
],
"accessors":[
{
"bufferView":0,
"componentType":5126,
"count":28,
"max":[
2.046938896179199,
2.6071395874023438,
1
],
"min":[
-2.046938896179199,
-2.6071395874023438,
-1
],
"type":"VEC3"
},
{
"bufferView":1,
"componentType":5126,
"count":28,
"type":"VEC2"
},
{
"bufferView":2,
"componentType":5126,
"count":28,
"type":"VEC3"
},
{
"bufferView":3,
"componentType":5123,
"count":168,
"type":"SCALAR"
}
],
"bufferViews":[
{
"buffer":0,
"byteLength":336,
"byteOffset":0,
"target":34962
},
{
"buffer":0,
"byteLength":224,
"byteOffset":336,
"target":34962
},
{
"buffer":0,
"byteLength":336,
"byteOffset":560,
"target":34962
},
{
"buffer":0,
"byteLength":336,
"byteOffset":896,
"target":34963
}
],
"buffers":[
{
"byteLength":1232,
"uri":"data:application/octet-stream;base64,AAAAAAAAAAAAAIC/17NdPwAAAAAAAAC/AAAAADO8JUAAAACAAAAAAGDbJkAAAACATVsxP22ABT84y8y++AM/P6maBD8AAACAZ3T8PwAAAAD0BxW+DAEDQAAAAAAAAACA17NdvwAAAAAAAAC/TVsxv22ABT84y8y++AM/v6maBD8AAACAZ3T8vwAAAAD0BxW+DAEDwAAAAAAAAACAAAAAAAAAAAAAAIA/17NdPwAAAAAAAAA/TVsxP22ABT84y8w+Z3T8PwAAAAD0BxU+17NdvwAAAAAAAAA/TVsxv22ABT84y8w+Z3T8vwAAAAD0BxU+AAAAADO8JcAAAACAAAAAAGDbJsAAAACATVsxP22ABb84y8y++AM/P6maBL8AAACATVsxv22ABb84y8y++AM/v6maBL8AAACATVsxP22ABb84y8w+TVsxv22ABb84y8w+AACAPlyPAj/Oauo+rkchPwAAgD4AAEA/AACAPgAAQD+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz+WIdU+vGwnP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz8AAIA+XI8CP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnPwAAgD4AAEA/AACAPgAAQD+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz8AAAAAAAAAAAAAgL9eS8g+AAAAAMiYa78AAAAAAACAPwAAAIAAAAAAAACAPwAAAIBxrBs/bHj6PqkTIL9qvDQ/mEw1PwAAAIB/2V0/AAAAgAmK/74AAIA/AAAAAAAAAIBeS8i+AAAAAMiYa79xrBu/bHj6PqkTIL9qvDS/mEw1PwAAAIB/2V2/AAAAgAmK/74AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD9eS8g+AAAAAMiYaz9xrBs/bHj6PqkTID9/2V0/AAAAgAmK/z5eS8i+AAAAAMiYaz9xrBu/bHj6PqkTID9/2V2/AAAAgAmK/z4AAAAAAACAvwAAAIAAAACAAACAvwAAAIBxrBs/bHj6vqkTIL9qvDQ/mEw1vwAAAIBxrBu/bHj6vqkTIL9qvDS/mEw1vwAAAIBxrBs/bHj6vqkTID9xrBu/bHj6vqkTID8AAAMABAAAAAQAAQAEAAMAAgAEAAIABQAEAAUABwAEAAcABgAEAAYAAQAAAAgACQAAAAkAAwAJAAoAAgAJAAIAAwAJAAsADAAJAAwACgAJAAgACwANAA4ADwANAA8AAwAPAAUAAgAPAAIAAwAPABAABwAPAAcABQAPAA4AEAANAAMAEgANABIAEQASAAMAAgASAAIACgASAAoADAASAAwAEwASABMAEQAAAAEAFgAAABYAFQAWABcAFAAWABQAFQAWAAYABwAWAAcAFwAWAAEABgAAABUAGAAAABgACAAYABUAFAAYABQAGQAYABkADAAYAAwACwAYAAsACAANABUAGgANABoADgAaABUAFAAaABQAFwAaABcABwAaAAcAEAAaABAADgANABEAGwANABsAFQAbABkAFAAbABQAFQAbABMADAAbAAwAGQAbABEAEwA="
}
]
}

105
web/dist/models/planet.gltf vendored Normal file
View File

@ -0,0 +1,105 @@
{
"asset": {
"generator": "Khronos glTF Blender I/O v3.5.30",
"version": "2.0"
},
"scene": 0,
"scenes": [
{
"name": "Scene",
"nodes": [0]
}
],
"nodes": [
{
"mesh": 0,
"name": "Icosphere"
}
],
"materials": [
{
"doubleSided": true,
"name": "Material.001",
"pbrMetallicRoughness": {
"metallicFactor": 0,
"roughnessFactor": 0.5
}
}
],
"meshes": [
{
"name": "Icosphere",
"primitives": [
{
"attributes": {
"POSITION": 0,
"TEXCOORD_0": 1,
"NORMAL": 2
},
"indices": 3,
"material": 0
}
]
}
],
"accessors": [
{
"bufferView": 0,
"componentType": 5126,
"count": 92,
"max": [0.9954347610473633, 1.0196396112442017, 1.0188261270523071],
"min": [-0.9746291637420654, -1, -0.9999999403953552],
"type": "VEC3"
},
{
"bufferView": 1,
"componentType": 5126,
"count": 92,
"type": "VEC2"
},
{
"bufferView": 2,
"componentType": 5126,
"count": 92,
"type": "VEC3"
},
{
"bufferView": 3,
"componentType": 5123,
"count": 378,
"type": "SCALAR"
}
],
"bufferViews": [
{
"buffer": 0,
"byteLength": 1104,
"byteOffset": 0,
"target": 34962
},
{
"buffer": 0,
"byteLength": 736,
"byteOffset": 1104,
"target": 34962
},
{
"buffer": 0,
"byteLength": 1104,
"byteOffset": 1840,
"target": 34962
},
{
"buffer": 0,
"byteLength": 756,
"byteOffset": 2944,
"target": 34963
}
],
"buffers": [
{
"byteLength": 3700,
"uri": "data:application/octet-stream;base64,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B86ZPtk9OT9m9+S+RpQGvwyTib6lLAO+OGd0v+F6lD1LyCc/93VAv/s6ED/LEKe+001CP1pkOz+Hpyc/pU5APuwvW79KewO/07xjvU2Ejb5m9+S+7MBZP02Ejb5m9+S+7MBZP9cScj3vycM9IGN+P8sQB740gGe/INLPPssQB740gGe/INLPPnL5P78CvAW/INLPPqW9Ib/vycM9S+pEP6W9Ib/vycM9S+pEPyV1gj3lYSG9gEh/v4Y4Nr+TOuE+9igMP0VHEj/Jdh4/zO4Jv0VHEj/Jdh4/zO4JvyL91j5Qjdc+8tJNP8pUQb7AWxC/8tJNPwAAFgAUAAUAFwAZAAQAFQAdAAMAHAAgAAIAHwAbAAUAGQAjACkAHgBTACkAUwBVAAcAHgAnAAgAIQAqACwAJABMACwATABKAAUAIwAmABgAJQBQABgAUAAJAAcAJwArAAgAKgAtACIALABKACIASgBJAAoALgA0AAsALwA3ADAAOABaADAAWgBXADEAOwBEADEARAA8AA8AMgA2ADsAEgBCADsAQgBEABEANQA+ABEAPgBAADYAMgBFADYARQA/ADsAOQASADsAMQA5ADEADQA5ADoAOAATADkADQBWADkAVgBYADAADAA4ADcAMwAQADcALwAzAC8ACgAzADQANQARADQALgA1AC4ADwA1ACQAMgAPACQALAAyACwADgAyAC0AMQAOAC0AKgAxACoADQAxAA0AKwAGAA0ABgBWACcAMABXACcAVwBbACcADAAwACgALwALACgAJQAvACUACgAvACYALgAKACYAIwAuACMADwAuACwALQAOACwAIgAtACIACAAtACoAKwANACoAIQArACEABwArACcAKQAMACcAHgApAB4AFQBSAB4AUgBTACUAJgAKACUAGAAmABgABQAmACMAJAAPACMAGQAkACQAGQBLACQASwBMABsAHwBNABsATQBHABkAGgBGABkARgBLAB8ACAAiACAAIQAIACAAHAAhABwABwAhAB0AHgAHAB0AFQAeABQAGAAJABQACQBRAB8AIgBJAB8ASQBNABkAFwAaABcAAQAaACUAKABUACUAVABQABQAFgAYABYABQAYAD0APABEAD8AQwBBAD8ARQBDAEUAPQBDAA4AMQA8AA4APAA9ADIADgA9ADIAPQBFAEgASQBKAEgASgBMAEsASABMAEcASQBIAEcATQBJAEsARgBIAE4ACQBQAE4AUABUAFMATwBVAFIATwBTAFEACQBOAFYAVwBZAFkAVwBaAAYAVwBWAAYAWwBXADgAOgBZADgAWQBaACsAJwBbACsAWwAGAA=="
}
]
}

131
web/dist/models/star.gltf vendored Normal file

File diff suppressed because one or more lines are too long

126
web/dist/models/station.gltf vendored Normal file

File diff suppressed because one or more lines are too long

159
web/dist/models/untitled.gltf vendored Normal file
View File

@ -0,0 +1,159 @@
{
"asset":{
"generator":"Khronos glTF Blender I/O v3.5.30",
"version":"2.0"
},
"extensionsUsed":[
"KHR_materials_clearcoat",
"KHR_materials_transmission",
"KHR_materials_emissive_strength",
"KHR_materials_specular",
"KHR_materials_ior"
],
"scene":0,
"scenes":[
{
"name":"Scene",
"nodes":[
0
]
}
],
"nodes":[
{
"mesh":0,
"name":"Cone",
"translation":[
0,
0.02206335961818695,
0
]
}
],
"materials":[
{
"doubleSided":true,
"emissiveFactor":[
1,
0.7336805926539774,
0.2730392248840733
],
"extensions":{
"KHR_materials_clearcoat":{
"clearcoatFactor":1,
"clearcoatRoughnessFactor":0.029999999329447746
},
"KHR_materials_transmission":{
"transmissionFactor":1
},
"KHR_materials_emissive_strength":{
"emissiveStrength":2.998099133671275
},
"KHR_materials_specular":{
"specularColorFactor":[
1,
1,
1
]
},
"KHR_materials_ior":{
"ior":1.4500000476837158
}
},
"name":"Material.001",
"pbrMetallicRoughness":{
"baseColorFactor":[
0.8000000715255737,
0.5938380360603333,
0.34376785159111023,
1
],
"roughnessFactor":0.5
}
}
],
"meshes":[
{
"name":"Cone",
"primitives":[
{
"attributes":{
"POSITION":0,
"TEXCOORD_0":1,
"NORMAL":2
},
"indices":3,
"material":0
}
]
}
],
"accessors":[
{
"bufferView":0,
"componentType":5126,
"count":28,
"max":[
2.046938896179199,
2.6071395874023438,
1
],
"min":[
-2.046938896179199,
-2.6071395874023438,
-1
],
"type":"VEC3"
},
{
"bufferView":1,
"componentType":5126,
"count":28,
"type":"VEC2"
},
{
"bufferView":2,
"componentType":5126,
"count":28,
"type":"VEC3"
},
{
"bufferView":3,
"componentType":5123,
"count":168,
"type":"SCALAR"
}
],
"bufferViews":[
{
"buffer":0,
"byteLength":336,
"byteOffset":0,
"target":34962
},
{
"buffer":0,
"byteLength":224,
"byteOffset":336,
"target":34962
},
{
"buffer":0,
"byteLength":336,
"byteOffset":560,
"target":34962
},
{
"buffer":0,
"byteLength":336,
"byteOffset":896,
"target":34963
}
],
"buffers":[
{
"byteLength":1232,
"uri":"data:application/octet-stream;base64,AAAAAAAAAAAAAIC/17NdPwAAAAAAAAC/AAAAADO8JUAAAACAAAAAAGDbJkAAAACATVsxP22ABT84y8y++AM/P6maBD8AAACAZ3T8PwAAAAD0BxW+DAEDQAAAAAAAAACA17NdvwAAAAAAAAC/TVsxv22ABT84y8y++AM/v6maBD8AAACAZ3T8vwAAAAD0BxW+DAEDwAAAAAAAAACAAAAAAAAAAAAAAIA/17NdPwAAAAAAAAA/TVsxP22ABT84y8w+Z3T8PwAAAAD0BxU+17NdvwAAAAAAAAA/TVsxv22ABT84y8w+Z3T8vwAAAAD0BxU+AAAAADO8JcAAAACAAAAAAGDbJsAAAACATVsxP22ABb84y8y++AM/P6maBL8AAACATVsxv22ABb84y8y++AM/v6maBL8AAACATVsxP22ABb84y8w+TVsxv22ABb84y8w+AACAPlyPAj/Oauo+rkchPwAAgD4AAEA/AACAPgAAQD+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz+WIdU+vGwnP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz8AAIA+XI8CP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnPwAAgD4AAEA/AACAPgAAQD+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz8AAAAAAAAAAAAAgL9eS8g+AAAAAMiYa78AAAAAAACAPwAAAIAAAAAAAACAPwAAAIBxrBs/bHj6PqkTIL9qvDQ/mEw1PwAAAIB/2V0/AAAAgAmK/74AAIA/AAAAAAAAAIBeS8i+AAAAAMiYa79xrBu/bHj6PqkTIL9qvDS/mEw1PwAAAIB/2V2/AAAAgAmK/74AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD9eS8g+AAAAAMiYaz9xrBs/bHj6PqkTID9/2V0/AAAAgAmK/z5eS8i+AAAAAMiYaz9xrBu/bHj6PqkTID9/2V2/AAAAgAmK/z4AAAAAAACAvwAAAIAAAACAAACAvwAAAIBxrBs/bHj6vqkTIL9qvDQ/mEw1vwAAAIBxrBu/bHj6vqkTIL9qvDS/mEw1vwAAAIBxrBs/bHj6vqkTID9xrBu/bHj6vqkTID8AAAMABAAAAAQAAQAEAAMAAgAEAAIABQAEAAUABwAEAAcABgAEAAYAAQAAAAgACQAAAAkAAwAJAAoAAgAJAAIAAwAJAAsADAAJAAwACgAJAAgACwANAA4ADwANAA8AAwAPAAUAAgAPAAIAAwAPABAABwAPAAcABQAPAA4AEAANAAMAEgANABIAEQASAAMAAgASAAIACgASAAoADAASAAwAEwASABMAEQAAAAEAFgAAABYAFQAWABcAFAAWABQAFQAWAAYABwAWAAcAFwAWAAEABgAAABUAGAAAABgACAAYABUAFAAYABQAGQAYABkADAAYAAwACwAYAAsACAANABUAGgANABoADgAaABUAFAAaABQAFwAaABcABwAaAAcAEAAaABAADgANABEAGwANABsAFQAbABkAFAAbABQAFQAbABMADAAbAAwAGQAbABEAEwA="
}
]
}

View File

@ -30,17 +30,23 @@ store.visit(parseInt(id) ?? 1);
<style scoped>
.star-view {
height: 100%;
display: flex;
justify-content: center;
gap: 1em;
align-items: center;
}
.star-model {
width: 100%;
aspect-ratio: 1/1;
flex-grow: 1;
max-height: 100%;
}
.star-info {
flex-grow: 2;
width: 100%;
}
@media (max-width: 720px) {