Files
vueecharts/src/wc.ts

46 lines
936 B
TypeScript

import { isBrowser } from "./utils";
let registered: boolean | null = null;
export const TAG_NAME = "x-vue-echarts";
export interface EChartsElement extends HTMLElement {
__dispose: (() => void) | null;
}
export function register(): boolean {
if (registered != null) {
return registered;
}
const registry = globalThis.customElements;
if (!isBrowser() || !registry?.get) {
registered = false;
return registered;
}
if (!registry.get(TAG_NAME)) {
try {
class ECElement extends HTMLElement implements EChartsElement {
__dispose: (() => void) | null = null;
disconnectedCallback(): void {
if (this.__dispose) {
this.__dispose();
this.__dispose = null;
}
}
}
registry.define(TAG_NAME, ECElement);
} catch {
registered = false;
return registered;
}
}
registered = true;
return registered;
}