Overview of VisFreeBrush component
VisFreeBrush is an extension of the Brush component. It is an interactive tool designed to operate within an XYContainer.
website·Indexed 33 days ago
https://unovis.devA browser-first data visualization library featuring components like Line, Treemap, Boxplot, and TopoJSONMap. Includes an MCP server for rendering charts locally in Node.js via ChartSpec JSON objects, supporting output types such as SVG, PNG, and interactive HTML.
median, quartiles (an array [q1, q3]), and whiskers (an array [min, max]). It supports configuration for barWidth, barMaxWidth, barPadding, roundedCorners, and dataStep for handling missing data. It is compatible with Axis, Crosshair, Tooltip, and Brush.packages directory contains the core library, framework-specific wrappers, and supporting applications.packages
├── angular # exports @unovis/angular
├── dev # dev demo app
├── react # exports @unovis/react
├── shared # shared code and integrations
├── solid # exports @unovis/solid
├── svelte # exports @unovis/svelte
├── ts # core library; exports @unovis/ts
├── vue # UI framework wrapper
├── website # unovis.dev websiteEvery chart in the Unovis package is described by a ChartSpec JSON object. This spec acts as a contract between tools (which generate the spec) and renderers (which consume it to produce SVG, PNG, or HTML).
Key structural rules:
container: 'xy': Used for charts with shared, domain-synchronized scales (e.g., line, area, bars, scatter, timeline, boxplot). Supports optional xAxis and yAxis configurations.container: 'single': Used for standalone components (e.g., donut, sankey, heatmap, treemap, chord, graph, map).components: An array of components to render. They are drawn in array order, meaning later entries appear on top of earlier ones.interface ChartSpec {
specVersion?: string // contract version, e.g. "0.1"
container: 'xy' | 'single'
width: number
height: number
theme: 'light' | 'dark'
title?: string
containerConfig?: Record<string, unknown> // extra container options
components: { type: string; config: Record<string, unknown> }[]
xAxis?: Record<string, unknown> // XY containers only
yAxis?: Record<string, unknown>
colors?: string[]
locale?: string // BCP-47, for date/number formatting
legend?: { name: string; color?: string; paletteIndex?: number }[]
data: unknown
}