@devexperts/dxcharts-lite 1.0.1 → 2.0.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 (379) hide show
  1. package/README.md +4 -4
  2. package/dist/chart/animation/canvas-animation.d.ts +1 -1
  3. package/dist/chart/animation/canvas-animation.js +135 -2
  4. package/dist/chart/animation/types/animation.d.ts +1 -1
  5. package/dist/chart/animation/types/animation.js +44 -2
  6. package/dist/chart/animation/types/color-alpha-animation.d.ts +2 -2
  7. package/dist/chart/animation/types/color-alpha-animation.js +61 -2
  8. package/dist/chart/animation/types/color-transition-animation.d.ts +2 -2
  9. package/dist/chart/animation/types/color-transition-animation.js +87 -2
  10. package/dist/chart/animation/types/viewport-movement-animation.d.ts +1 -1
  11. package/dist/chart/animation/types/viewport-movement-animation.js +64 -2
  12. package/dist/chart/animation/viewport-model-animation.d.ts +1 -1
  13. package/dist/chart/animation/viewport-model-animation.js +21 -2
  14. package/dist/chart/bootstrap.d.ts +52 -49
  15. package/dist/chart/bootstrap.js +450 -2
  16. package/dist/chart/canvas/canvas-bounds-container.d.ts +1 -6
  17. package/dist/chart/canvas/canvas-bounds-container.js +816 -2
  18. package/dist/chart/canvas/canvas-chart-html.d.ts +1 -1
  19. package/dist/chart/canvas/canvas-chart-html.js +17 -19
  20. package/dist/chart/canvas/chart-elements.d.ts +2 -5
  21. package/dist/chart/canvas/chart-elements.js +23 -2
  22. package/dist/chart/canvas/cursor.handler.d.ts +1 -1
  23. package/dist/chart/canvas/cursor.handler.js +123 -2
  24. package/dist/chart/canvas/layout-creator.d.ts +1 -1
  25. package/dist/chart/canvas/layout-creator.js +35 -2
  26. package/dist/chart/canvas/y-axis-bounds.container.d.ts +3 -3
  27. package/dist/chart/canvas/y-axis-bounds.container.js +68 -2
  28. package/dist/chart/chart-container.d.ts +1 -1
  29. package/dist/chart/chart-container.js +2 -2
  30. package/dist/chart/chart.config.d.ts +5 -6
  31. package/dist/chart/chart.config.js +646 -2
  32. package/dist/chart/chart.d.ts +62 -0
  33. package/dist/chart/chart.js +106 -0
  34. package/dist/chart/components/chart/basic-scale.d.ts +3 -3
  35. package/dist/chart/components/chart/basic-scale.js +32 -2
  36. package/dist/chart/components/chart/candle-transformer.functions.d.ts +1 -1
  37. package/dist/chart/components/chart/candle-transformer.functions.js +16 -2
  38. package/dist/chart/components/chart/candle-width-calculator.functions.d.ts +1 -1
  39. package/dist/chart/components/chart/candle-width-calculator.functions.js +3 -2
  40. package/dist/chart/components/chart/candle.functions.d.ts +1 -1
  41. package/dist/chart/components/chart/candle.functions.js +45 -2
  42. package/dist/chart/components/chart/chart-area-pan.handler.d.ts +4 -4
  43. package/dist/chart/components/chart/chart-area-pan.handler.js +198 -2
  44. package/dist/chart/components/chart/chart-base.model.d.ts +1 -1
  45. package/dist/chart/components/chart/chart-base.model.js +67 -2
  46. package/dist/chart/components/chart/chart.component.d.ts +8 -4
  47. package/dist/chart/components/chart/chart.component.js +409 -2
  48. package/dist/chart/components/chart/chart.model.d.ts +5 -12
  49. package/dist/chart/components/chart/chart.model.js +955 -2
  50. package/dist/chart/components/chart/data-series.high-low-provider.d.ts +1 -1
  51. package/dist/chart/components/chart/data-series.high-low-provider.js +35 -2
  52. package/dist/chart/components/chart/fake-candles.d.ts +1 -1
  53. package/dist/chart/components/chart/fake-candles.js +98 -2
  54. package/dist/chart/components/chart/price.formatter.d.ts +1 -1
  55. package/dist/chart/components/chart/price.formatter.js +36 -2
  56. package/dist/chart/components/chart/secondary-chart-colors-pool.d.ts +1 -1
  57. package/dist/chart/components/chart/secondary-chart-colors-pool.js +69 -2
  58. package/dist/chart/components/cross_tool/cross-tool.component.d.ts +1 -1
  59. package/dist/chart/components/cross_tool/cross-tool.component.js +86 -2
  60. package/dist/chart/components/cross_tool/cross-tool.drawer.d.ts +1 -1
  61. package/dist/chart/components/cross_tool/cross-tool.drawer.js +33 -2
  62. package/dist/chart/components/cross_tool/cross-tool.model.d.ts +1 -1
  63. package/dist/chart/components/cross_tool/cross-tool.model.js +108 -2
  64. package/dist/chart/components/cross_tool/types/cross-and-labels.drawer.d.ts +1 -1
  65. package/dist/chart/components/cross_tool/types/cross-and-labels.drawer.js +138 -2
  66. package/dist/chart/components/cross_tool/types/none.drawer.d.ts +1 -1
  67. package/dist/chart/components/cross_tool/types/none.drawer.js +4 -2
  68. package/dist/chart/components/dran-n-drop_helper/drag-n-drop-x.component.d.ts +1 -1
  69. package/dist/chart/components/dran-n-drop_helper/drag-n-drop-x.component.js +29 -2
  70. package/dist/chart/components/dran-n-drop_helper/drag-n-drop-y.component.d.ts +1 -1
  71. package/dist/chart/components/dran-n-drop_helper/drag-n-drop-y.component.js +25 -2
  72. package/dist/chart/components/dran-n-drop_helper/drag-n-drop.component.d.ts +1 -1
  73. package/dist/chart/components/dran-n-drop_helper/drag-n-drop.component.js +54 -2
  74. package/dist/chart/components/dynamic-objects/dynamic-objects.component.d.ts +13 -0
  75. package/dist/chart/components/dynamic-objects/dynamic-objects.component.js +20 -0
  76. package/dist/chart/components/dynamic-objects/dynamic-objects.drawer.d.ts +18 -0
  77. package/dist/chart/components/dynamic-objects/dynamic-objects.drawer.js +23 -0
  78. package/dist/chart/components/dynamic-objects/dynamic-objects.model.d.ts +63 -0
  79. package/dist/chart/components/dynamic-objects/dynamic-objects.model.js +136 -0
  80. package/dist/chart/components/events/events-hit-test.drawer.d.ts +1 -1
  81. package/dist/chart/components/events/events-hit-test.drawer.js +64 -2
  82. package/dist/chart/components/events/events.component.d.ts +1 -1
  83. package/dist/chart/components/events/events.component.js +62 -2
  84. package/dist/chart/components/events/events.drawer.d.ts +1 -1
  85. package/dist/chart/components/events/events.drawer.js +196 -2
  86. package/dist/chart/components/events/events.model.d.ts +1 -1
  87. package/dist/chart/components/events/events.model.js +70 -2
  88. package/dist/chart/components/grid/grid.component.d.ts +3 -3
  89. package/dist/chart/components/grid/grid.component.js +32 -2
  90. package/dist/chart/components/grid/grid.drawer.d.ts +5 -4
  91. package/dist/chart/components/grid/grid.drawer.js +107 -2
  92. package/dist/chart/components/high_low/high-low.component.d.ts +1 -1
  93. package/dist/chart/components/high_low/high-low.component.js +13 -2
  94. package/dist/chart/components/high_low/high-low.drawer.d.ts +1 -1
  95. package/dist/chart/components/high_low/high-low.drawer.js +127 -2
  96. package/dist/chart/components/highlights/highlights.component.d.ts +1 -1
  97. package/dist/chart/components/highlights/highlights.component.js +47 -2
  98. package/dist/chart/components/highlights/highlights.drawer.d.ts +1 -1
  99. package/dist/chart/components/highlights/highlights.drawer.js +155 -2
  100. package/dist/chart/components/highlights/highlights.model.d.ts +1 -1
  101. package/dist/chart/components/highlights/highlights.model.js +76 -2
  102. package/dist/chart/components/labels_generator/numeric-axis-labels.generator.d.ts +2 -2
  103. package/dist/chart/components/labels_generator/numeric-axis-labels.generator.js +200 -2
  104. package/dist/chart/components/navigation_map/navigation-map-move.handler.d.ts +3 -3
  105. package/dist/chart/components/navigation_map/navigation-map-move.handler.js +109 -2
  106. package/dist/chart/components/navigation_map/navigation-map.component.d.ts +1 -1
  107. package/dist/chart/components/navigation_map/navigation-map.component.js +113 -2
  108. package/dist/chart/components/navigation_map/navigation-map.drawer.d.ts +1 -1
  109. package/dist/chart/components/navigation_map/navigation-map.drawer.js +245 -2
  110. package/dist/chart/components/navigation_map/navigation-map.model.d.ts +1 -1
  111. package/dist/chart/components/navigation_map/navigation-map.model.js +34 -3
  112. package/dist/chart/components/pan/chart-pan.component.d.ts +3 -3
  113. package/dist/chart/components/pan/chart-pan.component.js +52 -2
  114. package/dist/chart/components/pane/extent/y-extent-component.d.ts +13 -19
  115. package/dist/chart/components/pane/extent/y-extent-component.js +121 -2
  116. package/dist/chart/components/pane/pane-hit-test.controller.d.ts +1 -1
  117. package/dist/chart/components/pane/pane-hit-test.controller.js +56 -2
  118. package/dist/chart/components/pane/pane-manager.component.d.ts +11 -6
  119. package/dist/chart/components/pane/pane-manager.component.js +149 -2
  120. package/dist/chart/components/pane/pane.component.d.ts +18 -34
  121. package/dist/chart/components/pane/pane.component.js +279 -2
  122. package/dist/chart/components/resizer/bar-resizer.component.d.ts +1 -1
  123. package/dist/chart/components/resizer/bar-resizer.component.js +140 -2
  124. package/dist/chart/components/resizer/bar-resizer.drawer.d.ts +1 -1
  125. package/dist/chart/components/resizer/bar-resizer.drawer.js +47 -2
  126. package/dist/chart/components/snapshot/snapshot.component.d.ts +1 -1
  127. package/dist/chart/components/snapshot/snapshot.component.js +49 -2
  128. package/dist/chart/components/volumes/separate-volumes.component.d.ts +7 -11
  129. package/dist/chart/components/volumes/separate-volumes.component.js +64 -2
  130. package/dist/chart/components/volumes/volume-color-resolvers.functions.d.ts +1 -1
  131. package/dist/chart/components/volumes/volume-color-resolvers.functions.js +19 -2
  132. package/dist/chart/components/volumes/volumes.component.d.ts +9 -9
  133. package/dist/chart/components/volumes/volumes.component.js +95 -2
  134. package/dist/chart/components/volumes/volumes.drawer.d.ts +6 -13
  135. package/dist/chart/components/volumes/volumes.drawer.js +141 -2
  136. package/dist/chart/components/volumes/volumes.formatter.d.ts +1 -1
  137. package/dist/chart/components/volumes/volumes.formatter.js +32 -2
  138. package/dist/chart/components/volumes/volumes.model.d.ts +3 -3
  139. package/dist/chart/components/volumes/volumes.model.js +44 -2
  140. package/dist/chart/components/watermark/water-mark.component.d.ts +1 -1
  141. package/dist/chart/components/watermark/water-mark.component.js +104 -2
  142. package/dist/chart/components/watermark/water-mark.drawer.d.ts +1 -1
  143. package/dist/chart/components/watermark/water-mark.drawer.js +188 -2
  144. package/dist/chart/components/x_axis/numeric-x-axis-labels.generator.d.ts +1 -1
  145. package/dist/chart/components/x_axis/numeric-x-axis-labels.generator.js +28 -2
  146. package/dist/chart/components/x_axis/time/parser/time-formats-matchers.functions.d.ts +1 -1
  147. package/dist/chart/components/x_axis/time/parser/time-formats-matchers.functions.js +188 -2
  148. package/dist/chart/components/x_axis/time/parser/time-formats-parser.functions.d.ts +1 -1
  149. package/dist/chart/components/x_axis/time/parser/time-formats-parser.functions.js +77 -2
  150. package/dist/chart/components/x_axis/time/parser/time-formats-validators.functions.d.ts +1 -1
  151. package/dist/chart/components/x_axis/time/parser/time-formats-validators.functions.js +80 -2
  152. package/dist/chart/components/x_axis/time/parser/time-formats.model.d.ts +1 -1
  153. package/dist/chart/components/x_axis/time/parser/time-formats.model.js +15 -2
  154. package/dist/chart/components/x_axis/time/x-axis-weights.functions.d.ts +2 -2
  155. package/dist/chart/components/x_axis/time/x-axis-weights.functions.js +144 -2
  156. package/dist/chart/components/x_axis/time/x-axis-weights.generator.d.ts +1 -1
  157. package/dist/chart/components/x_axis/time/x-axis-weights.generator.js +74 -2
  158. package/dist/chart/components/x_axis/x-axis-draw.functions.d.ts +1 -1
  159. package/dist/chart/components/x_axis/x-axis-draw.functions.js +50 -2
  160. package/dist/chart/components/x_axis/x-axis-labels.drawer.d.ts +1 -1
  161. package/dist/chart/components/x_axis/x-axis-labels.drawer.js +71 -2
  162. package/dist/chart/components/x_axis/x-axis-labels.generator.d.ts +3 -3
  163. package/dist/chart/components/x_axis/x-axis-labels.generator.js +333 -2
  164. package/dist/chart/components/x_axis/x-axis-labels.model.d.ts +1 -1
  165. package/dist/chart/components/x_axis/x-axis-labels.model.js +36 -2
  166. package/dist/chart/components/x_axis/x-axis-scale.handler.d.ts +3 -3
  167. package/dist/chart/components/x_axis/x-axis-scale.handler.js +61 -2
  168. package/dist/chart/components/x_axis/x-axis-time-labels.drawer.d.ts +1 -1
  169. package/dist/chart/components/x_axis/x-axis-time-labels.drawer.js +83 -2
  170. package/dist/chart/components/x_axis/x-axis.component.d.ts +3 -3
  171. package/dist/chart/components/x_axis/x-axis.component.js +120 -2
  172. package/dist/chart/components/y_axis/label-color.functions.d.ts +1 -1
  173. package/dist/chart/components/y_axis/label-color.functions.js +54 -2
  174. package/dist/chart/components/y_axis/numeric-y-axis-labels.generator.d.ts +5 -5
  175. package/dist/chart/components/y_axis/numeric-y-axis-labels.generator.js +34 -2
  176. package/dist/chart/components/y_axis/price_labels/data-series-y-axis-labels.provider.d.ts +4 -4
  177. package/dist/chart/components/y_axis/price_labels/data-series-y-axis-labels.provider.js +68 -2
  178. package/dist/chart/components/y_axis/price_labels/labels-positions-calculator.d.ts +1 -1
  179. package/dist/chart/components/y_axis/price_labels/labels-positions-calculator.js +57 -2
  180. package/dist/chart/components/y_axis/price_labels/last-candle-labels.provider.d.ts +1 -1
  181. package/dist/chart/components/y_axis/price_labels/last-candle-labels.provider.js +96 -2
  182. package/dist/chart/components/y_axis/price_labels/price-label.drawer.d.ts +3 -3
  183. package/dist/chart/components/y_axis/price_labels/price-label.drawer.js +120 -2
  184. package/dist/chart/components/y_axis/price_labels/y-axis-labels.model.d.ts +10 -9
  185. package/dist/chart/components/y_axis/price_labels/y-axis-labels.model.js +202 -2
  186. package/dist/chart/components/y_axis/price_labels/y-axis-price-labels.drawer.d.ts +7 -8
  187. package/dist/chart/components/y_axis/price_labels/y-axis-price-labels.drawer.js +59 -2
  188. package/dist/chart/components/y_axis/y-axis-base-labels.model.d.ts +7 -5
  189. package/dist/chart/components/y_axis/y-axis-base-labels.model.js +48 -2
  190. package/dist/chart/components/y_axis/y-axis-labels.drawer.d.ts +5 -5
  191. package/dist/chart/components/y_axis/y-axis-labels.drawer.js +162 -2
  192. package/dist/chart/components/y_axis/y-axis-scale.handler.d.ts +3 -3
  193. package/dist/chart/components/y_axis/y-axis-scale.handler.js +73 -2
  194. package/dist/chart/components/y_axis/y-axis.component.d.ts +33 -42
  195. package/dist/chart/components/y_axis/y-axis.component.js +221 -2
  196. package/dist/chart/components/y_axis/y-axis.drawer.d.ts +10 -13
  197. package/dist/chart/components/y_axis/y-axis.drawer.js +97 -2
  198. package/dist/chart/components/y_axis/y-axis.model.d.ts +10 -18
  199. package/dist/chart/components/y_axis/y-axis.model.js +34 -2
  200. package/dist/chart/drawers/chart-background.drawer.d.ts +1 -1
  201. package/dist/chart/drawers/chart-background.drawer.js +70 -2
  202. package/dist/chart/drawers/chart-type-drawers/area.drawer.d.ts +1 -1
  203. package/dist/chart/drawers/chart-type-drawers/area.drawer.js +70 -2
  204. package/dist/chart/drawers/chart-type-drawers/bar.drawer.d.ts +1 -1
  205. package/dist/chart/drawers/chart-type-drawers/bar.drawer.js +58 -2
  206. package/dist/chart/drawers/chart-type-drawers/baseline.drawer.d.ts +1 -1
  207. package/dist/chart/drawers/chart-type-drawers/baseline.drawer.js +85 -2
  208. package/dist/chart/drawers/chart-type-drawers/candle.drawer.d.ts +1 -1
  209. package/dist/chart/drawers/chart-type-drawers/candle.drawer.js +163 -2
  210. package/dist/chart/drawers/chart-type-drawers/histogram.drawer.d.ts +1 -1
  211. package/dist/chart/drawers/chart-type-drawers/histogram.drawer.js +58 -2
  212. package/dist/chart/drawers/chart-type-drawers/line.drawer.d.ts +1 -1
  213. package/dist/chart/drawers/chart-type-drawers/line.drawer.js +39 -2
  214. package/dist/chart/drawers/chart-type-drawers/scatter-plot.drawer.d.ts +1 -1
  215. package/dist/chart/drawers/chart-type-drawers/scatter-plot.drawer.js +20 -2
  216. package/dist/chart/drawers/clear-canvas.drawer.d.ts +1 -1
  217. package/dist/chart/drawers/clear-canvas.drawer.js +15 -2
  218. package/dist/chart/drawers/composite.drawer.d.ts +1 -1
  219. package/dist/chart/drawers/composite.drawer.js +68 -2
  220. package/dist/chart/drawers/data-series-drawers/candle-series-wrapper.d.ts +1 -1
  221. package/dist/chart/drawers/data-series-drawers/candle-series-wrapper.js +51 -2
  222. package/dist/chart/drawers/data-series-drawers/color-candle.drawer.d.ts +1 -1
  223. package/dist/chart/drawers/data-series-drawers/color-candle.drawer.js +36 -2
  224. package/dist/chart/drawers/data-series-drawers/data-series-drawers.utils.d.ts +1 -1
  225. package/dist/chart/drawers/data-series-drawers/data-series-drawers.utils.js +17 -2
  226. package/dist/chart/drawers/data-series-drawers/difference-cloud.drawer.d.ts +1 -1
  227. package/dist/chart/drawers/data-series-drawers/difference-cloud.drawer.js +107 -2
  228. package/dist/chart/drawers/data-series-drawers/histogram.drawer.d.ts +1 -1
  229. package/dist/chart/drawers/data-series-drawers/histogram.drawer.js +24 -2
  230. package/dist/chart/drawers/data-series-drawers/linear.drawer.d.ts +1 -1
  231. package/dist/chart/drawers/data-series-drawers/linear.drawer.js +20 -2
  232. package/dist/chart/drawers/data-series-drawers/points.drawer.d.ts +1 -1
  233. package/dist/chart/drawers/data-series-drawers/points.drawer.js +20 -2
  234. package/dist/chart/drawers/data-series-drawers/rectangular-tool.drawer.d.ts +1 -1
  235. package/dist/chart/drawers/data-series-drawers/rectangular-tool.drawer.js +8 -2
  236. package/dist/chart/drawers/data-series-drawers/text.drawer.d.ts +1 -1
  237. package/dist/chart/drawers/data-series-drawers/text.drawer.js +26 -2
  238. package/dist/chart/drawers/data-series-drawers/trend-histogram.drawer.d.ts +1 -1
  239. package/dist/chart/drawers/data-series-drawers/trend-histogram.drawer.js +36 -2
  240. package/dist/chart/drawers/data-series-drawers/triangle.drawer.d.ts +1 -1
  241. package/dist/chart/drawers/data-series-drawers/triangle.drawer.js +23 -2
  242. package/dist/chart/drawers/data-series.drawer.d.ts +6 -8
  243. package/dist/chart/drawers/data-series.drawer.js +57 -2
  244. package/dist/chart/drawers/drawing-manager.d.ts +2 -2
  245. package/dist/chart/drawers/drawing-manager.js +178 -2
  246. package/dist/chart/drawers/ht-data-series.drawer.d.ts +1 -1
  247. package/dist/chart/drawers/ht-data-series.drawer.js +38 -2
  248. package/dist/chart/events/event-bus.d.ts +1 -1
  249. package/dist/chart/events/event-bus.js +74 -2
  250. package/dist/chart/events/events.d.ts +1 -1
  251. package/dist/chart/events/events.js +4 -2
  252. package/dist/chart/inputhandlers/candle-tap.handler.d.ts +1 -1
  253. package/dist/chart/inputhandlers/candle-tap.handler.js +47 -2
  254. package/dist/chart/inputhandlers/chart-resize.handler.d.ts +1 -1
  255. package/dist/chart/inputhandlers/chart-resize.handler.js +99 -2
  256. package/dist/chart/inputhandlers/cross-event-producer.component.d.ts +1 -1
  257. package/dist/chart/inputhandlers/cross-event-producer.component.js +68 -2
  258. package/dist/chart/inputhandlers/hover-producer.component.d.ts +3 -3
  259. package/dist/chart/inputhandlers/hover-producer.component.js +229 -2
  260. package/dist/chart/inputhandlers/main-canvas-touch.handler.d.ts +3 -3
  261. package/dist/chart/inputhandlers/main-canvas-touch.handler.js +81 -2
  262. package/dist/chart/inputlisteners/canvas-input-listener.component.d.ts +1 -1
  263. package/dist/chart/inputlisteners/canvas-input-listener.component.js +630 -2
  264. package/dist/chart/model/baseline.model.d.ts +1 -1
  265. package/dist/chart/model/baseline.model.js +89 -2
  266. package/dist/chart/model/bounds.model.d.ts +1 -1
  267. package/dist/chart/model/bounds.model.js +2 -2
  268. package/dist/chart/model/candle-hover.d.ts +1 -1
  269. package/dist/chart/model/candle-hover.js +71 -2
  270. package/dist/chart/model/candle-series-high-low.provider.d.ts +1 -1
  271. package/dist/chart/model/candle-series-high-low.provider.js +46 -2
  272. package/dist/chart/model/candle-series.model.d.ts +4 -4
  273. package/dist/chart/model/candle-series.model.js +246 -2
  274. package/dist/chart/model/candle.model.d.ts +1 -1
  275. package/dist/chart/model/candle.model.js +70 -2
  276. package/dist/chart/model/canvas.model.d.ts +1 -1
  277. package/dist/chart/model/canvas.model.js +229 -2
  278. package/dist/chart/model/chart-base-element.d.ts +1 -1
  279. package/dist/chart/model/chart-base-element.js +130 -2
  280. package/dist/chart/model/compare-series-hover.d.ts +1 -1
  281. package/dist/chart/model/compare-series-hover.js +26 -2
  282. package/dist/chart/model/data-series-view.d.ts +6 -6
  283. package/dist/chart/model/data-series-view.js +112 -2
  284. package/dist/chart/model/data-series.config.d.ts +1 -1
  285. package/dist/chart/model/data-series.config.js +15 -2
  286. package/dist/chart/model/data-series.model.d.ts +5 -5
  287. package/dist/chart/model/data-series.model.js +282 -2
  288. package/dist/chart/model/date-time.formatter.d.ts +1 -1
  289. package/dist/chart/model/date-time.formatter.js +152 -2
  290. package/dist/chart/model/hit-test-canvas.model.d.ts +2 -2
  291. package/dist/chart/model/hit-test-canvas.model.js +257 -2
  292. package/dist/chart/model/main-candle-series.model.d.ts +2 -2
  293. package/dist/chart/model/main-candle-series.model.js +30 -2
  294. package/dist/chart/model/scale.model.d.ts +3 -2
  295. package/dist/chart/model/scale.model.js +317 -2
  296. package/dist/chart/model/scaling/auto-scale.model.d.ts +1 -1
  297. package/dist/chart/model/scaling/auto-scale.model.js +98 -2
  298. package/dist/chart/model/scaling/constrait.functions.d.ts +1 -1
  299. package/dist/chart/model/scaling/constrait.functions.js +62 -2
  300. package/dist/chart/model/scaling/lock-ratio.model.d.ts +1 -1
  301. package/dist/chart/model/scaling/lock-ratio.model.js +18 -2
  302. package/dist/chart/model/scaling/move-chart.functions.d.ts +1 -1
  303. package/dist/chart/model/scaling/move-chart.functions.js +23 -2
  304. package/dist/chart/model/scaling/viewport.model.d.ts +3 -3
  305. package/dist/chart/model/scaling/viewport.model.js +280 -2
  306. package/dist/chart/model/scaling/x-zooming.functions.d.ts +1 -1
  307. package/dist/chart/model/scaling/x-zooming.functions.js +36 -2
  308. package/dist/chart/model/time-zone.model.d.ts +1 -1
  309. package/dist/chart/model/time-zone.model.js +110 -2
  310. package/dist/chart/model/visual-candle.d.ts +1 -1
  311. package/dist/chart/model/visual-candle.js +135 -2
  312. package/dist/chart/utils/__tests__/array.utils.test.d.ts +1 -1
  313. package/dist/chart/utils/__tests__/array.utils.test.js +136 -2
  314. package/dist/chart/utils/{perfomance/debounce.utils.js → __tests__/math.utils.test.d.ts} +2 -2
  315. package/dist/chart/utils/__tests__/math.utils.test.js +19 -0
  316. package/dist/chart/utils/__tests__/object.utils.test.d.ts +1 -1
  317. package/dist/chart/utils/__tests__/object.utils.test.js +12 -2
  318. package/dist/chart/utils/__tests__/priceIncrementsUtils.test.d.ts +1 -1
  319. package/dist/chart/utils/__tests__/priceIncrementsUtils.test.js +30 -2
  320. package/dist/chart/utils/array.utils.d.ts +2 -2
  321. package/dist/chart/utils/array.utils.js +270 -2
  322. package/dist/chart/utils/auto-period-detector.utils.d.ts +1 -1
  323. package/dist/chart/utils/auto-period-detector.utils.js +40 -2
  324. package/dist/chart/utils/candles-generator-ts.utils.d.ts +1 -1
  325. package/dist/chart/utils/candles-generator-ts.utils.js +21 -2
  326. package/dist/chart/utils/candles-generator.utils.d.ts +1 -1
  327. package/dist/chart/utils/candles-generator.utils.js +162 -2
  328. package/dist/chart/utils/candles.utils.d.ts +1 -1
  329. package/dist/chart/utils/candles.utils.js +43 -2
  330. package/dist/chart/utils/canvas/canvas-drawing-functions.utils.d.ts +1 -1
  331. package/dist/chart/utils/canvas/canvas-drawing-functions.utils.js +145 -2
  332. package/dist/chart/utils/canvas/canvas-font-measure-tool.utils.d.ts +1 -1
  333. package/dist/chart/utils/canvas/canvas-font-measure-tool.utils.js +52 -2
  334. package/dist/chart/utils/canvas/canvas-text-functions.utils.d.ts +1 -1
  335. package/dist/chart/utils/canvas/canvas-text-functions.utils.js +157 -2
  336. package/dist/chart/utils/color.utils.d.ts +1 -1
  337. package/dist/chart/utils/color.utils.js +32 -2
  338. package/dist/chart/utils/device/browser.utils.d.ts +1 -1
  339. package/dist/chart/utils/device/browser.utils.js +11 -2
  340. package/dist/chart/utils/device/device-detector.utils.d.ts +1 -1
  341. package/dist/chart/utils/device/device-detector.utils.js +25 -2
  342. package/dist/chart/utils/device/device-pixel-ratio.utils.d.ts +1 -1
  343. package/dist/chart/utils/device/device-pixel-ratio.utils.js +22 -2
  344. package/dist/chart/utils/device/touchpad.utils.d.ts +1 -1
  345. package/dist/chart/utils/device/touchpad.utils.js +92 -2
  346. package/dist/chart/utils/dom.utils.d.ts +1 -1
  347. package/dist/chart/utils/dom.utils.js +16 -2
  348. package/dist/chart/utils/function.utils.d.ts +1 -1
  349. package/dist/chart/utils/function.utils.js +17 -2
  350. package/dist/chart/utils/linkedList.utils.d.ts +28 -0
  351. package/dist/chart/utils/linkedList.utils.js +138 -0
  352. package/dist/chart/utils/math.utils.d.ts +1 -1
  353. package/dist/chart/utils/math.utils.js +116 -2
  354. package/dist/chart/utils/merge.utils.d.ts +1 -1
  355. package/dist/chart/utils/merge.utils.js +57 -2
  356. package/dist/chart/utils/object.utils.d.ts +1 -1
  357. package/dist/chart/utils/object.utils.js +44 -2
  358. package/dist/chart/utils/{perfomance → performance}/animation-frame-cache.utils.d.ts +1 -1
  359. package/dist/chart/utils/performance/animation-frame-cache.utils.js +77 -0
  360. package/dist/chart/utils/{perfomance → performance}/debounce.utils.d.ts +1 -1
  361. package/dist/chart/utils/performance/debounce.utils.js +12 -0
  362. package/dist/chart/utils/{perfomance → performance}/memoize.utils.d.ts +1 -1
  363. package/dist/chart/utils/performance/memoize.utils.js +74 -0
  364. package/dist/chart/utils/{perfomance → performance}/request-animation-frame-throttle.utils.d.ts +1 -1
  365. package/dist/chart/utils/performance/request-animation-frame-throttle.utils.js +43 -0
  366. package/dist/chart/utils/{perfomance → performance}/throttle.utils.d.ts +1 -1
  367. package/dist/chart/utils/performance/throttle.utils.js +26 -0
  368. package/dist/chart/utils/price-increments.utils.d.ts +2 -1
  369. package/dist/chart/utils/price-increments.utils.js +128 -2
  370. package/dist/chart/utils/uuid.utils.d.ts +1 -1
  371. package/dist/chart/utils/uuid.utils.js +5 -2
  372. package/dist/dxchart.min.js +10 -13
  373. package/dist/index.d.ts +4 -4
  374. package/dist/index.js +21 -2
  375. package/package.json +4 -4
  376. package/dist/chart/utils/perfomance/animation-frame-cache.utils.js +0 -6
  377. package/dist/chart/utils/perfomance/memoize.utils.js +0 -6
  378. package/dist/chart/utils/perfomance/request-animation-frame-throttle.utils.js +0 -6
  379. package/dist/chart/utils/perfomance/throttle.utils.js +0 -6
