// https://pegasus.pimpninjas.org/code/javascript/bitburner/browser.js
// for BitBurner - https://danielyxie.github.io/bitburner/
// by "The Almighty Pegasus Epsilon" <pegasus@pimpninjas.org>
// version 1.2 (C)opyright March 24 2022
// Distribute Unmodifed - https://pegasus.pimpninjas.org/license
/** @param {NS} ns **/
export async function main (ns) {
	ns.disableLog("ALL");
	ns.clearLog();
	ns.tail();
	const doc = globalThis["document"];
	const style = globalThis.getComputedStyle(doc
		.querySelector(".MuiTypography-root"));
	const render = doc.createElement("iframe");
	render.style.boxSizing = "border-box";
	render.style.position = "relative";
	render.style["width"] = "100%";
	render.style["height"] = "100%";
	const nav = doc.createElement("input");
	nav.style.boxSizing = "border-box";
	nav.style.position = "relative";
	nav.style["width"] = "100%";
	nav.style.outline = "none";
	nav.style.padding = "2px";
	nav.style.fontFamily = style.fontFamily;
	nav.style.fontSize = style.fontSize;
	nav.style.color = style.color;
	nav.style.background = style.backgroundColor;
	nav.addEventListener("keydown", e => {
		e.cancelBubble = true;
		if ("Enter" != e.code) return true;
		render.src = (d => d.match("//") ? d : "https://" + d)(e.target.value);
	});
	render.onload = () => nav.value = render.src;
	function rebuildBrowserWindow () {
		let log = doc.querySelector("h6[title=\""
			+ ns.getScriptName() + " " + ns.args.join(" ") + "\"]");
		if (!log) return;
		log = log.parentNode;
		nav.style.marginRight = globalThis
			.getComputedStyle(log.querySelector("div"))["width"];
		if (log.querySelector("input")) return;
		log.insertBefore(nav, log.firstChild.nextSibling);
		log.removeChild(log.firstChild);
		log = log.parentNode.parentNode.firstChild.nextSibling.firstChild;
		log.querySelectorAll("div").forEach(n => n.parentNode.removeChild(n));
		log.appendChild(render);
	}
	for (;;) {
		rebuildBrowserWindow();
		await ns.asleep(1000);
	}
}