chartgpu 0.1.0 → 0.1.3

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 (59) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +141 -9
  3. package/dist/ChartGPU.d.ts +5 -3
  4. package/dist/ChartGPU.d.ts.map +1 -1
  5. package/dist/assets/ChartGPU-zgkjfPqp.js +15 -0
  6. package/dist/assets/GPUContext-CgqhC6W6.js +1 -0
  7. package/dist/assets/basic-line-DfRo2Pom.js +1 -0
  8. package/dist/assets/chart-sync-Bjf8c5Oo.js +1 -0
  9. package/dist/assets/createChartSync-BUGadH_x.js +1 -0
  10. package/dist/assets/createDataZoomSlider-DLbAKjVh.js +162 -0
  11. package/dist/assets/data-update-animation-BYhFrQqE.js +1 -0
  12. package/dist/assets/grid-test-6lXNOD1c.js +1 -0
  13. package/dist/assets/grouped-bar-pr-ZGxGI.js +1 -0
  14. package/dist/assets/hello-world-B3dB8WNo.js +9 -0
  15. package/dist/assets/interactive-aPGxN-b-.js +14 -0
  16. package/dist/assets/live-streaming-N4vKWEcJ.js +1 -0
  17. package/dist/assets/million-points-DVnJu39j.js +1 -0
  18. package/dist/assets/pie-BR5SmRvW.js +1 -0
  19. package/dist/assets/pie-c06rKDKR.js +321 -0
  20. package/dist/assets/sampling-F-iafT6-.js +1 -0
  21. package/dist/assets/scales-D-5MHN10.js +37 -0
  22. package/dist/assets/scatter-CVFSpSfu.js +1 -0
  23. package/dist/components/formatTooltip.d.ts +7 -0
  24. package/dist/components/formatTooltip.d.ts.map +1 -1
  25. package/dist/config/OptionResolver.d.ts +21 -2
  26. package/dist/config/OptionResolver.d.ts.map +1 -1
  27. package/dist/config/defaults.d.ts +16 -0
  28. package/dist/config/defaults.d.ts.map +1 -1
  29. package/dist/config/types.d.ts +49 -4
  30. package/dist/config/types.d.ts.map +1 -1
  31. package/dist/core/createRenderCoordinator.d.ts +2 -2
  32. package/dist/core/createRenderCoordinator.d.ts.map +1 -1
  33. package/dist/data/ohlcSample.d.ts +21 -0
  34. package/dist/data/ohlcSample.d.ts.map +1 -0
  35. package/dist/examples/basic-line/index.html +90 -0
  36. package/dist/examples/chart-sync/index.html +102 -0
  37. package/dist/examples/data-update-animation/index.html +193 -0
  38. package/dist/examples/grid-test/index.html +90 -0
  39. package/dist/examples/grouped-bar/index.html +91 -0
  40. package/dist/examples/hello-world/index.html +32 -0
  41. package/dist/examples/index.html +142 -0
  42. package/dist/examples/interactive/index.html +101 -0
  43. package/dist/examples/live-streaming/index.html +150 -0
  44. package/dist/examples/million-points/index.html +220 -0
  45. package/dist/examples/pie/index.html +132 -0
  46. package/dist/examples/sampling/index.html +249 -0
  47. package/dist/examples/scatter/index.html +91 -0
  48. package/dist/index.d.ts +3 -3
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +4035 -2996
  51. package/dist/index.js.map +1 -1
  52. package/dist/interaction/createInsideZoom.d.ts.map +1 -1
  53. package/dist/interaction/findCandlestick.d.ts +41 -0
  54. package/dist/interaction/findCandlestick.d.ts.map +1 -0
  55. package/dist/renderers/createAxisRenderer.d.ts +1 -1
  56. package/dist/renderers/createAxisRenderer.d.ts.map +1 -1
  57. package/dist/renderers/createCandlestickRenderer.d.ts +19 -0
  58. package/dist/renderers/createCandlestickRenderer.d.ts.map +1 -0
  59. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"createInsideZoom.d.ts","sourceRoot":"","sources":["../../src/interaction/createInsideZoom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC,CAAC;AAsCH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,CAgH7F"}