@@ -1,6 +1,111 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
6
- import{avoidAntialiasing as r}from"../../utils/canvas/canvas-drawing-functions.utils";import{DEFAULT_PRICE_LABEL_PADDING as c,getLabelYOffset as g}from"../y_axis/y-axis-labels.drawer";import{floor as h}from"../../utils/math.utils";export class GridDrawer{constructor(o,e,i,n,t,s,a,d=()=>!0,l){this.canvasModel=o,this.viewportModel=e,this.config=i,this.xBoundsProvider=n,this.yBoundsProvider=t,this.xLabelsProvider=s,this.yLabelsProvider=a,this.drawPredicate=d,this.getBaseLine=l}draw(){if(this.drawPredicate()){const o=this.canvasModel.ctx;r(o,()=>this.drawVertical(o)),r(o,()=>this.drawHorizontal(o)),r(o,()=>this.drawZeroLine(o))}}drawZeroLine(o){if(this.getBaseLine&&this.config.components.yAxis.type==="percent"&&this.config.components.yAxis.zeroPercentLine){const e=this.xBoundsProvider(),i=h(this.getBaseLine());o.beginPath(),o.strokeStyle=this.config.colors.yAxis.zeroPercentLine,o.setLineDash([]),o.moveTo(e.x,i),o.lineTo(e.x+e.width,i),o.stroke(),o.closePath()}}drawVertical(o){const e=this.xLabelsProvider();if(e.length&&this.config.components.grid.vertical){o.lineWidth=this.config.components.grid.width,o.strokeStyle=this.config.colors.chartAreaTheme.gridColor,o.setLineDash(this.config.components.grid.dash||[]);const i=this.xBoundsProvider(),n=i.x+i.width;for(const t of e){const s=h(this.viewportModel.toX(t.value));s>i.x&&s<n&&(o.beginPath(),o.moveTo(s,i.y),o.lineTo(s,i.y+i.height),o.stroke())}}}drawHorizontal(o){const e=this.yLabelsProvider();if(e.length&&this.config.components.grid.horizontal){o.lineWidth=this.config.components.grid.width,o.strokeStyle=this.config.colors.chartAreaTheme.gridColor,o.setLineDash(this.config.components.grid.dash||[]);const i=this.yBoundsProvider();for(const n of e){const t=h(this.viewportModel.toY(n.value)),s=g(n.text,o,c);t>i.y+s&&t<i.y+i.height-s&&(o.beginPath(),o.moveTo(i.x,t),o.lineTo(i.x+i.width,t),o.stroke())}}}getCanvasIds(){return[this.canvasModel.canvasId]}}
6
+ import { avoidAntialiasing } from '../../utils/canvas/canvas-drawing-functions.utils';
7
+ import { DEFAULT_PRICE_LABEL_PADDING, getLabelYOffset } from '../y_axis/y-axis-labels.drawer';
8
+ import { floor } from '../../utils/math.utils';
9
+ import { floorToDPR } from '../../utils/device/device-pixel-ratio.utils';
10
+ /**
11
+ * Draws grid lines on chart.
12
+ */
13
+ export class GridDrawer {
14
+ constructor(canvasModel, viewportModel, config, yAxisState, xBoundsProvider, yBoundsProvider, xLabelsProvider, yLabelsProvider, drawPredicate = () => true, getBaseline) {
15
+ this.canvasModel = canvasModel;
16
+ this.viewportModel = viewportModel;
17
+ this.config = config;
18
+ this.yAxisState = yAxisState;
19
+ this.xBoundsProvider = xBoundsProvider;
20
+ this.yBoundsProvider = yBoundsProvider;
21
+ this.xLabelsProvider = xLabelsProvider;
22
+ this.yLabelsProvider = yLabelsProvider;
23
+ this.drawPredicate = drawPredicate;
24
+ this.getBaseline = getBaseline;
25
+ }
26
+ /**
27
+ * Draws the chart on the canvas if the drawPredicate is true.
28
+ * @returns {void}
29
+ */
30
+ draw() {
31
+ if (this.drawPredicate()) {
32
+ const ctx = this.canvasModel.ctx;
33
+ avoidAntialiasing(ctx, () => this.drawVertical(ctx));
34
+ avoidAntialiasing(ctx, () => this.drawHorizontal(ctx));
35
+ avoidAntialiasing(ctx, () => this.drawZeroLine(ctx));
36
+ }
37
+ }
38
+ /**
39
+ * Draws a zero line on the y-axis if the chart is a percentage chart and the zeroPercentLine option is enabled.
40
+ * @param {CanvasRenderingContext2D} ctx - The 2D rendering context of the canvas element.
41
+ */
42
+ drawZeroLine(ctx) {
43
+ if (this.getBaseline &&
44
+ this.yAxisState.type === 'percent' &&
45
+ this.yAxisState.zeroPercentLine) {
46
+ const bounds = this.xBoundsProvider();
47
+ const y = floor(this.getBaseline());
48
+ ctx.beginPath();
49
+ ctx.strokeStyle = this.config.colors.yAxis.zeroPercentLine;
50
+ ctx.setLineDash([]);
51
+ ctx.moveTo(bounds.x, y);
52
+ ctx.lineTo(bounds.x + bounds.width, y);
53
+ ctx.stroke();
54
+ ctx.closePath();
55
+ }
56
+ }
57
+ /**
58
+ * Draws vertical grid lines on the canvas context provided.
59
+ * @param {CanvasRenderingContext2D} ctx - The canvas context to draw on.
60
+ * @returns {void}
61
+ */
62
+ drawVertical(ctx) {
63
+ const xAxisLabels = this.xLabelsProvider();
64
+ if (xAxisLabels.length && this.config.components.grid.vertical) {
65
+ ctx.lineWidth = this.config.components.grid.width;
66
+ ctx.strokeStyle = this.config.colors.chartAreaTheme.gridColor;
67
+ ctx.setLineDash(this.config.components.grid.dash || []);
68
+ const bounds = this.xBoundsProvider();
69
+ const boundsEnd = bounds.x + bounds.width;
70
+ for (const label of xAxisLabels) {
71
+ const x = floorToDPR(this.viewportModel.toX(label.value));
72
+ if (x > bounds.x && x < boundsEnd) {
73
+ ctx.beginPath();
74
+ ctx.moveTo(x, bounds.y);
75
+ ctx.lineTo(x, bounds.y + bounds.height);
76
+ ctx.stroke();
77
+ }
78
+ }
79
+ }
80
+ }
81
+ /**
82
+ * This function is responsible for drawing horizontal grid lines on the chart. It takes a CanvasRenderingContext2D object as a parameter. It first retrieves the y-axis labels using the yLabelsProvider method. If there are any labels and the horizontal grid is enabled in the configuration, it sets the line width, color, and dash style. It then retrieves the y-bounds using the yBoundsProvider method. For each label, it calculates the y-coordinate using the toY method of the viewportModel object. It also calculates the label's y-offset using the getLabelYOffset method. If the y-coordinate is within the bounds of the chart, it draws a horizontal line using the beginPath, moveTo, lineTo, and stroke methods of the CanvasRenderingContext2D object.
83
+ */
84
+ drawHorizontal(ctx) {
85
+ const yAxisLabels = this.yLabelsProvider();
86
+ if (yAxisLabels.length && this.config.components.grid.horizontal) {
87
+ ctx.lineWidth = this.config.components.grid.width;
88
+ ctx.strokeStyle = this.config.colors.chartAreaTheme.gridColor;
89
+ ctx.setLineDash(this.config.components.grid.dash || []);
90
+ const bounds = this.yBoundsProvider();
91
+ for (const label of yAxisLabels) {
92
+ const y = floor(this.viewportModel.toY(label.value));
93
+ const labelYOffset = getLabelYOffset(label.text, ctx, DEFAULT_PRICE_LABEL_PADDING);
94
+ // do not draw, if out of bounds
95
+ if (y > bounds.y + labelYOffset && y < bounds.y + bounds.height - labelYOffset) {
96
+ ctx.beginPath();
97
+ ctx.moveTo(bounds.x, y);
98
+ ctx.lineTo(bounds.x + bounds.width, y);
99
+ ctx.stroke();
100
+ }
101
+ }
102
+ }
103
+ }
104
+ /**
105
+ * Returns an array of strings containing the ID of the canvas model.
106
+ * @returns {Array<string>} An array of strings containing the ID of the canvas model.
107
+ */
108
+ getCanvasIds() {
109
+ return [this.canvasModel.canvasId];
110
+ }
111
+ }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
@@ -1,6 +1,17 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
6
- import{ChartBaseElement as s}from"../../model/chart-base-element";import{HighLowDrawer as w}from"./high-low.drawer";export class HighLowComponent extends s{constructor(r,o,e,t,a){super();const n=new w(o,e,r,t);a.addDrawer(n,"HIGH_LOW")}}
6
+ import { ChartBaseElement } from '../../model/chart-base-element';
7
+ import { HighLowDrawer } from './high-low.drawer';
8
+ /**
9
+ * Shows the highest and lowest prices labels over all candles in chart (not only in viewport).
10
+ */
11
+ export class HighLowComponent extends ChartBaseElement {
12
+ constructor(config, canvasModel, chartModel, canvasBoundsContainer, drawingManager) {
13
+ super();
14
+ const hiLowDrawer = new HighLowDrawer(canvasModel, chartModel, config, canvasBoundsContainer);
15
+ drawingManager.addDrawer(hiLowDrawer, 'HIGH_LOW');
16
+ }
17
+ }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
@@ -1,6 +1,131 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
6
- import{CanvasElement as h}from"../../canvas/canvas-bounds-container";import{getTextLineHeight as c}from"../../utils/canvas/canvas-text-functions.utils";export class HighLowDrawer{constructor(t,o,r,e){this.canvasModel=t,this.chartModel=o,this.config=r,this.canvasBoundsContainer=e}draw(){if(this.config.components.highLow.visible&&this.chartModel.isReady()){const{high:t,low:o,highIdx:r,lowIdx:e}=this.chartModel.mainCandleSeries.zippedHighLow,s=this.chartModel.mainCandleSeries.dataIdxStart,i=s+r,n=s+e,a=this.canvasModel.ctx;a.save(),a.font=this.config.components.highLow.font,this.drawMarkerLabel(a,i,t,"high"),this.drawMarkerLabel(a,n,o,"low"),a.restore()}}drawMarkerLabel(t,o,r,e){const s=this.getMarkerY(t,r,e==="low");if(!this.checkMarkerInBounds(s))return;const i=this.getMarkerText(r,e),n=this.getMarkerX(t,o,i);t.fillStyle=e==="high"?this.config.colors.highLowTheme.highColor:this.config.colors.highLowTheme.lowColor,t.fillText(i,n,s)}getMarkerText(t,o){const r=this.chartModel.pane.regularFormatter(t);return`${o==="high"?"H:":"L:"} ${r}`}getMarkerY(t,o,r=!1){const e=this.chartModel.toY(o);if(r){const s=c(t);return e+s}return e}checkMarkerInBounds(t){const o=this.canvasBoundsContainer.getBounds(h.CHART);return t>o.y&&t<o.y+o.height}getMarkerX(t,o,r){let e=this.chartModel.toX(o);const s=this.canvasBoundsContainer.getBounds(h.CHART),i=4,n=t.measureText(r).width;return e+i+n>s.width&&(e=e-(i+n)),e+i}getCanvasIds(){return[this.canvasModel.canvasId]}}
6
+ import { CanvasElement } from '../../canvas/canvas-bounds-container';
7
+ import { getTextLineHeight } from '../../utils/canvas/canvas-text-functions.utils';
8
+ export class HighLowDrawer {
9
+ constructor(canvasModel, chartModel, config, canvasBoundsContainer) {
10
+ this.canvasModel = canvasModel;
11
+ this.chartModel = chartModel;
12
+ this.config = config;
13
+ this.canvasBoundsContainer = canvasBoundsContainer;
14
+ }
15
+ /**
16
+ * This function is responsible for drawing the high and low markers on the chart canvas. It checks if the highLow component is visible and if the chartModel is ready. If so, it retrieves the high, low, highIdx, and lowIdx from the chartModel's mainCandleSeries zippedHighLow property.
17
+ * The function then calculates the global indexes of the high and low candles by adding the viewportStartCandleGlobalIdx to the highIdx and lowIdx respectively. It then saves the canvas context and sets the font to the highLow font specified in the config.
18
+ * Finally, it calls the drawMarkerLabel function twice, passing in the canvas context, the final global index of the high or low candle, the high or low value, and a string indicating whether it is a high or low marker. After both markers have been drawn, the canvas context is restored.
19
+ */
20
+ draw() {
21
+ if (this.config.components.highLow.visible && this.chartModel.isReady()) {
22
+ const { high, low, highIdx, lowIdx } = this.chartModel.mainCandleSeries.zippedHighLow;
23
+ /**
24
+ * the thing is that `highIdx` and `lowIdx` from the `this.chartModel.mainCandleSeries.zippedHighLow`
25
+ * are responsible for indexes in the viewport series array
26
+ * but to draw the high low text in the correct places, we need to know the global indexes of
27
+ * the `high` and `low` candles
28
+ */
29
+ const viewportStartCandleGlobalIdx = this.chartModel.mainCandleSeries.dataIdxStart;
30
+ const finalHighIdx = viewportStartCandleGlobalIdx + highIdx;
31
+ const finalLowIdx = viewportStartCandleGlobalIdx + lowIdx;
32
+ const ctx = this.canvasModel.ctx;
33
+ ctx.save();
34
+ ctx.font = this.config.components.highLow.font;
35
+ this.drawMarkerLabel(ctx, finalHighIdx, high, 'high');
36
+ this.drawMarkerLabel(ctx, finalLowIdx, low, 'low');
37
+ ctx.restore();
38
+ }
39
+ }
40
+ /**
41
+ * Draws a marker label on the canvas context at a specific position.
42
+ * @param {CanvasRenderingContext2D} ctx - The canvas context to draw on.
43
+ * @param {number} candleIdx - The index of the candle.
44
+ * @param {number} yValue - The y value of the marker.
45
+ * @param {MarkerType} type - The type of the marker.
46
+ * @returns {void}
47
+ */
48
+ drawMarkerLabel(ctx, candleIdx, yValue, type) {
49
+ const y = this.getMarkerY(ctx, yValue, type === 'low');
50
+ if (!this.checkMarkerInBounds(y)) {
51
+ return;
52
+ }
53
+ const text = this.getMarkerText(yValue, type);
54
+ const x = this.getMarkerX(ctx, candleIdx, text);
55
+ ctx.fillStyle =
56
+ type === 'high' ? this.config.colors.highLowTheme.highColor : this.config.colors.highLowTheme.lowColor;
57
+ ctx.fillText(text, x, y);
58
+ }
59
+ /**
60
+ * Returns a string that represents a marker text for a given yValue and type.
61
+ *
62
+ * @private
63
+ * @param {number} yValue - The yValue to format.
64
+ * @param {MarkerType} type - The type of the marker ('high' or 'low').
65
+ * @returns {string} - The formatted marker text.
66
+ */
67
+ getMarkerText(yValue, type) {
68
+ const formattedValue = this.chartModel.pane.regularFormatter(yValue);
69
+ const prefix = type === 'high' ? 'H:' : 'L:';
70
+ return `${prefix} ${formattedValue}`;
71
+ }
72
+ /**
73
+ * Returns the y-coordinate of a marker on the chart.
74
+ * @param {CanvasRenderingContext2D} ctx - The rendering context of the canvas.
75
+ * @param {number} yValue - The y-value of the marker.
76
+ * @param {boolean} [offset=false] - Whether to add an offset to the y-coordinate.
77
+ * @returns {number} The y-coordinate of the marker.
78
+ */
79
+ getMarkerY(ctx, yValue, offset = false) {
80
+ const y = this.chartModel.toY(yValue);
81
+ if (offset) {
82
+ const fontSize = getTextLineHeight(ctx);
83
+ return y + fontSize;
84
+ }
85
+ return y;
86
+ }
87
+ /**
88
+ * Checks if the given Y coordinate is within the bounds of the chart.
89
+ * @param {number} y - The Y coordinate to check.
90
+ * @returns {boolean} - Returns true if the Y coordinate is within the bounds of the chart, otherwise returns false.
91
+ */
92
+ checkMarkerInBounds(y) {
93
+ const chartBounds = this.canvasBoundsContainer.getBounds(CanvasElement.CHART);
94
+ if (y > chartBounds.y && y < chartBounds.y + chartBounds.height) {
95
+ return true;
96
+ }
97
+ // if the Y coordinate of the text doesn't fit the viewport -> do not draw it
98
+ return false;
99
+ }
100
+ /**
101
+ * Calculates the x position of the marker for a given candle index and text
102
+ * @param {CanvasRenderingContext2D} ctx - The canvas rendering context
103
+ * @param {number} candleIdx - The index of the candle
104
+ * @param {string} text - The text to be displayed
105
+ * @returns {number} - The x position of the marker
106
+ */
107
+ getMarkerX(ctx, candleIdx, text) {
108
+ let x = this.chartModel.toX(candleIdx);
109
+ const chartBounds = this.canvasBoundsContainer.getBounds(CanvasElement.CHART);
110
+ const shift = 4;
111
+ /**
112
+ * recalculates position of the text if it overexceed the chart bounds
113
+ * it will look like it turns from the right to the left
114
+ * it helps to fix the situation when
115
+ * the candle is still visible, but the text may overflow the bounds
116
+ */
117
+ const textWidth = ctx.measureText(text).width;
118
+ if (x + shift + textWidth > chartBounds.width) {
119
+ x = x - (shift + textWidth);
120
+ }
121
+ return x + shift;
122
+ }
123
+ /**
124
+ * Returns an array of canvas IDs.
125
+ *
126
+ * @returns {Array<string>} An array containing the ID of the canvas model.
127
+ */
128
+ getCanvasIds() {
129
+ return [this.canvasModel.canvasId];
130
+ }
131
+ }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
@@ -1,6 +1,51 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
6
- import{HighlightsModel as r}from"./highlights.model";import{HighlightsDrawer as l}from"./highlights.drawer";import{ChartBaseElement as o}from"../../model/chart-base-element";const d="HIGHLIGHTS_PLUGIN";export class HighlightsComponent extends o{constructor(h,i,t,s,e,g){super(),this.eventBus=h,this.config=i,this.highlightsModel=new r(t),this.addChildEntity(this.highlightsModel),this.highLightsDrawer=new l(this.highlightsModel,t,s,e,i),g.addDrawer(this.highLightsDrawer,d)}getHighlights(){return this.highlightsModel.getHighlights()}setHighlights(h){this.highlightsModel.setHighlights(h)}setHighlightsVisible(h=!0){this.config.components.highlights.visible=h,this.eventBus.fireDraw(this.highLightsDrawer.getCanvasIds())}observeHighlightsUpdated(){return this.highlightsModel.observeHighlightsUpdated()}}
6
+ import { HighlightsModel } from './highlights.model';
7
+ import { HighlightsDrawer } from './highlights.drawer';
8
+ import { ChartBaseElement } from '../../model/chart-base-element';
9
+ const HIGHLIGHTS_DRAWER_TYPE = 'HIGHLIGHTS_PLUGIN';
10
+ export class HighlightsComponent extends ChartBaseElement {
11
+ constructor(eventBus, config, chartModel, canvasModel, canvasBoundsContainer, drawingManager) {
12
+ super();
13
+ this.eventBus = eventBus;
14
+ this.config = config;
15
+ this.highlightsModel = new HighlightsModel(chartModel);
16
+ this.addChildEntity(this.highlightsModel);
17
+ this.highLightsDrawer = new HighlightsDrawer(this.highlightsModel, chartModel, canvasModel, canvasBoundsContainer, config);
18
+ drawingManager.addDrawer(this.highLightsDrawer, HIGHLIGHTS_DRAWER_TYPE);
19
+ }
20
+ /**
21
+ * Returns the highlights from the highlightsModel
22
+ * @returns {Array} An array of highlights
23
+ */
24
+ getHighlights() {
25
+ return this.highlightsModel.getHighlights();
26
+ }
27
+ /**
28
+ * Sets the highlights of the highlights model.
29
+ * @param {Highlight[]} highlights - An array of Highlight objects to be set as the highlights of the model.
30
+ * @returns {void}
31
+ */
32
+ setHighlights(highlights) {
33
+ this.highlightsModel.setHighlights(highlights);
34
+ }
35
+ /**
36
+ * Sets the visibility of the highlights component.
37
+ * @param {boolean} visible - A boolean value indicating whether the highlights should be visible or not. Default value is true.
38
+ * @returns {void}
39
+ */
40
+ setHighlightsVisible(visible = true) {
41
+ this.config.components.highlights.visible = visible;
42
+ this.eventBus.fireDraw(this.highLightsDrawer.getCanvasIds());
43
+ }
44
+ /**
45
+ * Returns an observable that emits when the highlights are updated.
46
+ * @returns {Observable} An observable that emits when the highlights are updated.
47
+ */
48
+ observeHighlightsUpdated() {
49
+ return this.highlightsModel.observeHighlightsUpdated();
50
+ }
51
+ }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
@@ -1,6 +1,159 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
6
- import{calculateTextWidth as A}from"../../utils/canvas/canvas-font-measure-tool.utils";import{HIGHLIGHTS_TYPES as F}from"./highlights.model";import{CanvasElement as x}from"../../canvas/canvas-bounds-container";import{unitToPixels as X}from"../../model/scaling/viewport.model";import{clipToBounds as G}from"../../drawers/data-series.drawer";const n=[20,10];export class HighlightsDrawer{constructor(e,o,s,l,i){this.highlightsModel=e,this.chartModel=o,this.canvasModel=s,this.canvasBoundsContainer=l,this.config=i}draw(){var e,o,s,l;if(this.config.components.highlights.visible){const i=this.chartModel.getCandles(),t=this.canvasModel.ctx,d=this.highlightsModel.getVisualHighlights();if(this.highlightsModel.getHighlights().length&&i.length!==0&&this.chartModel.scaleModel.isScaleReady()){const r=this.canvasBoundsContainer.getBounds(x.ALL_PANES);t.save(),G(t,r);const w=(e=this.config.components.highlights.border.width)!==null&&e!==void 0?e:1,E=(o=this.config.components.highlights.border.dash)!==null&&o!==void 0?o:[0,0],H=(s=this.config.components.highlights.fontSize)!==null&&s!==void 0?s:11,L=(l=this.config.components.highlights.fontFamily)!==null&&l!==void 0?l:"monospace",p=`${H}px ${L}, monospace`;t.font=p,t.lineWidth=w,t.setLineDash(E),F.forEach(y=>{var f,g;const S=d[y];if(S){const a=this.config.colors.highlights[y],k=(f=a==null?void 0:a.border)!==null&&f!==void 0?f:"#ffffff",B=(g=a==null?void 0:a.background)!==null&&g!==void 0?g:"#ffffff";t.save(),t.beginPath(),t.fillStyle=B,t.strokeStyle=k,S.forEach(h=>{var v,m,b;const P=this.chartModel.candleFromTimestamp(h.from),D=X(P.width,this.chartModel.scaleModel.zoomX),c=P.xStart(this.chartModel.scaleModel),_=this.chartModel.candleFromTimestamp(h.to),C=X(_.width,this.chartModel.scaleModel.zoomX),u=_.xStart(this.chartModel.scaleModel)+C;if(h.border&&this.drawBorders(h.border,t,c+D,u-C,r),t.fillRect(c,r.y,u-c,r.y+r.height),h.label){const T=(v=h.label.text)!==null&&v!==void 0?v:"",M=this.config.colors.highlights[h.type];t.save(),t.fillStyle=(m=M==null?void 0:M.label)!==null&&m!==void 0?m:"#ffffff";const I=A(T,t,p),[W,z]=this.resolveHighlightLabelPosition((b=h.label.placement)!==null&&b!==void 0?b:"left-left",r,[c,u],I);t.fillText(T,W,z),t.restore()}}),t.closePath(),t.restore()}}),t.restore()}}}resolveHighlightLabelPosition(e,o,s,l){const[i,t]=s;switch(e){case"right-left":return[t-n[1]-l,o.y+n[0]];case"left-left":return[i-n[1]-l,o.y+n[0]];case"right-right":return[t+n[1],o.y+n[0]];case"left-right":default:return[i+n[1],o.y+n[0]]}}drawBorders(e,o,s,l,i){const t=e.left,d=e.right;t&&(o.beginPath(),o.moveTo(s,i.y),o.lineTo(s,i.y+i.height),o.stroke(),o.closePath()),d&&(o.beginPath(),o.moveTo(l,i.y),o.lineTo(l,i.y+i.height),o.stroke(),o.closePath())}getCanvasIds(){return[this.canvasModel.canvasId]}}
6
+ import { calculateTextWidth } from '../../utils/canvas/canvas-font-measure-tool.utils';
7
+ import { HIGHLIGHTS_TYPES } from './highlights.model';
8
+ import { CanvasElement } from '../../canvas/canvas-bounds-container';
9
+ import { unitToPixels } from '../../model/scaling/viewport.model';
10
+ import { clipToBounds } from '../../drawers/data-series.drawer';
11
+ const LABEL_PADDINGS = [20, 10];
12
+ export class HighlightsDrawer {
13
+ constructor(highlightsModel, chartModel, canvasModel, canvasBoundsContainer, config) {
14
+ this.highlightsModel = highlightsModel;
15
+ this.chartModel = chartModel;
16
+ this.canvasModel = canvasModel;
17
+ this.canvasBoundsContainer = canvasBoundsContainer;
18
+ this.config = config;
19
+ }
20
+ /**
21
+ * Draws highlights on the chart canvas if they are visible.
22
+ * @function
23
+ * @name draw
24
+ * @memberof ChartComponent.prototype
25
+ *
26
+ * @returns {void}
27
+ *
28
+ * @example
29
+ * chartComponent.draw();
30
+ */
31
+ draw() {
32
+ var _a, _b, _c, _d;
33
+ if (this.config.components.highlights.visible) {
34
+ const candles = this.chartModel.getCandles();
35
+ const ctx = this.canvasModel.ctx;
36
+ const highlights = this.highlightsModel.getVisualHighlights();
37
+ const highlightsExist = this.highlightsModel.getHighlights().length;
38
+ if (highlightsExist && candles.length !== 0 && this.chartModel.scale.isScaleReady()) {
39
+ const chartBounds = this.canvasBoundsContainer.getBounds(CanvasElement.ALL_PANES);
40
+ ctx.save();
41
+ //clip rect to throw away everything that doesn't fit chart bounds
42
+ clipToBounds(ctx, chartBounds);
43
+ const borderWidth = (_a = this.config.components.highlights.border.width) !== null && _a !== void 0 ? _a : 1;
44
+ const borderDash = (_b = this.config.components.highlights.border.dash) !== null && _b !== void 0 ? _b : [0, 0];
45
+ const fontSize = (_c = this.config.components.highlights.fontSize) !== null && _c !== void 0 ? _c : 11;
46
+ const fontFamily = (_d = this.config.components.highlights.fontFamily) !== null && _d !== void 0 ? _d : 'monospace';
47
+ const font = `${fontSize}px ${fontFamily}, monospace`;
48
+ ctx.font = font;
49
+ ctx.lineWidth = borderWidth;
50
+ ctx.setLineDash(borderDash);
51
+ HIGHLIGHTS_TYPES.forEach(highlightType => {
52
+ var _a, _b;
53
+ const items = highlights[highlightType];
54
+ if (items) {
55
+ const itemColors = this.config.colors.highlights[highlightType];
56
+ const strokeStyle = (_a = itemColors === null || itemColors === void 0 ? void 0 : itemColors.border) !== null && _a !== void 0 ? _a : '#ffffff';
57
+ const fillStyle = (_b = itemColors === null || itemColors === void 0 ? void 0 : itemColors.background) !== null && _b !== void 0 ? _b : '#ffffff';
58
+ ctx.save();
59
+ // start line path to draw highlights' borders
60
+ // it is done once for all highlights because it is more perfomant
61
+ ctx.beginPath();
62
+ ctx.fillStyle = fillStyle;
63
+ ctx.strokeStyle = strokeStyle;
64
+ items.forEach(item => {
65
+ var _a, _b, _c;
66
+ const fromXCandle = this.chartModel.candleFromTimestamp(item.from);
67
+ const fromXCandleWidth = unitToPixels(fromXCandle.width, this.chartModel.scale.zoomX);
68
+ const fromX = fromXCandle.xStart(this.chartModel.scale);
69
+ const toXCandle = this.chartModel.candleFromTimestamp(item.to);
70
+ const toXCandleWidth = unitToPixels(toXCandle.width, this.chartModel.scale.zoomX);
71
+ const toX = toXCandle.xStart(this.chartModel.scale) + toXCandleWidth;
72
+ // draw highlight' borders
73
+ if (item.border) {
74
+ this.drawBorders(item.border, ctx, fromX + fromXCandleWidth, toX - toXCandleWidth, chartBounds);
75
+ }
76
+ // draw highlight' background
77
+ ctx.fillRect(fromX, chartBounds.y, toX - fromX, chartBounds.y + chartBounds.height);
78
+ // draw highlight' label
79
+ if (item.label) {
80
+ const label = (_a = item.label.text) !== null && _a !== void 0 ? _a : '';
81
+ const itemColors = this.config.colors.highlights[item.type];
82
+ ctx.save();
83
+ ctx.fillStyle = (_b = itemColors === null || itemColors === void 0 ? void 0 : itemColors.label) !== null && _b !== void 0 ? _b : '#ffffff';
84
+ const labelWidth = calculateTextWidth(label, ctx, font);
85
+ const [labelX, labelY] = this.resolveHighlightLabelPosition((_c = item.label.placement) !== null && _c !== void 0 ? _c : 'left-left', chartBounds, [fromX, toX], labelWidth);
86
+ ctx.fillText(label, labelX, labelY);
87
+ ctx.restore();
88
+ }
89
+ });
90
+ ctx.closePath();
91
+ ctx.restore();
92
+ }
93
+ });
94
+ ctx.restore();
95
+ }
96
+ }
97
+ }
98
+ /**
99
+ * Calculates the position of the highlight label based on the given parameters.
100
+ * @param {HighlightTextPlacement} placement - The placement of the highlight text.
101
+ * @param {Bounds} bounds - The bounds of the highlight.
102
+ * @param {[number, number]} highlightFromTo - The start and end position of the highlight.
103
+ * @param {number} labelWidth - The width of the label.
104
+ * @returns {[number, number]} - The x and y position of the highlight label.
105
+ */
106
+ resolveHighlightLabelPosition(placement, bounds, highlightFromTo, labelWidth) {
107
+ const [fromX, toX] = highlightFromTo;
108
+ switch (placement) {
109
+ case 'right-left': {
110
+ return [toX - LABEL_PADDINGS[1] - labelWidth, bounds.y + LABEL_PADDINGS[0]];
111
+ }
112
+ case 'left-left': {
113
+ return [fromX - LABEL_PADDINGS[1] - labelWidth, bounds.y + LABEL_PADDINGS[0]];
114
+ }
115
+ case 'right-right': {
116
+ return [toX + LABEL_PADDINGS[1], bounds.y + LABEL_PADDINGS[0]];
117
+ }
118
+ case 'left-right':
119
+ default: {
120
+ return [fromX + LABEL_PADDINGS[1], bounds.y + LABEL_PADDINGS[0]];
121
+ }
122
+ }
123
+ }
124
+ /**
125
+ * Draws borders on a canvas context for a given chart.
126
+ * @param {HighlightBorder} border - The border to draw.
127
+ * @param {CanvasRenderingContext2D} ctx - The canvas context to draw on.
128
+ * @param {number} fromX - The starting x-coordinate of the border.
129
+ * @param {number} toX - The ending x-coordinate of the border.
130
+ * @param {Bounds} chartBounds - The bounds of the chart to draw the border on.
131
+ * @returns {void}
132
+ */
133
+ drawBorders(border, ctx, fromX, toX, chartBounds) {
134
+ const leftBorder = border.left;
135
+ const rightBorder = border.right;
136
+ if (leftBorder) {
137
+ ctx.beginPath();
138
+ ctx.moveTo(fromX, chartBounds.y);
139
+ ctx.lineTo(fromX, chartBounds.y + chartBounds.height);
140
+ ctx.stroke();
141
+ ctx.closePath();
142
+ }
143
+ if (rightBorder) {
144
+ ctx.beginPath();
145
+ ctx.moveTo(toX, chartBounds.y);
146
+ ctx.lineTo(toX, chartBounds.y + chartBounds.height);
147
+ ctx.stroke();
148
+ ctx.closePath();
149
+ }
150
+ }
151
+ /**
152
+ * Returns an array of canvas IDs.
153
+ *
154
+ * @returns {Array<string>} An array containing the canvas ID.
155
+ */
156
+ getCanvasIds() {
157
+ return [this.canvasModel.canvasId];
158
+ }
159
+ }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
@@ -1,6 +1,80 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
6
- import{Subject as l}from"rxjs";import{ChartBaseElement as a}from"../../model/chart-base-element";import{getElementsInRange as r}from"../../utils/array.utils";export const HIGHLIGHTS_TYPES=["AFTER_MARKET","PRE_MARKET","NO_TRADING","REGULAR"];const o=24*60*60*1e3;export class HighlightsModel extends a{constructor(t){super(),this.chartModel=t,this.highlights=[],this.visualHighlights={},this.highlightsUpdatedSubject=new l}activate(){this.addRxSubscription(this.chartModel.scaleModel.xChanged.subscribe(()=>this.highlights.length&&this.recalculateVisualHighlights()))}getHighlights(){return this.highlights}getVisualHighlights(){return this.visualHighlights}recalculateVisualHighlights(){this.visualHighlights={};const t=this.chartModel.getFirstTimestamp(),h=this.chartModel.getLastTimestamp()+o;r(this.highlights,t,h,c).forEach(i=>{var s;this.visualHighlights[i.type]||(this.visualHighlights[i.type]=[]),(s=this.visualHighlights[i.type])===null||s===void 0||s.push(i)})}setHighlights(t){this.highlights=t,this.highlights.sort((h,e)=>h.to-e.to),this.highlightsUpdatedSubject.next(this.highlights),this.highlights.length?this.recalculateVisualHighlights():this.visualHighlights={}}observeHighlightsUpdated(){return this.highlightsUpdatedSubject.asObservable()}}const c=g=>g.to;
6
+ import { Subject } from 'rxjs';
7
+ import { ChartBaseElement } from '../../model/chart-base-element';
8
+ import { getElementsInRange } from '../../utils/array.utils';
9
+ export const HIGHLIGHTS_TYPES = ['AFTER_MARKET', 'PRE_MARKET', 'NO_TRADING', 'REGULAR'];
10
+ const DAY_MS = 24 * 60 * 60 * 1000;
11
+ export class HighlightsModel extends ChartBaseElement {
12
+ constructor(chartModel) {
13
+ super();
14
+ this.chartModel = chartModel;
15
+ this.highlights = [];
16
+ this.visualHighlights = {};
17
+ this.highlightsUpdatedSubject = new Subject();
18
+ }
19
+ /**
20
+ * Activates the chart by subscribing to the xChanged event of the scaleModel.
21
+ * If there are highlights, it recalculates the visual highlights.
22
+ */
23
+ activate() {
24
+ this.addRxSubscription(this.chartModel.scale.xChanged.subscribe(() => this.highlights.length && this.recalculateVisualHighlights()));
25
+ }
26
+ /**
27
+ * Returns an array of Highlight objects.
28
+ * @returns {Highlight[]} - An array of Highlight objects.
29
+ */
30
+ getHighlights() {
31
+ return this.highlights;
32
+ }
33
+ /**
34
+ * Returns the visual highlights object.
35
+ *
36
+ * @returns {VisualHighlights} The visual highlights object.
37
+ */
38
+ getVisualHighlights() {
39
+ return this.visualHighlights;
40
+ }
41
+ /**
42
+ * Recalculates the visual highlights based on the current chart model and highlights.
43
+ * @private
44
+ * @returns {void}
45
+ */
46
+ recalculateVisualHighlights() {
47
+ this.visualHighlights = {};
48
+ const firstTimestamp = this.chartModel.getFirstTimestamp();
49
+ const lastTimestamp = this.chartModel.getLastTimestamp() + DAY_MS;
50
+ const highlightsInRange = getElementsInRange(this.highlights, firstTimestamp, lastTimestamp, highlightTransformFunc);
51
+ highlightsInRange.forEach(h => {
52
+ var _a;
53
+ if (!this.visualHighlights[h.type]) {
54
+ this.visualHighlights[h.type] = [];
55
+ }
56
+ (_a = this.visualHighlights[h.type]) === null || _a === void 0 ? void 0 : _a.push(h);
57
+ });
58
+ }
59
+ /**
60
+ * Sets the highlights of the component and updates the visual highlights accordingly.
61
+ * @param {Highlight[]} highlights - An array of Highlight objects to be set as the new highlights.
62
+ * @returns {void}
63
+ */
64
+ setHighlights(highlights) {
65
+ this.highlights = highlights;
66
+ this.highlights.sort((a, b) => a.to - b.to);
67
+ this.highlightsUpdatedSubject.next(this.highlights);
68
+ this.highlights.length ? this.recalculateVisualHighlights() : (this.visualHighlights = {});
69
+ }
70
+ /**
71
+ * Returns an Observable that emits an array of Highlight objects whenever the highlightsUpdatedSubject emits a new value.
72
+ * @returns {Observable<Highlight[]>} An Observable that emits an array of Highlight objects.
73
+ */
74
+ observeHighlightsUpdated() {
75
+ return this.highlightsUpdatedSubject.asObservable();
76
+ }
77
+ }
78
+ const highlightTransformFunc = (item) => {
79
+ return item.to;
80
+ };
@@ -1,11 +1,11 @@
1
1
  /*
2
- * Copyright (C) 2002 - 2023 Devexperts LLC
2
+ * Copyright (C) 2019 - 2023 Devexperts Solutions IE Limited
3
3
  * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
4
4
  * If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
5
5
  */
6
6
  import { Observable, Subject } from 'rxjs';
7
7
  import { Unit } from '../../model/scaling/viewport.model';
8
- import { AnimationFrameCache } from '../../utils/perfomance/animation-frame-cache.utils';
8
+ import { AnimationFrameCache } from '../../utils/performance/animation-frame-cache.utils';
9
9
  export type PriceAxisType = 'regular' | 'percent' | 'logarithmic';
10
10
  export interface LabelsGenerator {
11
11
  readonly observeLabelsChanged: () => Observable<NumericAxisLabel[]>;