@tradecanvas/core 1.4.0 → 1.10.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 (491) hide show
  1. package/README.md +107 -107
  2. package/dist/WebGLSeriesRenderer-DQOPCwno.js +1643 -0
  3. package/dist/WebGLSeriesRenderer-DQOPCwno.js.map +1 -0
  4. package/dist/WebGLSeriesRenderer-DspCYR38.cjs +429 -0
  5. package/dist/WebGLSeriesRenderer-DspCYR38.cjs.map +1 -0
  6. package/dist/axis/GridRenderer.d.ts.map +1 -1
  7. package/dist/axis/PriceAxis.d.ts +12 -1
  8. package/dist/axis/PriceAxis.d.ts.map +1 -1
  9. package/dist/axis/TimeAxis.d.ts +7 -4
  10. package/dist/axis/TimeAxis.d.ts.map +1 -1
  11. package/dist/axis/gridLines.d.ts +9 -0
  12. package/dist/axis/gridLines.d.ts.map +1 -0
  13. package/dist/charts/BarRenderer.d.ts.map +1 -1
  14. package/dist/charts/CandlestickRenderer.d.ts.map +1 -1
  15. package/dist/charts/CompareRenderer.d.ts +21 -4
  16. package/dist/charts/CompareRenderer.d.ts.map +1 -1
  17. package/dist/charts/HiLoRenderer.d.ts +14 -0
  18. package/dist/charts/HiLoRenderer.d.ts.map +1 -0
  19. package/dist/charts/HollowCandleRenderer.d.ts.map +1 -1
  20. package/dist/charts/PeriodLevelsRenderer.d.ts.map +1 -1
  21. package/dist/charts/VolumeCandleRenderer.d.ts.map +1 -1
  22. package/dist/charts/VolumeRenderer.d.ts +6 -3
  23. package/dist/charts/VolumeRenderer.d.ts.map +1 -1
  24. package/dist/charts/denseBars.d.ts +28 -0
  25. package/dist/charts/denseBars.d.ts.map +1 -0
  26. package/dist/charts/index.d.ts +3 -0
  27. package/dist/charts/index.d.ts.map +1 -1
  28. package/dist/charts/pixelGrid.d.ts +49 -0
  29. package/dist/charts/pixelGrid.d.ts.map +1 -0
  30. package/dist/charts/transforms/kagi.d.ts +3 -2
  31. package/dist/charts/transforms/kagi.d.ts.map +1 -1
  32. package/dist/charts/transforms/renko.d.ts.map +1 -1
  33. package/dist/drawings/DrawingBase.d.ts +34 -1
  34. package/dist/drawings/DrawingBase.d.ts.map +1 -1
  35. package/dist/drawings/DrawingCreator.d.ts +51 -0
  36. package/dist/drawings/DrawingCreator.d.ts.map +1 -0
  37. package/dist/drawings/DrawingDrag.d.ts +36 -0
  38. package/dist/drawings/DrawingDrag.d.ts.map +1 -0
  39. package/dist/drawings/DrawingManager.d.ts +156 -33
  40. package/dist/drawings/DrawingManager.d.ts.map +1 -1
  41. package/dist/drawings/DrawingRenderer.d.ts +2 -2
  42. package/dist/drawings/DrawingRenderer.d.ts.map +1 -1
  43. package/dist/drawings/DrawingSelection.d.ts +28 -0
  44. package/dist/drawings/DrawingSelection.d.ts.map +1 -0
  45. package/dist/drawings/drawingHistory.d.ts +12 -0
  46. package/dist/drawings/drawingHistory.d.ts.map +1 -0
  47. package/dist/drawings/drawingShortcuts.d.ts +11 -0
  48. package/dist/drawings/drawingShortcuts.d.ts.map +1 -0
  49. package/dist/drawings/drawingState.d.ts +29 -0
  50. package/dist/drawings/drawingState.d.ts.map +1 -0
  51. package/dist/drawings/index.d.ts +2 -1
  52. package/dist/drawings/index.d.ts.map +1 -1
  53. package/dist/drawings/magnetSnap.d.ts +12 -0
  54. package/dist/drawings/magnetSnap.d.ts.map +1 -0
  55. package/dist/drawings/tools/AnchoredVWAP.d.ts.map +1 -1
  56. package/dist/drawings/tools/Circle.d.ts +1 -0
  57. package/dist/drawings/tools/Circle.d.ts.map +1 -1
  58. package/dist/drawings/tools/CrossLine.d.ts.map +1 -1
  59. package/dist/drawings/tools/DateRange.d.ts.map +1 -1
  60. package/dist/drawings/tools/ElliottWave.d.ts +128 -3
  61. package/dist/drawings/tools/ElliottWave.d.ts.map +1 -1
  62. package/dist/drawings/tools/Ellipse.d.ts +1 -0
  63. package/dist/drawings/tools/Ellipse.d.ts.map +1 -1
  64. package/dist/drawings/tools/ExtendedLine.d.ts +1 -0
  65. package/dist/drawings/tools/ExtendedLine.d.ts.map +1 -1
  66. package/dist/drawings/tools/FibChannel.d.ts +7 -0
  67. package/dist/drawings/tools/FibChannel.d.ts.map +1 -1
  68. package/dist/drawings/tools/FibExtension.d.ts +20 -0
  69. package/dist/drawings/tools/FibExtension.d.ts.map +1 -1
  70. package/dist/drawings/tools/FibRetracement.d.ts +28 -0
  71. package/dist/drawings/tools/FibRetracement.d.ts.map +1 -1
  72. package/dist/drawings/tools/FibSpeedResistanceFan.d.ts +9 -1
  73. package/dist/drawings/tools/FibSpeedResistanceFan.d.ts.map +1 -1
  74. package/dist/drawings/tools/FibTimeZones.d.ts +16 -0
  75. package/dist/drawings/tools/FibTimeZones.d.ts.map +1 -1
  76. package/dist/drawings/tools/GannBox.d.ts.map +1 -1
  77. package/dist/drawings/tools/GannFan.d.ts.map +1 -1
  78. package/dist/drawings/tools/HorizontalLine.d.ts +1 -0
  79. package/dist/drawings/tools/HorizontalLine.d.ts.map +1 -1
  80. package/dist/drawings/tools/HorizontalRay.d.ts +1 -0
  81. package/dist/drawings/tools/HorizontalRay.d.ts.map +1 -1
  82. package/dist/drawings/tools/Measure.d.ts.map +1 -1
  83. package/dist/drawings/tools/ParallelChannel.d.ts +12 -0
  84. package/dist/drawings/tools/ParallelChannel.d.ts.map +1 -1
  85. package/dist/drawings/tools/PriceLabel.d.ts +1 -0
  86. package/dist/drawings/tools/PriceLabel.d.ts.map +1 -1
  87. package/dist/drawings/tools/PriceRange.d.ts.map +1 -1
  88. package/dist/drawings/tools/Ray.d.ts +1 -0
  89. package/dist/drawings/tools/Ray.d.ts.map +1 -1
  90. package/dist/drawings/tools/Rectangle.d.ts +1 -0
  91. package/dist/drawings/tools/Rectangle.d.ts.map +1 -1
  92. package/dist/drawings/tools/RegressionChannel.d.ts +1 -0
  93. package/dist/drawings/tools/RegressionChannel.d.ts.map +1 -1
  94. package/dist/drawings/tools/RiskReward.d.ts +59 -6
  95. package/dist/drawings/tools/RiskReward.d.ts.map +1 -1
  96. package/dist/drawings/tools/TextAnnotation.d.ts +1 -0
  97. package/dist/drawings/tools/TextAnnotation.d.ts.map +1 -1
  98. package/dist/drawings/tools/TrendAngle.d.ts.map +1 -1
  99. package/dist/drawings/tools/TrendLine.d.ts +3 -0
  100. package/dist/drawings/tools/TrendLine.d.ts.map +1 -1
  101. package/dist/drawings/tools/Triangle.d.ts +1 -0
  102. package/dist/drawings/tools/Triangle.d.ts.map +1 -1
  103. package/dist/drawings/tools/VerticalLine.d.ts.map +1 -1
  104. package/dist/drawings/tools/VolumeProfileRange.d.ts +1 -0
  105. package/dist/drawings/tools/VolumeProfileRange.d.ts.map +1 -1
  106. package/dist/drawings/tools/annotations.d.ts +113 -0
  107. package/dist/drawings/tools/annotations.d.ts.map +1 -0
  108. package/dist/drawings/tools/cycles.d.ts +37 -0
  109. package/dist/drawings/tools/cycles.d.ts.map +1 -0
  110. package/dist/drawings/tools/fibGeometry.d.ts +202 -0
  111. package/dist/drawings/tools/fibGeometry.d.ts.map +1 -0
  112. package/dist/drawings/tools/forecast.d.ts +85 -0
  113. package/dist/drawings/tools/forecast.d.ts.map +1 -0
  114. package/dist/drawings/tools/freehand.d.ts +81 -0
  115. package/dist/drawings/tools/freehand.d.ts.map +1 -0
  116. package/dist/drawings/tools/index.d.ts +7 -0
  117. package/dist/drawings/tools/index.d.ts.map +1 -1
  118. package/dist/drawings/tools/labels.d.ts +32 -3
  119. package/dist/drawings/tools/labels.d.ts.map +1 -1
  120. package/dist/drawings/tools/options.d.ts +16 -0
  121. package/dist/drawings/tools/options.d.ts.map +1 -0
  122. package/dist/drawings/tools/patterns.d.ts +32 -0
  123. package/dist/drawings/tools/patterns.d.ts.map +1 -1
  124. package/dist/drawings/tools/priceLevels.d.ts +29 -0
  125. package/dist/drawings/tools/priceLevels.d.ts.map +1 -0
  126. package/dist/drawings/tools/textBox.d.ts +39 -0
  127. package/dist/drawings/tools/textBox.d.ts.map +1 -0
  128. package/dist/engine/LayerManager.d.ts +23 -0
  129. package/dist/engine/LayerManager.d.ts.map +1 -1
  130. package/dist/engine/RenderEngine.d.ts +53 -1
  131. package/dist/engine/RenderEngine.d.ts.map +1 -1
  132. package/dist/engine/gpu.d.ts +83 -0
  133. package/dist/engine/gpu.d.ts.map +1 -0
  134. package/dist/engine/index.d.ts +2 -0
  135. package/dist/engine/index.d.ts.map +1 -1
  136. package/dist/engine/loadWebGL.d.ts +9 -0
  137. package/dist/engine/loadWebGL.d.ts.map +1 -0
  138. package/dist/engine/plotSteps.d.ts +39 -0
  139. package/dist/engine/plotSteps.d.ts.map +1 -0
  140. package/dist/events/EventBus.d.ts +2 -0
  141. package/dist/events/EventBus.d.ts.map +1 -1
  142. package/dist/features/AlertManager.d.ts +117 -6
  143. package/dist/features/AlertManager.d.ts.map +1 -1
  144. package/dist/features/ChartState.d.ts +19 -1
  145. package/dist/features/ChartState.d.ts.map +1 -1
  146. package/dist/features/DataExporter.d.ts +7 -2
  147. package/dist/features/DataExporter.d.ts.map +1 -1
  148. package/dist/features/ReplayManager.d.ts +7 -0
  149. package/dist/features/ReplayManager.d.ts.map +1 -1
  150. package/dist/features/SignalMarkerManager.d.ts +8 -0
  151. package/dist/features/SignalMarkerManager.d.ts.map +1 -1
  152. package/dist/features/TradeZoneManager.d.ts.map +1 -1
  153. package/dist/features/UndoRedoManager.d.ts +30 -1
  154. package/dist/features/UndoRedoManager.d.ts.map +1 -1
  155. package/dist/features/index.d.ts +3 -1
  156. package/dist/features/index.d.ts.map +1 -1
  157. package/dist/gridLines-J41F0DQ6.cjs +2 -0
  158. package/dist/gridLines-J41F0DQ6.cjs.map +1 -0
  159. package/dist/gridLines-kFhXyH-u.js +218 -0
  160. package/dist/gridLines-kFhXyH-u.js.map +1 -0
  161. package/dist/index.cjs +11 -9
  162. package/dist/index.cjs.map +1 -1
  163. package/dist/index.js +10638 -4930
  164. package/dist/index.js.map +1 -1
  165. package/dist/indicators/IndicatorBase.d.ts +5 -1
  166. package/dist/indicators/IndicatorBase.d.ts.map +1 -1
  167. package/dist/indicators/IndicatorEngine.d.ts +123 -11
  168. package/dist/indicators/IndicatorEngine.d.ts.map +1 -1
  169. package/dist/indicators/PointwiseIndicator.d.ts +25 -0
  170. package/dist/indicators/PointwiseIndicator.d.ts.map +1 -0
  171. package/dist/indicators/index.d.ts +32 -0
  172. package/dist/indicators/index.d.ts.map +1 -1
  173. package/dist/indicators/linePen.d.ts +38 -0
  174. package/dist/indicators/linePen.d.ts.map +1 -0
  175. package/dist/indicators/math.d.ts +47 -0
  176. package/dist/indicators/math.d.ts.map +1 -0
  177. package/dist/indicators/overlay/ALMA.d.ts +20 -0
  178. package/dist/indicators/overlay/ALMA.d.ts.map +1 -0
  179. package/dist/indicators/overlay/Alligator.d.ts +2 -14
  180. package/dist/indicators/overlay/Alligator.d.ts.map +1 -1
  181. package/dist/indicators/overlay/AnchoredVWAP.d.ts +2 -9
  182. package/dist/indicators/overlay/AnchoredVWAP.d.ts.map +1 -1
  183. package/dist/indicators/overlay/BollingerBands.d.ts +2 -10
  184. package/dist/indicators/overlay/BollingerBands.d.ts.map +1 -1
  185. package/dist/indicators/overlay/ChandeKrollStop.d.ts +16 -0
  186. package/dist/indicators/overlay/ChandeKrollStop.d.ts.map +1 -0
  187. package/dist/indicators/overlay/ChandelierExit.d.ts +2 -10
  188. package/dist/indicators/overlay/ChandelierExit.d.ts.map +1 -1
  189. package/dist/indicators/overlay/DEMA.d.ts +11 -0
  190. package/dist/indicators/overlay/DEMA.d.ts.map +1 -0
  191. package/dist/indicators/overlay/DonchianChannel.d.ts +2 -9
  192. package/dist/indicators/overlay/DonchianChannel.d.ts.map +1 -1
  193. package/dist/indicators/overlay/EMA.d.ts +2 -9
  194. package/dist/indicators/overlay/EMA.d.ts.map +1 -1
  195. package/dist/indicators/overlay/Envelope.d.ts +2 -10
  196. package/dist/indicators/overlay/Envelope.d.ts.map +1 -1
  197. package/dist/indicators/overlay/GuppyMMA.d.ts +11 -0
  198. package/dist/indicators/overlay/GuppyMMA.d.ts.map +1 -0
  199. package/dist/indicators/overlay/HullMA.d.ts +2 -9
  200. package/dist/indicators/overlay/HullMA.d.ts.map +1 -1
  201. package/dist/indicators/overlay/Ichimoku.d.ts +2 -12
  202. package/dist/indicators/overlay/Ichimoku.d.ts.map +1 -1
  203. package/dist/indicators/overlay/KAMA.d.ts +15 -0
  204. package/dist/indicators/overlay/KAMA.d.ts.map +1 -0
  205. package/dist/indicators/overlay/KeltnerChannel.d.ts +2 -11
  206. package/dist/indicators/overlay/KeltnerChannel.d.ts.map +1 -1
  207. package/dist/indicators/overlay/LSMA.d.ts +19 -0
  208. package/dist/indicators/overlay/LSMA.d.ts.map +1 -0
  209. package/dist/indicators/overlay/LinearRegressionChannel.d.ts +2 -10
  210. package/dist/indicators/overlay/LinearRegressionChannel.d.ts.map +1 -1
  211. package/dist/indicators/overlay/MACross.d.ts +9 -0
  212. package/dist/indicators/overlay/MACross.d.ts.map +1 -0
  213. package/dist/indicators/overlay/MARibbon.d.ts +8 -0
  214. package/dist/indicators/overlay/MARibbon.d.ts.map +1 -0
  215. package/dist/indicators/overlay/MTFMovingAverage.d.ts +2 -10
  216. package/dist/indicators/overlay/MTFMovingAverage.d.ts.map +1 -1
  217. package/dist/indicators/overlay/McGinleyDynamic.d.ts +13 -0
  218. package/dist/indicators/overlay/McGinleyDynamic.d.ts.map +1 -0
  219. package/dist/indicators/overlay/ParabolicSAR.d.ts +2 -10
  220. package/dist/indicators/overlay/ParabolicSAR.d.ts.map +1 -1
  221. package/dist/indicators/overlay/PivotPoints.d.ts +2 -9
  222. package/dist/indicators/overlay/PivotPoints.d.ts.map +1 -1
  223. package/dist/indicators/overlay/SMA.d.ts +2 -9
  224. package/dist/indicators/overlay/SMA.d.ts.map +1 -1
  225. package/dist/indicators/overlay/SMMA.d.ts +13 -0
  226. package/dist/indicators/overlay/SMMA.d.ts.map +1 -0
  227. package/dist/indicators/overlay/SessionVWAP.d.ts +2 -9
  228. package/dist/indicators/overlay/SessionVWAP.d.ts.map +1 -1
  229. package/dist/indicators/overlay/StandardErrorBands.d.ts +12 -0
  230. package/dist/indicators/overlay/StandardErrorBands.d.ts.map +1 -0
  231. package/dist/indicators/overlay/Supertrend.d.ts +2 -10
  232. package/dist/indicators/overlay/Supertrend.d.ts.map +1 -1
  233. package/dist/indicators/overlay/TEMA.d.ts +2 -9
  234. package/dist/indicators/overlay/TEMA.d.ts.map +1 -1
  235. package/dist/indicators/overlay/VWAP.d.ts +2 -7
  236. package/dist/indicators/overlay/VWAP.d.ts.map +1 -1
  237. package/dist/indicators/overlay/VWMA.d.ts +2 -9
  238. package/dist/indicators/overlay/VWMA.d.ts.map +1 -1
  239. package/dist/indicators/overlay/WMA.d.ts +2 -9
  240. package/dist/indicators/overlay/WMA.d.ts.map +1 -1
  241. package/dist/indicators/overlay/WilliamsFractals.d.ts +15 -0
  242. package/dist/indicators/overlay/WilliamsFractals.d.ts.map +1 -0
  243. package/dist/indicators/overlay/ZigZag.d.ts +2 -9
  244. package/dist/indicators/overlay/ZigZag.d.ts.map +1 -1
  245. package/dist/indicators/panel/ADX.d.ts +2 -10
  246. package/dist/indicators/panel/ADX.d.ts.map +1 -1
  247. package/dist/indicators/panel/ATR.d.ts +2 -10
  248. package/dist/indicators/panel/ATR.d.ts.map +1 -1
  249. package/dist/indicators/panel/AcceleratorOscillator.d.ts +5 -10
  250. package/dist/indicators/panel/AcceleratorOscillator.d.ts.map +1 -1
  251. package/dist/indicators/panel/AccumulationDistribution.d.ts +2 -8
  252. package/dist/indicators/panel/AccumulationDistribution.d.ts.map +1 -1
  253. package/dist/indicators/panel/Aroon.d.ts +2 -10
  254. package/dist/indicators/panel/Aroon.d.ts.map +1 -1
  255. package/dist/indicators/panel/AverageDayRange.d.ts +9 -0
  256. package/dist/indicators/panel/AverageDayRange.d.ts.map +1 -0
  257. package/dist/indicators/panel/AwesomeOscillator.d.ts +2 -11
  258. package/dist/indicators/panel/AwesomeOscillator.d.ts.map +1 -1
  259. package/dist/indicators/panel/BalanceOfPower.d.ts +2 -10
  260. package/dist/indicators/panel/BalanceOfPower.d.ts.map +1 -1
  261. package/dist/indicators/panel/BollingerBandWidth.d.ts +18 -0
  262. package/dist/indicators/panel/BollingerBandWidth.d.ts.map +1 -0
  263. package/dist/indicators/panel/BollingerPercentB.d.ts +21 -0
  264. package/dist/indicators/panel/BollingerPercentB.d.ts.map +1 -0
  265. package/dist/indicators/panel/CCI.d.ts +2 -10
  266. package/dist/indicators/panel/CCI.d.ts.map +1 -1
  267. package/dist/indicators/panel/CMF.d.ts +2 -10
  268. package/dist/indicators/panel/CMF.d.ts.map +1 -1
  269. package/dist/indicators/panel/ChaikinOscillator.d.ts +2 -11
  270. package/dist/indicators/panel/ChaikinOscillator.d.ts.map +1 -1
  271. package/dist/indicators/panel/ChaikinVolatility.d.ts +2 -11
  272. package/dist/indicators/panel/ChaikinVolatility.d.ts.map +1 -1
  273. package/dist/indicators/panel/ChandeMomentum.d.ts +2 -10
  274. package/dist/indicators/panel/ChandeMomentum.d.ts.map +1 -1
  275. package/dist/indicators/panel/ChoppinessIndex.d.ts +2 -10
  276. package/dist/indicators/panel/ChoppinessIndex.d.ts.map +1 -1
  277. package/dist/indicators/panel/ConnorsRSI.d.ts +2 -12
  278. package/dist/indicators/panel/ConnorsRSI.d.ts.map +1 -1
  279. package/dist/indicators/panel/Coppock.d.ts +2 -12
  280. package/dist/indicators/panel/Coppock.d.ts.map +1 -1
  281. package/dist/indicators/panel/DetrendedPriceOscillator.d.ts +2 -10
  282. package/dist/indicators/panel/DetrendedPriceOscillator.d.ts.map +1 -1
  283. package/dist/indicators/panel/DisparityIndex.d.ts +2 -10
  284. package/dist/indicators/panel/DisparityIndex.d.ts.map +1 -1
  285. package/dist/indicators/panel/EaseOfMovement.d.ts +2 -12
  286. package/dist/indicators/panel/EaseOfMovement.d.ts.map +1 -1
  287. package/dist/indicators/panel/ElderRay.d.ts +3 -9
  288. package/dist/indicators/panel/ElderRay.d.ts.map +1 -1
  289. package/dist/indicators/panel/FisherTransform.d.ts +2 -10
  290. package/dist/indicators/panel/FisherTransform.d.ts.map +1 -1
  291. package/dist/indicators/panel/ForceIndex.d.ts +2 -10
  292. package/dist/indicators/panel/ForceIndex.d.ts.map +1 -1
  293. package/dist/indicators/panel/HistoricalVolatility.d.ts +22 -0
  294. package/dist/indicators/panel/HistoricalVolatility.d.ts.map +1 -0
  295. package/dist/indicators/panel/KST.d.ts +2 -18
  296. package/dist/indicators/panel/KST.d.ts.map +1 -1
  297. package/dist/indicators/panel/Klinger.d.ts +2 -12
  298. package/dist/indicators/panel/Klinger.d.ts.map +1 -1
  299. package/dist/indicators/panel/LinearRegressionSlope.d.ts +9 -0
  300. package/dist/indicators/panel/LinearRegressionSlope.d.ts.map +1 -0
  301. package/dist/indicators/panel/MACD.d.ts +2 -12
  302. package/dist/indicators/panel/MACD.d.ts.map +1 -1
  303. package/dist/indicators/panel/MFI.d.ts +2 -10
  304. package/dist/indicators/panel/MFI.d.ts.map +1 -1
  305. package/dist/indicators/panel/MassIndex.d.ts +2 -11
  306. package/dist/indicators/panel/MassIndex.d.ts.map +1 -1
  307. package/dist/indicators/panel/Momentum.d.ts +9 -0
  308. package/dist/indicators/panel/Momentum.d.ts.map +1 -0
  309. package/dist/indicators/panel/NetVolume.d.ts +11 -0
  310. package/dist/indicators/panel/NetVolume.d.ts.map +1 -0
  311. package/dist/indicators/panel/OBV.d.ts +2 -8
  312. package/dist/indicators/panel/OBV.d.ts.map +1 -1
  313. package/dist/indicators/panel/PercentagePriceOscillator.d.ts +2 -12
  314. package/dist/indicators/panel/PercentagePriceOscillator.d.ts.map +1 -1
  315. package/dist/indicators/panel/PrettyGoodOscillator.d.ts +2 -10
  316. package/dist/indicators/panel/PrettyGoodOscillator.d.ts.map +1 -1
  317. package/dist/indicators/panel/PriceVolumeTrend.d.ts +2 -8
  318. package/dist/indicators/panel/PriceVolumeTrend.d.ts.map +1 -1
  319. package/dist/indicators/panel/Qstick.d.ts +2 -10
  320. package/dist/indicators/panel/Qstick.d.ts.map +1 -1
  321. package/dist/indicators/panel/ROC.d.ts +2 -10
  322. package/dist/indicators/panel/ROC.d.ts.map +1 -1
  323. package/dist/indicators/panel/RSI.d.ts +2 -10
  324. package/dist/indicators/panel/RSI.d.ts.map +1 -1
  325. package/dist/indicators/panel/RelativeMomentumIndex.d.ts +2 -11
  326. package/dist/indicators/panel/RelativeMomentumIndex.d.ts.map +1 -1
  327. package/dist/indicators/panel/RelativeVigor.d.ts +2 -10
  328. package/dist/indicators/panel/RelativeVigor.d.ts.map +1 -1
  329. package/dist/indicators/panel/RelativeVolatilityIndex.d.ts +12 -0
  330. package/dist/indicators/panel/RelativeVolatilityIndex.d.ts.map +1 -0
  331. package/dist/indicators/panel/SchaffTrendCycle.d.ts +2 -12
  332. package/dist/indicators/panel/SchaffTrendCycle.d.ts.map +1 -1
  333. package/dist/indicators/panel/StandardError.d.ts +9 -0
  334. package/dist/indicators/panel/StandardError.d.ts.map +1 -0
  335. package/dist/indicators/panel/StdDev.d.ts +2 -10
  336. package/dist/indicators/panel/StdDev.d.ts.map +1 -1
  337. package/dist/indicators/panel/Stochastic.d.ts +2 -12
  338. package/dist/indicators/panel/Stochastic.d.ts.map +1 -1
  339. package/dist/indicators/panel/StochasticMomentumIndex.d.ts +12 -0
  340. package/dist/indicators/panel/StochasticMomentumIndex.d.ts.map +1 -0
  341. package/dist/indicators/panel/StochasticRSI.d.ts +2 -13
  342. package/dist/indicators/panel/StochasticRSI.d.ts.map +1 -1
  343. package/dist/indicators/panel/TRIX.d.ts +2 -11
  344. package/dist/indicators/panel/TRIX.d.ts.map +1 -1
  345. package/dist/indicators/panel/TSI.d.ts +2 -12
  346. package/dist/indicators/panel/TSI.d.ts.map +1 -1
  347. package/dist/indicators/panel/TrendStrengthIndex.d.ts +9 -0
  348. package/dist/indicators/panel/TrendStrengthIndex.d.ts.map +1 -0
  349. package/dist/indicators/panel/UlcerIndex.d.ts +15 -0
  350. package/dist/indicators/panel/UlcerIndex.d.ts.map +1 -0
  351. package/dist/indicators/panel/UltimateOscillator.d.ts +2 -12
  352. package/dist/indicators/panel/UltimateOscillator.d.ts.map +1 -1
  353. package/dist/indicators/panel/VROC.d.ts +2 -10
  354. package/dist/indicators/panel/VROC.d.ts.map +1 -1
  355. package/dist/indicators/panel/VolumeDelta.d.ts +2 -10
  356. package/dist/indicators/panel/VolumeDelta.d.ts.map +1 -1
  357. package/dist/indicators/panel/VolumeOscillator.d.ts +11 -0
  358. package/dist/indicators/panel/VolumeOscillator.d.ts.map +1 -0
  359. package/dist/indicators/panel/VolumeProfile.d.ts +2 -9
  360. package/dist/indicators/panel/VolumeProfile.d.ts.map +1 -1
  361. package/dist/indicators/panel/Vortex.d.ts +2 -10
  362. package/dist/indicators/panel/Vortex.d.ts.map +1 -1
  363. package/dist/indicators/panel/WilliamsAD.d.ts +2 -10
  364. package/dist/indicators/panel/WilliamsAD.d.ts.map +1 -1
  365. package/dist/indicators/panel/WilliamsR.d.ts +2 -10
  366. package/dist/indicators/panel/WilliamsR.d.ts.map +1 -1
  367. package/dist/indicators/plots.d.ts +49 -0
  368. package/dist/indicators/plots.d.ts.map +1 -0
  369. package/dist/indicators/registry.d.ts.map +1 -1
  370. package/dist/indicators/sources.d.ts +37 -0
  371. package/dist/indicators/sources.d.ts.map +1 -0
  372. package/dist/indicators/symbols/SymbolSeriesStore.d.ts +21 -0
  373. package/dist/indicators/symbols/SymbolSeriesStore.d.ts.map +1 -0
  374. package/dist/indicators/symbols/symbolIndicators.d.ts +34 -0
  375. package/dist/indicators/symbols/symbolIndicators.d.ts.map +1 -0
  376. package/dist/interaction/CrosshairHandler.d.ts +7 -4
  377. package/dist/interaction/CrosshairHandler.d.ts.map +1 -1
  378. package/dist/interaction/CrosshairTooltip.d.ts +11 -5
  379. package/dist/interaction/CrosshairTooltip.d.ts.map +1 -1
  380. package/dist/interaction/InteractionManager.d.ts +63 -1
  381. package/dist/interaction/InteractionManager.d.ts.map +1 -1
  382. package/dist/interaction/PaneResizeHandler.d.ts.map +1 -1
  383. package/dist/interaction/PinnedTooltip.d.ts +9 -1
  384. package/dist/interaction/PinnedTooltip.d.ts.map +1 -1
  385. package/dist/interaction/PriceAxisAddButton.d.ts +17 -0
  386. package/dist/interaction/PriceAxisAddButton.d.ts.map +1 -0
  387. package/dist/interaction/ZoomHandler.d.ts +8 -0
  388. package/dist/interaction/ZoomHandler.d.ts.map +1 -1
  389. package/dist/interaction/index.d.ts +2 -0
  390. package/dist/interaction/index.d.ts.map +1 -1
  391. package/dist/realtime/CurrentPriceLine.d.ts.map +1 -1
  392. package/dist/realtime/StreamManager.d.ts +5 -0
  393. package/dist/realtime/StreamManager.d.ts.map +1 -1
  394. package/dist/realtime/TickAggregator.d.ts.map +1 -1
  395. package/dist/realtime/TickBars.d.ts +58 -0
  396. package/dist/realtime/TickBars.d.ts.map +1 -0
  397. package/dist/realtime/adapters/BinanceAdapter.d.ts +24 -1
  398. package/dist/realtime/adapters/BinanceAdapter.d.ts.map +1 -1
  399. package/dist/realtime/adapters/BybitAdapter.d.ts +3 -1
  400. package/dist/realtime/adapters/BybitAdapter.d.ts.map +1 -1
  401. package/dist/realtime/adapters/CoinbaseAdapter.d.ts.map +1 -1
  402. package/dist/realtime/adapters/KrakenAdapter.d.ts.map +1 -1
  403. package/dist/realtime/adapters/MockAdapter.d.ts +19 -1
  404. package/dist/realtime/adapters/MockAdapter.d.ts.map +1 -1
  405. package/dist/realtime/adapters/PollingAdapter.d.ts +14 -1
  406. package/dist/realtime/adapters/PollingAdapter.d.ts.map +1 -1
  407. package/dist/realtime/adapters/ResamplingAdapter.d.ts +84 -0
  408. package/dist/realtime/adapters/ResamplingAdapter.d.ts.map +1 -0
  409. package/dist/realtime/adapters/WebSocketAdapter.d.ts +14 -1
  410. package/dist/realtime/adapters/WebSocketAdapter.d.ts.map +1 -1
  411. package/dist/realtime/adapters/binanceTypes.d.ts +10 -1
  412. package/dist/realtime/adapters/binanceTypes.d.ts.map +1 -1
  413. package/dist/realtime/adapters/index.d.ts +1 -0
  414. package/dist/realtime/adapters/index.d.ts.map +1 -1
  415. package/dist/realtime/index.d.ts +1 -0
  416. package/dist/realtime/index.d.ts.map +1 -1
  417. package/dist/trading/BracketTool.d.ts.map +1 -1
  418. package/dist/trading/OrderDraftTool.d.ts.map +1 -1
  419. package/dist/trading/OrderRenderer.d.ts +2 -1
  420. package/dist/trading/OrderRenderer.d.ts.map +1 -1
  421. package/dist/trading/PaperExecutionAdapter.d.ts +17 -3
  422. package/dist/trading/PaperExecutionAdapter.d.ts.map +1 -1
  423. package/dist/trading/PositionRenderer.d.ts +6 -1
  424. package/dist/trading/PositionRenderer.d.ts.map +1 -1
  425. package/dist/trading/TradingContextMenu.d.ts +1 -1
  426. package/dist/trading/TradingContextMenu.d.ts.map +1 -1
  427. package/dist/trading/TradingDragHandler.d.ts.map +1 -1
  428. package/dist/trading/TradingManager.d.ts +26 -2
  429. package/dist/trading/TradingManager.d.ts.map +1 -1
  430. package/dist/trading/TradingRenderer.d.ts +2 -0
  431. package/dist/trading/TradingRenderer.d.ts.map +1 -1
  432. package/dist/trading/fillMarks.d.ts +14 -0
  433. package/dist/trading/fillMarks.d.ts.map +1 -0
  434. package/dist/trading/lineButtons.d.ts +31 -0
  435. package/dist/trading/lineButtons.d.ts.map +1 -0
  436. package/dist/trading/plot.d.ts +4 -0
  437. package/dist/trading/plot.d.ts.map +1 -0
  438. package/dist/trading/positionFormat.d.ts +1 -1
  439. package/dist/trading/positionFormat.d.ts.map +1 -1
  440. package/dist/ui/BarCountdown.d.ts.map +1 -1
  441. package/dist/ui/PriceLines.d.ts +38 -0
  442. package/dist/ui/PriceLines.d.ts.map +1 -0
  443. package/dist/ui/SessionBreaks.d.ts +14 -1
  444. package/dist/ui/SessionBreaks.d.ts.map +1 -1
  445. package/dist/ui/SessionShading.d.ts +5 -0
  446. package/dist/ui/SessionShading.d.ts.map +1 -1
  447. package/dist/ui/Watermark.d.ts +2 -0
  448. package/dist/ui/Watermark.d.ts.map +1 -1
  449. package/dist/ui/axisValueLabels.d.ts +52 -0
  450. package/dist/ui/axisValueLabels.d.ts.map +1 -0
  451. package/dist/ui/index.d.ts +7 -1
  452. package/dist/ui/index.d.ts.map +1 -1
  453. package/dist/ui/sessionHours.d.ts +12 -2
  454. package/dist/ui/sessionHours.d.ts.map +1 -1
  455. package/dist/ui/shapes.d.ts +9 -0
  456. package/dist/ui/shapes.d.ts.map +1 -0
  457. package/dist/viewport/Viewport.d.ts +35 -2
  458. package/dist/viewport/Viewport.d.ts.map +1 -1
  459. package/dist/viewport/index.d.ts +1 -1
  460. package/dist/viewport/index.d.ts.map +1 -1
  461. package/dist/viewport/rangePresets.d.ts +4 -2
  462. package/dist/viewport/rangePresets.d.ts.map +1 -1
  463. package/dist/webgl/WebGLSeriesRenderer.d.ts +70 -0
  464. package/dist/webgl/WebGLSeriesRenderer.d.ts.map +1 -0
  465. package/dist/webgl/commandDrawer.d.ts +31 -0
  466. package/dist/webgl/commandDrawer.d.ts.map +1 -0
  467. package/dist/webgl/glColor.d.ts +13 -0
  468. package/dist/webgl/glColor.d.ts.map +1 -0
  469. package/dist/webgl/glKit.d.ts +26 -0
  470. package/dist/webgl/glKit.d.ts.map +1 -0
  471. package/dist/webgl/index.d.ts +5 -0
  472. package/dist/webgl/index.d.ts.map +1 -0
  473. package/dist/webgl/polygonSpans.d.ts +20 -0
  474. package/dist/webgl/polygonSpans.d.ts.map +1 -0
  475. package/dist/webgl/recordedCommands.d.ts +75 -0
  476. package/dist/webgl/recordedCommands.d.ts.map +1 -0
  477. package/dist/webgl/recordedPath.d.ts +51 -0
  478. package/dist/webgl/recordedPath.d.ts.map +1 -0
  479. package/dist/webgl/recordedShaders.d.ts +38 -0
  480. package/dist/webgl/recordedShaders.d.ts.map +1 -0
  481. package/dist/webgl/recorder.d.ts +67 -0
  482. package/dist/webgl/recorder.d.ts.map +1 -0
  483. package/dist/webgl/seriesUploads.d.ts +40 -0
  484. package/dist/webgl/seriesUploads.d.ts.map +1 -0
  485. package/dist/webgl/shaders.d.ts +39 -0
  486. package/dist/webgl/shaders.d.ts.map +1 -0
  487. package/dist/webgl/strokeGeometry.d.ts +28 -0
  488. package/dist/webgl/strokeGeometry.d.ts.map +1 -0
  489. package/dist/webgl/yMapping.d.ts +32 -0
  490. package/dist/webgl/yMapping.d.ts.map +1 -0
  491. package/package.json +2 -2
