runtime/entrypoints/site.entrypoint.ts

runtime/entrypoints/site.entrypoint.ts is a file in Bane's Lab Site. 37 lines of code and 4 definitions.

import "#presentation/records/records.barrel";
import { COPYRIGHT_ID, HEADER_ID, MAIN_ID } from "#core/ids/site.ids";
import type { Disposer } from "#types/base.types";
import { missingElement } from "#configuration/strings/report.strings";
import { mountCite } from "#presentation/widgets/citation.widget";
import { mountCopyright } from "#presentation/widgets/site.widget";
import { mountHome } from "#presentation/widgets/home.widget";
import { mountMenu } from "#presentation/widgets/menu.widget";
import { mountOverlay } from "#presentation/widgets/overlay.widget";
import { mountReference } from "#presentation/widgets/reference.widget";
import { observeAnimations } from "#core/observers/element.observer";
import { startRouting } from "#runtime/coordinators/route.coordinator";

const required = function required(id: string): HTMLElement {
    const element = document.getElementById(id);
    if (element === null) {
        throw new Error(missingElement(id));
    }
    return element;
};

const start = function start(): Disposer {
    const disposers: Disposer[] = [
        observeAnimations(document.body),
        mountMenu(required(HEADER_ID)),
        mountCopyright(required(COPYRIGHT_ID)),
        mountOverlay(),
        mountReference(),
        mountCite(),
        mountHome(required(MAIN_ID)),
        startRouting(required(MAIN_ID)),
    ];
    return () => {
        for (const dispose of disposers) {
            dispose();
        }
    };
};

void start();