@chartgpu/chartgpu 0.2.5

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.
Files changed (273) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +208 -0
  3. package/dist/ChartGPU.d.ts +146 -0
  4. package/dist/ChartGPU.d.ts.map +1 -0
  5. package/dist/components/createAnnotationConfigDialog.d.ts +24 -0
  6. package/dist/components/createAnnotationConfigDialog.d.ts.map +1 -0
  7. package/dist/components/createDataZoomSlider.d.ts +14 -0
  8. package/dist/components/createDataZoomSlider.d.ts.map +1 -0
  9. package/dist/components/createLegend.d.ts +9 -0
  10. package/dist/components/createLegend.d.ts.map +1 -0
  11. package/dist/components/createTextOverlay.d.ts +17 -0
  12. package/dist/components/createTextOverlay.d.ts.map +1 -0
  13. package/dist/components/createTooltip.d.ts +12 -0
  14. package/dist/components/createTooltip.d.ts.map +1 -0
  15. package/dist/components/formatTooltip.d.ts +19 -0
  16. package/dist/components/formatTooltip.d.ts.map +1 -0
  17. package/dist/config/OptionResolver.d.ts +137 -0
  18. package/dist/config/OptionResolver.d.ts.map +1 -0
  19. package/dist/config/defaults.d.ts +56 -0
  20. package/dist/config/defaults.d.ts.map +1 -0
  21. package/dist/config/types.d.ts +553 -0
  22. package/dist/config/types.d.ts.map +1 -0
  23. package/dist/core/GPUContext.d.ts +242 -0
  24. package/dist/core/GPUContext.d.ts.map +1 -0
  25. package/dist/core/RenderScheduler.d.ts +174 -0
  26. package/dist/core/RenderScheduler.d.ts.map +1 -0
  27. package/dist/core/createAnimationController.d.ts +15 -0
  28. package/dist/core/createAnimationController.d.ts.map +1 -0
  29. package/dist/core/createRenderCoordinator.d.ts +78 -0
  30. package/dist/core/createRenderCoordinator.d.ts.map +1 -0
  31. package/dist/core/renderCoordinator/animation/animationHelpers.d.ts +183 -0
  32. package/dist/core/renderCoordinator/animation/animationHelpers.d.ts.map +1 -0
  33. package/dist/core/renderCoordinator/annotations/processAnnotations.d.ts +88 -0
  34. package/dist/core/renderCoordinator/annotations/processAnnotations.d.ts.map +1 -0
  35. package/dist/core/renderCoordinator/axis/axisLabelHelpers.d.ts +91 -0
  36. package/dist/core/renderCoordinator/axis/axisLabelHelpers.d.ts.map +1 -0
  37. package/dist/core/renderCoordinator/axis/computeAxisTicks.d.ts +53 -0
  38. package/dist/core/renderCoordinator/axis/computeAxisTicks.d.ts.map +1 -0
  39. package/dist/core/renderCoordinator/data/computeVisibleSlice.d.ts +66 -0
  40. package/dist/core/renderCoordinator/data/computeVisibleSlice.d.ts.map +1 -0
  41. package/dist/core/renderCoordinator/gpu/textureManager.d.ts +69 -0
  42. package/dist/core/renderCoordinator/gpu/textureManager.d.ts.map +1 -0
  43. package/dist/core/renderCoordinator/interaction/interactionHelpers.d.ts +160 -0
  44. package/dist/core/renderCoordinator/interaction/interactionHelpers.d.ts.map +1 -0
  45. package/dist/core/renderCoordinator/render/renderAnnotationLabels.d.ts +36 -0
  46. package/dist/core/renderCoordinator/render/renderAnnotationLabels.d.ts.map +1 -0
  47. package/dist/core/renderCoordinator/render/renderAxisLabels.d.ts +40 -0
  48. package/dist/core/renderCoordinator/render/renderAxisLabels.d.ts.map +1 -0
  49. package/dist/core/renderCoordinator/render/renderOverlays.d.ts +70 -0
  50. package/dist/core/renderCoordinator/render/renderOverlays.d.ts.map +1 -0
  51. package/dist/core/renderCoordinator/render/renderSeries.d.ts +146 -0
  52. package/dist/core/renderCoordinator/render/renderSeries.d.ts.map +1 -0
  53. package/dist/core/renderCoordinator/renderers/rendererPool.d.ts +112 -0
  54. package/dist/core/renderCoordinator/renderers/rendererPool.d.ts.map +1 -0
  55. package/dist/core/renderCoordinator/types.d.ts +19 -0
  56. package/dist/core/renderCoordinator/types.d.ts.map +1 -0
  57. package/dist/core/renderCoordinator/ui/tooltipLegendHelpers.d.ts +104 -0
  58. package/dist/core/renderCoordinator/ui/tooltipLegendHelpers.d.ts.map +1 -0
  59. package/dist/core/renderCoordinator/utils/axisUtils.d.ts +122 -0
  60. package/dist/core/renderCoordinator/utils/axisUtils.d.ts.map +1 -0
  61. package/dist/core/renderCoordinator/utils/boundsComputation.d.ts +69 -0
  62. package/dist/core/renderCoordinator/utils/boundsComputation.d.ts.map +1 -0
  63. package/dist/core/renderCoordinator/utils/canvasUtils.d.ts +52 -0
  64. package/dist/core/renderCoordinator/utils/canvasUtils.d.ts.map +1 -0
  65. package/dist/core/renderCoordinator/utils/dataPointUtils.d.ts +71 -0
  66. package/dist/core/renderCoordinator/utils/dataPointUtils.d.ts.map +1 -0
  67. package/dist/core/renderCoordinator/utils/index.d.ts +12 -0
  68. package/dist/core/renderCoordinator/utils/index.d.ts.map +1 -0
  69. package/dist/core/renderCoordinator/utils/timeAxisUtils.d.ts +149 -0
  70. package/dist/core/renderCoordinator/utils/timeAxisUtils.d.ts.map +1 -0
  71. package/dist/core/renderCoordinator/zoom/zoomHelpers.d.ts +129 -0
  72. package/dist/core/renderCoordinator/zoom/zoomHelpers.d.ts.map +1 -0
  73. package/dist/data/cartesianData.d.ts +72 -0
  74. package/dist/data/cartesianData.d.ts.map +1 -0
  75. package/dist/data/createDataStore.d.ts +27 -0
  76. package/dist/data/createDataStore.d.ts.map +1 -0
  77. package/dist/data/createStreamBuffer.d.ts +20 -0
  78. package/dist/data/createStreamBuffer.d.ts.map +1 -0
  79. package/dist/data/lttbSample.d.ts +5 -0
  80. package/dist/data/lttbSample.d.ts.map +1 -0
  81. package/dist/data/ohlcSample.d.ts +21 -0
  82. package/dist/data/ohlcSample.d.ts.map +1 -0
  83. package/dist/data/packDataPoints.d.ts +65 -0
  84. package/dist/data/packDataPoints.d.ts.map +1 -0
  85. package/dist/data/sampleSeries.d.ts +20 -0
  86. package/dist/data/sampleSeries.d.ts.map +1 -0
  87. package/dist/esm/ChartGPUWorkerController-B50J-8sx.js +772 -0
  88. package/dist/esm/ChartGPUWorkerController-B50J-8sx.js.map +1 -0
  89. package/dist/esm/OptionResolver-R_gJDRSD.js +7150 -0
  90. package/dist/esm/OptionResolver-R_gJDRSD.js.map +1 -0
  91. package/dist/esm/assets/worker-entry-Wg897auv.js +779 -0
  92. package/dist/esm/assets/worker-entry-Wg897auv.js.map +1 -0
  93. package/dist/esm/createChartInWorker-C4fEeJL8.js +1224 -0
  94. package/dist/esm/createChartInWorker-C4fEeJL8.js.map +1 -0
  95. package/dist/esm/index.js +795 -0
  96. package/dist/esm/index.js.map +1 -0
  97. package/dist/index.cjs +1270 -0
  98. package/dist/index.cjs.map +1 -0
  99. package/dist/index.d.ts +30 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +10504 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/interaction/createAnnotationAuthoring.d.ts +115 -0
  104. package/dist/interaction/createAnnotationAuthoring.d.ts.map +1 -0
  105. package/dist/interaction/createAnnotationDragHandler.d.ts +28 -0
  106. package/dist/interaction/createAnnotationDragHandler.d.ts.map +1 -0
  107. package/dist/interaction/createAnnotationHitTester.d.ts +32 -0
  108. package/dist/interaction/createAnnotationHitTester.d.ts.map +1 -0
  109. package/dist/interaction/createChartSync.d.ts +27 -0
  110. package/dist/interaction/createChartSync.d.ts.map +1 -0
  111. package/dist/interaction/createEventManager.d.ts +24 -0
  112. package/dist/interaction/createEventManager.d.ts.map +1 -0
  113. package/dist/interaction/createHoverState.d.ts +20 -0
  114. package/dist/interaction/createHoverState.d.ts.map +1 -0
  115. package/dist/interaction/createInsideZoom.d.ts +14 -0
  116. package/dist/interaction/createInsideZoom.d.ts.map +1 -0
  117. package/dist/interaction/createZoomState.d.ts +63 -0
  118. package/dist/interaction/createZoomState.d.ts.map +1 -0
  119. package/dist/interaction/findCandlestick.d.ts +41 -0
  120. package/dist/interaction/findCandlestick.d.ts.map +1 -0
  121. package/dist/interaction/findNearestPoint.d.ts +61 -0
  122. package/dist/interaction/findNearestPoint.d.ts.map +1 -0
  123. package/dist/interaction/findPieSlice.d.ts +36 -0
  124. package/dist/interaction/findPieSlice.d.ts.map +1 -0
  125. package/dist/interaction/findPointsAtX.d.ts +37 -0
  126. package/dist/interaction/findPointsAtX.d.ts.map +1 -0
  127. package/dist/renderers/createAnnotationMarkerRenderer.d.ts +58 -0
  128. package/dist/renderers/createAnnotationMarkerRenderer.d.ts.map +1 -0
  129. package/dist/renderers/createAreaRenderer.d.ts +19 -0
  130. package/dist/renderers/createAreaRenderer.d.ts.map +1 -0
  131. package/dist/renderers/createAxisRenderer.d.ts +19 -0
  132. package/dist/renderers/createAxisRenderer.d.ts.map +1 -0
  133. package/dist/renderers/createBarRenderer.d.ts +20 -0
  134. package/dist/renderers/createBarRenderer.d.ts.map +1 -0
  135. package/dist/renderers/createCandlestickRenderer.d.ts +19 -0
  136. package/dist/renderers/createCandlestickRenderer.d.ts.map +1 -0
  137. package/dist/renderers/createCrosshairRenderer.d.ts +43 -0
  138. package/dist/renderers/createCrosshairRenderer.d.ts.map +1 -0
  139. package/dist/renderers/createGridRenderer.d.ts +45 -0
  140. package/dist/renderers/createGridRenderer.d.ts.map +1 -0
  141. package/dist/renderers/createHighlightRenderer.d.ts +41 -0
  142. package/dist/renderers/createHighlightRenderer.d.ts.map +1 -0
  143. package/dist/renderers/createLineRenderer.d.ts +18 -0
  144. package/dist/renderers/createLineRenderer.d.ts.map +1 -0
  145. package/dist/renderers/createPieRenderer.d.ts +18 -0
  146. package/dist/renderers/createPieRenderer.d.ts.map +1 -0
  147. package/dist/renderers/createReferenceLineRenderer.d.ts +81 -0
  148. package/dist/renderers/createReferenceLineRenderer.d.ts.map +1 -0
  149. package/dist/renderers/createScatterDensityRenderer.d.ts +14 -0
  150. package/dist/renderers/createScatterDensityRenderer.d.ts.map +1 -0
  151. package/dist/renderers/createScatterRenderer.d.ts +20 -0
  152. package/dist/renderers/createScatterRenderer.d.ts.map +1 -0
  153. package/dist/renderers/rendererUtils.d.ts +100 -0
  154. package/dist/renderers/rendererUtils.d.ts.map +1 -0
  155. package/dist/themes/darkTheme.d.ts +11 -0
  156. package/dist/themes/darkTheme.d.ts.map +1 -0
  157. package/dist/themes/index.d.ts +8 -0
  158. package/dist/themes/index.d.ts.map +1 -0
  159. package/dist/themes/lightTheme.d.ts +11 -0
  160. package/dist/themes/lightTheme.d.ts.map +1 -0
  161. package/dist/themes/types.d.ts +14 -0
  162. package/dist/themes/types.d.ts.map +1 -0
  163. package/dist/types/ChartGPU.d.ts +99 -0
  164. package/dist/types/ChartGPU.d.ts.map +1 -0
  165. package/dist/types/components/createDataZoomSlider.d.ts +14 -0
  166. package/dist/types/components/createDataZoomSlider.d.ts.map +1 -0
  167. package/dist/types/components/createLegend.d.ts +9 -0
  168. package/dist/types/components/createLegend.d.ts.map +1 -0
  169. package/dist/types/components/createTextOverlay.d.ts +17 -0
  170. package/dist/types/components/createTextOverlay.d.ts.map +1 -0
  171. package/dist/types/components/createTooltip.d.ts +12 -0
  172. package/dist/types/components/createTooltip.d.ts.map +1 -0
  173. package/dist/types/components/formatTooltip.d.ts +19 -0
  174. package/dist/types/components/formatTooltip.d.ts.map +1 -0
  175. package/dist/types/config/OptionResolver.d.ts +134 -0
  176. package/dist/types/config/OptionResolver.d.ts.map +1 -0
  177. package/dist/types/config/defaults.d.ts +55 -0
  178. package/dist/types/config/defaults.d.ts.map +1 -0
  179. package/dist/types/config/types.d.ts +485 -0
  180. package/dist/types/config/types.d.ts.map +1 -0
  181. package/dist/types/core/GPUContext.d.ts +242 -0
  182. package/dist/types/core/GPUContext.d.ts.map +1 -0
  183. package/dist/types/core/RenderScheduler.d.ts +174 -0
  184. package/dist/types/core/RenderScheduler.d.ts.map +1 -0
  185. package/dist/types/core/createAnimationController.d.ts +15 -0
  186. package/dist/types/core/createAnimationController.d.ts.map +1 -0
  187. package/dist/types/core/createRenderCoordinator.d.ts +129 -0
  188. package/dist/types/core/createRenderCoordinator.d.ts.map +1 -0
  189. package/dist/types/data/createDataStore.d.ts +33 -0
  190. package/dist/types/data/createDataStore.d.ts.map +1 -0
  191. package/dist/types/data/createStreamBuffer.d.ts +20 -0
  192. package/dist/types/data/createStreamBuffer.d.ts.map +1 -0
  193. package/dist/types/data/lttbSample.d.ts +5 -0
  194. package/dist/types/data/lttbSample.d.ts.map +1 -0
  195. package/dist/types/data/ohlcSample.d.ts +21 -0
  196. package/dist/types/data/ohlcSample.d.ts.map +1 -0
  197. package/dist/types/data/packDataPoints.d.ts +79 -0
  198. package/dist/types/data/packDataPoints.d.ts.map +1 -0
  199. package/dist/types/data/sampleSeries.d.ts +3 -0
  200. package/dist/types/data/sampleSeries.d.ts.map +1 -0
  201. package/dist/types/index.d.ts +35 -0
  202. package/dist/types/index.d.ts.map +1 -0
  203. package/dist/types/interaction/createChartSync.d.ts +12 -0
  204. package/dist/types/interaction/createChartSync.d.ts.map +1 -0
  205. package/dist/types/interaction/createEventManager.d.ts +24 -0
  206. package/dist/types/interaction/createEventManager.d.ts.map +1 -0
  207. package/dist/types/interaction/createHoverState.d.ts +20 -0
  208. package/dist/types/interaction/createHoverState.d.ts.map +1 -0
  209. package/dist/types/interaction/createInsideZoom.d.ts +14 -0
  210. package/dist/types/interaction/createInsideZoom.d.ts.map +1 -0
  211. package/dist/types/interaction/createZoomState.d.ts +63 -0
  212. package/dist/types/interaction/createZoomState.d.ts.map +1 -0
  213. package/dist/types/interaction/findCandlestick.d.ts +41 -0
  214. package/dist/types/interaction/findCandlestick.d.ts.map +1 -0
  215. package/dist/types/interaction/findNearestPoint.d.ts +61 -0
  216. package/dist/types/interaction/findNearestPoint.d.ts.map +1 -0
  217. package/dist/types/interaction/findPieSlice.d.ts +36 -0
  218. package/dist/types/interaction/findPieSlice.d.ts.map +1 -0
  219. package/dist/types/interaction/findPointsAtX.d.ts +37 -0
  220. package/dist/types/interaction/findPointsAtX.d.ts.map +1 -0
  221. package/dist/types/renderers/createAreaRenderer.d.ts +18 -0
  222. package/dist/types/renderers/createAreaRenderer.d.ts.map +1 -0
  223. package/dist/types/renderers/createAxisRenderer.d.ts +19 -0
  224. package/dist/types/renderers/createAxisRenderer.d.ts.map +1 -0
  225. package/dist/types/renderers/createBarRenderer.d.ts +20 -0
  226. package/dist/types/renderers/createBarRenderer.d.ts.map +1 -0
  227. package/dist/types/renderers/createCandlestickRenderer.d.ts +19 -0
  228. package/dist/types/renderers/createCandlestickRenderer.d.ts.map +1 -0
  229. package/dist/types/renderers/createCrosshairRenderer.d.ts +43 -0
  230. package/dist/types/renderers/createCrosshairRenderer.d.ts.map +1 -0
  231. package/dist/types/renderers/createGridRenderer.d.ts +45 -0
  232. package/dist/types/renderers/createGridRenderer.d.ts.map +1 -0
  233. package/dist/types/renderers/createHighlightRenderer.d.ts +41 -0
  234. package/dist/types/renderers/createHighlightRenderer.d.ts.map +1 -0
  235. package/dist/types/renderers/createLineRenderer.d.ts +18 -0
  236. package/dist/types/renderers/createLineRenderer.d.ts.map +1 -0
  237. package/dist/types/renderers/createPieRenderer.d.ts +18 -0
  238. package/dist/types/renderers/createPieRenderer.d.ts.map +1 -0
  239. package/dist/types/renderers/createScatterDensityRenderer.d.ts +14 -0
  240. package/dist/types/renderers/createScatterDensityRenderer.d.ts.map +1 -0
  241. package/dist/types/renderers/createScatterRenderer.d.ts +19 -0
  242. package/dist/types/renderers/createScatterRenderer.d.ts.map +1 -0
  243. package/dist/types/renderers/rendererUtils.d.ts +100 -0
  244. package/dist/types/renderers/rendererUtils.d.ts.map +1 -0
  245. package/dist/types/themes/darkTheme.d.ts +11 -0
  246. package/dist/types/themes/darkTheme.d.ts.map +1 -0
  247. package/dist/types/themes/index.d.ts +8 -0
  248. package/dist/types/themes/index.d.ts.map +1 -0
  249. package/dist/types/themes/lightTheme.d.ts +11 -0
  250. package/dist/types/themes/lightTheme.d.ts.map +1 -0
  251. package/dist/types/themes/types.d.ts +14 -0
  252. package/dist/types/themes/types.d.ts.map +1 -0
  253. package/dist/types/utils/axisLabelStyling.d.ts +27 -0
  254. package/dist/types/utils/axisLabelStyling.d.ts.map +1 -0
  255. package/dist/types/utils/checkWebGPU.d.ts +39 -0
  256. package/dist/types/utils/checkWebGPU.d.ts.map +1 -0
  257. package/dist/types/utils/colors.d.ts +14 -0
  258. package/dist/types/utils/colors.d.ts.map +1 -0
  259. package/dist/types/utils/easing.d.ts +9 -0
  260. package/dist/types/utils/easing.d.ts.map +1 -0
  261. package/dist/types/utils/scales.d.ts +79 -0
  262. package/dist/types/utils/scales.d.ts.map +1 -0
  263. package/dist/utils/axisLabelStyling.d.ts +20 -0
  264. package/dist/utils/axisLabelStyling.d.ts.map +1 -0
  265. package/dist/utils/checkWebGPU.d.ts +39 -0
  266. package/dist/utils/checkWebGPU.d.ts.map +1 -0
  267. package/dist/utils/colors.d.ts +14 -0
  268. package/dist/utils/colors.d.ts.map +1 -0
  269. package/dist/utils/easing.d.ts +9 -0
  270. package/dist/utils/easing.d.ts.map +1 -0
  271. package/dist/utils/scales.d.ts +79 -0
  272. package/dist/utils/scales.d.ts.map +1 -0
  273. package/package.json +64 -0
