48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
|
import { Pin } from "./util/Pin.js";
|
||
|
import { Fieldset } from "./util/Fieldset.js";
|
||
|
import { P } from './Squaremap.js';
|
||
|
|
||
|
class Sidebar {
|
||
|
constructor(json, show) {
|
||
|
this.sidebar = P.createElement("div", "sidebar", this);
|
||
|
this.showSidebar = show;
|
||
|
if (!show) {
|
||
|
this.sidebar.style.display = "none";
|
||
|
}
|
||
|
this.sidebar.addEventListener("click", (e) => {
|
||
|
P.playerList.followPlayerMarker(null);
|
||
|
});
|
||
|
document.body.appendChild(this.sidebar);
|
||
|
|
||
|
this.pin = new Pin(json.pinned == "pinned");
|
||
|
this.show(this.pin.pinned);
|
||
|
if (json.pinned != "hide") {
|
||
|
this.sidebar.appendChild(this.pin.element);
|
||
|
}
|
||
|
|
||
|
this.worlds = new Fieldset("worlds", json.world_list_label);
|
||
|
this.sidebar.appendChild(this.worlds.element);
|
||
|
|
||
|
this.players = new Fieldset("players", json.player_list_label
|
||
|
.replace(/{cur}/g, 0)
|
||
|
.replace(/{max}/g, 0));
|
||
|
this.sidebar.appendChild(this.players.element);
|
||
|
|
||
|
this.sidebar.onmouseleave = () => {
|
||
|
if (!this.pin.pinned) {
|
||
|
this.show(false);
|
||
|
}
|
||
|
};
|
||
|
this.sidebar.onmouseenter = () => {
|
||
|
if (!this.pin.pinned) {
|
||
|
this.show(true);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
show(show) {
|
||
|
this.sidebar.className = show ? "show" : "";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export { Sidebar };
|