@tradecanvas/core 1.4.0 → 1.7.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 (422) hide show
  1. package/LICENSE +21 -21
  2. package/dist/axis/PriceAxis.d.ts +10 -1
  3. package/dist/axis/PriceAxis.d.ts.map +1 -1
  4. package/dist/axis/TimeAxis.d.ts +7 -4
  5. package/dist/axis/TimeAxis.d.ts.map +1 -1
  6. package/dist/charts/BarRenderer.d.ts.map +1 -1
  7. package/dist/charts/CandlestickRenderer.d.ts.map +1 -1
  8. package/dist/charts/CompareRenderer.d.ts +21 -4
  9. package/dist/charts/CompareRenderer.d.ts.map +1 -1
  10. package/dist/charts/HiLoRenderer.d.ts +14 -0
  11. package/dist/charts/HiLoRenderer.d.ts.map +1 -0
  12. package/dist/charts/HollowCandleRenderer.d.ts.map +1 -1
  13. package/dist/charts/PeriodLevelsRenderer.d.ts.map +1 -1
  14. package/dist/charts/VolumeCandleRenderer.d.ts.map +1 -1
  15. package/dist/charts/VolumeRenderer.d.ts.map +1 -1
  16. package/dist/charts/denseBars.d.ts +28 -0
  17. package/dist/charts/denseBars.d.ts.map +1 -0
  18. package/dist/charts/index.d.ts +3 -0
  19. package/dist/charts/index.d.ts.map +1 -1
  20. package/dist/charts/transforms/kagi.d.ts +3 -2
  21. package/dist/charts/transforms/kagi.d.ts.map +1 -1
  22. package/dist/charts/transforms/renko.d.ts.map +1 -1
  23. package/dist/drawings/DrawingBase.d.ts +30 -1
  24. package/dist/drawings/DrawingBase.d.ts.map +1 -1
  25. package/dist/drawings/DrawingCreator.d.ts +51 -0
  26. package/dist/drawings/DrawingCreator.d.ts.map +1 -0
  27. package/dist/drawings/DrawingDrag.d.ts +36 -0
  28. package/dist/drawings/DrawingDrag.d.ts.map +1 -0
  29. package/dist/drawings/DrawingManager.d.ts +156 -33
  30. package/dist/drawings/DrawingManager.d.ts.map +1 -1
  31. package/dist/drawings/DrawingSelection.d.ts +28 -0
  32. package/dist/drawings/DrawingSelection.d.ts.map +1 -0
  33. package/dist/drawings/drawingHistory.d.ts +12 -0
  34. package/dist/drawings/drawingHistory.d.ts.map +1 -0
  35. package/dist/drawings/drawingShortcuts.d.ts +11 -0
  36. package/dist/drawings/drawingShortcuts.d.ts.map +1 -0
  37. package/dist/drawings/drawingState.d.ts +29 -0
  38. package/dist/drawings/drawingState.d.ts.map +1 -0
  39. package/dist/drawings/index.d.ts +2 -1
  40. package/dist/drawings/index.d.ts.map +1 -1
  41. package/dist/drawings/magnetSnap.d.ts +12 -0
  42. package/dist/drawings/magnetSnap.d.ts.map +1 -0
  43. package/dist/drawings/tools/AnchoredVWAP.d.ts.map +1 -1
  44. package/dist/drawings/tools/Circle.d.ts +1 -0
  45. package/dist/drawings/tools/Circle.d.ts.map +1 -1
  46. package/dist/drawings/tools/ElliottWave.d.ts +128 -3
  47. package/dist/drawings/tools/ElliottWave.d.ts.map +1 -1
  48. package/dist/drawings/tools/Ellipse.d.ts +1 -0
  49. package/dist/drawings/tools/Ellipse.d.ts.map +1 -1
  50. package/dist/drawings/tools/ExtendedLine.d.ts +1 -0
  51. package/dist/drawings/tools/ExtendedLine.d.ts.map +1 -1
  52. package/dist/drawings/tools/FibChannel.d.ts +7 -0
  53. package/dist/drawings/tools/FibChannel.d.ts.map +1 -1
  54. package/dist/drawings/tools/FibExtension.d.ts +20 -0
  55. package/dist/drawings/tools/FibExtension.d.ts.map +1 -1
  56. package/dist/drawings/tools/FibRetracement.d.ts +28 -0
  57. package/dist/drawings/tools/FibRetracement.d.ts.map +1 -1
  58. package/dist/drawings/tools/FibSpeedResistanceFan.d.ts +9 -1
  59. package/dist/drawings/tools/FibSpeedResistanceFan.d.ts.map +1 -1
  60. package/dist/drawings/tools/FibTimeZones.d.ts +16 -0
  61. package/dist/drawings/tools/FibTimeZones.d.ts.map +1 -1
  62. package/dist/drawings/tools/HorizontalLine.d.ts +1 -0
  63. package/dist/drawings/tools/HorizontalLine.d.ts.map +1 -1
  64. package/dist/drawings/tools/HorizontalRay.d.ts +1 -0
  65. package/dist/drawings/tools/HorizontalRay.d.ts.map +1 -1
  66. package/dist/drawings/tools/Measure.d.ts.map +1 -1
  67. package/dist/drawings/tools/ParallelChannel.d.ts +12 -0
  68. package/dist/drawings/tools/ParallelChannel.d.ts.map +1 -1
  69. package/dist/drawings/tools/PriceLabel.d.ts +1 -0
  70. package/dist/drawings/tools/PriceLabel.d.ts.map +1 -1
  71. package/dist/drawings/tools/PriceRange.d.ts.map +1 -1
  72. package/dist/drawings/tools/Ray.d.ts +1 -0
  73. package/dist/drawings/tools/Ray.d.ts.map +1 -1
  74. package/dist/drawings/tools/Rectangle.d.ts +1 -0
  75. package/dist/drawings/tools/Rectangle.d.ts.map +1 -1
  76. package/dist/drawings/tools/RegressionChannel.d.ts +1 -0
  77. package/dist/drawings/tools/RegressionChannel.d.ts.map +1 -1
  78. package/dist/drawings/tools/RiskReward.d.ts +59 -6
  79. package/dist/drawings/tools/RiskReward.d.ts.map +1 -1
  80. package/dist/drawings/tools/TextAnnotation.d.ts +1 -0
  81. package/dist/drawings/tools/TextAnnotation.d.ts.map +1 -1
  82. package/dist/drawings/tools/TrendLine.d.ts +3 -0
  83. package/dist/drawings/tools/TrendLine.d.ts.map +1 -1
  84. package/dist/drawings/tools/Triangle.d.ts +1 -0
  85. package/dist/drawings/tools/Triangle.d.ts.map +1 -1
  86. package/dist/drawings/tools/VolumeProfileRange.d.ts +1 -0
  87. package/dist/drawings/tools/VolumeProfileRange.d.ts.map +1 -1
  88. package/dist/drawings/tools/annotations.d.ts +113 -0
  89. package/dist/drawings/tools/annotations.d.ts.map +1 -0
  90. package/dist/drawings/tools/cycles.d.ts +37 -0
  91. package/dist/drawings/tools/cycles.d.ts.map +1 -0
  92. package/dist/drawings/tools/fibGeometry.d.ts +202 -0
  93. package/dist/drawings/tools/fibGeometry.d.ts.map +1 -0
  94. package/dist/drawings/tools/forecast.d.ts +85 -0
  95. package/dist/drawings/tools/forecast.d.ts.map +1 -0
  96. package/dist/drawings/tools/freehand.d.ts +81 -0
  97. package/dist/drawings/tools/freehand.d.ts.map +1 -0
  98. package/dist/drawings/tools/index.d.ts +7 -0
  99. package/dist/drawings/tools/index.d.ts.map +1 -1
  100. package/dist/drawings/tools/labels.d.ts +6 -3
  101. package/dist/drawings/tools/labels.d.ts.map +1 -1
  102. package/dist/drawings/tools/options.d.ts +8 -0
  103. package/dist/drawings/tools/options.d.ts.map +1 -0
  104. package/dist/drawings/tools/patterns.d.ts +32 -0
  105. package/dist/drawings/tools/patterns.d.ts.map +1 -1
  106. package/dist/drawings/tools/priceLevels.d.ts +29 -0
  107. package/dist/drawings/tools/priceLevels.d.ts.map +1 -0
  108. package/dist/drawings/tools/textBox.d.ts +39 -0
  109. package/dist/drawings/tools/textBox.d.ts.map +1 -0
  110. package/dist/engine/RenderEngine.d.ts +23 -0
  111. package/dist/engine/RenderEngine.d.ts.map +1 -1
  112. package/dist/events/EventBus.d.ts +2 -0
  113. package/dist/events/EventBus.d.ts.map +1 -1
  114. package/dist/features/AlertManager.d.ts +117 -6
  115. package/dist/features/AlertManager.d.ts.map +1 -1
  116. package/dist/features/ChartState.d.ts +19 -1
  117. package/dist/features/ChartState.d.ts.map +1 -1
  118. package/dist/features/DataExporter.d.ts +7 -2
  119. package/dist/features/DataExporter.d.ts.map +1 -1
  120. package/dist/features/ReplayManager.d.ts +7 -0
  121. package/dist/features/ReplayManager.d.ts.map +1 -1
  122. package/dist/features/SignalMarkerManager.d.ts +8 -0
  123. package/dist/features/SignalMarkerManager.d.ts.map +1 -1
  124. package/dist/features/TradeZoneManager.d.ts.map +1 -1
  125. package/dist/features/UndoRedoManager.d.ts +30 -1
  126. package/dist/features/UndoRedoManager.d.ts.map +1 -1
  127. package/dist/features/index.d.ts +3 -1
  128. package/dist/features/index.d.ts.map +1 -1
  129. package/dist/index.cjs +11 -9
  130. package/dist/index.cjs.map +1 -1
  131. package/dist/index.js +10423 -5014
  132. package/dist/index.js.map +1 -1
  133. package/dist/indicators/IndicatorBase.d.ts +5 -1
  134. package/dist/indicators/IndicatorBase.d.ts.map +1 -1
  135. package/dist/indicators/IndicatorEngine.d.ts +121 -11
  136. package/dist/indicators/IndicatorEngine.d.ts.map +1 -1
  137. package/dist/indicators/PointwiseIndicator.d.ts +25 -0
  138. package/dist/indicators/PointwiseIndicator.d.ts.map +1 -0
  139. package/dist/indicators/index.d.ts +32 -0
  140. package/dist/indicators/index.d.ts.map +1 -1
  141. package/dist/indicators/math.d.ts +47 -0
  142. package/dist/indicators/math.d.ts.map +1 -0
  143. package/dist/indicators/overlay/ALMA.d.ts +20 -0
  144. package/dist/indicators/overlay/ALMA.d.ts.map +1 -0
  145. package/dist/indicators/overlay/Alligator.d.ts +2 -14
  146. package/dist/indicators/overlay/Alligator.d.ts.map +1 -1
  147. package/dist/indicators/overlay/AnchoredVWAP.d.ts +2 -9
  148. package/dist/indicators/overlay/AnchoredVWAP.d.ts.map +1 -1
  149. package/dist/indicators/overlay/BollingerBands.d.ts +2 -10
  150. package/dist/indicators/overlay/BollingerBands.d.ts.map +1 -1
  151. package/dist/indicators/overlay/ChandeKrollStop.d.ts +16 -0
  152. package/dist/indicators/overlay/ChandeKrollStop.d.ts.map +1 -0
  153. package/dist/indicators/overlay/ChandelierExit.d.ts +2 -10
  154. package/dist/indicators/overlay/ChandelierExit.d.ts.map +1 -1
  155. package/dist/indicators/overlay/DEMA.d.ts +11 -0
  156. package/dist/indicators/overlay/DEMA.d.ts.map +1 -0
  157. package/dist/indicators/overlay/DonchianChannel.d.ts +2 -9
  158. package/dist/indicators/overlay/DonchianChannel.d.ts.map +1 -1
  159. package/dist/indicators/overlay/EMA.d.ts +2 -9
  160. package/dist/indicators/overlay/EMA.d.ts.map +1 -1
  161. package/dist/indicators/overlay/Envelope.d.ts +2 -10
  162. package/dist/indicators/overlay/Envelope.d.ts.map +1 -1
  163. package/dist/indicators/overlay/GuppyMMA.d.ts +11 -0
  164. package/dist/indicators/overlay/GuppyMMA.d.ts.map +1 -0
  165. package/dist/indicators/overlay/HullMA.d.ts +2 -9
  166. package/dist/indicators/overlay/HullMA.d.ts.map +1 -1
  167. package/dist/indicators/overlay/Ichimoku.d.ts +2 -12
  168. package/dist/indicators/overlay/Ichimoku.d.ts.map +1 -1
  169. package/dist/indicators/overlay/KAMA.d.ts +15 -0
  170. package/dist/indicators/overlay/KAMA.d.ts.map +1 -0
  171. package/dist/indicators/overlay/KeltnerChannel.d.ts +2 -11
  172. package/dist/indicators/overlay/KeltnerChannel.d.ts.map +1 -1
  173. package/dist/indicators/overlay/LSMA.d.ts +19 -0
  174. package/dist/indicators/overlay/LSMA.d.ts.map +1 -0
  175. package/dist/indicators/overlay/LinearRegressionChannel.d.ts +2 -10
  176. package/dist/indicators/overlay/LinearRegressionChannel.d.ts.map +1 -1
  177. package/dist/indicators/overlay/MACross.d.ts +9 -0
  178. package/dist/indicators/overlay/MACross.d.ts.map +1 -0
  179. package/dist/indicators/overlay/MARibbon.d.ts +8 -0
  180. package/dist/indicators/overlay/MARibbon.d.ts.map +1 -0
  181. package/dist/indicators/overlay/MTFMovingAverage.d.ts +2 -10
  182. package/dist/indicators/overlay/MTFMovingAverage.d.ts.map +1 -1
  183. package/dist/indicators/overlay/McGinleyDynamic.d.ts +13 -0
  184. package/dist/indicators/overlay/McGinleyDynamic.d.ts.map +1 -0
  185. package/dist/indicators/overlay/ParabolicSAR.d.ts +2 -10
  186. package/dist/indicators/overlay/ParabolicSAR.d.ts.map +1 -1
  187. package/dist/indicators/overlay/PivotPoints.d.ts +2 -9
  188. package/dist/indicators/overlay/PivotPoints.d.ts.map +1 -1
  189. package/dist/indicators/overlay/SMA.d.ts +2 -9
  190. package/dist/indicators/overlay/SMA.d.ts.map +1 -1
  191. package/dist/indicators/overlay/SMMA.d.ts +13 -0
  192. package/dist/indicators/overlay/SMMA.d.ts.map +1 -0
  193. package/dist/indicators/overlay/SessionVWAP.d.ts +2 -9
  194. package/dist/indicators/overlay/SessionVWAP.d.ts.map +1 -1
  195. package/dist/indicators/overlay/StandardErrorBands.d.ts +12 -0
  196. package/dist/indicators/overlay/StandardErrorBands.d.ts.map +1 -0
  197. package/dist/indicators/overlay/Supertrend.d.ts +2 -10
  198. package/dist/indicators/overlay/Supertrend.d.ts.map +1 -1
  199. package/dist/indicators/overlay/TEMA.d.ts +2 -9
  200. package/dist/indicators/overlay/TEMA.d.ts.map +1 -1
  201. package/dist/indicators/overlay/VWAP.d.ts +2 -7
  202. package/dist/indicators/overlay/VWAP.d.ts.map +1 -1
  203. package/dist/indicators/overlay/VWMA.d.ts +2 -9
  204. package/dist/indicators/overlay/VWMA.d.ts.map +1 -1
  205. package/dist/indicators/overlay/WMA.d.ts +2 -9
  206. package/dist/indicators/overlay/WMA.d.ts.map +1 -1
  207. package/dist/indicators/overlay/WilliamsFractals.d.ts +15 -0
  208. package/dist/indicators/overlay/WilliamsFractals.d.ts.map +1 -0
  209. package/dist/indicators/overlay/ZigZag.d.ts +2 -9
  210. package/dist/indicators/overlay/ZigZag.d.ts.map +1 -1
  211. package/dist/indicators/panel/ADX.d.ts +2 -10
  212. package/dist/indicators/panel/ADX.d.ts.map +1 -1
  213. package/dist/indicators/panel/ATR.d.ts +2 -10
  214. package/dist/indicators/panel/ATR.d.ts.map +1 -1
  215. package/dist/indicators/panel/AcceleratorOscillator.d.ts +5 -10
  216. package/dist/indicators/panel/AcceleratorOscillator.d.ts.map +1 -1
  217. package/dist/indicators/panel/AccumulationDistribution.d.ts +2 -8
  218. package/dist/indicators/panel/AccumulationDistribution.d.ts.map +1 -1
  219. package/dist/indicators/panel/Aroon.d.ts +2 -10
  220. package/dist/indicators/panel/Aroon.d.ts.map +1 -1
  221. package/dist/indicators/panel/AverageDayRange.d.ts +9 -0
  222. package/dist/indicators/panel/AverageDayRange.d.ts.map +1 -0
  223. package/dist/indicators/panel/AwesomeOscillator.d.ts +2 -11
  224. package/dist/indicators/panel/AwesomeOscillator.d.ts.map +1 -1
  225. package/dist/indicators/panel/BalanceOfPower.d.ts +2 -10
  226. package/dist/indicators/panel/BalanceOfPower.d.ts.map +1 -1
  227. package/dist/indicators/panel/BollingerBandWidth.d.ts +18 -0
  228. package/dist/indicators/panel/BollingerBandWidth.d.ts.map +1 -0
  229. package/dist/indicators/panel/BollingerPercentB.d.ts +21 -0
  230. package/dist/indicators/panel/BollingerPercentB.d.ts.map +1 -0
  231. package/dist/indicators/panel/CCI.d.ts +2 -10
  232. package/dist/indicators/panel/CCI.d.ts.map +1 -1
  233. package/dist/indicators/panel/CMF.d.ts +2 -10
  234. package/dist/indicators/panel/CMF.d.ts.map +1 -1
  235. package/dist/indicators/panel/ChaikinOscillator.d.ts +2 -11
  236. package/dist/indicators/panel/ChaikinOscillator.d.ts.map +1 -1
  237. package/dist/indicators/panel/ChaikinVolatility.d.ts +2 -11
  238. package/dist/indicators/panel/ChaikinVolatility.d.ts.map +1 -1
  239. package/dist/indicators/panel/ChandeMomentum.d.ts +2 -10
  240. package/dist/indicators/panel/ChandeMomentum.d.ts.map +1 -1
  241. package/dist/indicators/panel/ChoppinessIndex.d.ts +2 -10
  242. package/dist/indicators/panel/ChoppinessIndex.d.ts.map +1 -1
  243. package/dist/indicators/panel/ConnorsRSI.d.ts +2 -12
  244. package/dist/indicators/panel/ConnorsRSI.d.ts.map +1 -1
  245. package/dist/indicators/panel/Coppock.d.ts +2 -12
  246. package/dist/indicators/panel/Coppock.d.ts.map +1 -1
  247. package/dist/indicators/panel/DetrendedPriceOscillator.d.ts +2 -10
  248. package/dist/indicators/panel/DetrendedPriceOscillator.d.ts.map +1 -1
  249. package/dist/indicators/panel/DisparityIndex.d.ts +2 -10
  250. package/dist/indicators/panel/DisparityIndex.d.ts.map +1 -1
  251. package/dist/indicators/panel/EaseOfMovement.d.ts +2 -12
  252. package/dist/indicators/panel/EaseOfMovement.d.ts.map +1 -1
  253. package/dist/indicators/panel/ElderRay.d.ts +3 -9
  254. package/dist/indicators/panel/ElderRay.d.ts.map +1 -1
  255. package/dist/indicators/panel/FisherTransform.d.ts +2 -10
  256. package/dist/indicators/panel/FisherTransform.d.ts.map +1 -1
  257. package/dist/indicators/panel/ForceIndex.d.ts +2 -10
  258. package/dist/indicators/panel/ForceIndex.d.ts.map +1 -1
  259. package/dist/indicators/panel/HistoricalVolatility.d.ts +22 -0
  260. package/dist/indicators/panel/HistoricalVolatility.d.ts.map +1 -0
  261. package/dist/indicators/panel/KST.d.ts +2 -18
  262. package/dist/indicators/panel/KST.d.ts.map +1 -1
  263. package/dist/indicators/panel/Klinger.d.ts +2 -12
  264. package/dist/indicators/panel/Klinger.d.ts.map +1 -1
  265. package/dist/indicators/panel/LinearRegressionSlope.d.ts +9 -0
  266. package/dist/indicators/panel/LinearRegressionSlope.d.ts.map +1 -0
  267. package/dist/indicators/panel/MACD.d.ts +2 -12
  268. package/dist/indicators/panel/MACD.d.ts.map +1 -1
  269. package/dist/indicators/panel/MFI.d.ts +2 -10
  270. package/dist/indicators/panel/MFI.d.ts.map +1 -1
  271. package/dist/indicators/panel/MassIndex.d.ts +2 -11
  272. package/dist/indicators/panel/MassIndex.d.ts.map +1 -1
  273. package/dist/indicators/panel/Momentum.d.ts +9 -0
  274. package/dist/indicators/panel/Momentum.d.ts.map +1 -0
  275. package/dist/indicators/panel/NetVolume.d.ts +11 -0
  276. package/dist/indicators/panel/NetVolume.d.ts.map +1 -0
  277. package/dist/indicators/panel/OBV.d.ts +2 -8
  278. package/dist/indicators/panel/OBV.d.ts.map +1 -1
  279. package/dist/indicators/panel/PercentagePriceOscillator.d.ts +2 -12
  280. package/dist/indicators/panel/PercentagePriceOscillator.d.ts.map +1 -1
  281. package/dist/indicators/panel/PrettyGoodOscillator.d.ts +2 -10
  282. package/dist/indicators/panel/PrettyGoodOscillator.d.ts.map +1 -1
  283. package/dist/indicators/panel/PriceVolumeTrend.d.ts +2 -8
  284. package/dist/indicators/panel/PriceVolumeTrend.d.ts.map +1 -1
  285. package/dist/indicators/panel/Qstick.d.ts +2 -10
  286. package/dist/indicators/panel/Qstick.d.ts.map +1 -1
  287. package/dist/indicators/panel/ROC.d.ts +2 -10
  288. package/dist/indicators/panel/ROC.d.ts.map +1 -1
  289. package/dist/indicators/panel/RSI.d.ts +2 -10
  290. package/dist/indicators/panel/RSI.d.ts.map +1 -1
  291. package/dist/indicators/panel/RelativeMomentumIndex.d.ts +2 -11
  292. package/dist/indicators/panel/RelativeMomentumIndex.d.ts.map +1 -1
  293. package/dist/indicators/panel/RelativeVigor.d.ts +2 -10
  294. package/dist/indicators/panel/RelativeVigor.d.ts.map +1 -1
  295. package/dist/indicators/panel/RelativeVolatilityIndex.d.ts +12 -0
  296. package/dist/indicators/panel/RelativeVolatilityIndex.d.ts.map +1 -0
  297. package/dist/indicators/panel/SchaffTrendCycle.d.ts +2 -12
  298. package/dist/indicators/panel/SchaffTrendCycle.d.ts.map +1 -1
  299. package/dist/indicators/panel/StandardError.d.ts +9 -0
  300. package/dist/indicators/panel/StandardError.d.ts.map +1 -0
  301. package/dist/indicators/panel/StdDev.d.ts +2 -10
  302. package/dist/indicators/panel/StdDev.d.ts.map +1 -1
  303. package/dist/indicators/panel/Stochastic.d.ts +2 -12
  304. package/dist/indicators/panel/Stochastic.d.ts.map +1 -1
  305. package/dist/indicators/panel/StochasticMomentumIndex.d.ts +12 -0
  306. package/dist/indicators/panel/StochasticMomentumIndex.d.ts.map +1 -0
  307. package/dist/indicators/panel/StochasticRSI.d.ts +2 -13
  308. package/dist/indicators/panel/StochasticRSI.d.ts.map +1 -1
  309. package/dist/indicators/panel/TRIX.d.ts +2 -11
  310. package/dist/indicators/panel/TRIX.d.ts.map +1 -1
  311. package/dist/indicators/panel/TSI.d.ts +2 -12
  312. package/dist/indicators/panel/TSI.d.ts.map +1 -1
  313. package/dist/indicators/panel/TrendStrengthIndex.d.ts +9 -0
  314. package/dist/indicators/panel/TrendStrengthIndex.d.ts.map +1 -0
  315. package/dist/indicators/panel/UlcerIndex.d.ts +15 -0
  316. package/dist/indicators/panel/UlcerIndex.d.ts.map +1 -0
  317. package/dist/indicators/panel/UltimateOscillator.d.ts +2 -12
  318. package/dist/indicators/panel/UltimateOscillator.d.ts.map +1 -1
  319. package/dist/indicators/panel/VROC.d.ts +2 -10
  320. package/dist/indicators/panel/VROC.d.ts.map +1 -1
  321. package/dist/indicators/panel/VolumeDelta.d.ts +2 -10
  322. package/dist/indicators/panel/VolumeDelta.d.ts.map +1 -1
  323. package/dist/indicators/panel/VolumeOscillator.d.ts +11 -0
  324. package/dist/indicators/panel/VolumeOscillator.d.ts.map +1 -0
  325. package/dist/indicators/panel/VolumeProfile.d.ts +2 -9
  326. package/dist/indicators/panel/VolumeProfile.d.ts.map +1 -1
  327. package/dist/indicators/panel/Vortex.d.ts +2 -10
  328. package/dist/indicators/panel/Vortex.d.ts.map +1 -1
  329. package/dist/indicators/panel/WilliamsAD.d.ts +2 -10
  330. package/dist/indicators/panel/WilliamsAD.d.ts.map +1 -1
  331. package/dist/indicators/panel/WilliamsR.d.ts +2 -10
  332. package/dist/indicators/panel/WilliamsR.d.ts.map +1 -1
  333. package/dist/indicators/plots.d.ts +49 -0
  334. package/dist/indicators/plots.d.ts.map +1 -0
  335. package/dist/indicators/registry.d.ts.map +1 -1
  336. package/dist/indicators/sources.d.ts +37 -0
  337. package/dist/indicators/sources.d.ts.map +1 -0
  338. package/dist/indicators/symbols/SymbolSeriesStore.d.ts +21 -0
  339. package/dist/indicators/symbols/SymbolSeriesStore.d.ts.map +1 -0
  340. package/dist/indicators/symbols/symbolIndicators.d.ts +34 -0
  341. package/dist/indicators/symbols/symbolIndicators.d.ts.map +1 -0
  342. package/dist/interaction/CrosshairHandler.d.ts +7 -4
  343. package/dist/interaction/CrosshairHandler.d.ts.map +1 -1
  344. package/dist/interaction/CrosshairTooltip.d.ts +11 -5
  345. package/dist/interaction/CrosshairTooltip.d.ts.map +1 -1
  346. package/dist/interaction/InteractionManager.d.ts +63 -1
  347. package/dist/interaction/InteractionManager.d.ts.map +1 -1
  348. package/dist/interaction/PaneResizeHandler.d.ts.map +1 -1
  349. package/dist/interaction/PinnedTooltip.d.ts +9 -1
  350. package/dist/interaction/PinnedTooltip.d.ts.map +1 -1
  351. package/dist/interaction/PriceAxisAddButton.d.ts +17 -0
  352. package/dist/interaction/PriceAxisAddButton.d.ts.map +1 -0
  353. package/dist/interaction/ZoomHandler.d.ts +8 -0
  354. package/dist/interaction/ZoomHandler.d.ts.map +1 -1
  355. package/dist/interaction/index.d.ts +2 -0
  356. package/dist/interaction/index.d.ts.map +1 -1
  357. package/dist/realtime/CurrentPriceLine.d.ts.map +1 -1
  358. package/dist/realtime/StreamManager.d.ts +5 -0
  359. package/dist/realtime/StreamManager.d.ts.map +1 -1
  360. package/dist/realtime/TickAggregator.d.ts.map +1 -1
  361. package/dist/realtime/TickBars.d.ts +58 -0
  362. package/dist/realtime/TickBars.d.ts.map +1 -0
  363. package/dist/realtime/adapters/BinanceAdapter.d.ts +24 -1
  364. package/dist/realtime/adapters/BinanceAdapter.d.ts.map +1 -1
  365. package/dist/realtime/adapters/BybitAdapter.d.ts +3 -1
  366. package/dist/realtime/adapters/BybitAdapter.d.ts.map +1 -1
  367. package/dist/realtime/adapters/CoinbaseAdapter.d.ts.map +1 -1
  368. package/dist/realtime/adapters/KrakenAdapter.d.ts.map +1 -1
  369. package/dist/realtime/adapters/MockAdapter.d.ts +19 -1
  370. package/dist/realtime/adapters/MockAdapter.d.ts.map +1 -1
  371. package/dist/realtime/adapters/PollingAdapter.d.ts +14 -1
  372. package/dist/realtime/adapters/PollingAdapter.d.ts.map +1 -1
  373. package/dist/realtime/adapters/ResamplingAdapter.d.ts +84 -0
  374. package/dist/realtime/adapters/ResamplingAdapter.d.ts.map +1 -0
  375. package/dist/realtime/adapters/WebSocketAdapter.d.ts +14 -1
  376. package/dist/realtime/adapters/WebSocketAdapter.d.ts.map +1 -1
  377. package/dist/realtime/adapters/binanceTypes.d.ts +10 -1
  378. package/dist/realtime/adapters/binanceTypes.d.ts.map +1 -1
  379. package/dist/realtime/adapters/index.d.ts +1 -0
  380. package/dist/realtime/adapters/index.d.ts.map +1 -1
  381. package/dist/realtime/index.d.ts +1 -0
  382. package/dist/realtime/index.d.ts.map +1 -1
  383. package/dist/trading/BracketTool.d.ts.map +1 -1
  384. package/dist/trading/OrderDraftTool.d.ts.map +1 -1
  385. package/dist/trading/OrderRenderer.d.ts +2 -1
  386. package/dist/trading/OrderRenderer.d.ts.map +1 -1
  387. package/dist/trading/PaperExecutionAdapter.d.ts +17 -3
  388. package/dist/trading/PaperExecutionAdapter.d.ts.map +1 -1
  389. package/dist/trading/PositionRenderer.d.ts +6 -1
  390. package/dist/trading/PositionRenderer.d.ts.map +1 -1
  391. package/dist/trading/TradingContextMenu.d.ts +1 -1
  392. package/dist/trading/TradingContextMenu.d.ts.map +1 -1
  393. package/dist/trading/TradingManager.d.ts +23 -2
  394. package/dist/trading/TradingManager.d.ts.map +1 -1
  395. package/dist/trading/fillMarks.d.ts +14 -0
  396. package/dist/trading/fillMarks.d.ts.map +1 -0
  397. package/dist/trading/lineButtons.d.ts +31 -0
  398. package/dist/trading/lineButtons.d.ts.map +1 -0
  399. package/dist/trading/positionFormat.d.ts +1 -1
  400. package/dist/trading/positionFormat.d.ts.map +1 -1
  401. package/dist/ui/BarCountdown.d.ts.map +1 -1
  402. package/dist/ui/PriceLines.d.ts +38 -0
  403. package/dist/ui/PriceLines.d.ts.map +1 -0
  404. package/dist/ui/SessionBreaks.d.ts +4 -1
  405. package/dist/ui/SessionBreaks.d.ts.map +1 -1
  406. package/dist/ui/SessionShading.d.ts +2 -0
  407. package/dist/ui/SessionShading.d.ts.map +1 -1
  408. package/dist/ui/axisValueLabels.d.ts +35 -0
  409. package/dist/ui/axisValueLabels.d.ts.map +1 -0
  410. package/dist/ui/index.d.ts +6 -1
  411. package/dist/ui/index.d.ts.map +1 -1
  412. package/dist/ui/sessionHours.d.ts +12 -2
  413. package/dist/ui/sessionHours.d.ts.map +1 -1
  414. package/dist/ui/shapes.d.ts +9 -0
  415. package/dist/ui/shapes.d.ts.map +1 -0
  416. package/dist/viewport/Viewport.d.ts +35 -2
  417. package/dist/viewport/Viewport.d.ts.map +1 -1
  418. package/dist/viewport/index.d.ts +1 -1
  419. package/dist/viewport/index.d.ts.map +1 -1
  420. package/dist/viewport/rangePresets.d.ts +4 -2
  421. package/dist/viewport/rangePresets.d.ts.map +1 -1
  422. package/package.json +2 -2
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 TradeCanvas Contributors
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 TradeCanvas Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,4 +1,9 @@
1
1
  import { ViewportState, Theme } from '@tradecanvas/commons';