1
+ {"version":3,"file":"createInsideZoom.d.ts","sourceRoot":"","sources":["../../src/interaction/createInsideZoom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,MAAM,IAAI,IAAI,CAAC;IACf,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC,CAAC;AAuDH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,CAmI7F"}
@@ -0,0 +1,41 @@
1
+ import type { ResolvedCandlestickSeriesConfig } from '../config/OptionResolver';
2
+ import type { OHLCDataPoint } from '../config/types';
3
+ import type { LinearScale } from '../utils/scales';
4
+ export interface CandlestickMatch {
5
+ seriesIndex: number;
6
+ dataIndex: number;
7
+ point: OHLCDataPoint;
8
+ }
9
+ /**
10
+ * Computes the candlestick body width in xScale **range-space** units.
11
+ *
12
+ * Notes:
13
+ * - This mirrors `createCandlestickRenderer.ts` bar width semantics, but stays in range units
14
+ * (CSS pixels in ChartGPU interaction usage).
15
+ * - No DPR conversions are applied here.
16
+ */
17
+ export declare function computeCandlestickBodyWidthRange(series: ResolvedCandlestickSeriesConfig, data: ReadonlyArray<OHLCDataPoint>, xScale: LinearScale, plotWidthFallback?: number): number;
18
+ /**
19
+ * Finds the candlestick body under the given cursor position.
20
+ *
21
+ * Coordinate system contract:
22
+ * - `x`/`y` MUST be in the same units as `xScale`/`yScale` **range-space**
23
+ * (ChartGPU interaction uses grid-local CSS pixels).
24
+ *
25
+ * Hit-test semantics:
26
+ * - Body-only hit-testing (wicks ignored).
27
+ * - A candle hits if:
28
+ * - `abs(x - xCenter) <= barWidth / 2`, AND
29
+ * - `y` is between the scaled `open` and `close` (inclusive).
30
+ *
31
+ * Performance:
32
+ * - Per-series lower-bound binary search on timestamp, then scans left/right while x-distance alone can still hit.
33
+ * - If timestamps are not monotonic non-decreasing finite numbers, falls back to an O(n) scan for correctness.
34
+ *
35
+ * Edge cases:
36
+ * - Skips non-finite timestamps/open/close.
37
+ * - If `barWidthClip` is non-finite or <= 0, returns null.
38
+ * - Returns the closest in x (min abs dx) among hits; ties broken by smaller `dataIndex` (then smaller `seriesIndex`).
39
+ */
40
+ export declare function findCandlestick(series: ReadonlyArray<ResolvedCandlestickSeriesConfig>, x: number, y: number, xScale: LinearScale, yScale: LinearScale, barWidthClip: number): CandlestickMatch | null;
41
+ //# sourceMappingURL=findCandlestick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findCandlestick.d.ts","sourceRoot":"","sources":["../../src/interaction/findCandlestick.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,aAAa,CAAC;CACtB;AA0CD;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,+BAA+B,EACvC,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,EAClC,MAAM,EAAE,WAAW,EACnB,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,CAkDR;AAqCD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,CAAC,+BAA+B,CAAC,EACtD,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,GACnB,gBAAgB,GAAG,IAAI,CA2GzB"}
@@ -2,7 +2,7 @@ import type { AxisConfig } from '../config/types';
2
2
  import type { LinearScale } from '../utils/scales';
3
3
  import type { GridArea } from './createGridRenderer';
4
4
  export interface AxisRenderer {
5
- prepare(axisConfig: AxisConfig, scale: LinearScale, orientation: 'x' | 'y', gridArea: GridArea, axisLineColor?: string, axisTickColor?: string): void;
5
+ prepare(axisConfig: AxisConfig, scale: LinearScale, orientation: 'x' | 'y', gridArea: GridArea, axisLineColor?: string, axisTickColor?: string, tickCount?: number): void;
6
6
  render(passEncoder: GPURenderPassEncoder): void;
7
7
  dispose(): void;
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"createAxisRenderer.d.ts","sourceRoot":"","sources":["../../src/renderers/createAxisRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,YAAY;IAC3B,OAAO,CACL,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,GAAG,GAAG,GAAG,EACtB,QAAQ,EAAE,QAAQ,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CAAC;IACR,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;AA6HD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,CA8KjG"}
1
+ {"version":3,"file":"createAxisRenderer.d.ts","sourceRoot":"","sources":["../../src/renderers/createAxisRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,YAAY;IAC3B,OAAO,CACL,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,GAAG,GAAG,GAAG,EACtB,QAAQ,EAAE,QAAQ,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAAC;IACR,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;AA6JD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,CAsLjG"}
@@ -0,0 +1,19 @@
1
+ import type { ResolvedCandlestickSeriesConfig } from '../config/OptionResolver';
2
+ import type { LinearScale } from '../utils/scales';
3
+ import type { GridArea } from './createGridRenderer';
4
+ export interface CandlestickRenderer {
5
+ prepare(series: ResolvedCandlestickSeriesConfig, data: ResolvedCandlestickSeriesConfig['data'], xScale: LinearScale, yScale: LinearScale, gridArea: GridArea, backgroundColor?: string): void;
6
+ render(passEncoder: GPURenderPassEncoder): void;
7
+ dispose(): void;
8
+ }
9
+ export interface CandlestickRendererOptions {
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 createCandlestickRenderer(device: GPUDevice, options?: CandlestickRendererOptions): CandlestickRenderer;
19
+ //# sourceMappingURL=createCandlestickRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCandlestickRenderer.d.ts","sourceRoot":"","sources":["../../src/renderers/createCandlestickRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,WAAW,mBAAmB;IAClC,OAAO,CACL,MAAM,EAAE,+BAA+B,EACvC,IAAI,EAAE,+BAA+B,CAAC,MAAM,CAAC,EAC7C,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,QAAQ,EAClB,eAAe,CAAC,EAAE,MAAM,GACvB,IAAI,CAAC;IACR,MAAM,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAmJD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,mBAAmB,CA2VtH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chartgpu",
3
- "version": "0.1.0",
3
+ "version": "0.1.3",
4
4
  "description": "High-performance WebGPU charting library",
5
5
  "keywords": [
6
6
  "webgpu",
@@ -43,7 +43,9 @@
43
43
  "acceptance:easing": "tsx examples/acceptance/easing.ts",
44
44
  "acceptance:line-style-color": "tsx examples/acceptance/line-style-color.ts",
45
45
  "acceptance:area-style-color": "tsx examples/acceptance/area-style-color.ts",
46
+ "acceptance:ohlc-sample": "tsx examples/acceptance/ohlc-sample.ts",
46
47
  "build": "tsc && vite build",
48
+ "build:examples": "vite build --config examples/vite.config.ts",
47
49
  "prepublishOnly": "npm run build"
48
50
  },
49
51
  "devDependencies": {