(function () {
"use strict";
function ticks(scale) {
var spec = scale && scale.rustlavelTicks;
if (!spec) return;
delete scale.rustlavelTicks;
var prefix = spec.prefix || "";
var suffix = spec.suffix || "";
scale.ticks = Object.assign({}, scale.ticks, {
callback: function (value) {
return prefix + value.toLocaleString() + suffix;
},
});
}
function draw(canvas) {
if (canvas.dataset.chartDrawn === "true") return;
var config;
try {
config = JSON.parse(canvas.dataset.chart);
} catch (error) {
console.error("rustlavel-chart: could not read the chart configuration", error, canvas);
return;
}
if (config.options && config.options.scales) {
Object.keys(config.options.scales).forEach(function (name) {
ticks(config.options.scales[name]);
});
}
if (typeof Chart === "undefined") {
console.error("rustlavel-chart: chart.umd.js has not loaded; is the Charts plugin registered?");
return;
}
var styles = getComputedStyle(document.documentElement);
var ink = styles.getPropertyValue("--chart-ink").trim();
var grid = styles.getPropertyValue("--chart-grid").trim();
if (ink) Chart.defaults.color = ink;
if (grid) Chart.defaults.borderColor = grid;
canvas.dataset.chartDrawn = "true";
new Chart(canvas, config);
}
function drawAll(root) {
(root || document).querySelectorAll("canvas[data-chart]").forEach(draw);
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", function () {
drawAll(document);
});
} else {
drawAll(document);
}
if (typeof MutationObserver !== "undefined") {
new MutationObserver(function (records) {
records.forEach(function (record) {
record.addedNodes.forEach(function (node) {
if (node.nodeType !== 1) return;
if (node.matches && node.matches("canvas[data-chart]")) draw(node);
else drawAll(node);
});
});
}).observe(document.documentElement, { childList: true, subtree: true });
}
window.rustlavelCharts = { draw: draw, drawAll: drawAll };
})();