add super basic 3d

This commit is contained in:
zoe 2023-08-25 20:54:41 +02:00
parent d105a77c7d
commit 51c5f580e8
82 changed files with 528 additions and 73 deletions

View File

@ -2,6 +2,7 @@ module.exports = {
root: true,
env: {
node: true,
"vue/setup-compiler-macros": true
},
extends: [
"plugin:vue/vue3-essential",

View File

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

View File

@ -1 +0,0 @@
.star[data-v-b4d872b2]{position:absolute}.star-color[data-v-b4d872b2]{border-radius:9999999px;aspect-ratio:1/1;opacity:.8;background-color:var(--ddbaf688);filter:drop-shadow(0 0 7.5px var(--ddbaf688)) drop-shadow(0 0 10px white)}.star[data-v-b4d872b2]:hover{filter:drop-shadow(0 0 50px var(--ddbaf688)) drop-shadow(0 0 24px white)}[data-v-03f299f5]: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-03f299f5]{padding:420px;position:relative;left:0;top:0}.app[data-v-03f299f5]{display:flex;flex-direction:column}.nav[data-v-03f299f5]{width:100%;background-color:orange}

1
web/dist/css/300.23a5b1bf.css vendored Normal file
View File

@ -0,0 +1 @@
h1[data-v-39e997a1]{color:#f0d1aa;text-align:center}.error[data-v-39e997a1]{height:100%;display:flex;justify-content:center;align-items:center}

1
web/dist/css/325.291fe57b.css vendored Normal file
View File

@ -0,0 +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}

1
web/dist/css/858.dc8784e3.css vendored Normal file
View File

@ -0,0 +1 @@
.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/919.9ae3ce5e.css vendored Normal file
View File

@ -0,0 +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}

1
web/dist/css/app.9472f46c.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}@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}

View File

