Compare commits
2 Commits
6d46875546
...
eaa90703a1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eaa90703a1 | ||
|
|
0e36cd30cc |
@@ -34,16 +34,6 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||||
// Keeps server from crashing if a request fails
|
|
||||||
// defer func() {
|
|
||||||
// if r := recover(); r != nil {
|
|
||||||
// log.Error().
|
|
||||||
// Interface("panic_reason", r).
|
|
||||||
// Bytes("stack_trace", debug.Stack()).
|
|
||||||
// Msg("panic in http goroutine")
|
|
||||||
// }
|
|
||||||
// }()
|
|
||||||
|
|
||||||
if(loggedIn(w, r)) {
|
if(loggedIn(w, r)) {
|
||||||
log.Info().Msg("logged")
|
log.Info().Msg("logged")
|
||||||
if isWebSocketRequest(r) {
|
if isWebSocketRequest(r) {
|
||||||
@@ -106,7 +96,8 @@ func handleSite(w http.ResponseWriter, r *http.Request) {
|
|||||||
handlers.HandleLogout(w, r)
|
handlers.HandleLogout(w, r)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if strings.HasPrefix(r.URL.Path, "/_") {
|
if strings.Contains(r.URL.Path, "/_") {
|
||||||
|
log.Debug().Msg("this is what it is")
|
||||||
handleAsset(w, r)
|
handleAsset(w, r)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -117,8 +108,10 @@ func handleSite(w http.ResponseWriter, r *http.Request) {
|
|||||||
func serveSiteFiles(w http.ResponseWriter, r *http.Request) {
|
func serveSiteFiles(w http.ResponseWriter, r *http.Request) {
|
||||||
path := r.URL.Path
|
path := r.URL.Path
|
||||||
|
|
||||||
if path == "/" {
|
if(strings.Contains(path, "75820185")) {
|
||||||
|
_, after, _ := strings.Cut(path, "75820185")
|
||||||
|
path = after
|
||||||
|
} else {
|
||||||
// Required for sign in / sign out redirect to work properly
|
// Required for sign in / sign out redirect to work properly
|
||||||
w.Header().Set("Cache-Control", "no-store, no-cache, must-revalidate, proxy-revalidate")
|
w.Header().Set("Cache-Control", "no-store, no-cache, must-revalidate, proxy-revalidate")
|
||||||
w.Header().Set("Pragma", "no-cache")
|
w.Header().Set("Pragma", "no-cache")
|
||||||
@@ -126,8 +119,6 @@ func serveSiteFiles(w http.ResponseWriter, r *http.Request) {
|
|||||||
w.Header().Set("Surrogate-Control", "no-store")
|
w.Header().Set("Surrogate-Control", "no-store")
|
||||||
|
|
||||||
path = "/index.html"
|
path = "/index.html"
|
||||||
} else if !strings.Contains(path, ".") {
|
|
||||||
path = filepath.Join("/pages", path) + ".html"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
filePath := filepath.Join("../ui/site", path)
|
filePath := filepath.Join("../ui/site", path)
|
||||||
@@ -136,8 +127,8 @@ func serveSiteFiles(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func handleAsset(w http.ResponseWriter, r *http.Request) {
|
func handleAsset(w http.ResponseWriter, r *http.Request) {
|
||||||
path := r.URL.Path
|
_, after, _ := strings.Cut(r.URL.Path, "/_")
|
||||||
filePath := filepath.Join("../ui", path)
|
filePath := filepath.Join("../ui", "/_" + after)
|
||||||
log.Debug().Msgf("serving asset: %s", filePath)
|
log.Debug().Msgf("serving asset: %s", filePath)
|
||||||
http.ServeFile(w, r, filePath)
|
http.ServeFile(w, r, filePath)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
/* $ NAVIGATION */
|
||||||
|
|
||||||
|
window.navigateTo = function(url) {
|
||||||
|
window.history.pushState({}, '', url);
|
||||||
|
}
|
||||||
|
|
||||||
/* $ SELECTOR */
|
/* $ SELECTOR */
|
||||||
|
|
||||||
HTMLElement.prototype.$ = function(selector) {
|
HTMLElement.prototype.$ = function(selector) {
|
||||||
@@ -259,21 +265,29 @@ HTMLElement.prototype.padding = function(one, two, three = "px") {
|
|||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement.prototype.paddingTop = function(value, unit = "px") {
|
HTMLElement.prototype.paddingTop = function(value, unit = "px") {
|
||||||
|
if ((typeof value !== 'number' && value !== "auto") || Number.isNaN(value))
|
||||||
|
throw new Error(`Invalid value: ${value}. Expected a number.`);
|
||||||
this.style.paddingTop = value + unit
|
this.style.paddingTop = value + unit
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
HTMLElement.prototype.paddingLeft = function(value, unit = "px") {
|
HTMLElement.prototype.paddingLeft = function(value, unit = "px") {
|
||||||
|
if ((typeof value !== 'number' && value !== "auto") || Number.isNaN(value))
|
||||||
|
throw new Error(`Invalid value: ${value}. Expected a number.`);
|
||||||
this.style.paddingLeft = value + unit
|
this.style.paddingLeft = value + unit
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
HTMLElement.prototype.paddingBottom = function(value, unit = "px") {
|
HTMLElement.prototype.paddingBottom = function(value, unit = "px") {
|
||||||
|
if ((typeof value !== 'number' && value !== "auto") || Number.isNaN(value))
|
||||||
|
throw new Error(`Invalid value: ${value}. Expected a number.`);
|
||||||
this.style.paddingBottom = value + unit
|
this.style.paddingBottom = value + unit
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
HTMLElement.prototype.paddingRight = function(value, unit = "px") {
|
HTMLElement.prototype.paddingRight = function(value, unit = "px") {
|
||||||
|
if ((typeof value !== 'number' && value !== "auto") || Number.isNaN(value))
|
||||||
|
throw new Error(`Invalid value: ${value}. Expected a number.`);
|
||||||
this.style.paddingRight = value + unit
|
this.style.paddingRight = value + unit
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
@@ -303,21 +317,29 @@ HTMLElement.prototype.margin = function(direction, value, unit = "px") {
|
|||||||
};
|
};
|
||||||
|
|
||||||
HTMLElement.prototype.marginTop = function(value, unit = "px") {
|
HTMLElement.prototype.marginTop = function(value, unit = "px") {
|
||||||
|
if ((typeof value !== 'number' && value !== "auto") || Number.isNaN(value))
|
||||||
|
throw new Error(`Invalid value: ${value}. Expected a number.`);
|
||||||
this.style.marginTop = value + unit
|
this.style.marginTop = value + unit
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
HTMLElement.prototype.marginLeft = function(value, unit = "px") {
|
HTMLElement.prototype.marginLeft = function(value, unit = "px") {
|
||||||
|
if ((typeof value !== 'number' && value !== "auto") || Number.isNaN(value))
|
||||||
|
throw new Error(`Invalid value: ${value}. Expected a number.`);
|
||||||
this.style.marginLeft = value + unit
|
this.style.marginLeft = value + unit
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
HTMLElement.prototype.marginBottom = function(value, unit = "px") {
|
HTMLElement.prototype.marginBottom = function(value, unit = "px") {
|
||||||
|
if ((typeof value !== 'number' && value !== "auto") || Number.isNaN(value))
|
||||||
|
throw new Error(`Invalid value: ${value}. Expected a number.`);
|
||||||
this.style.marginBottom = value + unit
|
this.style.marginBottom = value + unit
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
HTMLElement.prototype.marginRight = function(value, unit = "px") {
|
HTMLElement.prototype.marginRight = function(value, unit = "px") {
|
||||||
|
if ((typeof value !== 'number' && value !== "auto") || Number.isNaN(value))
|
||||||
|
throw new Error(`Invalid value: ${value}. Expected a number.`);
|
||||||
this.style.marginRight = value + unit
|
this.style.marginRight = value + unit
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
@@ -351,6 +373,9 @@ HTMLElement.prototype.minHeight = function(value, unit = "px") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
HTMLElement.prototype.fontSize = function(value, unit = "px") {
|
HTMLElement.prototype.fontSize = function(value, unit = "px") {
|
||||||
|
if ((typeof value !== 'number' && value !== "auto") || Number.isNaN(value))
|
||||||
|
throw new Error(`Invalid value: ${value}. Expected a number.`);
|
||||||
|
|
||||||
switch(value) {
|
switch(value) {
|
||||||
case "6xl":
|
case "6xl":
|
||||||
value = "3.75"; unit = "rem"
|
value = "3.75"; unit = "rem"
|
||||||
@@ -761,6 +786,5 @@ HTMLElement.prototype.attr = function(attributes) {
|
|||||||
for (const [key, value] of Object.entries(attributes)) {
|
for (const [key, value] of Object.entries(attributes)) {
|
||||||
this.setAttribute(key, value);
|
this.setAttribute(key, value);
|
||||||
}
|
}
|
||||||
console.log(this)
|
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,14 +1,44 @@
|
|||||||
css(`
|
css(`
|
||||||
forum- {
|
forum- input::placeholder {
|
||||||
width: 100%; height: 100%;
|
font-size: 0.9em;
|
||||||
|
color: var(--accent);
|
||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
export default class Forum extends HTMLElement {
|
class Forum extends Shadow {
|
||||||
|
|
||||||
|
render() {
|
||||||
|
ZStack(() => {
|
||||||
|
HStack(() => {
|
||||||
|
input("Search...", "50vw")
|
||||||
|
.attr({
|
||||||
|
"type": "text"
|
||||||
|
})
|
||||||
|
.fontSize(1.1, em)
|
||||||
|
.paddingLeft(1.3, em)
|
||||||
|
.background("transparent")
|
||||||
|
.border("1px solid var(--accent)")
|
||||||
|
.outline("none")
|
||||||
|
.color("var(--accent)")
|
||||||
|
.borderRadius(10, px)
|
||||||
|
button("Search")
|
||||||
|
.marginLeft(2, em)
|
||||||
|
.borderRadius(10, px)
|
||||||
|
.background("transparent")
|
||||||
|
.border("1px solid var(--accent)")
|
||||||
|
.color("var(--accent)")
|
||||||
|
})
|
||||||
|
.x(50, vw).y(5, vh)
|
||||||
|
.position("absolute")
|
||||||
|
.transform("translateX(-50%)")
|
||||||
|
})
|
||||||
|
.width(100, "%")
|
||||||
|
.height(100, "%")
|
||||||
|
}
|
||||||
|
|
||||||
connectedCallback() {
|
connectedCallback() {
|
||||||
this.innerHTML += /* html */`<p style="position: fixed; top: 50vh; left: 50vw; transform: translate(-50%, -50%)">Coming Soon!</p>`
|
// Optional additional logic
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
customElements.define("forum-", Forum)
|
registerShadow(Forum)
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
css(`
|
||||||
|
market- input::placeholder {
|
||||||
|
font-size: 0.9em;
|
||||||
|
color: var(--accent);
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
class Market extends Shadow {
|
class Market extends Shadow {
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@@ -7,11 +14,19 @@ class Market extends Shadow {
|
|||||||
.attr({
|
.attr({
|
||||||
"type": "text"
|
"type": "text"
|
||||||
})
|
})
|
||||||
|
.fontSize(1.1, em)
|
||||||
|
.paddingLeft(1.3, em)
|
||||||
.background("transparent")
|
.background("transparent")
|
||||||
.border("1px solid var(--accent)")
|
.border("1px solid var(--accent)")
|
||||||
.outline("none")
|
.outline("none")
|
||||||
.color("var(--accent)")
|
.color("var(--accent)")
|
||||||
|
.borderRadius(10, px)
|
||||||
button("Search")
|
button("Search")
|
||||||
|
.marginLeft(2, em)
|
||||||
|
.borderRadius(10, px)
|
||||||
|
.background("transparent")
|
||||||
|
.border("1px solid var(--accent)")
|
||||||
|
.color("var(--accent)")
|
||||||
})
|
})
|
||||||
.x(50, vw).y(5, vh)
|
.x(50, vw).y(5, vh)
|
||||||
.position("absolute")
|
.position("absolute")
|
||||||
|
|||||||
@@ -1,15 +1,44 @@
|
|||||||
css(`
|
css(`
|
||||||
messages- {
|
messages- input::placeholder {
|
||||||
width: 100%; height: 100%;
|
font-size: 0.9em;
|
||||||
|
color: var(--accent);
|
||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
export default class Messages extends HTMLElement {
|
class Messages extends Shadow {
|
||||||
|
|
||||||
|
render() {
|
||||||
|
ZStack(() => {
|
||||||
|
HStack(() => {
|
||||||
|
input("Search...", "50vw")
|
||||||
|
.attr({
|
||||||
|
"type": "text"
|
||||||
|
})
|
||||||
|
.fontSize(1.1, em)
|
||||||
|
.paddingLeft(1.3, em)
|
||||||
|
.background("transparent")
|
||||||
|
.border("1px solid var(--accent)")
|
||||||
|
.outline("none")
|
||||||
|
.color("var(--accent)")
|
||||||
|
.borderRadius(10, px)
|
||||||
|
button("Search")
|
||||||
|
.marginLeft(2, em)
|
||||||
|
.borderRadius(10, px)
|
||||||
|
.background("transparent")
|
||||||
|
.border("1px solid var(--accent)")
|
||||||
|
.color("var(--accent)")
|
||||||
|
})
|
||||||
|
.x(50, vw).y(5, vh)
|
||||||
|
.position("absolute")
|
||||||
|
.transform("translateX(-50%)")
|
||||||
|
})
|
||||||
|
.width(100, "%")
|
||||||
|
.height(100, "%")
|
||||||
|
}
|
||||||
|
|
||||||
connectedCallback() {
|
connectedCallback() {
|
||||||
console.log("rendeirng messages")
|
// Optional additional logic
|
||||||
this.innerHTML += /* html */`<p style="position: fixed; top: 50vh; left: 50vw; transform: translate(-50%, -50%)">Coming Soon!</p>`
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
customElements.define("messages-", Messages)
|
registerShadow(Messages)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ css(`
|
|||||||
color: var(--tan);
|
color: var(--tan);
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
transition: transform .3s;
|
transition: transform .3s;
|
||||||
display: flex; gap: 2em; position: fixed; left: 50vw; bottom: 3em;
|
display: flex; gap: 2em; position: fixed; left: 50vw; bottom: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
app-menu.minimized {
|
app-menu.minimized {
|
||||||
@@ -37,18 +37,65 @@ css(`
|
|||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
transform: translateY(-10%)
|
transform: translateY(-10%)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#divider.minimized {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
registerShadow(
|
registerShadow(
|
||||||
|
|
||||||
class AppMenu extends Shadow {
|
class AppMenu extends Shadow {
|
||||||
|
selected;
|
||||||
|
|
||||||
|
constructor(selected) {
|
||||||
|
super()
|
||||||
|
this.selected = selected
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
p("Forum")
|
VStack(() => {
|
||||||
p("Messages")
|
HStack(() => {
|
||||||
p("Market")
|
p("Forum")
|
||||||
|
p("Messages")
|
||||||
|
p("Market")
|
||||||
|
})
|
||||||
|
.justifyContent("center")
|
||||||
|
.gap("1.5em")
|
||||||
|
|
||||||
|
img("_/images/divider.svg", "40vw")
|
||||||
|
.attr({
|
||||||
|
"id": "divider",
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.gap("0.5em")
|
||||||
|
|
||||||
|
if(this.selected) {
|
||||||
|
this.styleMinimized()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
styleMaximized() {
|
||||||
|
$$("app-menu p").forEach((el) => {
|
||||||
|
el.classList.remove("selected")
|
||||||
|
})
|
||||||
|
this.classList.remove("minimized")
|
||||||
|
$("#divider").style.display = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
styleMinimized() {
|
||||||
|
$$("app-menu p").forEach((el) => {
|
||||||
|
if(el.innerText !== this.selected) {
|
||||||
|
el.classList.remove("selected")
|
||||||
|
} else {
|
||||||
|
el.classList.add("selected")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.classList.add("minimized")
|
||||||
|
$("#divider").style.display = "none"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
connectedCallback() {
|
connectedCallback() {
|
||||||
Array.from(this.querySelectorAll("p")).forEach((el) => {
|
Array.from(this.querySelectorAll("p")).forEach((el) => {
|
||||||
el.addEventListener("mousedown", (e) => {
|
el.addEventListener("mousedown", (e) => {
|
||||||
@@ -60,22 +107,18 @@ class AppMenu extends Shadow {
|
|||||||
if(!target.matches("app-menu p")) {
|
if(!target.matches("app-menu p")) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
$$("app-menu p").forEach((el) => {
|
|
||||||
if(el.innerText !== target.innerText) {
|
|
||||||
el.classList.remove("selected")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
target.classList.remove("touched")
|
target.classList.remove("touched")
|
||||||
|
|
||||||
if(target.classList.contains("selected")) {
|
if(target.classList.contains("selected")) {
|
||||||
target.classList.remove("selected")
|
this.selected = ""
|
||||||
$("app-menu").classList.remove("minimized")
|
this.styleMaximized(target)
|
||||||
$("#divider").classList.remove("minimized")
|
window.navigateTo("/")
|
||||||
$("app-window").close()
|
$("app-window").close()
|
||||||
} else {
|
} else {
|
||||||
target.classList.add("selected")
|
this.selected = target.innerText
|
||||||
$("app-menu").classList.add("minimized")
|
this.styleMinimized(target)
|
||||||
$("#divider").classList.add("minimized")
|
window.navigateTo("/app/" + target.innerText.toLowerCase())
|
||||||
$("app-window").open(target.innerText)
|
$("app-window").open(target.innerText)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -5,6 +5,11 @@ import "../apps/Market.js"
|
|||||||
class AppWindow extends Shadow {
|
class AppWindow extends Shadow {
|
||||||
app;
|
app;
|
||||||
|
|
||||||
|
constructor(app) {
|
||||||
|
super()
|
||||||
|
this.app = app
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
ZStack(() => {
|
ZStack(() => {
|
||||||
console.log("happening")
|
console.log("happening")
|
||||||
|
|||||||
@@ -4,12 +4,6 @@ import "./ProfileButton.js"
|
|||||||
import "./InputBox.js"
|
import "./InputBox.js"
|
||||||
import "./Sidebar.js"
|
import "./Sidebar.js"
|
||||||
|
|
||||||
css(`
|
|
||||||
#divider.minimized {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
`)
|
|
||||||
|
|
||||||
class Home extends Shadow {
|
class Home extends Shadow {
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@@ -23,7 +17,24 @@ class Home extends Shadow {
|
|||||||
.backgroundPosition("48% 65%")
|
.backgroundPosition("48% 65%")
|
||||||
.backgroundRepeat("no-repeat")
|
.backgroundRepeat("no-repeat")
|
||||||
|
|
||||||
AppWindow()
|
switch(window.location.pathname) {
|
||||||
|
case "/":
|
||||||
|
AppWindow()
|
||||||
|
AppMenu()
|
||||||
|
break
|
||||||
|
case "/app/forum":
|
||||||
|
AppWindow("Forum")
|
||||||
|
AppMenu("Forum")
|
||||||
|
break;
|
||||||
|
case "/app/messages":
|
||||||
|
AppWindow("Messages")
|
||||||
|
AppMenu("Messages")
|
||||||
|
break;
|
||||||
|
case "/app/market":
|
||||||
|
AppWindow("Market")
|
||||||
|
AppMenu("Market")
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
ProfileButton()
|
ProfileButton()
|
||||||
.zIndex(1)
|
.zIndex(1)
|
||||||
@@ -39,20 +50,22 @@ class Home extends Shadow {
|
|||||||
|
|
||||||
a("/signout", "Sign Out")
|
a("/signout", "Sign Out")
|
||||||
.position("fixed")
|
.position("fixed")
|
||||||
.top("2em")
|
.top("3em")
|
||||||
.right("2em")
|
.right("2em")
|
||||||
.background("var(--tan)")
|
.background("transparent")
|
||||||
.color("var(--red)")
|
.border("1px solid var(--tan)")
|
||||||
|
.color("var(--tan)")
|
||||||
.borderRadius(5, px)
|
.borderRadius(5, px)
|
||||||
|
.onHover(function (hovering) {
|
||||||
AppMenu()
|
console.log('hovering', hovering, this)
|
||||||
|
if(hovering) {
|
||||||
img("_/images/divider.svg", "40vw")
|
this.style.background = "var(--tan)"
|
||||||
.attr({"id": "divider"})
|
this.style.color = "black"
|
||||||
.position("fixed")
|
} else {
|
||||||
.bottom("2em")
|
this.style.background = ""
|
||||||
.left("50vw")
|
this.style.color = "var(--tan)"
|
||||||
.transform("translateX(-50%)")
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
<head>
|
<head>
|
||||||
<title>Hyperia</title>
|
<title>Hyperia</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link rel="icon" href="_/icons/logo.svg">
|
<link rel="icon" href="/_/icons/logo.svg">
|
||||||
<link rel="stylesheet" href="_/code/shared.css">
|
<link rel="stylesheet" href="/_/code/shared.css">
|
||||||
<script src="_/code/quill.js"></script>
|
<script src="/_/code/quill.js"></script>
|
||||||
<script type="module" src="index.js"></script>
|
<script type="module" src="75820185/index.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin: 0px">
|
<body style="margin: 0px">
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<title>Hyperia</title>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link rel="icon" href="_/icons/logo.svg">
|
|
||||||
<link rel="stylesheet" href="_/code/shared.css">
|
|
||||||
<script src="_/code/quill.js"></script>
|
|
||||||
<script type="module">
|
|
||||||
import "./components/ProfileButton.js"
|
|
||||||
import "./components/InputBox.js"
|
|
||||||
import "./components/Sidebar.js"
|
|
||||||
|
|
||||||
import ConnectionHandler from "./ws/ConnectionHandler.js"
|
|
||||||
window.ConnectionHandler = new ConnectionHandler()
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<profile-button style="z-index: 1; cursor: default; position: fixed; top: 5.5vh; right: 4.5vw"></profile-button>
|
|
||||||
<input-box></input-box>
|
|
||||||
<side-bar></side-bar>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
Reference in New Issue
Block a user