@tanstack/charts
Version:
A chart grammar for TypeScript and JavaScript. Marks consume your data directly, channels describe visual encodings, and the engine compiles them into a renderer-neutral keyed scene. TanStack's compact scales cover common numeric and categorical mappings.
30 lines (29 loc) • 1.11 kB
JavaScript
function resolveNativePaint(paint, context) {
const { color, canvas } = context;
const value = paint.trim();
if (value === "currentColor" || value === "CanvasText") return color;
if (value === "Canvas") return canvas ?? color;
if (!value.startsWith("var(") || !value.endsWith(")")) return value;
const fallback = cssVariableFallback(value);
return fallback ? resolveNativePaint(fallback, context) : color;
}
function resolveNativeSolidPaint(paint, context, resolvePaint = resolveNativePaint) {
const resolved = resolvePaint(paint, context);
return typeof resolved === "string" && resolved.trim().startsWith("url(") && resolved.trim().endsWith(")") ? context.color : resolved;
}
function cssVariableFallback(value) {
let depth = 0;
for (let index = 4; index < value.length - 1; index += 1) {
const character = value[index];
if (character === "(") depth += 1;
if (character === ")") depth -= 1;
if (character === "," && depth === 0) {
return value.slice(index + 1, -1).trim();
}
}
return void 0;
}
export {
resolveNativePaint,
resolveNativeSolidPaint
};