@ -1 +0,0 @@
*{padding:0;margin:0;font-family:ScanLine}@font-face{font-family:ScanLine;src:url(/fonts/ScanLine.cfa540f4.ttf)}html{height:100%;width:100%;background-color:#030f0a;color:#aaf0d1}.app[data-v-100e0134]{overflow:hidden;display:flex;flex-direction:column;height:100vh}.content[data-v-100e0134]{overflow:scroll;flex-grow:1;width:100%}nav[data-v-100e0134]{padding:1em;display:flex;justify-content:space-around;flex-wrap:wrap}nav a[data-v-100e0134]{text-decoration:none;font-size:large;color:#aaf0d1}nav a[data-v-100e0134]:focus,nav a[data-v-100e0134]:hover{color:#f0d1aa}

BIN
web/dist/fonts/HeadUpDaisy.17a30b4e.ttf vendored Normal file

Binary file not shown.

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 297 KiB

After

Width:  |  Height:  |  Size: 297 KiB

View File

Before

Width:  |  Height:  |  Size: 575 KiB

After

Width:  |  Height:  |  Size: 575 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 824 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
web/dist/img/background.08e112eb.webp vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 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.16ef6a1e.js"></script><script defer="defer" src="/js/app.06b1abfd.js"></script><link href="/css/app.d570f3d7.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.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>

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([[192],{6192:function(a,e,o){o.r(e),o.d(e,{default:function(){return f}});o(7658);var c=o(3396),t=o(9242),n=o(4870),r=o(3120),l=o(3824);const s=a=>((0,c.dD)("data-v-14187736"),a=a(),(0,c.Cn)(),a),i={class:"discover"},u=s((()=>(0,c._)("label",{for:"planet-color"},"pick a color",-1)));var v=(0,c.aZ)({__name:"DiscoverView",setup(a){const e=(0,r.g)(),o=(0,n.iH)("#f0d1aa");async function s(){await e.discover(o.value),console.log(o.value),l.Z.push(`/visit/${e.visiting?.core.id}`)}return(a,e)=>((0,c.wg)(),(0,c.iD)("div",i,[u,(0,c.wy)((0,c._)("input",{type:"color",id:"planet-color","onUpdate:modelValue":e[0]||(e[0]=a=>o.value=a),class:"colorpicker"},null,512),[[t.nr,o.value]]),(0,c._)("button",{onClick:e[1]||(e[1]=a=>s())},"discover!")]))}}),d=o(89);const p=(0,d.Z)(v,[["__scopeId","data-v-14187736"]]);var f=p}}]);
//# sourceMappingURL=192.3712522d.js.map

2
web/dist/js/218.9e9f87ec.js vendored Normal file

File diff suppressed because one or more lines are too long

1
web/dist/js/218.9e9f87ec.js.map vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
"use strict";(self["webpackChunkstarchart"]=self["webpackChunkstarchart"]||[]).push([[270],{5270:function(t,o,i){i.r(o),i.d(o,{default:function(){return _}});var s=i(3396),r=i(7139),n=i(4870),a=i(3120);const e=t=>((0,s.dD)("data-v-b4d872b2"),t=t(),(0,s.Cn)(),t),c=e((()=>(0,s._)("div",{class:"star-color"},null,-1)));function d(t,o,i,n,a,e){const d=(0,s.up)("router-link");return(0,s.wg)(),(0,s.j4)(d,{to:"/visit/"+t.id,class:"star",style:(0,r.j5)({left:`${t.positionRight}%`,top:`${t.positionBottom}%`,width:`${t.width}px`})},{default:(0,s.w5)((()=>[c])),_:1},8,["to","style"])}var l=i(9242);const p=(0,s.aZ)({name:"SmallStar",props:{color:String,id:Number,positionRight:Number,positionBottom:Number,width:Number}}),h=()=>{(0,l.sj)((t=>({ddbaf688:t.color})))},u=p.setup;p.setup=u?(t,o)=>(h(),u(t,o)):h;var w=p,b=i(89);const g=(0,b.Z)(w,[["render",d],["__scopeId","data-v-b4d872b2"]]);var f=g,m=(0,s.aZ)({__name:"ChartView",setup(t){const o=(0,a.g)();return o.fetchChart(),(t,i)=>((0,s.wg)(),(0,s.iD)("div",{class:"starchart",style:(0,r.j5)({width:64*(0,n.SU)(o).stars.length+"px",height:64*(0,n.SU)(o).stars.length+"px"})},[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)((0,n.SU)(o).stars,(t=>((0,s.wg)(),(0,s.j4)(f,{key:t.core.id,id:t.core.id,color:t.core.color,"position-bottom":t.position.bottom,"position-right":t.position.right,width:t.position.width},null,8,["id","color","position-bottom","position-right","width"])))),128))],4))}});const v=(0,b.Z)(m,[["__scopeId","data-v-03f299f5"]]);var _=v}}]);
//# sourceMappingURL=270.76995b00.js.map

File diff suppressed because one or more lines are too long

2
web/dist/js/300.2462eb59.js vendored Normal file
View File

@ -0,0 +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

1
web/dist/js/300.2462eb59.js.map vendored Normal file
View File

@ -0,0 +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":""}

2
web/dist/js/325.c318954d.js vendored Normal file
View File

@ -0,0 +1,2 @@
"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

1
web/dist/js/325.c318954d.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"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":""}

2
web/dist/js/752.9ea1aad8.js vendored Normal file

File diff suppressed because one or more lines are too long

