import { initSandboxRuntimeModular } from "./init"; import { fitTextFontSize } from "../text/fitTextFontSize"; import { getVariables } from "./getVariables"; type HyperframeWindow = Window & { __hyperframeRuntimeBootstrapped?: boolean; __hyperframes?: { fitTextFontSize: typeof fitTextFontSize; getVariables: typeof getVariables; }; }; // Inline composition scripts can run before DOMContentLoaded. // Ensure timeline registry exists at script evaluation time. (window as HyperframeWindow).__timelines = (window as HyperframeWindow).__timelines || {}; // Expose runtime helpers immediately so composition scripts can use them // before DOMContentLoaded (font sizing runs during script evaluation, and // getVariables is read by composition setup before the timeline is built). (window as HyperframeWindow).__hyperframes = { fitTextFontSize, getVariables, }; function bootstrapHyperframeRuntime(): void { const win = window as HyperframeWindow; if (win.__hyperframeRuntimeBootstrapped) { return; } win.__hyperframeRuntimeBootstrapped = true; initSandboxRuntimeModular(); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", bootstrapHyperframeRuntime, { once: true }); } else { bootstrapHyperframeRuntime(); }