@tradecanvas/core 1.11.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +2 -4
  2. package/dist/{WebGLSeriesRenderer-DVJBHdfm.js → WebGLSeriesRenderer-BNrnoMHq.js} +202 -159
  3. package/dist/{WebGLSeriesRenderer-DVJBHdfm.js.map → WebGLSeriesRenderer-BNrnoMHq.js.map} +1 -1
  4. package/dist/WebGLSeriesRenderer-Bclv4lzZ.cjs +429 -0
  5. package/dist/{WebGLSeriesRenderer-DjkYvHPQ.cjs.map → WebGLSeriesRenderer-Bclv4lzZ.cjs.map} +1 -1
  6. package/dist/axis/GridRenderer.d.ts +11 -1
  7. package/dist/axis/GridRenderer.d.ts.map +1 -1
  8. package/dist/charts/BaselineRenderer.d.ts.map +1 -1
  9. package/dist/charts/KagiRenderer.d.ts.map +1 -1
  10. package/dist/charts/PointAndFigureRenderer.d.ts.map +1 -1
  11. package/dist/engine/RenderEngine.d.ts +8 -1
  12. package/dist/engine/RenderEngine.d.ts.map +1 -1
  13. package/dist/engine/gpu.d.ts +3 -1
  14. package/dist/engine/gpu.d.ts.map +1 -1
  15. package/dist/engine/gpuContexts.d.ts +23 -0
  16. package/dist/engine/gpuContexts.d.ts.map +1 -0
  17. package/dist/engine/index.d.ts +3 -1
  18. package/dist/engine/index.d.ts.map +1 -1
  19. package/dist/engine/loadWebGL.d.ts +15 -2
  20. package/dist/engine/loadWebGL.d.ts.map +1 -1
  21. package/dist/features/ChartState.d.ts +10 -3
  22. package/dist/features/ChartState.d.ts.map +1 -1
  23. package/dist/{gridLines-BJLaM2d7.js → gpuContexts-Bn58hj7u.js} +156 -62
  24. package/dist/gpuContexts-Bn58hj7u.js.map +1 -0
  25. package/dist/{gridLines-CBmfrSCE.cjs → gpuContexts-DYrOp3uo.cjs} +2 -2
  26. package/dist/{gridLines-BJLaM2d7.js.map → gpuContexts-DYrOp3uo.cjs.map} +1 -1
  27. package/dist/index.cjs +5 -10
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.js +3420 -2526
  30. package/dist/index.js.map +1 -1
  31. package/dist/indicators/IndicatorBase.d.ts +6 -1
  32. package/dist/indicators/IndicatorBase.d.ts.map +1 -1
  33. package/dist/indicators/IndicatorEngine.d.ts +14 -2
  34. package/dist/indicators/IndicatorEngine.d.ts.map +1 -1
  35. package/dist/indicators/index.d.ts +14 -2
  36. package/dist/indicators/index.d.ts.map +1 -1
  37. package/dist/indicators/linePen.d.ts +5 -1
  38. package/dist/indicators/linePen.d.ts.map +1 -1
  39. package/dist/indicators/math.d.ts +2 -0
  40. package/dist/indicators/math.d.ts.map +1 -1
  41. package/dist/indicators/overlay/Alligator.d.ts.map +1 -1
  42. package/dist/indicators/overlay/AnchoredVWAP.d.ts.map +1 -1
  43. package/dist/indicators/overlay/BollingerBands.d.ts.map +1 -1
  44. package/dist/indicators/overlay/ChandelierExit.d.ts.map +1 -1
  45. package/dist/indicators/overlay/DonchianChannel.d.ts.map +1 -1
  46. package/dist/indicators/overlay/EMA.d.ts.map +1 -1
  47. package/dist/indicators/overlay/Envelope.d.ts.map +1 -1
  48. package/dist/indicators/overlay/HammingMA.d.ts +19 -0
  49. package/dist/indicators/overlay/HammingMA.d.ts.map +1 -0
  50. package/dist/indicators/overlay/HullMA.d.ts.map +1 -1
  51. package/dist/indicators/overlay/Ichimoku.d.ts.map +1 -1
  52. package/dist/indicators/overlay/KeltnerChannel.d.ts.map +1 -1
  53. package/dist/indicators/overlay/LinearRegressionChannel.d.ts.map +1 -1
  54. package/dist/indicators/overlay/MAChannel.d.ts +13 -0
  55. package/dist/indicators/overlay/MAChannel.d.ts.map +1 -0
  56. package/dist/indicators/overlay/MACross.d.ts.map +1 -1
  57. package/dist/indicators/overlay/MTFMovingAverage.d.ts.map +1 -1
  58. package/dist/indicators/overlay/MovingAverageSets.d.ts +20 -0
  59. package/dist/indicators/overlay/MovingAverageSets.d.ts.map +1 -0
  60. package/dist/indicators/overlay/ParabolicSAR.d.ts.map +1 -1
  61. package/dist/indicators/overlay/PivotPoints.d.ts +5 -0
  62. package/dist/indicators/overlay/PivotPoints.d.ts.map +1 -1
  63. package/dist/indicators/overlay/PriceAverages.d.ts +25 -0
  64. package/dist/indicators/overlay/PriceAverages.d.ts.map +1 -0
  65. package/dist/indicators/overlay/SMA.d.ts.map +1 -1
  66. package/dist/indicators/overlay/SessionVWAP.d.ts.map +1 -1
  67. package/dist/indicators/overlay/Supertrend.d.ts.map +1 -1
  68. package/dist/indicators/overlay/TEMA.d.ts.map +1 -1
  69. package/dist/indicators/overlay/VWAP.d.ts.map +1 -1
  70. package/dist/indicators/overlay/VWMA.d.ts.map +1 -1
  71. package/dist/indicators/overlay/VolatilityIndex.d.ts +13 -0
  72. package/dist/indicators/overlay/VolatilityIndex.d.ts.map +1 -0
  73. package/dist/indicators/overlay/WMA.d.ts.map +1 -1
  74. package/dist/indicators/overlay/ZigZag.d.ts.map +1 -1
  75. package/dist/indicators/panel/AccumulativeSwingIndex.d.ts +13 -0
  76. package/dist/indicators/panel/AccumulativeSwingIndex.d.ts.map +1 -0
  77. package/dist/indicators/panel/AdvanceDecline.d.ts +18 -0
  78. package/dist/indicators/panel/AdvanceDecline.d.ts.map +1 -0
  79. package/dist/indicators/panel/ChopZone.d.ts +17 -0
  80. package/dist/indicators/panel/ChopZone.d.ts.map +1 -0
  81. package/dist/indicators/panel/ElderRay.d.ts.map +1 -1
  82. package/dist/indicators/panel/MajorityRule.d.ts +15 -0
  83. package/dist/indicators/panel/MajorityRule.d.ts.map +1 -0
  84. package/dist/indicators/panel/PriceOscillator.d.ts +8 -0
  85. package/dist/indicators/panel/PriceOscillator.d.ts.map +1 -0
  86. package/dist/indicators/panel/SMIErgodic.d.ts +12 -0
  87. package/dist/indicators/panel/SMIErgodic.d.ts.map +1 -0
  88. package/dist/indicators/panel/VolatilityEstimators.d.ts +29 -0
  89. package/dist/indicators/panel/VolatilityEstimators.d.ts.map +1 -0
  90. package/dist/indicators/plots.d.ts +10 -0
  91. package/dist/indicators/plots.d.ts.map +1 -1
  92. package/dist/indicators/registry.d.ts.map +1 -1
  93. package/dist/indicators/symbols/symbolIndicators.d.ts +27 -0
  94. package/dist/indicators/symbols/symbolIndicators.d.ts.map +1 -1
  95. package/dist/interaction/CrosshairHandler.d.ts.map +1 -1
  96. package/dist/interaction/PinnedTooltip.d.ts.map +1 -1
  97. package/dist/interaction/crosshairLooks.d.ts +7 -0
  98. package/dist/interaction/crosshairLooks.d.ts.map +1 -0
  99. package/dist/realtime/CurrentPriceLine.d.ts.map +1 -1
  100. package/dist/ui/ChartLegend.d.ts.map +1 -1
  101. package/dist/ui/SessionBreaks.d.ts +2 -0
  102. package/dist/ui/SessionBreaks.d.ts.map +1 -1
  103. package/dist/webgl/WebGLSeriesRenderer.d.ts +30 -12
  104. package/dist/webgl/WebGLSeriesRenderer.d.ts.map +1 -1
  105. package/package.json +2 -2
  106. package/dist/WebGLSeriesRenderer-DjkYvHPQ.cjs +0 -429
  107. package/dist/gridLines-CBmfrSCE.cjs.map +0 -1
