blazeplot 0.2.2 → 0.3.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/dist/Chart-BW9JaHs6.js +2903 -0
- package/dist/Chart-BW9JaHs6.js.map +1 -0
- package/dist/OverlayUtils-Cw1o8UH-.js +35 -0
- package/dist/OverlayUtils-Cw1o8UH-.js.map +1 -0
- package/dist/core/SeriesStore.d.ts +2 -0
- package/dist/core/SeriesStore.d.ts.map +1 -1
- package/dist/core/UniformRingBuffer.d.ts +67 -0
- package/dist/core/UniformRingBuffer.d.ts.map +1 -0
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/types.d.ts +5 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +153 -2304
- package/dist/index.js.map +1 -1
- package/dist/interaction/AxisController.d.ts +45 -3
- package/dist/interaction/AxisController.d.ts.map +1 -1
- package/dist/interaction/index.d.ts +1 -0
- package/dist/interaction/index.d.ts.map +1 -1
- package/dist/linked.d.ts +3 -0
- package/dist/linked.d.ts.map +1 -0
- package/dist/linked.js +64 -0
- package/dist/linked.js.map +1 -0
- package/dist/plugins/crosshair.d.ts +3 -0
- package/dist/plugins/crosshair.d.ts.map +1 -0
- package/dist/plugins/crosshair.js +192 -0
- package/dist/plugins/crosshair.js.map +1 -0
- package/dist/plugins/interactions.js +87 -65
- package/dist/plugins/interactions.js.map +1 -1
- package/dist/plugins/navigator.d.ts +3 -0
- package/dist/plugins/navigator.d.ts.map +1 -0
- package/dist/plugins/navigator.js +147 -0
- package/dist/plugins/navigator.js.map +1 -0
- package/dist/plugins/selection.d.ts +3 -0
- package/dist/plugins/selection.d.ts.map +1 -0
- package/dist/plugins/selection.js +144 -0
- package/dist/plugins/selection.js.map +1 -0
- package/dist/plugins/tooltip.js +29 -45
- package/dist/plugins/tooltip.js.map +1 -1
- package/dist/react.d.ts +14 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +30 -0
- package/dist/react.js.map +1 -0
- package/dist/ui/Chart.d.ts +79 -1
- package/dist/ui/Chart.d.ts.map +1 -1
- package/dist/ui/ChartLayout.d.ts +10 -0
- package/dist/ui/ChartLayout.d.ts.map +1 -1
- package/dist/ui/Crosshair.d.ts +60 -0
- package/dist/ui/Crosshair.d.ts.map +1 -0
- package/dist/ui/Interactions.d.ts.map +1 -1
- package/dist/ui/LinkedCharts.d.ts +23 -0
- package/dist/ui/LinkedCharts.d.ts.map +1 -0
- package/dist/ui/Navigator.d.ts +32 -0
- package/dist/ui/Navigator.d.ts.map +1 -0
- package/dist/ui/OverlayUtils.d.ts +17 -0
- package/dist/ui/OverlayUtils.d.ts.map +1 -0
- package/dist/ui/Selection.d.ts +64 -0
- package/dist/ui/Selection.d.ts.map +1 -0
- package/dist/ui/Tooltip.d.ts.map +1 -1
- package/dist/ui/theme.d.ts +12 -0
- package/dist/ui/theme.d.ts.map +1 -1
- package/package.json +29 -1
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
//#region src/ui/Selection.ts
|
|
2
|
+
var e = "rgba(59, 130, 246, 0.16)", t = "rgba(147, 197, 253, 0.95)";
|
|
3
|
+
function n(e, t, n) {
|
|
4
|
+
return Math.max(t, Math.min(e, n));
|
|
5
|
+
}
|
|
6
|
+
function r(e, t, n, r) {
|
|
7
|
+
let i = Math.min(e[0], t[0]), a = Math.max(e[0], t[0]), o = Math.min(e[1], t[1]), s = Math.max(e[1], t[1]);
|
|
8
|
+
return {
|
|
9
|
+
xMin: r === "y-range" ? n.xMin : i,
|
|
10
|
+
xMax: r === "y-range" ? n.xMax : a,
|
|
11
|
+
yMin: r === "x-range" ? n.yMin : o,
|
|
12
|
+
yMax: r === "x-range" ? n.yMax : s
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function i(e, t, r, i) {
|
|
16
|
+
if (r.width <= 0 || r.height <= 0) return null;
|
|
17
|
+
let a = n(e - r.left, 0, r.width), o = n(t - r.top, 0, r.height);
|
|
18
|
+
return [i.xMin + a / r.width * (i.xMax - i.xMin), i.yMax - o / r.height * (i.yMax - i.yMin)];
|
|
19
|
+
}
|
|
20
|
+
function a(e, t, r) {
|
|
21
|
+
let i = n(e.startX - t.left, 0, t.width), a = n(e.startY - t.top, 0, t.height), o = n(e.currentX - t.left, 0, t.width), s = n(e.currentY - t.top, 0, t.height);
|
|
22
|
+
return {
|
|
23
|
+
left: r === "y-range" ? 0 : Math.min(i, o),
|
|
24
|
+
top: r === "x-range" ? 0 : Math.min(a, s),
|
|
25
|
+
width: r === "y-range" ? t.width : Math.abs(o - i),
|
|
26
|
+
height: r === "x-range" ? t.height : Math.abs(s - a)
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function o(e, t, n, r, i) {
|
|
30
|
+
let a = [], o = n === "x-range", s = {
|
|
31
|
+
xMin: t.xMin,
|
|
32
|
+
xMax: t.xMax,
|
|
33
|
+
yMin: -Infinity,
|
|
34
|
+
yMax: Infinity
|
|
35
|
+
};
|
|
36
|
+
for (let n of e) {
|
|
37
|
+
if (!n.visible || !o && n.yAxis !== r) continue;
|
|
38
|
+
let e = n.series.visibleIndexRange(s), c = [], l = 0;
|
|
39
|
+
for (let r = e.start; r < e.end; r++) {
|
|
40
|
+
let e = n.series.sampleAt(r);
|
|
41
|
+
e && (!o && (e.y < t.yMin || e.y > t.yMax) || (l++, c.length < i && c.push(e)));
|
|
42
|
+
}
|
|
43
|
+
l !== 0 && a.push({
|
|
44
|
+
series: n.series,
|
|
45
|
+
seriesIndex: n.index,
|
|
46
|
+
id: n.id,
|
|
47
|
+
name: n.name,
|
|
48
|
+
yAxis: n.yAxis,
|
|
49
|
+
samples: c,
|
|
50
|
+
total: l,
|
|
51
|
+
truncated: l > c.length
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return a;
|
|
55
|
+
}
|
|
56
|
+
function s(n = {}) {
|
|
57
|
+
let s = n.mode ?? "xy", c = n.yAxis ?? "left", l = n.minDragDistancePx ?? 4, u = Math.max(0, Math.floor(n.maxSamplesPerSeries ?? 5e3)), d = n.samplePhase ?? "commit", f = null, p = null, m = null, h = null, g = (e, t) => {
|
|
58
|
+
if (!(!e || !n.onSeriesSelectionChange)) for (let r of e.getSeriesState()) {
|
|
59
|
+
let e = t?.samples.find((e) => e.series === r.series) ?? null;
|
|
60
|
+
n.onSeriesSelectionChange(r, e !== null, e, t);
|
|
61
|
+
}
|
|
62
|
+
}, _ = (e, t, r) => {
|
|
63
|
+
let i = {
|
|
64
|
+
type: e,
|
|
65
|
+
selection: t,
|
|
66
|
+
sourceEvent: r
|
|
67
|
+
};
|
|
68
|
+
n.onChange?.(i), e === "start" && n.onStart?.(i), e === "update" && n.onUpdate?.(i), e === "commit" && n.onCommit?.(i), e === "clear" && n.onClear?.(i);
|
|
69
|
+
}, v = (e) => {
|
|
70
|
+
if (p) {
|
|
71
|
+
if (!e || e.width <= 0 || e.height <= 0) {
|
|
72
|
+
p.style.display = "none";
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
p.style.left = `${e.left}px`, p.style.top = `${e.top}px`, p.style.width = `${e.width}px`, p.style.height = `${e.height}px`, p.style.display = "block";
|
|
76
|
+
}
|
|
77
|
+
}, y = (e, t, n) => {
|
|
78
|
+
let l = e.canvas.getBoundingClientRect(), d = e.getViewport(c), f = i(t.startX, t.startY, l, d), p = i(t.currentX, t.currentY, l, d);
|
|
79
|
+
if (!f || !p) return null;
|
|
80
|
+
let m = r(f, p, d, s);
|
|
81
|
+
return {
|
|
82
|
+
mode: s,
|
|
83
|
+
yAxis: c,
|
|
84
|
+
bounds: m,
|
|
85
|
+
plotBounds: a(t, l, s),
|
|
86
|
+
samples: n ? o(e.getSeriesState(), m, s, c, u) : []
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
install(r) {
|
|
91
|
+
f = r;
|
|
92
|
+
let i = r.canvas;
|
|
93
|
+
p = document.createElement("div"), p.className = n.className ?? "blazeplot-selection-brush", p.style.position = "absolute", p.style.display = "none", p.style.pointerEvents = "none", p.style.zIndex = String(n.zIndex ?? 26), p.style.border = `1px solid ${n.stroke ?? t}`, p.style.background = n.fill ?? e, r.plotElement.appendChild(p);
|
|
94
|
+
let a = (e) => {
|
|
95
|
+
if (m || e.button !== 0) return;
|
|
96
|
+
e.preventDefault(), i.setPointerCapture(e.pointerId), m = {
|
|
97
|
+
pointerId: e.pointerId,
|
|
98
|
+
startX: e.clientX,
|
|
99
|
+
startY: e.clientY,
|
|
100
|
+
currentX: e.clientX,
|
|
101
|
+
currentY: e.clientY
|
|
102
|
+
};
|
|
103
|
+
let t = y(r, m, d === "update");
|
|
104
|
+
v(t?.plotBounds ?? null), _("start", t, e);
|
|
105
|
+
}, o = (e) => {
|
|
106
|
+
if (!m || e.pointerId !== m.pointerId) return;
|
|
107
|
+
e.preventDefault(), m.currentX = e.clientX, m.currentY = e.clientY;
|
|
108
|
+
let t = y(r, m, d === "update");
|
|
109
|
+
v(t?.plotBounds ?? null), d === "update" && g(r, t), _("update", t, e);
|
|
110
|
+
}, s = (e, t) => {
|
|
111
|
+
if (!m || e.pointerId !== m.pointerId) return;
|
|
112
|
+
e.preventDefault();
|
|
113
|
+
let n = m;
|
|
114
|
+
m = null, i.hasPointerCapture(e.pointerId) && i.releasePointerCapture(e.pointerId);
|
|
115
|
+
let a = n.currentX - n.startX, o = n.currentY - n.startY;
|
|
116
|
+
if (!t || Math.hypot(a, o) < l) {
|
|
117
|
+
v(null);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
let s = y(r, n, d !== "none");
|
|
121
|
+
if (!s || s.bounds.xMax <= s.bounds.xMin || s.bounds.yMax <= s.bounds.yMin) {
|
|
122
|
+
v(null);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
h = s, v(s.plotBounds), g(r, s), r.emitSelect(s), _("commit", s, e);
|
|
126
|
+
}, c = (e) => s(e, !0), u = (e) => s(e, !1), b = (e) => {
|
|
127
|
+
n.clearOnEscape === !1 || e.key !== "Escape" || (h = null, v(null), g(r, null), r.emitSelect(null), _("clear", null, e));
|
|
128
|
+
};
|
|
129
|
+
return i.addEventListener("pointerdown", a), i.addEventListener("pointermove", o), i.addEventListener("pointerup", c), i.addEventListener("pointercancel", u), globalThis.addEventListener("keydown", b), () => {
|
|
130
|
+
i.removeEventListener("pointerdown", a), i.removeEventListener("pointermove", o), i.removeEventListener("pointerup", c), i.removeEventListener("pointercancel", u), globalThis.removeEventListener("keydown", b), p?.remove(), p = null, f = null, m = null, h = null;
|
|
131
|
+
};
|
|
132
|
+
},
|
|
133
|
+
clear() {
|
|
134
|
+
h = null, v(null), f?.emitSelect(null), g(f, null), _("clear", null);
|
|
135
|
+
},
|
|
136
|
+
getSelection() {
|
|
137
|
+
return h;
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//#endregion
|
|
142
|
+
export { s as selectionPlugin };
|
|
143
|
+
|
|
144
|
+
//# sourceMappingURL=selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.js","names":[],"sources":["../../src/ui/Selection.ts"],"sourcesContent":["import type { SeriesSample, SeriesYAxis, Viewport } from \"../core/types.js\";\nimport type { SeriesStore } from \"../core/SeriesStore.js\";\nimport type { Chart, ChartPlugin, ChartSeriesState } from \"./Chart.js\";\n\nexport type SelectionMode = \"x-range\" | \"y-range\" | \"xy\";\nexport type SelectionEventType = \"start\" | \"update\" | \"commit\" | \"clear\";\nexport type SelectionSamplePhase = \"commit\" | \"update\" | \"none\";\n\nexport interface SelectionBounds {\n readonly xMin: number;\n readonly xMax: number;\n readonly yMin: number;\n readonly yMax: number;\n}\n\nexport interface SelectionPlotBounds {\n readonly left: number;\n readonly top: number;\n readonly width: number;\n readonly height: number;\n}\n\nexport interface SelectionSeriesSamples {\n readonly series: SeriesStore;\n readonly seriesIndex: number;\n readonly id?: string;\n readonly name?: string;\n readonly yAxis: SeriesYAxis;\n readonly samples: readonly SeriesSample[];\n readonly total: number;\n readonly truncated: boolean;\n}\n\nexport interface SelectionState {\n readonly mode: SelectionMode;\n readonly yAxis: SeriesYAxis;\n readonly bounds: SelectionBounds;\n readonly plotBounds: SelectionPlotBounds;\n readonly samples: readonly SelectionSeriesSamples[];\n}\n\nexport interface SelectionEvent {\n readonly type: SelectionEventType;\n readonly selection: SelectionState | null;\n readonly sourceEvent?: PointerEvent | KeyboardEvent;\n}\n\nexport interface SelectionPluginOptions {\n readonly mode?: SelectionMode;\n readonly yAxis?: SeriesYAxis;\n readonly minDragDistancePx?: number;\n readonly maxSamplesPerSeries?: number;\n readonly samplePhase?: SelectionSamplePhase;\n readonly className?: string;\n readonly fill?: string;\n readonly stroke?: string;\n readonly zIndex?: number;\n readonly clearOnEscape?: boolean;\n readonly onStart?: (event: SelectionEvent) => void;\n readonly onUpdate?: (event: SelectionEvent) => void;\n readonly onCommit?: (event: SelectionEvent) => void;\n readonly onClear?: (event: SelectionEvent) => void;\n readonly onChange?: (event: SelectionEvent) => void;\n readonly onSeriesSelectionChange?: (series: ChartSeriesState, selected: boolean, samples: SelectionSeriesSamples | null, selection: SelectionState | null) => void;\n}\n\nexport interface SelectionPlugin extends ChartPlugin {\n clear(): void;\n getSelection(): SelectionState | null;\n}\n\ninterface DragState {\n readonly pointerId: number;\n readonly startX: number;\n readonly startY: number;\n currentX: number;\n currentY: number;\n}\n\nconst DEFAULT_FILL = \"rgba(59, 130, 246, 0.16)\";\nconst DEFAULT_STROKE = \"rgba(147, 197, 253, 0.95)\";\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(value, max));\n}\n\nfunction normalizeBounds(a: [number, number], b: [number, number], current: Viewport, mode: SelectionMode): SelectionBounds {\n const xMin = Math.min(a[0], b[0]);\n const xMax = Math.max(a[0], b[0]);\n const yMin = Math.min(a[1], b[1]);\n const yMax = Math.max(a[1], b[1]);\n return {\n xMin: mode === \"y-range\" ? current.xMin : xMin,\n xMax: mode === \"y-range\" ? current.xMax : xMax,\n yMin: mode === \"x-range\" ? current.yMin : yMin,\n yMax: mode === \"x-range\" ? current.yMax : yMax,\n };\n}\n\nfunction pointerToData(clientX: number, clientY: number, rect: DOMRect, viewport: Viewport): [number, number] | null {\n if (rect.width <= 0 || rect.height <= 0) return null;\n const plotX = clamp(clientX - rect.left, 0, rect.width);\n const plotY = clamp(clientY - rect.top, 0, rect.height);\n return [\n viewport.xMin + (plotX / rect.width) * (viewport.xMax - viewport.xMin),\n viewport.yMax - (plotY / rect.height) * (viewport.yMax - viewport.yMin),\n ];\n}\n\nfunction plotBoundsForDrag(drag: DragState, rect: DOMRect, mode: SelectionMode): SelectionPlotBounds {\n const x0 = clamp(drag.startX - rect.left, 0, rect.width);\n const y0 = clamp(drag.startY - rect.top, 0, rect.height);\n const x1 = clamp(drag.currentX - rect.left, 0, rect.width);\n const y1 = clamp(drag.currentY - rect.top, 0, rect.height);\n const left = mode === \"y-range\" ? 0 : Math.min(x0, x1);\n const top = mode === \"x-range\" ? 0 : Math.min(y0, y1);\n const width = mode === \"y-range\" ? rect.width : Math.abs(x1 - x0);\n const height = mode === \"x-range\" ? rect.height : Math.abs(y1 - y0);\n return { left, top, width, height };\n}\n\nfunction collectSeriesSamples(\n seriesState: readonly ChartSeriesState[],\n bounds: SelectionBounds,\n mode: SelectionMode,\n yAxis: SeriesYAxis,\n maxSamplesPerSeries: number,\n): SelectionSeriesSamples[] {\n const results: SelectionSeriesSamples[] = [];\n const xOnly = mode === \"x-range\";\n const xViewport = { xMin: bounds.xMin, xMax: bounds.xMax, yMin: -Infinity, yMax: Infinity };\n\n for (const state of seriesState) {\n if (!state.visible) continue;\n if (!xOnly && state.yAxis !== yAxis) continue;\n\n const range = state.series.visibleIndexRange(xViewport);\n const samples: SeriesSample[] = [];\n let total = 0;\n for (let index = range.start; index < range.end; index++) {\n const sample = state.series.sampleAt(index);\n if (!sample) continue;\n if (!xOnly && (sample.y < bounds.yMin || sample.y > bounds.yMax)) continue;\n total++;\n if (samples.length < maxSamplesPerSeries) samples.push(sample);\n }\n\n if (total === 0) continue;\n results.push({\n series: state.series,\n seriesIndex: state.index,\n id: state.id,\n name: state.name,\n yAxis: state.yAxis,\n samples,\n total,\n truncated: total > samples.length,\n });\n }\n\n return results;\n}\n\nexport function selectionPlugin(options: SelectionPluginOptions = {}): SelectionPlugin {\n const mode = options.mode ?? \"xy\";\n const yAxis = options.yAxis ?? \"left\";\n const minDragDistancePx = options.minDragDistancePx ?? 4;\n const maxSamplesPerSeries = Math.max(0, Math.floor(options.maxSamplesPerSeries ?? 5_000));\n const samplePhase = options.samplePhase ?? \"commit\";\n let chartRef: Chart | null = null;\n let overlay: HTMLDivElement | null = null;\n let drag: DragState | null = null;\n let committedSelection: SelectionState | null = null;\n\n const notifySeriesSelection = (chart: Chart | null, selection: SelectionState | null): void => {\n if (!chart || !options.onSeriesSelectionChange) return;\n for (const series of chart.getSeriesState()) {\n const samples = selection?.samples.find((entry) => entry.series === series.series) ?? null;\n options.onSeriesSelectionChange(series, samples !== null, samples, selection);\n }\n };\n\n const emit = (type: SelectionEventType, selection: SelectionState | null, sourceEvent?: PointerEvent | KeyboardEvent): void => {\n const event: SelectionEvent = { type, selection, sourceEvent };\n options.onChange?.(event);\n if (type === \"start\") options.onStart?.(event);\n if (type === \"update\") options.onUpdate?.(event);\n if (type === \"commit\") options.onCommit?.(event);\n if (type === \"clear\") options.onClear?.(event);\n };\n\n const setOverlay = (plotBounds: SelectionPlotBounds | null): void => {\n if (!overlay) return;\n if (!plotBounds || plotBounds.width <= 0 || plotBounds.height <= 0) {\n overlay.style.display = \"none\";\n return;\n }\n overlay.style.left = `${plotBounds.left}px`;\n overlay.style.top = `${plotBounds.top}px`;\n overlay.style.width = `${plotBounds.width}px`;\n overlay.style.height = `${plotBounds.height}px`;\n overlay.style.display = \"block\";\n };\n\n const buildSelection = (chart: Chart, state: DragState, includeSamples: boolean): SelectionState | null => {\n const canvas = chart.canvas;\n const rect = canvas.getBoundingClientRect();\n const current = chart.getViewport(yAxis);\n const start = pointerToData(state.startX, state.startY, rect, current);\n const end = pointerToData(state.currentX, state.currentY, rect, current);\n if (!start || !end) return null;\n\n const bounds = normalizeBounds(start, end, current, mode);\n const plotBounds = plotBoundsForDrag(state, rect, mode);\n const samples = includeSamples\n ? collectSeriesSamples(chart.getSeriesState(), bounds, mode, yAxis, maxSamplesPerSeries)\n : [];\n return { mode, yAxis, bounds, plotBounds, samples };\n };\n\n return {\n install(chart: Chart) {\n chartRef = chart;\n const canvas = chart.canvas;\n overlay = document.createElement(\"div\");\n overlay.className = options.className ?? \"blazeplot-selection-brush\";\n overlay.style.position = \"absolute\";\n overlay.style.display = \"none\";\n overlay.style.pointerEvents = \"none\";\n overlay.style.zIndex = String(options.zIndex ?? 26);\n overlay.style.border = `1px solid ${options.stroke ?? DEFAULT_STROKE}`;\n overlay.style.background = options.fill ?? DEFAULT_FILL;\n chart.plotElement.appendChild(overlay);\n\n const onPointerDown = (event: PointerEvent): void => {\n if (drag || event.button !== 0) return;\n event.preventDefault();\n canvas.setPointerCapture(event.pointerId);\n drag = {\n pointerId: event.pointerId,\n startX: event.clientX,\n startY: event.clientY,\n currentX: event.clientX,\n currentY: event.clientY,\n };\n const selection = buildSelection(chart, drag, samplePhase === \"update\");\n setOverlay(selection?.plotBounds ?? null);\n emit(\"start\", selection, event);\n };\n\n const onPointerMove = (event: PointerEvent): void => {\n if (!drag || event.pointerId !== drag.pointerId) return;\n event.preventDefault();\n drag.currentX = event.clientX;\n drag.currentY = event.clientY;\n const selection = buildSelection(chart, drag, samplePhase === \"update\");\n setOverlay(selection?.plotBounds ?? null);\n if (samplePhase === \"update\") notifySeriesSelection(chart, selection);\n emit(\"update\", selection, event);\n };\n\n const finishDrag = (event: PointerEvent, commit: boolean): void => {\n if (!drag || event.pointerId !== drag.pointerId) return;\n event.preventDefault();\n const completed = drag;\n drag = null;\n if (canvas.hasPointerCapture(event.pointerId)) canvas.releasePointerCapture(event.pointerId);\n\n const dx = completed.currentX - completed.startX;\n const dy = completed.currentY - completed.startY;\n if (!commit || Math.hypot(dx, dy) < minDragDistancePx) {\n setOverlay(null);\n return;\n }\n\n const selection = buildSelection(chart, completed, samplePhase !== \"none\");\n if (!selection || selection.bounds.xMax <= selection.bounds.xMin || selection.bounds.yMax <= selection.bounds.yMin) {\n setOverlay(null);\n return;\n }\n\n committedSelection = selection;\n setOverlay(selection.plotBounds);\n notifySeriesSelection(chart, selection);\n chart.emitSelect(selection);\n emit(\"commit\", selection, event);\n };\n\n const onPointerUp = (event: PointerEvent): void => finishDrag(event, true);\n const onPointerCancel = (event: PointerEvent): void => finishDrag(event, false);\n const onKeyDown = (event: KeyboardEvent): void => {\n if (options.clearOnEscape === false || event.key !== \"Escape\") return;\n committedSelection = null;\n setOverlay(null);\n notifySeriesSelection(chart, null);\n chart.emitSelect(null);\n emit(\"clear\", null, event);\n };\n\n canvas.addEventListener(\"pointerdown\", onPointerDown);\n canvas.addEventListener(\"pointermove\", onPointerMove);\n canvas.addEventListener(\"pointerup\", onPointerUp);\n canvas.addEventListener(\"pointercancel\", onPointerCancel);\n globalThis.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n canvas.removeEventListener(\"pointerdown\", onPointerDown);\n canvas.removeEventListener(\"pointermove\", onPointerMove);\n canvas.removeEventListener(\"pointerup\", onPointerUp);\n canvas.removeEventListener(\"pointercancel\", onPointerCancel);\n globalThis.removeEventListener(\"keydown\", onKeyDown);\n overlay?.remove();\n overlay = null;\n chartRef = null;\n drag = null;\n committedSelection = null;\n };\n },\n clear(): void {\n committedSelection = null;\n setOverlay(null);\n chartRef?.emitSelect(null);\n notifySeriesSelection(chartRef, null);\n emit(\"clear\", null);\n },\n getSelection(): SelectionState | null {\n return committedSelection;\n },\n };\n}\n"],"mappings":";AA+EA,IAAM,IAAe,4BACf,IAAiB;AAEvB,SAAS,EAAM,GAAe,GAAa,GAAqB;CAC9D,OAAO,KAAK,IAAI,GAAK,KAAK,IAAI,GAAO,CAAG,CAAC;AAC3C;AAEA,SAAS,EAAgB,GAAqB,GAAqB,GAAmB,GAAsC;CAC1H,IAAM,IAAO,KAAK,IAAI,EAAE,IAAI,EAAE,EAAE,GAC1B,IAAO,KAAK,IAAI,EAAE,IAAI,EAAE,EAAE,GAC1B,IAAO,KAAK,IAAI,EAAE,IAAI,EAAE,EAAE,GAC1B,IAAO,KAAK,IAAI,EAAE,IAAI,EAAE,EAAE;CAChC,OAAO;EACL,MAAM,MAAS,YAAY,EAAQ,OAAO;EAC1C,MAAM,MAAS,YAAY,EAAQ,OAAO;EAC1C,MAAM,MAAS,YAAY,EAAQ,OAAO;EAC1C,MAAM,MAAS,YAAY,EAAQ,OAAO;CAC5C;AACF;AAEA,SAAS,EAAc,GAAiB,GAAiB,GAAe,GAA6C;CACnH,IAAI,EAAK,SAAS,KAAK,EAAK,UAAU,GAAG,OAAO;CAChD,IAAM,IAAQ,EAAM,IAAU,EAAK,MAAM,GAAG,EAAK,KAAK,GAChD,IAAQ,EAAM,IAAU,EAAK,KAAK,GAAG,EAAK,MAAM;CACtD,OAAO,CACL,EAAS,OAAQ,IAAQ,EAAK,SAAU,EAAS,OAAO,EAAS,OACjE,EAAS,OAAQ,IAAQ,EAAK,UAAW,EAAS,OAAO,EAAS,KACpE;AACF;AAEA,SAAS,EAAkB,GAAiB,GAAe,GAA0C;CACnG,IAAM,IAAK,EAAM,EAAK,SAAS,EAAK,MAAM,GAAG,EAAK,KAAK,GACjD,IAAK,EAAM,EAAK,SAAS,EAAK,KAAK,GAAG,EAAK,MAAM,GACjD,IAAK,EAAM,EAAK,WAAW,EAAK,MAAM,GAAG,EAAK,KAAK,GACnD,IAAK,EAAM,EAAK,WAAW,EAAK,KAAK,GAAG,EAAK,MAAM;CAKzD,OAAO;EAAE,MAJI,MAAS,YAAY,IAAI,KAAK,IAAI,GAAI,CAAE;EAItC,KAHH,MAAS,YAAY,IAAI,KAAK,IAAI,GAAI,CAAE;EAGhC,OAFN,MAAS,YAAY,EAAK,QAAQ,KAAK,IAAI,IAAK,CAAE;EAErC,QADZ,MAAS,YAAY,EAAK,SAAS,KAAK,IAAI,IAAK,CAAE;CAChC;AACpC;AAEA,SAAS,EACP,GACA,GACA,GACA,GACA,GAC0B;CAC1B,IAAM,IAAoC,CAAC,GACrC,IAAQ,MAAS,WACjB,IAAY;EAAE,MAAM,EAAO;EAAM,MAAM,EAAO;EAAM,MAAM;EAAW,MAAM;CAAS;CAE1F,KAAK,IAAM,KAAS,GAAa;EAE/B,IADI,CAAC,EAAM,WACP,CAAC,KAAS,EAAM,UAAU,GAAO;EAErC,IAAM,IAAQ,EAAM,OAAO,kBAAkB,CAAS,GAChD,IAA0B,CAAC,GAC7B,IAAQ;EACZ,KAAK,IAAI,IAAQ,EAAM,OAAO,IAAQ,EAAM,KAAK,KAAS;GACxD,IAAM,IAAS,EAAM,OAAO,SAAS,CAAK;GACrC,MACD,CAAC,MAAU,EAAO,IAAI,EAAO,QAAQ,EAAO,IAAI,EAAO,UAC3D,KACI,EAAQ,SAAS,KAAqB,EAAQ,KAAK,CAAM;EAC/D;EAEI,MAAU,KACd,EAAQ,KAAK;GACX,QAAQ,EAAM;GACd,aAAa,EAAM;GACnB,IAAI,EAAM;GACV,MAAM,EAAM;GACZ,OAAO,EAAM;GACb;GACA;GACA,WAAW,IAAQ,EAAQ;EAC7B,CAAC;CACH;CAEA,OAAO;AACT;AAEA,SAAgB,EAAgB,IAAkC,CAAC,GAAoB;CACrF,IAAM,IAAO,EAAQ,QAAQ,MACvB,IAAQ,EAAQ,SAAS,QACzB,IAAoB,EAAQ,qBAAqB,GACjD,IAAsB,KAAK,IAAI,GAAG,KAAK,MAAM,EAAQ,uBAAuB,GAAK,CAAC,GAClF,IAAc,EAAQ,eAAe,UACvC,IAAyB,MACzB,IAAiC,MACjC,IAAyB,MACzB,IAA4C,MAE1C,KAAyB,GAAqB,MAA2C;EACzF,OAAC,KAAS,CAAC,EAAQ,0BACvB,KAAK,IAAM,KAAU,EAAM,eAAe,GAAG;GAC3C,IAAM,IAAU,GAAW,QAAQ,MAAM,MAAU,EAAM,WAAW,EAAO,MAAM,KAAK;GACtF,EAAQ,wBAAwB,GAAQ,MAAY,MAAM,GAAS,CAAS;EAC9E;CACF,GAEM,KAAQ,GAA0B,GAAkC,MAAqD;EAC7H,IAAM,IAAwB;GAAE;GAAM;GAAW;EAAY;EAK7D,AAJA,EAAQ,WAAW,CAAK,GACpB,MAAS,WAAS,EAAQ,UAAU,CAAK,GACzC,MAAS,YAAU,EAAQ,WAAW,CAAK,GAC3C,MAAS,YAAU,EAAQ,WAAW,CAAK,GAC3C,MAAS,WAAS,EAAQ,UAAU,CAAK;CAC/C,GAEM,KAAc,MAAiD;EAC9D,OACL;OAAI,CAAC,KAAc,EAAW,SAAS,KAAK,EAAW,UAAU,GAAG;IAClE,EAAQ,MAAM,UAAU;IACxB;GACF;GAKA,AAJA,EAAQ,MAAM,OAAO,GAAG,EAAW,KAAK,KACxC,EAAQ,MAAM,MAAM,GAAG,EAAW,IAAI,KACtC,EAAQ,MAAM,QAAQ,GAAG,EAAW,MAAM,KAC1C,EAAQ,MAAM,SAAS,GAAG,EAAW,OAAO,KAC5C,EAAQ,MAAM,UAAU;EALxB;CAMF,GAEM,KAAkB,GAAc,GAAkB,MAAmD;EAEzG,IAAM,IADS,EAAM,OACD,sBAAsB,GACpC,IAAU,EAAM,YAAY,CAAK,GACjC,IAAQ,EAAc,EAAM,QAAQ,EAAM,QAAQ,GAAM,CAAO,GAC/D,IAAM,EAAc,EAAM,UAAU,EAAM,UAAU,GAAM,CAAO;EACvE,IAAI,CAAC,KAAS,CAAC,GAAK,OAAO;EAE3B,IAAM,IAAS,EAAgB,GAAO,GAAK,GAAS,CAAI;EAKxD,OAAO;GAAE;GAAM;GAAO;GAAQ,YAJX,EAAkB,GAAO,GAAM,CAIpB;GAAY,SAH1B,IACZ,EAAqB,EAAM,eAAe,GAAG,GAAQ,GAAM,GAAO,CAAmB,IACrF,CAAC;EAC6C;CACpD;CAEA,OAAO;EACL,QAAQ,GAAc;GACpB,IAAW;GACX,IAAM,IAAS,EAAM;GASrB,AARA,IAAU,SAAS,cAAc,KAAK,GACtC,EAAQ,YAAY,EAAQ,aAAa,6BACzC,EAAQ,MAAM,WAAW,YACzB,EAAQ,MAAM,UAAU,QACxB,EAAQ,MAAM,gBAAgB,QAC9B,EAAQ,MAAM,SAAS,OAAO,EAAQ,UAAU,EAAE,GAClD,EAAQ,MAAM,SAAS,aAAa,EAAQ,UAAU,KACtD,EAAQ,MAAM,aAAa,EAAQ,QAAQ,GAC3C,EAAM,YAAY,YAAY,CAAO;GAErC,IAAM,KAAiB,MAA8B;IACnD,IAAI,KAAQ,EAAM,WAAW,GAAG;IAGhC,AAFA,EAAM,eAAe,GACrB,EAAO,kBAAkB,EAAM,SAAS,GACxC,IAAO;KACL,WAAW,EAAM;KACjB,QAAQ,EAAM;KACd,QAAQ,EAAM;KACd,UAAU,EAAM;KAChB,UAAU,EAAM;IAClB;IACA,IAAM,IAAY,EAAe,GAAO,GAAM,MAAgB,QAAQ;IAEtE,AADA,EAAW,GAAW,cAAc,IAAI,GACxC,EAAK,SAAS,GAAW,CAAK;GAChC,GAEM,KAAiB,MAA8B;IACnD,IAAI,CAAC,KAAQ,EAAM,cAAc,EAAK,WAAW;IAGjD,AAFA,EAAM,eAAe,GACrB,EAAK,WAAW,EAAM,SACtB,EAAK,WAAW,EAAM;IACtB,IAAM,IAAY,EAAe,GAAO,GAAM,MAAgB,QAAQ;IAGtE,AAFA,EAAW,GAAW,cAAc,IAAI,GACpC,MAAgB,YAAU,EAAsB,GAAO,CAAS,GACpE,EAAK,UAAU,GAAW,CAAK;GACjC,GAEM,KAAc,GAAqB,MAA0B;IACjE,IAAI,CAAC,KAAQ,EAAM,cAAc,EAAK,WAAW;IACjD,EAAM,eAAe;IACrB,IAAM,IAAY;IAElB,AADA,IAAO,MACH,EAAO,kBAAkB,EAAM,SAAS,KAAG,EAAO,sBAAsB,EAAM,SAAS;IAE3F,IAAM,IAAK,EAAU,WAAW,EAAU,QACpC,IAAK,EAAU,WAAW,EAAU;IAC1C,IAAI,CAAC,KAAU,KAAK,MAAM,GAAI,CAAE,IAAI,GAAmB;KACrD,EAAW,IAAI;KACf;IACF;IAEA,IAAM,IAAY,EAAe,GAAO,GAAW,MAAgB,MAAM;IACzE,IAAI,CAAC,KAAa,EAAU,OAAO,QAAQ,EAAU,OAAO,QAAQ,EAAU,OAAO,QAAQ,EAAU,OAAO,MAAM;KAClH,EAAW,IAAI;KACf;IACF;IAMA,AAJA,IAAqB,GACrB,EAAW,EAAU,UAAU,GAC/B,EAAsB,GAAO,CAAS,GACtC,EAAM,WAAW,CAAS,GAC1B,EAAK,UAAU,GAAW,CAAK;GACjC,GAEM,KAAe,MAA8B,EAAW,GAAO,EAAI,GACnE,KAAmB,MAA8B,EAAW,GAAO,EAAK,GACxE,KAAa,MAA+B;IAC5C,EAAQ,kBAAkB,MAAS,EAAM,QAAQ,aACrD,IAAqB,MACrB,EAAW,IAAI,GACf,EAAsB,GAAO,IAAI,GACjC,EAAM,WAAW,IAAI,GACrB,EAAK,SAAS,MAAM,CAAK;GAC3B;GAQA,OANA,EAAO,iBAAiB,eAAe,CAAa,GACpD,EAAO,iBAAiB,eAAe,CAAa,GACpD,EAAO,iBAAiB,aAAa,CAAW,GAChD,EAAO,iBAAiB,iBAAiB,CAAe,GACxD,WAAW,iBAAiB,WAAW,CAAS,SAEnC;IAUX,AATA,EAAO,oBAAoB,eAAe,CAAa,GACvD,EAAO,oBAAoB,eAAe,CAAa,GACvD,EAAO,oBAAoB,aAAa,CAAW,GACnD,EAAO,oBAAoB,iBAAiB,CAAe,GAC3D,WAAW,oBAAoB,WAAW,CAAS,GACnD,GAAS,OAAO,GAChB,IAAU,MACV,IAAW,MACX,IAAO,MACP,IAAqB;GACvB;EACF;EACA,QAAc;GAKZ,AAJA,IAAqB,MACrB,EAAW,IAAI,GACf,GAAU,WAAW,IAAI,GACzB,EAAsB,GAAU,IAAI,GACpC,EAAK,SAAS,IAAI;EACpB;EACA,eAAsC;GACpC,OAAO;EACT;CACF;AACF"}
|
package/dist/plugins/tooltip.js
CHANGED
|
@@ -1,61 +1,45 @@
|
|
|
1
|
+
import { a as e, i as t, r as n, t as r } from "../OverlayUtils-Cw1o8UH-.js";
|
|
1
2
|
//#region src/ui/Tooltip.ts
|
|
2
|
-
function
|
|
3
|
-
|
|
3
|
+
function i(e, n, i) {
|
|
4
|
+
t(n, e.items, e, i, (e) => `(${r(e.x)}, ${r(e.y)})`);
|
|
4
5
|
}
|
|
5
|
-
function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
function a(e, t, r) {
|
|
7
|
+
n(e, t.clientX, t.clientY, {
|
|
8
|
+
offsetX: r.offsetX ?? 12,
|
|
9
|
+
offsetY: r.offsetY ?? 12
|
|
10
|
+
});
|
|
9
11
|
}
|
|
10
|
-
function
|
|
11
|
-
return
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
let o = Math.max(1, ...r.items.map((t) => e(t).length)), s = "";
|
|
15
|
-
for (let i of r.items) {
|
|
16
|
-
let c = a ? a(i, r) : `(${t(i.x)}, ${t(i.y)})`, l = n(i.series.style.color);
|
|
17
|
-
s && (s += "<br>"), s += `<span style="color:${l}">\u2588</span> ${e(i).padEnd(o)} ${c}`;
|
|
18
|
-
}
|
|
19
|
-
i.innerHTML = s;
|
|
20
|
-
}
|
|
21
|
-
function i(e, t, n) {
|
|
22
|
-
return Math.min(n, Math.max(t, e));
|
|
23
|
-
}
|
|
24
|
-
function a(e, t, n) {
|
|
25
|
-
let r = n.offsetX ?? 12, a = n.offsetY ?? 12, o = e.getBoundingClientRect(), s = e.ownerDocument, c = Math.max(1, globalThis.innerWidth || s.documentElement.clientWidth), l = Math.max(1, globalThis.innerHeight || s.documentElement.clientHeight), u = i(t.clientX + r, 4, Math.max(4, c - o.width - 4)), d = i(t.clientY + a, 4, Math.max(4, l - o.height - 4));
|
|
26
|
-
e.style.transform = `translate(${u}px, ${d}px)`;
|
|
27
|
-
}
|
|
28
|
-
function o(e = {}) {
|
|
29
|
-
return { install(t) {
|
|
30
|
-
let i = document.createElement("div");
|
|
31
|
-
i.className = e.className ?? "blazeplot-tooltip", i.style.position = "fixed", i.style.left = "0", i.style.top = "0", i.style.zIndex = String(e.zIndex ?? 1e4), i.style.display = "none", i.style.pointerEvents = "none", i.style.background = e.backgroundColor ?? t.theme.tooltipBackgroundColor, i.style.color = e.textColor ?? t.theme.tooltipTextColor, i.style.font = e.font ?? t.theme.tooltipFont, i.style.padding = "8px 10px", i.style.whiteSpace = "pre", (t.rootElement.ownerDocument.body ?? t.rootElement).appendChild(i);
|
|
12
|
+
function o(t = {}) {
|
|
13
|
+
return { install(n) {
|
|
14
|
+
let r = document.createElement("div");
|
|
15
|
+
r.className = t.className ?? "blazeplot-tooltip", r.style.position = "fixed", r.style.left = "0", r.style.top = "0", r.style.zIndex = String(t.zIndex ?? 1e4), r.style.display = "none", r.style.pointerEvents = "none", r.style.background = t.backgroundColor ?? n.theme.tooltipBackgroundColor, r.style.color = t.textColor ?? n.theme.tooltipTextColor, r.style.font = t.font ?? n.theme.tooltipFont, r.style.padding = "8px 10px", r.style.whiteSpace = "pre", (n.rootElement.ownerDocument.body ?? n.rootElement).appendChild(r);
|
|
32
16
|
let o = document.createElement("div");
|
|
33
|
-
o.className = "blazeplot-tooltip-markers", o.style.position = "absolute", o.style.inset = "0", o.style.zIndex = "25", o.style.pointerEvents = "none",
|
|
17
|
+
o.className = "blazeplot-tooltip-markers", o.style.position = "absolute", o.style.inset = "0", o.style.zIndex = "25", o.style.pointerEvents = "none", n.plotElement.appendChild(o);
|
|
34
18
|
let s = 0, c = () => {
|
|
35
|
-
if (
|
|
36
|
-
let
|
|
37
|
-
|
|
19
|
+
if (t.lockWidth === !1) return;
|
|
20
|
+
let e = Math.ceil(r.getBoundingClientRect().width);
|
|
21
|
+
e <= s || (s = e, r.style.minWidth = `${s}px`);
|
|
38
22
|
}, l = () => {
|
|
39
|
-
s = 0,
|
|
23
|
+
s = 0, r.style.minWidth = "";
|
|
40
24
|
}, u = () => {
|
|
41
|
-
|
|
42
|
-
}, d = (
|
|
43
|
-
if (o.replaceChildren(), !(
|
|
44
|
-
let
|
|
45
|
-
|
|
25
|
+
r.style.background = t.backgroundColor ?? n.theme.tooltipBackgroundColor, r.style.color = t.textColor ?? n.theme.tooltipTextColor, r.style.font = t.font ?? n.theme.tooltipFont;
|
|
26
|
+
}, d = (n) => {
|
|
27
|
+
if (o.replaceChildren(), !(t.highlight === !1 || !n)) for (let t of n.items) {
|
|
28
|
+
let n = document.createElement("div");
|
|
29
|
+
n.style.position = "absolute", n.style.left = `${t.plotX}px`, n.style.top = `${t.plotY}px`, n.style.width = "10px", n.style.height = "10px", n.style.border = "2px solid #f8fafc", n.style.borderRadius = "999px", n.style.background = e(t.series.style.color), n.style.boxShadow = "0 0 0 1px rgba(4, 8, 16, 0.85)", n.style.transform = "translate(-50%, -50%)", o.appendChild(n);
|
|
46
30
|
}
|
|
47
|
-
}, f = (
|
|
48
|
-
let o =
|
|
31
|
+
}, f = (e) => {
|
|
32
|
+
let o = e !== null && (t.mode !== void 0 && t.mode !== e.mode || t.group !== void 0 && t.group !== e.group || t.maxDistancePx !== void 0 && t.maxDistancePx !== e.maxDistancePx) ? n.pick(e.clientX, e.clientY, t) : e;
|
|
49
33
|
if (d(o), !o || o.items.length === 0) {
|
|
50
|
-
|
|
34
|
+
r.style.display = "none", l();
|
|
51
35
|
return;
|
|
52
36
|
}
|
|
53
|
-
|
|
54
|
-
}, p =
|
|
55
|
-
u(), f(
|
|
37
|
+
t.render ? t.render(o, r, n) : i(o, r, t.formatter), r.style.display = "block", c(), a(r, o, t);
|
|
38
|
+
}, p = n.subscribe("hover", f), m = n.subscribe("themechange", () => {
|
|
39
|
+
u(), f(n.getHoverState());
|
|
56
40
|
});
|
|
57
41
|
return u(), () => {
|
|
58
|
-
p(), m(), o.remove(),
|
|
42
|
+
p(), m(), o.remove(), r.remove();
|
|
59
43
|
};
|
|
60
44
|
} };
|
|
61
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","names":[],"sources":["../../src/ui/Tooltip.ts"],"sourcesContent":["import type { Chart, ChartHoverState, ChartPickGroup, ChartPickItem, ChartPickMode, ChartPlugin } from \"./Chart.js\";\n\nexport interface TooltipPluginOptions {\n readonly className?: string;\n readonly mode?: ChartPickMode;\n readonly group?: ChartPickGroup;\n readonly maxDistancePx?: number;\n readonly offsetX?: number;\n readonly offsetY?: number;\n readonly highlight?: boolean;\n readonly backgroundColor?: string;\n readonly textColor?: string;\n readonly font?: string;\n readonly zIndex?: number;\n readonly lockWidth?: boolean;\n readonly formatter?: (item: ChartPickItem, state: ChartHoverState) => string;\n readonly render?: (state: ChartHoverState, container: HTMLElement, chart: Chart) => void;\n}\n\nfunction labelOf(item: ChartPickItem): string {\n return item.name ?? item.id ?? `${item.mode} ${item.seriesIndex + 1}`;\n}\n\nfunction formatNumber(value: number): string {\n if (!Number.isFinite(value)) return String(value);\n const abs = Math.abs(value);\n if (abs > 0 && (abs < 1e-3 || abs >= 1e6)) return value.toExponential(3);\n return Number(value.toPrecision(6)).toString();\n}\n\nfunction rgba(color: readonly [number, number, number, number]): string {\n return `rgba(${Math.round(color[0] * 255)}, ${Math.round(color[1] * 255)}, ${Math.round(color[2] * 255)}, ${color[3]})`;\n}\n\nfunction renderDefaultTooltip(\n state: ChartHoverState,\n container: HTMLElement,\n formatter: TooltipPluginOptions[\"formatter\"],\n): void {\n const pad = Math.max(1, ...state.items.map((item) => labelOf(item).length));\n let html = \"\";\n for (const item of state.items) {\n const value = formatter ? formatter(item, state) : `(${formatNumber(item.x)}, ${formatNumber(item.y)})`;\n const color = rgba(item.series.style.color);\n if (html) html += \"<br>\";\n html += `<span style=\"color:${color}\">\\u2588</span> ${labelOf(item).padEnd(pad)} ${value}`;\n }\n container.innerHTML = html;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\nfunction placeTooltip(\n container: HTMLElement,\n state: ChartHoverState,\n options: TooltipPluginOptions,\n): void {\n const offsetX = options.offsetX ?? 12;\n const offsetY = options.offsetY ?? 12;\n const tooltipRect = container.getBoundingClientRect();\n const margin = 4;\n const doc = container.ownerDocument;\n const viewportWidth = Math.max(1, globalThis.innerWidth || doc.documentElement.clientWidth);\n const viewportHeight = Math.max(1, globalThis.innerHeight || doc.documentElement.clientHeight);\n\n const viewportX = clamp(\n state.clientX + offsetX,\n margin,\n Math.max(margin, viewportWidth - tooltipRect.width - margin),\n );\n const viewportY = clamp(\n state.clientY + offsetY,\n margin,\n Math.max(margin, viewportHeight - tooltipRect.height - margin),\n );\n container.style.transform = `translate(${viewportX}px, ${viewportY}px)`;\n}\n\nexport function tooltipPlugin(options: TooltipPluginOptions = {}): ChartPlugin {\n return {\n install(chart: Chart) {\n const container = document.createElement(\"div\");\n container.className = options.className ?? \"blazeplot-tooltip\";\n container.style.position = \"fixed\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.zIndex = String(options.zIndex ?? 10_000);\n container.style.display = \"none\";\n container.style.pointerEvents = \"none\";\n container.style.background = options.backgroundColor ?? chart.theme.tooltipBackgroundColor;\n container.style.color = options.textColor ?? chart.theme.tooltipTextColor;\n container.style.font = options.font ?? chart.theme.tooltipFont;\n container.style.padding = \"8px 10px\";\n container.style.whiteSpace = \"pre\";\n const tooltipParent = chart.rootElement.ownerDocument.body ?? chart.rootElement;\n tooltipParent.appendChild(container);\n\n const markerLayer = document.createElement(\"div\");\n markerLayer.className = \"blazeplot-tooltip-markers\";\n markerLayer.style.position = \"absolute\";\n markerLayer.style.inset = \"0\";\n markerLayer.style.zIndex = \"25\";\n markerLayer.style.pointerEvents = \"none\";\n chart.plotElement.appendChild(markerLayer);\n\n let lockedTooltipWidth = 0;\n\n const lockTooltipWidth = (): void => {\n if (options.lockWidth === false) return;\n const width = Math.ceil(container.getBoundingClientRect().width);\n if (width <= lockedTooltipWidth) return;\n lockedTooltipWidth = width;\n container.style.minWidth = `${lockedTooltipWidth}px`;\n };\n\n const resetTooltipWidth = (): void => {\n lockedTooltipWidth = 0;\n container.style.minWidth = \"\";\n };\n\n const applyTheme = (): void => {\n container.style.background = options.backgroundColor ?? chart.theme.tooltipBackgroundColor;\n container.style.color = options.textColor ?? chart.theme.tooltipTextColor;\n container.style.font = options.font ?? chart.theme.tooltipFont;\n };\n\n const renderMarkers = (state: ChartHoverState | null): void => {\n markerLayer.replaceChildren();\n if (options.highlight === false || !state) return;\n\n for (const item of state.items) {\n const marker = document.createElement(\"div\");\n marker.style.position = \"absolute\";\n marker.style.left = `${item.plotX}px`;\n marker.style.top = `${item.plotY}px`;\n marker.style.width = \"10px\";\n marker.style.height = \"10px\";\n marker.style.border = \"2px solid #f8fafc\";\n marker.style.borderRadius = \"999px\";\n marker.style.background = rgba(item.series.style.color);\n marker.style.boxShadow = \"0 0 0 1px rgba(4, 8, 16, 0.85)\";\n marker.style.transform = \"translate(-50%, -50%)\";\n markerLayer.appendChild(marker);\n }\n };\n\n const render = (state: ChartHoverState | null): void => {\n const shouldRepick = state !== null && (\n (options.mode !== undefined && options.mode !== state.mode) ||\n (options.group !== undefined && options.group !== state.group) ||\n (options.maxDistancePx !== undefined && options.maxDistancePx !== state.maxDistancePx)\n );\n const effectiveState = shouldRepick ? chart.pick(state.clientX, state.clientY, options) : state;\n\n renderMarkers(effectiveState);\n if (!effectiveState || effectiveState.items.length === 0) {\n container.style.display = \"none\";\n resetTooltipWidth();\n return;\n }\n\n if (options.render) {\n options.render(effectiveState, container, chart);\n } else {\n renderDefaultTooltip(effectiveState, container, options.formatter);\n }\n\n container.style.display = \"block\";\n lockTooltipWidth();\n placeTooltip(container, effectiveState, options);\n };\n\n const unsubscribeHover = chart.subscribe(\"hover\", render);\n const unsubscribeTheme = chart.subscribe(\"themechange\", () => {\n applyTheme();\n render(chart.getHoverState());\n });\n applyTheme();\n return () => {\n unsubscribeHover();\n unsubscribeTheme();\n markerLayer.remove();\n container.remove();\n };\n },\n };\n}\n"],"mappings":";AAmBA,SAAS,EAAQ,GAA6B;CAC5C,OAAO,EAAK,QAAQ,EAAK,MAAM,GAAG,EAAK,KAAK,GAAG,EAAK,cAAc;AACpE;AAEA,SAAS,EAAa,GAAuB;CAC3C,IAAI,CAAC,OAAO,SAAS,CAAK,GAAG,OAAO,OAAO,CAAK;CAChD,IAAM,IAAM,KAAK,IAAI,CAAK;CAE1B,OADI,IAAM,MAAM,IAAM,QAAQ,KAAO,OAAa,EAAM,cAAc,CAAC,IAChE,OAAO,EAAM,YAAY,CAAC,CAAC,EAAE,SAAS;AAC/C;AAEA,SAAS,EAAK,GAA0D;CACtE,OAAO,QAAQ,KAAK,MAAM,EAAM,KAAK,GAAG,EAAE,IAAI,KAAK,MAAM,EAAM,KAAK,GAAG,EAAE,IAAI,KAAK,MAAM,EAAM,KAAK,GAAG,EAAE,IAAI,EAAM,GAAG;AACvH;AAEA,SAAS,EACP,GACA,GACA,GACM;CACN,IAAM,IAAM,KAAK,IAAI,GAAG,GAAG,EAAM,MAAM,KAAK,MAAS,EAAQ,CAAI,EAAE,MAAM,CAAC,GACtE,IAAO;CACX,KAAK,IAAM,KAAQ,EAAM,OAAO;EAC9B,IAAM,IAAQ,IAAY,EAAU,GAAM,CAAK,IAAI,IAAI,EAAa,EAAK,CAAC,EAAE,IAAI,EAAa,EAAK,CAAC,EAAE,IAC/F,IAAQ,EAAK,EAAK,OAAO,MAAM,KAAK;EAE1C,AADI,MAAM,KAAQ,SAClB,KAAQ,sBAAsB,EAAM,kBAAkB,EAAQ,CAAI,EAAE,OAAO,CAAG,EAAE,IAAI;CACtF;CACA,EAAU,YAAY;AACxB;AAEA,SAAS,EAAM,GAAe,GAAa,GAAqB;CAC9D,OAAO,KAAK,IAAI,GAAK,KAAK,IAAI,GAAK,CAAK,CAAC;AAC3C;AAEA,SAAS,EACP,GACA,GACA,GACM;CACN,IAAM,IAAU,EAAQ,WAAW,IAC7B,IAAU,EAAQ,WAAW,IAC7B,IAAc,EAAU,sBAAsB,GAE9C,IAAM,EAAU,eAChB,IAAgB,KAAK,IAAI,GAAG,WAAW,cAAc,EAAI,gBAAgB,WAAW,GACpF,IAAiB,KAAK,IAAI,GAAG,WAAW,eAAe,EAAI,gBAAgB,YAAY,GAEvF,IAAY,EAChB,EAAM,UAAU,GAChB,GACA,KAAK,IAAI,GAAQ,IAAgB,EAAY,QAAQ,CAAM,CAC7D,GACM,IAAY,EAChB,EAAM,UAAU,GAChB,GACA,KAAK,IAAI,GAAQ,IAAiB,EAAY,SAAS,CAAM,CAC/D;CACA,EAAU,MAAM,YAAY,aAAa,EAAU,MAAM,EAAU;AACrE;AAEA,SAAgB,EAAc,IAAgC,CAAC,GAAgB;CAC7E,OAAO,EACL,QAAQ,GAAc;EACpB,IAAM,IAAY,SAAS,cAAc,KAAK;EAc9C,AAbA,EAAU,YAAY,EAAQ,aAAa,qBAC3C,EAAU,MAAM,WAAW,SAC3B,EAAU,MAAM,OAAO,KACvB,EAAU,MAAM,MAAM,KACtB,EAAU,MAAM,SAAS,OAAO,EAAQ,UAAU,GAAM,GACxD,EAAU,MAAM,UAAU,QAC1B,EAAU,MAAM,gBAAgB,QAChC,EAAU,MAAM,aAAa,EAAQ,mBAAmB,EAAM,MAAM,wBACpE,EAAU,MAAM,QAAQ,EAAQ,aAAa,EAAM,MAAM,kBACzD,EAAU,MAAM,OAAO,EAAQ,QAAQ,EAAM,MAAM,aACnD,EAAU,MAAM,UAAU,YAC1B,EAAU,MAAM,aAAa,QACP,EAAM,YAAY,cAAc,QAAQ,EAAM,aACtD,YAAY,CAAS;EAEnC,IAAM,IAAc,SAAS,cAAc,KAAK;EAMhD,AALA,EAAY,YAAY,6BACxB,EAAY,MAAM,WAAW,YAC7B,EAAY,MAAM,QAAQ,KAC1B,EAAY,MAAM,SAAS,MAC3B,EAAY,MAAM,gBAAgB,QAClC,EAAM,YAAY,YAAY,CAAW;EAEzC,IAAI,IAAqB,GAEnB,UAA+B;GACnC,IAAI,EAAQ,cAAc,IAAO;GACjC,IAAM,IAAQ,KAAK,KAAK,EAAU,sBAAsB,EAAE,KAAK;GAC3D,KAAS,MACb,IAAqB,GACrB,EAAU,MAAM,WAAW,GAAG,EAAmB;EACnD,GAEM,UAAgC;GAEpC,AADA,IAAqB,GACrB,EAAU,MAAM,WAAW;EAC7B,GAEM,UAAyB;GAG7B,AAFA,EAAU,MAAM,aAAa,EAAQ,mBAAmB,EAAM,MAAM,wBACpE,EAAU,MAAM,QAAQ,EAAQ,aAAa,EAAM,MAAM,kBACzD,EAAU,MAAM,OAAO,EAAQ,QAAQ,EAAM,MAAM;EACrD,GAEM,KAAiB,MAAwC;GAC7D,MAAY,gBAAgB,GACxB,IAAQ,cAAc,MAAS,CAAC,IAEpC,KAAK,IAAM,KAAQ,EAAM,OAAO;IAC9B,IAAM,IAAS,SAAS,cAAc,KAAK;IAW3C,AAVA,EAAO,MAAM,WAAW,YACxB,EAAO,MAAM,OAAO,GAAG,EAAK,MAAM,KAClC,EAAO,MAAM,MAAM,GAAG,EAAK,MAAM,KACjC,EAAO,MAAM,QAAQ,QACrB,EAAO,MAAM,SAAS,QACtB,EAAO,MAAM,SAAS,qBACtB,EAAO,MAAM,eAAe,SAC5B,EAAO,MAAM,aAAa,EAAK,EAAK,OAAO,MAAM,KAAK,GACtD,EAAO,MAAM,YAAY,kCACzB,EAAO,MAAM,YAAY,yBACzB,EAAY,YAAY,CAAM;GAChC;EACF,GAEM,KAAU,MAAwC;GAMtD,IAAM,IALe,MAAU,SAC5B,EAAQ,SAAS,KAAA,KAAa,EAAQ,SAAS,EAAM,QACrD,EAAQ,UAAU,KAAA,KAAa,EAAQ,UAAU,EAAM,SACvD,EAAQ,kBAAkB,KAAA,KAAa,EAAQ,kBAAkB,EAAM,iBAEpC,EAAM,KAAK,EAAM,SAAS,EAAM,SAAS,CAAO,IAAI;GAG1F,IADA,EAAc,CAAc,GACxB,CAAC,KAAkB,EAAe,MAAM,WAAW,GAAG;IAExD,AADA,EAAU,MAAM,UAAU,QAC1B,EAAkB;IAClB;GACF;GAUA,AARI,EAAQ,SACV,EAAQ,OAAO,GAAgB,GAAW,CAAK,IAE/C,EAAqB,GAAgB,GAAW,EAAQ,SAAS,GAGnE,EAAU,MAAM,UAAU,SAC1B,EAAiB,GACjB,EAAa,GAAW,GAAgB,CAAO;EACjD,GAEM,IAAmB,EAAM,UAAU,SAAS,CAAM,GAClD,IAAmB,EAAM,UAAU,qBAAqB;GAE5D,AADA,EAAW,GACX,EAAO,EAAM,cAAc,CAAC;EAC9B,CAAC;EAED,OADA,EAAW,SACE;GAIX,AAHA,EAAiB,GACjB,EAAiB,GACjB,EAAY,OAAO,GACnB,EAAU,OAAO;EACnB;CACF,EACF;AACF"}
|
|
1
|
+
{"version":3,"file":"tooltip.js","names":[],"sources":["../../src/ui/Tooltip.ts"],"sourcesContent":["import type { Chart, ChartHoverState, ChartPickGroup, ChartPickItem, ChartPickMode, ChartPlugin } from \"./Chart.js\";\nimport { formatCompactNumber, placeFixedWithinViewport, renderPickItems, rgba } from \"./OverlayUtils.js\";\n\nexport interface TooltipPluginOptions {\n readonly className?: string;\n readonly mode?: ChartPickMode;\n readonly group?: ChartPickGroup;\n readonly maxDistancePx?: number;\n readonly offsetX?: number;\n readonly offsetY?: number;\n readonly highlight?: boolean;\n readonly backgroundColor?: string;\n readonly textColor?: string;\n readonly font?: string;\n readonly zIndex?: number;\n readonly lockWidth?: boolean;\n readonly formatter?: (item: ChartPickItem, state: ChartHoverState) => string;\n readonly render?: (state: ChartHoverState, container: HTMLElement, chart: Chart) => void;\n}\n\nfunction renderDefaultTooltip(state: ChartHoverState, container: HTMLElement, formatter: TooltipPluginOptions[\"formatter\"]): void {\n renderPickItems(\n container,\n state.items,\n state,\n formatter,\n (item) => `(${formatCompactNumber(item.x)}, ${formatCompactNumber(item.y)})`,\n );\n}\n\nfunction placeTooltip(container: HTMLElement, state: ChartHoverState, options: TooltipPluginOptions): void {\n placeFixedWithinViewport(container, state.clientX, state.clientY, {\n offsetX: options.offsetX ?? 12,\n offsetY: options.offsetY ?? 12,\n });\n}\n\nexport function tooltipPlugin(options: TooltipPluginOptions = {}): ChartPlugin {\n return {\n install(chart: Chart) {\n const container = document.createElement(\"div\");\n container.className = options.className ?? \"blazeplot-tooltip\";\n container.style.position = \"fixed\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.zIndex = String(options.zIndex ?? 10_000);\n container.style.display = \"none\";\n container.style.pointerEvents = \"none\";\n container.style.background = options.backgroundColor ?? chart.theme.tooltipBackgroundColor;\n container.style.color = options.textColor ?? chart.theme.tooltipTextColor;\n container.style.font = options.font ?? chart.theme.tooltipFont;\n container.style.padding = \"8px 10px\";\n container.style.whiteSpace = \"pre\";\n const tooltipParent = chart.rootElement.ownerDocument.body ?? chart.rootElement;\n tooltipParent.appendChild(container);\n\n const markerLayer = document.createElement(\"div\");\n markerLayer.className = \"blazeplot-tooltip-markers\";\n markerLayer.style.position = \"absolute\";\n markerLayer.style.inset = \"0\";\n markerLayer.style.zIndex = \"25\";\n markerLayer.style.pointerEvents = \"none\";\n chart.plotElement.appendChild(markerLayer);\n\n let lockedTooltipWidth = 0;\n\n const lockTooltipWidth = (): void => {\n if (options.lockWidth === false) return;\n const width = Math.ceil(container.getBoundingClientRect().width);\n if (width <= lockedTooltipWidth) return;\n lockedTooltipWidth = width;\n container.style.minWidth = `${lockedTooltipWidth}px`;\n };\n\n const resetTooltipWidth = (): void => {\n lockedTooltipWidth = 0;\n container.style.minWidth = \"\";\n };\n\n const applyTheme = (): void => {\n container.style.background = options.backgroundColor ?? chart.theme.tooltipBackgroundColor;\n container.style.color = options.textColor ?? chart.theme.tooltipTextColor;\n container.style.font = options.font ?? chart.theme.tooltipFont;\n };\n\n const renderMarkers = (state: ChartHoverState | null): void => {\n markerLayer.replaceChildren();\n if (options.highlight === false || !state) return;\n\n for (const item of state.items) {\n const marker = document.createElement(\"div\");\n marker.style.position = \"absolute\";\n marker.style.left = `${item.plotX}px`;\n marker.style.top = `${item.plotY}px`;\n marker.style.width = \"10px\";\n marker.style.height = \"10px\";\n marker.style.border = \"2px solid #f8fafc\";\n marker.style.borderRadius = \"999px\";\n marker.style.background = rgba(item.series.style.color);\n marker.style.boxShadow = \"0 0 0 1px rgba(4, 8, 16, 0.85)\";\n marker.style.transform = \"translate(-50%, -50%)\";\n markerLayer.appendChild(marker);\n }\n };\n\n const render = (state: ChartHoverState | null): void => {\n const shouldRepick = state !== null && (\n (options.mode !== undefined && options.mode !== state.mode) ||\n (options.group !== undefined && options.group !== state.group) ||\n (options.maxDistancePx !== undefined && options.maxDistancePx !== state.maxDistancePx)\n );\n const effectiveState = shouldRepick ? chart.pick(state.clientX, state.clientY, options) : state;\n\n renderMarkers(effectiveState);\n if (!effectiveState || effectiveState.items.length === 0) {\n container.style.display = \"none\";\n resetTooltipWidth();\n return;\n }\n\n if (options.render) {\n options.render(effectiveState, container, chart);\n } else {\n renderDefaultTooltip(effectiveState, container, options.formatter);\n }\n\n container.style.display = \"block\";\n lockTooltipWidth();\n placeTooltip(container, effectiveState, options);\n };\n\n const unsubscribeHover = chart.subscribe(\"hover\", render);\n const unsubscribeTheme = chart.subscribe(\"themechange\", () => {\n applyTheme();\n render(chart.getHoverState());\n });\n applyTheme();\n return () => {\n unsubscribeHover();\n unsubscribeTheme();\n markerLayer.remove();\n container.remove();\n };\n },\n };\n}\n"],"mappings":"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"}
|
package/dist/react.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Chart, ChartOptions } from './ui/Chart.js';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
export interface BlazeChartProps {
|
|
4
|
+
readonly options?: ChartOptions;
|
|
5
|
+
readonly className?: string;
|
|
6
|
+
readonly style?: React.CSSProperties;
|
|
7
|
+
readonly chartRef?: React.Ref<Chart | null>;
|
|
8
|
+
readonly onChart?: (chart: Chart) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const BlazeChart: (props: BlazeChartProps & {
|
|
11
|
+
ref?: React.Ref<Chart | null> | undefined;
|
|
12
|
+
}) => React.ReactElement | null;
|
|
13
|
+
export default BlazeChart;
|
|
14
|
+
//# sourceMappingURL=react.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC3C;AAWD,eAAO,MAAM,UAAU;;+BA+BrB,CAAC;AAEH,eAAe,UAAU,CAAC"}
|
package/dist/react.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { t as e } from "./Chart-BW9JaHs6.js";
|
|
2
|
+
import * as t from "react";
|
|
3
|
+
//#region src/react.ts
|
|
4
|
+
function n(e, t) {
|
|
5
|
+
e && (typeof e == "function" ? e(t) : e.current = t);
|
|
6
|
+
}
|
|
7
|
+
var r = t.forwardRef(function(r, i) {
|
|
8
|
+
let a = t.useRef(null), o = t.useRef(null);
|
|
9
|
+
return t.useLayoutEffect(() => {
|
|
10
|
+
let t = a.current;
|
|
11
|
+
if (!t) return;
|
|
12
|
+
let s = new e(t, r.options);
|
|
13
|
+
return o.current = s, n(i, s), n(r.chartRef, s), r.onChart?.(s), () => {
|
|
14
|
+
s.dispose(), o.current = null, n(i, null), n(r.chartRef, null);
|
|
15
|
+
};
|
|
16
|
+
}, [r.options]), t.useEffect(() => {
|
|
17
|
+
o.current?.resize();
|
|
18
|
+
}), t.createElement("div", {
|
|
19
|
+
ref: a,
|
|
20
|
+
className: r.className,
|
|
21
|
+
style: r.style ?? {
|
|
22
|
+
width: "100%",
|
|
23
|
+
height: "100%"
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//#endregion
|
|
28
|
+
export { r as BlazeChart, r as default };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","names":[],"sources":["../src/react.ts"],"sourcesContent":["import * as React from \"react\";\nimport { Chart } from \"./ui/Chart.js\";\nimport type { ChartOptions } from \"./ui/Chart.js\";\n\nexport interface BlazeChartProps {\n readonly options?: ChartOptions;\n readonly className?: string;\n readonly style?: React.CSSProperties;\n readonly chartRef?: React.Ref<Chart | null>;\n readonly onChart?: (chart: Chart) => void;\n}\n\nfunction setRef<T>(ref: React.Ref<T> | undefined, value: T | null): void {\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(value);\n } else {\n (ref as { current: T | null }).current = value;\n }\n}\n\nexport const BlazeChart = React.forwardRef<Chart | null, BlazeChartProps>(function BlazeChart(props, forwardedRef) {\n const hostRef = React.useRef<HTMLDivElement | null>(null);\n const chartRef = React.useRef<Chart | null>(null);\n\n React.useLayoutEffect(() => {\n const host = hostRef.current;\n if (!host) return;\n\n const chart = new Chart(host, props.options);\n chartRef.current = chart;\n setRef(forwardedRef, chart);\n setRef(props.chartRef, chart);\n props.onChart?.(chart);\n\n return () => {\n chart.dispose();\n chartRef.current = null;\n setRef(forwardedRef, null);\n setRef(props.chartRef, null);\n };\n }, [props.options]);\n\n React.useEffect(() => {\n chartRef.current?.resize();\n });\n\n return React.createElement(\"div\", {\n ref: hostRef,\n className: props.className,\n style: props.style ?? { width: \"100%\", height: \"100%\" },\n });\n});\n\nexport default BlazeChart;\n"],"mappings":";;;AAYA,SAAS,EAAU,GAA+B,GAAuB;CAClE,MACD,OAAO,KAAQ,aACjB,EAAI,CAAK,IAET,EAA+B,UAAU;AAE7C;AAEA,IAAa,IAAa,EAAM,WAA0C,SAAoB,GAAO,GAAc;CACjH,IAAM,IAAU,EAAM,OAA8B,IAAI,GAClD,IAAW,EAAM,OAAqB,IAAI;CAwBhD,OAtBA,EAAM,sBAAsB;EAC1B,IAAM,IAAO,EAAQ;EACrB,IAAI,CAAC,GAAM;EAEX,IAAM,IAAQ,IAAI,EAAM,GAAM,EAAM,OAAO;EAM3C,OALA,EAAS,UAAU,GACnB,EAAO,GAAc,CAAK,GAC1B,EAAO,EAAM,UAAU,CAAK,GAC5B,EAAM,UAAU,CAAK,SAER;GAIX,AAHA,EAAM,QAAQ,GACd,EAAS,UAAU,MACnB,EAAO,GAAc,IAAI,GACzB,EAAO,EAAM,UAAU,IAAI;EAC7B;CACF,GAAG,CAAC,EAAM,OAAO,CAAC,GAElB,EAAM,gBAAgB;EACpB,EAAS,SAAS,OAAO;CAC3B,CAAC,GAEM,EAAM,cAAc,OAAO;EAChC,KAAK;EACL,WAAW,EAAM;EACjB,OAAO,EAAM,SAAS;GAAE,OAAO;GAAQ,QAAQ;EAAO;CACxD,CAAC;AACH,CAAC"}
|
package/dist/ui/Chart.d.ts
CHANGED
|
@@ -1,12 +1,30 @@
|
|
|
1
1
|
import { SeriesConfig, SeriesStyle, SeriesMode, SeriesSample, SeriesYAxis, Viewport } from '../core/types.js';
|
|
2
2
|
import { SeriesStore } from '../core/SeriesStore.js';
|
|
3
3
|
import { Camera2D } from '../interaction/Camera2D.js';
|
|
4
|
+
import { AxisControllerAxisOptions, AxisScale, AxisTickFormat, AxisTimeZone } from '../interaction/AxisController.js';
|
|
4
5
|
import { PanIntent, ViewportPolicy, ZoomIntent } from '../interaction/types.js';
|
|
5
6
|
import { AxisPosition } from './ChartLayout.js';
|
|
6
7
|
import { ChartTheme, ResolvedChartTheme } from './theme.js';
|
|
7
|
-
export interface
|
|
8
|
+
export interface TextOverlayConfig {
|
|
9
|
+
readonly text: string;
|
|
10
|
+
readonly visible?: boolean;
|
|
11
|
+
readonly color?: string;
|
|
12
|
+
readonly font?: string;
|
|
13
|
+
readonly offsetX?: number;
|
|
14
|
+
readonly offsetY?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface AxisTitleConfig extends TextOverlayConfig {
|
|
17
|
+
}
|
|
18
|
+
export interface ChartTitleConfig extends TextOverlayConfig {
|
|
19
|
+
readonly align?: "left" | "center" | "right";
|
|
20
|
+
}
|
|
21
|
+
export interface AxisConfig extends AxisControllerAxisOptions {
|
|
8
22
|
readonly visible?: boolean;
|
|
9
23
|
readonly position?: AxisPosition;
|
|
24
|
+
readonly scale?: AxisScale;
|
|
25
|
+
readonly tickFormat?: AxisTickFormat;
|
|
26
|
+
readonly timezone?: AxisTimeZone;
|
|
27
|
+
readonly title?: string | AxisTitleConfig;
|
|
10
28
|
}
|
|
11
29
|
export type ChartPickMode = "nearest-x" | "nearest-point";
|
|
12
30
|
export type ChartPickGroup = "x" | "none";
|
|
@@ -30,6 +48,8 @@ export interface ChartOptions {
|
|
|
30
48
|
y?: boolean | AxisConfig;
|
|
31
49
|
y2?: boolean | AxisConfig;
|
|
32
50
|
};
|
|
51
|
+
readonly title?: string | ChartTitleConfig;
|
|
52
|
+
readonly subtitle?: string | ChartTitleConfig;
|
|
33
53
|
readonly hover?: ChartPickOptions;
|
|
34
54
|
readonly plugins?: readonly ChartPlugin[];
|
|
35
55
|
readonly theme?: ChartTheme;
|
|
@@ -56,6 +76,33 @@ export interface ChartPickItem extends SeriesSample {
|
|
|
56
76
|
readonly clientX: number;
|
|
57
77
|
readonly clientY: number;
|
|
58
78
|
}
|
|
79
|
+
export type ChartPointerEventType = "click" | "dblclick" | "pointerdown" | "pointerup" | "pointermove";
|
|
80
|
+
export interface ChartPointerEventState {
|
|
81
|
+
readonly type: ChartPointerEventType;
|
|
82
|
+
readonly clientX: number;
|
|
83
|
+
readonly clientY: number;
|
|
84
|
+
readonly plotX: number;
|
|
85
|
+
readonly plotY: number;
|
|
86
|
+
readonly dataX: number;
|
|
87
|
+
readonly dataY: number;
|
|
88
|
+
readonly button: number;
|
|
89
|
+
readonly buttons: number;
|
|
90
|
+
readonly altKey: boolean;
|
|
91
|
+
readonly ctrlKey: boolean;
|
|
92
|
+
readonly metaKey: boolean;
|
|
93
|
+
readonly shiftKey: boolean;
|
|
94
|
+
readonly items: readonly ChartPickItem[];
|
|
95
|
+
}
|
|
96
|
+
export interface ChartSeriesClickEvent extends ChartPointerEventState {
|
|
97
|
+
readonly item: ChartPickItem;
|
|
98
|
+
}
|
|
99
|
+
export interface ChartViewportChangeEvent {
|
|
100
|
+
readonly viewport: Viewport;
|
|
101
|
+
readonly rightViewport: Viewport;
|
|
102
|
+
}
|
|
103
|
+
export interface ChartSelectEvent<T = unknown> {
|
|
104
|
+
readonly selection: T;
|
|
105
|
+
}
|
|
59
106
|
export interface ChartHoverState {
|
|
60
107
|
readonly clientX: number;
|
|
61
108
|
readonly clientY: number;
|
|
@@ -75,6 +122,12 @@ export interface ChartScreenshotOptions {
|
|
|
75
122
|
readonly background?: string;
|
|
76
123
|
readonly dpr?: number;
|
|
77
124
|
}
|
|
125
|
+
export interface ChartLayoutReservation {
|
|
126
|
+
readonly top?: number;
|
|
127
|
+
readonly right?: number;
|
|
128
|
+
readonly bottom?: number;
|
|
129
|
+
readonly left?: number;
|
|
130
|
+
}
|
|
78
131
|
export interface ChartFrameStats {
|
|
79
132
|
fps: number;
|
|
80
133
|
frameMs: number;
|
|
@@ -114,6 +167,11 @@ export declare class Chart {
|
|
|
114
167
|
private readonly seriesSubscribers;
|
|
115
168
|
private readonly themeSubscribers;
|
|
116
169
|
private readonly renderSubscribers;
|
|
170
|
+
private readonly layoutReservations;
|
|
171
|
+
private readonly viewportSubscribers;
|
|
172
|
+
private readonly selectSubscribers;
|
|
173
|
+
private readonly seriesClickSubscribers;
|
|
174
|
+
private readonly pointerSubscribers;
|
|
117
175
|
private currentHover;
|
|
118
176
|
private lastPointerClientX;
|
|
119
177
|
private lastPointerClientY;
|
|
@@ -121,7 +179,12 @@ export declare class Chart {
|
|
|
121
179
|
private lastFrameAt;
|
|
122
180
|
private currentXOrigin;
|
|
123
181
|
private _rafId;
|
|
182
|
+
private _hoverRafId;
|
|
124
183
|
private readonly handlePointerMove;
|
|
184
|
+
private readonly handlePointerDown;
|
|
185
|
+
private readonly handlePointerUp;
|
|
186
|
+
private readonly handleClick;
|
|
187
|
+
private readonly handleDoubleClick;
|
|
125
188
|
private readonly handlePointerLeave;
|
|
126
189
|
constructor(target: HTMLElement, options?: ChartOptions);
|
|
127
190
|
get canvas(): HTMLCanvasElement;
|
|
@@ -145,6 +208,7 @@ export declare class Chart {
|
|
|
145
208
|
addBar(config: TypedSeriesConfig, style?: Partial<SeriesStyle>): SeriesStore;
|
|
146
209
|
addOhlc(config: TypedSeriesConfig, style?: Partial<SeriesStyle>): SeriesStore;
|
|
147
210
|
addCandlestick(config: TypedSeriesConfig, style?: Partial<SeriesStyle>): SeriesStore;
|
|
211
|
+
private createDefaultDataset;
|
|
148
212
|
removeSeries(series: SeriesStore): boolean;
|
|
149
213
|
setSeriesVisible(series: SeriesStore, visible: boolean): boolean;
|
|
150
214
|
getSeriesState(): ChartSeriesState[];
|
|
@@ -161,10 +225,16 @@ export declare class Chart {
|
|
|
161
225
|
resize(dpr?: number): boolean;
|
|
162
226
|
getFrameStats(target?: ChartFrameStats): ChartFrameStats;
|
|
163
227
|
getHoverState(): ChartHoverState | null;
|
|
228
|
+
setLayoutReservation(id: string, reservation: ChartLayoutReservation | null): void;
|
|
164
229
|
subscribe(event: "hover", callback: (state: ChartHoverState | null) => void): () => void;
|
|
165
230
|
subscribe(event: "serieschange", callback: () => void): () => void;
|
|
166
231
|
subscribe(event: "themechange", callback: () => void): () => void;
|
|
167
232
|
subscribe(event: "render", callback: (chart: Chart) => void): () => void;
|
|
233
|
+
subscribe(event: "viewportchange", callback: (event: ChartViewportChangeEvent) => void): () => void;
|
|
234
|
+
subscribe(event: "select", callback: (event: ChartSelectEvent) => void): () => void;
|
|
235
|
+
subscribe(event: "seriesclick", callback: (event: ChartSeriesClickEvent) => void): () => void;
|
|
236
|
+
subscribe(event: ChartPointerEventType, callback: (event: ChartPointerEventState) => void): () => void;
|
|
237
|
+
emitSelect(selection: unknown): void;
|
|
168
238
|
setTheme(theme?: ChartTheme): void;
|
|
169
239
|
setGridVisible(visible: boolean): void;
|
|
170
240
|
getGridVisible(): boolean;
|
|
@@ -176,6 +246,10 @@ export declare class Chart {
|
|
|
176
246
|
private render;
|
|
177
247
|
dispose(): void;
|
|
178
248
|
private applyTheme;
|
|
249
|
+
private updateTextOverlays;
|
|
250
|
+
private applyChartTextOverlay;
|
|
251
|
+
private applyAxisTitleOverlay;
|
|
252
|
+
private applyLayoutReservations;
|
|
179
253
|
private applyCanvasSize;
|
|
180
254
|
private cameraForSeries;
|
|
181
255
|
private syncRightCameraX;
|
|
@@ -204,8 +278,12 @@ export declare class Chart {
|
|
|
204
278
|
private findNearestPointCandidate;
|
|
205
279
|
private collectPickItems;
|
|
206
280
|
private createPickItem;
|
|
281
|
+
private scheduleHoverRefresh;
|
|
207
282
|
private refreshHover;
|
|
208
283
|
private emitHover;
|
|
284
|
+
private emitPointerEvent;
|
|
285
|
+
private emitSeriesClick;
|
|
286
|
+
private emitViewportChange;
|
|
209
287
|
private emitSeriesChange;
|
|
210
288
|
private emitThemeChange;
|
|
211
289
|
private emitRender;
|
package/dist/ui/Chart.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/ui/Chart.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/ui/Chart.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/ChartLayout.d.ts
CHANGED
|
@@ -17,6 +17,11 @@ export interface ChartLayoutElements {
|
|
|
17
17
|
readonly y2Axis: HTMLDivElement;
|
|
18
18
|
readonly corner: HTMLDivElement;
|
|
19
19
|
readonly cornerRight: HTMLDivElement;
|
|
20
|
+
readonly title: HTMLDivElement;
|
|
21
|
+
readonly subtitle: HTMLDivElement;
|
|
22
|
+
readonly xAxisTitle: HTMLDivElement;
|
|
23
|
+
readonly yAxisTitle: HTMLDivElement;
|
|
24
|
+
readonly y2AxisTitle: HTMLDivElement;
|
|
20
25
|
}
|
|
21
26
|
export declare const LEFT_AXIS_GUTTER_CSS = 52;
|
|
22
27
|
export declare const RIGHT_AXIS_GUTTER_CSS = 52;
|
|
@@ -30,6 +35,11 @@ export declare class ChartLayout implements ChartLayoutElements {
|
|
|
30
35
|
readonly y2Axis: HTMLDivElement;
|
|
31
36
|
readonly corner: HTMLDivElement;
|
|
32
37
|
readonly cornerRight: HTMLDivElement;
|
|
38
|
+
readonly title: HTMLDivElement;
|
|
39
|
+
readonly subtitle: HTMLDivElement;
|
|
40
|
+
readonly xAxisTitle: HTMLDivElement;
|
|
41
|
+
readonly yAxisTitle: HTMLDivElement;
|
|
42
|
+
readonly y2AxisTitle: HTMLDivElement;
|
|
33
43
|
private readonly externalCanvas;
|
|
34
44
|
private readonly originalCanvasCssText;
|
|
35
45
|
private readonly originalCanvasParent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartLayout.d.ts","sourceRoot":"","sources":["../../src/ui/ChartLayout.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,CAAC,EAAE,oBAAoB,CAAC;IACjC,QAAQ,CAAC,CAAC,EAAE,oBAAoB,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,oBAAoB,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;CACtC;AAED,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,qBAAa,WAAY,YAAW,mBAAmB;IACrD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IAErC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;gBAE9C,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"ChartLayout.d.ts","sourceRoot":"","sources":["../../src/ui/ChartLayout.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,CAAC,EAAE,oBAAoB,CAAC;IACjC,QAAQ,CAAC,CAAC,EAAE,oBAAoB,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,oBAAoB,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;CACtC;AAED,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,qBAAa,WAAY,YAAW,mBAAmB;IACrD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IAErC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;gBAE9C,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB;IAuC1D,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAcvC,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,KAAK;IAqBb,OAAO,CAAC,eAAe;CA8FxB"}
|