@@ -0,0 +1,38 @@
1
+ import { DataSeries, Theme, ViewportState } from '@tradecanvas/commons';
2
+ export type PriceLineKind = 'high' | 'low' | 'bid' | 'ask';
3
+ export interface PriceLineLevel {
4
+ kind: PriceLineKind;
5
+ price: number;
6
+ }
7
+ /** A quote: the best bid and ask. */
8
+ export interface BidAsk {
9
+ bid?: number;
10
+ ask?: number;
11
+ }
12
+ /**
13
+ * Lines across the price pane with a tag on the price axis: the highest
14
+ * high and lowest low of the bars on screen, and the bid and ask.
15
+ */
16
+ export declare class PriceLines {
17
+ private highLow;
18
+ private quote;
19
+ private quoteShown;
20
+ private priceText;
21
+ /** How its tags print a price (the chart's precision, locale and format); null: decimals. */
22
+ setPriceText(format: ((price: number) => string) | null): void;
23
+ /** Leave the bid and ask out for now (a replay: they are the live market's). */
24
+ setQuoteShown(shown: boolean): void;
25
+ /** Mark the highest high and lowest low of the bars on screen. */
26
+ setHighLow(visible: boolean): void;
27
+ isHighLowVisible(): boolean;
28
+ /** The best bid and ask, or null to take them off. */
29
+ setBidAsk(quote: BidAsk | null): void;
30
+ getBidAsk(): BidAsk | null;
31
+ /** The levels to draw over `data` as the viewport shows it. */
32
+ levels(data: DataSeries, viewport: ViewportState): PriceLineLevel[];
33
+ /** The lines, across the price pane. */
34
+ render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme, data: DataSeries): void;
35
+ /** Their tags, on the price axis (drawn over its labels). */
36
+ renderAxisTags(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme, data: DataSeries): void;
37
+ }
38
+ //# sourceMappingURL=PriceLines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PriceLines.d.ts","sourceRoot":"","sources":["../../src/ui/PriceLines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK7E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qCAAqC;AACrC,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAKD;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,SAAS,CAA4C;IAE7D,6FAA6F;IAC7F,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI;IAI9D,gFAAgF;IAChF,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAInC,kEAAkE;IAClE,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,gBAAgB,IAAI,OAAO;IAI3B,sDAAsD;IACtD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIrC,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,+DAA+D;IAC/D,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,GAAG,cAAc,EAAE;IAoBnE,wCAAwC;IACxC,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAiBpG,6DAA6D;IAC7D,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;CAoB7G"}
@@ -1,4 +1,5 @@
1
- import { ViewportState, Theme, DataSeries } from '@tradecanvas/commons';
1
+ import { ViewportState, Theme, DataSeries, TimeZoneSetting } from '@tradecanvas/commons';
2
+ import { GpuRect } from '../engine/gpu.js';
2
3
  export interface SessionBreakConfig {
3
4
  /** Whether to show session break lines */
4
5
  visible: boolean;
@@ -25,8 +26,11 @@ export declare class SessionBreaks {
25
26
  private cacheValid;
26
27
  private lastDataLength;
27
28
  private locale;
29
+ private tz;
28
30
  setConfig(config: Partial<SessionBreakConfig>): void;
29
31
  setLocale(locale: string): void;
32
+ /** Days start at midnight in this timezone (default: the browser's). */
33
+ setTimezone(tz: TimeZoneSetting): void;
30
34
  isVisible(): boolean;
31
35
  setVisible(visible: boolean): void;
32
36
  /**
@@ -36,7 +40,16 @@ export declare class SessionBreaks {
36
40
  */
37
41
  private computeBreaksTyped;
38
42
  private toMs;
43
+ /** The break lines and their labels. */
39
44
  render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme, data: DataSeries): void;
45
+ /** The break lines alone: the chart draws them under the bars and the labels over them. */
46
+ renderLines(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme, data: DataSeries): void;
47
+ /** The labels of week, month and year breaks, drawn over the bars. */
48
+ renderLabels(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme, data: DataSeries): void;
49
+ /** The break lines as filled rectangles for the GPU, dashed as the 2D lines are. */
50
+ lineRects(viewport: ViewportState, theme: Theme, data: DataSeries): GpuRect[];
51
+ /** The breaks on screen, each with its line and label, heavier as the boundary is more significant. */
52
+ private marks;
40
53
  /** Invalidate cache when data changes */
41
54
  invalidateCache(): void;
42
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SessionBreaks.d.ts","sourceRoot":"","sources":["../../src/ui/SessionBreaks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG7E,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,iBAAiB,CAA8E;IACvG,OAAO,CAAC,gBAAgB,CAAK;IAI7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,MAAM,CAAW;IAEzB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAIpD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,SAAS,IAAI,OAAO;IAIpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAgC1B,OAAO,CAAC,IAAI;IAIZ,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,UAAU,GACf,IAAI;IAoEP,yCAAyC;IACzC,eAAe,IAAI,IAAI;CAMxB"}
1
+ {"version":3,"file":"SessionBreaks.d.ts","sourceRoot":"","sources":["../../src/ui/SessionBreaks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG9F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0BD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,gBAAgB,CAAK;IAI7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,EAAE,CAAyB;IAEnC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAIpD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,wEAAwE;IACxE,WAAW,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI;IAMtC,SAAS,IAAI,OAAO;IAIpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,IAAI;IAIZ,wCAAwC;IACxC,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,UAAU,GACf,IAAI;IAKP,2FAA2F;IAC3F,WAAW,CACT,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,UAAU,GACf,IAAI;IAoBP,sEAAsE;IACtE,YAAY,CACV,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,UAAU,GACf,IAAI;IAiBP,oFAAoF;IACpF,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,EAAE;IAS7E,uGAAuG;IACvG,OAAO,CAAC,KAAK;IAyCb,yCAAyC;IACzC,eAAe,IAAI,IAAI;CAMxB"}
@@ -1,4 +1,5 @@
1
1
  import { DataSeries, ViewportState, Theme } from '@tradecanvas/commons';
2
+ import { GpuRect } from '../engine/gpu.js';
2
3
  import { SessionHoursConfig } from './sessionHours.js';
3
4
  /** US equity regular trading hours (09:30–16:00 ET) as a sensible default. */
4
5
  export declare const DEFAULT_SESSION_HOURS: SessionHoursConfig;
@@ -13,7 +14,11 @@ export declare class SessionShading {
13
14
  setVisible(v: boolean): void;
14
15
  isVisible(): boolean;
15
16
  setConfig(config: Partial<SessionHoursConfig>): void;
17
+ /** Replace the whole config, rather than merging into it. */
18
+ replaceConfig(config: SessionHoursConfig): void;
16
19
  getConfig(): SessionHoursConfig;
17
20
  render(ctx: CanvasRenderingContext2D, data: DataSeries, viewport: ViewportState, theme: Theme): void;
21
+ /** The shaded areas: a rectangle per run of bars outside the session. */
22
+ rects(data: DataSeries, viewport: ViewportState, theme: Theme): GpuRect[];
18
23
  }
19
24
  //# sourceMappingURL=SessionShading.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionShading.d.ts","sourceRoot":"","sources":["../../src/ui/SessionShading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAoB,KAAK,kBAAkB,EAAsB,MAAM,mBAAmB,CAAC;AAElG,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,EAAE,kBAInC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAoD;IAElE,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAG5B,SAAS,IAAI,OAAO;IAGpB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAMpD,SAAS,IAAI,kBAAkB;IAO/B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA+BrG"}
1
+ {"version":3,"file":"SessionShading.d.ts","sourceRoot":"","sources":["../../src/ui/SessionShading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAuC,KAAK,kBAAkB,EAAsB,MAAM,mBAAmB,CAAC;AAErH,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,EAAE,kBAKnC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAoD;IAElE,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAG5B,SAAS,IAAI,OAAO;IAGpB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAIpD,6DAA6D;IAC7D,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAG/C,SAAS,IAAI,kBAAkB;IAO/B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IASpG,yEAAyE;IACzE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE;CA6B1E"}
@@ -6,6 +6,8 @@ import { ViewportState, Theme, WatermarkConfig } from '@tradecanvas/commons';
6
6
  export declare class Watermark {
7
7
  private config;
8
8
  setConfig(config: WatermarkConfig | null): void;
9
+ /** Whether there is a watermark to draw. */
10
+ isVisible(): boolean;
9
11
  render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
10
12
  }
11
13
  //# sourceMappingURL=Watermark.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Watermark.d.ts","sourceRoot":"","sources":["../../src/ui/Watermark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAElF;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAgC;IAE9C,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAI/C,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAoBnF"}
1
+ {"version":3,"file":"Watermark.d.ts","sourceRoot":"","sources":["../../src/ui/Watermark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAElF;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAgC;IAE9C,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAI/C,4CAA4C;IAC5C,SAAS,IAAI,OAAO;IAIpB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAoBnF"}
@@ -0,0 +1,52 @@
1
+ import { Theme } from '@tradecanvas/commons';
2
+ /** A coloured tag on a value axis: an indicator line's latest value. */
3
+ export interface AxisValueLabel {
4
+ /** Where the value sits on the axis (px). */
5
+ y: number;
6
+ text: string;
7
+ /** The line's colour: the tag's background. */
8
+ color: string;
9
+ }
10
+ /**
11
+ * Decimals for an indicator value of this size (RSI 54.32, MACD 0.0012,
12
+ * 12,345.7): two for everyday values, fewer for big ones, more for small.
13
+ */
14
+ export declare function indicatorValuePrecision(value: number): number;
15
+ /** Tag height (px); tags closer than this are pushed apart. */
16
+ export declare const AXIS_LABEL_HEIGHT = 16;
17
+ /**
18
+ * Positions for tags at `ys` (sorted ascending) so that none overlap, each as
19
+ * close to its own value as the others allow, within `[top, bottom]`. When
20
+ * they cannot all fit, the first ones keep their place and the rest run past
21
+ * `bottom` (the renderer leaves those out).
22
+ */
23
+ export declare function spreadLabels(ys: readonly number[], top: number, bottom: number, height?: number): number[];
24
+ /** Dark text on a light tag, light text on a dark one. */
25
+ export declare function labelTextColor(background: string): string;
26
+ /** A tag already on the axis that value tags keep clear of: its centre and half its height. */
27
+ export interface FixedAxisTag {
28
+ y: number;
29
+ half: number;
30
+ }
31
+ /**
32
+ * Where `labels` go on an axis within `bounds`, kept clear of `fixed` tags
33
+ * (the last price, high/low, orders): each tag stays on its value's side of
34
+ * a fixed tag and is spread among its neighbours there. Tags off the axis,
35
+ * or without room left between fixed tags, are left out.
36
+ */
37
+ export declare function layoutAxisValueLabels(labels: readonly AxisValueLabel[], bounds: {
38
+ top: number;
39
+ bottom: number;
40
+ }, fixed?: readonly FixedAxisTag[], height?: number): AxisValueLabel[];
41
+ /** Draw tags already laid out (`layoutAxisValueLabels`) on the axis whose left edge is `axisX`. */
42
+ export declare function drawAxisValueLabels(ctx: CanvasRenderingContext2D, labels: readonly AxisValueLabel[], axisX: number, axisWidth: number, theme: Theme): void;
43
+ /**
44
+ * Draw `labels` on the value axis whose left edge is `axisX`, within the
45
+ * vertical `bounds`. Tags off the axis are dropped; the rest are spread so
46
+ * they do not overlap.
47
+ */
48
+ export declare function renderAxisValueLabels(ctx: CanvasRenderingContext2D, labels: readonly AxisValueLabel[], axisX: number, axisWidth: number, bounds: {
49
+ top: number;
50
+ bottom: number;
51
+ }, theme: Theme): void;
52
+ //# sourceMappingURL=axisValueLabels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axisValueLabels.d.ts","sourceRoot":"","sources":["../../src/ui/axisValueLabels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGlD,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAoB,GAAG,MAAM,EAAE,CAcrH;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAMzD;AAYD,+FAA+F;AAC/F,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACvC,KAAK,GAAE,SAAS,YAAY,EAAO,EACnC,MAAM,SAAoB,GACzB,cAAc,EAAE,CAuBlB;AAED,mGAAmG;AACnG,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK,GACX,IAAI,CAeN;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACvC,KAAK,EAAE,KAAK,GACX,IAAI,CAEN"}
@@ -6,6 +6,12 @@ export { BarCountdown } from './BarCountdown.js';
6
6
  export { SessionBreaks } from './SessionBreaks.js';
7
7
  export type { SessionBreakConfig } from './SessionBreaks.js';
8
8
  export { SessionShading, DEFAULT_SESSION_HOURS } from './SessionShading.js';
9
- export { isRegularSession, isInWindow, minuteOfDay } from './sessionHours.js';
9
+ export { isRegularSession, isInWindow, minuteOfDay, mergeSessionHours } from './sessionHours.js';
10
10
  export type { SessionHoursConfig, SessionWindow } from './sessionHours.js';
11
+ export { renderAxisValueLabels, layoutAxisValueLabels, drawAxisValueLabels, spreadLabels, labelTextColor, indicatorValuePrecision, AXIS_LABEL_HEIGHT } from './axisValueLabels.js';
12
+ export type { FixedAxisTag } from './axisValueLabels.js';
13
+ export type { AxisValueLabel } from './axisValueLabels.js';
14
+ export { PriceLines } from './PriceLines.js';
15
+ export type { PriceLineKind, PriceLineLevel, BidAsk } from './PriceLines.js';
16
+ export { fillTag } from './shapes.js';
11
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9E,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACjG,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnL,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
@@ -10,8 +10,13 @@ export interface SessionHoursConfig {
10
10
  startMinute: number;
11
11
  /** Session end, minutes from midnight (e.g. 960 = 16:00). */
12
12
  endMinute: number;
13
- /** Timezone offset applied to UTC before deriving minute-of-day (e.g. -300 for EST). */
14
- tzOffsetMinutes: number;
13
+ /** Fixed offset applied to UTC before deriving minute-of-day (e.g. -300 for EST). */
14
+ tzOffsetMinutes?: number;
15
+ /**
16
+ * The session's IANA zone (e.g. `'America/New_York'`): follows daylight
17
+ * saving time, and wins over `tzOffsetMinutes`.
18
+ */
19
+ timeZone?: string;
15
20
  /**
16
21
  * Optional split session: a list of in-session windows within the day. When
17
22
  * present and non-empty, `startMinute`/`endMinute` are ignored and a
@@ -22,6 +27,11 @@ export interface SessionHoursConfig {
22
27
  */
23
28
  windows?: SessionWindow[];
24
29
  }
30
+ /**
31
+ * `patch` over `base`. A fixed offset given without a zone replaces the zone,
32
+ * since the zone would otherwise win over it.
33
+ */
34
+ export declare function mergeSessionHours(base: SessionHoursConfig, patch: Partial<SessionHoursConfig>): SessionHoursConfig;
25
35
  /** Minute-of-day (0–1439) for a timestamp in the configured timezone. */
26
36
  export declare function minuteOfDay(timeMs: number, tzOffsetMinutes: number): number;
27
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sessionHours.d.ts","sourceRoot":"","sources":["../../src/ui/sessionHours.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,yFAAyF;IACzF,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,eAAe,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAID,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAK1F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAMpF"}
1
+ {"version":3,"file":"sessionHours.d.ts","sourceRoot":"","sources":["../../src/ui/sessionHours.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,yFAAyF;IACzF,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAOlH;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAK1F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAOpF"}
@@ -0,0 +1,9 @@
1
+ import { Theme } from '@tradecanvas/commons';
2
+ /**
3
+ * Fill a tag's box (a price tag, an axis pill, an order badge) in the
4
+ * theme's corner shape: square by default, rounded by `theme.shape.tagRadius`
5
+ * (999 or anything past half its height makes a pill). Uses the context's
6
+ * current fill.
7
+ */
8
+ export declare function fillTag(ctx: CanvasRenderingContext2D, x: number, y: number, w: number, h: number, theme: Theme): void;
9
+ //# sourceMappingURL=shapes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapes.d.ts","sourceRoot":"","sources":["../../src/ui/shapes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAmBrH"}
@@ -1,4 +1,10 @@
1
1
  import { ViewportState, Rect, DataSeries, PriceScaleMode } from '@tradecanvas/commons';
2
+ /**
3
+ * Narrowest bar slot (bar + gap) in CSS pixels. Below the usual floor
4
+ * (`minBarWidth` + the 2px gap) the chart only zooms out as far as it takes to
5
+ * fit every loaded bar, and never past this.
6
+ */
7
+ export declare const MIN_BAR_UNIT = 0.25;
2
8
  export declare class Viewport {
3
9
  private state;
4
10
  private priceAxisWidth;
@@ -35,6 +41,8 @@ export declare class Viewport {
35
41
  /** Turn the price scale upside down (higher prices lower on screen). */
36
42
  setInvertScale(inverted: boolean): void;
37
43
  isInvertScale(): boolean;
44
+ /** How prices on the scale read (null: decimals), and the step they move in (a fraction's). */
45
+ setPriceFormat(format: ((price: number) => string) | null, unit?: number | null): void;
38
46
  /** Reference price for percentage / indexed-to-100 axis labels. */
39
47
  setScaleBaseline(price: number | undefined): void;
40
48
  setRightMargin(bars: number): void;
@@ -57,7 +65,32 @@ export declare class Viewport {
57
65
  private computeChartRect;
58
66
  resize(width: number, height: number): void;
59
67
  setChartRect(rect: Rect): void;
68
+ /** The usual narrowest slot: `minBarWidth` plus the 2px gap. */
69
+ private floorUnit;
70
+ /**
71
+ * The narrowest slot right now: the usual floor, or less when the loaded
72
+ * bars only fit below it — down to `MIN_BAR_UNIT`.
73
+ */
74
+ private minUnit;
75
+ private maxUnit;
76
+ /**
77
+ * Split a slot into bar and gap: above the floor the gap stays 2px, below it
78
+ * both shrink in the floor's proportions, so the bars never turn into gaps.
79
+ */
80
+ private applyUnit;
81
+ /**
82
+ * Keep the slot within the current limits — a dense zoom of a long series
83
+ * grows back to the floor when a shorter one replaces it. Keeps the bar at
84
+ * the left edge in place.
85
+ */
86
+ private clampUnit;
60
87
  updateData(data: DataSeries, autoScale: boolean): void;
88
+ /**
89
+ * The bars on screen moved `count` slots right (bars added in front of the
90
+ * data; negative when a reshaped series lost some): move the view with
91
+ * them, so the same bars stay on screen.
92
+ */
93
+ prependBars(count: number): void;
61
94
  setPriceRange(min: number, max: number): void;
62
95
  /**
63
96
  * Multiply the visible price range by `factor` around its midpoint.
@@ -87,8 +120,8 @@ export declare class Viewport {
87
120
  zoom(delta: number, centerX: number): void;
88
121
  /**
89
122
  * Fit bar slots `from`..`to` (inclusive, fractional allowed, may extend past
90
- * the data) across the chart width. If the bar width hits its min/max the
91
- * range is centred instead.
123
+ * the data) across the chart width. If the slot hits its min/max the range
124
+ * is centred instead.
92
125
  */
93
126
  zoomToBarRange(from: number, to: number): void;
94
127
  private clampOffset;
@@ -1 +1 @@
1
- {"version":3,"file":"Viewport.d.ts","sourceRoot":"","sources":["../../src/viewport/Viewport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI5F,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAgB;IAE7B,OAAO,CAAC,cAAc,CAAoB;IAC1C;;;;;;;;;OASG;IACH,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,cAAc,CAAK;gBAGzB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,WAAW,SAAI,EACf,WAAW,SAAK,EAChB,eAAe,SAAI;IAgBrB;;;OAGG;IACH,QAAQ,IAAI,aAAa;IAmBzB,8EAA8E;IAC9E,OAAO,CAAC,UAAU;IAIlB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAInC,UAAU,IAAI,OAAO;IAIrB,mFAAmF;IACnF,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAMxC,YAAY,IAAI,cAAc;IAI9B,wEAAwE;IACxE,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAKvC,aAAa,IAAI,OAAO;IAIxB,mEAAmE;IACnE,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKjD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,cAAc,IAAI,MAAM;IAIxB;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAO1E,qGAAqG;IACrG,OAAO,CAAC,SAAS;IAKjB,yEAAyE;IACzE,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOtC,OAAO,CAAC,gBAAgB;IASxB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAM3C,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAY9B,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAsBtD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAK7C;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUrC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAOnC;;;;;;;;;OASG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAsBxC;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAKlB,WAAW,IAAI,IAAI;IAUnB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAwB1C;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAY9C,OAAO,CAAC,WAAW;IAgDnB,OAAO,CAAC,kBAAkB;CAS3B"}
1
+ {"version":3,"file":"Viewport.d.ts","sourceRoot":"","sources":["../../src/viewport/Viewport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI5F;;;;GAIG;AACH,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAgB;IAE7B,OAAO,CAAC,cAAc,CAAoB;IAC1C;;;;;;;;;OASG;IACH,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,cAAc,CAAK;gBAGzB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,WAAW,SAAI,EACf,WAAW,SAAK,EAChB,eAAe,SAAI;IAgBrB;;;OAGG;IACH,QAAQ,IAAI,aAAa;IAqBzB,8EAA8E;IAC9E,OAAO,CAAC,UAAU;IAIlB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAInC,UAAU,IAAI,OAAO;IAIrB,mFAAmF;IACnF,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAMxC,YAAY,IAAI,cAAc;IAI9B,wEAAwE;IACxE,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAKvC,aAAa,IAAI,OAAO;IAIxB,+FAA+F;IAC/F,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI;IAM5F,mEAAmE;IACnE,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKjD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,cAAc,IAAI,MAAM;IAIxB;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAO1E,qGAAqG;IACrG,OAAO,CAAC,SAAS;IAKjB,yEAAyE;IACzE,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOtC,OAAO,CAAC,gBAAgB;IASxB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAO3C,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAa9B,gEAAgE;IAChE,OAAO,CAAC,SAAS;IAIjB;;;OAGG;IACH,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,OAAO;IAIf;;;OAGG;IACH,OAAO,CAAC,SAAS;IAajB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAQjB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAuBtD;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQhC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAK7C;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUrC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAOnC;;;;;;;;;OASG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAsBxC;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAKlB,WAAW,IAAI,IAAI;IAUnB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAwB1C;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAY9C,OAAO,CAAC,WAAW;IAgDnB,OAAO,CAAC,kBAAkB;CAS3B"}
@@ -1,4 +1,4 @@
1
- export { Viewport } from './Viewport.js';
1
+ export { Viewport, MIN_BAR_UNIT } from './Viewport.js';
2
2
  export { barIndexToX, priceToY, priceToYMapper, priceBucketRow, xToBarIndex, yToPrice, timestampToBarIndex, resolveBarIndex, barTimeStep, barTimeStepMs, barIndexToTime, timeToX, xToTime, } from './ScaleMapping.js';
3
3
  export { getVisibleData } from './DataWindow.js';
4
4
  export { RANGE_PRESETS, rangePresetStart } from './rangePresets.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/viewport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,cAAc,EACd,cAAc,EACd,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,aAAa,EACb,cAAc,EACd,OAAO,EACP,OAAO,GACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/viewport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EACL,WAAW,EACX,QAAQ,EACR,cAAc,EACd,cAAc,EACd,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,aAAa,EACb,cAAc,EACd,OAAO,EACP,OAAO,GACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,10 +1,12 @@
1
+ import { TimeZoneSetting } from '@tradecanvas/commons';
1
2
  /** Spans that end at the last bar, as on a chart's range bar. */
2
3
  export type RangePreset = '1D' | '5D' | '1M' | '3M' | '6M' | 'YTD' | '1Y' | '5Y' | 'All';
3
4
  export declare const RANGE_PRESETS: readonly RangePreset[];
4
5
  /**
5
6
  * Where the preset's span starts when it ends at `end` (ms): days are counted
6
7
  * back from `end`, months and YTD in calendar terms in the display timezone
7
- * (`tzOffsetMinutes` east of UTC; null = the browser's). Null for 'All'.
8
+ * (an IANA zone, minutes east of UTC, or null for the browser's), keeping the
9
+ * wall-clock time across daylight-saving changes. Null for 'All'.
8
10
  */
9
- export declare function rangePresetStart(preset: RangePreset, end: number, tzOffsetMinutes?: number | null): number | null;
11
+ export declare function rangePresetStart(preset: RangePreset, end: number, tz?: TimeZoneSetting): number | null;
10
12
  //# sourceMappingURL=rangePresets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rangePresets.d.ts","sourceRoot":"","sources":["../../src/viewport/rangePresets.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAEzF,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAA6D,CAAC;AA6B9G;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,GAAE,MAAM,GAAG,IAAQ,GAAG,MAAM,GAAG,IAAI,CAepH"}
1
+ {"version":3,"file":"rangePresets.d.ts","sourceRoot":"","sources":["../../src/viewport/rangePresets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEjF,iEAAiE;AACjE,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAEzF,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAA6D,CAAC;AAkB9G;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,GAAE,eAAmB,GAAG,MAAM,GAAG,IAAI,CAQzG"}
@@ -0,0 +1,70 @@
1
+ import { GpuDrawn, GpuFrame, GpuRecorder, GpuRenderer } from '../engine/gpu.js';
2
+ /**
3
+ * The background (grid, sessions), candles and volume on WebGL 2, on a
4
+ * canvas of their own under the 2D scene, then whatever 2D drawing was
5
+ * recorded for it (series of other kinds, indicators, panes). The series
6
+ * lives in a GPU buffer, rewritten only where it changed; a frame sets a few
7
+ * uniforms and makes a few draw calls. Zoomed out below a pixel per bar it
8
+ * draws a column per pixel, like the 2D renderers.
9
+ */
10
+ export declare class WebGLSeriesRenderer implements GpuRenderer {
11
+ readonly canvas: HTMLCanvasElement;
12
+ readonly label: string;
13
+ private readonly gl;
14
+ private readonly kit;
15
+ private readonly drawer;
16
+ private readonly candleBars;
17
+ private readonly volumeBars;
18
+ private readonly candleColumns;
19
+ private readonly volumeColumns;
20
+ private readonly rects;
21
+ private readonly seriesBuffer;
22
+ private readonly columnBuffer;
23
+ private readonly rectBuffer;
24
+ private readonly uploads;
25
+ private gpuFloats;
26
+ private columns;
27
+ private rectValues;
28
+ /** The plot in device pixels (left, top, right, bottom), for the bar programs' clip. */
29
+ private clip;
30
+ private lost;
31
+ private lostCallback;
32
+ /** A renderer on a new canvas, or null where WebGL 2 isn't there (or, asked for, only a software one). */
33
+ static create(options?: {
34
+ failIfMajorPerformanceCaveat?: boolean;
35
+ }): WebGLSeriesRenderer | null;
36
+ private constructor();
37
+ /** `callback` once the context is lost; soon (in a microtask) if it already is. */
38
+ onLost(callback: () => void): void;
39
+ recorder(dpr: number, measure: CanvasRenderingContext2D | null): GpuRecorder;
40
+ render(frame: GpuFrame): GpuDrawn;
41
+ /** Volume and candles, clipped to the plot. */
42
+ private drawSeries;
43
+ /** Recorded rectangles: device pixels, already clipped. */
44
+ private drawRecordedRects;
45
+ destroy(): void;
46
+ private readonly handleLost;
47
+ private syncSeries;
48
+ /** Zoomed out: the bars merged per pixel column, as the 2D dense renderers merge them. */
49
+ private buildColumns;
50
+ /**
51
+ * The grid, then the other rectangles, unclipped like the 2D background.
52
+ * The grid's coverage blends as the union of its lines: colour weighted by
53
+ * coverage, alpha by the colour's own alpha (the blend constant) times
54
+ * coverage. The rest blend as Canvas 2D fills do.
55
+ */
56
+ private drawBackground;
57
+ private drawCandles;
58
+ private drawVolume;
59
+ /** Where bar `from` is, the bar step, and the wick and body widths in device pixels. */
60
+ private barUniforms;
61
+ private use;
62
+ private bindBars;
63
+ private bindRects;
64
+ private bindColumns;
65
+ private attrib;
66
+ private float;
67
+ private vec4;
68
+ private loc;
69
+ }
70
+ //# sourceMappingURL=WebGLSeriesRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebGLSeriesRenderer.d.ts","sourceRoot":"","sources":["../../src/webgl/WebGLSeriesRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,QAAQ,EAAE,QAAQ,EAAW,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuB7G;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IAqDjC,QAAQ,CAAC,MAAM,EAAE,iBAAiB;IApDtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAyB;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,UAAU,CAAsC;IACxD,wFAAwF;IACxF,OAAO,CAAC,IAAI,CAAkD;IAC9D,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,YAAY,CAA6B;IAEjD,0GAA0G;IAC1G,MAAM,CAAC,MAAM,CAAC,OAAO,GAAE;QAAE,4BAA4B,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,mBAAmB,GAAG,IAAI;IA8BnG,OAAO;IAkBP,mFAAmF;IACnF,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAUlC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI,GAAG,WAAW;IAI5E,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ;IAmBjC,+CAA+C;IAC/C,OAAO,CAAC,UAAU;IA8BlB,2DAA2D;IAC3D,OAAO,CAAC,iBAAiB;IAWzB,OAAO,IAAI,IAAI;IAiBf,OAAO,CAAC,QAAQ,CAAC,UAAU,CAKzB;IAEF,OAAO,CAAC,UAAU;IAalB,0FAA0F;IAC1F,OAAO,CAAC,YAAY;IA0BpB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoDtB,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,UAAU;IAsBlB,wFAAwF;IACxF,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,GAAG;IAoBX,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,GAAG;CAGZ"}
@@ -0,0 +1,31 @@
1
+ import { GlKit } from './glKit.js';
2
+ import { GpuCommand } from './recordedCommands.js';
3
+ /** How rectangles are drawn: the background's rectangle program, given its instances. */
4
+ export type DrawRects = (values: Float32Array, count: number) => void;
5
+ /**
6
+ * Draws recorded Canvas 2D commands, in order, over what the renderer drew
7
+ * before: strokes, polygons (as spans that hold each pixel once), discs and
8
+ * rectangles, their coverage worked out per pixel. No stencil: a stencil
9
+ * buffer the size of the canvas costs a clear every frame, used or not.
10
+ */
11
+ export declare class CommandDrawer {
12
+ private readonly kit;
13
+ private readonly stroke;
14
+ private readonly span;
15
+ private readonly disc;
16
+ private readonly buffer;
17
+ constructor(kit: GlKit);
18
+ /** Draw `commands` on a canvas `width` × `height` device pixels; rectangles through `rects`. */
19
+ draw(commands: readonly GpuCommand[], width: number, height: number, rects: DrawRects): void;
20
+ destroy(): void;
21
+ private upload;
22
+ private common;
23
+ /** Rectangles in the background program's layout: rectangle, colour, no dash. */
24
+ private drawRects;
25
+ private drawStroke;
26
+ /** A polygon's spans in its paint, clipped. */
27
+ private drawFill;
28
+ private paint;
29
+ private drawDiscs;
30
+ }
31
+ //# sourceMappingURL=commandDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandDrawer.d.ts","sourceRoot":"","sources":["../../src/webgl/commandDrawer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAW,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAO,UAAU,EAAY,MAAM,uBAAuB,CAAC;AAYvE,yFAAyF;AACzF,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEtE;;;;;GAKG;AACH,qBAAa,aAAa;IAMZ,OAAO,CAAC,QAAQ,CAAC,GAAG;IALhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAER,GAAG,EAAE,KAAK;IAOvC,gGAAgG;IAChG,IAAI,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAc5F,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,MAAM;IASd,iFAAiF;IACjF,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,UAAU;IAclB,+CAA+C;IAC/C,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,KAAK;IAgBb,OAAO,CAAC,SAAS;CAQlB"}
@@ -0,0 +1,13 @@
1
+ /** A colour as WebGL takes it: red, green, blue, alpha, each 0 to 1. */
2
+ export type RGBA = [number, number, number, number];
3
+ /** A CSS colour as WebGL takes it, or null when it can't be read (Canvas 2D ignores such a style). */
4
+ export declare function readColor(color: string): RGBA | null;
5
+ /**
6
+ * Any CSS colour the chart's themes use, for WebGL. Hex and rgb() are read
7
+ * directly; anything else goes through the browser. Unreadable colours come
8
+ * back transparent, as Canvas 2D would leave them unpainted.
9
+ */
10
+ export declare function parseColor(color: string): RGBA;
11
+ /** The colour multiplied by its alpha, the form the canvas blends in. */
12
+ export declare function premultiplied([r, g, b, a]: RGBA): RGBA;
13
+ //# sourceMappingURL=glColor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glColor.d.ts","sourceRoot":"","sources":["../../src/webgl/glColor.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAgEpD,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAUpD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAEtD"}
@@ -0,0 +1,26 @@
1
+ /** A linked program, its vertex array, and the locations it was asked for. */
2
+ export interface Program {
3
+ program: WebGLProgram;
4
+ vao: WebGLVertexArrayObject;
5
+ uniforms: Map<string, WebGLUniformLocation | null>;
6
+ attribs: Map<string, number>;
7
+ }
8
+ /** The few WebGL 2 chores every program here needs: compile, link, bind, set. */
9
+ export declare class GlKit {
10
+ readonly gl: WebGL2RenderingContext;
11
+ constructor(gl: WebGL2RenderingContext);
12
+ program(vertexSource: string, fragmentSource: string, attribs: readonly string[]): Program;
13
+ buffer(): WebGLBuffer;
14
+ use(p: Program): Program;
15
+ /** A float attribute read from the bound buffer; per instance unless `divisor` is 0. */
16
+ attrib(p: Program, name: string, size: number, stride: number, offset: number, divisor?: number): void;
17
+ int(p: Program, name: string, v: number): void;
18
+ float(p: Program, name: string, v: number): void;
19
+ vec2(p: Program, name: string, x: number, y: number): void;
20
+ vec4(p: Program, name: string, v: readonly number[]): void;
21
+ loc(p: Program, name: string): WebGLUniformLocation | null;
22
+ deleteProgram(p: Program): void;
23
+ /** Scissor to a box in device pixels (y down), widened to whole pixels. False when nothing is left. */
24
+ scissor(x0: number, y0: number, x1: number, y1: number, canvasWidth: number, canvasHeight: number): boolean;
25
+ }
26
+ //# sourceMappingURL=glKit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glKit.d.ts","sourceRoot":"","sources":["../../src/webgl/glKit.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,sBAAsB,CAAC;IAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACnD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,iFAAiF;AACjF,qBAAa,KAAK;IACJ,QAAQ,CAAC,EAAE,EAAE,sBAAsB;gBAA1B,EAAE,EAAE,sBAAsB;IAE/C,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO;IAiC1F,MAAM,IAAI,WAAW;IAMrB,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAMxB,wFAAwF;IACxF,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,IAAI;IASjG,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAI9C,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1D,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAI1D,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAK1D,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAK/B,uGAAuG;IACvG,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;CAW5G"}
@@ -0,0 +1,5 @@
1
+ export { WebGLSeriesRenderer } from './WebGLSeriesRenderer.js';
2
+ export { parseColor, premultiplied } from './glColor.js';
3
+ export type { RGBA } from './glColor.js';
4
+ export { SeriesUploads, FLOATS_PER_BAR } from './seriesUploads.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/webgl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACzD,YAAY,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Polygons the chart fills, as spans the GPU fills straight (no stencil):
3
+ * each pixel inside lies in exactly one span, so it is painted once, as
4
+ * Canvas 2D paints a fill.
5
+ *
6
+ * The chart's fills are bands and areas: two chains running left to right
7
+ * from the polygon's leftmost corner to its rightmost (a channel's upper and
8
+ * lower lines, a line and its base, a cloud's two spans). Filled by winding,
9
+ * nonzero or even-odd alike, such a polygon is what lies between its chains,
10
+ * whichever is on top. So it goes column by column: between two corners'
11
+ * x, each chain is one straight line, and the fill is between the two lines.
12
+ * Any other shape gives null (Canvas 2D draws it).
13
+ */
14
+ /** Numbers per span: x0, x1, then chain a's y at x0 and x1, chain b's y at x0 and x1, then 1 if x0 is the polygon's left end, 1 if x1 is its right end. */
15
+ export declare const SPAN_FLOATS = 8;
16
+ /** The spans filling the closed polygon `points` (x, y pairs); null when it isn't two left-to-right chains. */
17
+ export declare function polygonSpans(points: readonly number[]): number[] | null;
18
+ /** The signed area of the closed polygon `points`: its sign is the way it winds. */
19
+ export declare function signedArea(points: readonly number[]): number;
20
+ //# sourceMappingURL=polygonSpans.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polygonSpans.d.ts","sourceRoot":"","sources":["../../src/webgl/polygonSpans.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,2JAA2J;AAC3J,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,+GAA+G;AAC/G,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAevE;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAQ5D"}