1
web/dist/js/752.9ea1aad8.js.map vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@
"use strict";(self["webpackChunkstarchart"]=self["webpackChunkstarchart"]||[]).push([[814],{8814:function(r,t,a){a.r(t),a.d(t,{default:function(){return l}});var n=a(3396);const s={class:"about"},u=(0,n._)("h1",null,"This is an star page",-1),c=[u];function e(r,t){return(0,n.wg)(),(0,n.iD)("div",s,c)}var i=a(89);const h={},f=(0,i.Z)(h,[["render",e]]);var l=f}}]);
//# sourceMappingURL=814.b0b2b790.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"js/814.b0b2b790.js","mappings":"qLACOA,MAAM,S,GACTC,EAAAA,EAAAA,GAA6B,UAAzB,wBAAoB,G,GAAxBC,G,kCADFC,EAAAA,EAAAA,IAEM,MAFNC,EAEMC,E,aCFR,MAAMC,EAAS,CAAC,EAGVC,GAA2B,OAAgBD,EAAQ,CAAC,CAAC,SAASE,KAEpE,O","sources":["webpack://starchart/./src/views/StarView.vue","webpack://starchart/./src/views/StarView.vue?8918"],"sourcesContent":["<template>\n <div class=\"about\">\n <h1>This is an star page</h1>\n </div>\n</template>\n","import { render } from \"./StarView.vue?vue&type=template&id=4bd07fc8\"\nconst script = {}\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","_createElementVNode","_hoisted_2","_createElementBlock","_hoisted_1","_hoisted_3","script","__exports__","render"],"sourceRoot":""}

2
web/dist/js/858.3d9fc85d.js vendored Normal file
View File

@ -0,0 +1,2 @@
"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 +1 @@
{"version":3,"file":"js/192.3712522d.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-14187736\"),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(\"#f0d1aa\");\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=14187736&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-14187736\"]])\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/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":""}

2
web/dist/js/919.b3504ac5.js vendored Normal file
View File

@ -0,0 +1,2 @@
"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

1
web/dist/js/919.b3504ac5.js.map vendored Normal file
View File

