return item;
}
+const instances = {};
+const getChart = (key) => {
+ const canvas = getCanvas(key);
+ return Object.values(instances).filter((c) => c.canvas === canvas).pop();
+};
+
class Chart {
// eslint-disable-next-line max-statements
this.config = config = new Config(config);
const initialCanvas = getCanvas(item);
- const existingChart = Chart.getChart(initialCanvas);
+ const existingChart = getChart(initialCanvas);
if (existingChart) {
throw new Error(
'Canvas is already in use. Chart with ID \'' + existingChart.id + '\'' +
this.$context = undefined;
// Add the chart instance to the global namespace
- Chart.instances[me.id] = me;
+ instances[me.id] = me;
if (!context || !canvas) {
// The given item is not a compatible context2d element, let's return before finalizing
me.notifyPlugins('destroy');
- delete Chart.instances[me.id];
+ delete instances[me.id];
}
toBase64Image(...args) {
}
}
-// These are available to both, UMD and ESM packages
-Chart.defaults = defaults;
-Chart.instances = {};
-Chart.registry = registry;
-Chart.version = version;
-
-Chart.getChart = (key) => {
- const canvas = getCanvas(key);
- return Object.values(Chart.instances).filter((c) => c.canvas === canvas).pop();
-};
-
// @ts-ignore
const invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());
-Chart.register = (...items) => {
- registry.add(...items);
- invalidatePlugins();
-};
-Chart.unregister = (...items) => {
- registry.remove(...items);
- invalidatePlugins();
-};
+const enumerable = true;
+
+// These are available to both, UMD and ESM packages. Read Only!
+Object.defineProperties(Chart, {
+ defaults: {
+ enumerable,
+ value: defaults
+ },
+ instances: {
+ enumerable,
+ value: instances
+ },
+ registry: {
+ enumerable,
+ value: registry
+ },
+ version: {
+ enumerable,
+ value: version
+ },
+ getChart: {
+ enumerable,
+ value: getChart
+ },
+ register: {
+ enumerable,
+ value: (...items) => {
+ registry.add(...items);
+ invalidatePlugins();
+ }
+ },
+ unregister: {
+ enumerable,
+ value: (...items) => {
+ registry.remove(...items);
+ invalidatePlugins();
+ }
+ }
+});
export default Chart;