mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-29 12:27:07 +02:00
prettify, sorry for the big ass commit
This commit is contained in:
+173
-121
@@ -3,156 +3,208 @@ import { MainMenuLinks } from "./Links";
|
||||
import { IPlayer } from "../../PersonObjects/IPlayer";
|
||||
|
||||
interface IMainMenuHeaders {
|
||||
Hacking: HTMLElement | null;
|
||||
Character: HTMLElement | null;
|
||||
World: HTMLElement | null;
|
||||
Help: HTMLElement | null;
|
||||
Hacking: HTMLElement | null;
|
||||
Character: HTMLElement | null;
|
||||
World: HTMLElement | null;
|
||||
Help: HTMLElement | null;
|
||||
}
|
||||
|
||||
export const MainMenuHeaders: IMainMenuHeaders = {
|
||||
Hacking: null,
|
||||
Character: null,
|
||||
World: null,
|
||||
Help: null,
|
||||
}
|
||||
Hacking: null,
|
||||
Character: null,
|
||||
World: null,
|
||||
Help: null,
|
||||
};
|
||||
|
||||
// Implements collapsible toggle feature when a header is clicked
|
||||
function toggleHeader(open: boolean, elems: HTMLElement[], links: HTMLElement[]): void {
|
||||
for (let i = 0; i < elems.length; ++i) {
|
||||
if (open) {
|
||||
elems[i].style.opacity = "1";
|
||||
elems[i].style.maxHeight = elems[i].scrollHeight + "px";
|
||||
} else {
|
||||
elems[i].style.opacity = "0";
|
||||
elems[i].style.maxHeight = "";
|
||||
}
|
||||
function toggleHeader(
|
||||
open: boolean,
|
||||
elems: HTMLElement[],
|
||||
links: HTMLElement[],
|
||||
): void {
|
||||
for (let i = 0; i < elems.length; ++i) {
|
||||
if (open) {
|
||||
elems[i].style.opacity = "1";
|
||||
elems[i].style.maxHeight = elems[i].scrollHeight + "px";
|
||||
} else {
|
||||
elems[i].style.opacity = "0";
|
||||
elems[i].style.maxHeight = "";
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0; i < links.length; ++i) {
|
||||
if (open) {
|
||||
links[i].style.opacity = "1";
|
||||
links[i].style.maxHeight = links[i].scrollHeight + "px";
|
||||
links[i].style.pointerEvents = "auto";
|
||||
} else {
|
||||
links[i].style.opacity = "0";
|
||||
links[i].style.maxHeight = "";
|
||||
links[i].style.pointerEvents = "none";
|
||||
}
|
||||
for (let i = 0; i < links.length; ++i) {
|
||||
if (open) {
|
||||
links[i].style.opacity = "1";
|
||||
links[i].style.maxHeight = links[i].scrollHeight + "px";
|
||||
links[i].style.pointerEvents = "auto";
|
||||
} else {
|
||||
links[i].style.opacity = "0";
|
||||
links[i].style.maxHeight = "";
|
||||
links[i].style.pointerEvents = "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function initializeMainMenuHeaders(p: IPlayer, dev = false): boolean {
|
||||
function safeGetElement(id: string): HTMLElement {
|
||||
const elem: HTMLElement | null = document.getElementById(id);
|
||||
if (elem == null) {
|
||||
throw new Error(`Failed to find element with id ${id} in initializeMainMenuHeaders()`);
|
||||
}
|
||||
|
||||
return elem;
|
||||
function safeGetElement(id: string): HTMLElement {
|
||||
const elem: HTMLElement | null = document.getElementById(id);
|
||||
if (elem == null) {
|
||||
throw new Error(
|
||||
`Failed to find element with id ${id} in initializeMainMenuHeaders()`,
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
// Get references to the DOM elements
|
||||
MainMenuHeaders.Hacking = safeGetElement("hacking-menu-header");
|
||||
MainMenuHeaders.Character = safeGetElement("character-menu-header");
|
||||
MainMenuHeaders.World = safeGetElement("world-menu-header");
|
||||
MainMenuHeaders.Help = safeGetElement("help-menu-header");
|
||||
return elem;
|
||||
}
|
||||
|
||||
// Set click handlers to turn the headers into collapsibles
|
||||
MainMenuHeaders.Hacking.onclick = function() {
|
||||
const terminal: HTMLElement = safeGetElement("terminal-tab");
|
||||
const createScript: HTMLElement = safeGetElement("create-script-tab");
|
||||
const activeScripts: HTMLElement = safeGetElement("active-scripts-tab");
|
||||
const createProgram: HTMLElement = safeGetElement("create-program-tab");
|
||||
const createProgramNot: HTMLElement = safeGetElement("create-program-notification");
|
||||
try {
|
||||
// Get references to the DOM elements
|
||||
MainMenuHeaders.Hacking = safeGetElement("hacking-menu-header");
|
||||
MainMenuHeaders.Character = safeGetElement("character-menu-header");
|
||||
MainMenuHeaders.World = safeGetElement("world-menu-header");
|
||||
MainMenuHeaders.Help = safeGetElement("help-menu-header");
|
||||
|
||||
createProgram.style.display = p.firstProgramAvailable ? "list-item" : "none";
|
||||
// Set click handlers to turn the headers into collapsibles
|
||||
MainMenuHeaders.Hacking.onclick = function () {
|
||||
const terminal: HTMLElement = safeGetElement("terminal-tab");
|
||||
const createScript: HTMLElement = safeGetElement("create-script-tab");
|
||||
const activeScripts: HTMLElement = safeGetElement("active-scripts-tab");
|
||||
const createProgram: HTMLElement = safeGetElement("create-program-tab");
|
||||
const createProgramNot: HTMLElement = safeGetElement(
|
||||
"create-program-notification",
|
||||
);
|
||||
|
||||
(this as any).classList.toggle("opened");
|
||||
createProgram.style.display = p.firstProgramAvailable
|
||||
? "list-item"
|
||||
: "none";
|
||||
|
||||
const elems: HTMLElement[] = [terminal, createScript, activeScripts, createProgram];
|
||||
const links: HTMLElement[] = [MainMenuLinks.Terminal, MainMenuLinks.ScriptEditor, MainMenuLinks.ActiveScripts, MainMenuLinks.CreateProgram];
|
||||
if (terminal.style.maxHeight) {
|
||||
toggleHeader(false, elems, links);
|
||||
createProgramNot.style.display = "none";
|
||||
} else {
|
||||
toggleHeader(true, elems, links);
|
||||
createProgramNot.style.display = "block"
|
||||
}
|
||||
}
|
||||
(this as any).classList.toggle("opened");
|
||||
|
||||
MainMenuHeaders.Character.onclick = function() {
|
||||
const stats: HTMLElement = safeGetElement("stats-tab");
|
||||
const factions: HTMLElement = safeGetElement("factions-tab");
|
||||
const augmentations: HTMLElement = safeGetElement("augmentations-tab");
|
||||
const hacknetnodes: HTMLElement = safeGetElement("hacknet-nodes-tab");
|
||||
const sleeves: HTMLElement = safeGetElement("sleeves-tab");
|
||||
const elems: HTMLElement[] = [
|
||||
terminal,
|
||||
createScript,
|
||||
activeScripts,
|
||||
createProgram,
|
||||
];
|
||||
const links: HTMLElement[] = [
|
||||
MainMenuLinks.Terminal,
|
||||
MainMenuLinks.ScriptEditor,
|
||||
MainMenuLinks.ActiveScripts,
|
||||
MainMenuLinks.CreateProgram,
|
||||
];
|
||||
if (terminal.style.maxHeight) {
|
||||
toggleHeader(false, elems, links);
|
||||
createProgramNot.style.display = "none";
|
||||
} else {
|
||||
toggleHeader(true, elems, links);
|
||||
createProgramNot.style.display = "block";
|
||||
}
|
||||
};
|
||||
|
||||
sleeves.style.display = p.sleeves.length > 0 ? "list-item" : "none";
|
||||
MainMenuHeaders.Character.onclick = function () {
|
||||
const stats: HTMLElement = safeGetElement("stats-tab");
|
||||
const factions: HTMLElement = safeGetElement("factions-tab");
|
||||
const augmentations: HTMLElement = safeGetElement("augmentations-tab");
|
||||
const hacknetnodes: HTMLElement = safeGetElement("hacknet-nodes-tab");
|
||||
const sleeves: HTMLElement = safeGetElement("sleeves-tab");
|
||||
|
||||
(this as any).classList.toggle("opened");
|
||||
sleeves.style.display = p.sleeves.length > 0 ? "list-item" : "none";
|
||||
|
||||
const elems: HTMLElement[] = [stats, factions, augmentations, hacknetnodes, sleeves];
|
||||
const links: HTMLElement[] = [MainMenuLinks.Stats, MainMenuLinks.Factions, MainMenuLinks.Augmentations, MainMenuLinks.HacknetNodes, MainMenuLinks.Sleeves];
|
||||
if (stats.style.maxHeight) {
|
||||
toggleHeader(false, elems, links);
|
||||
} else {
|
||||
toggleHeader(true, elems, links);
|
||||
}
|
||||
}
|
||||
(this as any).classList.toggle("opened");
|
||||
|
||||
MainMenuHeaders.World.onclick = function() {
|
||||
const city: HTMLElement = safeGetElement("city-tab");
|
||||
const travel: HTMLElement = safeGetElement("travel-tab");
|
||||
const job: HTMLElement = safeGetElement("job-tab");
|
||||
const stockmarket: HTMLElement = safeGetElement("stock-market-tab");
|
||||
const bladeburner: HTMLElement = safeGetElement("bladeburner-tab");
|
||||
const corporation: HTMLElement = safeGetElement("corporation-tab");
|
||||
const gang: HTMLElement = safeGetElement("gang-tab");
|
||||
const elems: HTMLElement[] = [
|
||||
stats,
|
||||
factions,
|
||||
augmentations,
|
||||
hacknetnodes,
|
||||
sleeves,
|
||||
];
|
||||
const links: HTMLElement[] = [
|
||||
MainMenuLinks.Stats,
|
||||
MainMenuLinks.Factions,
|
||||
MainMenuLinks.Augmentations,
|
||||
MainMenuLinks.HacknetNodes,
|
||||
MainMenuLinks.Sleeves,
|
||||
];
|
||||
if (stats.style.maxHeight) {
|
||||
toggleHeader(false, elems, links);
|
||||
} else {
|
||||
toggleHeader(true, elems, links);
|
||||
}
|
||||
};
|
||||
|
||||
// Determine whether certain links should show up
|
||||
job.style.display = p.companyName !== "" ? "list-item" : "none";
|
||||
stockmarket.style.display = p.hasWseAccount ? "list-item" : "none";
|
||||
bladeburner.style.display = p.inBladeburner() ? "list-item" : "none";
|
||||
corporation.style.display = p.hasCorporation() ? "list-item" : "none";
|
||||
gang.style.display = p.inGang() ? "list-item" : "none";
|
||||
MainMenuHeaders.World.onclick = function () {
|
||||
const city: HTMLElement = safeGetElement("city-tab");
|
||||
const travel: HTMLElement = safeGetElement("travel-tab");
|
||||
const job: HTMLElement = safeGetElement("job-tab");
|
||||
const stockmarket: HTMLElement = safeGetElement("stock-market-tab");
|
||||
const bladeburner: HTMLElement = safeGetElement("bladeburner-tab");
|
||||
const corporation: HTMLElement = safeGetElement("corporation-tab");
|
||||
const gang: HTMLElement = safeGetElement("gang-tab");
|
||||
|
||||
(this as any).classList.toggle("opened");
|
||||
// Determine whether certain links should show up
|
||||
job.style.display = p.companyName !== "" ? "list-item" : "none";
|
||||
stockmarket.style.display = p.hasWseAccount ? "list-item" : "none";
|
||||
bladeburner.style.display = p.inBladeburner() ? "list-item" : "none";
|
||||
corporation.style.display = p.hasCorporation() ? "list-item" : "none";
|
||||
gang.style.display = p.inGang() ? "list-item" : "none";
|
||||
|
||||
const elems: HTMLElement[] = [city, travel, job, stockmarket, bladeburner, corporation, gang];
|
||||
const links: HTMLElement[] = [MainMenuLinks.City, MainMenuLinks.Travel, MainMenuLinks.Job, MainMenuLinks.StockMarket, MainMenuLinks.Bladeburner, MainMenuLinks.Corporation, MainMenuLinks.Gang];
|
||||
if (city.style.maxHeight) {
|
||||
toggleHeader(false, elems, links);
|
||||
} else {
|
||||
toggleHeader(true, elems, links);
|
||||
}
|
||||
}
|
||||
(this as any).classList.toggle("opened");
|
||||
|
||||
MainMenuHeaders.Help.onclick = function() {
|
||||
const milestones: HTMLElement = safeGetElement("milestones-tab");
|
||||
const tutorial: HTMLElement = safeGetElement("tutorial-tab");
|
||||
const options: HTMLElement = safeGetElement("options-tab");
|
||||
const elems: HTMLElement[] = [
|
||||
city,
|
||||
travel,
|
||||
job,
|
||||
stockmarket,
|
||||
bladeburner,
|
||||
corporation,
|
||||
gang,
|
||||
];
|
||||
const links: HTMLElement[] = [
|
||||
MainMenuLinks.City,
|
||||
MainMenuLinks.Travel,
|
||||
MainMenuLinks.Job,
|
||||
MainMenuLinks.StockMarket,
|
||||
MainMenuLinks.Bladeburner,
|
||||
MainMenuLinks.Corporation,
|
||||
MainMenuLinks.Gang,
|
||||
];
|
||||
if (city.style.maxHeight) {
|
||||
toggleHeader(false, elems, links);
|
||||
} else {
|
||||
toggleHeader(true, elems, links);
|
||||
}
|
||||
};
|
||||
|
||||
(this as any).classList.toggle("opened");
|
||||
MainMenuHeaders.Help.onclick = function () {
|
||||
const milestones: HTMLElement = safeGetElement("milestones-tab");
|
||||
const tutorial: HTMLElement = safeGetElement("tutorial-tab");
|
||||
const options: HTMLElement = safeGetElement("options-tab");
|
||||
|
||||
const elems: HTMLElement[] = [milestones, tutorial, options];
|
||||
const links: HTMLElement[] = [MainMenuLinks.Milestones, MainMenuLinks.Tutorial, MainMenuLinks.Options];
|
||||
(this as any).classList.toggle("opened");
|
||||
|
||||
if (dev) {
|
||||
elems.push(safeGetElement("dev-tab"));
|
||||
links.push(safeGetElement("dev-menu-link"));
|
||||
}
|
||||
const elems: HTMLElement[] = [milestones, tutorial, options];
|
||||
const links: HTMLElement[] = [
|
||||
MainMenuLinks.Milestones,
|
||||
MainMenuLinks.Tutorial,
|
||||
MainMenuLinks.Options,
|
||||
];
|
||||
|
||||
if (tutorial.style.maxHeight) {
|
||||
toggleHeader(false, elems, links);
|
||||
} else {
|
||||
toggleHeader(true, elems, links);
|
||||
}
|
||||
}
|
||||
if (dev) {
|
||||
elems.push(safeGetElement("dev-tab"));
|
||||
links.push(safeGetElement("dev-menu-link"));
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch(e) {
|
||||
console.error(`Failed to initialize Main Menu Headers: ${e}`);
|
||||
return false;
|
||||
}
|
||||
if (tutorial.style.maxHeight) {
|
||||
toggleHeader(false, elems, links);
|
||||
} else {
|
||||
toggleHeader(true, elems, links);
|
||||
}
|
||||
};
|
||||
|
||||
return true;
|
||||
} catch (e) {
|
||||
console.error(`Failed to initialize Main Menu Headers: ${e}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
+83
-80
@@ -3,94 +3,97 @@
|
||||
import { clearEventListeners } from "../../../utils/uiHelpers/clearEventListeners";
|
||||
|
||||
interface IMainMenuLinks {
|
||||
Terminal: HTMLElement;
|
||||
ScriptEditor: HTMLElement;
|
||||
ActiveScripts: HTMLElement;
|
||||
CreateProgram: HTMLElement;
|
||||
Stats: HTMLElement;
|
||||
Factions: HTMLElement;
|
||||
Augmentations: HTMLElement;
|
||||
HacknetNodes: HTMLElement;
|
||||
Sleeves: HTMLElement;
|
||||
City: HTMLElement;
|
||||
Travel: HTMLElement;
|
||||
Job: HTMLElement;
|
||||
StockMarket: HTMLElement;
|
||||
Bladeburner: HTMLElement;
|
||||
Corporation: HTMLElement;
|
||||
Gang: HTMLElement;
|
||||
Milestones: HTMLElement;
|
||||
Tutorial: HTMLElement;
|
||||
Options: HTMLElement;
|
||||
DevMenu: HTMLElement;
|
||||
Terminal: HTMLElement;
|
||||
ScriptEditor: HTMLElement;
|
||||
ActiveScripts: HTMLElement;
|
||||
CreateProgram: HTMLElement;
|
||||
Stats: HTMLElement;
|
||||
Factions: HTMLElement;
|
||||
Augmentations: HTMLElement;
|
||||
HacknetNodes: HTMLElement;
|
||||
Sleeves: HTMLElement;
|
||||
City: HTMLElement;
|
||||
Travel: HTMLElement;
|
||||
Job: HTMLElement;
|
||||
StockMarket: HTMLElement;
|
||||
Bladeburner: HTMLElement;
|
||||
Corporation: HTMLElement;
|
||||
Gang: HTMLElement;
|
||||
Milestones: HTMLElement;
|
||||
Tutorial: HTMLElement;
|
||||
Options: HTMLElement;
|
||||
DevMenu: HTMLElement;
|
||||
}
|
||||
|
||||
const emptyElement: HTMLElement = ((): HTMLElement => {
|
||||
const elem = document.createElement('div');
|
||||
if(elem === null) throw new Error("unable to create empty div element");
|
||||
return elem;
|
||||
const elem = document.createElement("div");
|
||||
if (elem === null) throw new Error("unable to create empty div element");
|
||||
return elem;
|
||||
})();
|
||||
|
||||
export const MainMenuLinks: IMainMenuLinks = {
|
||||
Terminal: emptyElement,
|
||||
ScriptEditor: emptyElement,
|
||||
ActiveScripts: emptyElement,
|
||||
CreateProgram: emptyElement,
|
||||
Stats: emptyElement,
|
||||
Factions: emptyElement,
|
||||
Augmentations: emptyElement,
|
||||
HacknetNodes: emptyElement,
|
||||
Sleeves: emptyElement,
|
||||
City: emptyElement,
|
||||
Travel: emptyElement,
|
||||
Job: emptyElement,
|
||||
StockMarket: emptyElement,
|
||||
Bladeburner: emptyElement,
|
||||
Corporation: emptyElement,
|
||||
Gang: emptyElement,
|
||||
Milestones: emptyElement,
|
||||
Tutorial: emptyElement,
|
||||
Options: emptyElement,
|
||||
DevMenu: emptyElement,
|
||||
}
|
||||
Terminal: emptyElement,
|
||||
ScriptEditor: emptyElement,
|
||||
ActiveScripts: emptyElement,
|
||||
CreateProgram: emptyElement,
|
||||
Stats: emptyElement,
|
||||
Factions: emptyElement,
|
||||
Augmentations: emptyElement,
|
||||
HacknetNodes: emptyElement,
|
||||
Sleeves: emptyElement,
|
||||
City: emptyElement,
|
||||
Travel: emptyElement,
|
||||
Job: emptyElement,
|
||||
StockMarket: emptyElement,
|
||||
Bladeburner: emptyElement,
|
||||
Corporation: emptyElement,
|
||||
Gang: emptyElement,
|
||||
Milestones: emptyElement,
|
||||
Tutorial: emptyElement,
|
||||
Options: emptyElement,
|
||||
DevMenu: emptyElement,
|
||||
};
|
||||
|
||||
export function initializeMainMenuLinks(): boolean {
|
||||
try {
|
||||
function safeGetLink(id: string): HTMLElement {
|
||||
const elem: HTMLElement | null = clearEventListeners(id);
|
||||
if (elem == null) {
|
||||
throw new Error(`clearEventListeners() failed for element with id: ${id}`);
|
||||
}
|
||||
try {
|
||||
function safeGetLink(id: string): HTMLElement {
|
||||
const elem: HTMLElement | null = clearEventListeners(id);
|
||||
if (elem == null) {
|
||||
throw new Error(
|
||||
`clearEventListeners() failed for element with id: ${id}`,
|
||||
);
|
||||
}
|
||||
|
||||
return elem;
|
||||
}
|
||||
|
||||
MainMenuLinks.Terminal = safeGetLink("terminal-menu-link");
|
||||
MainMenuLinks.ScriptEditor = safeGetLink("create-script-menu-link");
|
||||
MainMenuLinks.ActiveScripts = safeGetLink("active-scripts-menu-link");
|
||||
MainMenuLinks.CreateProgram = safeGetLink("create-program-menu-link");
|
||||
MainMenuLinks.Stats = safeGetLink("stats-menu-link");
|
||||
MainMenuLinks.Factions = safeGetLink("factions-menu-link");
|
||||
MainMenuLinks.Augmentations = safeGetLink("augmentations-menu-link");
|
||||
MainMenuLinks.HacknetNodes = safeGetLink("hacknet-nodes-menu-link");
|
||||
MainMenuLinks.Sleeves = safeGetLink("sleeves-menu-link");
|
||||
MainMenuLinks.City = safeGetLink("city-menu-link");
|
||||
MainMenuLinks.Travel = safeGetLink("travel-menu-link");
|
||||
MainMenuLinks.Job = safeGetLink("job-menu-link");
|
||||
MainMenuLinks.StockMarket = safeGetLink("stock-market-menu-link");
|
||||
MainMenuLinks.Bladeburner = safeGetLink("bladeburner-menu-link");
|
||||
MainMenuLinks.Corporation = safeGetLink("corporation-menu-link");
|
||||
MainMenuLinks.Gang = safeGetLink("gang-menu-link");
|
||||
MainMenuLinks.Milestones = safeGetLink("milestones-menu-link");
|
||||
MainMenuLinks.Tutorial = safeGetLink("tutorial-menu-link");
|
||||
const op: HTMLElement | null = document.getElementById("options-menu-link");
|
||||
if(op === null) throw new Error(`Could not find element with id: "options-menu-link"`);
|
||||
MainMenuLinks.Options = op; // This click listener is already set, so don't clear it
|
||||
MainMenuLinks.DevMenu = safeGetLink("dev-menu-link");
|
||||
|
||||
return true;
|
||||
} catch(e) {
|
||||
console.error(`Failed to initialize Main Menu Links: ${e}`);
|
||||
return false;
|
||||
return elem;
|
||||
}
|
||||
|
||||
MainMenuLinks.Terminal = safeGetLink("terminal-menu-link");
|
||||
MainMenuLinks.ScriptEditor = safeGetLink("create-script-menu-link");
|
||||
MainMenuLinks.ActiveScripts = safeGetLink("active-scripts-menu-link");
|
||||
MainMenuLinks.CreateProgram = safeGetLink("create-program-menu-link");
|
||||
MainMenuLinks.Stats = safeGetLink("stats-menu-link");
|
||||
MainMenuLinks.Factions = safeGetLink("factions-menu-link");
|
||||
MainMenuLinks.Augmentations = safeGetLink("augmentations-menu-link");
|
||||
MainMenuLinks.HacknetNodes = safeGetLink("hacknet-nodes-menu-link");
|
||||
MainMenuLinks.Sleeves = safeGetLink("sleeves-menu-link");
|
||||
MainMenuLinks.City = safeGetLink("city-menu-link");
|
||||
MainMenuLinks.Travel = safeGetLink("travel-menu-link");
|
||||
MainMenuLinks.Job = safeGetLink("job-menu-link");
|
||||
MainMenuLinks.StockMarket = safeGetLink("stock-market-menu-link");
|
||||
MainMenuLinks.Bladeburner = safeGetLink("bladeburner-menu-link");
|
||||
MainMenuLinks.Corporation = safeGetLink("corporation-menu-link");
|
||||
MainMenuLinks.Gang = safeGetLink("gang-menu-link");
|
||||
MainMenuLinks.Milestones = safeGetLink("milestones-menu-link");
|
||||
MainMenuLinks.Tutorial = safeGetLink("tutorial-menu-link");
|
||||
const op: HTMLElement | null = document.getElementById("options-menu-link");
|
||||
if (op === null)
|
||||
throw new Error(`Could not find element with id: "options-menu-link"`);
|
||||
MainMenuLinks.Options = op; // This click listener is already set, so don't clear it
|
||||
MainMenuLinks.DevMenu = safeGetLink("dev-menu-link");
|
||||
|
||||
return true;
|
||||
} catch (e) {
|
||||
console.error(`Failed to initialize Main Menu Links: ${e}`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user