on-codemerge
Version:
A WYSIWYG editor for on-codemerge is a user-friendly interface that allows users to edit and view their code in real time, exactly as it will appear in the final product
48 lines (47 loc) • 2.08 kB
JavaScript
var g = Object.defineProperty;
var f = (t, e, a) => e in t ? g(t, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : t[e] = a;
var c = (t, e, a) => f(t, typeof e != "symbol" ? e + "" : e, a);
import { BarChartRenderer as l } from "../renderers/BarChartRenderer.mjs";
import { LineChartRenderer as C } from "../renderers/LineChartRenderer.mjs";
import { PieChartRenderer as u } from "../renderers/PieChartRenderer.mjs";
import { DoughnutChartRenderer as p } from "../renderers/DoughnutChartRenderer.mjs";
import { AreaChartRenderer as R } from "../renderers/AreaChartRenderer.mjs";
import { RadarChartRenderer as x } from "../renderers/RadarChartRenderer.mjs";
import { ScatterChartRenderer as b } from "../renderers/ScatterChartRenderer.mjs";
import { BubbleChartRenderer as D } from "../renderers/BubbleChartRenderer.mjs";
import { normalizeChartData as v } from "../utils/validation.mjs";
import { createCanvas as z } from "../../../utils/helpers.mjs";
class N {
constructor(e) {
c(this, "renderers");
this.renderers = /* @__PURE__ */ new Map([
["bar", new l(e)],
["line", new C(e)],
["pie", new u(e)],
["doughnut", new p(e)],
["area", new R(e)],
["radar", new x(e)],
["scatter", new b(e)],
["bubble", new D(e)]
]);
}
createChart(e, a, r) {
var d;
const n = z(), o = window.devicePixelRatio || 1;
n.width = r.width * o, n.height = r.height * o, n.style.width = `${r.width}px`, n.style.height = `${r.height}px`;
const h = n.getContext("2d");
if (!h)
throw new Error("Failed to get 2D context");
h.scale(o, o), h.font = "14px Inter, system-ui, sans-serif", h.lineJoin = "round", h.lineCap = "round";
const m = this.renderers.get(e);
if (m) {
const s = v(a), w = e === "pie" || e === "doughnut" ? ((d = s[0]) == null ? void 0 : d.data) || [] : s;
m.render(h, w, r);
}
const i = new Image();
return i.className = "svg-chart", i.src = n.toDataURL("image/png"), i.width = r.width, i.height = r.height, i;
}
}
export {
N as ChartRenderer
};