@santi020k/lumen-core 3.0.0 → 4.0.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/PHONE_FLAG_LICENSE.txt +21 -0
- package/README.md +379 -4
- package/THIRD_PARTY_NOTICES.md +16 -2
- package/dist/ai-surfaces.d.ts +25 -0
- package/dist/ai-surfaces.d.ts.map +1 -0
- package/dist/ai-surfaces.js +162 -0
- package/dist/amount-field.d.ts +22 -0
- package/dist/amount-field.d.ts.map +1 -0
- package/dist/amount-field.js +207 -0
- package/dist/attachments.d.ts +15 -0
- package/dist/attachments.d.ts.map +1 -0
- package/dist/attachments.js +123 -0
- package/dist/bullet-chart.d.ts +33 -0
- package/dist/bullet-chart.d.ts.map +1 -0
- package/dist/bullet-chart.js +80 -0
- package/dist/chart-activation.d.ts +32 -0
- package/dist/chart-activation.d.ts.map +1 -0
- package/dist/chart-activation.js +97 -0
- package/dist/chart-interaction.d.ts +12 -0
- package/dist/chart-interaction.d.ts.map +1 -0
- package/dist/chart-interaction.js +274 -0
- package/dist/chart-models.d.ts +156 -0
- package/dist/chart-models.d.ts.map +1 -0
- package/dist/chart-models.js +348 -0
- package/dist/chart-motion.d.ts +6 -0
- package/dist/chart-motion.d.ts.map +1 -0
- package/dist/chart-motion.js +107 -0
- package/dist/charts.d.ts +68 -3
- package/dist/charts.d.ts.map +1 -1
- package/dist/charts.js +328 -29
- package/dist/code.js +1 -1
- package/dist/combobox.d.ts +7 -0
- package/dist/combobox.d.ts.map +1 -0
- package/dist/combobox.js +253 -0
- package/dist/comparison-chart.d.ts +32 -0
- package/dist/comparison-chart.d.ts.map +1 -0
- package/dist/comparison-chart.js +64 -0
- package/dist/components.d.ts +210 -25
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +102 -26
- package/dist/dashboard.d.ts +16 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/dist/dashboard.js +21 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +21 -5
- package/dist/dates.d.ts +13 -0
- package/dist/dates.d.ts.map +1 -0
- package/dist/dates.js +37 -0
- package/dist/device-frame.d.ts +25 -0
- package/dist/device-frame.d.ts.map +1 -0
- package/dist/device-frame.js +50 -0
- package/dist/direction.d.ts +3 -0
- package/dist/direction.d.ts.map +1 -0
- package/dist/direction.js +10 -0
- package/dist/extended-charts.d.ts +95 -0
- package/dist/extended-charts.d.ts.map +1 -0
- package/dist/extended-charts.js +175 -0
- package/dist/figma.d.ts.map +1 -1
- package/dist/figma.js +10 -1
- package/dist/forms.d.ts.map +1 -1
- package/dist/forms.js +18 -4
- package/dist/icon-data.generated.d.ts +1 -1
- package/dist/icon-data.generated.d.ts.map +1 -1
- package/dist/icon-data.generated.js +1 -1
- package/dist/icons.js +3 -4
- package/dist/illustrations.generated.d.ts +1 -1
- package/dist/image-comparison.d.ts +14 -0
- package/dist/image-comparison.d.ts.map +1 -0
- package/dist/image-comparison.js +48 -0
- package/dist/index.d.ts +35 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -3
- package/dist/media-viewport.d.ts +24 -0
- package/dist/media-viewport.d.ts.map +1 -0
- package/dist/media-viewport.js +119 -0
- package/dist/media-workspace.d.ts +27 -0
- package/dist/media-workspace.d.ts.map +1 -0
- package/dist/media-workspace.js +83 -0
- package/dist/message-scroller.d.ts +14 -0
- package/dist/message-scroller.d.ts.map +1 -0
- package/dist/message-scroller.js +113 -0
- package/dist/motion-workflows.d.ts +24 -0
- package/dist/motion-workflows.d.ts.map +1 -0
- package/dist/motion-workflows.js +220 -0
- package/dist/motion.d.ts +12 -0
- package/dist/motion.d.ts.map +1 -0
- package/dist/motion.js +96 -0
- package/dist/native-input.d.ts +25 -0
- package/dist/native-input.d.ts.map +1 -0
- package/dist/native-input.js +188 -0
- package/dist/phone-flags.generated.d.ts +2 -0
- package/dist/phone-flags.generated.d.ts.map +1 -0
- package/dist/phone-flags.generated.js +263 -0
- package/dist/phone.d.ts +4 -0
- package/dist/phone.d.ts.map +1 -1
- package/dist/phone.js +6 -1
- package/dist/rich-text.d.ts +7 -0
- package/dist/rich-text.d.ts.map +1 -1
- package/dist/rich-text.js +13 -0
- package/dist/rive.d.ts +37 -0
- package/dist/rive.d.ts.map +1 -0
- package/dist/rive.js +129 -0
- package/dist/schedule.d.ts.map +1 -1
- package/dist/schedule.js +63 -23
- package/dist/tab-indicator.d.ts +3 -0
- package/dist/tab-indicator.d.ts.map +1 -0
- package/dist/tab-indicator.js +57 -0
- package/dist/theme-audit.d.ts +16 -0
- package/dist/theme-audit.d.ts.map +1 -0
- package/dist/theme-audit.js +57 -0
- package/dist/theme-builder.d.ts +7 -1
- package/dist/theme-builder.d.ts.map +1 -1
- package/dist/theme-builder.js +45 -23
- package/dist/theme-presets.generated.d.ts +217 -0
- package/dist/theme-presets.generated.d.ts.map +1 -0
- package/dist/theme-presets.generated.js +231 -0
- package/dist/theme.d.ts +11 -3
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +56 -6
- package/dist/virtual-collection.d.ts +14 -0
- package/dist/virtual-collection.d.ts.map +1 -0
- package/dist/virtual-collection.js +132 -0
- package/dist/virtual-list.d.ts +7 -0
- package/dist/virtual-list.d.ts.map +1 -0
- package/dist/virtual-list.js +135 -0
- package/dist/virtual-window.d.ts +19 -0
- package/dist/virtual-window.d.ts.map +1 -0
- package/dist/virtual-window.js +84 -0
- package/dist/visual-effects.d.ts +6 -0
- package/dist/visual-effects.d.ts.map +1 -0
- package/dist/visual-effects.js +44 -0
- package/dist/world-map-data.generated.d.ts +9 -0
- package/dist/world-map-data.generated.d.ts.map +1 -0
- package/dist/world-map-data.generated.js +240 -0
- package/dist/world-map-navigation.d.ts +16 -0
- package/dist/world-map-navigation.d.ts.map +1 -0
- package/dist/world-map-navigation.js +53 -0
- package/dist/world-map-pan.d.ts +3 -0
- package/dist/world-map-pan.d.ts.map +1 -0
- package/dist/world-map-pan.js +66 -0
- package/dist/world-map-zoom.d.ts +13 -0
- package/dist/world-map-zoom.d.ts.map +1 -0
- package/dist/world-map-zoom.js +61 -0
- package/dist/world-map.d.ts +71 -0
- package/dist/world-map.d.ts.map +1 -0
- package/dist/world-map.js +143 -0
- package/package.json +51 -4
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
import { alignLumenChartSeries, createLumenHeatmapGeometry, createLumenLineGeometry, getLumenChartAxisPadding, getLumenChartCategories, getLumenChartCategoryLabel, getLumenChartCategoryTicks, getLumenChartDomain, getLumenChartNumericX, getLumenChartTicks, lumenChartTones, normalizeLumenHeatmapData, scaleLumenChartValue } from './charts.js';
|
|
2
|
+
const chartSize = (value, fallback) => {
|
|
3
|
+
if (value === undefined || !Number.isFinite(value))
|
|
4
|
+
return fallback;
|
|
5
|
+
return Math.max(240, value);
|
|
6
|
+
};
|
|
7
|
+
const chartKey = (value) => `${typeof value}:${String(value)}`;
|
|
8
|
+
const isAnnotationRecord = (value) => (typeof value === 'object' && value !== null && !Array.isArray(value));
|
|
9
|
+
const isAnnotationValue = (value) => (typeof value === 'string' || (typeof value === 'number' && Number.isFinite(value)));
|
|
10
|
+
const isAnnotationAxis = (value) => value === undefined || value === 'x' || value === 'y';
|
|
11
|
+
const isAnnotationTone = (value) => (value === undefined || lumenChartTones.some(tone => tone === value));
|
|
12
|
+
const isChartAnnotation = (value) => (isAnnotationRecord(value) && typeof value.id === 'string' && typeof value.label === 'string' &&
|
|
13
|
+
isAnnotationValue(value.value) && isAnnotationAxis(value.axis) && isAnnotationTone(value.tone));
|
|
14
|
+
const resolveDomain = (automatic, requested) => {
|
|
15
|
+
const min = requested?.min !== undefined && Number.isFinite(requested.min) ? requested.min : automatic.min;
|
|
16
|
+
const max = requested?.max !== undefined && Number.isFinite(requested.max) ? requested.max : automatic.max;
|
|
17
|
+
return min < max ? { max, min } : automatic;
|
|
18
|
+
};
|
|
19
|
+
const isOptionalChartText = (value) => value === undefined || typeof value === 'string';
|
|
20
|
+
const isNullableChartNumber = (value) => value === null || (typeof value === 'number' && Number.isFinite(value));
|
|
21
|
+
const isLineDatum = (value) => (isAnnotationRecord(value) && isAnnotationValue(value.x) && (value.y === null || typeof value.y === 'number') &&
|
|
22
|
+
['id', 'label', 'toneLabel', 'xLabel'].every(key => isOptionalChartText(value[key])) &&
|
|
23
|
+
isAnnotationTone(value.tone) && (value.size === undefined || isNullableChartNumber(value.size)));
|
|
24
|
+
const isLineSeries = (value) => (isAnnotationRecord(value) && typeof value.id === 'string' && typeof value.label === 'string' &&
|
|
25
|
+
Array.isArray(value.data) && Array.from(value.data).every((datum) => isLineDatum(datum)) &&
|
|
26
|
+
isAnnotationTone(value.tone) && (value.dash === undefined || ['dashed', 'dotted', 'solid'].some(dash => dash === value.dash)));
|
|
27
|
+
const normalizeLineSeries = (input) => {
|
|
28
|
+
if (!Array.isArray(input))
|
|
29
|
+
return [];
|
|
30
|
+
const rows = Array.from(input);
|
|
31
|
+
return rows.every(isLineSeries) ? rows : [];
|
|
32
|
+
};
|
|
33
|
+
/** Preserves category identity; continuous axes align every series against the same domain. */
|
|
34
|
+
export const createLumenLineChartModel = (input, options = {}) => {
|
|
35
|
+
const { annotations = [], formatCategory, formatValue = String, xScale = 'categorical' } = options;
|
|
36
|
+
const width = chartSize(options.width, 640);
|
|
37
|
+
const height = chartSize(options.height, 240);
|
|
38
|
+
const padding = 44;
|
|
39
|
+
const validInput = normalizeLineSeries(input);
|
|
40
|
+
const categories = getLumenChartCategories(validInput).filter(value => xScale === 'categorical' || getLumenChartNumericX(value, xScale) !== null);
|
|
41
|
+
if (xScale !== 'categorical')
|
|
42
|
+
categories.sort((a, b) => (getLumenChartNumericX(a, xScale) ?? 0) - (getLumenChartNumericX(b, xScale) ?? 0));
|
|
43
|
+
const series = validInput.map(item => alignLumenChartSeries(item, categories));
|
|
44
|
+
const automaticDomain = getLumenChartDomain([
|
|
45
|
+
...series.flatMap(item => item.data.map(datum => datum.y)), options.referenceValue ?? null
|
|
46
|
+
], false);
|
|
47
|
+
const domain = resolveDomain(automaticDomain, options.domain);
|
|
48
|
+
const ticks = getLumenChartTicks(domain);
|
|
49
|
+
const paddingLeft = Math.min(width - padding - 40, getLumenChartAxisPadding(ticks.map(formatValue)) * 2);
|
|
50
|
+
const numericCategories = categories.flatMap(value => {
|
|
51
|
+
if (xScale === 'categorical')
|
|
52
|
+
return [];
|
|
53
|
+
const number = getLumenChartNumericX(value, xScale);
|
|
54
|
+
return number === null ? [] : [number];
|
|
55
|
+
});
|
|
56
|
+
const xDomain = resolveDomain(getLumenChartDomain(numericCategories, false), options.xDomain);
|
|
57
|
+
const categoryIndexes = new Map(categories.map((category, index) => [category, index]));
|
|
58
|
+
const positionFor = (value) => {
|
|
59
|
+
if (xScale !== 'categorical') {
|
|
60
|
+
const number = getLumenChartNumericX(value, xScale);
|
|
61
|
+
return number === null ? null : scaleLumenChartValue(number, xDomain, paddingLeft, width - padding);
|
|
62
|
+
}
|
|
63
|
+
const index = categoryIndexes.get(value);
|
|
64
|
+
if (index === undefined)
|
|
65
|
+
return null;
|
|
66
|
+
const ratio = categories.length === 1 ? 0.5 : index / Math.max(1, categories.length - 1);
|
|
67
|
+
return paddingLeft + ratio * (width - padding - paddingLeft);
|
|
68
|
+
};
|
|
69
|
+
const positions = categories.map(value => positionFor(value) ?? paddingLeft);
|
|
70
|
+
const geometries = series.map(item => createLumenLineGeometry(item.data, {
|
|
71
|
+
domain, height, includeZero: false, padding, paddingLeft, width, xDomain, xScale
|
|
72
|
+
}));
|
|
73
|
+
const categoryTicks = getLumenChartCategoryTicks(categories.map(value => getLumenChartCategoryLabel(series, value, formatCategory)), { end: width - padding, positions, start: paddingLeft }).filter(tick => tick.position >= paddingLeft && tick.position <= width - padding);
|
|
74
|
+
const annotationIds = new Set();
|
|
75
|
+
const validAnnotations = Array.isArray(annotations) ?
|
|
76
|
+
annotations.filter((annotation) => {
|
|
77
|
+
if (!isChartAnnotation(annotation) || annotationIds.has(annotation.id))
|
|
78
|
+
return false;
|
|
79
|
+
annotationIds.add(annotation.id);
|
|
80
|
+
return true;
|
|
81
|
+
}) :
|
|
82
|
+
[];
|
|
83
|
+
const annotationMarks = validAnnotations.flatMap(annotation => {
|
|
84
|
+
const axis = annotation.axis ?? 'y';
|
|
85
|
+
let value = null;
|
|
86
|
+
if (axis === 'x')
|
|
87
|
+
value = positionFor(annotation.value);
|
|
88
|
+
else if (typeof annotation.value === 'number' && Number.isFinite(annotation.value)) {
|
|
89
|
+
value = scaleLumenChartValue(annotation.value, domain, height - padding, padding);
|
|
90
|
+
}
|
|
91
|
+
if (value === null)
|
|
92
|
+
return [];
|
|
93
|
+
const inBounds = axis === 'x' ?
|
|
94
|
+
value >= paddingLeft && value <= width - padding :
|
|
95
|
+
value >= padding && value <= height - padding;
|
|
96
|
+
if (!inBounds)
|
|
97
|
+
return [];
|
|
98
|
+
return [{ ...annotation, axis, coordinate: value }];
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
annotationMarks,
|
|
102
|
+
categories,
|
|
103
|
+
categoryTicks,
|
|
104
|
+
domain,
|
|
105
|
+
geometries,
|
|
106
|
+
height,
|
|
107
|
+
padding,
|
|
108
|
+
paddingLeft,
|
|
109
|
+
positions,
|
|
110
|
+
series,
|
|
111
|
+
ticks,
|
|
112
|
+
width,
|
|
113
|
+
xDomain
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
const intervalFrame = (values, options) => {
|
|
117
|
+
const width = chartSize(options.width, 640);
|
|
118
|
+
const height = chartSize(options.height, 320);
|
|
119
|
+
const domain = getLumenChartDomain(values);
|
|
120
|
+
const ticks = getLumenChartTicks(domain);
|
|
121
|
+
const requestedFontSize = options.axisFontSize;
|
|
122
|
+
const fontSize = requestedFontSize !== undefined && Number.isFinite(requestedFontSize) && requestedFontSize > 0 ?
|
|
123
|
+
requestedFontSize :
|
|
124
|
+
24;
|
|
125
|
+
const left = Math.min(width - 64, getLumenChartAxisPadding(ticks.map(options.formatValue ?? String)) * fontSize / 12);
|
|
126
|
+
const top = 32;
|
|
127
|
+
const right = width - 24;
|
|
128
|
+
const bottom = height - 48;
|
|
129
|
+
const y = (value) => scaleLumenChartValue(value, domain, bottom, top);
|
|
130
|
+
return { bottom, domain, height, left, right, ticks, top, width, y };
|
|
131
|
+
};
|
|
132
|
+
const isChartRecord = (value) => {
|
|
133
|
+
if (Array.isArray(value))
|
|
134
|
+
return false;
|
|
135
|
+
return typeof value === 'object' && value !== null;
|
|
136
|
+
};
|
|
137
|
+
const isWaterfallKind = (kind) => kind === undefined || kind === 'delta' || kind === 'total';
|
|
138
|
+
const isOptionalChartTone = (tone) => {
|
|
139
|
+
if (tone === undefined)
|
|
140
|
+
return true;
|
|
141
|
+
return lumenChartTones.some(candidate => candidate === tone);
|
|
142
|
+
};
|
|
143
|
+
const isWaterfallDatum = (datum) => {
|
|
144
|
+
if (!isChartRecord(datum))
|
|
145
|
+
return false;
|
|
146
|
+
return typeof datum.id === 'string' && typeof datum.label === 'string' &&
|
|
147
|
+
typeof datum.value === 'number' && Number.isFinite(datum.value) &&
|
|
148
|
+
isWaterfallKind(datum.kind) && isOptionalChartTone(datum.tone);
|
|
149
|
+
};
|
|
150
|
+
/** Invalid steps fail closed: silently dropping a change would misstate every later balance. */
|
|
151
|
+
export const createLumenWaterfallGeometry = (data, options = {}) => {
|
|
152
|
+
const ids = new Set();
|
|
153
|
+
let balance = 0;
|
|
154
|
+
const entries = Array.isArray(data) ? Array.from(data) : null;
|
|
155
|
+
const rows = entries?.every(isWaterfallDatum) ? entries : null;
|
|
156
|
+
const steps = (rows ?? []).map(datum => {
|
|
157
|
+
const start = datum.kind === 'total' ? 0 : balance;
|
|
158
|
+
const end = datum.kind === 'total' ? datum.value : balance + datum.value;
|
|
159
|
+
balance = end;
|
|
160
|
+
return { ...datum, end, start };
|
|
161
|
+
});
|
|
162
|
+
const valid = rows !== null && steps.every(step => {
|
|
163
|
+
if (!Number.isFinite(step.value) || !Number.isFinite(step.end) || ids.has(step.id))
|
|
164
|
+
return false;
|
|
165
|
+
ids.add(step.id);
|
|
166
|
+
return true;
|
|
167
|
+
});
|
|
168
|
+
const toneFor = (step) => {
|
|
169
|
+
if (step.tone)
|
|
170
|
+
return step.tone;
|
|
171
|
+
if (step.kind === 'total')
|
|
172
|
+
return 'series-1';
|
|
173
|
+
return step.value < 0 ? 'series-3' : 'series-2';
|
|
174
|
+
};
|
|
175
|
+
const frame = intervalFrame(valid ? steps.flatMap(step => [step.start, step.end]) : [], options);
|
|
176
|
+
const band = (frame.right - frame.left) / Math.max(1, steps.length);
|
|
177
|
+
const marks = valid ?
|
|
178
|
+
steps.map((step, index) => ({
|
|
179
|
+
end: step.end,
|
|
180
|
+
height: Math.abs(frame.y(step.end) - frame.y(step.start)),
|
|
181
|
+
key: step.id,
|
|
182
|
+
label: step.label,
|
|
183
|
+
start: step.start,
|
|
184
|
+
tone: toneFor(step),
|
|
185
|
+
value: step.value,
|
|
186
|
+
width: band * 0.7,
|
|
187
|
+
x: frame.left + band * (index + 0.15),
|
|
188
|
+
y: Math.min(frame.y(step.start), frame.y(step.end))
|
|
189
|
+
})) :
|
|
190
|
+
[];
|
|
191
|
+
const categoryTicks = getLumenChartCategoryTicks(marks.map(mark => mark.label), {
|
|
192
|
+
end: frame.right, positions: marks.map(mark => mark.x + mark.width / 2), start: frame.left
|
|
193
|
+
});
|
|
194
|
+
const connectors = marks.slice(0, -1).flatMap((mark, index) => {
|
|
195
|
+
const next = marks[index + 1];
|
|
196
|
+
return next ? [{ x1: mark.x + mark.width, x2: next.x, y: frame.y(mark.end) }] : [];
|
|
197
|
+
});
|
|
198
|
+
return { ...frame, categoryTicks, connectors, marks, valid };
|
|
199
|
+
};
|
|
200
|
+
const validHistogramBins = (bins, frequency) => {
|
|
201
|
+
const first = bins[0];
|
|
202
|
+
const binWidth = first ? first.end - first.start : 0;
|
|
203
|
+
return bins.every((bin, index) => {
|
|
204
|
+
const previous = bins[index - 1];
|
|
205
|
+
const width = bin.end - bin.start;
|
|
206
|
+
if (![bin.start, bin.end, bin.count, width].every(Number.isFinite))
|
|
207
|
+
return false;
|
|
208
|
+
if (width <= 0 || bin.count < 0)
|
|
209
|
+
return false;
|
|
210
|
+
if (previous && bin.start < previous.end)
|
|
211
|
+
return false;
|
|
212
|
+
return frequency === 'density' || Math.abs(width - binWidth) <= Math.abs(binWidth) * 1e-9;
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
const histogramDomain = (bins) => ({
|
|
216
|
+
min: bins[0]?.start ?? 0, max: bins.at(-1)?.end ?? 1
|
|
217
|
+
});
|
|
218
|
+
const isHistogramBin = (bin) => {
|
|
219
|
+
if (!isChartRecord(bin))
|
|
220
|
+
return false;
|
|
221
|
+
return typeof bin.start === 'number' && Number.isFinite(bin.start) &&
|
|
222
|
+
typeof bin.end === 'number' && Number.isFinite(bin.end) &&
|
|
223
|
+
typeof bin.count === 'number' && Number.isFinite(bin.count) &&
|
|
224
|
+
(bin.label === undefined || typeof bin.label === 'string');
|
|
225
|
+
};
|
|
226
|
+
const normalizeHistogramBins = (data, frequency) => {
|
|
227
|
+
if (!Array.isArray(data))
|
|
228
|
+
return { bins: [], valid: false };
|
|
229
|
+
const entries = Array.from(data);
|
|
230
|
+
if (!entries.every(isHistogramBin))
|
|
231
|
+
return { bins: [], valid: false };
|
|
232
|
+
const bins = entries.sort((a, b) => a.start - b.start);
|
|
233
|
+
return { bins, valid: validHistogramBins(bins, frequency) };
|
|
234
|
+
};
|
|
235
|
+
/** Bins are supplied by the application. Their numeric widths remain visible. */
|
|
236
|
+
export const createLumenHistogramGeometry = (data, options = {}) => {
|
|
237
|
+
const frequency = options.frequency ?? 'count';
|
|
238
|
+
const { bins, valid } = normalizeHistogramBins(data, frequency);
|
|
239
|
+
const valueFor = (bin) => frequency === 'density' ? bin.count / (bin.end - bin.start) : bin.count;
|
|
240
|
+
const finite = valid && bins.every(bin => Number.isFinite(valueFor(bin)));
|
|
241
|
+
const frame = intervalFrame(finite ? bins.map(valueFor) : [], options);
|
|
242
|
+
const xDomain = histogramDomain(bins);
|
|
243
|
+
const x = (value) => scaleLumenChartValue(value, xDomain, frame.left, frame.right);
|
|
244
|
+
const format = options.formatBoundary ?? String;
|
|
245
|
+
const marks = finite ?
|
|
246
|
+
bins.map(bin => ({
|
|
247
|
+
end: bin.end,
|
|
248
|
+
height: frame.y(0) - frame.y(valueFor(bin)),
|
|
249
|
+
key: chartKey(bin.start),
|
|
250
|
+
label: bin.label ?? `${format(bin.start)}–${format(bin.end)}`,
|
|
251
|
+
start: bin.start,
|
|
252
|
+
tone: options.tone ?? 'series-1',
|
|
253
|
+
value: valueFor(bin),
|
|
254
|
+
width: Math.max(0, x(bin.end) - x(bin.start) - 1),
|
|
255
|
+
x: x(bin.start),
|
|
256
|
+
y: frame.y(valueFor(bin))
|
|
257
|
+
})) :
|
|
258
|
+
[];
|
|
259
|
+
const boundaries = finite ? [...new Set(bins.flatMap(bin => [bin.start, bin.end]))].sort((a, b) => a - b) : [];
|
|
260
|
+
const categoryTicks = getLumenChartCategoryTicks(boundaries.map(format), {
|
|
261
|
+
end: frame.right, positions: boundaries.map(x), start: frame.left
|
|
262
|
+
});
|
|
263
|
+
return { ...frame, bins: finite ? bins : [], categoryTicks, frequency, marks, valid: finite, xDomain };
|
|
264
|
+
};
|
|
265
|
+
const heatmapScale = (automatic, options) => {
|
|
266
|
+
const midpoint = Number.isFinite(options.midpoint) ? options.midpoint ?? 0 : 0;
|
|
267
|
+
if (options.colorScale !== 'diverging')
|
|
268
|
+
return { domain: resolveDomain(automatic, options.domain), midpoint };
|
|
269
|
+
const radius = Math.max(Math.abs(automatic.min - midpoint), Math.abs(automatic.max - midpoint), 1);
|
|
270
|
+
const symmetric = { min: midpoint - radius, max: midpoint + radius };
|
|
271
|
+
const requested = resolveDomain(symmetric, options.domain);
|
|
272
|
+
const finite = (domain) => Number.isFinite(domain.min) && Number.isFinite(domain.max);
|
|
273
|
+
if (finite(requested) && requested.min < midpoint && requested.max > midpoint)
|
|
274
|
+
return { domain: requested, midpoint };
|
|
275
|
+
if (finite(symmetric))
|
|
276
|
+
return { domain: symmetric, midpoint };
|
|
277
|
+
// No finite symmetric extent exists around the requested midpoint; use a neutral zero.
|
|
278
|
+
const fallbackRadius = Math.max(Math.abs(automatic.min), Math.abs(automatic.max), 1);
|
|
279
|
+
return { domain: { min: -fallbackRadius, max: fallbackRadius }, midpoint: 0 };
|
|
280
|
+
};
|
|
281
|
+
const heatmapLegendBackground = (colorScale, midpointPercent) => {
|
|
282
|
+
if (colorScale === 'diverging')
|
|
283
|
+
return `linear-gradient(to right, hsl(var(--chart-diverging-negative)), hsl(var(--chart-diverging-mid)) ${midpointPercent}%, hsl(var(--chart-diverging-positive)))`;
|
|
284
|
+
return 'linear-gradient(to right, hsl(var(--chart-sequential-low)), hsl(var(--chart-sequential-high)))';
|
|
285
|
+
};
|
|
286
|
+
/** One cell per coordinate, including explicit missing measurements. */
|
|
287
|
+
export const createLumenHeatmapModel = (data, options = {}) => {
|
|
288
|
+
const seen = new Set();
|
|
289
|
+
const cells = normalizeLumenHeatmapData(data).filter(cell => {
|
|
290
|
+
const key = JSON.stringify([cell.x, cell.y]);
|
|
291
|
+
if (seen.has(key))
|
|
292
|
+
return false;
|
|
293
|
+
seen.add(key);
|
|
294
|
+
return true;
|
|
295
|
+
});
|
|
296
|
+
const base = createLumenHeatmapGeometry(cells, 496, 248);
|
|
297
|
+
const values = cells.flatMap(cell => cell.value !== null && Number.isFinite(cell.value) ? [cell.value] : []);
|
|
298
|
+
const automatic = getLumenChartDomain(values, false);
|
|
299
|
+
const { domain, midpoint } = heatmapScale(automatic, options);
|
|
300
|
+
const midpointPercent = scaleLumenChartValue(midpoint, domain, 0, 100);
|
|
301
|
+
const labelFor = (axis, value) => cells.find(cell => cell[axis] === value)?.[axis === 'x' ? 'xLabel' : 'yLabel'] ?? String(value);
|
|
302
|
+
const xTicks = getLumenChartCategoryTicks(base.xCategories.map(value => labelFor('x', value)), {
|
|
303
|
+
end: 616,
|
|
304
|
+
positions: base.xCategories.map((_, index) => 120 + (index + 0.5) * 496 / base.xCategories.length),
|
|
305
|
+
start: 120
|
|
306
|
+
});
|
|
307
|
+
const yTicks = base.yCategories.map((value, index) => ({
|
|
308
|
+
label: getLumenChartCategoryTicks([labelFor('y', value)], { end: 104, start: 0 })[0]?.label ?? '',
|
|
309
|
+
position: 24 + (index + 0.5) * 248 / base.yCategories.length,
|
|
310
|
+
value
|
|
311
|
+
}));
|
|
312
|
+
return {
|
|
313
|
+
cells: base.cells.map(cell => ({
|
|
314
|
+
...cell, xCoordinate: cell.xCoordinate + 120, yCoordinate: cell.yCoordinate + 24
|
|
315
|
+
})),
|
|
316
|
+
domain,
|
|
317
|
+
height: 320,
|
|
318
|
+
legendBackground: heatmapLegendBackground(options.colorScale, midpointPercent),
|
|
319
|
+
midpoint,
|
|
320
|
+
midpointPercent,
|
|
321
|
+
width: 640,
|
|
322
|
+
xTicks,
|
|
323
|
+
yTicks
|
|
324
|
+
};
|
|
325
|
+
};
|
|
326
|
+
/** Platform-neutral color weights; missing measurements have no color weight. */
|
|
327
|
+
export const getLumenHeatmapColorMix = (value, domain, colorScale = 'sequential', midpoint = 0) => {
|
|
328
|
+
if (value === null || !Number.isFinite(value))
|
|
329
|
+
return null;
|
|
330
|
+
const ratio = (start, end) => {
|
|
331
|
+
if (end === start)
|
|
332
|
+
return 0.5;
|
|
333
|
+
return Math.max(0, Math.min(1, scaleLumenChartValue(value, { min: start, max: end }, 0, 1)));
|
|
334
|
+
};
|
|
335
|
+
if (colorScale === 'diverging') {
|
|
336
|
+
const negative = value < midpoint;
|
|
337
|
+
const amount = negative ? 1 - ratio(domain.min, midpoint) : ratio(midpoint, domain.max);
|
|
338
|
+
return { base: 'divergingMid', overlay: negative ? 'divergingNegative' : 'divergingPositive', ratio: amount };
|
|
339
|
+
}
|
|
340
|
+
return { base: 'sequentialLow', overlay: 'sequentialHigh', ratio: ratio(domain.min, domain.max) };
|
|
341
|
+
};
|
|
342
|
+
export const getLumenHeatmapColor = (value, domain, colorScale = 'sequential', midpoint = 0) => {
|
|
343
|
+
const mix = getLumenHeatmapColorMix(value, domain, colorScale, midpoint);
|
|
344
|
+
if (!mix)
|
|
345
|
+
return 'hsl(var(--surface-muted))';
|
|
346
|
+
const token = (name) => name.replace(/[A-Z]/gu, letter => `-${letter.toLowerCase()}`);
|
|
347
|
+
return `color-mix(in srgb, hsl(var(--chart-${token(mix.overlay)})) ${mix.ratio * 100}%, hsl(var(--chart-${token(mix.base)})))`;
|
|
348
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LumenChartDatum } from './charts.js';
|
|
2
|
+
import { type LumenWorkflowDuration } from './motion-workflows.js';
|
|
3
|
+
export declare const getLumenChartMotionKey: (seriesId: string, point: Pick<LumenChartDatum, "id" | "x">) => string;
|
|
4
|
+
/** Animates decorative SVG geometry only. Tables, summaries, and activation values update immediately. */
|
|
5
|
+
export declare const bindLumenChartMotion: (root: HTMLElement, duration?: LumenWorkflowDuration) => (() => void);
|
|
6
|
+
//# sourceMappingURL=chart-motion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-motion.d.ts","sourceRoot":"","sources":["../src/chart-motion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAwD,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAExH,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,EAAE,OAAO,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,GAAG,CAAC,KAAG,MAEnG,CAAA;AAkDD,0GAA0G;AAC1G,eAAO,MAAM,oBAAoB,GAAI,MAAM,WAAW,EAAE,WAAU,qBAAkC,KAAG,CAAC,MAAM,IAAI,CAwFjH,CAAA"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { getLumenWorkflowTiming, isLumenWorkflowMotionReduced } from './motion-workflows.js';
|
|
2
|
+
export const getLumenChartMotionKey = (seriesId, point) => (JSON.stringify([seriesId, point.id ?? [typeof point.x, point.x]]));
|
|
3
|
+
const geometryProperties = ['cx', 'cy', 'r', 'x', 'y', 'width', 'height', 'd'];
|
|
4
|
+
const captureFrame = (element) => {
|
|
5
|
+
const frame = {};
|
|
6
|
+
const css = element.ownerDocument.defaultView?.CSS;
|
|
7
|
+
for (const property of geometryProperties) {
|
|
8
|
+
const value = element.getAttribute(property);
|
|
9
|
+
if (value === null)
|
|
10
|
+
continue;
|
|
11
|
+
if (property === 'd') {
|
|
12
|
+
const path = `path("${value}")`;
|
|
13
|
+
if (css?.supports('d', path))
|
|
14
|
+
frame.d = path;
|
|
15
|
+
}
|
|
16
|
+
else if (Number.isFinite(Number(value)))
|
|
17
|
+
frame[property] = `${value}px`;
|
|
18
|
+
}
|
|
19
|
+
return frame;
|
|
20
|
+
};
|
|
21
|
+
const captureMarks = (root) => {
|
|
22
|
+
const result = new Map();
|
|
23
|
+
const duplicate = new Set();
|
|
24
|
+
for (const element of root.querySelectorAll('[data-ui-chart-motion-key]')) {
|
|
25
|
+
const key = element.getAttribute('data-ui-chart-motion-key');
|
|
26
|
+
if (!key || duplicate.has(key))
|
|
27
|
+
continue;
|
|
28
|
+
if (result.has(key)) {
|
|
29
|
+
result.delete(key);
|
|
30
|
+
duplicate.add(key);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const frame = captureFrame(element);
|
|
34
|
+
result.set(key, { element, frame });
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
/** Animates decorative SVG geometry only. Tables, summaries, and activation values update immediately. */
|
|
39
|
+
export const bindLumenChartMotion = (root, duration = 'standard') => {
|
|
40
|
+
let previous = captureMarks(root);
|
|
41
|
+
const active = new Map();
|
|
42
|
+
const cancel = () => {
|
|
43
|
+
for (const animation of active.values())
|
|
44
|
+
animation.cancel();
|
|
45
|
+
active.clear();
|
|
46
|
+
};
|
|
47
|
+
const captureInterruptedFrames = () => {
|
|
48
|
+
const view = root.ownerDocument.defaultView;
|
|
49
|
+
if (!view)
|
|
50
|
+
return;
|
|
51
|
+
for (const snapshot of previous.values()) {
|
|
52
|
+
if (!active.has(snapshot.element) || !snapshot.element.isConnected)
|
|
53
|
+
continue;
|
|
54
|
+
const style = view.getComputedStyle(snapshot.element);
|
|
55
|
+
for (const property of geometryProperties) {
|
|
56
|
+
if (!(property in snapshot.frame))
|
|
57
|
+
continue;
|
|
58
|
+
const value = style.getPropertyValue(property);
|
|
59
|
+
if (value)
|
|
60
|
+
snapshot.frame[property] = value;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const refresh = () => {
|
|
65
|
+
captureInterruptedFrames();
|
|
66
|
+
const next = captureMarks(root);
|
|
67
|
+
cancel();
|
|
68
|
+
if (!isLumenWorkflowMotionReduced(root)) {
|
|
69
|
+
const timing = getLumenWorkflowTiming(root, duration);
|
|
70
|
+
for (const [key, snapshot] of next) {
|
|
71
|
+
if (typeof snapshot.element.animate !== 'function' || timing.duration === 0)
|
|
72
|
+
continue;
|
|
73
|
+
const old = previous.get(key);
|
|
74
|
+
const frames = old ? [old.frame, snapshot.frame] : [{ opacity: 0 }, { opacity: 1 }];
|
|
75
|
+
if (old && JSON.stringify(old.frame) === JSON.stringify(snapshot.frame))
|
|
76
|
+
continue;
|
|
77
|
+
let animation;
|
|
78
|
+
try {
|
|
79
|
+
animation = snapshot.element.animate(frames, timing);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
active.set(snapshot.element, animation);
|
|
85
|
+
void animation.finished.then(() => {
|
|
86
|
+
if (active.get(snapshot.element) === animation)
|
|
87
|
+
active.delete(snapshot.element);
|
|
88
|
+
return undefined;
|
|
89
|
+
}, () => {
|
|
90
|
+
if (active.get(snapshot.element) === animation)
|
|
91
|
+
active.delete(snapshot.element);
|
|
92
|
+
return undefined;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
previous = next;
|
|
97
|
+
};
|
|
98
|
+
const observer = new MutationObserver(refresh);
|
|
99
|
+
observer.observe(root, { subtree: true, childList: true, attributes: true, attributeFilter: [...geometryProperties, 'hidden', 'data-ui-chart-motion-key', 'data-ui-motion'] });
|
|
100
|
+
const media = root.ownerDocument.defaultView?.matchMedia('(prefers-reduced-motion: reduce)');
|
|
101
|
+
media?.addEventListener('change', refresh);
|
|
102
|
+
return () => {
|
|
103
|
+
observer.disconnect();
|
|
104
|
+
media?.removeEventListener('change', refresh);
|
|
105
|
+
cancel();
|
|
106
|
+
};
|
|
107
|
+
};
|
package/dist/charts.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { createLumenChartActivationController, createLumenChartDatumActivation, createLumenHeatmapDatumActivation, createLumenRangeDatumActivation, type LumenChartActivationController, type LumenChartDatumActivationDetail, parseLumenChartDatumActivation } from './chart-activation.js';
|
|
1
2
|
export declare const lumenChartTones: readonly ["series-1", "series-2", "series-3", "series-4", "series-5", "series-6", "series-7", "series-8", "brand", "accent", "success", "warning", "danger", "neutral"];
|
|
2
3
|
export type LumenChartTone = (typeof lumenChartTones)[number];
|
|
3
4
|
export type LumenChartScaleType = 'categorical' | 'linear' | 'time';
|
|
@@ -44,7 +45,7 @@ export interface LumenChartAnnotation {
|
|
|
44
45
|
value: number | string;
|
|
45
46
|
}
|
|
46
47
|
export interface LumenChartValidationIssue {
|
|
47
|
-
code: 'duplicate-datum-id' | 'duplicate-series-id' | 'invalid-size' | 'invalid-x' | 'invalid-y' | 'unsorted-x';
|
|
48
|
+
code: 'duplicate-category' | 'duplicate-datum-id' | 'duplicate-series-id' | 'invalid-size' | 'invalid-x' | 'invalid-y' | 'unsorted-x';
|
|
48
49
|
message: string;
|
|
49
50
|
path: string;
|
|
50
51
|
}
|
|
@@ -56,11 +57,17 @@ export interface LumenChartSummary {
|
|
|
56
57
|
seriesCount: number;
|
|
57
58
|
}
|
|
58
59
|
export interface LumenChartLabels {
|
|
60
|
+
count: string;
|
|
61
|
+
density: string;
|
|
62
|
+
end: string;
|
|
63
|
+
invalidData: string;
|
|
64
|
+
start: string;
|
|
59
65
|
category: string;
|
|
60
66
|
chartData: string;
|
|
61
67
|
chartLegend: string;
|
|
62
68
|
column: string;
|
|
63
69
|
empty: string;
|
|
70
|
+
exploreData: string;
|
|
64
71
|
high: string;
|
|
65
72
|
low: string;
|
|
66
73
|
notAvailable: string;
|
|
@@ -70,6 +77,7 @@ export interface LumenChartLabels {
|
|
|
70
77
|
value: string;
|
|
71
78
|
viewData: string;
|
|
72
79
|
x: string;
|
|
80
|
+
formatDatumAction: (context: string) => string;
|
|
73
81
|
formatHeatmapSummary: (count: number) => string;
|
|
74
82
|
formatRangeSummary: (count: number) => string;
|
|
75
83
|
formatSummary: (summary: Readonly<LumenChartSummary>, formatValue: (value: number) => string) => string;
|
|
@@ -96,6 +104,10 @@ export interface LumenLineGeometryOptions {
|
|
|
96
104
|
height?: number;
|
|
97
105
|
includeZero?: boolean;
|
|
98
106
|
padding?: number;
|
|
107
|
+
paddingBottom?: number;
|
|
108
|
+
paddingLeft?: number;
|
|
109
|
+
paddingRight?: number;
|
|
110
|
+
paddingTop?: number;
|
|
99
111
|
width?: number;
|
|
100
112
|
xDomain?: Partial<LumenChartDomain>;
|
|
101
113
|
xScale?: LumenChartScaleType;
|
|
@@ -124,11 +136,19 @@ export interface LumenBarGeometry {
|
|
|
124
136
|
domain: LumenChartDomain;
|
|
125
137
|
height: number;
|
|
126
138
|
marks: readonly LumenBarGeometryMark[];
|
|
139
|
+
margin: Readonly<{
|
|
140
|
+
bottom: number;
|
|
141
|
+
left: number;
|
|
142
|
+
right: number;
|
|
143
|
+
top: number;
|
|
144
|
+
}>;
|
|
127
145
|
width: number;
|
|
128
146
|
}
|
|
129
147
|
export interface LumenBarGeometryOptions {
|
|
130
148
|
categoryWidth?: number;
|
|
131
149
|
domain?: Partial<LumenChartDomain>;
|
|
150
|
+
formatCategory?: (category: number | string) => string;
|
|
151
|
+
formatValue?: (value: number) => string;
|
|
132
152
|
height?: number;
|
|
133
153
|
layout?: LumenBarChartLayout;
|
|
134
154
|
orientation?: LumenChartOrientation;
|
|
@@ -173,6 +193,7 @@ export interface LumenScatterGeometry {
|
|
|
173
193
|
width: number;
|
|
174
194
|
xDomain: LumenChartDomain;
|
|
175
195
|
}
|
|
196
|
+
export type LumenScatterScaleType = 'linear' | 'log' | 'time';
|
|
176
197
|
export interface LumenScatterGeometryOptions {
|
|
177
198
|
domain?: Partial<LumenChartDomain>;
|
|
178
199
|
height?: number;
|
|
@@ -181,7 +202,7 @@ export interface LumenScatterGeometryOptions {
|
|
|
181
202
|
padding?: number;
|
|
182
203
|
width?: number;
|
|
183
204
|
xDomain?: Partial<LumenChartDomain>;
|
|
184
|
-
xScale?:
|
|
205
|
+
xScale?: LumenScatterScaleType;
|
|
185
206
|
}
|
|
186
207
|
export interface LumenHeatmapDatum {
|
|
187
208
|
id?: string;
|
|
@@ -231,6 +252,28 @@ export declare const hasLumenPieData: (data: readonly LumenChartDatum[]) => bool
|
|
|
231
252
|
export declare const getLumenChartDomain: (values: readonly (number | null)[], includeZero?: boolean) => LumenChartDomain;
|
|
232
253
|
export declare const scaleLumenChartValue: (value: number, domain: LumenChartDomain, rangeStart: number, rangeEnd: number) => number;
|
|
233
254
|
export declare const getLumenChartTicks: (domain: LumenChartDomain, count?: number) => number[];
|
|
255
|
+
/**
|
|
256
|
+
* Reserves enough SVG space for formatted value-axis labels when text measurement is unavailable
|
|
257
|
+
* during server rendering. The estimate targets Lumen's 0.6875rem chart label style and stays
|
|
258
|
+
* bounded so unusually verbose formatters cannot consume the complete plot.
|
|
259
|
+
*/
|
|
260
|
+
export declare const getLumenChartAxisPadding: (labels: readonly string[], minimum?: number) => number;
|
|
261
|
+
export interface LumenChartCategoryTick {
|
|
262
|
+
index: number;
|
|
263
|
+
label: string;
|
|
264
|
+
position: number;
|
|
265
|
+
textAnchor: 'end' | 'middle' | 'start';
|
|
266
|
+
}
|
|
267
|
+
export interface LumenChartCategoryTickOptions {
|
|
268
|
+
end: number;
|
|
269
|
+
minimumGap?: number;
|
|
270
|
+
positions?: readonly number[];
|
|
271
|
+
start: number;
|
|
272
|
+
}
|
|
273
|
+
/** Selects readable axis labels without changing or downsampling the underlying chart data. */
|
|
274
|
+
export declare const getLumenChartCategoryTicks: (labels: readonly string[], { end, minimumGap, positions, start }: LumenChartCategoryTickOptions) => LumenChartCategoryTick[];
|
|
275
|
+
/** Axis labels prefer xLabel; detail labels prefer an explicitly supplied full formatter. */
|
|
276
|
+
export declare const getLumenChartCategoryLabel: (series: readonly LumenChartSeries[], category: number | string, formatCategory?: (category: number | string) => string, context?: "axis" | "detail") => string;
|
|
234
277
|
export declare const resolveLumenChartTone: (tone: LumenChartTone | undefined, index?: number) => LumenChartTone;
|
|
235
278
|
export declare const getLumenChartToneClassName: (tone: LumenChartTone | undefined, index?: number) => string;
|
|
236
279
|
export declare const getLumenPieChartVariantClassName: (variant: LumenPieChartVariant) => string;
|
|
@@ -246,7 +289,29 @@ export declare const formatLumenChartSummary: (series: readonly LumenChartSeries
|
|
|
246
289
|
export declare const validateLumenChartSeries: (series: readonly LumenChartSeries[], xScale?: LumenChartScaleType) => LumenChartValidationIssue[];
|
|
247
290
|
export declare const downsampleLumenChartData: (data: readonly LumenChartDatum[], threshold: number) => LumenChartDatum[];
|
|
248
291
|
export declare const appendLumenChartDatum: (series: LumenChartSeries, datum: LumenChartDatum, maximumPoints?: number) => LumenChartSeries;
|
|
292
|
+
export declare const scaleLumenScatterX: (value: number, domain: LumenChartDomain, rangeStart: number, rangeEnd: number, scale?: LumenScatterScaleType) => number;
|
|
293
|
+
export declare const getLumenScatterXTicks: (domain: LumenChartDomain, scale: LumenScatterScaleType) => number[];
|
|
294
|
+
export interface LumenScatterReference {
|
|
295
|
+
id: string;
|
|
296
|
+
label: string;
|
|
297
|
+
x?: number;
|
|
298
|
+
y?: number;
|
|
299
|
+
/** Supplying both ranges creates a reference region. */
|
|
300
|
+
xEnd?: number;
|
|
301
|
+
yEnd?: number;
|
|
302
|
+
}
|
|
303
|
+
export interface LumenScatterReferenceGeometry extends LumenScatterReference {
|
|
304
|
+
x1: number;
|
|
305
|
+
x2: number;
|
|
306
|
+
y1: number;
|
|
307
|
+
y2: number;
|
|
308
|
+
region: boolean;
|
|
309
|
+
}
|
|
310
|
+
export declare const createLumenScatterReferences: (references: readonly LumenScatterReference[], geometry: LumenScatterGeometry, scale?: LumenScatterScaleType, padding?: number) => LumenScatterReferenceGeometry[];
|
|
249
311
|
export declare const createLumenScatterGeometry: (series: readonly LumenChartSeries[], options?: LumenScatterGeometryOptions) => LumenScatterGeometry;
|
|
250
|
-
|
|
312
|
+
/** Reject the whole decoded collection before adapters read or format cell fields. */
|
|
313
|
+
export declare const normalizeLumenHeatmapData: (data: readonly unknown[]) => LumenHeatmapDatum[];
|
|
314
|
+
export declare const createLumenHeatmapGeometry: (rawData: readonly unknown[], width?: number, height?: number) => LumenHeatmapGeometry;
|
|
251
315
|
export declare const createLumenRangeGeometry: (data: readonly LumenRangeDatum[], options?: LumenLineGeometryOptions) => LumenRangeGeometry;
|
|
316
|
+
export * from './extended-charts.js';
|
|
252
317
|
//# sourceMappingURL=charts.d.ts.map
|
package/dist/charts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../src/charts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../src/charts.ts"],"names":[],"mappings":"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"}
|