import type { SubscriptionHost } from '../component/resources' import type { ComponentHost } from '../component/types' import type { UIEvents } from './types' import { proxyEntry, subscribeEntry } from '../component/resources' export function controlEvents(art: ComponentHost & SubscriptionHost, element: HTMLElement) { return { on: (name: Name, callback: (...args: [...UIEvents[Name]]) => unknown): void => { subscribeEntry(art, element, name, callback) }, proxy: (target: EventTarget, name: Name, callback: (event: HTMLElementEventMap[Name]) => unknown): (() => void) => proxyEntry(art, element, target, name, callback), } }