// @ts-check /** * @param {Object} args * @param {Colors} args.colors * @param {LightweightCharts} args.lightweightCharts * @param {Accessor} args.option * @param {Signals} args.signals * @param {Utilities} args.utils * @param {WebSockets} args.webSockets * @param {Elements} args.elements * @param {VecsResources} args.vecsResources * @param {VecIdToIndexes} args.vecIdToIndexes */ export function init({ colors, elements, lightweightCharts, option, signals, utils, webSockets, vecsResources, vecIdToIndexes, }) { const chain = window.document.createElement("div"); chain.id = "chain"; elements.explorer.append(chain); // vecsResources.getOrCreate(/** @satisfies {Height}*/ (5), "height"); // const miners = [ { name: "Foundry USA", color: "orange" }, { name: "Via BTC", color: "teal" }, { name: "Ant Pool", color: "emerald" }, { name: "F2Pool", color: "indigo" }, { name: "Spider Pool", color: "yellow" }, { name: "Mara Pool", color: "amber" }, { name: "SEC Pool", color: "violet" }, { name: "Luxor", color: "orange" }, { name: "Brains Pool", color: "cyan" }, ]; for (let i = 0; i <= 10; i++) { const { name, color } = utils.array.random(miners); const { cubeElement, leftFaceElement, rightFaceElement, topFaceElement } = createCube(); // cubeElement.style.setProperty("--color", `var(--${color})`); const heightElement = window.document.createElement("p"); const height = (1_000_002 - i).toString(); const prefixLength = 7 - height.length; const spanPrefix = window.document.createElement("span"); spanPrefix.style.opacity = "0.5"; spanPrefix.style.userSelect = "none"; heightElement.append(spanPrefix); spanPrefix.innerHTML = "#" + "0".repeat(prefixLength); const spanHeight = window.document.createElement("span"); heightElement.append(spanHeight); spanHeight.innerHTML = height; rightFaceElement.append(heightElement); const feesElement = window.document.createElement("div"); feesElement.classList.add("fees"); leftFaceElement.append(feesElement); const averageFeeElement = window.document.createElement("p"); feesElement.append(averageFeeElement); averageFeeElement.innerHTML = `~1.41`; const feeRangeElement = window.document.createElement("p"); feesElement.append(feeRangeElement); const minFeeElement = window.document.createElement("span"); minFeeElement.innerHTML = `0.11`; feeRangeElement.append(minFeeElement); const dashElement = window.document.createElement("span"); dashElement.style.opacity = "0.5"; dashElement.innerHTML = `-`; feeRangeElement.append(dashElement); const maxFeeElement = window.document.createElement("span"); maxFeeElement.innerHTML = `12.1`; feeRangeElement.append(maxFeeElement); const feeUnitElement = window.document.createElement("p"); feesElement.append(feeUnitElement); feeUnitElement.style.opacity = "0.5"; feeUnitElement.innerHTML = `sat/vB`; const spanMiner = window.document.createElement("span"); spanMiner.innerHTML = name; topFaceElement.append(spanMiner); chain.prepend(cubeElement); } } function createCube() { const cubeElement = window.document.createElement("div"); cubeElement.classList.add("cube"); const rightFaceElement = window.document.createElement("div"); rightFaceElement.classList.add("face"); rightFaceElement.classList.add("right"); cubeElement.append(rightFaceElement); const leftFaceElement = window.document.createElement("div"); leftFaceElement.classList.add("face"); leftFaceElement.classList.add("left"); cubeElement.append(leftFaceElement); const topFaceElement = window.document.createElement("div"); topFaceElement.classList.add("face"); topFaceElement.classList.add("top"); cubeElement.append(topFaceElement); return { cubeElement, leftFaceElement, rightFaceElement, topFaceElement, }; }