blazeplot 0.1.7 → 0.1.8

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.
@@ -0,0 +1,3 @@
1
+ export { legendPlugin } from '../ui/Legend.js';
2
+ export type { LegendPluginOptions } from '../ui/Legend.js';
3
+ //# sourceMappingURL=legend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legend.d.ts","sourceRoot":"","sources":["../../src/plugins/legend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,37 @@
1
+ //#region src/ui/Legend.ts
2
+ function e(e) {
3
+ return `rgba(${Math.round(e[0] * 255)}, ${Math.round(e[1] * 255)}, ${Math.round(e[2] * 255)}, ${e[3]})`;
4
+ }
5
+ function t(e, t) {
6
+ e.style.top = t.startsWith("top") ? "8px" : "auto", e.style.bottom = t.startsWith("bottom") ? "8px" : "auto", e.style.left = t.endsWith("left") ? "8px" : "auto", e.style.right = t.endsWith("right") ? "8px" : "auto";
7
+ }
8
+ function n(t, n, r, i) {
9
+ n.replaceChildren();
10
+ for (let a of t) {
11
+ let t = document.createElement("button");
12
+ t.type = "button", t.style.display = "flex", t.style.alignItems = "center", t.style.gap = "6px", t.style.width = "100%", t.style.border = "0", t.style.padding = "2px 4px", t.style.background = "transparent", t.style.color = a.visible ? "#dbeafe" : "#789", t.style.font = "11px ui-monospace, monospace, sans-serif", t.style.textAlign = "left", t.style.cursor = i ? "pointer" : "default", t.style.opacity = a.visible ? "1" : "0.45";
13
+ let o = document.createElement("span");
14
+ o.style.width = "10px", o.style.height = "10px", o.style.borderRadius = "2px", o.style.background = e(a.color), o.style.flex = "0 0 auto";
15
+ let s = document.createElement("span");
16
+ s.textContent = a.name ?? a.id ?? `${a.mode} ${a.index + 1}`, t.append(o, s), i && t.addEventListener("click", () => {
17
+ r.setSeriesVisible(a.series, !a.visible);
18
+ }), n.appendChild(t);
19
+ }
20
+ }
21
+ function r(e = {}) {
22
+ return { install(r) {
23
+ let i = document.createElement("div");
24
+ i.className = e.className ?? "blazeplot-legend", i.style.position = "absolute", i.style.zIndex = "20", i.style.pointerEvents = "auto", i.style.padding = "6px", i.style.border = "1px solid rgba(148, 163, 184, 0.22)", i.style.borderRadius = "6px", i.style.background = "rgba(15, 23, 42, 0.72)", i.style.backdropFilter = "blur(4px)", i.style.userSelect = "none", t(i, e.position ?? "top-right"), r.rootElement.appendChild(i);
25
+ let a = () => {
26
+ let t = r.getSeriesState();
27
+ e.render ? e.render(t, i, r) : n(t, i, r, e.toggleOnClick !== !1);
28
+ }, o = r.subscribe("serieschange", a);
29
+ return a(), () => {
30
+ o(), i.remove();
31
+ };
32
+ } };
33
+ }
34
+ //#endregion
35
+ export { r as legendPlugin };
36
+
37
+ //# sourceMappingURL=legend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legend.js","names":[],"sources":["../../src/ui/Legend.ts"],"sourcesContent":["import type { Chart, ChartPlugin, ChartSeriesState } from \"./Chart.js\";\n\nexport interface LegendPluginOptions {\n readonly className?: string;\n readonly position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n readonly toggleOnClick?: boolean;\n readonly render?: (state: readonly ChartSeriesState[], container: HTMLElement, chart: Chart) => void;\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 applyPosition(el: HTMLElement, position: NonNullable<LegendPluginOptions[\"position\"]>): void {\n el.style.top = position.startsWith(\"top\") ? \"8px\" : \"auto\";\n el.style.bottom = position.startsWith(\"bottom\") ? \"8px\" : \"auto\";\n el.style.left = position.endsWith(\"left\") ? \"8px\" : \"auto\";\n el.style.right = position.endsWith(\"right\") ? \"8px\" : \"auto\";\n}\n\nfunction renderDefaultLegend(\n state: readonly ChartSeriesState[],\n container: HTMLElement,\n chart: Chart,\n toggleOnClick: boolean,\n): void {\n container.replaceChildren();\n\n for (const item of state) {\n const row = document.createElement(\"button\");\n row.type = \"button\";\n row.style.display = \"flex\";\n row.style.alignItems = \"center\";\n row.style.gap = \"6px\";\n row.style.width = \"100%\";\n row.style.border = \"0\";\n row.style.padding = \"2px 4px\";\n row.style.background = \"transparent\";\n row.style.color = item.visible ? \"#dbeafe\" : \"#789\";\n row.style.font = \"11px ui-monospace, monospace, sans-serif\";\n row.style.textAlign = \"left\";\n row.style.cursor = toggleOnClick ? \"pointer\" : \"default\";\n row.style.opacity = item.visible ? \"1\" : \"0.45\";\n\n const swatch = document.createElement(\"span\");\n swatch.style.width = \"10px\";\n swatch.style.height = \"10px\";\n swatch.style.borderRadius = \"2px\";\n swatch.style.background = rgba(item.color);\n swatch.style.flex = \"0 0 auto\";\n\n const label = document.createElement(\"span\");\n label.textContent = item.name ?? item.id ?? `${item.mode} ${item.index + 1}`;\n\n row.append(swatch, label);\n if (toggleOnClick) {\n row.addEventListener(\"click\", () => {\n chart.setSeriesVisible(item.series, !item.visible);\n });\n }\n container.appendChild(row);\n }\n}\n\nexport function legendPlugin(options: LegendPluginOptions = {}): ChartPlugin {\n return {\n install(chart: Chart) {\n const container = document.createElement(\"div\");\n container.className = options.className ?? \"blazeplot-legend\";\n container.style.position = \"absolute\";\n container.style.zIndex = \"20\";\n container.style.pointerEvents = \"auto\";\n container.style.padding = \"6px\";\n container.style.border = \"1px solid rgba(148, 163, 184, 0.22)\";\n container.style.borderRadius = \"6px\";\n container.style.background = \"rgba(15, 23, 42, 0.72)\";\n container.style.backdropFilter = \"blur(4px)\";\n container.style.userSelect = \"none\";\n applyPosition(container, options.position ?? \"top-right\");\n chart.rootElement.appendChild(container);\n\n const render = (): void => {\n const state = chart.getSeriesState();\n if (options.render) {\n options.render(state, container, chart);\n } else {\n renderDefaultLegend(state, container, chart, options.toggleOnClick !== false);\n }\n };\n\n const unsubscribe = chart.subscribe(\"serieschange\", render);\n render();\n\n return () => {\n unsubscribe();\n container.remove();\n };\n },\n };\n}\n"],"mappings":";AASA,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,EAAc,GAAiB,GAA8D;CAIpG,AAHA,EAAG,MAAM,MAAM,EAAS,WAAW,KAAK,IAAI,QAAQ,QACpD,EAAG,MAAM,SAAS,EAAS,WAAW,QAAQ,IAAI,QAAQ,QAC1D,EAAG,MAAM,OAAO,EAAS,SAAS,MAAM,IAAI,QAAQ,QACpD,EAAG,MAAM,QAAQ,EAAS,SAAS,OAAO,IAAI,QAAQ;AACxD;AAEA,SAAS,EACP,GACA,GACA,GACA,GACM;CACN,EAAU,gBAAgB;CAE1B,KAAK,IAAM,KAAQ,GAAO;EACxB,IAAM,IAAM,SAAS,cAAc,QAAQ;EAa3C,AAZA,EAAI,OAAO,UACX,EAAI,MAAM,UAAU,QACpB,EAAI,MAAM,aAAa,UACvB,EAAI,MAAM,MAAM,OAChB,EAAI,MAAM,QAAQ,QAClB,EAAI,MAAM,SAAS,KACnB,EAAI,MAAM,UAAU,WACpB,EAAI,MAAM,aAAa,eACvB,EAAI,MAAM,QAAQ,EAAK,UAAU,YAAY,QAC7C,EAAI,MAAM,OAAO,4CACjB,EAAI,MAAM,YAAY,QACtB,EAAI,MAAM,SAAS,IAAgB,YAAY,WAC/C,EAAI,MAAM,UAAU,EAAK,UAAU,MAAM;EAEzC,IAAM,IAAS,SAAS,cAAc,MAAM;EAK5C,AAJA,EAAO,MAAM,QAAQ,QACrB,EAAO,MAAM,SAAS,QACtB,EAAO,MAAM,eAAe,OAC5B,EAAO,MAAM,aAAa,EAAK,EAAK,KAAK,GACzC,EAAO,MAAM,OAAO;EAEpB,IAAM,IAAQ,SAAS,cAAc,MAAM;EAS3C,AARA,EAAM,cAAc,EAAK,QAAQ,EAAK,MAAM,GAAG,EAAK,KAAK,GAAG,EAAK,QAAQ,KAEzE,EAAI,OAAO,GAAQ,CAAK,GACpB,KACF,EAAI,iBAAiB,eAAe;GAClC,EAAM,iBAAiB,EAAK,QAAQ,CAAC,EAAK,OAAO;EACnD,CAAC,GAEH,EAAU,YAAY,CAAG;CAC3B;AACF;AAEA,SAAgB,EAAa,IAA+B,CAAC,GAAgB;CAC3E,OAAO,EACL,QAAQ,GAAc;EACpB,IAAM,IAAY,SAAS,cAAc,KAAK;EAY9C,AAXA,EAAU,YAAY,EAAQ,aAAa,oBAC3C,EAAU,MAAM,WAAW,YAC3B,EAAU,MAAM,SAAS,MACzB,EAAU,MAAM,gBAAgB,QAChC,EAAU,MAAM,UAAU,OAC1B,EAAU,MAAM,SAAS,uCACzB,EAAU,MAAM,eAAe,OAC/B,EAAU,MAAM,aAAa,0BAC7B,EAAU,MAAM,iBAAiB,aACjC,EAAU,MAAM,aAAa,QAC7B,EAAc,GAAW,EAAQ,YAAY,WAAW,GACxD,EAAM,YAAY,YAAY,CAAS;EAEvC,IAAM,UAAqB;GACzB,IAAM,IAAQ,EAAM,eAAe;GACnC,AAAI,EAAQ,SACV,EAAQ,OAAO,GAAO,GAAW,CAAK,IAEtC,EAAoB,GAAO,GAAW,GAAO,EAAQ,kBAAkB,EAAK;EAEhF,GAEM,IAAc,EAAM,UAAU,gBAAgB,CAAM;EAG1D,OAFA,EAAO,SAEM;GAEX,AADA,EAAY,GACZ,EAAU,OAAO;EACnB;CACF,EACF;AACF"}
@@ -0,0 +1,3 @@
1
+ export { tooltipPlugin } from '../ui/Tooltip.js';
2
+ export type { TooltipPluginOptions } from '../ui/Tooltip.js';
3
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/plugins/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,50 @@
1
+ //#region src/ui/Tooltip.ts
2
+ function e(e) {
3
+ return e.name ?? e.id ?? `${e.mode} ${e.seriesIndex + 1}`;
4
+ }
5
+ function t(e) {
6
+ if (!Number.isFinite(e)) return String(e);
7
+ let t = Math.abs(e);
8
+ return t > 0 && (t < .001 || t >= 1e6) ? e.toExponential(3) : Number(e.toPrecision(6)).toString();
9
+ }
10
+ function n(e) {
11
+ return `rgba(${Math.round(e[0] * 255)}, ${Math.round(e[1] * 255)}, ${Math.round(e[2] * 255)}, ${e[3]})`;
12
+ }
13
+ function r(r, i, a) {
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 = {}) {
22
+ return { install(t) {
23
+ let i = document.createElement("div");
24
+ i.className = e.className ?? "blazeplot-tooltip", i.style.position = "absolute", i.style.zIndex = "30", i.style.display = "none", i.style.pointerEvents = "none", i.style.background = "rgba(4, 8, 16, 0.85)", i.style.color = "#bfd6ff", i.style.font = "11px/1.35 ui-monospace, monospace", i.style.padding = "8px 10px", i.style.whiteSpace = "pre", t.rootElement.appendChild(i);
25
+ let a = document.createElement("div");
26
+ a.className = "blazeplot-tooltip-markers", a.style.position = "absolute", a.style.inset = "0", a.style.zIndex = "25", a.style.pointerEvents = "none", t.plotElement.appendChild(a);
27
+ let o = (t) => {
28
+ if (a.replaceChildren(), !(e.highlight === !1 || !t)) for (let e of t.items) {
29
+ let t = document.createElement("div");
30
+ t.style.position = "absolute", t.style.left = `${e.plotX}px`, t.style.top = `${e.plotY}px`, t.style.width = "10px", t.style.height = "10px", t.style.border = "2px solid #f8fafc", t.style.borderRadius = "999px", t.style.background = n(e.series.style.color), t.style.boxShadow = "0 0 0 2px rgba(4, 8, 16, 0.85)", t.style.transform = "translate(-50%, -50%)", a.appendChild(t);
31
+ }
32
+ }, s = t.subscribe("hover", (n) => {
33
+ let a = n && (e.mode !== void 0 || e.maxDistancePx !== void 0) ? t.pick(n.clientX, n.clientY, e) : n;
34
+ if (o(a), !a || a.items.length === 0) {
35
+ i.style.display = "none";
36
+ return;
37
+ }
38
+ e.render ? e.render(a, i, t) : r(a, i, e.formatter);
39
+ let s = t.rootElement.getBoundingClientRect(), c = a.clientX - s.left + (e.offsetX ?? 12), l = a.clientY - s.top + (e.offsetY ?? 12);
40
+ i.style.transform = `translate(${c}px, ${l}px)`, i.style.display = "block";
41
+ });
42
+ return () => {
43
+ s(), a.remove(), i.remove();
44
+ };
45
+ } };
46
+ }
47
+ //#endregion
48
+ export { i as tooltipPlugin };
49
+
50
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","names":[],"sources":["../../src/ui/Tooltip.ts"],"sourcesContent":["import type { Chart, ChartHoverState, ChartPickItem, ChartPickMode, ChartPlugin } from \"./Chart.js\";\n\nexport interface TooltipPluginOptions {\n readonly className?: string;\n readonly mode?: ChartPickMode;\n readonly maxDistancePx?: number;\n readonly offsetX?: number;\n readonly offsetY?: number;\n readonly highlight?: 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\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 = \"absolute\";\n container.style.zIndex = \"30\";\n container.style.display = \"none\";\n container.style.pointerEvents = \"none\";\n container.style.background = \"rgba(4, 8, 16, 0.85)\";\n container.style.color = \"#bfd6ff\";\n container.style.font = \"11px/1.35 ui-monospace, monospace\";\n container.style.padding = \"8px 10px\";\n container.style.whiteSpace = \"pre\";\n chart.rootElement.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 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 2px 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 effectiveState = state && (options.mode !== undefined || options.maxDistancePx !== undefined)\n ? chart.pick(state.clientX, state.clientY, options)\n : state;\n\n renderMarkers(effectiveState);\n if (!effectiveState || effectiveState.items.length === 0) {\n container.style.display = \"none\";\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 const rootRect = chart.rootElement.getBoundingClientRect();\n const x = effectiveState.clientX - rootRect.left + (options.offsetX ?? 12);\n const y = effectiveState.clientY - rootRect.top + (options.offsetY ?? 12);\n container.style.transform = `translate(${x}px, ${y}px)`;\n container.style.display = \"block\";\n };\n\n const unsubscribe = chart.subscribe(\"hover\", render);\n return () => {\n unsubscribe();\n markerLayer.remove();\n container.remove();\n };\n },\n };\n}\n"],"mappings":"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"}
@@ -6,7 +6,9 @@ export declare class Renderer {
6
6
  private readonly lineProgram;
7
7
  private readonly segmentProgram;
8
8
  private readonly pointProgram;
9
+ private readonly pointSpriteProgram;
9
10
  private readonly barProgram;
11
+ private readonly barRangeProgram;
10
12
  private readonly segmentSelectBuffer;
11
13
  private readonly pointCornerBuffer;
12
14
  private readonly barCornerBuffer;
@@ -26,9 +28,13 @@ export declare class Renderer {
26
28
  drawMinMaxSegments(positions: GpuBuffer, count: number, style: SeriesStyle, camera: Camera2D): void;
27
29
  drawMinMaxSegmentsInstanced(instanceBuffer: GpuBuffer, instanceCount: number, style: SeriesStyle, camera: Camera2D): void;
28
30
  drawPointsInstanced(instanceBuffer: GpuBuffer, pointCount: number, style: SeriesStyle, camera: Camera2D, canvasWidth: number, canvasHeight: number): void;
31
+ drawPointSprites(positions: GpuBuffer, pointCount: number, style: SeriesStyle, camera: Camera2D): void;
29
32
  drawAreaStrip(positions: GpuBuffer, count: number, style: SeriesStyle, camera: Camera2D): void;
30
33
  drawBarsInstanced(instanceBuffer: GpuBuffer, barCount: number, style: SeriesStyle, camera: Camera2D): void;
34
+ drawBarRangesInstanced(instanceBuffer: GpuBuffer, barCount: number, style: SeriesStyle, camera: Camera2D): void;
35
+ drawBarTriangles(positions: GpuBuffer, vertexCount: number, style: SeriesStyle, camera: Camera2D): void;
31
36
  private drawLinePrimitive;
37
+ private drawTrianglePrimitive;
32
38
  private writeCameraUniforms;
33
39
  dispose(): void;
34
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../src/render/Renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAiB,UAAU,EAAE,SAAS,EAAc,MAAM,YAAY,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AASpD,qBAAa,QAAQ;IAYP,OAAO,CAAC,OAAO;IAX3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAY;IAChD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAY;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqC;IACnE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;gBAEnD,OAAO,EAAE,UAAU;IAgBvC,IAAI,yBAAyB,IAAI,OAAO,CAEvC;IAED,IAAI,uBAAuB,IAAI,OAAO,CAErC;IAED,IAAI,qBAAqB,IAAI,OAAO,CAEnC;IAED,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAIvD,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS;IAIhD,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;IAI9D,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAInE,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAI1F,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAI9F,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAInG,2BAA2B,CAAC,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAuBzH,mBAAmB,CACjB,cAAc,EAAE,SAAS,EACzB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,QAAQ,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,IAAI;IAyBP,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAgB9F,iBAAiB,CACf,cAAc,EAAE,SAAS,EACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,QAAQ,GACf,IAAI;IAuBP,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../src/render/Renderer.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,17 @@ export declare const ShaderPrograms: {
11
11
  readonly vert: string;
12
12
  readonly frag: string;
13
13
  };
14
+ readonly pointSprite: {
15
+ readonly vert: string;
16
+ readonly frag: string;
17
+ };
14
18
  readonly bar: {
15
19
  readonly vert: string;
16
20
  readonly frag: string;
17
21
  };
22
+ readonly barRange: {
23
+ readonly vert: string;
24
+ readonly frag: string;
25
+ };
18
26
  };
19
27
  //# sourceMappingURL=ShaderPrograms.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShaderPrograms.d.ts","sourceRoot":"","sources":["../../src/render/ShaderPrograms.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;CAKjB,CAAC"}
1
+ {"version":3,"file":"ShaderPrograms.d.ts","sourceRoot":"","sources":["../../src/render/ShaderPrograms.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;CAOjB,CAAC"}
@@ -38,7 +38,7 @@ export interface AttributeSpec {
38
38
  }
39
39
  export interface DrawSpec {
40
40
  readonly program: GpuProgram;
41
- readonly primitive: "lines" | "line_strip" | "triangles" | "triangle_strip";
41
+ readonly primitive: "points" | "lines" | "line_strip" | "triangles" | "triangle_strip";
42
42
  readonly count: number;
43
43
  readonly instances?: number;
44
44
  readonly uniforms: Readonly<Record<string, UniformValue>>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/render/types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,cAAc,EAAE,OAAO,MAAM,CAAC;AAC5C,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC1C,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzF,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3D,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAClC;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,MAAM,EAAE,GAAG,YAAY,CAAC;AAE/E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,gBAAgB,CAAC;IAC5E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/render/types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,cAAc,EAAE,OAAO,MAAM,CAAC;AAC5C,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC1C,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzF,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3D,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAClC;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,MAAM,EAAE,GAAG,YAAY,CAAC;AAE/E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,gBAAgB,CAAC;IACvF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B"}
@@ -1,4 +1,4 @@
1
- import { SeriesConfig, SeriesStyle } from '../core/types.js';
1
+ import { SeriesConfig, SeriesStyle, SeriesMode, SeriesSample } from '../core/types.js';
2
2
  import { SeriesStore } from '../core/SeriesStore.js';
3
3
  import { ViewportPolicy } from '../interaction/types.js';
4
4
  import { AxisPosition } from './ChartLayout.js';
@@ -6,6 +6,17 @@ export interface AxisConfig {
6
6
  readonly visible?: boolean;
7
7
  readonly position?: AxisPosition;
8
8
  }
9
+ export type ChartPickMode = "nearest-x" | "nearest-point";
10
+ export interface ChartPickOptions {
11
+ readonly mode?: ChartPickMode;
12
+ readonly maxDistancePx?: number;
13
+ }
14
+ export interface ChartPluginHandle {
15
+ dispose(): void;
16
+ }
17
+ export interface ChartPlugin {
18
+ install(chart: Chart): void | (() => void) | ChartPluginHandle;
19
+ }
9
20
  export interface ChartOptions {
10
21
  readonly viewportPolicy?: ViewportPolicy;
11
22
  readonly grid?: boolean;
@@ -14,6 +25,46 @@ export interface ChartOptions {
14
25
  x?: boolean | AxisConfig;
15
26
  y?: boolean | AxisConfig;
16
27
  };
28
+ readonly hover?: ChartPickOptions;
29
+ readonly plugins?: readonly ChartPlugin[];
30
+ }
31
+ export type TypedSeriesConfig = Omit<SeriesConfig, "mode">;
32
+ export interface ChartSeriesState {
33
+ readonly series: SeriesStore;
34
+ readonly index: number;
35
+ readonly id?: string;
36
+ readonly name?: string;
37
+ readonly mode: SeriesMode;
38
+ readonly visible: boolean;
39
+ readonly color: readonly [number, number, number, number];
40
+ }
41
+ export interface ChartPickItem extends SeriesSample {
42
+ readonly series: SeriesStore;
43
+ readonly seriesIndex: number;
44
+ readonly id?: string;
45
+ readonly name?: string;
46
+ readonly mode: SeriesMode;
47
+ readonly plotX: number;
48
+ readonly plotY: number;
49
+ readonly clientX: number;
50
+ readonly clientY: number;
51
+ }
52
+ export interface ChartHoverState {
53
+ readonly clientX: number;
54
+ readonly clientY: number;
55
+ readonly plotX: number;
56
+ readonly plotY: number;
57
+ readonly dataX: number;
58
+ readonly dataY: number;
59
+ readonly anchorX: number;
60
+ readonly mode: ChartPickMode;
61
+ readonly items: readonly ChartPickItem[];
62
+ }
63
+ export interface ChartScreenshotOptions {
64
+ readonly type?: string;
65
+ readonly quality?: number;
66
+ readonly background?: string;
67
+ readonly dpr?: number;
17
68
  }
18
69
  export interface ChartFrameStats {
19
70
  fps: number;
@@ -34,6 +85,8 @@ export declare class Chart {
34
85
  private rawLineData;
35
86
  private minMaxInstanceBuffer;
36
87
  private minMaxInstanceData;
88
+ private barTriangleBuffer;
89
+ private barTriangleData;
37
90
  private gridBuffer;
38
91
  private gridData;
39
92
  private gridStyle;
@@ -44,12 +97,30 @@ export declare class Chart {
44
97
  private layout;
45
98
  private stats;
46
99
  private resizeObserver;
100
+ private readonly pluginDisposers;
101
+ private readonly hoverSubscribers;
102
+ private readonly seriesSubscribers;
103
+ private currentHover;
104
+ private lastPointerClientX;
105
+ private lastPointerClientY;
106
+ private pointerInPlot;
47
107
  private lastFrameAt;
48
108
  private _rafId;
109
+ private readonly handlePointerMove;
110
+ private readonly handlePointerLeave;
49
111
  constructor(target: HTMLElement, options?: ChartOptions);
50
112
  get canvas(): HTMLCanvasElement;
113
+ get rootElement(): HTMLElement;
114
+ get plotElement(): HTMLElement;
115
+ dataToPlot(x: number, y: number): [number, number];
51
116
  addSeries(config: SeriesConfig, style?: Partial<SeriesStyle>): SeriesStore;
117
+ addLine(config: TypedSeriesConfig, style?: Partial<SeriesStyle>): SeriesStore;
118
+ addArea(config: TypedSeriesConfig, style?: Partial<SeriesStyle>): SeriesStore;
119
+ addScatter(config: TypedSeriesConfig, style?: Partial<SeriesStyle>): SeriesStore;
120
+ addBar(config: TypedSeriesConfig, style?: Partial<SeriesStyle>): SeriesStore;
52
121
  removeSeries(series: SeriesStore): boolean;
122
+ setSeriesVisible(series: SeriesStore, visible: boolean): boolean;
123
+ getSeriesState(): ChartSeriesState[];
53
124
  setViewport(v: {
54
125
  xMin?: number;
55
126
  xMax?: number;
@@ -58,6 +129,11 @@ export declare class Chart {
58
129
  }): void;
59
130
  resize(dpr?: number): boolean;
60
131
  getFrameStats(target?: ChartFrameStats): ChartFrameStats;
132
+ getHoverState(): ChartHoverState | null;
133
+ subscribe(event: "hover", callback: (state: ChartHoverState | null) => void): () => void;
134
+ subscribe(event: "serieschange", callback: () => void): () => void;
135
+ pick(clientX: number, clientY: number, options?: ChartPickOptions): ChartHoverState | null;
136
+ screenshot(options?: ChartScreenshotOptions): Promise<Blob>;
61
137
  start(): void;
62
138
  stop(): void;
63
139
  private render;
@@ -67,8 +143,21 @@ export declare class Chart {
67
143
  private drawScatterSeries;
68
144
  private drawBarSeries;
69
145
  private uploadRawInstances;
146
+ private includeBaselineInBarRanges;
147
+ private writeBarTriangles;
148
+ private writeBarBucketTriangles;
149
+ private writeBarTriangle;
150
+ private drawBarTriangleFallback;
70
151
  private recordInstancedDraw;
152
+ private findNearestXAnchor;
153
+ private findNearestPointAnchor;
154
+ private collectPickItems;
155
+ private refreshHover;
156
+ private emitHover;
157
+ private emitSeriesChange;
158
+ private drawDomTextForScreenshot;
71
159
  private maxMinMaxSegments;
160
+ private maxBarFallbackBars;
72
161
  private writeGridVertices;
73
162
  private recordRenderMode;
74
163
  }
@@ -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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"}
@@ -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;CAClC;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;CACjC;AAED,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,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;IAEhC,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;IAyB1D,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAWvC,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,eAAe;CA4CxB"}
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;CAClC;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;CACjC;AAED,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,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;IAEhC,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;IAyB1D,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAWvC,OAAO,IAAI,IAAI;IAQf,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,eAAe;CA6CxB"}
@@ -1,3 +1,9 @@
1
- export declare class Legend {
1
+ import { Chart, ChartPlugin, ChartSeriesState } from './Chart.js';
2
+ export interface LegendPluginOptions {
3
+ readonly className?: string;
4
+ readonly position?: "top-left" | "top-right" | "bottom-left" | "bottom-right";
5
+ readonly toggleOnClick?: boolean;
6
+ readonly render?: (state: readonly ChartSeriesState[], container: HTMLElement, chart: Chart) => void;
2
7
  }
8
+ export declare function legendPlugin(options?: LegendPluginOptions): ChartPlugin;
3
9
  //# sourceMappingURL=Legend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Legend.d.ts","sourceRoot":"","sources":["../../src/ui/Legend.ts"],"names":[],"mappings":"AAAA,qBAAa,MAAM;CAElB"}
1
+ {"version":3,"file":"Legend.d.ts","sourceRoot":"","sources":["../../src/ui/Legend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,CAAC;IAC9E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACtG;AAyDD,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,WAAW,CAmC3E"}
@@ -1,3 +1,13 @@
1
- export declare class Tooltip {
1
+ import { Chart, ChartHoverState, ChartPickItem, ChartPickMode, ChartPlugin } from './Chart.js';
2
+ export interface TooltipPluginOptions {
3
+ readonly className?: string;
4
+ readonly mode?: ChartPickMode;
5
+ readonly maxDistancePx?: number;
6
+ readonly offsetX?: number;
7
+ readonly offsetY?: number;
8
+ readonly highlight?: boolean;
9
+ readonly formatter?: (item: ChartPickItem, state: ChartHoverState) => string;
10
+ readonly render?: (state: ChartHoverState, container: HTMLElement, chart: Chart) => void;
2
11
  }
12
+ export declare function tooltipPlugin(options?: TooltipPluginOptions): ChartPlugin;
3
13
  //# sourceMappingURL=Tooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/ui/Tooltip.ts"],"names":[],"mappings":"AAAA,qBAAa,OAAO;CAEnB"}
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/ui/Tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC1F;AAiCD,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,WAAW,CA4E7E"}
@@ -1,8 +1,10 @@
1
1
  export { Chart } from './Chart.js';
2
- export type { ChartFrameStats, ChartOptions, AxisConfig } from './Chart.js';
2
+ export type { ChartFrameStats, ChartOptions, ChartScreenshotOptions, AxisConfig, TypedSeriesConfig } from './Chart.js';
3
3
  export type { AxisPosition } from './ChartLayout.js';
4
4
  export { Axis } from './Axis.js';
5
5
  export { Grid } from './Grid.js';
6
- export { Legend } from './Legend.js';
7
- export { Tooltip } from './Tooltip.js';
6
+ export { legendPlugin } from './Legend.js';
7
+ export type { LegendPluginOptions } from './Legend.js';
8
+ export { tooltipPlugin } from './Tooltip.js';
9
+ export type { TooltipPluginOptions } from './Tooltip.js';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5E,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,sBAAsB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACvH,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blazeplot",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "author": {
5
5
  "name": "BlazePlot contributors"
6
6
  },
@@ -20,6 +20,14 @@
20
20
  "types": "./dist/index.d.ts",
21
21
  "import": "./dist/index.js"
22
22
  },
23
+ "./plugins/legend": {
24
+ "types": "./dist/plugins/legend.d.ts",
25
+ "import": "./dist/plugins/legend.js"
26
+ },
27
+ "./plugins/tooltip": {
28
+ "types": "./dist/plugins/tooltip.d.ts",
29
+ "import": "./dist/plugins/tooltip.js"
30
+ },
23
31
  "./package.json": "./package.json"
24
32
  },
25
33
  "files": [