@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,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,39 @@
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
- export const createHighLowOffsetCalculator=e=>t=>{const{top:c,bottom:s}=e(),o=t.high-t.low,n=o===0?1:o,r=n*c/100,l=n*s/100,a=t.low-l,f=t.high+r;return{low:a,high:f}},createCandlesOffsetProvider=(e,t)=>{const c=createHighLowOffsetCalculator(e);return{isHighLowActive:()=>!0,calculateHighLow:s=>{const o=t.calculateHighLow(s);return c(o)}}};
6
+ /**
7
+ * Constraint on top of high low provider - makes additional offset bounds.
8
+ * @doc-tags viewport,scaling
9
+ * @param offsetsProvider
10
+ * @doc-tags viewport,scaling,offsets
11
+ */
12
+ export const createHighLowOffsetCalculator = (offsetsProvider) => (highLow) => {
13
+ const { top, bottom } = offsetsProvider();
14
+ const _height = highLow.high - highLow.low;
15
+ // TODO what should we do if height is 0?
16
+ const height = _height === 0 ? 1 : _height;
17
+ const offsetTop = (height * top) / 100;
18
+ const offsetBottom = (height * bottom) / 100;
19
+ const low = highLow.low - offsetBottom;
20
+ const high = highLow.high + offsetTop;
21
+ return { low, high };
22
+ };
23
+ /**
24
+ * Constraint on top of high low provider - makes additional offset bounds.
25
+ * @doc-tags viewport,scaling
26
+ * @param offsetsProvider
27
+ * @param highLowProvider
28
+ * @doc-tags viewport,scaling,offsets
29
+ */
30
+ export const createCandlesOffsetProvider = (offsetsProvider, highLowProvider) => {
31
+ const offsetsCalculator = createHighLowOffsetCalculator(offsetsProvider);
32
+ return {
33
+ isHighLowActive: () => true,
34
+ calculateHighLow: (state) => {
35
+ const highLow = highLowProvider.calculateHighLow(state);
36
+ return offsetsCalculator(highLow);
37
+ },
38
+ };
39
+ };
@@ -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,102 @@
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{nameDirection as u}from"../../model/candle.model";import{VisualSeriesPoint as g}from"../../model/data-series.model";import C from"../../model/visual-candle";import{firstOf as N,lastOf as w}from"../../utils/array.utils";import{round as h}from"../../utils/math.utils";const m=60;export const fakeVisualCandle=(n,t,o,e,l=m)=>{const r=fakeCandle(n,e,l);r.volume=o;let s;if(t.length===0)s=0;else if(e>=t.length){const c=t[t.length-1],f=(e-(t.length-1))*o;s=c.centerUnit+f}else{const c=t[0],f=-e*o;s=c.centerUnit-f}return new C(s,o,r.open,r.close,r.lo,r.hi,u(r.open,r.close),r)},fakeVisualPoint=(n,t,o,e,l=m)=>{const r=fakeDataPoint(n,e,l);let s;if(t.length===0)s=0;else if(e>=t.length){const c=t[t.length-1],f=(e-(t.length-1))*o;s=c.centerUnit+f}else{const c=t[0],f=-e*o;s=c.centerUnit-f}return new g(s,r.close)},fakeCandle=(n,t,o=m)=>({hi:NaN,lo:NaN,open:NaN,close:NaN,timestamp:i(n,t,o),volume:NaN,expansion:!0,idx:t}),fakeDataPoint=(n,t,o=m)=>({close:NaN,timestamp:i(n,t,o)});function i(n,t,o=m){var e,l;const r=h(t);if(n.length===0)return 0;const s=w(n);if(r>=n.length&&s)return p(s,n.length-1,r,o);const c=N(n);return r<0&&c?p(c,0,r,o):(l=(e=n[r])===null||e===void 0?void 0:e.timestamp)!==null&&l!==void 0?l:0}const p=(n,t,o,e=m)=>n.timestamp+(o-(t!=null?t:0))*e;
6
+ import { nameDirection } from '../../model/candle.model';
7
+ import { VisualSeriesPoint } from '../../model/data-series.model';
8
+ import VisualCandle from '../../model/visual-candle';
9
+ import { firstOf, lastOf } from '../../utils/array.utils';
10
+ import { round } from '../../utils/math.utils';
11
+ const DEFAULT_PERIOD = 60; // 1 minute
12
+ /**
13
+ * Generates fake candle for left and right "out of data range" zones.
14
+ * Requires period to calculate the fake timestamp.
15
+ * The timestamp won't take session breaks or holidays into account.
16
+ */
17
+ export const fakeVisualCandle = (dataPoints, visualCandles, candleWidth, index, period = DEFAULT_PERIOD) => {
18
+ const candle = fakeCandle(dataPoints, index, period);
19
+ // in case we have equivolume
20
+ candle.volume = candleWidth;
21
+ let x;
22
+ if (visualCandles.length === 0) {
23
+ x = 0;
24
+ }
25
+ else if (index >= visualCandles.length) {
26
+ const lastCandle = visualCandles[visualCandles.length - 1];
27
+ const candlesCountInBetween = index - (visualCandles.length - 1);
28
+ const offsetFromLast = candlesCountInBetween * candleWidth;
29
+ x = lastCandle.centerUnit + offsetFromLast;
30
+ }
31
+ else {
32
+ const firstCandle = visualCandles[0];
33
+ const candlesCountInBetween = -index;
34
+ const offsetFromFirst = candlesCountInBetween * candleWidth;
35
+ x = firstCandle.centerUnit - offsetFromFirst;
36
+ }
37
+ return new VisualCandle(x, candleWidth, candle.open, candle.close, candle.lo, candle.hi, nameDirection(candle.open, candle.close), candle);
38
+ };
39
+ export const fakeVisualPoint = (dataPoints, visualPoints, meanDataWidth, index, period = DEFAULT_PERIOD) => {
40
+ const candle = fakeDataPoint(dataPoints, index, period);
41
+ let x;
42
+ if (visualPoints.length === 0) {
43
+ x = 0;
44
+ }
45
+ else if (index >= visualPoints.length) {
46
+ const lastCandle = visualPoints[visualPoints.length - 1];
47
+ const candlesCountInBetween = index - (visualPoints.length - 1);
48
+ const offsetFromLast = candlesCountInBetween * meanDataWidth;
49
+ x = lastCandle.centerUnit + offsetFromLast;
50
+ }
51
+ else {
52
+ const firstCandle = visualPoints[0];
53
+ const candlesCountInBetween = -index;
54
+ const offsetFromFirst = candlesCountInBetween * meanDataWidth;
55
+ x = firstCandle.centerUnit - offsetFromFirst;
56
+ }
57
+ return new VisualSeriesPoint(x, candle.close);
58
+ };
59
+ export const fakeCandle = (candles, index, period = DEFAULT_PERIOD) => {
60
+ const t = getTimestampOfIndex(candles, index, period);
61
+ return {
62
+ hi: NaN,
63
+ lo: NaN,
64
+ open: NaN,
65
+ close: NaN,
66
+ timestamp: t,
67
+ volume: NaN,
68
+ expansion: true,
69
+ idx: index,
70
+ };
71
+ };
72
+ export const fakeDataPoint = (candles, index, period = DEFAULT_PERIOD) => {
73
+ const t = getTimestampOfIndex(candles, index, period);
74
+ return {
75
+ close: NaN,
76
+ timestamp: t,
77
+ };
78
+ };
79
+ /**
80
+ * Returns the timestamp of a given index in an array of candles.
81
+ * @param {Candle[]} candles - An array of candles.
82
+ * @param {Index} index - The index of the candle to get the timestamp from.
83
+ * @param {number} [period=DEFAULT_PERIOD] - The period of the candles in milliseconds.
84
+ * @returns {Timestamp} The timestamp of the candle at the given index or 0 if the array is empty or the index is out of bounds.
85
+ */
86
+ function getTimestampOfIndex(candles, index, period = DEFAULT_PERIOD) {
87
+ var _a, _b;
88
+ const _index = round(index);
89
+ if (candles.length === 0) {
90
+ return 0;
91
+ }
92
+ const lastCandle = lastOf(candles);
93
+ if (_index >= candles.length && lastCandle) {
94
+ return fakeTimestamp(lastCandle, candles.length - 1, _index, period);
95
+ }
96
+ const firstCandle = firstOf(candles);
97
+ if (_index < 0 && firstCandle) {
98
+ return fakeTimestamp(firstCandle, 0, _index, period);
99
+ }
100
+ return (_b = (_a = candles[_index]) === null || _a === void 0 ? void 0 : _a.timestamp) !== null && _b !== void 0 ? _b : 0;
101
+ }
102
+ const fakeTimestamp = (candle, candleIdx, index, period = DEFAULT_PERIOD) => candle.timestamp + (index - (candleIdx !== null && candleIdx !== void 0 ? candleIdx : 0)) * period;
@@ -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,40 @@
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{unitToPercent as a}from"../../model/scaling/viewport.model";import{PriceIncrementsUtils as s}from"../../utils/price-increments.utils";export const createRegularPriceFormatter=t=>r=>{let e;if(typeof r=="number")e=r;else if(typeof r=="string")e=Number(r);else return"\u2014";const[n]=t.dataSeries;if(n!==void 0){const i=s.getPricePrecision(e,n.pricePrecisions);return e.toFixed(i)}return`${e}`},createPercentFormatter=t=>(r,e)=>{const[n]=t.dataSeries;let i=r;const o=e!=null?e:n;o!==void 0&&(i=a(r,o.getBaseLine()));const c=i.toFixed(s.DEFAULT_PRECISION).replace("-","\u2212")+" %";return c==="\u22120.00 %"?"0.00 %":c},createYExtentFormatters=t=>({percent:createPercentFormatter(t),regular:createRegularPriceFormatter(t)});
6
+ import { unitToPercent } from '../../model/scaling/viewport.model';
7
+ import { PriceIncrementsUtils } from '../../utils/price-increments.utils';
8
+ export const createRegularPriceFormatter = (extent) => (value) => {
9
+ let checkedValue;
10
+ if (typeof value === 'number') {
11
+ checkedValue = value;
12
+ }
13
+ else if (typeof value === 'string') {
14
+ checkedValue = Number(value);
15
+ }
16
+ else {
17
+ return '—';
18
+ }
19
+ const [mainDataSeries] = extent.dataSeries;
20
+ if (mainDataSeries !== undefined) {
21
+ const precision = PriceIncrementsUtils.getPricePrecision(checkedValue, mainDataSeries.pricePrecisions);
22
+ return checkedValue.toFixed(precision);
23
+ }
24
+ return `${checkedValue}`;
25
+ };
26
+ export const createPercentFormatter = (extent) => (value, dataSeries) => {
27
+ const [mainDataSeries] = extent.dataSeries;
28
+ let valueUnit = value;
29
+ const series = dataSeries !== null && dataSeries !== void 0 ? dataSeries : mainDataSeries;
30
+ if (series !== undefined) {
31
+ valueUnit = unitToPercent(value, series.getBaseline());
32
+ }
33
+ // always apply default precision for percent
34
+ const formatted = valueUnit.toFixed(PriceIncrementsUtils.DEFAULT_PRECISION).replace('-', '−') + ' %';
35
+ return formatted === '−0.00 %' ? '0.00 %' : formatted;
36
+ };
37
+ export const createYExtentFormatters = (extent) => ({
38
+ percent: createPercentFormatter(extent),
39
+ regular: createRegularPriceFormatter(extent),
40
+ });
@@ -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,73 @@
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{cloneUnsafe as a}from"../../utils/object.utils";export class SecondaryChartColorsPool{constructor(e){this.config=e,this.usedChartColors={},this.symbolsToColorKeys={},this.secondaryChartColorsPool=this.createColorPool(this.config.colors.secondaryChartTheme),this.usedChartColors=Object.keys(this.secondaryChartColorsPool).reduce((o,s)=>Object.assign(Object.assign({},o),{[s]:0}),{})}createColorPool(e){return e.reduce((o,s,r)=>(o[`color${r}`]=Object.assign(Object.assign({},a(this.config.colors)),{lineTheme:Object.assign({},s.lineTheme),areaTheme:Object.assign({},s.areaTheme)}),o),{})}takeColorFromPool(e){let o=Number.MAX_SAFE_INTEGER,s="";for(const[r,t]of Object.entries(this.usedChartColors))t<o&&(o=t,s=r);return this.usedChartColors[s]=this.usedChartColors[s]+1,this.symbolsToColorKeys[e]=s,this.secondaryChartColorsPool[s]}addColorToPool(e){const o=this.symbolsToColorKeys[e];this.usedChartColors[o]&&(this.usedChartColors[o]=this.usedChartColors[o]-1)}updateColorConfig(e,o){var s,r;const t=this.secondaryChartColorsPool[this.usedChartColors[e]];if(t){const l=o;this.secondaryChartColorsPool[this.usedChartColors[e]]=Object.assign(Object.assign({},o),{lineTheme:Object.assign(t.lineTheme,(s=l.lineTheme)!==null&&s!==void 0?s:{}),areaTheme:Object.assign(t.areaTheme,(r=l.areaTheme)!==null&&r!==void 0?r:{})})}}}
6
+ import { cloneUnsafe } from '../../utils/object.utils';
7
+ export class SecondaryChartColorsPool {
8
+ constructor(config) {
9
+ this.config = config;
10
+ this.usedChartColors = {};
11
+ this.symbolsToColorKeys = {};
12
+ this.secondaryChartColorsPool = this.createColorPool(this.config.colors.secondaryChartTheme);
13
+ this.usedChartColors = Object.keys(this.secondaryChartColorsPool).reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: 0 })), {});
14
+ }
15
+ /**
16
+ * Creates a color pool object based on the provided color array
17
+ * @param {SecondaryChartTheme[]} colorArray - An array of SecondaryChartTheme objects
18
+ * @returns {Object} - An object containing a key-value pair for each color in the colorArray
19
+ * The key is a string in the format "colorX" where X is the index of the color in the array
20
+ * The value is an object containing the FullChartColors for the color, with lineTheme and areaTheme properties
21
+ */
22
+ createColorPool(colorArray) {
23
+ return colorArray.reduce((acc, item, index) => {
24
+ acc[`color${index}`] = Object.assign(Object.assign({}, cloneUnsafe(this.config.colors)), { lineTheme: Object.assign({}, item.lineTheme), areaTheme: Object.assign({}, item.areaTheme) });
25
+ return acc;
26
+ }, {});
27
+ }
28
+ /**
29
+ * Takes a color from the secondaryChartColorsPool and assigns it to a symbol.
30
+ * @param {string} symbol - The symbol to assign the color to.
31
+ * @returns {string} The color assigned to the symbol.
32
+ */
33
+ takeColorFromPool(symbol) {
34
+ let minColors = Number.MAX_SAFE_INTEGER;
35
+ let minColorKey = '';
36
+ for (const [key, value] of Object.entries(this.usedChartColors)) {
37
+ if (value < minColors) {
38
+ minColors = value;
39
+ minColorKey = key;
40
+ }
41
+ }
42
+ this.usedChartColors[minColorKey] = this.usedChartColors[minColorKey] + 1;
43
+ this.symbolsToColorKeys[symbol] = minColorKey;
44
+ return this.secondaryChartColorsPool[minColorKey];
45
+ }
46
+ /**
47
+ * Adds a color to the chart color pool.
48
+ *
49
+ * @param {string} symbol - The symbol of the color to be added.
50
+ *
51
+ * @returns {void}
52
+ */
53
+ addColorToPool(symbol) {
54
+ const key = this.symbolsToColorKeys[symbol];
55
+ if (this.usedChartColors[key]) {
56
+ this.usedChartColors[key] = this.usedChartColors[key] - 1;
57
+ }
58
+ }
59
+ /**
60
+ * Updates the color configuration for a given symbol in the chart.
61
+ * @param {string} symbol - The symbol for which the color configuration needs to be updated.
62
+ * @param {CandleSeriesColors} config - The new color configuration for the symbol.
63
+ * @returns {void}
64
+ */
65
+ updateColorConfig(symbol, config) {
66
+ var _a, _b;
67
+ const existColorConfig = this.secondaryChartColorsPool[this.usedChartColors[symbol]];
68
+ if (existColorConfig) {
69
+ const colors = config;
70
+ this.secondaryChartColorsPool[this.usedChartColors[symbol]] = Object.assign(Object.assign({}, config), { lineTheme: Object.assign(existColorConfig.lineTheme, (_a = colors.lineTheme) !== null && _a !== void 0 ? _a : {}), areaTheme: Object.assign(existColorConfig.areaTheme, (_b = colors.areaTheme) !== null && _b !== void 0 ? _b : {}) });
71
+ }
72
+ }
73
+ }
@@ -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,90 @@
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{ClearCanvasDrawer as p}from"../../drawers/clear-canvas.drawer";import{CompositeDrawer as c}from"../../drawers/composite.drawer";import{ChartBaseElement as d}from"../../model/chart-base-element";import{CrossToolDrawer as w}from"./cross-tool.drawer";import{CrossToolModel as C}from"./cross-tool.model";import{CrossAndLabelsDrawerType as o}from"./types/cross-and-labels.drawer";import{NoneDrawerType as m}from"./types/none.drawer";export class CrossToolComponent extends d{constructor(s,e,t,a,n,i,l){super(),this.config=s,this.crossToolCanvasModel=e,this.canvasBoundsContainer=t,this.drawingManager=a,this.paneManager=n,this.crossToolTypeDrawers={},this.model=new C(s.components.crossTool,this.crossToolCanvasModel,i,l),this.addChildEntity(this.model);const T=new p(this.crossToolCanvasModel);this.registerDefaultDrawerTypes();const h=new w(this.model,this.crossToolCanvasModel,this.crossToolTypeDrawers),r=new c;r.addDrawer(T,"CLEAR_CANVAS"),r.addDrawer(h,"CROSS_TOOL_DRAWER"),this.drawingManager.addDrawer(r,"CROSS_TOOL")}registerDefaultDrawerTypes(){this.registerCrossToolTypeDrawer("cross-and-labels",new o(this.config,this.canvasBoundsContainer,this.paneManager,()=>!0)),this.registerCrossToolTypeDrawer("just-labels",new o(this.config,this.canvasBoundsContainer,this.paneManager,()=>!0,!0)),this.registerCrossToolTypeDrawer("none",new m)}setVisible(s){this.model.setType(s?"cross-and-labels":"none")}setType(s){this.model.setType(s)}observeCrossToolChanged(){return this.model.currentHoverSubject}setMagnetTarget(s){this.config.components.crossTool.magnetTarget=s}registerCrossToolTypeDrawer(s,e){this.crossToolTypeDrawers[s]=e}}
6
+ import { ClearCanvasDrawer } from '../../drawers/clear-canvas.drawer';
7
+ import { CompositeDrawer } from '../../drawers/composite.drawer';
8
+ import { ChartBaseElement } from '../../model/chart-base-element';
9
+ import { CrossToolDrawer } from './cross-tool.drawer';
10
+ import { CrossToolModel } from './cross-tool.model';
11
+ import { CrossAndLabelsDrawerType } from './types/cross-and-labels.drawer';
12
+ import { NoneDrawerType } from './types/none.drawer';
13
+ /**
14
+ * Default bundled chart cross tool.
15
+ */
16
+ export class CrossToolComponent extends ChartBaseElement {
17
+ constructor(config, crossToolCanvasModel, canvasBoundsContainer, drawingManager, paneManager, crossEventProducer, hoverProducer) {
18
+ super();
19
+ this.config = config;
20
+ this.crossToolCanvasModel = crossToolCanvasModel;
21
+ this.canvasBoundsContainer = canvasBoundsContainer;
22
+ this.drawingManager = drawingManager;
23
+ this.paneManager = paneManager;
24
+ this.crossToolTypeDrawers = {};
25
+ this.model = new CrossToolModel(config.components.crossTool, this.crossToolCanvasModel, crossEventProducer, hoverProducer);
26
+ this.addChildEntity(this.model);
27
+ const clearCanvasDrawer = new ClearCanvasDrawer(this.crossToolCanvasModel);
28
+ this.registerDefaultDrawerTypes();
29
+ const crossToolDrawer = new CrossToolDrawer(this.model, this.crossToolCanvasModel, this.crossToolTypeDrawers);
30
+ const compositeDrawer = new CompositeDrawer();
31
+ compositeDrawer.addDrawer(clearCanvasDrawer, 'CLEAR_CANVAS');
32
+ compositeDrawer.addDrawer(crossToolDrawer, 'CROSS_TOOL_DRAWER');
33
+ this.drawingManager.addDrawer(compositeDrawer, 'CROSS_TOOL');
34
+ }
35
+ /**
36
+ * Registers default drawer types for the chart.
37
+ * @private
38
+ * @function
39
+ * @name registerDefaultDrawerTypes
40
+ *
41
+ * @returns {void}
42
+ */
43
+ registerDefaultDrawerTypes() {
44
+ this.registerCrossToolTypeDrawer('cross-and-labels', new CrossAndLabelsDrawerType(this.config, this.canvasBoundsContainer, this.paneManager, () => true));
45
+ this.registerCrossToolTypeDrawer('just-labels', new CrossAndLabelsDrawerType(this.config, this.canvasBoundsContainer, this.paneManager, () => true, true));
46
+ this.registerCrossToolTypeDrawer('none', new NoneDrawerType());
47
+ }
48
+ //#region public methods
49
+ /**
50
+ * Sets the cross tool visibility.
51
+ * @param visible
52
+ */
53
+ setVisible(visible) {
54
+ this.model.setType(visible ? 'cross-and-labels' : 'none');
55
+ }
56
+ /**
57
+ * Sets the crosstool type.
58
+ * - cross-and-labels - both the crosshair and X/Y labels
59
+ * - only-labels - only the X/Y label
60
+ * - none
61
+ * @param type
62
+ */
63
+ setType(type) {
64
+ this.model.setType(type);
65
+ }
66
+ /**
67
+ * Returns an Observable that emits the current hover subject.
68
+ */
69
+ observeCrossToolChanged() {
70
+ return this.model.currentHoverSubject;
71
+ }
72
+ /**
73
+ * Sets magnet target for cross tool.
74
+ * Supported only for 'cross-and-labels' type.
75
+ * Default magnet target is none.
76
+ * @param target
77
+ */
78
+ setMagnetTarget(target) {
79
+ this.config.components.crossTool.magnetTarget = target;
80
+ }
81
+ /**
82
+ * Adds a new drawer type for cross tool, so you can add your own implementation of cross tool
83
+ * (or override existing)
84
+ * @param drawerName - an unique drawer type name
85
+ * @param drawerImpl - CrossToolTypeDrawer object
86
+ */
87
+ registerCrossToolTypeDrawer(drawerName, drawerImpl) {
88
+ this.crossToolTypeDrawers[drawerName] = drawerImpl;
89
+ }
90
+ }
@@ -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,37 @@
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
- export class CrossToolDrawer{constructor(o,s,r){this.model=o,this.crossToolCanvasModel=s,this.crossToolTypeDrawers=r}draw(){const o=this.crossToolTypeDrawers[this.model.type];o?this.model.currentHover&&o.draw(this.crossToolCanvasModel.ctx,this.model.currentHover):console.error(`No cross tool drawer type registered for drawer type ${this.model.type}`)}getCanvasIds(){return[this.crossToolCanvasModel.canvasId]}}
6
+ export class CrossToolDrawer {
7
+ constructor(model, crossToolCanvasModel, crossToolTypeDrawers) {
8
+ this.model = model;
9
+ this.crossToolCanvasModel = crossToolCanvasModel;
10
+ this.crossToolTypeDrawers = crossToolTypeDrawers;
11
+ }
12
+ /**
13
+ * Draws the cross tool on the canvas.
14
+ * @function
15
+ * @name draw
16
+ * @memberof CrossToolCanvasView
17
+ * @instance
18
+ * @returns {void}
19
+ */
20
+ draw() {
21
+ const drawer = this.crossToolTypeDrawers[this.model.type];
22
+ if (drawer) {
23
+ this.model.currentHover && drawer.draw(this.crossToolCanvasModel.ctx, this.model.currentHover);
24
+ }
25
+ else {
26
+ console.error(`No cross tool drawer type registered for drawer type ${this.model.type}`);
27
+ }
28
+ }
29
+ /**
30
+ * Returns an array of string containing the canvas ID of the crossToolCanvasModel.
31
+ *
32
+ * @returns {Array<string>} An array of string containing the canvas ID of the crossToolCanvasModel.
33
+ */
34
+ getCanvasIds() {
35
+ return [this.crossToolCanvasModel.canvasId];
36
+ }
37
+ }
@@ -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,112 @@
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{BehaviorSubject as c}from"rxjs";import{ChartBaseElement as o}from"../../model/chart-base-element";import{CHART_UUID as i}from"../../canvas/canvas-bounds-container";export class CrossToolModel extends o{get currentHover(){return this.currentHoverSubject.getValue()}set currentHover(e){this.currentHoverSubject.next(e)}constructor(e,r,t,s){super(),this.config=e,this.crossToolCanvasModel=r,this.crossEventProducer=t,this.hoverProducer=s,this.currentHoverSubject=new c(null),this.type="cross-and-labels",this.type=e.type}setType(e){this.type=e}doActivate(){super.doActivate(),this.addRxSubscription(this.hoverProducer.hoverSubject.subscribe(e=>{this.crossEventProducer.crossSubject.getValue()!==null&&e!==null?this.updateHover(e):this.currentHover=null,this.fireDraw()}))}fireDraw(){this.type!=="none"&&this.crossToolCanvasModel.fireDraw()}updateHover(e,r=this.config.magnetTarget){if(this.currentHover===null?this.currentHover={x:e.x,y:0,time:e.timeFormatted,paneId:e.paneId}:(this.currentHover.x=e.x,this.currentHover.time=e.timeFormatted),e.candleHover&&e.paneId===i)switch(r){case"O":this.currentHover.y=e.candleHover.openY;break;case"C":this.currentHover.y=e.candleHover.closeY;break;case"H":this.currentHover.y=e.candleHover.highY;break;case"L":this.currentHover.y=e.candleHover.lowY;break;case"OHLC":this.currentHover.y=e.candleHover.closestOHLCY;break;case"none":this.currentHover.y=e.y;break}else this.currentHover.y=e.y;this.currentHoverSubject.next(this.currentHover)}}
6
+ import { BehaviorSubject } from 'rxjs';
7
+ import { ChartBaseElement } from '../../model/chart-base-element';
8
+ import { CHART_UUID } from '../../canvas/canvas-bounds-container';
9
+ export class CrossToolModel extends ChartBaseElement {
10
+ get currentHover() {
11
+ return this.currentHoverSubject.getValue();
12
+ }
13
+ set currentHover(value) {
14
+ this.currentHoverSubject.next(value);
15
+ }
16
+ constructor(config, crossToolCanvasModel, crossEventProducer, hoverProducer) {
17
+ super();
18
+ this.config = config;
19
+ this.crossToolCanvasModel = crossToolCanvasModel;
20
+ this.crossEventProducer = crossEventProducer;
21
+ this.hoverProducer = hoverProducer;
22
+ // the main hover object which will be presented on UI
23
+ this.currentHoverSubject = new BehaviorSubject(null);
24
+ this.type = 'cross-and-labels';
25
+ this.type = config.type;
26
+ }
27
+ /**
28
+ * Sets the type of the CrossTool object.
29
+ *
30
+ * @param {CrossToolType} type - The type of the CrossTool object.
31
+ * @returns {void}
32
+ */
33
+ setType(type) {
34
+ this.type = type;
35
+ }
36
+ /**
37
+ * Method to activate the cross tool.
38
+ * It subscribes to the canvasInputListener's mouse move event and fires the draw event.
39
+ * It also subscribes to the eventBus's hover and close hover events and updates the hover and fires the draw event accordingly.
40
+ * It also subscribes to the chartModel's candlesSetSubject and timeZoneModel's observeTimeZoneChanged events and recalculates the cross tool X formatter.
41
+ */
42
+ doActivate() {
43
+ super.doActivate();
44
+ this.addRxSubscription(this.hoverProducer.hoverSubject.subscribe(hover => {
45
+ if (this.crossEventProducer.crossSubject.getValue() !== null && hover !== null) {
46
+ this.updateHover(hover);
47
+ }
48
+ else {
49
+ this.currentHover = null;
50
+ }
51
+ this.fireDraw();
52
+ }));
53
+ }
54
+ /**
55
+ * This method is used to fire the draw event of the crossToolCanvasModel if the type is not 'none'.
56
+ * @private
57
+ */
58
+ fireDraw() {
59
+ if (this.type !== 'none') {
60
+ this.crossToolCanvasModel.fireDraw();
61
+ }
62
+ }
63
+ /**
64
+ * Updates the current hover position with the provided hover object.
65
+ * @param {Object} hover - The hover object containing the x and y coordinates and time formatted.
66
+ * @param {number} hover.x - The x coordinate of the hover.
67
+ * @param {number} hover.y - The y coordinate of the hover.
68
+ * @param {string} hover.timeFormatted - The formatted time of the hover.
69
+ * @param {Object} hover.candleHover - The candle hover object containing the open, close, high, low and closestOHLCY coordinates.
70
+ * @param {number} hover.candleHover.openY - The y coordinate of the open price of the candle.
71
+ * @param {number} hover.candleHover.closeY - The y coordinate of the close price of the candle.
72
+ * @param {number} hover.candleHover.highY - The y coordinate of the high price of the candle.
73
+ * @param {number} hover.candleHover.lowY - The y coordinate of the low price of the candle.
74
+ * @param {number} hover.candleHover.closestOHLCY - The y coordinate of the closest OHLC price of the candle.
75
+ * @returns {void}
76
+ */
77
+ updateHover(hover, magnetTarget = this.config.magnetTarget) {
78
+ if (this.currentHover === null) {
79
+ this.currentHover = { x: hover.x, y: 0, time: hover.timeFormatted, paneId: hover.paneId };
80
+ }
81
+ else {
82
+ this.currentHover.x = hover.x;
83
+ this.currentHover.time = hover.timeFormatted;
84
+ }
85
+ if (hover.candleHover && hover.paneId === CHART_UUID) {
86
+ switch (magnetTarget) {
87
+ case 'O':
88
+ this.currentHover.y = hover.candleHover.openY;
89
+ break;
90
+ case 'C':
91
+ this.currentHover.y = hover.candleHover.closeY;
92
+ break;
93
+ case 'H':
94
+ this.currentHover.y = hover.candleHover.highY;
95
+ break;
96
+ case 'L':
97
+ this.currentHover.y = hover.candleHover.lowY;
98
+ break;
99
+ case 'OHLC':
100
+ this.currentHover.y = hover.candleHover.closestOHLCY;
101
+ break;
102
+ case 'none':
103
+ this.currentHover.y = hover.y;
104
+ break;
105
+ }
106
+ }
107
+ else {
108
+ this.currentHover.y = hover.y;
109
+ }
110
+ this.currentHoverSubject.next(this.currentHover);
111
+ }
112
+ }
@@ -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
  */