@ -0,0 +1 @@
{"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.469295fb.js vendored Normal file

File diff suppressed because one or more lines are too long

1
web/dist/js/app.469295fb.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

File diff suppressed because one or more lines are too long

8
web/dist/js/chunk-vendors.503fd127.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

84
web/package-lock.json generated
View File

@ -13,6 +13,8 @@
"vue-router": "^4.0.3"
},
"devDependencies": {
"@types/color-convert": "^2.0.0",
"@types/three": "^0.155.1",
"@typescript-eslint/eslint-plugin": "^5.4.0",
"@typescript-eslint/parser": "^5.4.0",
"@vue/cli-plugin-babel": "~5.0.0",
@ -29,7 +31,9 @@
"prettier": "^2.4.1",
"sass": "^1.32.7",
"sass-loader": "^12.0.0",
"three": "^0.155.0",
"typescript": "~4.5.5",
"vue-dragscroll": "^4.0.5",
"vue-router": "^4.2.4"
}
},
@ -2152,6 +2156,12 @@
"node": ">=10.13.0"
}
},
"node_modules/@tweenjs/tween.js": {
"version": "18.6.4",
"resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-18.6.4.tgz",
"integrity": "sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==",
"dev": true
},
"node_modules/@types/body-parser": {
"version": "1.19.2",
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
@ -2171,6 +2181,21 @@
"@types/node": "*"
}
},
"node_modules/@types/color-convert": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.0.tgz",
"integrity": "sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==",
"dev": true,
"dependencies": {
"@types/color-name": "*"
}
},
"node_modules/@types/color-name": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
"dev": true
},
"node_modules/@types/connect": {
"version": "3.4.35",
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
@ -2360,12 +2385,38 @@
"@types/node": "*"
}
},
"node_modules/@types/stats.js": {
"version": "0.17.0",
"resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.0.tgz",
"integrity": "sha512-9w+a7bR8PeB0dCT/HBULU2fMqf6BAzvKbxFboYhmDtDkKPiyXYbjoe2auwsXlEFI7CFNMF1dCv3dFH5Poy9R1w==",
"dev": true
},
"node_modules/@types/three": {
"version": "0.155.1",
"resolved": "https://registry.npmjs.org/@types/three/-/three-0.155.1.tgz",
"integrity": "sha512-uNUwnz/wWRxahjIqTtDYQ1qdE1R1py21obxfuILkT+kKrjocMwRLQQA1l8nMxfQU7VXb7CXu04ucMo8OqZt4ZA==",
"dev": true,
"dependencies": {
"@tweenjs/tween.js": "~18.6.4",
"@types/stats.js": "*",
"@types/webxr": "*",
"fflate": "~0.6.9",
"lil-gui": "~0.17.0",
"meshoptimizer": "~0.18.1"
}
},
"node_modules/@types/webpack-env": {
"version": "1.18.1",
"resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.1.tgz",
"integrity": "sha512-D0HJET2/UY6k9L6y3f5BL+IDxZmPkYmPT4+qBrRdmRLYRuV0qNKizMgTvYxXZYn+36zjPeoDZAEYBCM6XB+gww==",
"dev": true
},
"node_modules/@types/webxr": {
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.4.tgz",
"integrity": "sha512-41gfGLTtqXZhcmoDlLDHqMJDuwAMwhHwXf9Q2job3TUBsvkNfPNI/3IWVEtLH4tyY1ElWtfwIaoNeqeEX238/Q==",
"dev": true
},
"node_modules/@types/ws": {
"version": "8.5.5",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz",
@ -6527,6 +6578,12 @@
"node": ">=0.8.0"
}
},
"node_modules/fflate": {
"version": "0.6.10",
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz",
"integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==",
"dev": true
},
"node_modules/figures": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
@ -7854,6 +7911,12 @@
"node": ">= 0.8.0"
}
},
"node_modules/lil-gui": {
"version": "0.17.0",
"resolved": "https://registry.npmjs.org/lil-gui/-/lil-gui-0.17.0.tgz",
"integrity": "sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ==",
"dev": true
},
"node_modules/lilconfig": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
@ -8273,6 +8336,12 @@
"node": ">= 8"
}
},
"node_modules/meshoptimizer": {
"version": "0.18.1",
"resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz",
"integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==",
"dev": true
},
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@ -11187,6 +11256,12 @@
"url": "https://opencollective.com/webpack"
}
},
"node_modules/three": {
"version": "0.155.0",
"resolved": "https://registry.npmjs.org/three/-/three-0.155.0.tgz",
"integrity": "sha512-sNgCYmDijnIqkD/bMfk+1pHg3YzsxW7V2ChpuP6HCQ8NiZr3RufsXQr8M3SSUMjW4hG+sUk7YbyuY0DncaDTJQ==",
"dev": true
},
"node_modules/thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
@ -11598,6 +11673,15 @@
"@vue/shared": "3.3.4"
}
},
"node_modules/vue-dragscroll": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/vue-dragscroll/-/vue-dragscroll-4.0.5.tgz",
"integrity": "sha512-1V4/2rUlNTM8vYC6/y2yfjKjOynuCfp1VRpj+IOGCcj8FWl4/3FMs9GBUJShd5mLoD4BvhY1xveezeuD+9i/mw==",
"dev": true,
"dependencies": {
"vue": "^3.2.37"
}
},
"node_modules/vue-eslint-parser": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz",

View File

@ -14,6 +14,8 @@
"vue-router": "^4.0.3"
},
"devDependencies": {
"@types/color-convert": "^2.0.0",
"@types/three": "^0.155.1",
"@typescript-eslint/eslint-plugin": "^5.4.0",
"@typescript-eslint/parser": "^5.4.0",
"@vue/cli-plugin-babel": "~5.0.0",
@ -30,7 +32,9 @@
"prettier": "^2.4.1",
"sass": "^1.32.7",
"sass-loader": "^12.0.0",
"three": "^0.155.0",
"typescript": "~4.5.5",
"vue-dragscroll": "^4.0.5",
"vue-router": "^4.2.4"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 824 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
web/public/images/nova.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
web/public/images/star.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -0,0 +1,121 @@
{
"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":{
"baseColorFactor":[
0.8000000715255737,
0.07428835332393646,
0.07428835332393646,
1
],
"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=="
}
]
}

