@devexperts/dxcharts-lite 1.0.2 → 2.0.1

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 (258) hide show
  1. package/README.md +2 -2
  2. package/dist/chart/animation/canvas-animation.js +134 -1
  3. package/dist/chart/animation/types/animation.js +43 -1
  4. package/dist/chart/animation/types/color-alpha-animation.d.ts +1 -1
  5. package/dist/chart/animation/types/color-alpha-animation.js +60 -1
  6. package/dist/chart/animation/types/color-transition-animation.d.ts +1 -1
  7. package/dist/chart/animation/types/color-transition-animation.js +86 -1
  8. package/dist/chart/animation/types/viewport-movement-animation.js +63 -1
  9. package/dist/chart/animation/viewport-model-animation.js +20 -1
  10. package/dist/chart/bootstrap.d.ts +51 -48
  11. package/dist/chart/bootstrap.js +449 -1
  12. package/dist/chart/canvas/canvas-bounds-container.d.ts +0 -5
  13. package/dist/chart/canvas/canvas-bounds-container.js +815 -1
  14. package/dist/chart/canvas/canvas-chart-html.js +16 -18
  15. package/dist/chart/canvas/chart-elements.d.ts +1 -4
  16. package/dist/chart/canvas/chart-elements.js +22 -1
  17. package/dist/chart/canvas/cursor.handler.js +122 -1
  18. package/dist/chart/canvas/layout-creator.js +34 -1
  19. package/dist/chart/canvas/y-axis-bounds.container.d.ts +2 -2
  20. package/dist/chart/canvas/y-axis-bounds.container.js +67 -1
  21. package/dist/chart/chart-container.js +1 -1
  22. package/dist/chart/chart.config.d.ts +4 -5
  23. package/dist/chart/chart.config.js +645 -1
  24. package/dist/chart/chart.d.ts +62 -0
  25. package/dist/chart/chart.js +106 -0
  26. package/dist/chart/components/chart/basic-scale.d.ts +2 -2
  27. package/dist/chart/components/chart/basic-scale.js +31 -1
  28. package/dist/chart/components/chart/candle-transformer.functions.js +15 -1
  29. package/dist/chart/components/chart/candle-width-calculator.functions.js +2 -1
  30. package/dist/chart/components/chart/candle.functions.js +44 -1
  31. package/dist/chart/components/chart/chart-area-pan.handler.d.ts +3 -3
  32. package/dist/chart/components/chart/chart-area-pan.handler.js +197 -1
  33. package/dist/chart/components/chart/chart-base.model.js +66 -1
  34. package/dist/chart/components/chart/chart.component.d.ts +7 -3
  35. package/dist/chart/components/chart/chart.component.js +408 -1
  36. package/dist/chart/components/chart/chart.model.d.ts +4 -11
  37. package/dist/chart/components/chart/chart.model.js +954 -1
  38. package/dist/chart/components/chart/data-series.high-low-provider.js +34 -1
  39. package/dist/chart/components/chart/fake-candles.js +97 -1
  40. package/dist/chart/components/chart/price.formatter.js +35 -1
  41. package/dist/chart/components/chart/secondary-chart-colors-pool.js +68 -1
  42. package/dist/chart/components/cross_tool/cross-tool.component.js +85 -1
  43. package/dist/chart/components/cross_tool/cross-tool.drawer.js +32 -1
  44. package/dist/chart/components/cross_tool/cross-tool.model.js +107 -1
  45. package/dist/chart/components/cross_tool/types/cross-and-labels.drawer.js +137 -1
  46. package/dist/chart/components/cross_tool/types/none.drawer.js +3 -1
  47. package/dist/chart/components/dran-n-drop_helper/drag-n-drop-x.component.js +28 -1
  48. package/dist/chart/components/dran-n-drop_helper/drag-n-drop-y.component.js +24 -1
  49. package/dist/chart/components/dran-n-drop_helper/drag-n-drop.component.js +53 -1
  50. package/dist/chart/components/dynamic-objects/dynamic-objects.component.d.ts +13 -0
  51. package/dist/chart/components/dynamic-objects/dynamic-objects.component.js +20 -0
  52. package/dist/chart/components/dynamic-objects/dynamic-objects.drawer.d.ts +18 -0
  53. package/dist/chart/components/dynamic-objects/dynamic-objects.drawer.js +23 -0
  54. package/dist/chart/components/dynamic-objects/dynamic-objects.model.d.ts +63 -0
  55. package/dist/chart/components/dynamic-objects/dynamic-objects.model.js +136 -0
  56. package/dist/chart/components/events/events-hit-test.drawer.js +63 -1
  57. package/dist/chart/components/events/events.component.js +61 -1
  58. package/dist/chart/components/events/events.drawer.js +195 -1
  59. package/dist/chart/components/events/events.model.js +69 -1
  60. package/dist/chart/components/grid/grid.component.d.ts +2 -2
  61. package/dist/chart/components/grid/grid.component.js +31 -1
  62. package/dist/chart/components/grid/grid.drawer.d.ts +4 -3
  63. package/dist/chart/components/grid/grid.drawer.js +106 -1
  64. package/dist/chart/components/high_low/high-low.component.js +12 -1
  65. package/dist/chart/components/high_low/high-low.drawer.js +126 -1
  66. package/dist/chart/components/highlights/highlights.component.js +46 -1
  67. package/dist/chart/components/highlights/highlights.drawer.js +154 -1
  68. package/dist/chart/components/highlights/highlights.model.js +75 -1
  69. package/dist/chart/components/labels_generator/numeric-axis-labels.generator.d.ts +1 -1
  70. package/dist/chart/components/labels_generator/numeric-axis-labels.generator.js +199 -1
  71. package/dist/chart/components/navigation_map/navigation-map-move.handler.d.ts +2 -2
  72. package/dist/chart/components/navigation_map/navigation-map-move.handler.js +108 -1
  73. package/dist/chart/components/navigation_map/navigation-map.component.js +112 -1
  74. package/dist/chart/components/navigation_map/navigation-map.drawer.js +244 -1
  75. package/dist/chart/components/navigation_map/navigation-map.model.js +33 -2
  76. package/dist/chart/components/pan/chart-pan.component.d.ts +2 -2
  77. package/dist/chart/components/pan/chart-pan.component.js +51 -1
  78. package/dist/chart/components/pane/extent/y-extent-component.d.ts +12 -18
  79. package/dist/chart/components/pane/extent/y-extent-component.js +120 -1
  80. package/dist/chart/components/pane/pane-hit-test.controller.d.ts +2 -2
  81. package/dist/chart/components/pane/pane-hit-test.controller.js +55 -1
  82. package/dist/chart/components/pane/pane-manager.component.d.ts +12 -6
  83. package/dist/chart/components/pane/pane-manager.component.js +149 -1
  84. package/dist/chart/components/pane/pane.component.d.ts +16 -32
  85. package/dist/chart/components/pane/pane.component.js +278 -1
  86. package/dist/chart/components/resizer/bar-resizer.component.js +139 -1
  87. package/dist/chart/components/resizer/bar-resizer.drawer.js +46 -1
  88. package/dist/chart/components/snapshot/snapshot.component.js +48 -1
  89. package/dist/chart/components/volumes/separate-volumes.component.d.ts +6 -10
  90. package/dist/chart/components/volumes/separate-volumes.component.js +63 -1
  91. package/dist/chart/components/volumes/volume-color-resolvers.functions.js +18 -1
  92. package/dist/chart/components/volumes/volumes.component.d.ts +6 -7
  93. package/dist/chart/components/volumes/volumes.component.js +94 -1
  94. package/dist/chart/components/volumes/volumes.drawer.d.ts +5 -12
  95. package/dist/chart/components/volumes/volumes.drawer.js +140 -1
  96. package/dist/chart/components/volumes/volumes.formatter.js +31 -1
  97. package/dist/chart/components/volumes/volumes.model.d.ts +2 -2
  98. package/dist/chart/components/volumes/volumes.model.js +43 -1
  99. package/dist/chart/components/watermark/water-mark.component.js +103 -1
  100. package/dist/chart/components/watermark/water-mark.drawer.js +187 -1
  101. package/dist/chart/components/x_axis/numeric-x-axis-labels.generator.js +27 -1
  102. package/dist/chart/components/x_axis/time/parser/time-formats-matchers.functions.js +187 -1
  103. package/dist/chart/components/x_axis/time/parser/time-formats-parser.functions.js +76 -1
  104. package/dist/chart/components/x_axis/time/parser/time-formats-validators.functions.js +79 -1
  105. package/dist/chart/components/x_axis/time/parser/time-formats.model.js +14 -1
  106. package/dist/chart/components/x_axis/time/x-axis-weights.functions.d.ts +1 -1
  107. package/dist/chart/components/x_axis/time/x-axis-weights.functions.js +143 -1
  108. package/dist/chart/components/x_axis/time/x-axis-weights.generator.js +73 -1
  109. package/dist/chart/components/x_axis/x-axis-draw.functions.js +49 -1
  110. package/dist/chart/components/x_axis/x-axis-labels.drawer.js +70 -1
  111. package/dist/chart/components/x_axis/x-axis-labels.generator.d.ts +2 -2
  112. package/dist/chart/components/x_axis/x-axis-labels.generator.js +332 -1
  113. package/dist/chart/components/x_axis/x-axis-labels.model.js +35 -1
  114. package/dist/chart/components/x_axis/x-axis-scale.handler.d.ts +2 -2
  115. package/dist/chart/components/x_axis/x-axis-scale.handler.js +60 -1
  116. package/dist/chart/components/x_axis/x-axis-time-labels.drawer.js +82 -1
  117. package/dist/chart/components/x_axis/x-axis.component.d.ts +2 -2
  118. package/dist/chart/components/x_axis/x-axis.component.js +119 -1
  119. package/dist/chart/components/y_axis/label-color.functions.js +53 -1
  120. package/dist/chart/components/y_axis/numeric-y-axis-labels.generator.d.ts +4 -4
  121. package/dist/chart/components/y_axis/numeric-y-axis-labels.generator.js +33 -1
  122. package/dist/chart/components/y_axis/price_labels/data-series-y-axis-labels.provider.d.ts +3 -3
  123. package/dist/chart/components/y_axis/price_labels/data-series-y-axis-labels.provider.js +67 -1
  124. package/dist/chart/components/y_axis/price_labels/labels-positions-calculator.js +56 -1
  125. package/dist/chart/components/y_axis/price_labels/last-candle-labels.provider.d.ts +4 -3
  126. package/dist/chart/components/y_axis/price_labels/last-candle-labels.provider.js +96 -1
  127. package/dist/chart/components/y_axis/price_labels/price-label.drawer.d.ts +2 -2
  128. package/dist/chart/components/y_axis/price_labels/price-label.drawer.js +119 -1
  129. package/dist/chart/components/y_axis/price_labels/y-axis-labels.model.d.ts +9 -8
  130. package/dist/chart/components/y_axis/price_labels/y-axis-labels.model.js +201 -1
  131. package/dist/chart/components/y_axis/price_labels/y-axis-price-labels.drawer.d.ts +6 -7
  132. package/dist/chart/components/y_axis/price_labels/y-axis-price-labels.drawer.js +58 -1
  133. package/dist/chart/components/y_axis/y-axis-base-labels.model.d.ts +6 -4
  134. package/dist/chart/components/y_axis/y-axis-base-labels.model.js +47 -1
  135. package/dist/chart/components/y_axis/y-axis-labels.drawer.d.ts +4 -4
  136. package/dist/chart/components/y_axis/y-axis-labels.drawer.js +161 -1
  137. package/dist/chart/components/y_axis/y-axis-scale.handler.d.ts +2 -2
  138. package/dist/chart/components/y_axis/y-axis-scale.handler.js +72 -1
  139. package/dist/chart/components/y_axis/y-axis.component.d.ts +32 -41
  140. package/dist/chart/components/y_axis/y-axis.component.js +220 -1
  141. package/dist/chart/components/y_axis/y-axis.drawer.d.ts +9 -12
  142. package/dist/chart/components/y_axis/y-axis.drawer.js +96 -1
  143. package/dist/chart/components/y_axis/y-axis.model.d.ts +10 -17
  144. package/dist/chart/components/y_axis/y-axis.model.js +34 -1
  145. package/dist/chart/drawers/chart-background.drawer.js +69 -1
  146. package/dist/chart/drawers/chart-type-drawers/area.drawer.js +69 -1
  147. package/dist/chart/drawers/chart-type-drawers/bar.drawer.js +57 -1
  148. package/dist/chart/drawers/chart-type-drawers/baseline.drawer.js +84 -1
  149. package/dist/chart/drawers/chart-type-drawers/candle.drawer.js +162 -1
  150. package/dist/chart/drawers/chart-type-drawers/histogram.drawer.js +57 -1
  151. package/dist/chart/drawers/chart-type-drawers/line.drawer.js +38 -1
  152. package/dist/chart/drawers/chart-type-drawers/scatter-plot.drawer.js +19 -1
  153. package/dist/chart/drawers/clear-canvas.drawer.js +14 -1
  154. package/dist/chart/drawers/composite.drawer.js +67 -1
  155. package/dist/chart/drawers/data-series-drawers/candle-series-wrapper.js +50 -1
  156. package/dist/chart/drawers/data-series-drawers/color-candle.drawer.js +35 -1
  157. package/dist/chart/drawers/data-series-drawers/data-series-drawers.utils.js +16 -1
  158. package/dist/chart/drawers/data-series-drawers/difference-cloud.drawer.js +106 -1
  159. package/dist/chart/drawers/data-series-drawers/histogram.drawer.js +23 -1
  160. package/dist/chart/drawers/data-series-drawers/linear.drawer.js +19 -1
  161. package/dist/chart/drawers/data-series-drawers/points.drawer.js +19 -1
  162. package/dist/chart/drawers/data-series-drawers/rectangular-tool.drawer.js +7 -1
  163. package/dist/chart/drawers/data-series-drawers/text.drawer.js +25 -1
  164. package/dist/chart/drawers/data-series-drawers/trend-histogram.drawer.js +35 -1
  165. package/dist/chart/drawers/data-series-drawers/triangle.drawer.js +22 -1
  166. package/dist/chart/drawers/data-series.drawer.d.ts +5 -7
  167. package/dist/chart/drawers/data-series.drawer.js +56 -1
  168. package/dist/chart/drawers/drawing-manager.d.ts +1 -1
  169. package/dist/chart/drawers/drawing-manager.js +177 -1
  170. package/dist/chart/drawers/ht-data-series.drawer.js +37 -1
  171. package/dist/chart/events/event-bus.js +73 -1
  172. package/dist/chart/events/events.js +3 -1
  173. package/dist/chart/inputhandlers/candle-tap.handler.js +46 -1
  174. package/dist/chart/inputhandlers/chart-resize.handler.js +98 -1
  175. package/dist/chart/inputhandlers/cross-event-producer.component.js +67 -1
  176. package/dist/chart/inputhandlers/hover-producer.component.d.ts +2 -2
  177. package/dist/chart/inputhandlers/hover-producer.component.js +228 -1
  178. package/dist/chart/inputhandlers/main-canvas-touch.handler.d.ts +2 -2
  179. package/dist/chart/inputhandlers/main-canvas-touch.handler.js +80 -1
  180. package/dist/chart/inputlisteners/canvas-input-listener.component.js +629 -1
  181. package/dist/chart/model/baseline.model.js +88 -1
  182. package/dist/chart/model/bounds.model.js +1 -1
  183. package/dist/chart/model/candle-hover.js +70 -1
  184. package/dist/chart/model/candle-series-high-low.provider.js +45 -1
  185. package/dist/chart/model/candle-series.model.d.ts +3 -3
  186. package/dist/chart/model/candle-series.model.js +245 -1
  187. package/dist/chart/model/candle.model.js +69 -1
  188. package/dist/chart/model/canvas.model.js +228 -1
  189. package/dist/chart/model/chart-base-element.js +129 -1
  190. package/dist/chart/model/compare-series-hover.js +25 -1
  191. package/dist/chart/model/data-series-view.d.ts +5 -5
  192. package/dist/chart/model/data-series-view.js +111 -1
  193. package/dist/chart/model/data-series.config.js +14 -1
  194. package/dist/chart/model/data-series.model.d.ts +4 -4
  195. package/dist/chart/model/data-series.model.js +281 -1
  196. package/dist/chart/model/date-time.formatter.js +151 -1
  197. package/dist/chart/model/hit-test-canvas.model.d.ts +1 -1
  198. package/dist/chart/model/hit-test-canvas.model.js +256 -1
  199. package/dist/chart/model/main-candle-series.model.d.ts +1 -1
  200. package/dist/chart/model/main-candle-series.model.js +29 -1
  201. package/dist/chart/model/scale.model.d.ts +3 -2
  202. package/dist/chart/model/scale.model.js +316 -1
  203. package/dist/chart/model/scaling/auto-scale.model.d.ts +2 -4
  204. package/dist/chart/model/scaling/auto-scale.model.js +91 -1
  205. package/dist/chart/model/scaling/constrait.functions.js +61 -1
  206. package/dist/chart/model/scaling/lock-ratio.model.js +17 -1
  207. package/dist/chart/model/scaling/move-chart.functions.js +22 -1
  208. package/dist/chart/model/scaling/viewport.model.d.ts +2 -2
  209. package/dist/chart/model/scaling/viewport.model.js +279 -1
  210. package/dist/chart/model/scaling/x-zooming.functions.js +35 -1
  211. package/dist/chart/model/time-zone.model.js +109 -1
  212. package/dist/chart/model/visual-candle.js +134 -1
  213. package/dist/chart/utils/__tests__/array.utils.test.js +135 -1
  214. package/dist/chart/utils/__tests__/math.utils.test.js +14 -1
  215. package/dist/chart/utils/__tests__/object.utils.test.js +11 -1
  216. package/dist/chart/utils/__tests__/priceIncrementsUtils.test.js +29 -1
  217. package/dist/chart/utils/array.utils.d.ts +1 -1
  218. package/dist/chart/utils/array.utils.js +269 -1
  219. package/dist/chart/utils/auto-period-detector.utils.js +39 -1
  220. package/dist/chart/utils/candles-generator-ts.utils.js +20 -1
  221. package/dist/chart/utils/candles-generator.utils.js +161 -1
  222. package/dist/chart/utils/candles.utils.js +42 -1
  223. package/dist/chart/utils/canvas/canvas-drawing-functions.utils.js +144 -1
  224. package/dist/chart/utils/canvas/canvas-font-measure-tool.utils.js +51 -1
  225. package/dist/chart/utils/canvas/canvas-text-functions.utils.js +156 -1
  226. package/dist/chart/utils/color.utils.js +31 -1
  227. package/dist/chart/utils/device/browser.utils.js +10 -1
  228. package/dist/chart/utils/device/device-detector.utils.js +24 -1
  229. package/dist/chart/utils/device/device-pixel-ratio.utils.js +21 -1
  230. package/dist/chart/utils/device/touchpad.utils.js +91 -1
  231. package/dist/chart/utils/dom.utils.js +15 -1
  232. package/dist/chart/utils/function.utils.js +16 -1
  233. package/dist/chart/utils/linkedList.utils.d.ts +28 -0
  234. package/dist/chart/utils/linkedList.utils.js +138 -0
  235. package/dist/chart/utils/math.utils.js +115 -1
  236. package/dist/chart/utils/merge.utils.js +56 -1
  237. package/dist/chart/utils/object.utils.js +43 -1
  238. package/dist/chart/utils/performance/animation-frame-cache.utils.js +77 -0
  239. package/dist/chart/utils/{perfomance → performance}/debounce.utils.js +7 -1
  240. package/dist/chart/utils/performance/memoize.utils.js +74 -0
  241. package/dist/chart/utils/performance/request-animation-frame-throttle.utils.js +43 -0
  242. package/dist/chart/utils/performance/throttle.utils.js +26 -0
  243. package/dist/chart/utils/price-increments.utils.d.ts +1 -0
  244. package/dist/chart/utils/price-increments.utils.js +127 -1
  245. package/dist/chart/utils/uuid.utils.js +4 -1
  246. package/dist/dxchart.min.js +9 -12
  247. package/dist/index.d.ts +3 -3
  248. package/dist/index.js +20 -1
  249. package/package.json +4 -4
  250. package/dist/chart/utils/perfomance/animation-frame-cache.utils.js +0 -6
  251. package/dist/chart/utils/perfomance/memoize.utils.js +0 -6
  252. package/dist/chart/utils/perfomance/request-animation-frame-throttle.utils.js +0 -6
  253. package/dist/chart/utils/perfomance/throttle.utils.js +0 -6
  254. /package/dist/chart/utils/{perfomance → performance}/animation-frame-cache.utils.d.ts +0 -0
  255. /package/dist/chart/utils/{perfomance → performance}/debounce.utils.d.ts +0 -0
  256. /package/dist/chart/utils/{perfomance → performance}/memoize.utils.d.ts +0 -0
  257. /package/dist/chart/utils/{perfomance → performance}/request-animation-frame-throttle.utils.d.ts +0 -0
  258. /package/dist/chart/utils/{perfomance → performance}/throttle.utils.d.ts +0 -0
