@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,182 @@
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{EVENT_DRAW as h}from"../events/events";import{MIN_SUPPORTED_CANVAS_SIZE as t}from"../model/canvas.model";import{arrayIntersect as w,reorderArray as o}from"../utils/array.utils";import{animationFrameThrottled as E}from"../utils/perfomance/request-animation-frame-throttle.utils";import{uuid as d}from"../utils/uuid.utils";export const HIT_TEST_PREFIX="HIT_TEST_";const I=["MAIN_BACKGROUND","MAIN_CLEAR","HIT_TEST_CLEAR","YAXIS_CLEAR","SERIES_CLEAR","OVER_SERIES_CLEAR","HIT_TEST_DRAWINGS","GRID","VOLUMES","UNDERLAY_VOLUMES_AREA","X_AXIS","Y_AXIS","HIGH_LOW","DRAWINGS","DATA_SERIES","N_MAP_CHART","PL_CHART","WATERMARK","EMPTY_CHART","OFFLINE_CHART","LABELS","EVENTS","HIT_TEST_EVENTS","ZERO_LINE","PL_ZERO_LINE_BACKGROUND","CROSS_TOOL"];export class DrawingManager{constructor(i,r){this.chartResizeHandler=r,this.drawingOrder=[],this.drawersMap={},this.canvasIdsList=[],this.animFrameId=`draw_${d()}`,this.drawHitTestCanvas=()=>{this.drawingOrder.forEach(e=>{e.indexOf(HIT_TEST_PREFIX)!==-1&&this.drawersMap[e].draw()})},i.on(h,e=>{r.wasResized()&&(this.canvasIdsList&&(e&&e.length!==0?this.canvasIdsList=this.canvasIdsList.concat(e):this.canvasIdsList=void 0),E(this.animFrameId,()=>{this.forceDraw(this.canvasIdsList),this.canvasIdsList=[],this.drawHitTestCanvas()}))})}redrawCanvasesImmediate(){this.chartResizeHandler.fireUpdates(),this.forceDraw()}drawLastBar(){this.drawingOrder.forEach(i=>{if(i.indexOf(HIT_TEST_PREFIX)===-1){const r=this.drawersMap[i];r.drawLastBar&&r.drawLastBar()}})}forceDraw(i){this.isDrawable()&&this.drawingOrder.forEach(r=>{if(r.indexOf(HIT_TEST_PREFIX)===-1){const e=this.drawersMap[r];if(!i||i.length===0){e.draw();return}w(i,e.getCanvasIds()).length&&e.draw()}})}isDrawable(){var i,r,e,s;return((r=(i=this.chartResizeHandler.previousBCR)===null||i===void 0?void 0:i.height)!==null&&r!==void 0?r:0)>t.width&&((s=(e=this.chartResizeHandler.previousBCR)===null||e===void 0?void 0:e.width)!==null&&s!==void 0?s:0)>t.height}drawHitTestOnly(){this.drawHitTestCanvas()}addDrawer(i,r=d()){this.drawingOrder.indexOf(r)===-1&&this.drawingOrder.push(r),this.drawersMap[r]=i}addDrawerAfter(i,r,e){this.addDrawer(i,r);const s=this.drawingOrder.indexOf(r);this.drawingOrder.splice(s,1);const a=this.drawingOrder.indexOf(e);this.drawingOrder.splice(a+1,0,r),this.reorderDrawers(this.drawingOrder)}addDrawerBefore(i,r,e){this.addDrawer(i,r);const s=this.drawingOrder.indexOf(e);if(s!==-1){const a=this.drawingOrder.indexOf(r);return this.drawingOrder.splice(a,1),this.drawingOrder.splice(s,0,r),this.reorderDrawers(this.drawingOrder),!0}return!1}getDrawerByName(i){return this.drawersMap[i]}getNameByDrawer(i){for(const r in this.drawersMap)if(this.drawersMap[r]===i)return r}removeDrawerByName(i){const r=this.drawersMap[i];this.removeDrawer(r)}removeDrawer(i){Object.keys(this.drawersMap).forEach(r=>{if(this.drawersMap[r]===i){delete this.drawersMap[r];const e=this.drawingOrder.indexOf(r);e!==-1&&this.drawingOrder.splice(e,1)}})}reorderDrawers(i){this.drawingOrder=o(this.drawingOrder,i)}}export class DynamicDrawerType{static paneResizer(i){return`PANE_RESIZER_${i}`}}
6
+ import { EVENT_DRAW } from '../events/events';
7
+ import { MIN_SUPPORTED_CANVAS_SIZE } from '../model/canvas.model';
8
+ import { arrayIntersect, reorderArray } from '../utils/array.utils';
9
+ import { animationFrameThrottled } from '../utils/performance/request-animation-frame-throttle.utils';
10
+ import { uuid } from '../utils/uuid.utils';
11
+ export const HIT_TEST_PREFIX = 'HIT_TEST_';
12
+ const drawerTypes = [
13
+ 'MAIN_BACKGROUND',
14
+ 'MAIN_CLEAR',
15
+ 'HIT_TEST_CLEAR',
16
+ 'YAXIS_CLEAR',
17
+ 'SERIES_CLEAR',
18
+ 'OVER_SERIES_CLEAR',
19
+ 'HIT_TEST_DRAWINGS',
20
+ 'GRID',
21
+ 'UNDERLAY_VOLUMES_AREA',
22
+ 'X_AXIS',
23
+ 'Y_AXIS',
24
+ 'HIGH_LOW',
25
+ 'DYNAMIC_OBJECTS',
26
+ 'N_MAP_CHART',
27
+ 'PL_CHART',
28
+ 'WATERMARK',
29
+ 'EMPTY_CHART',
30
+ 'OFFLINE_CHART',
31
+ 'LABELS',
32
+ 'EVENTS',
33
+ 'HIT_TEST_EVENTS',
34
+ 'ZERO_LINE',
35
+ 'PL_ZERO_LINE_BACKGROUND',
36
+ 'CROSS_TOOL',
37
+ ];
38
+ /**
39
+ * Manages the drawing process.
40
+ * Can re-order drawers to make one be on top of the other.
41
+ */
42
+ export class DrawingManager {
43
+ constructor(eventBus, chartResizeHandler) {
44
+ this.chartResizeHandler = chartResizeHandler;
45
+ this.drawingOrder = [];
46
+ this.drawersMap = {};
47
+ this.canvasIdsList = [];
48
+ this.animFrameId = `draw_${uuid()}`;
49
+ // eventBus.on(EVENT_DRAW_LAST_CANDLE, () => animationFrameThrottled(this.animFrameId + 'last', () => this.drawLastBar()));
50
+ this.drawHitTestCanvas = () => {
51
+ this.drawingOrder.forEach(drawer => {
52
+ if (drawer.indexOf(HIT_TEST_PREFIX) !== -1) {
53
+ this.drawersMap[drawer].draw();
54
+ }
55
+ });
56
+ };
57
+ eventBus.on(EVENT_DRAW, (canvasIds) => {
58
+ if (chartResizeHandler.wasResized()) {
59
+ // if we fire bus.fireDraw() without arguments(undefined) we need to keep canvasIdsList empty
60
+ if (this.canvasIdsList) {
61
+ if (canvasIds && canvasIds.length !== 0) {
62
+ this.canvasIdsList = this.canvasIdsList.concat(canvasIds);
63
+ }
64
+ else {
65
+ // make this undefined until the end of frame - this will redraw everything
66
+ this.canvasIdsList = undefined;
67
+ }
68
+ }
69
+ animationFrameThrottled(this.animFrameId, () => {
70
+ this.forceDraw(this.canvasIdsList);
71
+ this.canvasIdsList = [];
72
+ this.drawHitTestCanvas();
73
+ });
74
+ }
75
+ });
76
+ }
77
+ /**
78
+ * Updates canvases' sizes and executes redraw without animation frame.
79
+ * This is required for multi-chart canvas update synchronization.
80
+ * If all canvases update in separate animation frames - we see visual lag. Instead we should do all updates and then redraw.
81
+ * @doc-tags tricky,canvas,resize
82
+ */
83
+ redrawCanvasesImmediate() {
84
+ this.chartResizeHandler.fireUpdates();
85
+ this.forceDraw();
86
+ }
87
+ drawLastBar() {
88
+ this.drawingOrder.forEach(drawerName => {
89
+ if (drawerName.indexOf(HIT_TEST_PREFIX) === -1) {
90
+ const drawer = this.drawersMap[drawerName];
91
+ drawer.drawLastBar && drawer.drawLastBar();
92
+ }
93
+ });
94
+ }
95
+ forceDraw(canvasIds) {
96
+ if (!this.isDrawable()) {
97
+ return;
98
+ }
99
+ this.drawingOrder.forEach(drawerName => {
100
+ if (drawerName.indexOf(HIT_TEST_PREFIX) === -1) {
101
+ const drawer = this.drawersMap[drawerName];
102
+ // draw if not canvas specified
103
+ if (!canvasIds || canvasIds.length === 0) {
104
+ drawer.draw();
105
+ return;
106
+ }
107
+ // draw if at least 1 canvas is touched (intersection)
108
+ if (arrayIntersect(canvasIds, drawer.getCanvasIds()).length) {
109
+ drawer.draw();
110
+ }
111
+ }
112
+ });
113
+ }
114
+ /**
115
+ * Indicates whether it is possible to draw chart or not.
116
+ * @returns {boolean} true if chart is drawable
117
+ */
118
+ isDrawable() {
119
+ var _a, _b, _c, _d;
120
+ return (((_b = (_a = this.chartResizeHandler.previousBCR) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : 0) > MIN_SUPPORTED_CANVAS_SIZE.width &&
121
+ ((_d = (_c = this.chartResizeHandler.previousBCR) === null || _c === void 0 ? void 0 : _c.width) !== null && _d !== void 0 ? _d : 0) > MIN_SUPPORTED_CANVAS_SIZE.height);
122
+ }
123
+ drawHitTestOnly() {
124
+ this.drawHitTestCanvas();
125
+ }
126
+ addDrawer(drawer, name = uuid()) {
127
+ this.drawingOrder.indexOf(name) === -1 && this.drawingOrder.push(name);
128
+ this.drawersMap[name] = drawer;
129
+ }
130
+ addDrawerAfter(drawer, newDrawerName, drawerToPutAfterName) {
131
+ this.addDrawer(drawer, newDrawerName);
132
+ const newDrawerIdx = this.drawingOrder.indexOf(newDrawerName);
133
+ this.drawingOrder.splice(newDrawerIdx, 1);
134
+ const idx = this.drawingOrder.indexOf(drawerToPutAfterName);
135
+ this.drawingOrder.splice(idx + 1, 0, newDrawerName);
136
+ this.reorderDrawers(this.drawingOrder);
137
+ }
138
+ addDrawerBefore(drawer, newDrawerName, drawerToPutBeforeName) {
139
+ this.addDrawer(drawer, newDrawerName);
140
+ const idx = this.drawingOrder.indexOf(drawerToPutBeforeName);
141
+ if (idx !== -1) {
142
+ const newDrawerIdx = this.drawingOrder.indexOf(newDrawerName);
143
+ this.drawingOrder.splice(newDrawerIdx, 1);
144
+ this.drawingOrder.splice(idx, 0, newDrawerName);
145
+ this.reorderDrawers(this.drawingOrder);
146
+ return true;
147
+ }
148
+ return false;
149
+ }
150
+ getDrawerByName(name) {
151
+ return this.drawersMap[name];
152
+ }
153
+ getNameByDrawer(drawer) {
154
+ for (const drawerName in this.drawersMap) {
155
+ if (this.drawersMap[drawerName] === drawer) {
156
+ return drawerName;
157
+ }
158
+ }
159
+ }
160
+ removeDrawerByName(name) {
161
+ const drawer = this.drawersMap[name];
162
+ this.removeDrawer(drawer);
163
+ }
164
+ removeDrawer(drawer) {
165
+ Object.keys(this.drawersMap).forEach(name => {
166
+ if (this.drawersMap[name] === drawer) {
167
+ delete this.drawersMap[name];
168
+ const drawerIdx = this.drawingOrder.indexOf(name);
169
+ drawerIdx !== -1 && this.drawingOrder.splice(drawerIdx, 1);
170
+ }
171
+ });
172
+ }
173
+ reorderDrawers(newOrder) {
174
+ this.drawingOrder = reorderArray(this.drawingOrder, newOrder);
175
+ }
176
+ }
177
+ // use this to create dynamic names
178
+ export class DynamicDrawerType {
179
+ static paneResizer(id) {
180
+ return `PANE_RESIZER_${id}`;
181
+ }
182
+ }
@@ -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,42 @@
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{flatMap as s}from"../utils/array.utils";import{clipToBounds as n}from"./data-series.drawer";export class HTDataSeriesDrawer{constructor(o,a,t){this.seriesDrawers=o,this.canvasModel=a,this.paneManager=t}draw(){const o=this.canvasModel.ctx;s(Object.values(this.paneManager.paneComponents),a=>a.yExtentComponents).forEach(a=>{o.save(),n(o,a.getBounds()),a.dataSeries.forEach(t=>this.drawSeries(o,t)),o.restore()})}drawSeries(o,a){if(a.config.visible){const t=a.config.type,e=this.seriesDrawers[t];if(e){const r={singleColor:this.canvasModel.idToColor(a.id),forceBold:7};e.draw(o,a.getSeriesInViewport(a.scaleModel.xStart-1,a.scaleModel.xEnd+1),a,r)}}}getCanvasIds(){return[this.canvasModel.canvasId]}}
6
+ import { clipToBounds } from './data-series.drawer';
7
+ /***
8
+ * HitTest Chart drawer. It's used to draw hit test for chart types on the hit-test canvas.
9
+ */
10
+ export class HTDataSeriesDrawer {
11
+ constructor(seriesDrawers, canvasModel, paneManager) {
12
+ this.seriesDrawers = seriesDrawers;
13
+ this.canvasModel = canvasModel;
14
+ this.paneManager = paneManager;
15
+ }
16
+ draw() {
17
+ const ctx = this.canvasModel.ctx;
18
+ this.paneManager.yExtents.forEach(comp => {
19
+ ctx.save();
20
+ clipToBounds(ctx, comp.getBounds());
21
+ comp.dataSeries.forEach(series => this.drawSeries(ctx, series));
22
+ ctx.restore();
23
+ });
24
+ }
25
+ drawSeries(ctx, series) {
26
+ if (series.config.visible) {
27
+ const paintTool = series.config.type;
28
+ const drawer = this.seriesDrawers[paintTool];
29
+ if (drawer) {
30
+ const drawConfig = {
31
+ singleColor: this.canvasModel.idToColor(series.id),
32
+ forceBold: 7,
33
+ };
34
+ // +- 1 to correctly draw points which are partly inside bounds
35
+ drawer.draw(ctx, series.getSeriesInViewport(series.scale.xStart - 1, series.scale.xEnd + 1), series, drawConfig);
36
+ }
37
+ }
38
+ }
39
+ getCanvasIds() {
40
+ return [this.canvasModel.canvasId];
41
+ }
42
+ }
@@ -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,78 @@
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 h}from"rxjs";import{arrayRemove as r}from"../utils/array.utils";import{EVENT_DRAW as u}from"./events";export default class d{constructor(){this.UNKNOWN_ARR=[],this.handlers={},this.muted=!1,this.unsub=(t,s)=>{const i=this.handlers[t];i!==void 0&&r.call(i,s)},this.add=(t,s,i)=>(s in this.handlers?t.call(this.handlers[s],i):this.handlers[s]=[i],this.unsub.bind(this,s,i)),this.on=(t,s)=>this.add(this.UNKNOWN_ARR.push,t,s),this.observe=t=>{const s=new h,i=s.next.bind(s),n=s.unsubscribe.bind(s);return this.on(t,i),s.unsubscribe=()=>{this.unsub(t,i),n()},s.asObservable()},this.onPrior=(t,s)=>this.add(this.UNKNOWN_ARR.unshift,t,s),this.off=this.unsub,this.fire=(t,...s)=>{var i;if(!this.muted){const n=(i=this.handlers[t])!==null&&i!==void 0?i:[];let e;for(e=0,n.length;e<n.length;e++)n[e].apply(null,s)}},this.fireAsync=(t,s)=>{if(!this.muted)return window.setTimeout(this.fire.bind(this,t,s),0)},this.setMuted=t=>{this.muted=t},this.clear=()=>{this.handlers={}}}fireDraw(t){this.fire(u,t)}}
6
+ import { Subject } from 'rxjs';
7
+ import { arrayRemove } from '../utils/array.utils';
8
+ import { EVENT_DRAW } from './events';
9
+ /**
10
+ * Event bus for chart.
11
+ * @doc-tags core-components
12
+ */
13
+ export default class EventBus {
14
+ constructor() {
15
+ this.UNKNOWN_ARR = [];
16
+ /** Registered event handlers. */
17
+ this.handlers = {};
18
+ /** State which can enable / disable events processing. */
19
+ this.muted = false;
20
+ this.unsub = (type, fn) => {
21
+ const handler = this.handlers[type];
22
+ handler !== undefined && arrayRemove.call(handler, fn);
23
+ };
24
+ this.add = (method, type, fn) => {
25
+ if (type in this.handlers) {
26
+ method.call(this.handlers[type], fn);
27
+ }
28
+ else {
29
+ this.handlers[type] = [fn];
30
+ }
31
+ return this.unsub.bind(this, type, fn);
32
+ };
33
+ this.on = (type, fn) => this.add(this.UNKNOWN_ARR.push, type, fn);
34
+ this.observe = (type) => {
35
+ const result = new Subject();
36
+ const subjectFn = result.next.bind(result);
37
+ const originalUnsubscribe = result.unsubscribe.bind(result);
38
+ this.on(type, subjectFn);
39
+ result.unsubscribe = () => {
40
+ this.unsub(type, subjectFn);
41
+ originalUnsubscribe();
42
+ };
43
+ return result.asObservable();
44
+ };
45
+ this.onPrior = (type, fn) => this.add(this.UNKNOWN_ARR.unshift, type, fn);
46
+ this.off = this.unsub;
47
+ this.fire = (type, ...args) => {
48
+ var _a;
49
+ if (!this.muted) {
50
+ const arr = (_a = this.handlers[type]) !== null && _a !== void 0 ? _a : [];
51
+ let i;
52
+ for (i = 0, arr.length; i < arr.length; i++) {
53
+ // call each handler with arguments
54
+ const fn = arr[i];
55
+ fn.apply(null, args);
56
+ }
57
+ }
58
+ };
59
+ this.fireAsync = (type, event) => {
60
+ if (!this.muted) {
61
+ return window.setTimeout(this.fire.bind(this, type, event), 0);
62
+ }
63
+ };
64
+ this.setMuted = (val) => {
65
+ this.muted = val;
66
+ };
67
+ this.clear = () => {
68
+ this.handlers = {};
69
+ };
70
+ }
71
+ /**
72
+ * Triggers the draw event for the specified canvas IDs.
73
+ * @param {Array<string>} canvasIds - An optional array of canvas IDs to trigger the draw event for.
74
+ */
75
+ fireDraw(canvasIds) {
76
+ this.fire(EVENT_DRAW, canvasIds);
77
+ }
78
+ }
@@ -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,8 @@
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 EVENT_RESIZED="resized_local",EVENT_DRAW="draw",EVENT_DRAW_LAST_CANDLE="draw_last_candle";
6
+ export const EVENT_RESIZED = 'resized_local';
7
+ export const EVENT_DRAW = 'draw';
8
+ export const EVENT_DRAW_LAST_CANDLE = 'draw_last_candle';
@@ -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{ChartBaseElement as i}from"../model/chart-base-element";import{map as l,distinctUntilChanged as r}from"rxjs/operators";export class CandleTapHandler extends i{constructor(t,c,e,n){super(),e.observeTouchStart().pipe(l(o=>n.components.chart.highlightActiveCandle?o:void 0),r()).subscribe(o=>{o&&this.setCandleAsActive(o,t,c)})}setCandleAsActive(t,c,e){if(t.touches.length===1){const n=t.touches.item(0);if(n!==null){const o=this.getTouchXPosition(n,c),s=e.candleFromX(o);s&&e.mainCandleSeries.setActiveCandle(s)}}}getTouchXPosition(t,c){const e=c.getBoundingClientRect(),n=document.body.scrollLeft||document.documentElement.scrollLeft;return t.pageX-e.left-n}}
6
+ import { ChartBaseElement } from '../model/chart-base-element';
7
+ import { map, distinctUntilChanged } from 'rxjs/operators';
8
+ export class CandleTapHandler extends ChartBaseElement {
9
+ constructor(mainCanvasParent, chartModel, canvasInputListeners, config) {
10
+ super();
11
+ canvasInputListeners
12
+ .observeTouchStart()
13
+ .pipe(map(e => (config.components.chart.highlightActiveCandle ? e : undefined)), distinctUntilChanged())
14
+ .subscribe(e => {
15
+ if (e) {
16
+ this.setCandleAsActive(e, mainCanvasParent, chartModel);
17
+ }
18
+ });
19
+ }
20
+ /**
21
+ * Sets the candle as active when a touch event occurs on the chart.
22
+ * @param {TouchEvent} e - The touch event that occurred on the chart.
23
+ * @param {Element} mainCanvasParent - The parent element of the main canvas.
24
+ * @param {ChartModel} chartModel - The chart model object.
25
+ */
26
+ setCandleAsActive(e, mainCanvasParent, chartModel) {
27
+ if (e.touches.length === 1) {
28
+ const touch = e.touches.item(0);
29
+ if (touch !== null) {
30
+ const xTouchPosition = this.getTouchXPosition(touch, mainCanvasParent);
31
+ const candle = chartModel.candleFromX(xTouchPosition);
32
+ if (candle) {
33
+ chartModel.mainCandleSeries.setActiveCandle(candle);
34
+ }
35
+ }
36
+ }
37
+ }
38
+ // TO DO: check if this body calculations can potentially works wrong in widget
39
+ /**
40
+ * Calculates the X position of a touch event relative to the main canvas parent element.
41
+ * @param {Touch} touch - The touch event object.
42
+ * @param {Element} mainCanvasParent - The parent element of the main canvas.
43
+ * @returns {number} - The X position of the touch event relative to the main canvas parent element.
44
+ * @todo Check if this body calculations can potentially work incorrectly in the widget.
45
+ */
46
+ getTouchXPosition(touch, mainCanvasParent) {
47
+ const rect = mainCanvasParent.getBoundingClientRect();
48
+ const scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
49
+ return touch.pageX - rect.left - scrollLeft;
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,103 @@
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 n}from"rxjs";import{EVENT_DRAW as h,EVENT_RESIZED as o}from"../events/events";import{uuid as a}from"../utils/uuid.utils";import{animationFrameThrottledPrior as m}from"../utils/perfomance/request-animation-frame-throttle.utils";export class ChartResizeHandler{constructor(e,i,s,t,r){this.frameElement=e,this.resizerElement=i,this.bus=s,this.canvasModels=t,this.config=r,this.previousBCR=void 0,this.animFrameId=`resize_${a()}`,this.canvasResized=new n,this.elementResizeDetector=new ResizeObserver(()=>this.handleResize())}subscribeResize(){this.elementResizeDetector.observe(this.resizerElement)}handleResize(){m(this.animFrameId,()=>this.fireUpdates())}fireUpdates(){const e=this.resizerElement.getBoundingClientRect(),i={x:e.x,y:e.y,width:e.width,height:e.height};this.config||(this.frameElement.style.height=this.resizerElement.clientHeight+"px"),(this.previousBCR===void 0||this.isBCRDimensionsDiffer(this.previousBCR,i))&&(this.previousBCR=i,this.canvasModels.forEach(s=>this.previousBCR&&s.updateDPR(this.previousBCR)),this.canvasResized.next(i),this.bus.fire(o,i),this.bus.fire(h))}isBCRDimensionsDiffer(e,i){return e.height!==i.height||e.width!==i.width}unsubscribeAnimationUpdate(){if(this.resizerElement)try{this.elementResizeDetector.unobserve(this.resizerElement)}catch(e){console.warn("ChartResizeHandler.ts, unsubscribeAnimationUpdate failed")}}wasResized(){return this.previousBCR!==void 0}}
6
+ import { Subject } from 'rxjs';
7
+ import { EVENT_DRAW, EVENT_RESIZED } from '../events/events';
8
+ import { uuid } from '../utils/uuid.utils';
9
+ import { animationFrameThrottledPrior } from '../utils/performance/request-animation-frame-throttle.utils';
10
+ /**
11
+ * Tracks chart element size and emits events whenever it changes.
12
+ */
13
+ export class ChartResizeHandler {
14
+ constructor(frameElement, resizerElement, bus, canvasModels, config) {
15
+ this.frameElement = frameElement;
16
+ this.resizerElement = resizerElement;
17
+ this.bus = bus;
18
+ this.canvasModels = canvasModels;
19
+ this.config = config;
20
+ this.previousBCR = undefined;
21
+ this.animFrameId = `resize_${uuid()}`;
22
+ this.canvasResized = new Subject();
23
+ this.elementResizeDetector = new ResizeObserver(() => this.handleResize());
24
+ }
25
+ /**
26
+ * Subscribe to resize events
27
+ * Use it to update chart animations.
28
+ * TODO activate / deactivate cycle
29
+ */
30
+ subscribeResize() {
31
+ this.elementResizeDetector.observe(this.resizerElement);
32
+ }
33
+ /**
34
+ * Handles the resize event by throttling the animation frame and firing updates.
35
+ * @private
36
+ * @function
37
+ * @returns {void}
38
+ */
39
+ handleResize() {
40
+ animationFrameThrottledPrior(this.animFrameId, () => this.fireUpdates());
41
+ }
42
+ /**
43
+ * Updates the canvas models and fires events if the bounding client rectangle of the resizer element has changed.
44
+ * @function
45
+ * @name fireUpdates
46
+ * @memberof ClassName
47
+ * @returns {void}
48
+ */
49
+ fireUpdates() {
50
+ const resizerElementBCR = this.resizerElement.getBoundingClientRect();
51
+ const newBCR = {
52
+ x: resizerElementBCR.x,
53
+ y: resizerElementBCR.y,
54
+ width: resizerElementBCR.width,
55
+ height: resizerElementBCR.height,
56
+ };
57
+ if (!this.config) {
58
+ this.frameElement.style.height = this.resizerElement.clientHeight + 'px';
59
+ }
60
+ if (this.previousBCR === undefined || this.isBCRDimensionsDiffer(this.previousBCR, newBCR)) {
61
+ this.previousBCR = newBCR;
62
+ this.canvasModels.forEach(model => this.previousBCR && model.updateDPR(this.previousBCR));
63
+ this.canvasResized.next(newBCR);
64
+ this.bus.fire(EVENT_RESIZED, newBCR);
65
+ this.bus.fire(EVENT_DRAW);
66
+ }
67
+ }
68
+ /**
69
+ * Checks if the dimensions of two PickedDOMRect objects are different.
70
+ * @param {PickedDOMRect} previousBCR - The previous bounding client rectangle.
71
+ * @param {PickedDOMRect} newBCR - The new bounding client rectangle.
72
+ * @returns {boolean} - Returns true if the dimensions are different, false otherwise.
73
+ */
74
+ isBCRDimensionsDiffer(previousBCR, newBCR) {
75
+ return previousBCR.height !== newBCR.height || previousBCR.width !== newBCR.width;
76
+ }
77
+ /**
78
+ * Unsubscribes from the element resize detector to stop updating the chart animation.
79
+ * @function
80
+ * @name unsubscribeAnimationUpdate
81
+ * @memberof ChartResizeHandler
82
+ * @instance
83
+ * @returns {void}
84
+ */
85
+ unsubscribeAnimationUpdate() {
86
+ if (this.resizerElement) {
87
+ try {
88
+ this.elementResizeDetector.unobserve(this.resizerElement);
89
+ }
90
+ catch (e) {
91
+ console.warn('ChartResizeHandler.ts, unsubscribeAnimationUpdate failed');
92
+ }
93
+ }
94
+ }
95
+ // TODO a lot of unnecessary DRAW events fired before canvas has actual size
96
+ /**
97
+ * Checks if the canvas has been resized by comparing the previous bounding client rect with the current one.
98
+ * @returns {boolean} - Returns true if the canvas has been resized, false otherwise.
99
+ */
100
+ wasResized() {
101
+ return this.previousBCR !== undefined;
102
+ }
103
+ }
@@ -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,72 @@
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 a,combineLatest as b,filter as v}from"rxjs";import{ChartBaseElement as p}from"../model/chart-base-element";export class CrossEventProducerComponent extends p{constructor(e,s){super(),this.canvasInputListener=e,this.canvasBoundsContainer=s,this.panesSubscriptions={},this.crossSubject=new a(null)}doActivate(){super.doActivate()}fireCrossClose(){this.crossSubject.next(null)}unsubscribeMouseOver(e){var s;(s=this.panesSubscriptions[e])===null||s===void 0||s.unsubscribe()}subscribeMouseOver(e,s,o){const i=s.map(r=>this.canvasBoundsContainer.getBoundsHitTest(r,o)),t=(r,n)=>i.some(u=>u(r,n));return this.subscribeMouseOverHT(e,t)}subscribeMouseOverHT(e,s){const o=this.canvasInputListener.observeMouseMoveDocument(),i=this.canvasInputListener.observeMouseEnter(s);let t=!1;const r=b([o,i]).pipe(v(([,n])=>!t||t&&n)).subscribe(([n,u])=>{if(u){const c=[n.x,n.y,e];this.crossSubject.next(c),t=!1}else this.crossSubject.next(null),t=!0});return this.panesSubscriptions[e]=r,()=>r.unsubscribe()}}
6
+ import { BehaviorSubject, combineLatest, filter } from 'rxjs';
7
+ import { ChartBaseElement } from '../model/chart-base-element';
8
+ export class CrossEventProducerComponent extends ChartBaseElement {
9
+ constructor(canvasInputListener, canvasBoundsContainer) {
10
+ super();
11
+ this.canvasInputListener = canvasInputListener;
12
+ this.canvasBoundsContainer = canvasBoundsContainer;
13
+ this.panesSubscriptions = {};
14
+ this.crossSubject = new BehaviorSubject(null);
15
+ }
16
+ doActivate() {
17
+ super.doActivate();
18
+ }
19
+ /**
20
+ * Emits a null value to the `cross` subject, effectively closing the current cross.
21
+ */
22
+ fireCrossClose() {
23
+ this.crossSubject.next(null);
24
+ }
25
+ /**
26
+ * Unsubscribes from the mouse over event for a specific pane.
27
+ * @param {string} uuid - The unique identifier of the pane.
28
+ * @returns {void}
29
+ */
30
+ unsubscribeMouseOver(uuid) {
31
+ var _a;
32
+ (_a = this.panesSubscriptions[uuid]) === null || _a === void 0 ? void 0 : _a.unsubscribe();
33
+ }
34
+ /**
35
+ * Subscribes to mouse over event on canvas elements.
36
+ * @param {string} uuid - Unique identifier for the subscription.
37
+ * @param {string[]} canvasElementNames - Array of canvas element names to subscribe to.
38
+ * @param {HitBoundsTestOptionsPartial} [options] - Optional hit bounds test options.
39
+ * @returns {Subscription} - Returns a subscription object.
40
+ */
41
+ subscribeMouseOver(uuid, canvasElementNames, options) {
42
+ const hts = canvasElementNames.map(canvasElementName => this.canvasBoundsContainer.getBoundsHitTest(canvasElementName, options));
43
+ const hitTest = (x, y) => hts.some(ht => ht(x, y));
44
+ return this.subscribeMouseOverHT(uuid, hitTest);
45
+ }
46
+ /**
47
+ * Subscribes to mouse over event on a hit test area identified by uuid.
48
+ * @param {string} uuid - The unique identifier of the hit test area.
49
+ * @param {HitBoundsTest} hitTest - The hit test area.
50
+ * @returns {Subscription} - The subscription object.
51
+ */
52
+ subscribeMouseOverHT(uuid, hitTest) {
53
+ const move$ = this.canvasInputListener.observeMouseMoveDocument();
54
+ const mouseEnter$ = this.canvasInputListener.observeMouseEnter(hitTest);
55
+ let closeHoverFired = false;
56
+ const subscription = combineLatest([move$, mouseEnter$])
57
+ .pipe(filter(([, enter]) => !closeHoverFired || (closeHoverFired && enter)))
58
+ .subscribe(([point, enter]) => {
59
+ if (enter) {
60
+ const cross = [point.x, point.y, uuid];
61
+ this.crossSubject.next(cross);
62
+ closeHoverFired = false;
63
+ }
64
+ else {
65
+ this.crossSubject.next(null);
66
+ closeHoverFired = true;
67
+ }
68
+ });
69
+ this.panesSubscriptions[uuid] = subscription;
70
+ return () => subscription.unsubscribe();
71
+ }
72
+ }
@@ -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
  */
