import { Registry } from "../../../registries/registry";
import { GlobalChart } from "../../../types/chart/chartjs";

export const chartJsExtensionRegistry = new Registry<{
  register: (chart: GlobalChart) => void;
  unregister: (chart: GlobalChart) => void;
}>();

export function areChartJSExtensionsLoaded() {
  return globalThis.Chart ? !!globalThis.Chart.registry.plugins.get("chartShowValuesPlugin") : true;
}

export function registerChartJSExtensions() {
  if (!globalThis.Chart || areChartJSExtensionsLoaded()) {
    return;
  }
  for (const registryItem of chartJsExtensionRegistry.getAll()) {
    registryItem.register(globalThis.Chart);
  }
}

export function unregisterChartJsExtensions() {
  if (!globalThis.Chart) {
    return;
  }
  for (const registryItem of chartJsExtensionRegistry.getAll()) {
    registryItem.unregister(globalThis.Chart);
  }
}