@@ -1,8 +1,18 @@
1
- import { ViewportState, Theme } from '@tradecanvas/commons';
1
+ import { ViewportState, Theme, ResolvedLineLook } from '@tradecanvas/commons';
2
2
  export declare class GridRenderer {
3
3
  private visible;
4
4
  setVisible(v: boolean): void;
5
5
  isVisible(): boolean;
6
6
  render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
7
7
  }
8
+ /** The grid's looks each way: the resolved style's, or the theme's grid colour, solid, 1 px. */
9
+ export declare function gridLooks(theme: Theme): {
10
+ horizontal: ResolvedLineLook;
11
+ vertical: ResolvedLineLook;
12
+ };
13
+ /**
14
+ * Whether the GPU can draw the grid as it looks: every way shown is solid,
15
+ * 1 px, and they share a colour. Otherwise the grid goes on Canvas 2D.
16
+ */
17
+ export declare function gridFitsGpu(theme: Theme): boolean;
8
18
  //# sourceMappingURL=GridRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridRenderer.d.ts","sourceRoot":"","sources":["../../src/axis/GridRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGjE,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAQ;IAEvB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAC5B,SAAS,IAAI,OAAO;IAEpB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAoBnF"}
1
+ {"version":3,"file":"GridRenderer.d.ts","sourceRoot":"","sources":["../../src/axis/GridRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOnF,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAQ;IAEvB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAC5B,SAAS,IAAI,OAAO;IAEpB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA4CnF;AAED,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,UAAU,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAGpG;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAIjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"BaselineRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/BaselineRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGjE;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,sBAAsB;IAC7D,OAAO,CAAC,aAAa,CAAuB;IAE5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IA4FpG,OAAO,CAAC,eAAe;CASxB"}
1
+ {"version":3,"file":"BaselineRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/BaselineRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAMjE;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,sBAAsB;IAC7D,OAAO,CAAC,aAAa,CAAuB;IAE5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAqGpG,OAAO,CAAC,eAAe;CASxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"KagiRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/KagiRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGjE;;;GAGG;AACH,qBAAa,YAAa,YAAW,sBAAsB;IACzD,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAkDrG"}
1
+ {"version":3,"file":"KagiRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/KagiRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGjE;;;GAGG;AACH,qBAAa,YAAa,YAAW,sBAAsB;IACzD,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAgDrG"}
@@ -1 +1 @@
1
- {"version":3,"file":"PointAndFigureRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/PointAndFigureRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGjE;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,sBAAsB;IACnE,OAAO,CAAC,OAAO,CAAK;IAEpB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA2DrG"}
1
+ {"version":3,"file":"PointAndFigureRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/PointAndFigureRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGjE;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,sBAAsB;IACnE,OAAO,CAAC,OAAO,CAAK;IAEpB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAiErG"}
@@ -1,4 +1,4 @@
1
- import { LayerType, Size, ViewportState, Theme, DataSeries, Rect } from '@tradecanvas/commons';
1
+ import { LayerType, Size, ViewportState, Theme, DataSeries, Rect, PaneStyle } from '@tradecanvas/commons';
2
2
  import { LayerManager } from './LayerManager.js';
3
3
  import { RenderLoop } from './RenderLoop.js';
4
4
  import { DPRManager } from './DPRManager.js';
@@ -27,6 +27,8 @@ export interface PanelRenderInfo {
27
27
  members?: string[];
28
28
  rect: Rect;
29
29
  viewport: ViewportState;
30
+ /** Its own background and separator, over the panes' style. */
31
+ style?: PaneStyle;
30
32
  }
31
33
  export interface RenderContext {
32
34
  chartRenderer: ChartRendererInterface | null;
@@ -101,8 +103,12 @@ export declare class RenderEngine {
101
103
  private topLayer;
102
104
  /** The GPU renderer under the scene. */
103
105
  private gpu;
106
+ /** A GPU whose context was lost, kept for when it comes back. */
107
+ private lostGpu;
104
108
  /** Called when the GPU context is lost and the engine has gone back to Canvas 2D. */
105
109
  onGpuLost: (() => void) | null;
110
+ /** Called when the lost context came back and the engine draws with the GPU again. */
111
+ onGpuRestored: (() => void) | null;
106
112
  /**
107
113
  * Optional hook fired AFTER the canvas layers have been resized in
108
114
  * response to a container resize. The Chart class uses this to push the
@@ -116,6 +122,7 @@ export declare class RenderEngine {
116
122
  setRenderContext(ctx: RenderContext): void;
117
123
  /** Draw bars and volume with `gpu`, on its canvas under the scene. */
118
124
  attachGpu(gpu: GpuRenderer): void;
125
+ private placeGpu;
119
126
  /** Back to Canvas 2D for everything. */
120
127
  detachGpu(): void;
121
128
  /** Draw every layer now, synchronously (a screenshot reads the GPU canvas before the browser clears it). */
@@ -1 +1 @@
1
- {"version":3,"file":"RenderEngine.d.ts","sourceRoot":"","sources":["../../src/engine/RenderEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderEngine.d.ts","sourceRoot":"","sources":["../../src/engine/RenderEngine.ts"],"names":[],"mappings":"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"}
@@ -89,8 +89,10 @@ export interface GpuRenderer {
89
89
  * draws nothing. Without one, everything past the bars is Canvas 2D.
90
90
  */
91
91
  recorder?(dpr: number, measure: CanvasRenderingContext2D | null): GpuRecorder;
92
- /** Called once if the GPU context is lost (the engine then draws with Canvas 2D). */
92
+ /** Called each time the GPU context is lost (the engine then draws with Canvas 2D). */
93
93
  onLost(callback: () => void): void;
94
+ /** Called each time the context comes back after a loss, ready to draw again. */
95
+ onRestored?(callback: () => void): void;
94
96
  destroy(): void;
95
97
  }
96
98
  //# sourceMappingURL=gpu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gpu.d.ts","sourceRoot":"","sources":["../../src/engine/gpu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEjG,0GAA0G;AAC1G,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AAEjE,gGAAgG;AAChG,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,4GAA4G;AAC5G,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,wBAAwB,KAAK,IAAI,GAAG,OAAO,CAAC;IAC3D,iFAAiF;IACjF,QAAQ,CAAC,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAC7C;AAED,uDAAuD;AACvD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvC,yEAAyE;IACzE,UAAU,EAAE,aAAa,GAAG,IAAI,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED,uDAAuD;AACvD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI,GAAG,WAAW,CAAC;IAC9E,qFAAqF;IACrF,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACnC,OAAO,IAAI,IAAI,CAAC;CACjB"}
1
+ {"version":3,"file":"gpu.d.ts","sourceRoot":"","sources":["../../src/engine/gpu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEjG,0GAA0G;AAC1G,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AAEjE,gGAAgG;AAChG,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,4GAA4G;AAC5G,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,wBAAwB,KAAK,IAAI,GAAG,OAAO,CAAC;IAC3D,iFAAiF;IACjF,QAAQ,CAAC,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAC7C;AAED,uDAAuD;AACvD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvC,yEAAyE;IACzE,UAAU,EAAE,aAAa,GAAG,IAAI,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED,uDAAuD;AACvD,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI,GAAG,WAAW,CAAC;IAC9E,uFAAuF;IACvF,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACnC,iFAAiF;IACjF,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACxC,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The WebGL contexts the charts on a page hold at once. Chrome and Safari
3
+ * keep about 16 a page and, past that, drop the oldest, whoever's it is (a
4
+ * live chart's, a map's), never to hand it back. The charts stop short of
5
+ * that and leave the rest to the page; a chart asked for WebGL past the limit
6
+ * draws with Canvas 2D until a context is let go. The count is per copy of
7
+ * the library loaded on the page.
8
+ */
9
+ /** How many charts draw with WebGL at once, unless set otherwise. */
10
+ export declare const DEFAULT_MAX_WEBGL_CHARTS = 8;
11
+ /**
12
+ * At most `count` charts on the page draw with WebGL at once (default 8;
13
+ * `Infinity` for no limit). Charts that draw with WebGL already keep it when
14
+ * the limit drops below them; it holds for those asking from then on.
15
+ */
16
+ export declare function setMaxWebGLCharts(count: number): void;
17
+ /** How many more charts may draw with WebGL now. */
18
+ export declare function gpuContextsLeft(): number;
19
+ /** A context of the charts' share, or null when they hold all of it: the function given back lets it go (once). */
20
+ export declare function claimGpuContext(): (() => void) | null;
21
+ /** `callback`, once, the next time a context may be had; the function given back stops waiting. */
22
+ export declare function whenGpuContextFree(callback: () => void): () => void;
23
+ //# sourceMappingURL=gpuContexts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gpuContexts.d.ts","sourceRoot":"","sources":["../../src/engine/gpuContexts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAM1C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGrD;AAED,oDAAoD;AACpD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,mHAAmH;AACnH,wBAAgB,eAAe,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAUrD;AAED,mGAAmG;AACnG,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAKnE"}
@@ -4,6 +4,8 @@ export { RenderLoop } from './RenderLoop.js';
4
4
  export { DPRManager } from './DPRManager.js';
5
5
  export { RenderEngine } from './RenderEngine.js';
6
6
  export type { RenderContext, PanelRenderInfo } from './RenderEngine.js';
7
- export { loadWebGLRenderer } from './loadWebGL.js';
7
+ export { loadWebGL, loadWebGLRenderer } from './loadWebGL.js';
8
+ export type { WebGLLoad } from './loadWebGL.js';
9
+ export { DEFAULT_MAX_WEBGL_CHARTS, setMaxWebGLCharts, gpuContextsLeft, claimGpuContext, whenGpuContextFree } from './gpuContexts.js';
8
10
  export type { GpuRenderer, GpuFrame, GpuDrawn, GpuBackground, GpuRect, GpuRecorder, GpuRegion, RendererMode } from './gpu.js';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrI,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
@@ -1,9 +1,22 @@
1
1
  import { GpuRenderer } from './gpu.js';
2
+ /** What `loadWebGL` got: a renderer, or why not. */
3
+ export type WebGLLoad = {
4
+ gpu: GpuRenderer;
5
+ reason?: undefined;
6
+ } | {
7
+ gpu: null;
8
+ reason: 'unsupported' | 'limit';
9
+ };
2
10
  /**
3
11
  * The WebGL renderer, loaded on first use so it stays out of the main bundle.
4
- * Null where WebGL 2 can't be had (with 'auto': nor where it only runs in
5
- * software, slower than Canvas 2D). A failure to load (offline, a blocked
12
+ * It holds one of the WebGL contexts the charts on the page may have
13
+ * (`setMaxWebGLCharts`), claimed before anything is loaded so two charts can't
14
+ * both take the last one. None when the charts hold all of them ('limit'), nor
15
+ * where WebGL 2 can't be had, or with 'auto' only runs in software, slower
16
+ * than Canvas 2D ('unsupported'). A failure to load (offline, a blocked
6
17
  * script) is logged as a warning, not thrown: the chart draws on with Canvas 2D.
7
18
  */
19
+ export declare function loadWebGL(mode: 'webgl' | 'auto'): Promise<WebGLLoad>;
20
+ /** The renderer `loadWebGL` gets, or null. */
8
21
  export declare function loadWebGLRenderer(mode: 'webgl' | 'auto'): Promise<GpuRenderer | null>;
9
22
  //# sourceMappingURL=loadWebGL.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadWebGL.d.ts","sourceRoot":"","sources":["../../src/engine/loadWebGL.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAS3F"}
1
+ {"version":3,"file":"loadWebGL.d.ts","sourceRoot":"","sources":["../../src/engine/loadWebGL.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,oDAAoD;AACpD,MAAM,MAAM,SAAS,GACjB;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GACxC;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAA;CAAE,CAAC;AAEnD;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAiB1E;AAED,8CAA8C;AAC9C,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAE3F"}
@@ -1,4 +1,4 @@
1
- import { ChartType, ChartTypeOptions, DrawingState, IndicatorStyleConfig, TradingOrder, TradingPosition, Theme } from '@tradecanvas/commons';
1
+ import { ChartStyleOverrides, ChartType, ChartTypeOptions, DrawingState, IndicatorStyleConfig, PaneStyle, TradingOrder, TradingPosition, Theme } from '@tradecanvas/commons';
2
2
  import { PriceAlert } from './AlertManager.js';
3
3
  /**
4
4
  * Serializable chart state for save/load functionality.
@@ -18,6 +18,8 @@ export interface ChartSnapshot {
18
18
  offset: number;
19
19
  };
20
20
  theme?: string | Theme;
21
+ /** The user's style overrides, by the name of the theme they go with (from version 3 on). */
22
+ overrides?: Record<string, ChartStyleOverrides>;
21
23
  locale?: string;
22
24
  indicators: SnapshotIndicator[];
23
25
  drawings: DrawingState[];
@@ -40,6 +42,8 @@ export interface SnapshotIndicator {
40
42
  pane?: string;
41
43
  /** `'left'`: an overlay on the left price scale. */
42
44
  scale?: 'left';
45
+ /** Its pane's own background and separator. */
46
+ paneStyle?: PaneStyle;
43
47
  /** For an indicator with a pane of its own: the pane's height, place among the panes, fold and maximise. */
44
48
  paneSize?: number;
45
49
  paneOrder?: number;
@@ -52,9 +56,10 @@ export interface SnapshotIndicator {
52
56
  }
53
57
  /**
54
58
  * 2: indicators (params, pane, style, visibility) and full alerts (channel,
55
- * repeating, label) are captured. Version-1 saves carry no indicators.
59
+ * repeating, label) are captured; version-1 saves carry no indicators.
60
+ * 3: the user's style overrides too.
56
61
  */
57
- export declare const SNAPSHOT_VERSION = 2;
62
+ export declare const SNAPSHOT_VERSION = 3;
58
63
  export declare function validateSnapshot(raw: unknown): ChartSnapshot;
59
64
  export declare class ChartStateManager {
60
65
  /**
@@ -67,6 +72,8 @@ export declare class ChartStateManager {
67
72
  getAlerts?: () => PriceAlert[];
68
73
  getTheme: () => Theme;
69
74
  getIndicators?: () => SnapshotIndicator[];
75
+ /** The user's style overrides by theme name. */
76
+ getOverrides?: () => Record<string, ChartStyleOverrides>;
70
77
  }, meta?: {
71
78
  symbol?: string;
72
79
  timeframe?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ChartState.d.ts","sourceRoot":"","sources":["../../src/features/ChartState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChartState.d.ts","sourceRoot":"","sources":["../../src/features/ChartState.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { computeTickStep as e } from "@tradecanvas/commons";
1
+ import { computeTickStep as e, lineDash as t } from "@tradecanvas/commons";
2
2
  //#region src/viewport/ScaleMapping.ts
3
- function t(e, t) {
3
+ function n(e, t) {
4
4
  return e * (t.barWidth + t.barSpacing) - t.offset + t.chartRect.x + t.barWidth / 2;
5
5
  }
6
- function n(e, t) {
6
+ function r(e, t) {
7
7
  let { min: n, max: r } = t.priceRange, { y: i, height: a } = t.chartRect, o;
8
8
  if (t.logScale && n > 0 && r > 0) {
9
9
  let t = Math.log(n), s = Math.log(r) - t;
@@ -16,7 +16,7 @@ function n(e, t) {
16
16
  }
17
17
  return i + a * (t.invertScale ? o : 1 - o);
18
18
  }
19
- function r(e) {
19
+ function i(e) {
20
20
  let { min: t, max: n } = e.priceRange, { y: r, height: i } = e.chartRect, a = e.invertScale === !0;
21
21
  if (e.logScale && t > 0 && n > 0) {
22
22
  let e = Math.log(t), o = Math.log(n) - e;
@@ -29,7 +29,7 @@ function r(e) {
29
29
  let s = i / o;
30
30
  return a ? (e) => r + (e - t) * s : (e) => r + (n - e) * s;
31
31
  }
32
- function i(e, t, n, r) {
32
+ function a(e, t, n, r) {
33
33
  let { min: i, max: a } = n.priceRange, o = (a - i) / t, s = r(i + e * o), c = r(i + (e + 1) * o);
34
34
  return {
35
35
  top: Math.min(s, c),
@@ -37,11 +37,11 @@ function i(e, t, n, r) {
37
37
  mid: (s + c) / 2
38
38
  };
39
39
  }
40
- function a(e, t) {
40
+ function o(e, t) {
41
41
  let n = t.barWidth + t.barSpacing;
42
42
  return Math.round((e - t.chartRect.x - t.barWidth / 2 + t.offset) / n);
43
43
  }
44
- function o(e, t) {
44
+ function s(e, t) {
45
45
  let { min: n, max: r } = t.priceRange, i = (e - t.chartRect.y) / t.chartRect.height, a = t.invertScale ? i : 1 - i;
46
46
  if (t.logScale && n > 0 && r > 0) {
47
47
  let e = Math.log(n);
@@ -49,41 +49,41 @@ function o(e, t) {
49
49
  }
50
50
  return n + (r - n) * a;
51
51
  }
52
- var s = /* @__PURE__ */ new WeakMap();
53
- function c(e) {
52
+ var c = /* @__PURE__ */ new WeakMap();
53
+ function l(e) {
54
54
  let t = e.length;
55
55
  if (t < 2) return 0;
56
- let n = s.get(e);
56
+ let n = c.get(e);
57
57
  if (n && n.length === t) return n.step;
58
58
  let r = [];
59
59
  for (let n = Math.max(1, t - 20); n < t; n++) r.push(e[n].time - e[n - 1].time);
60
60
  r.sort((e, t) => e - t);
61
61
  let i = Math.max(0, r[r.length >> 1]);
62
- return s.set(e, {
62
+ return c.set(e, {
63
63
  length: t,
64
64
  step: i
65
65
  }), i;
66
66
  }
67
- function l(e) {
68
- let t = c(e);
67
+ function u(e) {
68
+ let t = l(e);
69
69
  return (e.length > 0 ? e[e.length - 1].time : 0) > 0xe8d4a51000 ? t : t * 1e3;
70
70
  }
71
- function u(e, t) {
71
+ function d(e, t) {
72
72
  let n = t.length;
73
73
  if (n === 0) return e;
74
74
  let r = n - 1;
75
- if (e > r) return t[r].time + (e - r) * c(t);
76
- if (e < 0) return t[0].time + e * c(t);
75
+ if (e > r) return t[r].time + (e - r) * l(t);
76
+ if (e < 0) return t[0].time + e * l(t);
77
77
  let i = Math.floor(e);
78
78
  return i === e || i >= r ? t[i].time : t[i].time + (e - i) * (t[i + 1].time - t[i].time);
79
79
  }
80
- function d(e, t) {
80
+ function f(e, t) {
81
81
  if (t.length === 0) return -1;
82
82
  let n = t[0].time, r = t.length - 1, i = t[r].time;
83
83
  if (e <= n || e >= i) {
84
84
  if (e === n) return 0;
85
85
  if (e === i) return r;
86
- let a = c(t);
86
+ let a = l(t);
87
87
  return a <= 0 ? e < n ? 0 : r : e < n ? (e - n) / a : r + (e - i) / a;
88
88
  }
89
89
  let a = 0, o = t.length - 1;
@@ -94,27 +94,27 @@ function d(e, t) {
94
94
  }
95
95
  if (a >= t.length) return t.length - 1;
96
96
  if (o < 0) return 0;
97
- let s = t[o].time, l = t[a].time, u = l === s ? 0 : (e - s) / (l - s);
97
+ let s = t[o].time, c = t[a].time, u = c === s ? 0 : (e - s) / (c - s);
98
98
  return o + u;
99
99
  }
100
- function f(e, t) {
100
+ function p(e, t) {
101
101
  let n = t.data;
102
- return n && n.length > 0 ? d(e, n) : e;
103
- }
104
- function p(e, n) {
105
- return t(f(e, n), n);
102
+ return n && n.length > 0 ? f(e, n) : e;
106
103
  }
107
104
  function m(e, t) {
108
- let n = a(e, t), r = t.data;
109
- return r && r.length > 0 ? u(n, r) : n;
105
+ return n(p(e, t), t);
106
+ }
107
+ function h(e, t) {
108
+ let n = o(e, t), r = t.data;
109
+ return r && r.length > 0 ? d(n, r) : n;
110
110
  }
111
111
  //#endregion
112
112
  //#region src/charts/pixelGrid.ts
113
- var h = .5037;
114
- function g(e) {
115
- return Math.floor(e + h);
116
- }
113
+ var g = .5037;
117
114
  function _(e) {
115
+ return Math.floor(e + g);
116
+ }
117
+ function v(e) {
118
118
  let t = typeof e.getTransform == "function" ? e.getTransform() : void 0;
119
119
  return {
120
120
  a: t && Number.isFinite(t.a) && t.a > 0 ? t.a : 1,
@@ -123,43 +123,43 @@ function _(e) {
123
123
  f: t && Number.isFinite(t.f) ? t.f : 0
124
124
  };
125
125
  }
126
- function v(e, t) {
127
- let { a: n, d: r, e: i, f: a } = _(e);
126
+ function y(e, t) {
127
+ let { a: n, d: r, e: i, f: a } = v(e);
128
128
  e.save(), e.setTransform(1, 0, 0, 1, 0, 0);
129
129
  try {
130
130
  return t({
131
131
  ratio: n,
132
- x: (e) => g(e * n + i),
133
- y: (e) => g(e * r + a),
134
- left: (e, t) => g(e * n + i - t / 2)
132
+ x: (e) => _(e * n + i),
133
+ y: (e) => _(e * r + a),
134
+ left: (e, t) => _(e * n + i - t / 2)
135
135
  });
136
136
  } finally {
137
137
  e.restore();
138
138
  }
139
139
  }
140
- function y(e, t) {
140
+ function b(e, t) {
141
141
  let n = Math.max(1, Math.floor(t)), r = Math.max(n, Math.round(e * t));
142
142
  return (r - n) % 2 != 0 && --r, {
143
143
  body: Math.max(r, n),
144
144
  wick: n
145
145
  };
146
146
  }
147
- function b(e, t, n, r) {
147
+ function x(e, t, n, r) {
148
148
  let i = Math.max(1, Math.round(t * n)), a = i % 2 ? .5 : 0;
149
149
  return {
150
- at: (g(e * n + r - a) + a - r) / n,
150
+ at: (_(e * n + r - a) + a - r) / n,
151
151
  width: i / n
152
152
  };
153
153
  }
154
- function x(e, t, n) {
155
- let r = _(e), i = b(t, n, r.d, r.f);
154
+ function S(e, t, n) {
155
+ let r = v(e), i = x(t, n, r.d, r.f);
156
156
  return {
157
157
  y: i.at,
158
158
  width: i.width
159
159
  };
160
160
  }
161
- function S(e, t, n) {
162
- let r = _(e), i = b(t, n, r.a, r.e);
161
+ function C(e, t, n) {
162
+ let r = v(e), i = x(t, n, r.a, r.e);
163
163
  return {
164
164
  x: i.at,
165
165
  width: i.width
@@ -167,11 +167,11 @@ function S(e, t, n) {
167
167
  }
168
168
  //#endregion
169
169
  //#region src/charts/denseBars.ts
170
- var C = 1;
171
- function w(e) {
170
+ var w = 1;
171
+ function T(e) {
172
172
  return e.barWidth < 1;
173
173
  }
174
- function T(e, t, n, r, i) {
174
+ function E(e, t, n, r, i) {
175
175
  let a = Math.min(n, e.length - 1);
176
176
  if (t > a) return;
177
177
  let o = {
@@ -188,28 +188,28 @@ function T(e, t, n, r, i) {
188
188
  }
189
189
  s && i(o);
190
190
  }
191
- function E(e, t, n, i, a) {
192
- let { from: o, to: s } = n.visibleRange, c = n.barWidth + n.barSpacing, l = -n.offset + n.chartRect.x + n.barWidth / 2, u = r(n);
193
- v(e, (n) => {
194
- let r = new Path2D(), d = new Path2D();
195
- T(t, o, s, (e) => e * c + l, (e) => {
196
- let t = n.y(u(e.high)), i = n.y(u(e.low)), a = n.x(e.x), o = Math.max(1, n.x(e.x + 1) - a);
197
- (e.close >= e.open ? r : d).rect(a, Math.min(t, i), o, Math.max(Math.abs(i - t), 1));
198
- }), e.fillStyle = i, e.fill(r), e.fillStyle = a, e.fill(d);
191
+ function D(e, t, n, r, a) {
192
+ let { from: o, to: s } = n.visibleRange, c = n.barWidth + n.barSpacing, l = -n.offset + n.chartRect.x + n.barWidth / 2, u = i(n);
193
+ y(e, (n) => {
194
+ let i = new Path2D(), d = new Path2D();
195
+ E(t, o, s, (e) => e * c + l, (e) => {
196
+ let t = n.y(u(e.high)), r = n.y(u(e.low)), a = n.x(e.x), o = Math.max(1, n.x(e.x + 1) - a);
197
+ (e.close >= e.open ? i : d).rect(a, Math.min(t, r), o, Math.max(Math.abs(r - t), 1));
198
+ }), e.fillStyle = r, e.fill(i), e.fillStyle = a, e.fill(d);
199
199
  });
200
200
  }
201
201
  //#endregion
202
202
  //#region src/axis/gridLines.ts
203
- var D = 80;
204
- function O(t) {
205
- let { chartRect: n, priceRange: i } = t;
206
- if (i.max - i.min <= 0) return {
203
+ var O = 80;
204
+ function k(t) {
205
+ let { chartRect: n, priceRange: r } = t;
206
+ if (r.max - r.min <= 0) return {
207
207
  horizontal: [],
208
208
  vertical: []
209
209
  };
210
- let a = r(t), o = [], s = e(i.min, i.max, 8), c = Math.ceil(i.min / s) * s;
211
- for (let e = c; e <= i.max; e += s) o.push(Math.round(a(e)) + .5);
212
- let l = [], u = t.barWidth + t.barSpacing, d = Math.max(1, Math.ceil(D / u)), f = -t.offset + n.x + t.barWidth / 2, p = Math.floor(t.offset / u), m = Math.ceil((t.offset + n.width) / u);
210
+ let a = i(t), o = [], s = e(r.min, r.max, 8), c = Math.ceil(r.min / s) * s;
211
+ for (let e = c; e <= r.max; e += s) o.push(Math.round(a(e)) + .5);
212
+ let l = [], u = t.barWidth + t.barSpacing, d = Math.max(1, Math.ceil(O / u)), f = -t.offset + n.x + t.barWidth / 2, p = Math.floor(t.offset / u), m = Math.ceil((t.offset + n.width) / u);
213
213
  for (let e = p; e <= m; e++) e % d === 0 && l.push(Math.round(e * u + f) + .5);
214
214
  return {
215
215
  horizontal: o,
@@ -217,6 +217,100 @@ function O(t) {
217
217
  };
218
218
  }
219
219
  //#endregion
220
- export { o as C, m as S, r as _, E as a, d as b, S as c, u as d, t as f, n as g, i as h, w as i, x as l, l as m, C as n, h as o, c as p, T as r, y as s, O as t, v as u, f as v, a as x, p as y };
220
+ //#region src/axis/GridRenderer.ts
221
+ var A = [4, 4], j = class {
222
+ visible = !0;
223
+ setVisible(e) {
224
+ this.visible = e;
225
+ }
226
+ isVisible() {
227
+ return this.visible;
228
+ }
229
+ render(e, t, n) {
230
+ if (!this.visible) return;
231
+ let { chartRect: r } = t, { horizontal: i, vertical: a } = k(t), o = M(n), s = o.horizontal, c = o.vertical;
232
+ if (s.visible && c.visible && s.color === c.color && s.style === c.style && s.width === c.width) {
233
+ P(e, s, () => {
234
+ for (let t of i) {
235
+ let n = F(t, s.width);
236
+ e.moveTo(r.x, n), e.lineTo(r.x + r.width, n);
237
+ }
238
+ for (let t of a) {
239
+ let n = F(t, c.width);
240
+ e.moveTo(n, r.y), e.lineTo(n, r.y + r.height);
241
+ }
242
+ }), e.setLineDash([]);
243
+ return;
244
+ }
245
+ o.horizontal.visible && i.length > 0 && P(e, o.horizontal, () => {
246
+ for (let t of i) {
247
+ let n = F(t, o.horizontal.width);
248
+ e.moveTo(r.x, n), e.lineTo(r.x + r.width, n);
249
+ }
250
+ }), o.vertical.visible && a.length > 0 && P(e, o.vertical, () => {
251
+ for (let t of a) {
252
+ let n = F(t, o.vertical.width);
253
+ e.moveTo(n, r.y), e.lineTo(n, r.y + r.height);
254
+ }
255
+ }), e.setLineDash([]);
256
+ }
257
+ };
258
+ function M(e) {
259
+ let t = {
260
+ visible: !0,
261
+ color: e.grid,
262
+ style: "solid",
263
+ width: 1
264
+ };
265
+ return e.style?.grid ?? {
266
+ horizontal: t,
267
+ vertical: t
268
+ };
269
+ }
270
+ function N(e) {
271
+ let { horizontal: t, vertical: n } = M(e), r = [t, n].filter((e) => e.visible);
272
+ return r.every((e) => e.style === "solid" && e.width === 1 && e.color === r[0].color);
273
+ }
274
+ function P(e, n, r) {
275
+ e.strokeStyle = n.color, e.lineWidth = n.width, e.setLineDash(t(n.style, A, n.width)), e.beginPath(), r(), e.stroke();
276
+ }
277
+ function F(e, t) {
278
+ return t % 2 == 0 ? Math.round(e) : e;
279
+ }
280
+ //#endregion
281
+ //#region src/engine/gpuContexts.ts
282
+ var I = 8, L = 8, R = 0, z = /* @__PURE__ */ new Set();
283
+ function B(e) {
284
+ L = Number.isNaN(e) ? 8 : Math.max(0, Math.floor(e)), V() > 0 && W();
285
+ }
286
+ function V() {
287
+ return Math.max(0, L - R);
288
+ }
289
+ function H() {
290
+ if (R >= L) return null;
291
+ R++;
292
+ let e = !1;
293
+ return () => {
294
+ e || (e = !0, R--, W());
295
+ };
296
+ }
297
+ function U(e) {
298
+ return z.add(e), () => {
299
+ z.delete(e);
300
+ };
301
+ }
302
+ function W() {
303
+ let e = [...z];
304
+ z.clear();
305
+ for (let t of e) try {
306
+ t();
307
+ } catch (e) {
308
+ queueMicrotask(() => {
309
+ throw e;
310
+ });
311
+ }
312
+ }
313
+ //#endregion
314
+ export { h as A, a as C, m as D, p as E, f as O, u as S, i as T, S as _, U as a, n as b, M as c, E as d, T as f, C as g, b as h, B as i, s as j, o as k, k as l, g as m, H as n, j as o, D as p, V as r, N as s, I as t, w as u, y as v, r as w, l as x, d as y };
221
315
 
222
- //# sourceMappingURL=gridLines-BJLaM2d7.js.map
316
+ //# sourceMappingURL=gpuContexts-Bn58hj7u.js.map