File size: 841 Bytes
a03b3ba |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import { format } from "svelte-i18n";
import { get } from "svelte/store";
const x = get(format);
export type I18nFormatter = typeof x;
export class Gradio<T extends Record<string, any> = Record<string, any>> {
#id: number;
theme: string;
version: string;
i18n: typeof x;
#el: HTMLElement;
root: string;
autoscroll: boolean;
constructor(
id: number,
el: HTMLElement,
theme: string,
version: string,
root: string,
autoscroll: boolean
) {
this.#id = id;
this.theme = theme;
this.version = version;
this.#el = el;
this.i18n = get(format);
this.root = root;
this.autoscroll = autoscroll;
}
dispatch<E extends keyof T>(event_name: E, data?: T[E]): void {
const e = new CustomEvent("gradio", {
bubbles: true,
detail: { data, id: this.#id, event: event_name }
});
this.#el.dispatchEvent(e);
}
}
|