@bestagentkits/render 0.1.0 → 0.2.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/CHANGELOG.md +119 -0
- package/README.md +189 -34
- package/assets/fonts/bricolage-grotesque/OFL.txt +93 -0
- package/assets/fonts/fraunces/OFL.txt +93 -0
- package/assets/fonts/geist/OFL.txt +93 -0
- package/assets/fonts/inter-tight/OFL.txt +93 -0
- package/assets/fonts/jetbrains-mono/OFL.txt +93 -0
- package/assets/fonts/plus-jakarta-sans/OFL.txt +93 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +51 -10
- package/dist/cli.js.map +1 -1
- package/dist/mcp-server.d.ts +37 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +274 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/registry/roster.d.ts +1 -1
- package/dist/registry/roster.d.ts.map +1 -1
- package/dist/registry/roster.js +222 -6
- package/dist/registry/roster.js.map +1 -1
- package/dist/render/block-helpers.d.ts +52 -0
- package/dist/render/block-helpers.d.ts.map +1 -0
- package/dist/render/block-helpers.js +113 -0
- package/dist/render/block-helpers.js.map +1 -0
- package/dist/render/blocks.d.ts +3 -4
- package/dist/render/blocks.d.ts.map +1 -1
- package/dist/render/blocks.js +126 -121
- package/dist/render/blocks.js.map +1 -1
- package/dist/render/charts.d.ts +5 -0
- package/dist/render/charts.d.ts.map +1 -1
- package/dist/render/charts.js +205 -90
- package/dist/render/charts.js.map +1 -1
- package/dist/render/derived-variables.d.ts +17 -0
- package/dist/render/derived-variables.d.ts.map +1 -0
- package/dist/render/derived-variables.js +17 -0
- package/dist/render/derived-variables.js.map +1 -0
- package/dist/render/diagram-fallback.d.ts +25 -0
- package/dist/render/diagram-fallback.d.ts.map +1 -0
- package/dist/render/diagram-fallback.js +86 -0
- package/dist/render/diagram-fallback.js.map +1 -0
- package/dist/render/document.d.ts +4 -0
- package/dist/render/document.d.ts.map +1 -1
- package/dist/render/document.js +34 -6
- package/dist/render/document.js.map +1 -1
- package/dist/render/effects-styles.d.ts +14 -0
- package/dist/render/effects-styles.d.ts.map +1 -0
- package/dist/render/effects-styles.js +39 -0
- package/dist/render/effects-styles.js.map +1 -0
- package/dist/render/embedded-fonts.generated.d.ts +22 -0
- package/dist/render/embedded-fonts.generated.d.ts.map +1 -0
- package/dist/render/embedded-fonts.generated.js +59 -0
- package/dist/render/embedded-fonts.generated.js.map +1 -0
- package/dist/render/feature-styles.d.ts +14 -0
- package/dist/render/feature-styles.d.ts.map +1 -0
- package/dist/render/feature-styles.js +161 -0
- package/dist/render/feature-styles.js.map +1 -0
- package/dist/render/font-faces.d.ts +22 -0
- package/dist/render/font-faces.d.ts.map +1 -0
- package/dist/render/font-faces.js +60 -0
- package/dist/render/font-faces.js.map +1 -0
- package/dist/render/outline.d.ts +21 -0
- package/dist/render/outline.d.ts.map +1 -0
- package/dist/render/outline.js +44 -0
- package/dist/render/outline.js.map +1 -0
- package/dist/render/render.d.ts.map +1 -1
- package/dist/render/render.js +53 -10
- package/dist/render/render.js.map +1 -1
- package/dist/render/runtime.d.ts.map +1 -1
- package/dist/render/runtime.js +184 -10
- package/dist/render/runtime.js.map +1 -1
- package/dist/render/showcase-blocks.d.ts +47 -0
- package/dist/render/showcase-blocks.d.ts.map +1 -0
- package/dist/render/showcase-blocks.js +349 -0
- package/dist/render/showcase-blocks.js.map +1 -0
- package/dist/render/showcase-styles.d.ts +15 -0
- package/dist/render/showcase-styles.d.ts.map +1 -0
- package/dist/render/showcase-styles.js +217 -0
- package/dist/render/showcase-styles.js.map +1 -0
- package/dist/render/signature-styles.d.ts +18 -0
- package/dist/render/signature-styles.d.ts.map +1 -0
- package/dist/render/signature-styles.js +41 -0
- package/dist/render/signature-styles.js.map +1 -0
- package/dist/render/styles.d.ts +18 -9
- package/dist/render/styles.d.ts.map +1 -1
- package/dist/render/styles.js +224 -128
- package/dist/render/styles.js.map +1 -1
- package/dist/render/surface-styles.d.ts +24 -0
- package/dist/render/surface-styles.d.ts.map +1 -0
- package/dist/render/surface-styles.js +41 -0
- package/dist/render/surface-styles.js.map +1 -0
- package/dist/render/verify.d.ts.map +1 -1
- package/dist/render/verify.js +30 -0
- package/dist/render/verify.js.map +1 -1
- package/dist/spec/normalize.d.ts.map +1 -1
- package/dist/spec/normalize.js +32 -0
- package/dist/spec/normalize.js.map +1 -1
- package/dist/theme/load-theme.d.ts +2 -2
- package/dist/theme/load-theme.d.ts.map +1 -1
- package/dist/theme/load-theme.js +46 -10
- package/dist/theme/load-theme.js.map +1 -1
- package/dist/theme/presets.d.ts +4 -3
- package/dist/theme/presets.d.ts.map +1 -1
- package/dist/theme/presets.js +35 -18
- package/dist/theme/presets.js.map +1 -1
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +4 -4
- package/dist/theme/tokens.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/llms.txt +25 -0
- package/package.json +9 -3
package/dist/render/charts.js
CHANGED
|
@@ -8,101 +8,193 @@
|
|
|
8
8
|
*
|
|
9
9
|
* All geometry is rounded to two decimals before it reaches the markup, because
|
|
10
10
|
* floating-point noise would otherwise break byte-determinism across engines.
|
|
11
|
+
*
|
|
12
|
+
* Colour never appears here: shapes carry a series class (`ak-chart-s0` …
|
|
13
|
+
* `ak-chart-s5`) and the stylesheet maps each class onto the theme accent and
|
|
14
|
+
* hue rotations of it, so a chart always follows the active preset and colour
|
|
15
|
+
* scheme and no two series share a colour.
|
|
11
16
|
*/
|
|
12
17
|
import { escapeAttribute, escapeText, renderAttributes } from './escape.js';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Shared viewBox width. Text inside the SVG scales with the rendered width, so
|
|
20
|
+
* this is sized for a full-width card: labels render near their nominal size
|
|
21
|
+
* there, and the canvas scrolls rather than shrinks on narrow screens.
|
|
22
|
+
*/
|
|
23
|
+
const WIDTH = 800;
|
|
24
|
+
/** Number of distinct series colours the stylesheet defines. */
|
|
25
|
+
const PALETTE_SIZE = 6;
|
|
26
|
+
/** Bars wider than this read as slabs rather than marks. */
|
|
27
|
+
const MAX_BAR_WIDTH = 56;
|
|
28
|
+
const PROGRESS_ROW = 32;
|
|
29
|
+
const PROGRESS_LABEL_WIDTH = 132;
|
|
30
|
+
const CARTESIAN = { width: WIDTH, height: 300, top: 20, right: 36, bottom: 36, left: 56 };
|
|
31
|
+
const RADIAL = { width: WIDTH, height: 240, top: 0, right: 0, bottom: 0, left: 0 };
|
|
32
|
+
const SPARK = { width: WIDTH, height: 72, top: 10, right: 10, bottom: 10, left: 10 };
|
|
16
33
|
function round(value) {
|
|
17
34
|
return Math.round(value * 100) / 100;
|
|
18
35
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
36
|
+
/** Group digits with a thin comma, deterministically and without locale data. */
|
|
37
|
+
function formatNumber(value) {
|
|
38
|
+
const rounded = round(value);
|
|
39
|
+
const [whole = '0', fraction] = String(Math.abs(rounded)).split('.');
|
|
40
|
+
const grouped = whole.replace(/\B(?=(\d{3})+(?!\d))/gu, ',');
|
|
41
|
+
return `${rounded < 0 ? '-' : ''}${grouped}${fraction === undefined ? '' : `.${fraction}`}`;
|
|
42
|
+
}
|
|
43
|
+
function seriesClass(index) {
|
|
44
|
+
return `ak-chart-s${index % PALETTE_SIZE}`;
|
|
26
45
|
}
|
|
27
|
-
|
|
28
|
-
|
|
46
|
+
/** Round a span up to 1, 2, 2.5 or 5 times a power of ten, so ticks read cleanly. */
|
|
47
|
+
function niceStep(span, count) {
|
|
48
|
+
const raw = span / Math.max(count, 1);
|
|
49
|
+
const magnitude = 10 ** Math.floor(Math.log10(raw));
|
|
50
|
+
const normalized = raw / magnitude;
|
|
51
|
+
const factor = [1, 2, 2.5, 5].find((candidate) => normalized <= candidate) ?? 10;
|
|
52
|
+
return factor * magnitude;
|
|
29
53
|
}
|
|
30
|
-
|
|
31
|
-
|
|
54
|
+
/** Axis bounds that include zero and end on a clean tick. */
|
|
55
|
+
function niceBounds(series) {
|
|
56
|
+
const values = series.flatMap((entry) => entry.values).filter((value) => Number.isFinite(value));
|
|
57
|
+
const rawMin = Math.min(0, ...values);
|
|
58
|
+
const rawMax = Math.max(0, ...values);
|
|
59
|
+
if (rawMax === rawMin)
|
|
60
|
+
return { min: rawMin, max: rawMin + 1, step: 0.25 };
|
|
61
|
+
const step = niceStep(rawMax - rawMin, 4);
|
|
62
|
+
return {
|
|
63
|
+
min: Math.floor(rawMin / step) * step,
|
|
64
|
+
max: Math.ceil(rawMax / step) * step,
|
|
65
|
+
step,
|
|
66
|
+
};
|
|
32
67
|
}
|
|
33
|
-
function
|
|
68
|
+
function plotWidth(frame) {
|
|
69
|
+
return frame.width - frame.left - frame.right;
|
|
70
|
+
}
|
|
71
|
+
function plotHeight(frame) {
|
|
72
|
+
return frame.height - frame.top - frame.bottom;
|
|
73
|
+
}
|
|
74
|
+
function scaleY(value, bounds, frame) {
|
|
34
75
|
const ratio = (value - bounds.min) / (bounds.max - bounds.min);
|
|
35
|
-
return round(
|
|
76
|
+
return round(frame.top + plotHeight(frame) * (1 - ratio));
|
|
36
77
|
}
|
|
37
|
-
|
|
78
|
+
/** Point charts span the plot edge to edge. */
|
|
79
|
+
function pointX(index, count, frame) {
|
|
38
80
|
if (count <= 1)
|
|
39
|
-
return round(
|
|
40
|
-
return round(
|
|
81
|
+
return round(frame.left + plotWidth(frame) / 2);
|
|
82
|
+
return round(frame.left + (plotWidth(frame) * index) / (count - 1));
|
|
83
|
+
}
|
|
84
|
+
/** Bar groups sit in equal bands, labelled at the band centre. */
|
|
85
|
+
function bandCentre(index, count, frame) {
|
|
86
|
+
const band = plotWidth(frame) / Math.max(count, 1);
|
|
87
|
+
return round(frame.left + band * index + band / 2);
|
|
88
|
+
}
|
|
89
|
+
function gridAndTicks(bounds, frame) {
|
|
90
|
+
const parts = [];
|
|
91
|
+
const steps = Math.round((bounds.max - bounds.min) / bounds.step);
|
|
92
|
+
for (let index = 0; index <= steps; index += 1) {
|
|
93
|
+
const value = round(bounds.min + bounds.step * index);
|
|
94
|
+
const y = scaleY(value, bounds, frame);
|
|
95
|
+
parts.push(`<line class="${value === 0 ? 'ak-chart-axis' : 'ak-chart-grid'}" x1="${frame.left}" y1="${y}" x2="${frame.width - frame.right}" y2="${y}"/>`);
|
|
96
|
+
parts.push(`<text class="ak-chart-label" x="${frame.left - 8}" y="${round(y + 4)}" text-anchor="end">${escapeText(formatNumber(value))}</text>`);
|
|
97
|
+
}
|
|
98
|
+
return parts.join('');
|
|
41
99
|
}
|
|
42
|
-
function
|
|
100
|
+
function categoryLabels(labels, position, frame) {
|
|
43
101
|
const parts = [];
|
|
44
102
|
const step = Math.max(1, Math.ceil(labels.length / 8));
|
|
45
103
|
for (let index = 0; index < labels.length; index += step) {
|
|
46
|
-
|
|
47
|
-
parts.push(`<text class="ak-chart-label" x="${x}" y="${HEIGHT - PADDING.bottom + 16}" text-anchor="middle">${escapeText(labels[index] ?? '')}</text>`);
|
|
48
|
-
}
|
|
49
|
-
parts.push(`<line class="ak-chart-axis" x1="${PADDING.left}" y1="${PADDING.top}" x2="${PADDING.left}" y2="${HEIGHT - PADDING.bottom}"/>`);
|
|
50
|
-
parts.push(`<line class="ak-chart-axis" x1="${PADDING.left}" y1="${HEIGHT - PADDING.bottom}" x2="${WIDTH - PADDING.right}" y2="${HEIGHT - PADDING.bottom}"/>`);
|
|
51
|
-
parts.push(`<text class="ak-chart-label" x="${PADDING.left - 6}" y="${scaleY(bounds.max, bounds) + 3}" text-anchor="end">${escapeText(String(round(bounds.max)))}</text>`);
|
|
52
|
-
if (bounds.min < 0) {
|
|
53
|
-
parts.push(`<text class="ak-chart-label" x="${PADDING.left - 6}" y="${scaleY(bounds.min, bounds) + 3}" text-anchor="end">${escapeText(String(round(bounds.min)))}</text>`);
|
|
104
|
+
parts.push(`<text class="ak-chart-label" x="${position(index)}" y="${frame.height - frame.bottom + 20}" text-anchor="middle">${escapeText(labels[index] ?? '')}</text>`);
|
|
54
105
|
}
|
|
55
106
|
return parts.join('');
|
|
56
107
|
}
|
|
57
108
|
function pointTitle(label, series, index) {
|
|
58
109
|
return `${label}: ${series.label} ${series.values[index] ?? 0}`;
|
|
59
110
|
}
|
|
60
|
-
|
|
61
|
-
|
|
111
|
+
/**
|
|
112
|
+
* A value label drawn directly after its mark. The stylesheet reveals it while
|
|
113
|
+
* the mark is hovered or focused (`mark:hover + .ak-chart-value`), so the exact
|
|
114
|
+
* number is one pointer move away without a tooltip script.
|
|
115
|
+
*/
|
|
116
|
+
function valueLabel(x, y, value) {
|
|
117
|
+
return `<text class="ak-chart-value" x="${round(x)}" y="${round(y)}" text-anchor="middle" aria-hidden="true">${escapeText(formatNumber(value))}</text>`;
|
|
118
|
+
}
|
|
119
|
+
/** Fragment-safe id prefix for gradients, derived from the block id. */
|
|
120
|
+
function gradientId(input, seriesIndex) {
|
|
121
|
+
return `ak-grad-${input.id.replace(/[^A-Za-z0-9_-]/gu, '-')}-${seriesIndex}`;
|
|
122
|
+
}
|
|
123
|
+
function barChart(input) {
|
|
124
|
+
const frame = CARTESIAN;
|
|
125
|
+
const bounds = niceBounds(input.series);
|
|
126
|
+
const groups = Math.max(input.labels.length, 1);
|
|
62
127
|
const seriesCount = Math.max(input.series.length, 1);
|
|
63
|
-
const
|
|
64
|
-
const
|
|
128
|
+
const band = plotWidth(frame) / groups;
|
|
129
|
+
const gap = Math.min(4, band * 0.04);
|
|
130
|
+
const barWidth = round(Math.max(2, Math.min(MAX_BAR_WIDTH, (band * 0.72 - gap * (seriesCount - 1)) / seriesCount)));
|
|
131
|
+
const groupWidth = barWidth * seriesCount + gap * (seriesCount - 1);
|
|
132
|
+
const zeroY = scaleY(Math.max(bounds.min, 0), bounds, frame);
|
|
65
133
|
const parts = [];
|
|
66
|
-
|
|
134
|
+
// One gradient per series: full strength at the cap, easing off toward the
|
|
135
|
+
// baseline, so a bar reads as lit from above instead of a flat slab.
|
|
136
|
+
const defs = input.series.map((_, seriesIndex) => `<linearGradient id="${gradientId(input, seriesIndex)}" class="${seriesClass(seriesIndex)}" x1="0" y1="0" x2="0" y2="1"><stop class="ak-chart-stop ak-chart-stop--bar" offset="0"/><stop class="ak-chart-stop ak-chart-stop--bar ak-chart-stop--end" offset="1"/></linearGradient>`);
|
|
67
137
|
input.series.forEach((series, seriesIndex) => {
|
|
68
138
|
input.labels.forEach((label, index) => {
|
|
69
139
|
const value = series.values[index] ?? 0;
|
|
70
|
-
const x = round(
|
|
71
|
-
const y = scaleY(value, bounds);
|
|
140
|
+
const x = round(bandCentre(index, groups, frame) - groupWidth / 2 + seriesIndex * (barWidth + gap));
|
|
141
|
+
const y = scaleY(value, bounds, frame);
|
|
72
142
|
const height = round(Math.abs(zeroY - y));
|
|
73
143
|
const top = Math.min(y, zeroY);
|
|
74
|
-
parts.push(`<rect class="ak-chart-bar${seriesIndex
|
|
144
|
+
parts.push(`<rect class="ak-chart-bar ${seriesClass(seriesIndex)}" tabindex="0" x="${x}" y="${top}" width="${barWidth}" height="${height}" rx="${round(Math.min(4, barWidth / 4))}" fill="url(#${gradientId(input, seriesIndex)})"><title>${escapeText(pointTitle(label, series, index))}</title></rect>`, valueLabel(x + barWidth / 2, value < 0 ? top + height + 14 : top - 7, value));
|
|
75
145
|
});
|
|
76
146
|
});
|
|
77
|
-
return
|
|
147
|
+
return `<defs>${defs.join('')}</defs>${gridAndTicks(bounds, frame)}${categoryLabels(input.labels, (index) => bandCentre(index, groups, frame), frame)}${parts.join('')}`;
|
|
78
148
|
}
|
|
79
|
-
function linePath(
|
|
80
|
-
return
|
|
81
|
-
.map((value, index) => `${index === 0 ? 'M' : 'L'}${
|
|
149
|
+
function linePath(values, bounds, frame) {
|
|
150
|
+
return values
|
|
151
|
+
.map((value, index) => `${index === 0 ? 'M' : 'L'}${pointX(index, values.length, frame)},${scaleY(value, bounds, frame)}`)
|
|
82
152
|
.join(' ');
|
|
83
153
|
}
|
|
84
|
-
function lineChart(input,
|
|
154
|
+
function lineChart(input, area) {
|
|
155
|
+
const frame = CARTESIAN;
|
|
156
|
+
const bounds = niceBounds(input.series);
|
|
85
157
|
const parts = [];
|
|
86
|
-
|
|
87
|
-
|
|
158
|
+
const baseY = scaleY(Math.max(bounds.min, 0), bounds, frame);
|
|
159
|
+
const defs = [];
|
|
160
|
+
input.series.forEach((series, seriesIndex) => {
|
|
161
|
+
const colour = seriesClass(seriesIndex);
|
|
162
|
+
const path = linePath(series.values, bounds, frame);
|
|
88
163
|
if (area) {
|
|
89
|
-
|
|
90
|
-
|
|
164
|
+
// Stops inherit the series colour through the gradient's series class,
|
|
165
|
+
// so the fade stays theme-driven while the path references it by id.
|
|
166
|
+
const id = gradientId(input, seriesIndex);
|
|
167
|
+
defs.push(`<linearGradient id="${id}" class="${colour}" x1="0" y1="0" x2="0" y2="1"><stop class="ak-chart-stop" offset="0"/><stop class="ak-chart-stop ak-chart-stop--end" offset="1"/></linearGradient>`);
|
|
168
|
+
parts.push(`<path class="ak-chart-area ${colour}" fill="url(#${id})" d="${path} L${pointX(series.values.length - 1, series.values.length, frame)},${baseY} L${pointX(0, series.values.length, frame)},${baseY} Z"/>`);
|
|
91
169
|
}
|
|
92
|
-
parts.push(`<path class="ak-chart-line" d="${path}"/>`);
|
|
170
|
+
parts.push(`<path class="ak-chart-line ${colour}" d="${path}"/>`);
|
|
93
171
|
series.values.forEach((value, index) => {
|
|
94
172
|
const label = input.labels[Math.min(index, input.labels.length - 1)] ?? '';
|
|
95
|
-
|
|
173
|
+
const cx = pointX(index, series.values.length, frame);
|
|
174
|
+
const cy = scaleY(value, bounds, frame);
|
|
175
|
+
parts.push(`<circle class="ak-chart-point ${colour}" tabindex="0" cx="${cx}" cy="${cy}" r="4"><title>${escapeText(pointTitle(label, series, index))}</title></circle>`, valueLabel(cx, cy - 12, value));
|
|
96
176
|
});
|
|
97
177
|
});
|
|
98
|
-
const
|
|
99
|
-
|
|
178
|
+
const count = Math.max(...input.series.map((series) => series.values.length), input.labels.length, 1);
|
|
179
|
+
const gradients = defs.length === 0 ? '' : `<defs>${defs.join('')}</defs>`;
|
|
180
|
+
return `${gradients}${gridAndTicks(bounds, frame)}${categoryLabels(input.labels, (index) => pointX(index, count, frame), frame)}${parts.join('')}`;
|
|
100
181
|
}
|
|
101
|
-
|
|
182
|
+
/** A sparkline is a trend glyph, so it scales to its own data range, not to zero. */
|
|
183
|
+
function sparkline(input) {
|
|
184
|
+
const frame = SPARK;
|
|
185
|
+
const values = input.series.flatMap((series) => series.values);
|
|
186
|
+
const low = values.length === 0 ? 0 : Math.min(...values);
|
|
187
|
+
const high = values.length === 0 ? 1 : Math.max(...values);
|
|
188
|
+
const bounds = high === low ? { min: low - 1, max: high + 1 } : { min: low, max: high };
|
|
102
189
|
const parts = [];
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
190
|
+
input.series.forEach((series, seriesIndex) => {
|
|
191
|
+
const colour = seriesClass(seriesIndex);
|
|
192
|
+
parts.push(`<path class="ak-chart-line ${colour}" d="${linePath(series.values, bounds, frame)}"/>`);
|
|
193
|
+
const last = series.values.length - 1;
|
|
194
|
+
if (last >= 0) {
|
|
195
|
+
parts.push(`<circle class="ak-chart-point ${colour}" cx="${pointX(last, series.values.length, frame)}" cy="${scaleY(series.values[last] ?? 0, bounds, frame)}" r="3.5"/>`);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
106
198
|
return parts.join('');
|
|
107
199
|
}
|
|
108
200
|
function radialChart(input, donut) {
|
|
@@ -110,15 +202,17 @@ function radialChart(input, donut) {
|
|
|
110
202
|
if (series === undefined)
|
|
111
203
|
return '';
|
|
112
204
|
const values = input.labels.map((_, index) => Math.max(series.values[index] ?? 0, 0));
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
const
|
|
205
|
+
const sum = values.reduce((total, value) => total + value, 0);
|
|
206
|
+
const total = sum || 1;
|
|
207
|
+
const centreX = RADIAL.width / 2;
|
|
208
|
+
const centreY = RADIAL.height / 2;
|
|
209
|
+
const radius = 104;
|
|
210
|
+
const inner = donut ? 64 : 0;
|
|
118
211
|
const parts = [];
|
|
119
212
|
let angle = -Math.PI / 2;
|
|
120
213
|
values.forEach((value, index) => {
|
|
121
|
-
|
|
214
|
+
// A single full slice cannot be drawn as one arc, so cap it just short.
|
|
215
|
+
const sweep = Math.min((value / total) * Math.PI * 2, Math.PI * 2 - 0.0001);
|
|
122
216
|
const start = angle;
|
|
123
217
|
const end = angle + sweep;
|
|
124
218
|
angle = end;
|
|
@@ -129,38 +223,64 @@ function radialChart(input, donut) {
|
|
|
129
223
|
const y2 = round(centreY + radius * Math.sin(end));
|
|
130
224
|
const label = input.labels[index] ?? '';
|
|
131
225
|
const title = `<title>${escapeText(`${label}: ${value} (${round((value / total) * 100)}%)`)}</title>`;
|
|
226
|
+
const colour = `ak-chart-slice ${seriesClass(index)}`;
|
|
132
227
|
if (inner > 0) {
|
|
133
228
|
const ix1 = round(centreX + inner * Math.cos(start));
|
|
134
229
|
const iy1 = round(centreY + inner * Math.sin(start));
|
|
135
230
|
const ix2 = round(centreX + inner * Math.cos(end));
|
|
136
231
|
const iy2 = round(centreY + inner * Math.sin(end));
|
|
137
|
-
parts.push(`<path class="
|
|
232
|
+
parts.push(`<path class="${colour}" tabindex="0" d="M${x1},${y1} A${radius},${radius} 0 ${large} 1 ${x2},${y2} L${ix2},${iy2} A${inner},${inner} 0 ${large} 0 ${ix1},${iy1} Z">${title}</path>`);
|
|
138
233
|
}
|
|
139
234
|
else {
|
|
140
|
-
parts.push(`<path class="
|
|
235
|
+
parts.push(`<path class="${colour}" tabindex="0" d="M${centreX},${centreY} L${x1},${y1} A${radius},${radius} 0 ${large} 1 ${x2},${y2} Z">${title}</path>`);
|
|
141
236
|
}
|
|
142
237
|
});
|
|
238
|
+
if (donut) {
|
|
239
|
+
parts.push(`<text class="ak-chart-total" x="${centreX}" y="${centreY - 2}" text-anchor="middle">${escapeText(formatNumber(sum))}</text><text class="ak-chart-label" x="${centreX}" y="${centreY + 16}" text-anchor="middle">${escapeText(series.label)}</text>`);
|
|
240
|
+
}
|
|
143
241
|
return parts.join('');
|
|
144
242
|
}
|
|
243
|
+
function progressFrame(rows) {
|
|
244
|
+
return {
|
|
245
|
+
width: WIDTH,
|
|
246
|
+
height: Math.max(rows, 1) * PROGRESS_ROW,
|
|
247
|
+
top: 0,
|
|
248
|
+
right: 0,
|
|
249
|
+
bottom: 0,
|
|
250
|
+
left: 0,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
145
253
|
function progressChart(input) {
|
|
146
254
|
const series = input.series[0];
|
|
147
255
|
if (series === undefined)
|
|
148
256
|
return '';
|
|
149
257
|
const max = Math.max(1, ...series.values);
|
|
150
|
-
const
|
|
151
|
-
const
|
|
258
|
+
const trackStart = PROGRESS_LABEL_WIDTH;
|
|
259
|
+
const trackWidth = WIDTH - trackStart - 56;
|
|
152
260
|
const parts = [];
|
|
153
261
|
input.labels.forEach((label, index) => {
|
|
154
262
|
const value = series.values[index] ?? 0;
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
parts.push(`<
|
|
159
|
-
parts.push(`<rect x="${
|
|
160
|
-
parts.push(`<
|
|
263
|
+
const centre = index * PROGRESS_ROW + PROGRESS_ROW / 2;
|
|
264
|
+
const filled = round((trackWidth * Math.max(0, Math.min(value, max))) / max);
|
|
265
|
+
parts.push(`<text class="ak-chart-label ak-chart-label--row" x="0" y="${centre + 4}" text-anchor="start">${escapeText(label)}</text>`);
|
|
266
|
+
parts.push(`<rect class="ak-chart-track" x="${trackStart}" y="${centre - 5}" width="${trackWidth}" height="10" rx="5"/>`);
|
|
267
|
+
parts.push(`<rect class="ak-chart-bar ${seriesClass(0)}" tabindex="0" x="${trackStart}" y="${centre - 5}" width="${filled}" height="10" rx="5"><title>${escapeText(`${label}: ${value}`)}</title></rect>`);
|
|
268
|
+
parts.push(`<text class="ak-chart-label" x="${WIDTH}" y="${centre + 4}" text-anchor="end">${escapeText(formatNumber(value))}</text>`);
|
|
161
269
|
});
|
|
162
270
|
return parts.join('');
|
|
163
271
|
}
|
|
272
|
+
/** A legend whenever colour alone would otherwise have to carry meaning. */
|
|
273
|
+
function legend(input) {
|
|
274
|
+
const radial = input.kind === 'pie' || input.kind === 'donut';
|
|
275
|
+
const entries = radial ? input.labels : input.series.map((series) => series.label);
|
|
276
|
+
if (input.kind === 'progress' || input.kind === 'sparkline')
|
|
277
|
+
return '';
|
|
278
|
+
if (!radial && entries.length < 2)
|
|
279
|
+
return '';
|
|
280
|
+
return `<ul class="ak-chart-legend" aria-hidden="true">${entries
|
|
281
|
+
.map((entry, index) => `<li><span class="ak-chart-swatch ${seriesClass(index)}"></span>${escapeText(entry)}</li>`)
|
|
282
|
+
.join('')}</ul>`;
|
|
283
|
+
}
|
|
164
284
|
function dataTable(input) {
|
|
165
285
|
const head = input.labels.map((label) => `<th scope="col">${escapeText(label)}</th>`).join('');
|
|
166
286
|
const rows = input.series
|
|
@@ -184,45 +304,40 @@ function textSummary(input) {
|
|
|
184
304
|
});
|
|
185
305
|
return lines.join('. ');
|
|
186
306
|
}
|
|
187
|
-
|
|
188
|
-
export function renderChart(input) {
|
|
189
|
-
const bounds = extent(input.series);
|
|
190
|
-
let body;
|
|
307
|
+
function chartBody(input) {
|
|
191
308
|
switch (input.kind) {
|
|
192
309
|
case 'bar':
|
|
193
|
-
body
|
|
194
|
-
break;
|
|
310
|
+
return { body: barChart(input), frame: CARTESIAN };
|
|
195
311
|
case 'line':
|
|
196
|
-
body
|
|
197
|
-
break;
|
|
312
|
+
return { body: lineChart(input, false), frame: CARTESIAN };
|
|
198
313
|
case 'area':
|
|
199
|
-
body
|
|
200
|
-
break;
|
|
314
|
+
return { body: lineChart(input, true), frame: CARTESIAN };
|
|
201
315
|
case 'pie':
|
|
202
|
-
body
|
|
203
|
-
break;
|
|
316
|
+
return { body: radialChart(input, false), frame: RADIAL };
|
|
204
317
|
case 'donut':
|
|
205
|
-
body
|
|
206
|
-
break;
|
|
318
|
+
return { body: radialChart(input, true), frame: RADIAL };
|
|
207
319
|
case 'sparkline':
|
|
208
|
-
body
|
|
209
|
-
break;
|
|
320
|
+
return { body: sparkline(input), frame: SPARK };
|
|
210
321
|
case 'progress':
|
|
211
|
-
body
|
|
212
|
-
break;
|
|
322
|
+
return { body: progressChart(input), frame: progressFrame(input.labels.length) };
|
|
213
323
|
default:
|
|
214
|
-
body
|
|
324
|
+
return { body: '', frame: CARTESIAN };
|
|
215
325
|
}
|
|
326
|
+
}
|
|
327
|
+
/** Render one chart block as a figure containing SVG, a summary, and a table. */
|
|
328
|
+
export function renderChart(input) {
|
|
329
|
+
const { body, frame } = chartBody(input);
|
|
216
330
|
const summary = textSummary(input);
|
|
217
331
|
const ariaLabel = input.title === undefined ? summary : `${input.title}. ${summary}`;
|
|
218
332
|
const caption = input.title === undefined ? '' : `<figcaption>${escapeText(input.title)}</figcaption>`;
|
|
219
333
|
return [
|
|
220
334
|
`<figure class="ak-chart"${renderAttributes({ 'data-ak-kind': input.kind })}>`,
|
|
221
335
|
caption,
|
|
222
|
-
`<svg viewBox="0 0 ${
|
|
336
|
+
`<div class="ak-chart-canvas"><svg viewBox="0 0 ${frame.width} ${frame.height}" role="img"${renderAttributes({
|
|
223
337
|
'aria-label': ariaLabel,
|
|
224
338
|
'data-ak-chart': input.id,
|
|
225
|
-
})}><title>${escapeText(input.title ?? 'Chart')}</title>${body}</svg>`,
|
|
339
|
+
})}><title>${escapeText(input.title ?? 'Chart')}</title>${body}</svg></div>`,
|
|
340
|
+
legend(input),
|
|
226
341
|
`<p class="ak-sr">${escapeText(summary)}</p>`,
|
|
227
342
|
`<details class="ak-details"><summary>Chart data table</summary>${dataTable(input)}</details>`,
|
|
228
343
|
'</figure>',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.js","sourceRoot":"","sources":["../../src/render/charts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"charts.js","sourceRoot":"","sources":["../../src/render/charts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derived custom properties, computed from theme tokens.
|
|
3
|
+
*
|
|
4
|
+
* `:root` declares them once, and the night band redeclares them because an
|
|
5
|
+
* inherited custom property carries the root's computed result, not its
|
|
6
|
+
* formula. Both read these constants, so the band and dark mode cannot drift.
|
|
7
|
+
*/
|
|
8
|
+
/** Hover wash: a little accent mixed into the surface. */
|
|
9
|
+
export declare const TINT = "--ak-tint:color-mix(in srgb,var(--ak-color-accent) 7%,var(--ak-color-surface))";
|
|
10
|
+
/** Focus halo for inputs and controls. */
|
|
11
|
+
export declare const RING = "--ak-ring:0 0 0 3px color-mix(in srgb,var(--ak-color-accent) 24%,transparent)";
|
|
12
|
+
/**
|
|
13
|
+
* Surface background in dark schemes: a faint top-lit sheen, because the fixed
|
|
14
|
+
* elevation shadows are invisible against a dark page.
|
|
15
|
+
*/
|
|
16
|
+
export declare const DARK_FILL = "--ak-fill:linear-gradient(180deg,color-mix(in srgb,var(--ak-color-text) 4%,transparent),transparent 160px),var(--ak-color-surface)";
|
|
17
|
+
//# sourceMappingURL=derived-variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derived-variables.d.ts","sourceRoot":"","sources":["../../src/render/derived-variables.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,0DAA0D;AAC1D,eAAO,MAAM,IAAI,mFACiE,CAAC;AAEnF,0CAA0C;AAC1C,eAAO,MAAM,IAAI,kFAAkF,CAAC;AAEpG;;;GAGG;AACH,eAAO,MAAM,SAAS,uIACgH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derived custom properties, computed from theme tokens.
|
|
3
|
+
*
|
|
4
|
+
* `:root` declares them once, and the night band redeclares them because an
|
|
5
|
+
* inherited custom property carries the root's computed result, not its
|
|
6
|
+
* formula. Both read these constants, so the band and dark mode cannot drift.
|
|
7
|
+
*/
|
|
8
|
+
/** Hover wash: a little accent mixed into the surface. */
|
|
9
|
+
export const TINT = '--ak-tint:color-mix(in srgb,var(--ak-color-accent) 7%,var(--ak-color-surface))';
|
|
10
|
+
/** Focus halo for inputs and controls. */
|
|
11
|
+
export const RING = '--ak-ring:0 0 0 3px color-mix(in srgb,var(--ak-color-accent) 24%,transparent)';
|
|
12
|
+
/**
|
|
13
|
+
* Surface background in dark schemes: a faint top-lit sheen, because the fixed
|
|
14
|
+
* elevation shadows are invisible against a dark page.
|
|
15
|
+
*/
|
|
16
|
+
export const DARK_FILL = '--ak-fill:linear-gradient(180deg,color-mix(in srgb,var(--ak-color-text) 4%,transparent),transparent 160px),var(--ak-color-surface)';
|
|
17
|
+
//# sourceMappingURL=derived-variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derived-variables.js","sourceRoot":"","sources":["../../src/render/derived-variables.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,0DAA0D;AAC1D,MAAM,CAAC,MAAM,IAAI,GACf,gFAAgF,CAAC;AAEnF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,IAAI,GAAG,+EAA+E,CAAC;AAEpG;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GACpB,oIAAoI,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured diagram fallback.
|
|
3
|
+
*
|
|
4
|
+
* Without an adapter a diagram still has to read as a diagram. When the
|
|
5
|
+
* connections form one simple chain (every node has at most one way in and one
|
|
6
|
+
* way out, and the chain visits every node), the nodes are drawn as a flow with
|
|
7
|
+
* labelled connectors. Any other graph is shown as a set of nodes plus an
|
|
8
|
+
* explicit connection list, because drawing arrows between nodes that are not
|
|
9
|
+
* connected would state something the spec does not.
|
|
10
|
+
*/
|
|
11
|
+
import type { JsonValue } from '../json.js';
|
|
12
|
+
export interface DiagramNode {
|
|
13
|
+
id: string;
|
|
14
|
+
label: string;
|
|
15
|
+
}
|
|
16
|
+
export interface DiagramEdge {
|
|
17
|
+
from: string;
|
|
18
|
+
to: string;
|
|
19
|
+
label: string;
|
|
20
|
+
}
|
|
21
|
+
/** Order nodes along the single chain the edges describe, or return undefined when they do not form one. */
|
|
22
|
+
export declare function chainOrder(nodes: DiagramNode[], edges: DiagramEdge[]): DiagramNode[] | undefined;
|
|
23
|
+
/** Render the fallback body for the described nodes and connections. */
|
|
24
|
+
export declare function renderDiagramFallback(described: Record<string, JsonValue>[], connections: Record<string, JsonValue>[]): string;
|
|
25
|
+
//# sourceMappingURL=diagram-fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagram-fallback.d.ts","sourceRoot":"","sources":["../../src/render/diagram-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,4GAA4G;AAC5G,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,GAAG,SAAS,CAwBhG;AA+CD,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EACtC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,GACvC,MAAM,CASR"}
|