@@ -0,0 +1,43 @@
1
+ import type { GridArea } from './createGridRenderer';
2
+ export interface CrosshairRenderOptions {
3
+ /** Whether to render the vertical crosshair line. */
4
+ readonly showX: boolean;
5
+ /** Whether to render the horizontal crosshair line. */
6
+ readonly showY: boolean;
7
+ /** CSS color string for the crosshair lines. */
8
+ readonly color: string;
9
+ /**
10
+ * Desired line width in CSS pixels.
11
+ *
12
+ * Note: WebGPU wide lines are not reliably supported; the renderer emulates thickness by
13
+ * drawing multiple 1px lines in device-pixel offsets (best-effort, deterministic).
14
+ */
15
+ readonly lineWidth: number;
16
+ }
17
+ export interface CrosshairRenderer {
18
+ /**
19
+ * Positions the crosshair for rendering.
20
+ *
21
+ * Coordinate contract:
22
+ * - `x`, `y` are CANVAS-LOCAL CSS pixels (e.g. eventManager payload x/y)
23
+ * - `gridArea` margins are CSS pixels; `gridArea.canvasWidth/Height` are device pixels
24
+ */
25
+ prepare(x: number, y: number, gridArea: GridArea, options: CrosshairRenderOptions): void;
26
+ /** Draws the crosshair (if visible) clipped to the plot rect. */
27
+ render(passEncoder: GPURenderPassEncoder): void;
28
+ /** Shows/hides the crosshair without destroying GPU resources. */
29
+ setVisible(visible: boolean): void;
30
+ /** Cleans up GPU resources (best-effort). */
31
+ dispose(): void;
32
+ }
33
+ export interface CrosshairRendererOptions {
34
+ /**
35
+ * Must match the canvas context format used for the render pass color attachment.
36
+ * Usually this is `gpuContext.preferredFormat`.
37
+ *
38
+ * Defaults to `'bgra8unorm'` for backward compatibility.
39
+ */
40
+ readonly targetFormat?: GPUTextureFormat;
41
+ }
42
+ export declare function createCrosshairRenderer(device: GPUDevice, options?: CrosshairRendererOptions): CrosshairRenderer;
43
+ //# sourceMappingURL=createCrosshairRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCrosshairRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/createCrosshairRenderer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACrC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACzF,iEAAiE;IACjE,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,kEAAkE;IAClE,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,6CAA6C;IAC7C,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAgND,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,iBAAiB,CA+IhH"}
@@ -0,0 +1,45 @@
1
+ export interface GridRenderer {
2
+ /**
3
+ * Backward compatible:
4
+ * - `prepare(gridArea, lineCount)` where `lineCount` is `{ horizontal?, vertical? }`
5
+ *
6
+ * Preferred:
7
+ * - `prepare(gridArea, { lineCount, color })`
8
+ */
9
+ prepare(gridArea: GridArea, lineCountOrOptions?: GridLineCount | GridPrepareOptions): void;
10
+ render(passEncoder: GPURenderPassEncoder): void;
11
+ dispose(): void;
12
+ }
13
+ export interface GridArea {
14
+ readonly left: number;
15
+ readonly right: number;
16
+ readonly top: number;
17
+ readonly bottom: number;
18
+ readonly canvasWidth: number;
19
+ readonly canvasHeight: number;
20
+ readonly devicePixelRatio: number;
21
+ }
22
+ export interface GridLineCount {
23
+ readonly horizontal?: number;
24
+ readonly vertical?: number;
25
+ }
26
+ export interface GridPrepareOptions {
27
+ readonly lineCount?: GridLineCount;
28
+ /**
29
+ * CSS color string used for grid lines.
30
+ *
31
+ * Expected formats: `#rgb`, `#rrggbb`, `#rrggbbaa`, `rgb(r,g,b)`, `rgba(r,g,b,a)`.
32
+ */
33
+ readonly color?: string;
34
+ }
35
+ export interface GridRendererOptions {
36
+ /**
37
+ * Must match the canvas context format used for the render pass color attachment.
38
+ * Usually this is `gpuContext.preferredFormat`.
39
+ *
40
+ * Defaults to `'bgra8unorm'` for backward compatibility.
41
+ */
42
+ readonly targetFormat?: GPUTextureFormat;
43
+ }
44
+ export declare function createGridRenderer(device: GPUDevice, options?: GridRendererOptions): GridRenderer;
45
+ //# sourceMappingURL=createGridRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createGridRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/createGridRenderer.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,CAAC,EAAE,aAAa,GAAG,kBAAkB,GAAG,IAAI,CAAC;IAC3F,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAoFD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,CAmLjG"}
@@ -0,0 +1,41 @@
1
+ export type HighlightPoint = Readonly<{
2
+ /** Center in *device pixels* (same coordinate space as fragment `@builtin(position)`). */
3
+ centerDeviceX: number;
4
+ centerDeviceY: number;
5
+ /** Device pixel ratio used for CSS→device conversion (worker-safe). */
6
+ devicePixelRatio: number;
7
+ /** Canvas dimensions in *device pixels* (used to reset scissor). */
8
+ canvasWidth: number;
9
+ canvasHeight: number;
10
+ /** Plot scissor rect in *device pixels*. */
11
+ scissor: Readonly<{
12
+ x: number;
13
+ y: number;
14
+ w: number;
15
+ h: number;
16
+ }>;
17
+ }>;
18
+ export interface HighlightRenderer {
19
+ /**
20
+ * Prepares the highlight ring.
21
+ *
22
+ * Coordinate contract:
23
+ * - `point.centerDeviceX/Y` are device pixels in the same space as fragment `@builtin(position)`.
24
+ * - `size` is specified in CSS pixels; the renderer will scale it by `point.devicePixelRatio`.
25
+ */
26
+ prepare(point: HighlightPoint, color: string, size: number): void;
27
+ render(passEncoder: GPURenderPassEncoder): void;
28
+ setVisible(visible: boolean): void;
29
+ dispose(): void;
30
+ }
31
+ export interface HighlightRendererOptions {
32
+ /**
33
+ * Must match the canvas context format used for the render pass color attachment.
34
+ * Usually this is `gpuContext.preferredFormat`.
35
+ *
36
+ * Defaults to `'bgra8unorm'` for backward compatibility.
37
+ */
38
+ readonly targetFormat?: GPUTextureFormat;
39
+ }
40
+ export declare function createHighlightRenderer(device: GPUDevice, options?: HighlightRendererOptions): HighlightRenderer;
41
+ //# sourceMappingURL=createHighlightRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createHighlightRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/createHighlightRenderer.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,0FAA0F;IAC1F,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IAEtB,uEAAuE;IACvE,gBAAgB,EAAE,MAAM,CAAC;IAEzB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IAErB,4CAA4C;IAC5C,OAAO,EAAE,QAAQ,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE,CAAC,CAAC;AAEH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAClE,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAmBD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,iBAAiB,CA6IhH"}
@@ -0,0 +1,18 @@
1
+ import type { ResolvedLineSeriesConfig } from '../config/OptionResolver';
2
+ import type { LinearScale } from '../utils/scales';
3
+ export interface LineRenderer {
4
+ prepare(seriesConfig: ResolvedLineSeriesConfig, dataBuffer: GPUBuffer, xScale: LinearScale, yScale: LinearScale): void;
5
+ render(passEncoder: GPURenderPassEncoder): void;
6
+ dispose(): void;
7
+ }
8
+ export interface LineRendererOptions {
9
+ /**
10
+ * Must match the canvas context format used for the render pass color attachment.
11
+ * Usually this is `gpuContext.preferredFormat`.
12
+ *
13
+ * Defaults to `'bgra8unorm'` for backward compatibility.
14
+ */
15
+ readonly targetFormat?: GPUTextureFormat;
16
+ }
17
+ export declare function createLineRenderer(device: GPUDevice, options?: LineRendererOptions): LineRenderer;
18
+ //# sourceMappingURL=createLineRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLineRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/createLineRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,YAAY,EAAE,wBAAwB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACvH,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAqFD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,CAmHjG"}
@@ -0,0 +1,18 @@
1
+ import type { ResolvedPieSeriesConfig } from '../config/OptionResolver';
2
+ import type { GridArea } from './createGridRenderer';
3
+ export interface PieRenderer {
4
+ prepare(seriesConfig: ResolvedPieSeriesConfig, gridArea: GridArea): void;
5
+ render(passEncoder: GPURenderPassEncoder): void;
6
+ dispose(): void;
7
+ }
8
+ export interface PieRendererOptions {
9
+ /**
10
+ * Must match the canvas context format used for the render pass color attachment.
11
+ * Usually this is `gpuContext.preferredFormat`.
12
+ *
13
+ * Defaults to `'bgra8unorm'` for backward compatibility.
14
+ */
15
+ readonly targetFormat?: GPUTextureFormat;
16
+ }
17
+ export declare function createPieRenderer(device: GPUDevice, options?: PieRendererOptions): PieRenderer;
18
+ //# sourceMappingURL=createPieRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPieRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/createPieRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,YAAY,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzE,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAgID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAqR9F"}
@@ -0,0 +1,14 @@
1
+ import type { RawBounds, ResolvedScatterSeriesConfig } from '../config/OptionResolver';
2
+ import type { LinearScale } from '../utils/scales';
3
+ import type { GridArea } from './createGridRenderer';
4
+ export interface ScatterDensityRenderer {
5
+ prepare(seriesConfig: ResolvedScatterSeriesConfig, pointBuffer: GPUBuffer, pointCount: number, visibleStartIndex: number, visibleEndIndex: number, xScale: LinearScale, yScale: LinearScale, gridArea: GridArea, rawBounds?: RawBounds): void;
6
+ encodeCompute(encoder: GPUCommandEncoder): void;
7
+ render(passEncoder: GPURenderPassEncoder): void;
8
+ dispose(): void;
9
+ }
10
+ export interface ScatterDensityRendererOptions {
11
+ readonly targetFormat?: GPUTextureFormat;
12
+ }
13
+ export declare function createScatterDensityRenderer(device: GPUDevice, options?: ScatterDensityRendererOptions): ScatterDensityRenderer;
14
+ //# sourceMappingURL=createScatterDensityRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createScatterDensityRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/createScatterDensityRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,sBAAsB;IACrC,OAAO,CACL,YAAY,EAAE,2BAA2B,EACzC,WAAW,EAAE,SAAS,EACtB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,QAAQ,EAClB,SAAS,CAAC,EAAE,SAAS,GACpB,IAAI,CAAC;IACR,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAChD,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAuID,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,6BAA6B,GACtC,sBAAsB,CAsZxB"}
@@ -0,0 +1,19 @@
1
+ import type { ResolvedScatterSeriesConfig } from '../config/OptionResolver';
2
+ import type { LinearScale } from '../utils/scales';
3
+ import type { GridArea } from './createGridRenderer';
4
+ export interface ScatterRenderer {
5
+ prepare(seriesConfig: ResolvedScatterSeriesConfig, data: ResolvedScatterSeriesConfig['data'], xScale: LinearScale, yScale: LinearScale, gridArea?: GridArea): void;
6
+ render(passEncoder: GPURenderPassEncoder): void;
7
+ dispose(): void;
8
+ }
9
+ export interface ScatterRendererOptions {
10
+ /**
11
+ * Must match the canvas context format used for the render pass color attachment.
12
+ * Usually this is `gpuContext.preferredFormat`.
13
+ *
14
+ * Defaults to `'bgra8unorm'` for backward compatibility.
15
+ */
16
+ readonly targetFormat?: GPUTextureFormat;
17
+ }
18
+ export declare function createScatterRenderer(device: GPUDevice, options?: ScatterRendererOptions): ScatterRenderer;
19
+ //# sourceMappingURL=createScatterRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createScatterRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/createScatterRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAE5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,eAAe;IAC9B,OAAO,CACL,YAAY,EAAE,2BAA2B,EACzC,IAAI,EAAE,2BAA2B,CAAC,MAAM,CAAC,EACzC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,QAAQ,GAClB,IAAI,CAAC;IACR,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAgID,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,eAAe,CA6O1G"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Shared renderer utilities.
3
+ *
4
+ * Minimal, library-friendly helpers for common WebGPU boilerplate:
5
+ * - shader module creation
6
+ * - render pipeline creation (ergonomic config + sensible defaults)
7
+ * - uniform buffer creation + updates
8
+ *
9
+ * Notes:
10
+ * - All helpers are pure functions; they create resources but do not mutate external state.
11
+ * - First argument is always `device: GPUDevice`.
12
+ */
13
+ export type ShaderStageModuleSource = {
14
+ /** Use an existing module. */
15
+ readonly module: GPUShaderModule;
16
+ readonly entryPoint?: string;
17
+ readonly constants?: Record<string, GPUPipelineConstantValue>;
18
+ } | {
19
+ /** Provide WGSL code to compile. */
20
+ readonly code: string;
21
+ readonly label?: string;
22
+ readonly entryPoint?: string;
23
+ readonly constants?: Record<string, GPUPipelineConstantValue>;
24
+ };
25
+ export type VertexStageConfig = ShaderStageModuleSource & {
26
+ readonly buffers?: readonly GPUVertexBufferLayout[];
27
+ };
28
+ export type FragmentStageConfig = ShaderStageModuleSource & {
29
+ /**
30
+ * Provide full color target states directly (most flexible).
31
+ * If omitted, `formats` must be provided.
32
+ */
33
+ readonly targets?: readonly GPUColorTargetState[];
34
+ /**
35
+ * Convenience: provide one or more target formats and optionally a shared blend/writeMask.
36
+ * Ignored if `targets` is provided.
37
+ */
38
+ readonly formats?: GPUTextureFormat | readonly GPUTextureFormat[];
39
+ readonly blend?: GPUBlendState;
40
+ readonly writeMask?: GPUColorWriteFlags;
41
+ };
42
+ export type RenderPipelineConfig = (RenderPipelineConfigBase & {
43
+ readonly fragment: FragmentStageConfig;
44
+ }) | (RenderPipelineConfigBase & {
45
+ readonly fragment?: undefined;
46
+ });
47
+ export interface RenderPipelineConfigBase {
48
+ readonly label?: string;
49
+ /**
50
+ * Defaults to `'auto'`.
51
+ *
52
+ * If you provide `bindGroupLayouts`, a pipeline layout will be created for you.
53
+ * If both are provided, `layout` wins.
54
+ */
55
+ readonly layout?: GPUPipelineLayout | 'auto';
56
+ readonly bindGroupLayouts?: readonly GPUBindGroupLayout[];
57
+ readonly vertex: VertexStageConfig;
58
+ readonly primitive?: GPUPrimitiveState;
59
+ readonly depthStencil?: GPUDepthStencilState;
60
+ readonly multisample?: GPUMultisampleState;
61
+ }
62
+ /**
63
+ * Creates a shader module from WGSL source.
64
+ */
65
+ export declare function createShaderModule(device: GPUDevice, code: string, label?: string): GPUShaderModule;
66
+ /**
67
+ * Creates a render pipeline with reduced boilerplate and sensible defaults.
68
+ *
69
+ * Defaults:
70
+ * - `layout: 'auto'`
71
+ * - `vertex.entryPoint: 'vsMain'`
72
+ * - `fragment.entryPoint: 'fsMain'` (if fragment present)
73
+ * - `primitive.topology: 'triangle-list'`
74
+ * - `multisample.count: 1`
75
+ */
76
+ export declare function createRenderPipeline(device: GPUDevice, config: RenderPipelineConfig): GPURenderPipeline;
77
+ /**
78
+ * Creates a uniform buffer suitable for `@group/@binding` uniform bindings.
79
+ *
80
+ * Notes:
81
+ * - WebGPU's `queue.writeBuffer()` requires `byteLength` and offsets to be multiples of 4.
82
+ * - Uniform data layout in WGSL is typically aligned to 16 bytes; we default to a 16-byte size alignment.
83
+ * - If you plan to use this buffer with *dynamic offsets*, you must additionally align offsets to
84
+ * `device.limits.minUniformBufferOffsetAlignment` (commonly 256). This helper does not enforce that.
85
+ */
86
+ export declare function createUniformBuffer(device: GPUDevice, size: number, options?: {
87
+ readonly label?: string;
88
+ readonly alignment?: number;
89
+ }): GPUBuffer;
90
+ /**
91
+ * Writes CPU data into a uniform buffer (default offset 0).
92
+ *
93
+ * `data` must be a `BufferSource`:
94
+ * - `ArrayBuffer` or `ArrayBufferView` (TypedArray/DataView)
95
+ *
96
+ * Important WebGPU constraint:
97
+ * - `queue.writeBuffer()` requires write size (and offsets) to be multiples of 4 bytes.
98
+ */
99
+ export declare function writeUniformBuffer(device: GPUDevice, buffer: GPUBuffer, data: BufferSource): void;
100
+ //# sourceMappingURL=rendererUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendererUtils.d.ts","sourceRoot":"","sources":["../../../src/renderers/rendererUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,uBAAuB,GAC/B;IACE,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;CAC/D,GACD;IACE,oCAAoC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;CAC/D,CAAC;AAEN,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG;IAC1D;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,gBAAgB,EAAE,CAAC;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,CAAC,wBAAwB,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAA;CAAE,CAAC,GACvE,CAAC,wBAAwB,GAAG;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAEnE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAE1D,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEnC,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAqCD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,CAKnG;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,GAAG,iBAAiB,CAsDvG;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE,SAAS,CAoBX;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAmBjG"}
@@ -0,0 +1,11 @@
1
+ export declare const darkTheme: {
2
+ backgroundColor: string;
3
+ textColor: string;
4
+ axisLineColor: string;
5
+ axisTickColor: string;
6
+ gridLineColor: string;
7
+ colorPalette: ("#00E5FF" | "#FF2D95" | "#B026FF" | "#00F5A0" | "#FFD300" | "#FF6B00" | "#4D5BFF" | "#FF3D3D")[];
8
+ fontFamily: string;
9
+ fontSize: number;
10
+ };
11
+ //# sourceMappingURL=darkTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"darkTheme.d.ts","sourceRoot":"","sources":["../../../src/themes/darkTheme.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,SAAS;;;;;;;;;CAUC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ThemeConfig } from './types';
2
+ import { darkTheme } from './darkTheme';
3
+ import { lightTheme } from './lightTheme';
4
+ export { darkTheme, lightTheme };
5
+ export type { ThemeConfig };
6
+ export type ThemeName = 'dark' | 'light';
7
+ export declare function getTheme(name: ThemeName): ThemeConfig;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACjC,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,CAErD"}
@@ -0,0 +1,11 @@
1
+ export declare const lightTheme: {
2
+ backgroundColor: string;
3
+ textColor: string;
4
+ axisLineColor: string;
5
+ axisTickColor: string;
6
+ gridLineColor: string;
7
+ colorPalette: ("#1F77B4" | "#FF7F0E" | "#2CA02C" | "#D62728" | "#9467BD" | "#8C564B" | "#E377C2" | "#17BECF")[];
8
+ fontFamily: string;
9
+ fontSize: number;
10
+ };
11
+ //# sourceMappingURL=lightTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lightTheme.d.ts","sourceRoot":"","sources":["../../../src/themes/lightTheme.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,UAAU;;;;;;;;;CAUA,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Theme configuration types (Phase 2.5).
3
+ */
4
+ export interface ThemeConfig {
5
+ readonly backgroundColor: string;
6
+ readonly textColor: string;
7
+ readonly axisLineColor: string;
8
+ readonly axisTickColor: string;
9
+ readonly gridLineColor: string;
10
+ readonly colorPalette: string[];
11
+ readonly fontFamily: string;
12
+ readonly fontSize: number;
13
+ }
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/themes/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Shared axis label styling utilities.
3
+ * Ensures consistent styling between main thread (DOM overlay) and worker thread rendering.
4
+ */
5
+ import type { AxisLabel } from '../config/types.js';
6
+ import type { TextOverlay } from '../components/createTextOverlay.js';
7
+ /**
8
+ * Theme configuration for axis labels.
9
+ */
10
+ export interface AxisLabelThemeConfig {
11
+ readonly fontSize: number;
12
+ readonly fontFamily: string;
13
+ readonly textColor: string;
14
+ }
15
+ /**
16
+ * Calculates the font size for axis titles (larger than regular tick labels).
17
+ */
18
+ export declare function getAxisTitleFontSize(baseFontSize: number): number;
19
+ /**
20
+ * Applies consistent styling to an axis label span element.
21
+ */
22
+ export declare function styleAxisLabelSpan(span: HTMLSpanElement, label: AxisLabel, theme: AxisLabelThemeConfig): void;
23
+ /**
24
+ * Adds axis labels to a text overlay with consistent styling.
25
+ */
26
+ export declare function addAxisLabelsToOverlay(overlay: TextOverlay, xLabels: readonly AxisLabel[], yLabels: readonly AxisLabel[], theme: AxisLabelThemeConfig): void;
27
+ //# sourceMappingURL=axisLabelStyling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axisLabelStyling.d.ts","sourceRoot":"","sources":["../../../src/utils/axisLabelStyling.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,oBAAoB,GAC1B,IAAI,CASN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,KAAK,EAAE,oBAAoB,GAC1B,IAAI,CA2BN"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * WebGPU support detection and validation
3
+ *
4
+ * Provides utilities to check if WebGPU is available and usable in the current environment.
5
+ * Results are memoized to avoid redundant checks.
6
+ */
7
+ /**
8
+ * Result of WebGPU support check
9
+ */
10
+ export interface WebGPUSupportResult {
11
+ /** Whether WebGPU is supported and available */
12
+ readonly supported: boolean;
13
+ /** Optional reason explaining why WebGPU is not supported */
14
+ readonly reason?: string;
15
+ }
16
+ /**
17
+ * Checks if WebGPU is supported and available in the current environment.
18
+ *
19
+ * This function performs comprehensive checks:
20
+ * - SSR-safe: validates that window and navigator are available
21
+ * - Checks for navigator.gpu API presence
22
+ * - Attempts to request a WebGPU adapter to verify actual support
23
+ * - First tries high-performance adapter to match GPUContext behavior
24
+ * - Falls back to default adapter if high-performance fails
25
+ *
26
+ * The result is memoized for performance, so multiple calls return the same promise.
27
+ *
28
+ * @returns Promise resolving to support check result with optional reason
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const { supported, reason } = await checkWebGPUSupport();
33
+ * if (!supported) {
34
+ * console.error('WebGPU not available:', reason);
35
+ * }
36
+ * ```
37
+ */
38
+ export declare function checkWebGPUSupport(): Promise<WebGPUSupportResult>;
39
+ //# sourceMappingURL=checkWebGPU.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkWebGPU.d.ts","sourceRoot":"","sources":["../../../src/utils/checkWebGPU.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAKD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CA0EvE"}
@@ -0,0 +1,14 @@
1
+ export type Rgba01 = readonly [r: number, g: number, b: number, a: number];
2
+ /**
3
+ * Parse a CSS color string into RGBA floats in [0..1].
4
+ *
5
+ * Supported:
6
+ * - #rgb / #rgba / #rrggbb / #rrggbbaa
7
+ * - rgb(r,g,b)
8
+ * - rgba(r,g,b,a)
9
+ *
10
+ * Returns null when parsing fails.
11
+ */
12
+ export declare const parseCssColorToRgba01: (color: string) => Rgba01 | null;
13
+ export declare const parseCssColorToGPUColor: (color: string, fallback?: GPUColor) => GPUColor;
14
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../src/utils/colors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAyH3E;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,IAY9D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,OAAO,MAAM,EACb,WAAU,QAAqC,KAC9C,QAKF,CAAC"}
@@ -0,0 +1,9 @@
1
+ export type EasingFunction = (t: number) => number;
2
+ import type { AnimationConfig } from '../config/types';
3
+ export type EasingName = NonNullable<AnimationConfig['easing']>;
4
+ export declare function easeLinear(t: number): number;
5
+ export declare function easeCubicOut(t: number): number;
6
+ export declare function easeCubicInOut(t: number): number;
7
+ export declare function easeBounceOut(t: number): number;
8
+ export declare function getEasing(name: AnimationConfig['easing'] | null | undefined): EasingFunction;
9
+ //# sourceMappingURL=easing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easing.d.ts","sourceRoot":"","sources":["../../../src/utils/easing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;AAShE,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAoB/C;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,SAAS,GACjD,cAAc,CAahB"}
@@ -0,0 +1,79 @@
1
+ export interface LinearScale {
2
+ /**
3
+ * Sets the scale domain (data range). Returns self for chaining.
4
+ */
5
+ domain(min: number, max: number): LinearScale;
6
+ /**
7
+ * Sets the scale range (pixel range). Returns self for chaining.
8
+ */
9
+ range(min: number, max: number): LinearScale;
10
+ /**
11
+ * Maps a domain value to a range value.
12
+ *
13
+ * Notes:
14
+ * - No clamping (will extrapolate outside the domain).
15
+ * - If the domain span is 0 (min === max), returns the midpoint of the range.
16
+ */
17
+ scale(value: number): number;
18
+ /**
19
+ * Maps a range value (pixel) back to a domain value.
20
+ *
21
+ * Notes:
22
+ * - No clamping (will extrapolate outside the range).
23
+ * - If the domain span is 0 (min === max), returns domain min for any input.
24
+ */
25
+ invert(pixel: number): number;
26
+ }
27
+ export interface CategoryScale {
28
+ /**
29
+ * Sets the category domain (ordered list of unique category names).
30
+ * Returns self for chaining.
31
+ *
32
+ * Throws if duplicates exist (ambiguous mapping).
33
+ */
34
+ domain(categories: string[]): CategoryScale;
35
+ /**
36
+ * Sets the scale range (pixel range). Returns self for chaining.
37
+ */
38
+ range(min: number, max: number): CategoryScale;
39
+ /**
40
+ * Returns the center x-position for a category.
41
+ *
42
+ * Edge cases:
43
+ * - Unknown category: returns NaN
44
+ * - Empty domain: returns midpoint of range
45
+ */
46
+ scale(category: string): number;
47
+ /**
48
+ * Width allocated per category (always non-negative).
49
+ *
50
+ * Edge cases:
51
+ * - Empty domain: returns 0
52
+ * - Reversed ranges allowed
53
+ */
54
+ bandwidth(): number;
55
+ /**
56
+ * Returns the index of a category in the current domain.
57
+ *
58
+ * Edge cases:
59
+ * - Unknown category: returns -1
60
+ */
61
+ categoryIndex(category: string): number;
62
+ }
63
+ /**
64
+ * Creates a linear scale for mapping a numeric domain to a numeric range.
65
+ *
66
+ * Defaults to an identity mapping:
67
+ * domain [0, 1] -> range [0, 1]
68
+ */
69
+ export declare function createLinearScale(): LinearScale;
70
+ /**
71
+ * Creates a category scale for mapping string categories to evenly spaced
72
+ * x-positions across a numeric range.
73
+ *
74
+ * Defaults:
75
+ * - domain: []
76
+ * - range: [0, 1]
77
+ */
78
+ export declare function createCategoryScale(): CategoryScale;
79
+ //# sourceMappingURL=scales.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scales.d.ts","sourceRoot":"","sources":["../../../src/utils/scales.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;IAE9C;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;IAE7C;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAE7B;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAE5C;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;IAE/C;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAEhC;;;;;;OAMG;IACH,SAAS,IAAI,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CACzC;AAQD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAmD/C;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CA4DnD"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Shared axis label styling utilities.
3
+ */
4
+ /**
5
+ * Theme configuration for axis labels.
6
+ */
7
+ export interface AxisLabelThemeConfig {
8
+ readonly fontSize: number;
9
+ readonly fontFamily: string;
10
+ readonly textColor: string;
11
+ }
12
+ /**
13
+ * Calculates the font size for axis titles (larger than regular tick labels).
14
+ */
15
+ export declare function getAxisTitleFontSize(baseFontSize: number): number;
16
+ /**
17
+ * Applies consistent styling to an axis label span element.
18
+ */
19
+ export declare function styleAxisLabelSpan(span: HTMLSpanElement, isTitle: boolean, theme: AxisLabelThemeConfig): void;
20
+ //# sourceMappingURL=axisLabelStyling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axisLabelStyling.d.ts","sourceRoot":"","sources":["../../src/utils/axisLabelStyling.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,oBAAoB,GAC1B,IAAI,CASN"}