import { NeedleLogoElement } from "./logo-element.js";
import { NeedleMenuElement } from "./needle menu/needle-menu.js";
import { NeedleButtonElement } from "./needle-button.js";
import { NeedleEngineWebComponent } from "./needle-engine.js";

/** Register all built-in web components. Called from {@link initEngine} as a
 *  safeguard against aggressive tree-shaking that may drop the top-level
 *  `customElements.define` calls in the individual component files. */
export function initWebComponents() {
    if (typeof window === "undefined") return;

    if (!window.customElements.get("needle-engine"))
        window.customElements.define("needle-engine", NeedleEngineWebComponent);

    if (!window.customElements.get("needle-button"))
        window.customElements.define("needle-button", NeedleButtonElement);

    if (!window.customElements.get("needle-logo-element"))
        window.customElements.define("needle-logo-element", NeedleLogoElement);

    if (!window.customElements.get("needle-menu"))
        window.customElements.define("needle-menu", NeedleMenuElement);
}
