/** * Shared chart-data helpers — pure parsing / type-inference / animation math. * * Lets any template bind the SAME scraped-table → chart pipeline without * duplicating the renderer. THIS MODULE IS STYLE-FREE: no colors, fonts, or JSX. * Renderers supply their own theme to the few helpers that need axis styling * (e.g. buildXAxisProps takes the tick fill + font family as arguments), so the * look is fully owned per template while the data logic stays here. * * To add charts to a new template: build a `