1
0
mirror of https://github.com/koloml/furbooru-tagging-assistant.git synced 2025-12-24 07:12:57 +00:00

Annotating component utils with types

This commit is contained in:
2025-02-06 23:57:19 +04:00
parent 92a0efaace
commit bda2756779

View File

@@ -1,19 +1,26 @@
import type { BaseComponent } from "$lib/components/base/BaseComponent";
const instanceSymbol = Symbol('instance');
interface ElementWithComponent extends HTMLElement {
[instanceSymbol]?: BaseComponent;
}
/**
* Get the component from the element, if there is one.
* @param {HTMLElement} element
* @return {import('./BaseComponent').BaseComponent|null}
* @return
*/
export function getComponent(element) {
export function getComponent(element: ElementWithComponent): BaseComponent | null {
return element[instanceSymbol] || null;
}
/**
* Bind the component to the selected element.
* @param {HTMLElement} element The element to bind the component to.
* @param {import('./BaseComponent').BaseComponent} instance The component instance.
* @param element The element to bind the component to.
* @param instance The component instance.
*/
export function bindComponent(element, instance) {
export function bindComponent(element: ElementWithComponent, instance: BaseComponent): void {
if (element[instanceSymbol]) {
throw new Error('The element is already bound to a component.');
}