package/README.md CHANGED
@@ -106,7 +106,7 @@ export const generateMockData = () => {
106
106
  symbol: 'AAPL',
107
107
  priceIncrements: [0.01],
108
108
  };
109
- chartInstance.chartComponent.setMainSeries({ candles: mockCandles, instrument: mockInstrument });
109
+ chart.setData({ candles: mockCandles, instrument: mockInstrument });
110
110
  };
111
111
  ```
112
112
 
@@ -140,7 +140,7 @@ Here is full quick-start code example:
140
140
  symbol: 'AAPL',
141
141
  priceIncrements: [0.01],
142
142
  };
143
- chartInstance.chartComponent.setMainSeries({ candles: mockCandles, instrument: mockInstrument });
143
+ chart.setData({ candles: mockCandles, instrument: mockInstrument });
144
144
  </script>
145
145
  ```
146
146
 
@@ -3,4 +3,137 @@
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{ColorAlphaAnimation as r}from"./types/color-alpha-animation";import{ColorTransitionAnimation as s}from"./types/color-transition-animation";import{ViewportMovementAnimation as m}from"./types/viewport-movement-animation";const e=10;export const VIEWPORT_ANIMATION_ID="VIEWPORT_ANIMATION";export class CanvasAnimation{constructor(t){this.eventBus=t,this.animations={}}startViewportMovementAnimation(t,n,i=VIEWPORT_ANIMATION_ID,o){const a=new m(t,n,o);return this.animations[i]=a,this.ensureIntervalStarted(),a}startColorAlphaAnimation(t,n,i,o){const a=new r(Object.assign(Object.assign({},o),{duration:o&&o.duration||e}),n,i);return this.animations[t]=a,this.ensureIntervalStarted(),a}startColorTransitionAnimation(t,n,i=e,o){const a=new s({duration:i},n,o);return this.animations[t]=a,this.ensureIntervalStarted(),a}getAnimation(t){return this.animations[t]}getColorAlphaAnimation(t){return this.getAnimation(t)}getColorTransitionAnimation(t){return this.getAnimation(t)}forceStopAnimation(t){const n=this.animations[t];n&&(n.animationTimeLeft=-1,n.animationInProgress=!1)}ensureIntervalStarted(){this.animationIntervalId||(this.animationIntervalId=window.setInterval(()=>this.tick(),20))}tick(){let t=!0;for(const n of Object.keys(this.animations)){const i=this.animations[n];i.tick(),i.animationInProgress&&(t=!1)}t?this.stopInterval():this.eventBus.fireDraw()}stopInterval(){clearInterval(this.animationIntervalId),this.animationIntervalId=void 0}}
6
+ import { ColorAlphaAnimation } from './types/color-alpha-animation';
7
+ import { ColorTransitionAnimation } from './types/color-transition-animation';
8
+ import { ViewportMovementAnimation } from './types/viewport-movement-animation';
9
+ const DEFAULT_ANIMATION_TIME = 10;
10
+ export const VIEWPORT_ANIMATION_ID = 'VIEWPORT_ANIMATION';
11
+ /**
12
+ * Singleton animation container for all chart animations.
13
+ * Does the following things:
14
+ * - registers animations and updates their state
15
+ * - fires only 1 DRAW event for all animations at once
16
+ *
17
+ * Add specific animation here as well with typed API.
18
+ * Like "color" animation which auto-updates color alpha channel.
19
+ *
20
+ * @doc-tags chart-core,animation
21
+ */
22
+ export class CanvasAnimation {
23
+ constructor(eventBus) {
24
+ this.eventBus = eventBus;
25
+ this.animations = {};
26
+ }
27
+ /**
28
+ * Starts a viewport movement animation with the given configuration and adds it to the list of animations.
29
+ * @param {ViewportModel} viewportModel - The viewport model to animate.
30
+ * @param {ViewportMovementAnimationConfig} config - The configuration for the animation.
31
+ * @param {string} [uniqueAnimationId=VIEWPORT_ANIMATION_ID] - The unique ID for the animation.
32
+ * @param {Function} [onTickFunction] - The function to be called on each tick of the animation.
33
+ * @returns {ViewportMovementAnimation} The container for the created animation.
34
+ */
35
+ startViewportMovementAnimation(viewportModel, config, uniqueAnimationId = VIEWPORT_ANIMATION_ID, onTickFunction) {
36
+ const animation = new ViewportMovementAnimation(viewportModel, config, onTickFunction);
37
+ this.animations[uniqueAnimationId] = animation;
38
+ this.ensureIntervalStarted();
39
+ return animation;
40
+ }
41
+ /**
42
+ * Starts a color alpha animation with the given configuration and adds it to the list of animations.
43
+ * @param {string} uniqueAnimationId - A unique identifier for the animation.
44
+ * @param {Array<ColorAlphaAnimationConfig>} colorConfigs - An array of color alpha animation configurations.
45
+ * @param {() => void} [onTickFunction] - A function to be called on each animation tick.
46
+ * @param {Partial<ACAnimationConfig>} [animationConfig] - An optional configuration for the animation.
47
+ * @returns {ColorAlphaAnimation} - The created animation container.
48
+ */
49
+ startColorAlphaAnimation(uniqueAnimationId, colorConfigs, onTickFunction, animationConfig) {
50
+ const animation = new ColorAlphaAnimation(Object.assign(Object.assign({}, animationConfig), { duration: (animationConfig && animationConfig.duration) || DEFAULT_ANIMATION_TIME }), colorConfigs, onTickFunction);
51
+ this.animations[uniqueAnimationId] = animation;
52
+ this.ensureIntervalStarted();
53
+ return animation;
54
+ }
55
+ /**
56
+ * Starts a color transition animation with the given configurations and duration.
57
+ * @param {string} uniqueAnimationId - A unique identifier for the animation.
58
+ * @param {Array<ColorTransitionAnimationConfig>} colorConfigs - An array of color transition configurations.
59
+ * @param {number} [duration=DEFAULT_ANIMATION_TIME] - The duration of the animation in milliseconds.
60
+ * @param {Function} [onTickFunction] - A function to be called on each tick of the animation.
61
+ * @returns {ColorTransitionAnimation} - The created animation container.
62
+ */
63
+ startColorTransitionAnimation(uniqueAnimationId, colorConfigs, duration = DEFAULT_ANIMATION_TIME, onTickFunction) {
64
+ const animation = new ColorTransitionAnimation({ duration }, colorConfigs, onTickFunction);
65
+ this.animations[uniqueAnimationId] = animation;
66
+ this.ensureIntervalStarted();
67
+ return animation;
68
+ }
69
+ /**
70
+ * This function takes an id as a string and returns an animation container object of type T. It retrieves the animation container object from the animations object using the provided id. The @ts-ignore comment is used to ignore any TypeScript errors that may occur due to the dynamic nature of the function.
71
+ */
72
+ getAnimation(id) {
73
+ // @ts-ignore
74
+ return this.animations[id];
75
+ }
76
+ /**
77
+ * Returns a ColorAlphaAnimation object for the given animation ID.
78
+ *
79
+ * @param {string} id - The ID of the animation to retrieve.
80
+ * @returns {ColorAlphaAnimation} - The ColorAlphaAnimation object for the given ID.
81
+ */
82
+ getColorAlphaAnimation(id) {
83
+ return this.getAnimation(id);
84
+ }
85
+ /**
86
+ * Returns a ColorTransitionAnimation object for the given id.
87
+ * @param {string} id - The id of the animation to retrieve.
88
+ * @returns {ColorTransitionAnimation} - The ColorTransitionAnimation object for the given id.
89
+ */
90
+ getColorTransitionAnimation(id) {
91
+ return this.getAnimation(id);
92
+ }
93
+ /**
94
+ * Stops the animation with the given ID.
95
+ * @param {string} id - The ID of the animation to be stopped.
96
+ * @returns {void}
97
+ */
98
+ forceStopAnimation(id) {
99
+ const animation = this.animations[id];
100
+ if (animation) {
101
+ animation.animationTimeLeft = -1;
102
+ animation.animationInProgress = false;
103
+ }
104
+ }
105
+ /**
106
+ * This method ensures that the animation interval is started. If the animation interval ID is not set, it sets it to a new interval ID using `window.setInterval()` with a callback function of `this.tick()` and a delay of 20 milliseconds.
107
+ */
108
+ ensureIntervalStarted() {
109
+ if (!this.animationIntervalId) {
110
+ this.animationIntervalId = window.setInterval(() => this.tick(), 20);
111
+ }
112
+ }
113
+ /**
114
+ * This is a private method that iterates through all the animations in the container and calls their tick method. If any animation is still in progress, it sets the allCompleted flag to false. If all animations are completed, it stops the interval. If not, it fires the draw event.
115
+ */
116
+ tick() {
117
+ let allCompleted = true;
118
+ for (const i of Object.keys(this.animations)) {
119
+ const animation = this.animations[i];
120
+ animation.tick();
121
+ if (animation.animationInProgress) {
122
+ allCompleted = false;
123
+ }
124
+ }
125
+ if (!allCompleted) {
126
+ this.eventBus.fireDraw();
127
+ }
128
+ else {
129
+ this.stopInterval();
130
+ }
131
+ }
132
+ /**
133
+ * Stops the interval for the animation.
134
+ */
135
+ stopInterval() {
136
+ clearInterval(this.animationIntervalId);
137
+ this.animationIntervalId = undefined;
138
+ }
139
+ }
@@ -3,4 +3,46 @@
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 Animation{constructor(i,t){this.onTickFunction=t,this.animationTimeLeft=0,this.animationInProgress=!1,this.animationTime=i.duration,this.animationTimeLeft=i.timeLeft===void 0?i.duration:i.timeLeft,this.animationInProgress=!0}tick(){this.animationTimeLeft<=0?this.animationInProgress=!1:this.animationTimeLeft--,this.onTickFunction&&this.onTickFunction()}getProgress(){return 1-this.animationTimeLeft/this.animationTime}finishAnimation(){this.animationInProgress=!1,this.animationTimeLeft=0}}
6
+ /**
7
+ * Basic animation. Holds current state: inProgress, timeLeft.
8
+ * Additional params are useful to pass data which helps animating.
9
+ */
10
+ export class Animation {
11
+ constructor(animationConfig, onTickFunction) {
12
+ this.onTickFunction = onTickFunction;
13
+ this.animationTimeLeft = 0;
14
+ this.animationInProgress = false;
15
+ this.animationTime = animationConfig.duration;
16
+ this.animationTimeLeft =
17
+ animationConfig.timeLeft === undefined ? animationConfig.duration : animationConfig.timeLeft;
18
+ this.animationInProgress = true;
19
+ }
20
+ /**
21
+ * Decrements the animation time left and executes the onTickFunction if it exists.
22
+ * If the animation time left reaches zero, sets the animationInProgress flag to false.
23
+ */
24
+ tick() {
25
+ if (this.animationTimeLeft <= 0) {
26
+ this.animationInProgress = false;
27
+ }
28
+ else {
29
+ this.animationTimeLeft--;
30
+ }
31
+ this.onTickFunction && this.onTickFunction();
32
+ }
33
+ // normalized time [0..1]
34
+ /**
35
+ * Calculates the normalized progress of an animation.
36
+ * @returns {number} A value between 0 and 1 representing the progress of the animation.
37
+ */
38
+ getProgress() {
39
+ return 1 - this.animationTimeLeft / this.animationTime;
40
+ }
41
+ /**
42
+ * Sets the animationInProgress flag to false and resets the animationTimeLeft to 0.
43
+ */
44
+ finishAnimation() {
45
+ this.animationInProgress = false;
46
+ this.animationTimeLeft = 0;
47
+ }
48
+ }
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { AnimationConfig } from '../canvas-animation';
7
7
  import { Animation } from './animation';
