@unovis/mcp 1.7.0-mcp.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -1
- package/dist/codegen/index.js +23 -8
- package/dist/codegen/index.js.map +1 -1
- package/dist/html/document.d.ts +16 -3
- package/dist/html/document.js +50 -20
- package/dist/html/document.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/recipes/area.d.ts +3 -2
- package/dist/recipes/bar.d.ts +4 -3
- package/dist/recipes/bar.js +4 -1
- package/dist/recipes/bar.js.map +1 -1
- package/dist/recipes/boxplot.d.ts +3 -2
- package/dist/recipes/chord.d.ts +1 -0
- package/dist/recipes/choropleth.d.ts +1 -0
- package/dist/recipes/donut.d.ts +1 -0
- package/dist/recipes/graph.d.ts +1 -0
- package/dist/recipes/heatmap.d.ts +1 -0
- package/dist/recipes/index.d.ts +2 -0
- package/dist/recipes/index.js +3 -0
- package/dist/recipes/index.js.map +1 -1
- package/dist/recipes/line.d.ts +3 -2
- package/dist/recipes/nested-donut.d.ts +1 -0
- package/dist/recipes/radial-bar.d.ts +1 -0
- package/dist/recipes/sankey.d.ts +1 -0
- package/dist/recipes/scatter.d.ts +3 -2
- package/dist/recipes/shared.d.ts +6 -10
- package/dist/recipes/shared.js +7 -53
- package/dist/recipes/shared.js.map +1 -1
- package/dist/recipes/timeline.d.ts +1 -0
- package/dist/recipes/treemap.d.ts +1 -0
- package/dist/render/materialize.d.ts +9 -3
- package/dist/render/materialize.js +66 -27
- package/dist/render/materialize.js.map +1 -1
- package/dist/render/renderer.d.ts +2 -7
- package/dist/render/renderer.js +1 -1
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/spec-schema.d.ts +1180 -0
- package/dist/render/spec-schema.js +71 -0
- package/dist/render/spec-schema.js.map +1 -0
- package/dist/render/spec.d.ts +15 -7
- package/dist/render/spec.js +9 -8
- package/dist/render/spec.js.map +1 -1
- package/dist/render/time-ticks.d.ts +10 -0
- package/dist/render/time-ticks.js +56 -0
- package/dist/render/time-ticks.js.map +1 -0
- package/dist/server.js +12 -3
- package/dist/server.js.map +1 -1
- package/dist/tools/register.d.ts +20 -1
- package/dist/tools/register.js +98 -15
- package/dist/tools/register.js.map +1 -1
- package/dist/widget/bundle.js +470 -465
- package/dist/widget/bundle.meta.json +2 -1
- package/dist/widget/bundle.standard.js +799 -0
- package/dist/widget/entry.d.ts +4 -0
- package/dist/widget/entry.js +149 -13
- package/dist/widget/entry.js.map +1 -1
- package/dist/widget/events.d.ts +25 -0
- package/dist/widget/events.js +97 -0
- package/dist/widget/events.js.map +1 -0
- package/dist/widget/interactions.js +22 -12
- package/dist/widget/interactions.js.map +1 -1
- package/dist/widget/unpack.d.ts +1 -0
- package/dist/widget/unpack.js +1 -0
- package/dist/widget/unpack.js.map +1 -0
- package/dist/widget/variants.d.ts +14 -0
- package/dist/widget/variants.js +22 -0
- package/dist/widget/variants.js.map +1 -0
- package/docs/README.md +2 -1
- package/docs/architecture.md +29 -76
- package/docs/chart-spec.md +41 -0
- package/docs/getting-started.md +5 -0
- package/docs/interactive.md +72 -14
- package/docs/output-types.md +9 -9
- package/docs/programmatic.md +24 -0
- package/docs/tools.md +7 -7
- package/docs/troubleshooting.md +14 -44
- package/docs/webview.md +83 -0
- package/package.json +35 -13
- package/schema/chart-spec.v0.1.baseline.json +309 -0
- package/schema/chart-spec.v0.1.json +309 -0
- package/dist/env/bbox.d.ts +0 -13
- package/dist/env/bbox.js +0 -335
- package/dist/env/bbox.js.map +0 -1
- package/dist/env/canvas.d.ts +0 -9
- package/dist/env/canvas.js +0 -55
- package/dist/env/canvas.js.map +0 -1
- package/dist/env/computed-style.d.ts +0 -38
- package/dist/env/computed-style.js +0 -186
- package/dist/env/computed-style.js.map +0 -1
- package/dist/env/fonts.d.ts +0 -3
- package/dist/env/fonts.js +0 -103
- package/dist/env/fonts.js.map +0 -1
- package/dist/env/index.d.ts +0 -13
- package/dist/env/index.js +0 -121
- package/dist/env/index.js.map +0 -1
- package/dist/env/raf-queue.d.ts +0 -23
- package/dist/env/raf-queue.js +0 -51
- package/dist/env/raf-queue.js.map +0 -1
- package/dist/env/size.d.ts +0 -9
- package/dist/env/size.js +0 -30
- package/dist/env/size.js.map +0 -1
- package/dist/render/headless.d.ts +0 -62
- package/dist/render/headless.js +0 -158
- package/dist/render/headless.js.map +0 -1
- package/dist/render/mutex.d.ts +0 -9
- package/dist/render/mutex.js +0 -14
- package/dist/render/mutex.js.map +0 -1
- package/dist/render/rasterize.d.ts +0 -10
- package/dist/render/rasterize.js +0 -29
- package/dist/render/rasterize.js.map +0 -1
- package/dist/svg/collect-css.d.ts +0 -14
- package/dist/svg/collect-css.js +0 -53
- package/dist/svg/collect-css.js.map +0 -1
- package/dist/svg/css-vars.d.ts +0 -17
- package/dist/svg/css-vars.js +0 -64
- package/dist/svg/css-vars.js.map +0 -1
- package/dist/svg/header.d.ts +0 -8
- package/dist/svg/header.js +0 -81
- package/dist/svg/header.js.map +0 -1
- package/dist/svg/ids.d.ts +0 -12
- package/dist/svg/ids.js +0 -94
- package/dist/svg/ids.js.map +0 -1
- package/dist/svg/postprocess.d.ts +0 -41
- package/dist/svg/postprocess.js +0 -135
- package/dist/svg/postprocess.js.map +0 -1
- package/fonts/README.md +0 -19
package/dist/recipes/index.d.ts
CHANGED
|
@@ -3,3 +3,5 @@ export type { Recipe, AnyRecipe } from './types.js';
|
|
|
3
3
|
/** All available chart recipes, in display order */
|
|
4
4
|
export declare const recipes: AnyRecipe[];
|
|
5
5
|
export declare const recipeByName: Map<string, AnyRecipe>;
|
|
6
|
+
export { ChartInputError, assertFieldsExist, baseSpec, categoricalX, dateTickValues, field, seriesLegend, timeTickValuesFromData, xyAxes, } from './shared.js';
|
|
7
|
+
export type { DataRecord } from './shared.js';
|
package/dist/recipes/index.js
CHANGED
|
@@ -32,4 +32,7 @@ export const recipes = [
|
|
|
32
32
|
choroplethRecipe,
|
|
33
33
|
];
|
|
34
34
|
export const recipeByName = new Map(recipes.map(r => [r.name, r]));
|
|
35
|
+
// Spec-building helpers, so consumers of `@unovis/mcp/recipes` don't have to
|
|
36
|
+
// hand-roll accessors, axes, legends or time ticks that the recipes already do
|
|
37
|
+
export { ChartInputError, assertFieldsExist, baseSpec, categoricalX, dateTickValues, field, seriesLegend, timeTickValuesFromData, xyAxes, } from './shared.js';
|
|
35
38
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/recipes/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAIlD,oDAAoD;AACpD,MAAM,CAAC,MAAM,OAAO,GAAgB;IAClC,UAAU;IACV,UAAU;IACV,SAAS;IACT,aAAa;IACb,WAAW;IACX,cAAc;IACd,aAAa;IACb,YAAY;IACZ,aAAa;IACb,aAAa;IACb,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,WAAW;IACX,gBAAgB;CACjB,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/recipes/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAIlD,oDAAoD;AACpD,MAAM,CAAC,MAAM,OAAO,GAAgB;IAClC,UAAU;IACV,UAAU;IACV,SAAS;IACT,aAAa;IACb,WAAW;IACX,cAAc;IACd,aAAa;IACb,YAAY;IACZ,aAAa;IACb,aAAa;IACb,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,WAAW;IACX,gBAAgB;CACjB,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAElE,6EAA6E;AAC7E,+EAA+E;AAC/E,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,KAAK,EACL,YAAY,EACZ,sBAAsB,EACtB,MAAM,GACP,MAAM,aAAa,CAAA"}
|
package/dist/recipes/line.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare const lineInputShape: {
|
|
|
4
4
|
width: z.ZodDefault<z.ZodNumber>;
|
|
5
5
|
height: z.ZodDefault<z.ZodNumber>;
|
|
6
6
|
theme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
|
|
7
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
7
8
|
title: z.ZodOptional<z.ZodString>;
|
|
8
9
|
colors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
9
10
|
framework: z.ZodDefault<z.ZodEnum<["ts", "react", "svelte", "vue", "angular", "solid"]>>;
|
|
@@ -23,18 +24,18 @@ export declare const lineInputShape: {
|
|
|
23
24
|
style: z.ZodDefault<z.ZodEnum<["dashed", "solid", "dotted"]>>;
|
|
24
25
|
}, "strip", z.ZodTypeAny, {
|
|
25
26
|
value: number;
|
|
26
|
-
style: "solid" | "dashed" | "dotted";
|
|
27
27
|
axis: "x" | "y";
|
|
28
28
|
lineWidth: number;
|
|
29
|
+
style: "solid" | "dashed" | "dotted";
|
|
29
30
|
label?: string | undefined;
|
|
30
31
|
color?: string | undefined;
|
|
31
32
|
}, {
|
|
32
33
|
value: number;
|
|
33
34
|
label?: string | undefined;
|
|
34
35
|
color?: string | undefined;
|
|
35
|
-
style?: "solid" | "dashed" | "dotted" | undefined;
|
|
36
36
|
axis?: "x" | "y" | undefined;
|
|
37
37
|
lineWidth?: number | undefined;
|
|
38
|
+
style?: "solid" | "dashed" | "dotted" | undefined;
|
|
38
39
|
}>, "many">>;
|
|
39
40
|
referenceBands: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
40
41
|
axis: z.ZodDefault<z.ZodEnum<["x", "y"]>>;
|
|
@@ -4,6 +4,7 @@ export declare const nestedDonutInputShape: {
|
|
|
4
4
|
width: z.ZodDefault<z.ZodNumber>;
|
|
5
5
|
height: z.ZodDefault<z.ZodNumber>;
|
|
6
6
|
theme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
|
|
7
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
7
8
|
title: z.ZodOptional<z.ZodString>;
|
|
8
9
|
colors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
9
10
|
framework: z.ZodDefault<z.ZodEnum<["ts", "react", "svelte", "vue", "angular", "solid"]>>;
|
|
@@ -4,6 +4,7 @@ export declare const radialBarInputShape: {
|
|
|
4
4
|
width: z.ZodDefault<z.ZodNumber>;
|
|
5
5
|
height: z.ZodDefault<z.ZodNumber>;
|
|
6
6
|
theme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
|
|
7
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
7
8
|
title: z.ZodOptional<z.ZodString>;
|
|
8
9
|
colors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
9
10
|
framework: z.ZodDefault<z.ZodEnum<["ts", "react", "svelte", "vue", "angular", "solid"]>>;
|
package/dist/recipes/sankey.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare const sankeyInputShape: {
|
|
|
4
4
|
width: z.ZodDefault<z.ZodNumber>;
|
|
5
5
|
height: z.ZodDefault<z.ZodNumber>;
|
|
6
6
|
theme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
|
|
7
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
7
8
|
title: z.ZodOptional<z.ZodString>;
|
|
8
9
|
colors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
9
10
|
framework: z.ZodDefault<z.ZodEnum<["ts", "react", "svelte", "vue", "angular", "solid"]>>;
|
|
@@ -4,6 +4,7 @@ export declare const scatterInputShape: {
|
|
|
4
4
|
width: z.ZodDefault<z.ZodNumber>;
|
|
5
5
|
height: z.ZodDefault<z.ZodNumber>;
|
|
6
6
|
theme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
|
|
7
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
7
8
|
title: z.ZodOptional<z.ZodString>;
|
|
8
9
|
colors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
9
10
|
framework: z.ZodDefault<z.ZodEnum<["ts", "react", "svelte", "vue", "angular", "solid"]>>;
|
|
@@ -23,18 +24,18 @@ export declare const scatterInputShape: {
|
|
|
23
24
|
style: z.ZodDefault<z.ZodEnum<["dashed", "solid", "dotted"]>>;
|
|
24
25
|
}, "strip", z.ZodTypeAny, {
|
|
25
26
|
value: number;
|
|
26
|
-
style: "solid" | "dashed" | "dotted";
|
|
27
27
|
axis: "x" | "y";
|
|
28
28
|
lineWidth: number;
|
|
29
|
+
style: "solid" | "dashed" | "dotted";
|
|
29
30
|
label?: string | undefined;
|
|
30
31
|
color?: string | undefined;
|
|
31
32
|
}, {
|
|
32
33
|
value: number;
|
|
33
34
|
label?: string | undefined;
|
|
34
35
|
color?: string | undefined;
|
|
35
|
-
style?: "solid" | "dashed" | "dotted" | undefined;
|
|
36
36
|
axis?: "x" | "y" | undefined;
|
|
37
37
|
lineWidth?: number | undefined;
|
|
38
|
+
style?: "solid" | "dashed" | "dotted" | undefined;
|
|
38
39
|
}>, "many">>;
|
|
39
40
|
referenceBands: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
40
41
|
axis: z.ZodDefault<z.ZodEnum<["x", "y"]>>;
|
package/dist/recipes/shared.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare const commonInput: {
|
|
|
17
17
|
width: z.ZodDefault<z.ZodNumber>;
|
|
18
18
|
height: z.ZodDefault<z.ZodNumber>;
|
|
19
19
|
theme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
|
|
20
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
20
21
|
title: z.ZodOptional<z.ZodString>;
|
|
21
22
|
colors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
22
23
|
framework: z.ZodDefault<z.ZodEnum<["ts", "react", "svelte", "vue", "angular", "solid"]>>;
|
|
@@ -41,18 +42,18 @@ export declare const xyDecorations: {
|
|
|
41
42
|
style: z.ZodDefault<z.ZodEnum<["dashed", "solid", "dotted"]>>;
|
|
42
43
|
}, "strip", z.ZodTypeAny, {
|
|
43
44
|
value: number;
|
|
44
|
-
style: "solid" | "dashed" | "dotted";
|
|
45
45
|
axis: "x" | "y";
|
|
46
46
|
lineWidth: number;
|
|
47
|
+
style: "solid" | "dashed" | "dotted";
|
|
47
48
|
label?: string | undefined;
|
|
48
49
|
color?: string | undefined;
|
|
49
50
|
}, {
|
|
50
51
|
value: number;
|
|
51
52
|
label?: string | undefined;
|
|
52
53
|
color?: string | undefined;
|
|
53
|
-
style?: "solid" | "dashed" | "dotted" | undefined;
|
|
54
54
|
axis?: "x" | "y" | undefined;
|
|
55
55
|
lineWidth?: number | undefined;
|
|
56
|
+
style?: "solid" | "dashed" | "dotted" | undefined;
|
|
56
57
|
}>, "many">>;
|
|
57
58
|
referenceBands: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
58
59
|
axis: z.ZodDefault<z.ZodEnum<["x", "y"]>>;
|
|
@@ -118,13 +119,7 @@ export declare function categoricalX(data: DataRecord[], fieldName: string, isTi
|
|
|
118
119
|
* Explicit integer tickValues — approximate d3 tick counts can emit
|
|
119
120
|
* fractional ticks that would round into duplicate category labels. */
|
|
120
121
|
export declare function categoryAxis(base: AxisSpec, categories: string[]): AxisSpec;
|
|
121
|
-
|
|
122
|
-
* arbitrary times of day, which the date formatter would render as
|
|
123
|
-
* time-of-day labels ("08:53 AM" on a 3-month chart) — align ticks to
|
|
124
|
-
* month/day/hour/minute boundaries instead. */
|
|
125
|
-
export declare function dateTickValues(min: number, max: number, target?: number): number[] | undefined;
|
|
126
|
-
/** Tick values for a time axis derived from the data extent of a date field */
|
|
127
|
-
export declare function timeTickValuesFromData(data: DataRecord[], fieldName: string): number[] | undefined;
|
|
122
|
+
export { dateTickValues, timeTickValuesFromData } from '../render/time-ticks.js';
|
|
128
123
|
export declare function seriesLegend(labels: string[], enabled: boolean, colors?: string[]): LegendItemSpec[] | undefined;
|
|
129
124
|
/** Common ChartSpec fields from common tool inputs */
|
|
130
125
|
export declare function baseSpec(input: {
|
|
@@ -133,7 +128,8 @@ export declare function baseSpec(input: {
|
|
|
133
128
|
theme: 'light' | 'dark';
|
|
134
129
|
title?: string;
|
|
135
130
|
colors?: string[];
|
|
136
|
-
|
|
131
|
+
locale?: string;
|
|
132
|
+
}): Pick<ChartSpec, 'specVersion' | 'width' | 'height' | 'theme' | 'title' | 'colors' | 'locale'>;
|
|
137
133
|
export declare function xyAxes(input: {
|
|
138
134
|
xAxisLabel?: string;
|
|
139
135
|
yAxisLabel?: string;
|
package/dist/recipes/shared.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { z } from 'zod';
|
|
10
10
|
import { ChartInputError } from '../render/materialize.js';
|
|
11
|
+
import { SPEC_VERSION } from '../render/spec.js';
|
|
11
12
|
export { ChartInputError };
|
|
12
13
|
// ── schema fragments ────────────────────────────────────────────────────────
|
|
13
14
|
export const dataValue = z.union([z.string(), z.number(), z.boolean(), z.null()]);
|
|
@@ -23,6 +24,8 @@ export const commonInput = {
|
|
|
23
24
|
width: z.number().int().min(100).max(4000).default(800).describe('Chart width in pixels'),
|
|
24
25
|
height: z.number().int().min(100).max(4000).default(480).describe('Chart height in pixels'),
|
|
25
26
|
theme: z.enum(['light', 'dark']).default('light').describe('Color theme of the chart'),
|
|
27
|
+
locale: z.string().regex(/^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/, 'BCP-47 locale, e.g. de-DE').optional()
|
|
28
|
+
.describe('BCP-47 locale for date and number formatting on axes and tooltips, e.g. "de-DE" or "ja". Defaults to en-US'),
|
|
26
29
|
title: z.string().optional().describe('Chart title rendered above the chart'),
|
|
27
30
|
colors: z.array(z.string().regex(/^#[0-9a-fA-F]{3,8}$/, 'hex color, e.g. #4D8CFD')).max(12).optional()
|
|
28
31
|
.describe('Custom color palette (hex). Replaces the default palette in order'),
|
|
@@ -31,7 +34,7 @@ export const commonInput = {
|
|
|
31
34
|
outputType: z.enum(['svg', 'png', 'html', 'interactive', 'config', 'code']).default('svg')
|
|
32
35
|
.describe('svg: SVG markup; png: a rendered PNG image; html: a self-contained interactive HTML file ' +
|
|
33
36
|
'(tooltips, crosshair, hover — saved to disk, path returned); interactive: an interactive chart ' +
|
|
34
|
-
'rendered inline by clients that support MCP
|
|
37
|
+
'rendered inline by clients that support the MCP Apps extension; config: the resolved Unovis chart spec as JSON'),
|
|
35
38
|
outputPath: z.string().optional()
|
|
36
39
|
.describe('Absolute file path with an extension matching outputType (.svg, .png or .html) — saves the chart to disk and returns the path instead of inline content'),
|
|
37
40
|
scale: z.number().min(1).max(4).default(2)
|
|
@@ -141,58 +144,7 @@ export function categoryAxis(base, categories) {
|
|
|
141
144
|
tickValues,
|
|
142
145
|
};
|
|
143
146
|
}
|
|
144
|
-
|
|
145
|
-
const HOUR = 60 * MINUTE;
|
|
146
|
-
const DAY = 24 * HOUR;
|
|
147
|
-
/** Calendar-aligned tick values for date axes. Linear-scale ticks land at
|
|
148
|
-
* arbitrary times of day, which the date formatter would render as
|
|
149
|
-
* time-of-day labels ("08:53 AM" on a 3-month chart) — align ticks to
|
|
150
|
-
* month/day/hour/minute boundaries instead. */
|
|
151
|
-
export function dateTickValues(min, max, target = 7) {
|
|
152
|
-
const span = max - min;
|
|
153
|
-
if (!Number.isFinite(span) || span <= 0)
|
|
154
|
-
return undefined;
|
|
155
|
-
const ticks = [];
|
|
156
|
-
if (span >= 60 * DAY) { // month starts
|
|
157
|
-
const stepMonths = Math.max(1, Math.ceil(span / (30 * DAY) / target));
|
|
158
|
-
const start = new Date(min);
|
|
159
|
-
let date = new Date(Date.UTC(start.getUTCFullYear(), start.getUTCMonth(), 1));
|
|
160
|
-
if (date.getTime() < min)
|
|
161
|
-
date = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + 1, 1));
|
|
162
|
-
while (date.getTime() <= max && ticks.length < 24) {
|
|
163
|
-
ticks.push(date.getTime());
|
|
164
|
-
date = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + stepMonths, 1));
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
// day / hour / minute boundaries (uniform in UTC epoch time)
|
|
169
|
-
const unit = span >= 2 * DAY ? DAY : span >= 2 * HOUR ? HOUR : MINUTE;
|
|
170
|
-
const niceSteps = unit === DAY ? [1, 2, 7, 14] : unit === HOUR ? [1, 2, 3, 6, 12] : [1, 2, 5, 10, 15, 30];
|
|
171
|
-
const rawStep = span / unit / target;
|
|
172
|
-
const step = (niceSteps.find(s => s >= rawStep) ?? Math.ceil(rawStep)) * unit;
|
|
173
|
-
for (let t = Math.ceil(min / step) * step; t <= max && ticks.length < 24; t += step)
|
|
174
|
-
ticks.push(t);
|
|
175
|
-
}
|
|
176
|
-
return ticks.length >= 2 ? ticks : undefined;
|
|
177
|
-
}
|
|
178
|
-
/** Tick values for a time axis derived from the data extent of a date field */
|
|
179
|
-
export function timeTickValuesFromData(data, fieldName) {
|
|
180
|
-
let min = Infinity;
|
|
181
|
-
let max = -Infinity;
|
|
182
|
-
for (const record of data) {
|
|
183
|
-
const raw = record[fieldName];
|
|
184
|
-
if (raw === null || raw === undefined || raw === '')
|
|
185
|
-
continue;
|
|
186
|
-
const time = typeof raw === 'number' ? raw : new Date(String(raw)).getTime();
|
|
187
|
-
if (Number.isNaN(time))
|
|
188
|
-
continue;
|
|
189
|
-
if (time < min)
|
|
190
|
-
min = time;
|
|
191
|
-
if (time > max)
|
|
192
|
-
max = time;
|
|
193
|
-
}
|
|
194
|
-
return dateTickValues(min, max);
|
|
195
|
-
}
|
|
147
|
+
export { dateTickValues, timeTickValuesFromData } from '../render/time-ticks.js';
|
|
196
148
|
export function seriesLegend(labels, enabled, colors) {
|
|
197
149
|
if (!enabled || labels.length < 2)
|
|
198
150
|
return undefined;
|
|
@@ -201,11 +153,13 @@ export function seriesLegend(labels, enabled, colors) {
|
|
|
201
153
|
/** Common ChartSpec fields from common tool inputs */
|
|
202
154
|
export function baseSpec(input) {
|
|
203
155
|
return {
|
|
156
|
+
specVersion: SPEC_VERSION,
|
|
204
157
|
width: input.width,
|
|
205
158
|
height: input.height,
|
|
206
159
|
theme: input.theme,
|
|
207
160
|
title: input.title,
|
|
208
161
|
colors: input.colors,
|
|
162
|
+
locale: input.locale,
|
|
209
163
|
};
|
|
210
164
|
}
|
|
211
165
|
export function xyAxes(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/recipes/shared.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/recipes/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export declare const timelineInputShape: {
|
|
|
8
8
|
width: z.ZodDefault<z.ZodNumber>;
|
|
9
9
|
height: z.ZodDefault<z.ZodNumber>;
|
|
10
10
|
theme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
|
|
11
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
11
12
|
title: z.ZodOptional<z.ZodString>;
|
|
12
13
|
colors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
13
14
|
framework: z.ZodDefault<z.ZodEnum<["ts", "react", "svelte", "vue", "angular", "solid"]>>;
|
|
@@ -4,6 +4,7 @@ export declare const treemapInputShape: {
|
|
|
4
4
|
width: z.ZodDefault<z.ZodNumber>;
|
|
5
5
|
height: z.ZodDefault<z.ZodNumber>;
|
|
6
6
|
theme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
|
|
7
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
7
8
|
title: z.ZodOptional<z.ZodString>;
|
|
8
9
|
colors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
9
10
|
framework: z.ZodDefault<z.ZodEnum<["ts", "react", "svelte", "vue", "angular", "solid"]>>;
|
|
@@ -3,19 +3,25 @@
|
|
|
3
3
|
* Converts JSON accessor descriptors into real functions. Field access is by
|
|
4
4
|
* property name only — user input is never evaluated as code.
|
|
5
5
|
*/
|
|
6
|
-
import type { UnovisLib } from '
|
|
6
|
+
import type { UnovisLib } from '@unovis/ssr';
|
|
7
7
|
import type { AccessorRef, ChartSpec } from './spec.js';
|
|
8
8
|
type AnyFn = (...args: any[]) => any;
|
|
9
9
|
export declare class ChartInputError extends Error {
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
/** Time tick formatter: picks granularity from the value */
|
|
12
|
+
export declare const formatDateTick: (value: unknown, locale?: string) => string;
|
|
13
|
+
export declare const formatNumTick: (value: unknown, locale?: string) => string;
|
|
14
|
+
export declare function materializeAccessor(ref: AccessorRef, locale?: string): AnyFn | unknown;
|
|
12
15
|
/** Deep-walk a config value, replacing accessor descriptors with functions */
|
|
13
|
-
export declare function materializeValue(value: unknown): unknown;
|
|
16
|
+
export declare function materializeValue(value: unknown, locale?: string): unknown;
|
|
14
17
|
export interface MaterializedChart {
|
|
15
18
|
containerType: 'xy' | 'single';
|
|
16
19
|
containerConfig: Record<string, unknown>;
|
|
17
20
|
data: unknown;
|
|
18
21
|
}
|
|
22
|
+
/** Component classes recipes are allowed to instantiate */
|
|
23
|
+
export declare const XY_COMPONENTS: Set<string>;
|
|
24
|
+
export declare const SINGLE_COMPONENTS: Set<string>;
|
|
19
25
|
/** Components that finish rendering asynchronously (after layout calculation)
|
|
20
26
|
* and expose their own onRenderComplete hook the renderer must await */
|
|
21
27
|
export declare const ASYNC_COMPONENTS: Set<string>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { isAccessorRef } from './spec.js';
|
|
1
|
+
import { isAccessorRef, SPEC_VERSION } from './spec.js';
|
|
2
|
+
import { timeTickValuesFromData } from './time-ticks.js';
|
|
2
3
|
export class ChartInputError extends Error {
|
|
3
4
|
}
|
|
4
5
|
const coerceNumber = (value) => {
|
|
@@ -16,23 +17,26 @@ const coerceDate = (value) => {
|
|
|
16
17
|
return Number.isNaN(time) ? undefined : time;
|
|
17
18
|
};
|
|
18
19
|
/** Time tick formatter: picks granularity from the value */
|
|
19
|
-
const formatDateTick = (value) => {
|
|
20
|
-
|
|
20
|
+
export const formatDateTick = (value, locale = 'en-US') => {
|
|
21
|
+
// Axes hand over epoch ms; tooltip headers can hand over the raw record
|
|
22
|
+
// value, which may be a date string
|
|
23
|
+
const numeric = typeof value === 'number' ? value : Number(value);
|
|
24
|
+
const time = Number.isFinite(numeric) ? numeric : new Date(String(value)).getTime();
|
|
21
25
|
if (!Number.isFinite(time))
|
|
22
26
|
return String(value);
|
|
23
27
|
const date = new Date(time);
|
|
24
28
|
const opts = date.getUTCHours() === 0 && date.getUTCMinutes() === 0
|
|
25
29
|
? (date.getUTCDate() === 1 ? { year: 'numeric', month: 'short' } : { month: 'short', day: 'numeric' })
|
|
26
30
|
: { hour: '2-digit', minute: '2-digit' };
|
|
27
|
-
return date.toLocaleString(
|
|
31
|
+
return date.toLocaleString(locale, { ...opts, timeZone: 'UTC' });
|
|
28
32
|
};
|
|
29
|
-
const formatNumTick = (value) => {
|
|
33
|
+
export const formatNumTick = (value, locale = 'en-US') => {
|
|
30
34
|
const n = Number(value);
|
|
31
35
|
if (!Number.isFinite(n))
|
|
32
36
|
return String(value);
|
|
33
|
-
return n.toLocaleString(
|
|
37
|
+
return n.toLocaleString(locale, { maximumFractionDigits: 6 });
|
|
34
38
|
};
|
|
35
|
-
export function materializeAccessor(ref) {
|
|
39
|
+
export function materializeAccessor(ref, locale) {
|
|
36
40
|
if ('$field' in ref) {
|
|
37
41
|
const { $field: field, as } = ref;
|
|
38
42
|
if (as === 'number')
|
|
@@ -46,9 +50,9 @@ export function materializeAccessor(ref) {
|
|
|
46
50
|
if ('$const' in ref)
|
|
47
51
|
return () => ref.$const;
|
|
48
52
|
if ('$dateTickFormat' in ref)
|
|
49
|
-
return formatDateTick;
|
|
53
|
+
return (value) => formatDateTick(value, locale);
|
|
50
54
|
if ('$numTickFormat' in ref)
|
|
51
|
-
return formatNumTick;
|
|
55
|
+
return (value) => formatNumTick(value, locale);
|
|
52
56
|
if ('$lookup' in ref) {
|
|
53
57
|
const values = ref.$lookup;
|
|
54
58
|
return (d) => values[Math.round(Number(d)) % values.length] ?? String(d);
|
|
@@ -59,7 +63,7 @@ export function materializeAccessor(ref) {
|
|
|
59
63
|
const value = d?.[field];
|
|
60
64
|
if (value === null || value === undefined)
|
|
61
65
|
return '';
|
|
62
|
-
return `${prefix}${formatNumTick(value)}${suffix}`;
|
|
66
|
+
return `${prefix}${formatNumTick(value, locale)}${suffix}`;
|
|
63
67
|
};
|
|
64
68
|
}
|
|
65
69
|
if ('$mapField' in ref) {
|
|
@@ -69,33 +73,37 @@ export function materializeAccessor(ref) {
|
|
|
69
73
|
return ref;
|
|
70
74
|
}
|
|
71
75
|
/** Deep-walk a config value, replacing accessor descriptors with functions */
|
|
72
|
-
export function materializeValue(value) {
|
|
76
|
+
export function materializeValue(value, locale) {
|
|
73
77
|
if (isAccessorRef(value))
|
|
74
|
-
return materializeAccessor(value);
|
|
78
|
+
return materializeAccessor(value, locale);
|
|
75
79
|
if (Array.isArray(value))
|
|
76
|
-
return value.map(materializeValue);
|
|
80
|
+
return value.map(v => materializeValue(v, locale));
|
|
77
81
|
if (typeof value === 'object' && value !== null) {
|
|
78
82
|
const out = {};
|
|
79
83
|
for (const [key, v] of Object.entries(value))
|
|
80
|
-
out[key] = materializeValue(v);
|
|
84
|
+
out[key] = materializeValue(v, locale);
|
|
81
85
|
return out;
|
|
82
86
|
}
|
|
83
87
|
return value;
|
|
84
88
|
}
|
|
85
89
|
/** Component classes recipes are allowed to instantiate */
|
|
86
|
-
const XY_COMPONENTS = new Set(['Line', 'Area', 'GroupedBar', 'StackedBar', 'Scatter', 'Timeline', 'Boxplot', 'XYLabels', 'Plotband', 'Plotline']);
|
|
87
|
-
const SINGLE_COMPONENTS = new Set(['Donut', 'NestedDonut', 'RadialBar', 'Sankey', 'Heatmap', 'Treemap', 'ChordDiagram', 'Graph', 'TopoJSONMap']);
|
|
90
|
+
export const XY_COMPONENTS = new Set(['Line', 'Area', 'GroupedBar', 'StackedBar', 'Scatter', 'Timeline', 'Boxplot', 'XYLabels', 'Plotband', 'Plotline']);
|
|
91
|
+
export const SINGLE_COMPONENTS = new Set(['Donut', 'NestedDonut', 'RadialBar', 'Sankey', 'Heatmap', 'Treemap', 'ChordDiagram', 'Graph', 'TopoJSONMap']);
|
|
88
92
|
/** Components that finish rendering asynchronously (after layout calculation)
|
|
89
93
|
* and expose their own onRenderComplete hook the renderer must await */
|
|
90
94
|
export const ASYNC_COMPONENTS = new Set(['Graph']);
|
|
91
|
-
function instantiateComponent(lib, spec, options) {
|
|
95
|
+
function instantiateComponent(lib, spec, options, locale) {
|
|
92
96
|
const allowed = XY_COMPONENTS.has(spec.type) || SINGLE_COMPONENTS.has(spec.type);
|
|
93
97
|
if (!allowed)
|
|
94
98
|
throw new ChartInputError(`Unsupported component type: ${spec.type}`);
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
+
// Own-property checks stay inline (not in a helper) so static analysis can
|
|
100
|
+
// see that spec-controlled names never reach inherited members
|
|
101
|
+
const componentClass = Object.prototype.hasOwnProperty.call(lib, spec.type)
|
|
102
|
+
? lib[spec.type]
|
|
103
|
+
: undefined;
|
|
104
|
+
if (typeof componentClass !== 'function')
|
|
105
|
+
throw new ChartInputError(`Component ${spec.type} is not available in this bundle — regenerate the document for this chart type`);
|
|
106
|
+
const config = materializeValue(spec.config, locale);
|
|
99
107
|
config.duration = options.duration ?? 0;
|
|
100
108
|
if (ASYNC_COMPONENTS.has(spec.type) && options.onComponentComplete)
|
|
101
109
|
config.onRenderComplete = options.onComponentComplete;
|
|
@@ -105,8 +113,10 @@ function instantiateComponent(lib, spec, options) {
|
|
|
105
113
|
if (projection?.$mapProjection) {
|
|
106
114
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
107
115
|
const projections = lib.MapProjection;
|
|
108
|
-
const factory = projections
|
|
109
|
-
|
|
116
|
+
const factory = projections && Object.prototype.hasOwnProperty.call(projections, projection.$mapProjection)
|
|
117
|
+
? projections[projection.$mapProjection]
|
|
118
|
+
: undefined;
|
|
119
|
+
if (typeof factory !== 'function')
|
|
110
120
|
throw new ChartInputError(`Unknown map projection: ${projection.$mapProjection}`);
|
|
111
121
|
config.projection = factory();
|
|
112
122
|
}
|
|
@@ -114,20 +124,49 @@ function instantiateComponent(lib, spec, options) {
|
|
|
114
124
|
return new componentClass(config);
|
|
115
125
|
}
|
|
116
126
|
export function materializeChart(lib, spec, options = {}) {
|
|
117
|
-
|
|
127
|
+
// Refused with a reason instead of the blank chart version drift produces
|
|
128
|
+
// otherwise. Semver-0.x rule: while the major is 0 the minor is the
|
|
129
|
+
// breaking-change counter, so a newer minor is refused too; from 1.0 on,
|
|
130
|
+
// minors are additive and only a newer major is refused.
|
|
131
|
+
if (spec.specVersion !== undefined) {
|
|
132
|
+
const parse = (value) => {
|
|
133
|
+
const match = /^(\d+)\.(\d+)$/.exec(String(value));
|
|
134
|
+
return match ? [Number(match[1]), Number(match[2])] : [Number.POSITIVE_INFINITY, 0];
|
|
135
|
+
};
|
|
136
|
+
const [major, minor] = parse(spec.specVersion);
|
|
137
|
+
const [supportedMajor, supportedMinor] = parse(SPEC_VERSION);
|
|
138
|
+
const newer = major > supportedMajor || (major === 0 && supportedMajor === 0 && minor > supportedMinor);
|
|
139
|
+
if (newer) {
|
|
140
|
+
throw new ChartInputError(`Chart spec version ${spec.specVersion} is newer than this renderer supports (${SPEC_VERSION}) — upgrade @unovis/mcp`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const locale = spec.locale;
|
|
144
|
+
const base = materializeValue(spec.containerConfig ?? {}, locale);
|
|
118
145
|
const duration = options.duration ?? 0;
|
|
119
146
|
const size = options.responsive ? {} : { width: spec.width, height: spec.height };
|
|
120
147
|
if (spec.container === 'xy') {
|
|
121
148
|
const components = spec.components.map(c => {
|
|
122
149
|
if (!XY_COMPONENTS.has(c.type))
|
|
123
150
|
throw new ChartInputError(`${c.type} cannot be used in an XY container`);
|
|
124
|
-
return instantiateComponent(lib, c, options);
|
|
151
|
+
return instantiateComponent(lib, c, options, locale);
|
|
125
152
|
});
|
|
126
153
|
const axisConfig = (axis, type) => {
|
|
127
154
|
if (!axis)
|
|
128
155
|
return undefined;
|
|
129
|
-
return new lib.Axis({ ...materializeValue(axis), type, duration });
|
|
156
|
+
return new lib.Axis({ ...materializeValue(axis, locale), type, duration });
|
|
130
157
|
};
|
|
158
|
+
// Hand-written specs usually omit tickValues; linear-scale defaults
|
|
159
|
+
// degenerate on time domains (one tick, time-of-day labels), so derive
|
|
160
|
+
// calendar-aligned ticks from the data the way the recipes do.
|
|
161
|
+
if (spec.xAxis && '$dateTickFormat' in (spec.xAxis.tickFormat ?? {}) && spec.xAxis.tickValues === undefined) {
|
|
162
|
+
const xField = spec.components[0]?.config?.x?.$field;
|
|
163
|
+
const records = Array.isArray(spec.data) ? spec.data : undefined;
|
|
164
|
+
if (xField && records) {
|
|
165
|
+
const tickValues = timeTickValuesFromData(records, xField);
|
|
166
|
+
if (tickValues)
|
|
167
|
+
spec = { ...spec, xAxis: { ...spec.xAxis, tickValues } };
|
|
168
|
+
}
|
|
169
|
+
}
|
|
131
170
|
return {
|
|
132
171
|
containerType: 'xy',
|
|
133
172
|
containerConfig: {
|
|
@@ -144,7 +183,7 @@ export function materializeChart(lib, spec, options = {}) {
|
|
|
144
183
|
}
|
|
145
184
|
if (spec.components.length !== 1)
|
|
146
185
|
throw new ChartInputError('single container requires exactly one component');
|
|
147
|
-
const component = instantiateComponent(lib, spec.components[0], options);
|
|
186
|
+
const component = instantiateComponent(lib, spec.components[0], options, locale);
|
|
148
187
|
return {
|
|
149
188
|
containerType: 'single',
|
|
150
189
|
containerConfig: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialize.js","sourceRoot":"","sources":["../../src/render/materialize.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"materialize.js","sourceRoot":"","sources":["../../src/render/materialize.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
* The headless mechanics (DOM, frame flushing, serialization) live in
|
|
4
|
-
* headless.ts; this module only knows how to turn a spec into components.
|
|
5
|
-
*/
|
|
1
|
+
import type { RenderResult } from '@unovis/ssr';
|
|
6
2
|
import { ChartInputError } from './materialize.js';
|
|
7
|
-
import type { RenderResult } from './headless.js';
|
|
8
3
|
import type { ChartSpec, ComponentSpec } from './spec.js';
|
|
9
4
|
export { ChartInputError };
|
|
10
5
|
export interface RenderOptions {
|
|
@@ -13,7 +8,7 @@ export interface RenderOptions {
|
|
|
13
8
|
/** Keep emotion classes / skip style inlining (debug) */
|
|
14
9
|
keepClasses?: boolean;
|
|
15
10
|
}
|
|
16
|
-
export type { RenderResult } from '
|
|
11
|
+
export type { RenderResult } from '@unovis/ssr';
|
|
17
12
|
/** Resolve `{ $unovisMap: name }` markers to lazily-imported TopoJSON data
|
|
18
13
|
* (the map bundles are large — only loaded when a map chart renders) and
|
|
19
14
|
* default `mapFeatureName` to the map's feature collection key. */
|
package/dist/render/renderer.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* The headless mechanics (DOM, frame flushing, serialization) live in
|
|
4
4
|
* headless.ts; this module only knows how to turn a spec into components.
|
|
5
5
|
*/
|
|
6
|
+
import { renderToSvg } from '@unovis/ssr';
|
|
6
7
|
import { materializeChart, ChartInputError, ASYNC_COMPONENTS } from './materialize.js';
|
|
7
|
-
import { renderToSvg } from './headless.js';
|
|
8
8
|
export { ChartInputError };
|
|
9
9
|
/** Unovis map names accepted in `{ $unovisMap: name }` config markers */
|
|
10
10
|
const UNOVIS_MAPS = new Set([
|