View File

@ -1,6 +1,6 @@
<template>
<div class="app">
<div class="content">
<div class="content" v-dragscroll:nochildscroll>
<router-view class="page" />
</div>
<nav>
@ -18,12 +18,12 @@
}
@font-face {
font-family: ScanLine;
src: url("@/assets/ScanLine.ttf");
font-family: Daisy;
src: url("@/assets/HeadUpDaisy.ttf");
}
* {
font-family: ScanLine;
font-family: Daisy;
}
html {
@ -32,9 +32,23 @@ html {
background-color: #030f0a;
color: #aaf0d1;
}
canvas {
image-rendering: pixelated;
}
</style>
<style scoped>
@keyframes movebg {
from {
background-position: 0px 0px;
}
to {
background-position: 0px 1080px;
}
}
.app {
overflow: hidden;
display: flex;
@ -42,12 +56,18 @@ html {
height: 100vh;
}
.content {
overflow: scroll;
overflow: hidden;
flex-grow: 1;
width: 100%;
background-image: url("../public/images/background.webp");
animation-name: movebg;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-duration: 30s;
}
nav {
border-top-style: solid;
padding: 1em;
display: flex;
justify-content: space-around;

Binary file not shown.

View File

@ -0,0 +1,81 @@
<template>
<div class="weh">
<div class="star-model">
<canvas id="can" />
<div class="data">wawa</div>
</div>
</div>
</template>
<script setup lang="js">
import * as THREE from "three";
import { PropType, onMounted } from "vue";
import { Star } from "@/swagger";
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
const props = defineProps({
star: { type: Star, required: true },
});
onMounted(async () => {
const canvas = document.getElementById("can");
console.log(canvas);
const loader = new GLTFLoader();
const renderer = new THREE.WebGLRenderer({ canvas: canvas ?? undefined });
renderer.setClearAlpha(0.0);
const scene = new THREE.Scene();
const model = await loader.loadAsync("/models/generic.gltf");
model.scene.traverse((child) => {
if (child.isMesh) {
child.material = new THREE.MeshToonMaterial({
map: child.map != undefined ? child.map : null,
color: child.material.color,
});
scene.add(model.scene);
}
});
const camera = new THREE.PerspectiveCamera(10);
camera.position.z = 20;
// set up light
const rightLight = new THREE.PointLight(0xd1aaf0);
rightLight.position.set(5, 5, 5);
rightLight.intensity = 100;
scene.add(rightLight);
const leftLight = new THREE.PointLight(0xaaf0d1);
leftLight.position.set(-5, 0, 5);
leftLight.intensity = 150;
scene.add(leftLight);
scene.add(model.scene);
scene.add(camera);
function resizeCanvas() {
const width = canvas?.clientWidth;
const height = canvas?.clientHeight;
renderer.setSize(width, height, false);
camera.aspect = width / height;
camera.updateProjectionMatrix();
renderer.setPixelRatio(1 / (width / 125));
}
function animate() {
model.scene.rotation.y += 0.01;
requestAnimationFrame(animate);
resizeCanvas();
renderer.render(scene, camera);
}
resizeCanvas();
animate();
})
</script>
<style>
canvas {
width: 100%;
aspect-ratio: 1/1;
}
</style>

View File

@ -1,29 +1,38 @@
<template>
<router-link
:to="'/visit/' + id"
:to="'/visit/' + star.core.id"
class="star"
:style="{
left: `${positionRight}%`,
top: `${positionBottom}%`,
width: `${width}px`,
left: `${star.position.bottom}%`,
top: `${star.position.right}%`,
width: `${star.position.width}px`,
filter: `drop-shadow(0 0 5px ${
star.core.color
}) drop-shadow(0 0 10px white) sepia(1) hue-rotate(${hue - 38}deg)`,
}"
>
<div class="star-color"></div>
<div class="star-color">
<img :src="image" />
</div>
</router-link>
</template>
<script lang="ts">
import { defineComponent } from "vue";
<script setup lang="ts">
import { computed, PropType } from "vue";
import { Star } from "@/swagger";
import { getHue } from "@/scripts/convert_color";
export default defineComponent({
name: "SmallStar",
props: {
color: String,
id: Number,
positionRight: Number,
positionBottom: Number,
width: Number,
},
const props = defineProps({
star: { type: Object as PropType<Star>, required: true },
});
const image = computed(() => {
var src = props.star.kind.toString().toLowerCase();
return `/images/${src}.webp`;
});
const hue = computed(() => {
return getHue(props.star.core.color);
});
</script>
@ -32,15 +41,14 @@ export default defineComponent({
position: absolute;
}
img {
width: 100%;
aspect-ratio: 1/1;
}
.star-color {
border-radius: 9999999px;
aspect-ratio: 1/1;
opacity: 0.8;
background-color: v-bind(color);
filter: drop-shadow(0 0 7.5px v-bind(color)) drop-shadow(0 0 10px white);
}
.star:hover {
filter: drop-shadow(0 0 50px v-bind(color)) drop-shadow(0 0 24px white);
}
</style>

View File

@ -3,9 +3,12 @@ import { createPinia } from "pinia";
import "vue-router";
import App from "./App.vue";
import router from "./router";
import VueDragscroll from "vue-dragscroll";
const pinia = createPinia();
const app = createApp(App).use(router);
const app = createApp(App);
app.use(pinia);
app.use(router);
app.use(VueDragscroll);
app.mount("#app");

View File

@ -16,6 +16,11 @@ const routes: Array<RouteRecordRaw> = [
name: "starchart 🗺️",
component: () => import("../views/ChartView.vue"),
},
{
path: "/:pathMatch(.*)*",
name: "error 404 😓",
component: () => import("../views/NotFoundVue.vue"),
},
];
const router = createRouter({

View File

@ -0,0 +1,6 @@
import { hex } from "color-convert";
export function getHue(hexString: string): number {
const color = hex.hsv(hexString);
return color[0];
}

View File

@ -57,7 +57,10 @@ export const useChartStore = defineStore({
this.loading = true;
await new StarsApi(conf())
.visit({ planetId: id })
.then((star) => this.stars.push(star))
.then((star) => {
this.stars.push(star);
this.visiting = star;
})
.catch((e) => {
console.error(e);
})

View File

@ -3,6 +3,7 @@ apis/StarsApi.ts
apis/index.ts
index.ts
models/DiscoveryLog.ts
models/Kind.ts
models/Position.ts
models/Protostar.ts
models/Size.ts

View File

@ -0,0 +1,44 @@
/* tslint:disable */
/* eslint-disable */
/**
* starchart
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { exists, mapValues } from '../runtime';
/**
*
* @export
* @interface Kind
*/
export interface Kind {
}
/**
* Check if a given object implements the Kind interface.
*/
export function instanceOfKind(value: object): boolean {
let isInstance = true;
return isInstance;
}
export function KindFromJSON(json: any): Kind {
return KindFromJSONTyped(json, false);
}
export function KindFromJSONTyped(json: any, ignoreDiscriminator: boolean): Kind {
return json;
}
export function KindToJSON(value?: Kind | null): any {
return value;
}

View File

@ -13,6 +13,12 @@
*/
import { exists, mapValues } from '../runtime';
import type { Kind } from './Kind';
import {
KindFromJSON,
KindFromJSONTyped,
KindToJSON,
} from './Kind';
import type { Position } from './Position';
import {
PositionFromJSON,
@ -44,6 +50,12 @@ export interface Star {
* @memberof Star
*/
core: Protostar;
/**
*
* @type {Kind}
* @memberof Star
*/
kind: Kind;
/**
*
* @type {Position}
@ -64,6 +76,7 @@ export interface Star {
export function instanceOfStar(value: object): boolean {
let isInstance = true;
isInstance = isInstance && "core" in value;
isInstance = isInstance && "kind" in value;
isInstance = isInstance && "position" in value;
isInstance = isInstance && "size" in value;
@ -81,6 +94,7 @@ export function StarFromJSONTyped(json: any, ignoreDiscriminator: boolean): Star
return {
'core': ProtostarFromJSON(json['core']),
'kind': KindFromJSON(json['kind']),
'position': PositionFromJSON(json['position']),
'size': SizeFromJSON(json['size']),
};
@ -96,6 +110,7 @@ export function StarToJSON(value?: Star | null): any {
return {
'core': ProtostarToJSON(value.core),
'kind': KindToJSON(value.kind),
'position': PositionToJSON(value.position),
'size': SizeToJSON(value.size),
};

View File

@ -1,6 +1,7 @@
/* tslint:disable */
/* eslint-disable */
export * from './DiscoveryLog';
export * from './Kind';
export * from './Position';
export * from './Protostar';
export * from './Size';

View File

@ -2,19 +2,11 @@
<div
class="starchart"
:style="{
width: `${store.stars.length * 64}px`,
height: `${store.stars.length * 64}px`,
width: `${store.stars.length * 24}px`,
height: `${store.stars.length * 24}px`,
}"
>
<SmallStar
v-for="star in store.stars"
:key="star.core.id"
:id="star.core.id"
:color="star.core.color"
:position-bottom="star.position.bottom"
:position-right="star.position.right"
:width="star.position.width"
/>
<SmallStar v-for="star in store.stars" :key="star.core.id" :star="star" />
</div>
</template>
@ -27,7 +19,9 @@ store.fetchChart();
<style scoped lang="scss">
@import "@/assets/scss/colors.scss";
.starchart {
cursor: grab;
padding: 420px;
position: relative;
left: 0px;

View File

@ -12,7 +12,7 @@ import { useChartStore } from "@/state/stars";
import router from "@/router";
const store = useChartStore();
const color = ref("#f0d1aa");
const color = ref("#aaf0d1");
async function send() {
await store.discover(color.value);
@ -34,8 +34,30 @@ async function send() {
align-items: center;
}
.colorpicker {
border-style: none;
.colorpicker,
::-moz-color-swatch {
cursor: pointer;
border: none;
border-color: transparent;
background-color: transparent;
outline-style: none;
}
input[type="color"]::-webkit-color-swatch-wrapper {
padding: 0;
}
input[type="color"]::-webkit-color-swatch {
border: none;
}
input[type="color"] {
-webkit-appearance: none;
border: none;
cursor: pointer;
}
label {
color: #aaf0d1;
cursor: pointer;
}
button {

View File

@ -0,0 +1,19 @@
<template>
<div class="error">
<h1>you're all alone here...</h1>
</div>
</template>
<style scoped>
h1 {
color: #f0d1aa;
text-align: center;
}
.error {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
</style>

View File

@ -1,5 +1,19 @@
<template>
<div class="about">
<h1>This is an star page</h1>
<div>
<Suspense>
<LargeStar v-if="store.visiting" :star="store.visiting" />
</Suspense>
</div>
</template>
<script setup lang="ts">
import LargeStar from "@/components/LargeStar.vue";
import { useChartStore } from "@/state/stars";
import { useRoute } from "vue-router";
const route = useRoute();
const id: string = route.params.id.toString();
const store = useChartStore();
store.visit(parseInt(id) ?? 1);
</script>

View File

@ -1,5 +1,6 @@
{
"compilerOptions": {
"allowJs": true,
"target": "esnext",
"module": "esnext",
"strict": true,