diff --git a/static/htmx.ts b/static/htmx.ts index 3fde4b5..9a2aeb9 100644 --- a/static/htmx.ts +++ b/static/htmx.ts @@ -1,5 +1,7 @@ export {}; +import { onReady } from "./utils"; + type ToastFn = (opts: { message: string; duration?: number }) => void; const getToast = (): ToastFn | null => { @@ -33,15 +35,6 @@ const getTriggerFromHtmxEvent = (event: Event): Element | null => { return detail.detail?.elt ?? null; }; -const onReady = (fn: () => void): void => { - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", fn, { once: true }); - return; - } - - fn(); -}; - onReady(() => { document.addEventListener("htmx:beforeRequest", (event) => { setBusy(getTriggerFromHtmxEvent(event), true); diff --git a/static/shell.ts b/static/shell.ts index 99f5535..aacfa13 100644 --- a/static/shell.ts +++ b/static/shell.ts @@ -1,13 +1,6 @@ export {}; -const onReady = (fn: () => void): void => { - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", fn, { once: true }); - return; - } - - fn(); -}; +import { onReady } from "./utils"; const isMobileViewport = (): boolean => window.matchMedia("(max-width: 1023px)").matches; diff --git a/static/utils.ts b/static/utils.ts index b82451d..def6031 100644 --- a/static/utils.ts +++ b/static/utils.ts @@ -11,3 +11,12 @@ export const parseClassList = (value: string | null): string[] => { .map((entry: string): string => entry.trim()) .filter((entry: string): boolean => entry.length > 0); }; + +export const onReady = (fn: () => void): void => { + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", fn, { once: true }); + return; + } + + fn(); +}; diff --git a/static/watchlist.ts b/static/watchlist.ts index 75809fc..b902d73 100644 --- a/static/watchlist.ts +++ b/static/watchlist.ts @@ -458,15 +458,6 @@ const getRenderedWatchlistIds = (): number[] => { return Array.from(ids); }; -const onReady = (fn: () => void): void => { - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", fn, { once: true }); - return; - } - - fn(); -}; - const installDelegatedHandlers = (): void => { document.addEventListener("click", (event) => { const target = event.target; @@ -537,3 +528,4 @@ onReady(() => { installDelegatedHandlers(); }); +import { onReady } from "./utils";