2
+ /**
3
+ * A price on a scale: rebased on a percent / indexed scale, else in the
4
+ * chart's price format (`viewport.formatPrice`), else in decimals.
5
+ */
6
+ export declare function priceScaleText(price: number, viewport: ViewportState, precision: number, locale: string): string;
2
7
  export declare class PriceAxis {
3
8
  private locale;
4
9
  private reservedPrice;
@@ -8,6 +13,10 @@ export declare class PriceAxis {
8
13
  */
9
14
  setReservedPriceProvider(provider: (() => number | null) | null): void;
10
15
  setLocale(locale: string): void;
11
- render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme): void;
16
+ /**
17
+ * Draw the scale beside the plot: on the right (the price scale), or on the
18
+ * left — labels right-aligned against the plot, no last-price tag to avoid.
19
+ */
20
+ render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme, side?: 'right' | 'left'): void;
12
21
  }
13
22
  //# sourceMappingURL=PriceAxis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PriceAxis.d.ts","sourceRoot":"","sources":["../../src/axis/PriceAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAOjE,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,aAAa,CAAsC;IAE3D;;;OAGG;IACH,wBAAwB,CAAC,QAAQ,EAAE,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAItE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAyDnF"}
1
+ {"version":3,"file":"PriceAxis.d.ts","sourceRoot":"","sources":["../../src/axis/PriceAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGjE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMhH;AAcD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,aAAa,CAAsC;IAE3D;;;OAGG;IACH,wBAAwB,CAAC,QAAQ,EAAE,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAItE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,OAAO,GAAG,MAAgB,GAAG,IAAI;CAyDrH"}
@@ -1,10 +1,13 @@
1
- import { ViewportState, Theme, DataSeries } from '@tradecanvas/commons';
1
+ import { ViewportState, Theme, DataSeries, TimeFormatter, TimeZoneSetting } from '@tradecanvas/commons';
2
2
  /** Space kept between the last tick label and the timezone tag. */
3
3
  export declare const TZ_LABEL_GAP_PX = 8;
4
4
  export declare class TimeAxis {
5
- /** null = browser-local timezone; a number = fixed UTC offset in minutes. */
6
- private tzOffsetMinutes;
7
- setTimezoneOffset(minutes: number | null): void;
5
+ /** An IANA zone, a fixed UTC offset in minutes, or null for the browser's zone. */
6
+ private tz;
7
+ private timeFormatter;
8
+ setTimezoneOffset(tz: TimeZoneSetting): void;
9
+ /** Labels in your words, or null for its own. */
10
+ setTimeFormatter(formatter: TimeFormatter | null): void;
8
11
  render(ctx: CanvasRenderingContext2D, viewport: ViewportState, theme: Theme, data: DataSeries, axisYOverride?: number): void;
9
12
  }
10
13
  //# sourceMappingURL=TimeAxis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimeAxis.d.ts","sourceRoot":"","sources":["../../src/axis/TimeAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAM7E,mEAAmE;AACnE,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,qBAAa,QAAQ;IACnB,6EAA6E;IAC7E,OAAO,CAAC,eAAe,CAAuB;IAE9C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI/C,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;CA6E7H"}
1
+ {"version":3,"file":"TimeAxis.d.ts","sourceRoot":"","sources":["../../src/axis/TimeAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAqB,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMhI,mEAAmE;AACnE,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,qBAAa,QAAQ;IACnB,mFAAmF;IACnF,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,aAAa,CAA8B;IAEnD,iBAAiB,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI;IAI5C,iDAAiD;IACjD,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAIvD,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;CAoF7H"}
@@ -1 +1 @@
1
- {"version":3,"file":"BarRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/BarRenderer.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,qBAAa,WAAY,YAAW,sBAAsB;IACxD,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA8CrG"}
1
+ {"version":3,"file":"BarRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/BarRenderer.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;AAIjE,qBAAa,WAAY,YAAW,sBAAsB;IACxD,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAkDrG"}
@@ -1 +1 @@
1
- {"version":3,"file":"CandlestickRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/CandlestickRenderer.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,qBAAa,mBAAoB,YAAW,sBAAsB;IAChE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA4DrG"}
1
+ {"version":3,"file":"CandlestickRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/CandlestickRenderer.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;AAIjE,qBAAa,mBAAoB,YAAW,sBAAsB;IAChE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAgErG"}
@@ -8,21 +8,38 @@ export interface CompareSymbol {
8
8
  visible: boolean;
9
9
  }
10
10
  /**
11
- * Renders comparison overlays on the main chart.
12
- * Each compare symbol is normalized to percentage change from the first visible bar,
13
- * then mapped onto the main chart's price axis.
11
+ * Renders comparison overlays on the main chart. Each compare series is
12
+ * lined up with the main bars by time (its bar at or before each one), and
13
+ * in percent mode rebased on the first main bar on screen it has a value
14
+ * for, then mapped onto the main chart's price axis.
14
15
  */
15
16
  export declare class CompareRenderer {
16
17
  private symbols;
17
18
  private mode;
19
+ private store;
20
+ /** Each series' closes on the main bars, for the main series it was worked out for. */
21
+ private aligned;
18
22
  setMode(mode: 'percent' | 'absolute'): void;
23
+ getMode(): 'percent' | 'absolute';
19
24
  addSymbol(symbol: CompareSymbol): void;
20
25
  removeSymbol(id: string): void;
21
26
  setSymbolData(id: string, data: DataSeries): void;
22
27
  setSymbolVisible(id: string, visible: boolean): void;
23
28
  getSymbols(): CompareSymbol[];
24
29
  clear(): void;
25
- render(ctx: CanvasRenderingContext2D, mainData: DataSeries, viewport: ViewportState, theme: Theme): void;
30
+ /**
31
+ * The prices the visible compare lines reach on the main scale (rebased in
32
+ * percent mode), for the auto scale; null with none on screen.
33
+ */
34
+ getPriceRange(mainData: DataSeries, viewport: ViewportState): {
35
+ min: number;
36
+ max: number;
37
+ } | null;
38
+ render(ctx: CanvasRenderingContext2D, mainData: DataSeries, viewport: ViewportState, _theme: Theme): void;
39
+ /** `sym`'s closes on the bars of `main` (NaN where it has none). */
40
+ private closesOn;
41
+ /** The visible stretch of `sym`'s line and its price at each main bar there. */
42
+ private line;
26
43
  private renderSymbol;
27
44
  }
28
45
  //# sourceMappingURL=CompareRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CompareRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/CompareRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG7E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,IAAI,CAAqC;IAEjD,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI;IAI3C,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAItC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI9B,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAKjD,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAKpD,UAAU,IAAI,aAAa,EAAE;IAI7B,KAAK,IAAI,IAAI;IAIb,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,GACX,IAAI;IAkBP,OAAO,CAAC,YAAY;CAuErB"}
1
+ {"version":3,"file":"CompareRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/CompareRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI7E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,IAAI,CAAqC;IACjD,OAAO,CAAC,KAAK,CAA2B;IACxC,uFAAuF;IACvF,OAAO,CAAC,OAAO,CAAqH;IAEpI,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI;IAI3C,OAAO,IAAI,SAAS,GAAG,UAAU;IAIjC,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAMtC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAM9B,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAQjD,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAKpD,UAAU,IAAI,aAAa,EAAE;IAI7B,KAAK,IAAI,IAAI;IAMb;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAiBjG,MAAM,CACJ,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,KAAK,GACZ,IAAI;IAkBP,oEAAoE;IACpE,OAAO,CAAC,QAAQ;IAahB,gFAAgF;IAChF,OAAO,CAAC,IAAI;IAwBZ,OAAO,CAAC,YAAY;CAoCrB"}
@@ -0,0 +1,14 @@
1
+ import { DataSeries, ViewportState, Theme } from '@tradecanvas/commons';
2
+ import { ChartRendererInterface } from './ChartRenderer.js';
3
+ /**
4
+ * High-low bars: one bar from each bar's low to its high, coloured by its
5
+ * direction (close against open). Wide bars carry their high above and
6
+ * their low below.
7
+ */
8
+ export declare class HiLoRenderer implements ChartRendererInterface {
9
+ private priceText;
10
+ /** How its labels print a price (the chart's precision, locale and format); null: decimals. */
11
+ setPriceText(format: ((price: number) => string) | null): void;
12
+ render(ctx: CanvasRenderingContext2D, data: DataSeries, viewport: ViewportState, theme: Theme): void;
13
+ }
14
+ //# sourceMappingURL=HiLoRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HiLoRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/HiLoRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAQjE;;;;GAIG;AACH,qBAAa,YAAa,YAAW,sBAAsB;IACzD,OAAO,CAAC,SAAS,CAA4C;IAE7D,+FAA+F;IAC/F,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI;IAI9D,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAqCrG"}
@@ -1 +1 @@
1
- {"version":3,"file":"HollowCandleRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/HollowCandleRenderer.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,oBAAqB,YAAW,sBAAsB;IACjE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA2ErG"}
1
+ {"version":3,"file":"HollowCandleRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/HollowCandleRenderer.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;AAIjE;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,sBAAsB;IACjE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA+ErG"}
@@ -1 +1 @@
1
- {"version":3,"file":"PeriodLevelsRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/PeriodLevelsRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAuB,KAAK,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AAE3F;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAsB;IAEpC,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAG5B,SAAS,IAAI,OAAO;IAGpB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAGpC,SAAS,IAAI,WAAW;IAIxB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA2CrG"}
1
+ {"version":3,"file":"PeriodLevelsRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/PeriodLevelsRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG7E,OAAO,EAAuB,KAAK,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AAE3F;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAsB;IAEpC,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAG5B,SAAS,IAAI,OAAO;IAGpB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAGpC,SAAS,IAAI,WAAW;IAIxB,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA2CrG"}
@@ -1 +1 @@
1
- {"version":3,"file":"VolumeCandleRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/VolumeCandleRenderer.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,qBAAa,oBAAqB,YAAW,sBAAsB;IACjE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA4DrG"}
1
+ {"version":3,"file":"VolumeCandleRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/VolumeCandleRenderer.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;AAIjE,qBAAa,oBAAqB,YAAW,sBAAsB;IACjE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAgErG"}
@@ -1 +1 @@
1
- {"version":3,"file":"VolumeRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/VolumeRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7E;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAAO;IAE1B,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAC5B,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAE/B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA0CrG"}
1
+ {"version":3,"file":"VolumeRenderer.d.ts","sourceRoot":"","sources":["../../src/charts/VolumeRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG7E;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAAO;IAE1B,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAC5B,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAE/B,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAkDrG"}
@@ -0,0 +1,28 @@
1
+ import { DataSeries, ViewportState } from '@tradecanvas/commons';
2
+ /**
3
+ * Below this bar width (CSS px) bar-shaped charts draw one column per pixel
4
+ * instead of one shape per bar: thousands of sub-pixel candles would blur
5
+ * into each other and cost a path segment each.
6
+ */
7
+ export declare const DENSE_BAR_WIDTH = 1;
8
+ export declare function isDense(viewport: Pick<ViewportState, 'barWidth'>): boolean;
9
+ /** The bars on one pixel column merged into one: first open, last close, extremes, largest volume. */
10
+ export interface PixelColumn {
11
+ x: number;
12
+ open: number;
13
+ high: number;
14
+ low: number;
15
+ close: number;
16
+ volume: number;
17
+ }
18
+ /**
19
+ * Walk bars `from`..`to` merged per pixel column (`Math.floor` of their x).
20
+ * The column object is reused between calls: copy it to keep it.
21
+ */
22
+ export declare function forEachPixelColumn(data: DataSeries, from: number, to: number, toX: (index: number) => number, visit: (column: Readonly<PixelColumn>) => void): void;
23
+ /**
24
+ * Draw a dense price series as one high–low line per pixel column, coloured by
25
+ * the column's direction (its last close against its first open).
26
+ */
27
+ export declare function renderDenseBars(ctx: CanvasRenderingContext2D, data: DataSeries, viewport: ViewportState, upColor: string, downColor: string): void;
28
+ //# sourceMappingURL=denseBars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"denseBars.d.ts","sourceRoot":"","sources":["../../src/charts/denseBars.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGtE;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,wBAAgB,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,OAAO,CAE1E;AAED,sGAAsG;AACtG,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EAC9B,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,IAAI,GAC7C,IAAI,CA2BN;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,IAAI,CAqBN"}
@@ -13,6 +13,7 @@ export { EquivolumeRenderer } from './EquivolumeRenderer.js';
13
13
  export { HLCAreaRenderer } from './HLCAreaRenderer.js';
14
14
  export { StepLineRenderer } from './StepLineRenderer.js';
15
15
  export { LineWithMarkersRenderer } from './LineWithMarkersRenderer.js';
16
+ export { HiLoRenderer } from './HiLoRenderer.js';
16
17
  export { VolumeRenderer } from './VolumeRenderer.js';
17
18
  export { VolumeProfileRenderer } from './VolumeProfileRenderer.js';
18
19
  export { MarketProfileRenderer } from './MarketProfileRenderer.js';
@@ -31,5 +32,7 @@ export type { DepthSnapshot } from './DepthHeatmapBuffer.js';
31
32
  export { CompareRenderer } from './CompareRenderer.js';
32
33
  export type { CompareSymbol } from './CompareRenderer.js';
33
34
  export { lttbDownsample, lttbVisibleIndices } from './downsample.js';
35
+ export { DENSE_BAR_WIDTH, isDense, forEachPixelColumn, renderDenseBars } from './denseBars.js';
36
+ export type { PixelColumn } from './denseBars.js';
34
37
  export * from './transforms/index.js';
35
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/charts/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnH,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrE,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/charts/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnH,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC/F,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,cAAc,uBAAuB,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { DataSeries } from '@tradecanvas/commons';
2
2
  /**
3
3
  * Kagi chart.
4
- * Changes direction when price reverses by the reversal amount.
4
+ * Changes direction when price reverses by the reversal amount: `reversal`
5
+ * percent of the line's start, or `reversal` itself with `mode` 'price'.
5
6
  * Thick lines (yang) for uptrends, thin lines (yin) for downtrends.
6
7
  */
7
- export declare function toKagi(data: DataSeries, reversalPercent?: number): DataSeries;
8
+ export declare function toKagi(data: DataSeries, reversal?: number, mode?: 'percent' | 'price'): DataSeries;
8
9
  //# sourceMappingURL=kagi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kagi.d.ts","sourceRoot":"","sources":["../../../src/charts/transforms/kagi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,SAAI,GAAG,UAAU,CA2DxE"}
1
+ {"version":3,"file":"kagi.d.ts","sourceRoot":"","sources":["../../../src/charts/transforms/kagi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,SAAI,EAAE,IAAI,GAAE,SAAS,GAAG,OAAmB,GAAG,UAAU,CA2DxG"}
@@ -1 +1 @@
1
- {"version":3,"file":"renko.d.ts","sourceRoot":"","sources":["../../../src/charts/transforms/renko.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAoCzE"}
1
+ {"version":3,"file":"renko.d.ts","sourceRoot":"","sources":["../../../src/charts/transforms/renko.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAqCzE"}
@@ -1,9 +1,38 @@
1
- import { DrawingPlugin, DrawingDescriptor, DrawingState, DrawingStyle, Point, ViewportState, AnchorPoint } from '@tradecanvas/commons';
1
+ import { DrawingPlugin, DrawingDescriptor, DrawingLevel, DrawingOptionValue, DrawingState, DrawingStyle, Point, ViewportState, AnchorPoint } from '@tradecanvas/commons';
2
+ /**
3
+ * How a line is straight on the chart: along `at` (a time's bar position, or
4
+ * the time itself) and `value` (log price on a log scale, else price).
5
+ */
6
+ export interface LineSpace {
7
+ at(time: number): number;
8
+ value(price: number): number;
9
+ price(value: number): number;
10
+ }
11
+ /** The space lines are straight in on this chart; plain time and price without a viewport. */
12
+ export declare function lineSpace(viewport?: ViewportState): LineSpace;
13
+ /** How far `point` is from the segment `p1`–`p2` (px). */
14
+ export declare function distanceToSegment(point: Point, p1: Point, p2: Point): number;
15
+ /** Whether `point` is within `tolerance` of the line through `pts` (and back to the start, with `close`). */
16
+ export declare function nearPolyline(point: Point, pts: readonly Point[], tolerance: number, close?: boolean): boolean;
2
17
  export declare abstract class DrawingBase implements DrawingPlugin {
3
18
  abstract descriptor: DrawingDescriptor;
4
19
  abstract render(ctx: CanvasRenderingContext2D, state: DrawingState, viewport: ViewportState, selected: boolean): void;
5
20
  abstract hitTest(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): boolean;
6
21
  hitTestAnchor(point: Point, state: DrawingState, viewport: ViewportState, tolerance: number): number;
22
+ /** One of the drawing's options (see `descriptor.options`), its default when unset. */
23
+ protected option<T extends DrawingOptionValue>(state: DrawingState, key: string): T;
24
+ /** The levels turned on, in order. */
25
+ protected visibleLevels(state: DrawingState, key?: string): DrawingLevel[];
26
+ /** The line from `p1` to `p2`, carried to the edge of the chart past either end when asked. */
27
+ protected extendLine(p1: Point, p2: Point, viewport: ViewportState, left: boolean, right: boolean): [Point, Point];
28
+ /**
29
+ * The price on the line through `a` and `b` at `time`: between the anchors,
30
+ * or past `a` / past `b` when the line is extended that way. Null elsewhere,
31
+ * or for a vertical line. `space` is the one the line is straight in.
32
+ */
33
+ protected linePriceAt(a: AnchorPoint, b: AnchorPoint, time: number, pastA: boolean, pastB: boolean, space?: LineSpace): number | null;
34
+ /** `linePriceAt` in `space`'s values (log price on a log scale). */
35
+ protected lineValueAt(a: AnchorPoint, b: AnchorPoint, time: number, pastA: boolean, pastB: boolean, space: LineSpace): number | null;
7
36
  protected anchorToPixel(anchor: AnchorPoint, viewport: ViewportState): Point;
8
37
  protected pixelToAnchor(point: Point, viewport: ViewportState): AnchorPoint;
9
38
  protected applyLineStyle(ctx: CanvasRenderingContext2D, style: DrawingStyle): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DrawingBase.d.ts","sourceRoot":"","sources":["../../src/drawings/DrawingBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,aAAa,EACb,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAG9B,8BAAsB,WAAY,YAAW,aAAa;IACxD,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IAEvC,QAAQ,CAAC,MAAM,CACb,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,OAAO,GAChB,IAAI;IAEP,QAAQ,CAAC,OAAO,CACd,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,GAChB,OAAO;IAEV,aAAa,CACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,GAChB,MAAM;IAST,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK;IAM5E,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,WAAW;IAM3E,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI;IAUlF,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;IAI7D,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAYhH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM;IAYpE,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM;CAO7E"}
1
+ {"version":3,"file":"DrawingBase.d.ts","sourceRoot":"","sources":["../../src/drawings/DrawingBase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,aAAa,EACb,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAG9B;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAID,8FAA8F;AAC9F,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,SAAS,CAS7D;AAED,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM,CAO5E;AAED,6GAA6G;AAC7G,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAK3G;AAYD,8BAAsB,WAAY,YAAW,aAAa;IACxD,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IAEvC,QAAQ,CAAC,MAAM,CACb,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,OAAO,GAChB,IAAI;IAEP,QAAQ,CAAC,OAAO,CACd,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,GAChB,OAAO;IAEV,aAAa,CACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,GAChB,MAAM;IAST,uFAAuF;IACvF,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,kBAAkB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;IAUnF,sCAAsC;IACtC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,SAAW,GAAG,YAAY,EAAE;IAI5E,+FAA+F;IAC/F,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;IAclH;;;;OAIG;IACH,SAAS,CAAC,WAAW,CACnB,CAAC,EAAE,WAAW,EACd,CAAC,EAAE,WAAW,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,EACd,KAAK,GAAE,SAAuB,GAC7B,MAAM,GAAG,IAAI;IAKhB,oEAAoE;IACpE,SAAS,CAAC,WAAW,CACnB,CAAC,EAAE,WAAW,EACd,CAAC,EAAE,WAAW,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,SAAS,GACf,MAAM,GAAG,IAAI;IAUhB,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK;IAM5E,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,WAAW;IAM3E,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI;IAUlF,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;IAI7D,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAYhH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM;IAIpE,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM;CAO7E"}
@@ -0,0 +1,51 @@
1
+ import { AnchorPoint, DrawingPlugin, DrawingState, Point } from '@tradecanvas/commons';
2
+ /** What a press, move or release did to the drawing being made. */
3
+ export type CreationStep = 'continue' | 'done' | 'cancel';
4
+ /** Most points a freehand stroke keeps. */
5
+ export declare const MAX_FREEHAND_POINTS = 2000;
6
+ /** Most points a path takes unless its tool says otherwise. */
7
+ export declare const MAX_PATH_POINTS = 100;
8
+ /**
9
+ * The drawing being made with the pointer, for each way a tool is drawn
10
+ * (`DrawingDescriptor.creation`):
11
+ * - clicks: a click per anchor until it has `requiredAnchors`;
12
+ * - freehand: press and drag, a point every few pixels, release to finish;
13
+ * - path: a click per point; a double-click, Enter or a click on the last
14
+ * point finishes it.
15
+ */
16
+ export declare class DrawingCreator {
17
+ private drawing;
18
+ private plugin;
19
+ private preview;
20
+ private lastPos;
21
+ private dragging;
22
+ /** Pixels between freehand points; doubled each time the stroke is thinned. */
23
+ private step;
24
+ /** The drawing being made (its committed anchors), or null. */
25
+ get current(): DrawingState | null;
26
+ reset(): void;
27
+ /**
28
+ * A press at `anchor` (at `pos` on screen). `start` makes the drawing on the
29
+ * first one. `onScreen` puts an anchor where it is now, so a path ends on a
30
+ * click on its last point even after the chart was panned.
31
+ */
32
+ press(plugin: DrawingPlugin, start: () => DrawingState, anchor: AnchorPoint, pos: Point, onScreen?: (anchor: AnchorPoint) => Point): CreationStep;
33
+ /** The pointer moved: a freehand stroke takes a point, others show where the next anchor would go. */
34
+ move(anchor: AnchorPoint, pos: Point): boolean;
35
+ /** The press ended: a freehand stroke is done (or dropped, when it never moved). */
36
+ release(): CreationStep | null;
37
+ /**
38
+ * Take back the last point clicked (Ctrl+Z while drawing). False when there
39
+ * was only the first one: the drawing is dropped then.
40
+ */
41
+ undoPoint(): boolean;
42
+ /** End a path here (Enter, or a double-click): done when it has enough points. */
43
+ finish(): CreationStep;
44
+ /** The drawing as shown while it is made: its anchors, and the one under the pointer. */
45
+ previewState(): DrawingState | null;
46
+ /** Take the finished drawing; the creator is empty after. */
47
+ take(): DrawingState | null;
48
+ private hasEnough;
49
+ private commit;
50
+ }
51
+ //# sourceMappingURL=DrawingCreator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrawingCreator.d.ts","sourceRoot":"","sources":["../../src/drawings/DrawingCreator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE5F,mEAAmE;AACnE,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAM1D,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,+DAA+D;AAC/D,eAAO,MAAM,eAAe,MAAM,CAAC;AAMnC;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAS;IACzB,+EAA+E;IAC/E,OAAO,CAAC,IAAI,CAAoB;IAEhC,+DAA+D;IAC/D,IAAI,OAAO,IAAI,YAAY,GAAG,IAAI,CAEjC;IAED,KAAK,IAAI,IAAI;IASb;;;;OAIG;IACH,KAAK,CACH,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,YAAY,EACzB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,KAAK,EACV,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,KAAK,GACxC,YAAY;IAyBf,sGAAsG;IACtG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO;IAqB9C,oFAAoF;IACpF,OAAO,IAAI,YAAY,GAAG,IAAI;IAM9B;;;OAGG;IACH,SAAS,IAAI,OAAO;IAWpB,kFAAkF;IAClF,MAAM,IAAI,YAAY;IAOtB,yFAAyF;IACzF,YAAY,IAAI,YAAY,GAAG,IAAI;IAOnC,6DAA6D;IAC7D,IAAI,IAAI,YAAY,GAAG,IAAI;IAM3B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,MAAM;CAKf"}
@@ -0,0 +1,36 @@
1
+ import { DrawingPlugin, DrawingState, Point, ViewportState } from '@tradecanvas/commons';
2
+ /**
3
+ * Drawings being dragged with the pointer: moved together (a selection), or
4
+ * one reshaped by a handle. Drawings are looked up by id on every move, so
5
+ * an undo or a reload in between leaves nothing stale.
6
+ */
7
+ export declare class DrawingDrag {
8
+ private readonly find;
9
+ private start;
10
+ /** The handle being dragged, or -1 while moving. */
11
+ private handle;
12
+ private grabbed;
13
+ constructor(find: (id: string) => DrawingState | undefined);
14
+ isActive(): boolean;
15
+ /** Grab drawings to move together; the first is the one under the pointer. */
16
+ beginMove(pos: Point, drawings: readonly DrawingState[]): void;
17
+ /** Grab handle `handle` of a drawing to reshape it. */
18
+ beginResize(pos: Point, drawing: DrawingState, handle: number): void;
19
+ /** Follow the pointer. True when something changed. */
20
+ move(pos: Point, viewport: ViewportState, plugin: DrawingPlugin | undefined): boolean;
21
+ /** Let go: each drawing that changed, with how it was before. */
22
+ end(): {
23
+ before: DrawingState;
24
+ drawing: DrawingState;
25
+ }[];
26
+ /**
27
+ * Move every grabbed drawing by the pointer's travel: whole bars in time
28
+ * (each point keeps its place between bars, and a weekend gap moves like
29
+ * any other bar), and on screen in price (so a log scale keeps the shape).
30
+ */
31
+ private translate;
32
+ private unmoved;
33
+ /** Put the handle under the pointer: an anchor, or what the tool's `moveHandle` makes of it. */
34
+ private reshape;
35
+ }
36
+ //# sourceMappingURL=DrawingDrag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrawingDrag.d.ts","sourceRoot":"","sources":["../../src/drawings/DrawingDrag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAe3G;;;;GAIG;AACH,qBAAa,WAAW;IAMV,OAAO,CAAC,QAAQ,CAAC,IAAI;IALjC,OAAO,CAAC,KAAK,CAAsB;IACnC,oDAAoD;IACpD,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAAiB;gBAEH,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS;IAE3E,QAAQ,IAAI,OAAO;IAInB,8EAA8E;IAC9E,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,YAAY,EAAE,GAAG,IAAI;IAM9D,uDAAuD;IACvD,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAMpE,uDAAuD;IACvD,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO;IAKrF,iEAAiE;IACjE,GAAG,IAAI;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,OAAO,EAAE,YAAY,CAAA;KAAE,EAAE;IAWxD;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,OAAO;IAOf,gGAAgG;IAChG,OAAO,CAAC,OAAO;CAehB"}