@studiometa/js-toolkit
Version:
A set of useful little bits of JavaScript to boost your project! 🚀
48 lines (47 loc) • 1.92 kB
TypeScript
export type LoadableElements = {
embed: HTMLEmbedElement;
iframe: HTMLIFrameElement;
img: HTMLImageElement;
link: HTMLLinkElement;
script: HTMLScriptElement;
track: HTMLTrackElement;
};
export type LoadableElementsNames = keyof LoadableElements;
export type LoadElementsOptions = {
/**
* An HTML element where the created element will be appended.
*/
appendTo?: HTMLElement;
};
export type LoadElementsReturnType<T extends LoadableElementsNames> = Promise<{
event: Event;
element: LoadableElements[T];
}>;
/**
* Load the given source for the given type of element.
* @todo manage memo
* @link https://js-toolkit.studiometa.dev/utils/loadElement.html
*/
export declare function loadElement<T extends LoadableElementsNames>(src: string, type: T, { appendTo }?: LoadElementsOptions): LoadElementsReturnType<T>;
/**
* Load the given source as an `<img>` element.
* @link https://js-toolkit.studiometa.dev/utils/loadImage.html
*/
export declare function loadImage(src: string, options?: LoadElementsOptions): LoadElementsReturnType<"img">;
/**
* Load the given source as an `<iframe>` element.
* @link https://js-toolkit.studiometa.dev/utils/loadIframe.html
*/
export declare function loadIframe(src: string, options?: LoadElementsOptions): LoadElementsReturnType<"iframe">;
/**
* Load the given source as a `<link>` element.
* @link https://js-toolkit.studiometa.dev/utils/loadLink.html
*/
export declare function loadLink(src: string, options?: LoadElementsOptions): LoadElementsReturnType<"link">;
/**
* Load the given source as a `<script>` element. The generated element is
* appended to `document.head` by default, as a script element needs
* to be inserted in the DOM to load.
* @link https://js-toolkit.studiometa.dev/utils/loadScript.html
*/
export declare function loadScript(src: string, options?: LoadElementsOptions): LoadElementsReturnType<"script">;