import { getDocument } from "ssr-window"; import { constants } from "../constants"; /** * Инициализирует всплытие события загрузки нового контента на странице * @template T - тип объекта, который будет передан в `event.detail` обработчикам `onContentLoaded`. * @param detail{Object=} полезная нагрузка, которая попадёт в `event.detail`. * @returns {void} * @example * import { dispatchContentLoaded, onContentLoaded } from "@delement/ui/utils"; * * onContentLoaded<{ source: string }>((event) => { * console.log(event.detail.source); * }); * * dispatchContentLoaded({ source: "modal" }); */ export const dispatchContentLoaded = = Record>( detail: T = {} as T ): void => { if (typeof CustomEvent === "function") { getDocument()?.dispatchEvent( new CustomEvent(constants.contentLoadedEventName, { detail }) ); } };