@@ -45,7 +45,7 @@ export interface HoverProducerParts {
45
45
  */
46
46
  export declare class HoverProducerComponent extends ChartBaseElement {
47
47
  private crossEventProducer;
48
- private scaleModel;
48
+ private scale;
49
49
  private config;
50
50
  private chartModel;
51
51
  private canvasInputListener;
@@ -58,7 +58,7 @@ export declare class HoverProducerComponent extends ChartBaseElement {
58
58
  private longTouchActivated;
59
59
  private hoverProducerParts;
60
60
  xFormatter: DateTimeFormatter;
61
- constructor(crossEventProducer: CrossEventProducerComponent, scaleModel: ScaleModel, config: FullChartConfig, chartModel: ChartModel, canvasInputListener: CanvasInputListenerComponent, canvasBoundsContainer: CanvasBoundsContainer, paneManager: PaneManager, timeZoneModel: TimeZoneModel, formatterFactory: (format: string) => (timestamp: number | Date) => string);
61
+ constructor(crossEventProducer: CrossEventProducerComponent, scale: ScaleModel, config: FullChartConfig, chartModel: ChartModel, canvasInputListener: CanvasInputListenerComponent, canvasBoundsContainer: CanvasBoundsContainer, paneManager: PaneManager, timeZoneModel: TimeZoneModel, formatterFactory: (format: string) => (timestamp: number | Date) => string);
62
62
  /**
63
63
  * This method is responsible for activating the chart hover functionality. It subscribes to several observables to
64
64
  * update the hover when the chart is updated or when the user interacts with it. It also handles special behavior