8
- import * as Color from 'color';
8
+ import Color from 'color';
9
9
  interface CustomColor extends Color {
10
10
  readonly valpha?: number;
11
11
  }
@@ -3,4 +3,63 @@
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{Animation as o}from"./animation";import*as e from"color";export class ColorAlphaAnimation extends o{constructor(i,t,a=()=>{}){super(i,a),this.colorConfigs=t,t.forEach(r=>{r.rgbColor=e.rgb(r.color),r.initialAlpha=r.rgbColor.valpha,r.currentAnimationColor=r.rgbColor})}tick(){super.tick(),this.animationInProgress&&this.colorConfigs.forEach(i=>{i.initialAlpha===void 0||i.rgbColor===void 0||(i.type==="fading"?i.currentAnimationColor=i.rgbColor.alpha(i.initialAlpha*this.animationTimeLeft/this.animationTime):i.type==="appearing"&&(i.currentAnimationColor=i.rgbColor.alpha(i.initialAlpha*(1-this.animationTimeLeft/this.animationTime))))})}getColor(i){var t,a;return(a=(t=this.colorConfigs[i].currentAnimationColor)===null||t===void 0?void 0:t.toString())!==null&&a!==void 0?a:"#FFFFFF"}revert(){this.animationTimeLeft=Math.max(this.animationTime-this.animationTimeLeft,1),this.colorConfigs.forEach(i=>{i.type==="fading"?i.type="appearing":i.type="fading"})}}
6
+ import { Animation } from './animation';
7
+ import Color from 'color';
8
+ /**
9
+ * Color animation automatically updates alpha channel of provided colors on each tick.
10
+ * Can be in 'appearing' and 'fading' state.
11
+ */
12
+ export class ColorAlphaAnimation extends Animation {
13
+ constructor(animationConfig, colorConfigs, onTickFunction = () => { }) {
14
+ super(animationConfig, onTickFunction);
15
+ this.colorConfigs = colorConfigs;
16
+ colorConfigs.forEach(config => {
17
+ config.rgbColor = Color.rgb(config.color);
18
+ config.initialAlpha = config.rgbColor.valpha;
19
+ config.currentAnimationColor = config.rgbColor;
20
+ });
21
+ }
22
+ /**
23
+ * Updates the current animation color of each color configuration based on the animation type and time left. If an animation is in progress, it iterates over each color configuration and updates its current animation color. If the configuration has an initial alpha and RGB color, it calculates the new alpha value based on the animation time left and updates the current animation color accordingly. The animation type can be either 'fading' or 'appearing'.
24
+ */
25
+ tick() {
26
+ super.tick();
27
+ if (this.animationInProgress) {
28
+ this.colorConfigs.forEach(config => {
29
+ if (config.initialAlpha === undefined || config.rgbColor === undefined) {
30
+ return;
31
+ }
32
+ if (config.type === 'fading') {
33
+ config.currentAnimationColor = config.rgbColor.alpha((config.initialAlpha * this.animationTimeLeft) / this.animationTime);
34
+ }
35
+ else if (config.type === 'appearing') {
36
+ config.currentAnimationColor = config.rgbColor.alpha(config.initialAlpha * (1 - this.animationTimeLeft / this.animationTime));
37
+ }
38
+ });
39
+ }
40
+ }
41
+ /**
42
+ * Returns the color of the current animation for a given index.
43
+ * @param {number} index - The index of the color configuration to retrieve.
44
+ * @returns {string} - The color of the current animation for the given index, or white if not found.
45
+ */
46
+ getColor(index) {
47
+ var _a, _b;
48
+ return (_b = (_a = this.colorConfigs[index].currentAnimationColor) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '#FFFFFF';
49
+ }
50
+ /**
51
+ * This function reverts the animation by changing the type of color configurations from 'fading' to 'appearing' and vice versa. It also ensures that the animationTimeLeft is not zero to avoid getting stuck in the middle of the animation.
52
+ */
53
+ revert() {
54
+ // if animationTimeLeft becomes zero it halts the animation and we'll stuck in the middle of animation
55
+ this.animationTimeLeft = Math.max(this.animationTime - this.animationTimeLeft, 1);
56
+ this.colorConfigs.forEach(config => {
57
+ if (config.type === 'fading') {
58
+ config.type = 'appearing';
59
+ }
60
+ else {
61
+ config.type = 'fading';
62
+ }
63
+ });
64
+ }
65
+ }
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { AnimationConfig } from '../canvas-animation';
7
7
  import { Animation } from './animation';
8
- import * as Color from 'color';
8
+ import Color from 'color';
9
9
  export interface ColorTransitionAnimationConfig {
10
10
  startColor: string;
11
11
  endColor: string;
@@ -3,4 +3,89 @@
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{Animation as l}from"./animation";import*as e from"color";export class ColorTransitionAnimation extends l{constructor(r,t,o=()=>{}){super(r,o),this.colorConfigs=t,t.forEach(i=>{i.rgbStartColor=e.rgb(i.startColor),i.rgbEndColor=e.rgb(i.endColor),i.currentAnimationColor=i.type==="appearing"?i.rgbStartColor:i.rgbEndColor})}tick(){super.tick(),this.animationInProgress&&this.colorConfigs.forEach(r=>{const t=1-this.animationTimeLeft/this.animationTime;!r.rgbStartColor||!r.rgbEndColor||(r.type==="fading"?r.currentAnimationColor=this.calculateTransitionColor(r.rgbEndColor,r.rgbStartColor,t):r.type==="appearing"&&(r.currentAnimationColor=this.calculateTransitionColor(r.rgbStartColor,r.rgbEndColor,t)))})}getColor(r){var t,o;return(o=(t=this.colorConfigs[r].currentAnimationColor)===null||t===void 0?void 0:t.toString())!==null&&o!==void 0?o:"#FFFFFF"}revert(){this.animationTimeLeft=Math.max(this.animationTime-this.animationTimeLeft,1),this.colorConfigs.forEach(r=>{r.type==="fading"?r.type="appearing":r.type="fading"})}moveToLastTick(){this.animationTimeLeft=1}calculateTransitionColor(r,t,o){const i=r.red()-(r.red()-t.red())*o,a=r.green()-(r.green()-t.green())*o,n=r.blue()-(r.blue()-t.blue())*o;return e.rgb(i,a,n)}}
6
+ import { Animation } from './animation';
7
+ import Color from 'color';
8
+ /**
9
+ * Color transition calculates color between start..end color for each tick.
10
+ * Can be in 'appearing' and 'fading' state; 'fading' is just reverting the colors order.
11
+ */
12
+ export class ColorTransitionAnimation extends Animation {
13
+ constructor(animationConfig, colorConfigs, onTickFunction = () => { }) {
14
+ super(animationConfig, onTickFunction);
15
+ this.colorConfigs = colorConfigs;
16
+ colorConfigs.forEach(config => {
17
+ config.rgbStartColor = Color.rgb(config.startColor);
18
+ config.rgbEndColor = Color.rgb(config.endColor);
19
+ config.currentAnimationColor = config.type === 'appearing' ? config.rgbStartColor : config.rgbEndColor;
20
+ });
21
+ }
22
+ /**
23
+ * Updates the current animation color for each color configuration based on the progress of the animation.
24
+ * If an animation is in progress, it calculates the transition color for each configuration based on the start and end colors and the current progress of the animation.
25
+ * If the configuration type is "fading", it transitions from the end color to the start color, and if the type is "appearing", it transitions from the start color to the end color.
26
+ * @function
27
+ * @returns {void}
28
+ */
29
+ tick() {
30
+ super.tick();
31
+ if (this.animationInProgress) {
32
+ this.colorConfigs.forEach(config => {
33
+ const progress = 1 - this.animationTimeLeft / this.animationTime;
34
+ if (!config.rgbStartColor || !config.rgbEndColor) {
35
+ return;
36
+ }
37
+ if (config.type === 'fading') {
38
+ config.currentAnimationColor = this.calculateTransitionColor(config.rgbEndColor, config.rgbStartColor, progress);
39
+ }
40
+ else if (config.type === 'appearing') {
41
+ config.currentAnimationColor = this.calculateTransitionColor(config.rgbStartColor, config.rgbEndColor, progress);
42
+ }
43
+ });
44
+ }
45
+ }
46
+ /**
47
+ * Returns the color of the current animation for a given index.
48
+ * @param {number} index - The index of the color configuration to retrieve.
49
+ * @returns {string} - The color of the current animation for the given index, or white if not found.
50
+ */
51
+ getColor(index) {
52
+ var _a, _b;
53
+ return (_b = (_a = this.colorConfigs[index].currentAnimationColor) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '#FFFFFF';
54
+ }
55
+ /**
56
+ * Reverts the animation by changing the type of color configurations from 'fading' to 'appearing' and vice versa.
57
+ * It also ensures that the animation does not halt in the middle by setting the animationTimeLeft to the maximum of (animationTime - animationTimeLeft) and 1.
58
+ * @function
59
+ * @returns {void}
60
+ */
61
+ revert() {
62
+ // if animationTimeLeft becomes zero it halts the animation and we'll stuck in the middle of animation
63
+ this.animationTimeLeft = Math.max(this.animationTime - this.animationTimeLeft, 1);
64
+ this.colorConfigs.forEach(config => {
65
+ if (config.type === 'fading') {
66
+ config.type = 'appearing';
67
+ }
68
+ else {
69
+ config.type = 'fading';
70
+ }
71
+ });
72
+ }
73
+ /**
74
+ * Moves animation state to one last tick - instant-finishing animation as result.
75
+ */
76
+ moveToLastTick() {
77
+ this.animationTimeLeft = 1;
78
+ }
79
+ /**
80
+ * Calculates new color in between of 2 colors.
81
+ * @param startColor - from color
82
+ * @param endColor - to color
83
+ * @param progress - number between 0..1
84
+ */
85
+ calculateTransitionColor(startColor, endColor, progress) {
86
+ const r = startColor.red() - (startColor.red() - endColor.red()) * progress;
87
+ const g = startColor.green() - (startColor.green() - endColor.green()) * progress;
88
+ const b = startColor.blue() - (startColor.blue() - endColor.blue()) * progress;
89
+ return Color.rgb(r, g, b);
90
+ }
91
+ }
@@ -3,4 +3,66 @@
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{Animation as e}from"./animation";import{easeExpOut as h}from"../../utils/math.utils";import{uuid as m}from"../../utils/uuid.utils";export class ViewportMovementAnimation extends e{constructor(t,i,o){var n;super(i,o),this.viewportModel=t,this.animationConfig=i,this.id=m(),this.xStart=t.xStart,this.xEnd=t.xEnd,this.yStart=t.yStart,this.yEnd=t.yEnd,this.zoomX=t.zoomX,this.zoomY=t.zoomY,this.easingFn=(n=i.easingFn)!==null&&n!==void 0?n:h}tick(){if(super.tick(),this.animationInProgress){const t=this.easingFn(this.getProgress()),i=this.xStart+(this.animationConfig.targetXStart-this.xStart)*t,o=this.xEnd+(this.animationConfig.targetXEnd-this.xEnd)*t,n=this.yStart+(this.animationConfig.targetYStart-this.yStart)*t,s=this.yEnd+(this.animationConfig.targetYEnd-this.yEnd)*t,a=this.zoomX+(this.animationConfig.targetZoomX-this.zoomX)*t,r=this.zoomY+(this.animationConfig.targetZoomY-this.zoomY)*t;this.viewportModel.apply({xStart:i,xEnd:o,yStart:n,yEnd:s,zoomX:a,zoomY:r,inverseY:this.viewportModel.inverseY})}}finishAnimation(){super.finishAnimation(),this.viewportModel.apply({xStart:this.animationConfig.targetXStart,xEnd:this.animationConfig.targetXEnd,yStart:this.animationConfig.targetYStart,yEnd:this.animationConfig.targetYEnd,zoomX:this.animationConfig.targetZoomX,zoomY:this.animationConfig.targetZoomY,inverseY:this.viewportModel.inverseY})}}
6
+ import { Animation } from './animation';
7
+ import { easeExpOut } from '../../utils/math.utils';
8
+ import { uuid } from '../../utils/uuid.utils';
9
+ /**
10
+ * Animates the viewport X movement. Uses d3-ease library for easing functions.
11
+ * https://www.npmjs.com/package/d3-ease
12
+ * @doc-tags animation,scaling
13
+ */
14
+ export class ViewportMovementAnimation extends Animation {
15
+ constructor(viewportModel, animationConfig, onTickFunction) {
16
+ var _a;
17
+ super(animationConfig, onTickFunction);
18
+ this.viewportModel = viewportModel;
19
+ this.animationConfig = animationConfig;
20
+ this.id = uuid();
21
+ this.xStart = viewportModel.xStart;
22
+ this.xEnd = viewportModel.xEnd;
23
+ this.yStart = viewportModel.yStart;
24
+ this.yEnd = viewportModel.yEnd;
25
+ this.zoomX = viewportModel.zoomX;
26
+ this.zoomY = viewportModel.zoomY;
27
+ this.easingFn = (_a = animationConfig.easingFn) !== null && _a !== void 0 ? _a : easeExpOut;
28
+ }
29
+ /**
30
+ * Updates the viewport model's properties based on the animation configuration and easing function. If an animation is in progress, the properties are updated based on the current progress of the animation. The updated properties include the start and end coordinates for the x and y axes, as well as the zoom level for both axes. The updated properties are then applied to the viewport model.
31
+ */
32
+ tick() {
33
+ super.tick();
34
+ if (this.animationInProgress) {
35
+ const easedProgress = this.easingFn(this.getProgress());
36
+ const newXStart = this.xStart + (this.animationConfig.targetXStart - this.xStart) * easedProgress;
37
+ const newXEnd = this.xEnd + (this.animationConfig.targetXEnd - this.xEnd) * easedProgress;
38
+ const newYStart = this.yStart + (this.animationConfig.targetYStart - this.yStart) * easedProgress;
39
+ const newYEnd = this.yEnd + (this.animationConfig.targetYEnd - this.yEnd) * easedProgress;
40
+ const newZoomX = this.zoomX + (this.animationConfig.targetZoomX - this.zoomX) * easedProgress;
41
+ const newZoomY = this.zoomY + (this.animationConfig.targetZoomY - this.zoomY) * easedProgress;
42
+ this.viewportModel.apply({
43
+ xStart: newXStart,
44
+ xEnd: newXEnd,
45
+ yStart: newYStart,
46
+ yEnd: newYEnd,
47
+ zoomX: newZoomX,
48
+ zoomY: newZoomY,
49
+ inverseY: this.viewportModel.inverseY,
50
+ });
51
+ }
52
+ }
53
+ /**
54
+ * This method finishes the animation and applies the target viewport model configuration. It calls the `finishAnimation()` method of the parent class and then applies the target configuration to the `viewportModel` object. The target configuration includes the `xStart`, `xEnd`, `yStart`, `yEnd`, `zoomX`, `zoomY`, and `inverseY` properties.
55
+ */
56
+ finishAnimation() {
57
+ super.finishAnimation();
58
+ this.viewportModel.apply({
59
+ xStart: this.animationConfig.targetXStart,
60
+ xEnd: this.animationConfig.targetXEnd,
61
+ yStart: this.animationConfig.targetYStart,
62
+ yEnd: this.animationConfig.targetYEnd,
63
+ zoomX: this.animationConfig.targetZoomX,
64
+ zoomY: this.animationConfig.targetZoomY,
65
+ inverseY: this.viewportModel.inverseY,
66
+ });
67
+ }
68
+ }
@@ -3,4 +3,23 @@
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
- const a=30;export const startViewportModelAnimation=(n,o,t)=>{const r=n.startViewportMovementAnimation(o,{duration:30,targetXStart:t.xStart,targetXEnd:t.xEnd,targetYStart:t.yStart,targetYEnd:t.yEnd,targetZoomX:t.zoomX,targetZoomY:t.zoomY});o.currentAnimation=r};
6
+ const VIEWPORT_ANIMATION_DURATION = 30;
7
+ /**
8
+ * Starts the animation for chart viewport movement.
9
+ * @param canvasAnimation
10
+ * @param viewportModel
11
+ * @param state
12
+ * @doc-tags animation,viewport
13
+ */
14
+ export const startViewportModelAnimation = (canvasAnimation, viewportModel, state) => {
15
+ const animation = canvasAnimation.startViewportMovementAnimation(viewportModel, {
16
+ duration: VIEWPORT_ANIMATION_DURATION,
17
+ targetXStart: state.xStart,
18
+ targetXEnd: state.xEnd,
19
+ targetYStart: state.yStart,
20
+ targetYEnd: state.yEnd,
21
+ targetZoomX: state.zoomX,
22
+ targetZoomY: state.zoomY,
23
+ });
24
+ viewportModel.currentAnimation = animation;
25
+ };