@amcharts/amcharts5 5.7.6 → 5.8.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 (323) hide show
  1. package/.internal/charts/hierarchy/Hierarchy.d.ts.map +1 -1
  2. package/.internal/charts/hierarchy/Hierarchy.js +18 -8
  3. package/.internal/charts/hierarchy/Hierarchy.js.map +1 -1
  4. package/.internal/charts/hierarchy/Partition.d.ts +4 -0
  5. package/.internal/charts/hierarchy/Partition.d.ts.map +1 -1
  6. package/.internal/charts/hierarchy/Partition.js +2 -1
  7. package/.internal/charts/hierarchy/Partition.js.map +1 -1
  8. package/.internal/charts/map/ClusteredPointSeries.d.ts +3 -1
  9. package/.internal/charts/map/ClusteredPointSeries.d.ts.map +1 -1
  10. package/.internal/charts/map/ClusteredPointSeries.js +54 -41
  11. package/.internal/charts/map/ClusteredPointSeries.js.map +1 -1
  12. package/.internal/charts/map/MapChart.js +1 -1
  13. package/.internal/charts/map/MapChart.js.map +1 -1
  14. package/.internal/charts/map/MapChartDefaultTheme.d.ts.map +1 -1
  15. package/.internal/charts/map/MapChartDefaultTheme.js +1 -37
  16. package/.internal/charts/map/MapChartDefaultTheme.js.map +1 -1
  17. package/.internal/charts/map/MapPolygon.js +4 -2
  18. package/.internal/charts/map/MapPolygon.js.map +1 -1
  19. package/.internal/charts/map/ZoomControl.d.ts +6 -26
  20. package/.internal/charts/map/ZoomControl.d.ts.map +1 -1
  21. package/.internal/charts/map/ZoomControl.js +5 -80
  22. package/.internal/charts/map/ZoomControl.js.map +1 -1
  23. package/.internal/charts/stock/SettingsModal.d.ts.map +1 -1
  24. package/.internal/charts/stock/SettingsModal.js +5 -1
  25. package/.internal/charts/stock/SettingsModal.js.map +1 -1
  26. package/.internal/charts/stock/StockChart.d.ts +1 -0
  27. package/.internal/charts/stock/StockChart.d.ts.map +1 -1
  28. package/.internal/charts/stock/StockChart.js +52 -42
  29. package/.internal/charts/stock/StockChart.js.map +1 -1
  30. package/.internal/charts/stock/StockChartDefaultTheme.d.ts.map +1 -1
  31. package/.internal/charts/stock/StockChartDefaultTheme.js +1 -4
  32. package/.internal/charts/stock/StockChartDefaultTheme.js.map +1 -1
  33. package/.internal/charts/stock/drawing/DrawingSeries.d.ts +8 -2
  34. package/.internal/charts/stock/drawing/DrawingSeries.d.ts.map +1 -1
  35. package/.internal/charts/stock/drawing/DrawingSeries.js +9 -6
  36. package/.internal/charts/stock/drawing/DrawingSeries.js.map +1 -1
  37. package/.internal/charts/stock/drawing/ParallelChannelSeries.d.ts +0 -1
  38. package/.internal/charts/stock/drawing/ParallelChannelSeries.d.ts.map +1 -1
  39. package/.internal/charts/stock/drawing/ParallelChannelSeries.js +0 -6
  40. package/.internal/charts/stock/drawing/ParallelChannelSeries.js.map +1 -1
  41. package/.internal/charts/stock/drawing/RectangleSeries.d.ts +0 -1
  42. package/.internal/charts/stock/drawing/RectangleSeries.d.ts.map +1 -1
  43. package/.internal/charts/stock/drawing/RectangleSeries.js +0 -6
  44. package/.internal/charts/stock/drawing/RectangleSeries.js.map +1 -1
  45. package/.internal/charts/stock/indicators/VolumeProfile.d.ts.map +1 -1
  46. package/.internal/charts/stock/indicators/VolumeProfile.js +25 -3
  47. package/.internal/charts/stock/indicators/VolumeProfile.js.map +1 -1
  48. package/.internal/charts/stock/toolbar/ColorControl.d.ts +2 -0
  49. package/.internal/charts/stock/toolbar/ColorControl.d.ts.map +1 -1
  50. package/.internal/charts/stock/toolbar/ColorControl.js +22 -0
  51. package/.internal/charts/stock/toolbar/ColorControl.js.map +1 -1
  52. package/.internal/charts/stock/toolbar/DateRangeSelector.d.ts.map +1 -1
  53. package/.internal/charts/stock/toolbar/DateRangeSelector.js +2 -1
  54. package/.internal/charts/stock/toolbar/DateRangeSelector.js.map +1 -1
  55. package/.internal/charts/stock/toolbar/DrawingControl.d.ts +10 -0
  56. package/.internal/charts/stock/toolbar/DrawingControl.d.ts.map +1 -1
  57. package/.internal/charts/stock/toolbar/DrawingControl.js +49 -5
  58. package/.internal/charts/stock/toolbar/DrawingControl.js.map +1 -1
  59. package/.internal/charts/stock/toolbar/Dropdown.d.ts +2 -0
  60. package/.internal/charts/stock/toolbar/Dropdown.d.ts.map +1 -1
  61. package/.internal/charts/stock/toolbar/Dropdown.js +8 -0
  62. package/.internal/charts/stock/toolbar/Dropdown.js.map +1 -1
  63. package/.internal/charts/stock/toolbar/DropdownColors.d.ts +3 -0
  64. package/.internal/charts/stock/toolbar/DropdownColors.d.ts.map +1 -1
  65. package/.internal/charts/stock/toolbar/DropdownColors.js +58 -0
  66. package/.internal/charts/stock/toolbar/DropdownColors.js.map +1 -1
  67. package/.internal/charts/stock/toolbar/DropdownList.d.ts +4 -0
  68. package/.internal/charts/stock/toolbar/DropdownList.d.ts.map +1 -1
  69. package/.internal/charts/stock/toolbar/DropdownList.js +72 -0
  70. package/.internal/charts/stock/toolbar/DropdownList.js.map +1 -1
  71. package/.internal/charts/stock/toolbar/DropdownListControl.d.ts +1 -0
  72. package/.internal/charts/stock/toolbar/DropdownListControl.d.ts.map +1 -1
  73. package/.internal/charts/stock/toolbar/DropdownListControl.js +21 -0
  74. package/.internal/charts/stock/toolbar/DropdownListControl.js.map +1 -1
  75. package/.internal/charts/stock/toolbar/PeriodSelector.d.ts +2 -0
  76. package/.internal/charts/stock/toolbar/PeriodSelector.d.ts.map +1 -1
  77. package/.internal/charts/stock/toolbar/PeriodSelector.js +54 -3
  78. package/.internal/charts/stock/toolbar/PeriodSelector.js.map +1 -1
  79. package/.internal/charts/stock/toolbar/StockControl.d.ts +2 -0
  80. package/.internal/charts/stock/toolbar/StockControl.d.ts.map +1 -1
  81. package/.internal/charts/stock/toolbar/StockControl.js +29 -0
  82. package/.internal/charts/stock/toolbar/StockControl.js.map +1 -1
  83. package/.internal/charts/stock/toolbar/StockToolbar.d.ts +10 -0
  84. package/.internal/charts/stock/toolbar/StockToolbar.d.ts.map +1 -1
  85. package/.internal/charts/stock/toolbar/StockToolbar.js.map +1 -1
  86. package/.internal/charts/wordcloud/WordCloud.d.ts +2 -0
  87. package/.internal/charts/wordcloud/WordCloud.d.ts.map +1 -1
  88. package/.internal/charts/wordcloud/WordCloud.js.map +1 -1
  89. package/.internal/charts/xy/XYChart.d.ts.map +1 -1
  90. package/.internal/charts/xy/XYChart.js +2 -0
  91. package/.internal/charts/xy/XYChart.js.map +1 -1
  92. package/.internal/charts/xy/axes/Axis.d.ts +1 -0
  93. package/.internal/charts/xy/axes/Axis.d.ts.map +1 -1
  94. package/.internal/charts/xy/axes/Axis.js +12 -5
  95. package/.internal/charts/xy/axes/Axis.js.map +1 -1
  96. package/.internal/charts/xy/axes/AxisRenderer.d.ts.map +1 -1
  97. package/.internal/charts/xy/axes/AxisRenderer.js +2 -4
  98. package/.internal/charts/xy/axes/AxisRenderer.js.map +1 -1
  99. package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
  100. package/.internal/charts/xy/axes/DateAxis.js +7 -0
  101. package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
  102. package/.internal/charts/xy/series/XYSeries.d.ts +4 -0
  103. package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
  104. package/.internal/charts/xy/series/XYSeries.js +44 -2
  105. package/.internal/charts/xy/series/XYSeries.js.map +1 -1
  106. package/.internal/core/Classes.d.ts +4 -0
  107. package/.internal/core/Classes.d.ts.map +1 -1
  108. package/.internal/core/Classes.js.map +1 -1
  109. package/.internal/core/Registry.js +1 -1
  110. package/.internal/core/Registry.js.map +1 -1
  111. package/.internal/core/Root.d.ts.map +1 -1
  112. package/.internal/core/Root.js +18 -5
  113. package/.internal/core/Root.js.map +1 -1
  114. package/.internal/core/render/Container.d.ts +0 -2
  115. package/.internal/core/render/Container.d.ts.map +1 -1
  116. package/.internal/core/render/Container.js.map +1 -1
  117. package/.internal/core/render/HeatLegend.js +1 -1
  118. package/.internal/core/render/HeatLegend.js.map +1 -1
  119. package/.internal/core/render/Series.d.ts +5 -0
  120. package/.internal/core/render/Series.d.ts.map +1 -1
  121. package/.internal/core/render/Series.js +35 -4
  122. package/.internal/core/render/Series.js.map +1 -1
  123. package/.internal/core/render/Sprite.d.ts +1 -1
  124. package/.internal/core/render/Sprite.d.ts.map +1 -1
  125. package/.internal/core/render/Sprite.js +6 -2
  126. package/.internal/core/render/Sprite.js.map +1 -1
  127. package/.internal/core/render/ZoomTools.d.ts +47 -0
  128. package/.internal/core/render/ZoomTools.d.ts.map +1 -0
  129. package/.internal/core/render/ZoomTools.js +102 -0
  130. package/.internal/core/render/ZoomTools.js.map +1 -0
  131. package/.internal/core/render/ZoomableContainer.d.ts +116 -0
  132. package/.internal/core/render/ZoomableContainer.d.ts.map +1 -0
  133. package/.internal/core/render/ZoomableContainer.js +309 -0
  134. package/.internal/core/render/ZoomableContainer.js.map +1 -0
  135. package/.internal/core/render/backend/CanvasRenderer.js +1 -1
  136. package/.internal/core/render/backend/CanvasRenderer.js.map +1 -1
  137. package/.internal/core/util/Accessibility.d.ts +8 -0
  138. package/.internal/core/util/Accessibility.d.ts.map +1 -1
  139. package/.internal/core/util/Accessibility.js.map +1 -1
  140. package/.internal/core/util/Animation.d.ts +7 -2
  141. package/.internal/core/util/Animation.d.ts.map +1 -1
  142. package/.internal/core/util/Animation.js +10 -4
  143. package/.internal/core/util/Animation.js.map +1 -1
  144. package/.internal/core/util/Entity.d.ts +2 -3
  145. package/.internal/core/util/Entity.d.ts.map +1 -1
  146. package/.internal/core/util/Entity.js +25 -19
  147. package/.internal/core/util/Entity.js.map +1 -1
  148. package/.internal/core/util/Time.d.ts.map +1 -1
  149. package/.internal/core/util/Time.js +8 -1
  150. package/.internal/core/util/Time.js.map +1 -1
  151. package/.internal/plugins/json/Classes-script.d.ts +4 -0
  152. package/.internal/plugins/json/Classes-script.d.ts.map +1 -1
  153. package/.internal/plugins/json/Classes-script.js +2 -0
  154. package/.internal/plugins/json/Classes-script.js.map +1 -1
  155. package/.internal/plugins/json/Classes.d.ts +4 -0
  156. package/.internal/plugins/json/Classes.d.ts.map +1 -1
  157. package/.internal/plugins/json/Classes.js +2 -0
  158. package/.internal/plugins/json/Classes.js.map +1 -1
  159. package/.internal/themes/DefaultTheme.d.ts.map +1 -1
  160. package/.internal/themes/DefaultTheme.js +46 -0
  161. package/.internal/themes/DefaultTheme.js.map +1 -1
  162. package/CHANGELOG.md +44 -0
  163. package/examples/javascript/flow-arc-horizontal/package.json +1 -1
  164. package/examples/javascript/flow-arc-vertical/package.json +1 -1
  165. package/examples/javascript/flow-chord/package.json +1 -1
  166. package/examples/javascript/flow-chord-directed/package.json +1 -1
  167. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  168. package/examples/javascript/flow-sankey/package.json +1 -1
  169. package/examples/javascript/gauge/package.json +1 -1
  170. package/examples/javascript/gauge-bands/package.json +1 -1
  171. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  172. package/examples/javascript/hierarchy-pack/package.json +1 -1
  173. package/examples/javascript/hierarchy-partition/package.json +1 -1
  174. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  175. package/examples/javascript/hierarchy-tree/package.json +1 -1
  176. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  177. package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
  178. package/examples/javascript/jest/package.json +1 -1
  179. package/examples/javascript/json-pie/package.json +1 -1
  180. package/examples/javascript/json-xy/package.json +1 -1
  181. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  182. package/examples/javascript/map-clustered-points/package.json +1 -1
  183. package/examples/javascript/map-day-and-night/package.json +1 -1
  184. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  185. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  186. package/examples/javascript/map-with-bubbles/package.json +1 -1
  187. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  188. package/examples/javascript/misc-40-charts/package.json +1 -1
  189. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  190. package/examples/javascript/pie-chart/package.json +1 -1
  191. package/examples/javascript/pie-donut-chart/package.json +1 -1
  192. package/examples/javascript/pie-variable-radius/package.json +1 -1
  193. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  194. package/examples/javascript/radar-heat-map/package.json +1 -1
  195. package/examples/javascript/radar-line/package.json +1 -1
  196. package/examples/javascript/radar-time-line/package.json +1 -1
  197. package/examples/javascript/sliced-funnel/package.json +1 -1
  198. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  199. package/examples/javascript/sliced-pyramid/package.json +1 -1
  200. package/examples/javascript/stock-chart/index.js +1 -1
  201. package/examples/javascript/stock-chart/package.json +1 -1
  202. package/examples/javascript/stock-chart-comparing-stocks/index.js +1 -1
  203. package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
  204. package/examples/javascript/stock-chart-data-granularity/index.js +1 -1
  205. package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
  206. package/examples/javascript/stock-chart-data-grouping/index.js +1 -1
  207. package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
  208. package/examples/javascript/stock-chart-intraday/index.js +1 -1
  209. package/examples/javascript/stock-chart-intraday/package.json +1 -1
  210. package/examples/javascript/stock-chart-live/index.js +1 -0
  211. package/examples/javascript/stock-chart-live/package.json +1 -1
  212. package/examples/javascript/stock-chart-volume-separate-panel/index.js +1 -1
  213. package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
  214. package/examples/javascript/venn-diagram/package.json +1 -1
  215. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  216. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  217. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  218. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  219. package/examples/javascript/xy-bubble/package.json +1 -1
  220. package/examples/javascript/xy-candlestick/package.json +1 -1
  221. package/examples/javascript/xy-clustered-column/package.json +1 -1
  222. package/examples/javascript/xy-column/package.json +1 -1
  223. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  224. package/examples/javascript/xy-data-grouping/package.json +1 -1
  225. package/examples/javascript/xy-draggable-range/package.json +1 -1
  226. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  227. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  228. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  229. package/examples/javascript/xy-line/package.json +1 -1
  230. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  231. package/examples/javascript/xy-live-data/package.json +1 -1
  232. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  233. package/examples/javascript/xy-ohlc/package.json +1 -1
  234. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  235. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  236. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  237. package/examples/javascript/xy-stacked-column/package.json +1 -1
  238. package/examples/javascript/xy-stacked-step/package.json +1 -1
  239. package/examples/javascript/xy-stock/package.json +1 -1
  240. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  241. package/examples/typescript/flow-arc-horizontal/package.json +1 -1
  242. package/examples/typescript/flow-arc-vertical/package.json +1 -1
  243. package/examples/typescript/flow-chord/package.json +1 -1
  244. package/examples/typescript/flow-chord-directed/package.json +1 -1
  245. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  246. package/examples/typescript/flow-sankey/package.json +1 -1
  247. package/examples/typescript/gauge/package.json +1 -1
  248. package/examples/typescript/gauge-bands/package.json +1 -1
  249. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  250. package/examples/typescript/hierarchy-pack/package.json +1 -1
  251. package/examples/typescript/hierarchy-partition/package.json +1 -1
  252. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  253. package/examples/typescript/hierarchy-tree/package.json +1 -1
  254. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  255. package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
  256. package/examples/typescript/jest/package.json +1 -1
  257. package/examples/typescript/json-pie/package.json +1 -1
  258. package/examples/typescript/json-xy/package.json +1 -1
  259. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  260. package/examples/typescript/map-clustered-points/package.json +1 -1
  261. package/examples/typescript/map-day-and-night/package.json +1 -1
  262. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  263. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  264. package/examples/typescript/map-with-bubbles/package.json +1 -1
  265. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  266. package/examples/typescript/misc-40-charts/package.json +1 -1
  267. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  268. package/examples/typescript/pie-chart/package.json +1 -1
  269. package/examples/typescript/pie-donut-chart/package.json +1 -1
  270. package/examples/typescript/pie-variable-radius/package.json +1 -1
  271. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  272. package/examples/typescript/radar-heat-map/package.json +1 -1
  273. package/examples/typescript/radar-line/package.json +1 -1
  274. package/examples/typescript/radar-time-line/package.json +1 -1
  275. package/examples/typescript/sliced-funnel/package.json +1 -1
  276. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  277. package/examples/typescript/sliced-pyramid/package.json +1 -1
  278. package/examples/typescript/stock-chart/index.ts +1 -1
  279. package/examples/typescript/stock-chart/package.json +1 -1
  280. package/examples/typescript/stock-chart-comparing-stocks/index.ts +1 -1
  281. package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
  282. package/examples/typescript/stock-chart-data-granularity/index.ts +1 -1
  283. package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
  284. package/examples/typescript/stock-chart-data-grouping/index.ts +1 -1
  285. package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
  286. package/examples/typescript/stock-chart-intraday/index.ts +1 -1
  287. package/examples/typescript/stock-chart-intraday/package.json +1 -1
  288. package/examples/typescript/stock-chart-live/index.ts +1 -0
  289. package/examples/typescript/stock-chart-live/package.json +1 -1
  290. package/examples/typescript/stock-chart-volume-separate-panel/index.ts +1 -1
  291. package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
  292. package/examples/typescript/venn-diagram/package.json +1 -1
  293. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  294. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  295. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  296. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  297. package/examples/typescript/xy-bubble/package.json +1 -1
  298. package/examples/typescript/xy-candlestick/package.json +1 -1
  299. package/examples/typescript/xy-clustered-column/package.json +1 -1
  300. package/examples/typescript/xy-column/package.json +1 -1
  301. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  302. package/examples/typescript/xy-data-grouping/package.json +1 -1
  303. package/examples/typescript/xy-draggable-range/package.json +1 -1
  304. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  305. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  306. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  307. package/examples/typescript/xy-line/package.json +1 -1
  308. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  309. package/examples/typescript/xy-live-data/package.json +1 -1
  310. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  311. package/examples/typescript/xy-ohlc/package.json +1 -1
  312. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  313. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  314. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  315. package/examples/typescript/xy-stacked-column/package.json +1 -1
  316. package/examples/typescript/xy-stacked-step/package.json +1 -1
  317. package/examples/typescript/xy-stock/package.json +1 -1
  318. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  319. package/index.d.ts +2 -0
  320. package/index.d.ts.map +1 -1
  321. package/index.js +2 -0
  322. package/index.js.map +1 -1
  323. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../../../../src/.internal/core/util/Entity.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Root } from \"../Root\";\nimport type { Template, ApplyState } from \"./Template\";\nimport type { Theme, IRule } from \"../Theme\";\nimport type { ILocale } from \"./Language\";\n\nimport { IDisposer, Disposer } from \"./Disposer\";\nimport { EventDispatcher, Events } from \"./EventDispatcher\";\nimport { Time, IAnimation, getInterpolate } from \"./Animation\";\nimport { States } from \"./States\";\nimport { registry } from \"../Registry\";\n\nimport * as $object from \"./Object\";\nimport * as $ease from \"./Ease\";\nimport * as $array from \"./Array\";\nimport * as $order from \"./Order\";\n\n/**\n * @ignore\n */\nexport type Dirty<A> = { [K in keyof A]?: boolean };\n\n\n/**\n * Allows to dynamically modify setting value of its target element.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/adapters/} for more info\n */\nexport class Adapters<E extends Settings> {\n\tprivate _entity: E;\n\tprivate _callbacks: { [K in keyof E[\"_settings\"]]?: Array<<O extends E>(value: O[\"_settings\"][K], target: O, key: K) => O[\"_settings\"][K]> } = {};\n\tprivate _disabled: { [K in keyof E[\"_settings\"]]?: boolean } = {};\n\n\tconstructor(entity: E) {\n\t\tthis._entity = entity;\n\t}\n\n\t/**\n\t * Add a function (`callback`) that will modify value for setting `key`.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/adapters/} for more info\n\t */\n\tpublic add<Key extends keyof E[\"_settings\"]>(key: Key, callback: (value: E[\"_settings\"][Key], target: E, key: Key) => E[\"_settings\"][Key]): IDisposer {\n\t\tlet callbacks = this._callbacks[key];\n\n\t\tif (callbacks === undefined) {\n\t\t\tcallbacks = this._callbacks[key] = [];\n\t\t}\n\n\t\tcallbacks.push(callback);\n\n\t\tthis._entity._markDirtyKey(key);\n\n\t\treturn new Disposer(() => {\n\t\t\tif ($array.removeFirst(callbacks!, callback)) {\n\t\t\t\tthis._entity._markDirtyKey(key);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Removes all adapters for the specific key.\n\t *\n\t * @since 5.1.0\n\t */\n\tpublic remove<Key extends keyof E[\"_settings\"]>(key: Key) {\n\t\tconst callbacks = this._callbacks[key];\n\n\t\tif (callbacks !== undefined) {\n\t\t\tdelete this._callbacks[key];\n\n\t\t\tif (callbacks.length !== 0) {\n\t\t\t\tthis._entity._markDirtyKey(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Enables (previously disabled) adapters for specific key.\n\t *\n\t * @since 5.1.0\n\t */\n\tpublic enable<Key extends keyof E[\"_settings\"]>(key: Key) {\n\t\tif (this._disabled[key]) {\n\t\t\tdelete this._disabled[key];\n\t\t\tthis._entity._markDirtyKey(key);\n\t\t}\n\t}\n\n\t/**\n\t * Disables all adapters for specific key.\n\t *\n\t * @since 5.1.0\n\t */\n\tpublic disable<Key extends keyof E[\"_settings\"]>(key: Key) {\n\t\tif (!this._disabled[key]) {\n\t\t\tthis._disabled[key] = true;\n\t\t\tthis._entity._markDirtyKey(key);\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic fold<Key extends keyof E[\"_settings\"]>(key: Key, value: E[\"_settings\"][Key]): E[\"_settings\"][Key] {\n\t\tif (!this._disabled[key]) {\n\t\t\tconst callbacks = this._callbacks[key];\n\n\t\t\tif (callbacks !== undefined) {\n\t\t\t\tfor (let i = 0, len = callbacks.length; i < len; ++i) {\n\t\t\t\t\tvalue = callbacks[i](value, this._entity, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t}\n}\n\n\nexport interface IEntitySettings {\n\n\t/**\n\t * Tags which can be used by the theme rules.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\n\t */\n\tthemeTags?: Array<string>;\n\n\t/**\n\t * Tags which can be used by the theme rules.\n\t *\n\t * These tags only apply to this object, not any children.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\n\t */\n\tthemeTagsSelf?: Array<string>;\n\n\t/**\n\t * A list of themes applied to the element.\n\t */\n\tthemes?: Array<Theme>;\n\n\n\t/**\n\t * Duration of transition from one state to another.\n\t */\n\tstateAnimationDuration?:number;\n\n\t/**\n\t * Easing of transition from one state to another.\n\t */\n\tstateAnimationEasing?:$ease.Easing;\n\n\t/**\n\t * A custom string ID for the element.\n\t *\n\t * If set, element can be looked up via `am5.registry.entitiesById`.\n\t *\n\t * Will raise error if an element with the same ID already exists.\n\t */\n\tid?: string;\n\n\t/**\n\t * A storage for any custom user data that needs to be associated with the\n\t * element.\n\t */\n\tuserData?: any;\n\n}\n\nexport interface IEntityPrivate {\n}\n\nexport interface IEntityEvents {\n}\n\n/**\n * Animation options.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/} for more info\n */\nexport interface AnimationOptions<Key, Value> {\n\n\t/**\n\t * A setting key to animate value for.\n\t */\n\tkey: Key,\n\n\t/**\n\t * Initial value to animate from. If not set, will use current value.\n\t */\n\tfrom?: Value;\n\n\t/**\n\t * Target value to animate to.\n\t */\n\tto: Value;\n\n\t/**\n\t * Animation duration in milliseconds.\n\t */\n\tduration: number;\n\n\t/**\n\t * Easing function. Defaults to linear.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/#Easing_functions} for more info\n\t */\n\teasing?: $ease.Easing;\n\n\t/**\n\t * How many times to play the animation. Defaults to 1.\n\t */\n\tloops?: number;\n}\n\nexport interface IAnimationEvents {\n\t/**\n\t * Invoked when animation was stopped, which happens in these situations:\n\t * 1. When the animation reached the end.\n\t * 2. When the `stop()` method is called.\n\t * 3. When a new animation starts for the same key.\n\t * 4. When calling `set` for the same key.\n\t */\n\tstopped: {};\n}\n\n/**\n * Animation object.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/} for more info\n */\nexport class Animation<Value> {\n\tprivate _animation: IStartAnimation;\n\tprivate _from: Value;\n\tprivate _to: Value;\n\tprivate _duration: number;\n\tprivate _easing: $ease.Easing;\n\tprivate _loops: number;\n\tprivate _interpolate: <A extends Value>(diff: Time, from: A, to: A) => A;\n\tprivate _oldTime: number | null;\n\tprivate _time: number = 0;\n\n\tpublic _stopped: boolean = false;\n\tpublic _playing: boolean = true;\n\n\tpublic events: EventDispatcher<Events<this, IAnimationEvents>> = new EventDispatcher();\n\n\tconstructor(animation: IStartAnimation, from: Value, to: Value, duration: number, easing: $ease.Easing, loops: number, startingTime: number | null) {\n\t\tthis._animation = animation;\n\t\tthis._from = from;\n\t\tthis._to = to;\n\t\tthis._duration = duration;\n\t\tthis._easing = easing;\n\t\tthis._loops = loops;\n\t\tthis._interpolate = getInterpolate(from, to);\n\t\tthis._oldTime = startingTime;\n\t}\n\n\tpublic get to() {\n\t\treturn this._to;\n\t}\n\n\tpublic get from() {\n\t\treturn this._from;\n\t}\n\n\tpublic get playing() {\n\t\treturn this._playing;\n\t}\n\n\tpublic get stopped() {\n\t\treturn this._stopped;\n\t}\n\n\tpublic stop(): void {\n\t\tif (!this._stopped) {\n\t\t\tthis._stopped = true;\n\t\t\tthis._playing = false;\n\n\t\t\tif (this.events.isEnabled(\"stopped\")) {\n\t\t\t\tthis.events.dispatch(\"stopped\", {\n\t\t\t\t\ttype: \"stopped\",\n\t\t\t\t\ttarget: this,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic pause(): void {\n\t\tthis._playing = false;\n\t\tthis._oldTime = null;\n\t}\n\n\tpublic play(): void {\n\t\tif (!this._stopped && !this._playing) {\n\t\t\tthis._playing = true;\n\t\t\tthis._animation._startAnimation();\n\t\t}\n\t}\n\n\tpublic get percentage(): Time {\n\t\treturn this._time / this._duration;\n\t}\n\n\tpublic waitForStop(): Promise<void> {\n\t\treturn new Promise((resolve, _reject) => {\n\t\t\tif (this._stopped) {\n\t\t\t\tresolve();\n\n\t\t\t} else {\n\t\t\t\tconst listener = () => {\n\t\t\t\t\tstopped.dispose();\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\n\t\t\t\tconst stopped = this.events.on(\"stopped\", listener);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic _checkEnded(): boolean {\n\t\tif (this._loops > 1) {\n\t\t\t--this._loops;\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic _run(currentTime: number): void {\n\t\tif (this._oldTime !== null) {\n\t\t\tthis._time += currentTime - this._oldTime;\n\n\t\t\tif (this._time > this._duration) {\n\t\t\t\tthis._time = this._duration;\n\t\t\t}\n\t\t}\n\n\t\tthis._oldTime = currentTime;\n\t}\n\n\tpublic _reset(currentTime: number): void {\n\t\tthis._oldTime = currentTime;\n\t\tthis._time = 0;\n\t}\n\n\tpublic _value(diff: Time): Value {\n\t\treturn this._interpolate(this._easing(diff), this._from, this._to);\n\t}\n}\n\ntype Animated<P> = { [K in keyof P]?: Animation<P[K]> };\n\n\ninterface IStartAnimation {\n\t_startAnimation(): void;\n}\n\n\n/**\n * @ignore\n */\nlet counter = 0;\n\n/**\n * Base class for [[Entity]] objects that support Settings.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n */\nexport abstract class Settings implements IDisposer, IAnimation, IStartAnimation {\n\n\t/**\n\t * Unique ID.\n\t */\n\tpublic uid: number = ++counter;\n\n\tpublic _settings: {};\n\tpublic _privateSettings: {} = {};\n\n\tpublic _settingEvents: { [K in keyof this[\"_settings\"]]?: Array<<V extends this[\"_settings\"][K], O extends this>(value: V, target?: O, key?: K) => void> } = {};\n\tpublic _privateSettingEvents: { [K in keyof this[\"_settings\"]]?: Array<<V extends this[\"_settings\"][K], O extends this>(value: V, target?: O, key?: K) => void> } = {};\n\n\tpublic _prevSettings: this[\"_settings\"] = {};\n\tpublic _prevPrivateSettings: this[\"_privateSettings\"] = {};\n\n\tprotected _animatingSettings: Animated<this[\"_settings\"]> = {};\n\tprotected _animatingPrivateSettings: Animated<this[\"_privateSettings\"]> = {};\n\n\tprivate _playingAnimations: number = 0;\n\tprivate _disposed: boolean = false;\n\n\t// TODO move this into Entity\n\tprotected _userProperties: Dirty<this[\"_settings\"]> = {};\n\n\tconstructor(settings: Settings[\"_settings\"]) {\n\t\tthis._settings = settings;\n\t}\n\n\tprotected _checkDirty(): void {\n\t\t$object.keys(this._settings).forEach((key) => {\n\t\t\t(this._userProperties as any)[key] = true;\n\t\t\tthis._markDirtyKey(key);\n\t\t});\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic resetUserSettings(){\n\t\tthis._userProperties = {};\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic abstract markDirty(): void;\n\n\tpublic _runAnimation(currentTime: number): boolean {\n\t\tif (!this.isDisposed()) {\n\t\t\t$object.each(this._animatingSettings, (key, animation) => {\n\t\t\t\tif (animation._stopped) {\n\t\t\t\t\tthis._stopAnimation(key);\n\n\t\t\t\t} else if (animation._playing) {\n\t\t\t\t\tanimation._run(currentTime);\n\n\t\t\t\t\tconst diff = animation.percentage;\n\n\t\t\t\t\tif (diff >= 1) {\n\t\t\t\t\t\tif (animation._checkEnded()) {\n\t\t\t\t\t\t\tthis.set(key, animation._value(1));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tanimation._reset(currentTime);\n\t\t\t\t\t\t\tthis._set(key, animation._value(1));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._set(key, animation._value(diff));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$object.each(this._animatingPrivateSettings, (key, animation) => {\n\t\t\t\tif (animation._stopped) {\n\t\t\t\t\tthis._stopAnimationPrivate(key);\n\n\t\t\t\t} else if (animation._playing) {\n\t\t\t\t\tanimation._run(currentTime);\n\n\t\t\t\t\tconst diff = animation.percentage;\n\n\t\t\t\t\tif (diff >= 1) {\n\t\t\t\t\t\tif (animation._checkEnded()) {\n\t\t\t\t\t\t\tthis.setPrivate(key, animation._value(1));\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tanimation._reset(currentTime);\n\t\t\t\t\t\t\tthis._setPrivate(key, animation._value(1));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._setPrivate(key, animation._value(diff));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn this._playingAnimations !== 0;\n\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic abstract _startAnimation(): void;\n\tprotected abstract _animationTime(): number | null;\n\n\tpublic _markDirtyKey<Key extends keyof this[\"_settings\"]>(_key: Key) {\n\t\tthis.markDirty();\n\t}\n\n\tpublic _markDirtyPrivateKey<Key extends keyof this[\"_privateSettings\"]>(_key: Key) {\n\t\tthis.markDirty();\n\t}\n\n\t/**\n\t * Sets a callback function to invoke when specific key of settings changes\n\t * or is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\n\t * @param key Settings key\n\t * @param callback Callback\n\t * @return Disposer for event\n\t */\n\tpublic on<Key extends keyof this[\"_settings\"]>(key: Key, callback: (value: this[\"_settings\"][Key], target?: this, key?: Key) => void): IDisposer {\n\t\tlet events = this._settingEvents[key];\n\n\t\tif (events === undefined) {\n\t\t\tevents = this._settingEvents[key] = [];\n\t\t}\n\n\t\tevents.push(callback);\n\n\t\treturn new Disposer(() => {\n\t\t\t$array.removeFirst(events!, callback);\n\n\t\t\tif (events!.length === 0) {\n\t\t\t\tdelete this._settingEvents[key];\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Sets a callback function to invoke when specific key of private settings\n\t * changes or is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\n\t * @ignore\n\t * @param key Private settings key\n\t * @param callback Callback\n\t * @return Disposer for event\n\t */\n\tpublic onPrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key, callback: (value: this[\"_privateSettings\"][Key], target?: this, key?: Key) => void): IDisposer {\n\t\tlet events = this._privateSettingEvents[key];\n\n\t\tif (events === undefined) {\n\t\t\tevents = this._privateSettingEvents[key] = [];\n\t\t}\n\n\t\tevents.push(callback);\n\n\t\treturn new Disposer(() => {\n\t\t\t$array.removeFirst(events!, callback);\n\n\t\t\tif (events!.length === 0) {\n\t\t\t\tdelete this._privateSettingEvents[key];\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getRaw<Key extends keyof this[\"_settings\"], F>(key: Key, fallback: F): NonNullable<this[\"_settings\"][Key]> | F;\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getRaw<Key extends keyof this[\"_settings\"]>(key: Key): this[\"_settings\"][Key];\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getRaw<Key extends keyof this[\"_settings\"]>(key: Key, fallback?: any): any {\n\t\tconst value = (<any>this._settings)[key];\n\n\t\tif (value !== undefined) {\n\t\t\treturn value;\n\n\t\t} else {\n\t\t\treturn fallback;\n\t\t}\n\t}\n\n\t/**\n\t * Returns settings value for the specified `key`.\n\t *\n\t * If there is no value, `fallback` is returned instead (if set).\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Settings value\n\t * @param callback Fallback value\n\t * @return {any} Value\n\t */\n\tpublic get<Key extends keyof this[\"_settings\"], F>(key: Key, fallback: F): NonNullable<this[\"_settings\"][Key]> | F;\n\tpublic get<Key extends keyof this[\"_settings\"]>(key: Key): this[\"_settings\"][Key];\n\tpublic get<Key extends keyof this[\"_settings\"]>(key: Key, fallback?: any): any {\n\t\treturn this.getRaw(key, fallback);\n\t}\n\n\tprotected _sendKeyEvent<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value): void {\n\t\tconst events = this._settingEvents[key];\n\n\t\tif (events !== undefined) {\n\t\t\t$array.each(events!, (callback) => {\n\t\t\t\tcallback(value, this, key);\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected _sendPrivateKeyEvent<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value): void {\n\t\tconst events = this._privateSettingEvents[key];\n\n\t\tif (events !== undefined) {\n\t\t\t$array.each(events!, (callback) => {\n\t\t\t\tcallback(value, this, key);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tprivate _setRaw<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, old: Value, value: Value) {\n\t\tthis._prevSettings[key] = old;\n\t\tthis._sendKeyEvent(key, value);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setRaw<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value) {\n\t\tconst old = (<any>this._settings)[key];\n\n\t\t(<any>this._settings)[key] = value;\n\n\t\tif (old !== value) {\n\t\t\tthis._setRaw(key, old, value);\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tprivate _set<Key extends keyof this[\"_settings\"]>(key: Key, value: this[\"_settings\"][Key]) {\n\t\tconst old = (<any>this._settings)[key];\n\n\t\t(<any>this._settings)[key] = value;\n\n\t\tif (old !== value) {\n\t\t\tthis._setRaw(key, old, value);\n\t\t\tthis._markDirtyKey(key);\n\t\t}\n\t}\n\n\n\tprotected _stopAnimation<Key extends keyof this[\"_settings\"]>(key: Key): void {\n\t\tconst animation = this._animatingSettings[key];\n\n\t\tif (animation) {\n\t\t\t--this._playingAnimations;\n\t\t\tdelete this._animatingSettings[key];\n\t\t\tanimation.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Sets a setting `value` for the specified `key`, and returns the same `value`.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Setting key\n\t * @param value Setting value\n\t * @return Setting value\n\t */\n\tpublic set<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value): Value {\n\t\tthis._set(key, value);\n\t\tthis._stopAnimation(key);\n\t\treturn value;\n\t}\n\n\t/**\n\t * Removes a setting value for the specified `key`;\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Setting key\n\t */\n\tpublic remove<Key extends keyof this[\"_settings\"]>(key: Key): void {\n\t\tif (key in this._settings) {\n\t\t\tthis._prevSettings[key] = (<any>this._settings)[key];\n\n\t\t\tdelete (<any>this._settings)[key];\n\n\t\t\tthis._sendKeyEvent(key, undefined as any);\n\t\t\tthis._markDirtyKey(key);\n\t\t}\n\n\t\tthis._stopAnimation(key);\n\t}\n\n\t/**\n\t * Removes all keys;\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t */\n\tpublic removeAll(): void {\n\t\t$array.each($object.keys(this._settings), (key) => {\n\t\t\tthis.remove(key);\n\t\t});\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getPrivate<Key extends keyof this[\"_privateSettings\"], F>(key: Key, fallback: F): NonNullable<this[\"_privateSettings\"][Key]> | F;\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getPrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key): this[\"_privateSettings\"][Key];\n\n\t/**\n\t * Returns a value of a private setting.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/#Private_settings} for more info\n\t */\n\tpublic getPrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key, fallback?: any): any {\n\t\tconst value = (<any>this._privateSettings)[key];\n\n\t\tif (value !== undefined) {\n\t\t\treturn value;\n\n\t\t} else {\n\t\t\treturn fallback;\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tprivate _setPrivateRaw<Key extends keyof this[\"_privateSettings\"], Value extends this[\"_privateSettings\"][Key]>(key: Key, old: Value, value: Value) {\n\t\tthis._prevPrivateSettings[key] = old;\n\t\tthis._sendPrivateKeyEvent(key, value);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setPrivateRaw<Key extends keyof this[\"_privateSettings\"], Value extends this[\"_privateSettings\"][Key]>(key: Key, value: Value) {\n\t\tconst old = (<any>this._privateSettings)[key];\n\n\t\t(<any>this._privateSettings)[key] = value;\n\n\t\tif (old !== value) {\n\t\t\tthis._setPrivateRaw(key, old, value);\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tprivate _setPrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key, value: this[\"_privateSettings\"][Key]) {\n\t\tconst old = (<any>this._privateSettings)[key];\n\n\t\t(<any>this._privateSettings)[key] = value;\n\n\t\tif (old !== value) {\n\t\t\tthis._setPrivateRaw(key, old, value);\n\t\t\tthis._markDirtyPrivateKey(key);\n\t\t}\n\t}\n\n\tprotected _stopAnimationPrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key): void {\n\t\tconst animation = this._animatingPrivateSettings[key];\n\n\t\tif (animation) {\n\t\t\t--this._playingAnimations;\n\t\t\tanimation.stop();\n\t\t\tdelete this._animatingPrivateSettings[key];\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setPrivate<Key extends keyof this[\"_privateSettings\"], Value extends this[\"_privateSettings\"][Key]>(key: Key, value: Value): Value {\n\t\tthis._setPrivate(key, value);\n\t\tthis._stopAnimationPrivate(key);\n\t\treturn value;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic removePrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key): void {\n\t\tif (key in this._privateSettings) {\n\t\t\tthis._prevPrivateSettings[key] = (<any>this._privateSettings)[key];\n\n\t\t\tdelete (<any>this._privateSettings)[key];\n\n\t\t\tthis._markDirtyPrivateKey(key);\n\t\t}\n\n\t\tthis._stopAnimationPrivate(key);\n\t}\n\n\t/**\n\t * Sets multiple settings at once.\n\t *\n\t * `settings` must be an object with key: value pairs.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param settings Settings\n\t */\n\tpublic setAll(settings: Partial<this[\"_settings\"]>) {\n\t\t$object.each(settings, (key, value) => {\n\t\t\tthis.set(key, value);\n\t\t});\n\t}\n\n\t/**\n\t * Animates setting values from current/start values to new ones.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/#Animating_settings} for more info\n\t * @param options Animation options\n\t * @return Animation object\n\t */\n\tpublic animate<Key extends keyof this[\"_settings\"]>(options: AnimationOptions<Key, this[\"_settings\"][Key]>): Animation<this[\"_settings\"][Key]> {\n\t\tconst key = options.key;\n\t\tconst to = options.to;\n\t\tconst duration = options.duration || 0;\n\t\tconst loops = options.loops || 1;\n\n\t\tconst from = (options.from === undefined ? this.get(key) : options.from);\n\t\tconst easing = (options.easing === undefined ? $ease.linear : options.easing);\n\n\t\tif (duration === 0) {\n\t\t\tthis.set(key, to);\n\n\t\t} else {\n\t\t\tif (from === undefined || from === to) {\n\t\t\t\tthis.set(key, to);\n\n\t\t\t} else {\n\t\t\t\tthis.set(key, from);\n\n\t\t\t\tconst animation = this._animatingSettings[key] = new Animation(this, from, to, duration, easing, loops, this._animationTime());\n\n\t\t\t\t++this._playingAnimations;\n\n\t\t\t\tthis._startAnimation();\n\n\t\t\t\treturn animation;\n\t\t\t}\n\t\t}\n\n\t\tconst animation = new Animation(this, from, to, duration, easing, loops, null);\n\t\tanimation.stop();\n\t\treturn animation;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic animatePrivate<Key extends keyof this[\"_privateSettings\"]>(options: AnimationOptions<Key, this[\"_privateSettings\"][Key]>): Animation<this[\"_privateSettings\"][Key]> {\n\t\tconst key = options.key;\n\t\tconst to = options.to;\n\t\tconst duration = options.duration || 0;\n\t\tconst loops = options.loops || 1;\n\n\t\tconst from = (options.from === undefined ? this.getPrivate(key) : options.from);\n\t\tconst easing = (options.easing === undefined ? $ease.linear : options.easing);\n\n\t\tif (duration === 0) {\n\t\t\tthis.setPrivate(key, to);\n\n\t\t} else {\n\t\t\tif (from === undefined || from === to) {\n\t\t\t\tthis.setPrivate(key, to);\n\n\t\t\t} else {\n\t\t\t\tthis.setPrivate(key, from);\n\n\t\t\t\tconst animation = this._animatingPrivateSettings[key] = new Animation(this, from, to, duration, easing, loops, this._animationTime());\n\n\t\t\t\t++this._playingAnimations;\n\n\t\t\t\tthis._startAnimation();\n\n\t\t\t\treturn animation;\n\t\t\t}\n\t\t}\n\n\t\tconst animation = new Animation(this, from, to, duration, easing, loops, null);\n\t\tanimation.stop();\n\t\treturn animation;\n\t}\n\n\tprotected _dispose() {}\n\n\t/**\n\t * Returns `true` if this element is disposed.\n\t *\n\t * @return Disposed\n\t */\n\tpublic isDisposed(): boolean {\n\t\treturn this._disposed;\n\t}\n\n\t/**\n\t * Disposes this object.\n\t */\n\tpublic dispose() {\n\t\tif (!this._disposed) {\n\t\t\tthis._disposed = true;\n\t\t\tthis._dispose();\n\t\t}\n\t}\n}\n\n/**\n * Base class.\n *\n * @important\n */\nexport class Entity extends Settings implements IDisposer {\n\tpublic _root: Root;\n\n\tpublic _user_id:any; // for testing purposes\n\n\tdeclare public _settings: IEntitySettings;\n\tdeclare public _privateSettings: IEntityPrivate;\n\tdeclare public _events: IEntityEvents;\n\n\tpublic states: States<this> = new States(this);\n\tpublic adapters: Adapters<this> = new Adapters(this);\n\tpublic events: EventDispatcher<Events<this, this[\"_events\"]>> = this._createEvents();\n\n\tprotected _userPrivateProperties: Dirty<this[\"_privateSettings\"]> = {};\n\n\tpublic _dirty: Dirty<this[\"_settings\"]> = {};\n\tpublic _dirtyPrivate: Dirty<this[\"_privateSettings\"]> = {};\n\n\tprotected _template: Template<this> | undefined;\n\n\t// Templates for the themes\n\tprotected _templates: Array<Template<this>> = [];\n\n\t// Internal templates which can be overridden by the user's templates\n\tprotected _internalTemplates: Array<Template<this>>;\n\n\t// Default themes which can be overridden by the user's themes\n\tpublic _defaultThemes: Array<Theme> = [];\n\n\t// Disposers for all of the templates\n\tprotected _templateDisposers: Array<IDisposer> = [];\n\n\tprotected _disposers: Array<IDisposer> = [];\n\n\t// Whether the template setup function should be run\n\tprotected _runSetup: boolean = true;\n\n\tpublic static className: string = \"Entity\";\n\tpublic static classNames: Array<string> = [\"Entity\"];\n\n\tprotected _disposerProperties: { [Key in keyof this[\"_settings\"]]?: Array<IDisposer> } = {};\n\n\t/**\n\t * IMPORTANT! Do not instantiate this class via `new Class()` syntax.\n\t *\n\t * Use static method `Class.new()` instead.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\n\t * @ignore\n\t */\n\tconstructor(root: Root, settings: Entity[\"_settings\"], isReal: boolean, templates: Array<Template<Entity>> = []) {\n\t\tsuper(settings);\n\t\tif (!isReal) {\n\t\t\tthrow new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\n\t\t}\n\t\tthis._root = root;\n\t\tthis._internalTemplates = templates as Array<Template<this>>;\n\n\t\tif (settings.id) {\n\t\t\tthis._registerId(settings.id);\n\t\t}\n\t}\n\n\t/**\n\t * Use this method to create an instance of this class.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\n\t * @param root Root element\n\t * @param settings Settings\n\t * @param template Template\n\t * @return Instantiated object\n\t */\n\tstatic new<C extends typeof Entity, T extends InstanceType<C>>(this: C, root: Root, settings: T[\"_settings\"], template?: Template<T>): T {\n\t\tconst x = (new this(root, settings, true)) as T;\n\t\tx._template = template;\n\t\tx._afterNew();\n\t\treturn x;\n\t}\n\n\tstatic _new<C extends typeof Entity, T extends InstanceType<C>>(this: C, root: Root, settings: T[\"_settings\"], templates: Array<Template<T>> = []): T {\n\t\tconst x = (new this(root, settings, true, templates)) as T;\n\t\tx._afterNew();\n\t\treturn x;\n\t}\n\n\tprotected _afterNew() {\n\t\tthis._checkDirty();\n\n\t\tlet shouldApply = false;\n\n\t\tconst template = this._template;\n\n\t\tif (template) {\n\t\t\tshouldApply = true;\n\t\t\ttemplate._setObjectTemplate(this);\n\t\t}\n\n\t\t$array.each(this._internalTemplates, (template) => {\n\t\t\tshouldApply = true;\n\t\t\ttemplate._setObjectTemplate(this);\n\t\t});\n\n\t\tif (shouldApply) {\n\t\t\tthis._applyTemplates(false);\n\t\t}\n\n\t\tthis.states.create(\"default\", {});\n\n\t\tthis._setDefaults();\n\t}\n\n\t// This is the same as _afterNew, except it also applies the themes.\n\t// This should only be used for classes which don't have a parent (because they extend from Entity and not Sprite).\n\tprotected _afterNewApplyThemes() {\n\t\tthis._checkDirty();\n\n\t\tconst template = this._template;\n\n\t\tif (template) {\n\t\t\ttemplate._setObjectTemplate(this);\n\t\t}\n\n\t\t$array.each(this._internalTemplates, (template) => {\n\t\t\ttemplate._setObjectTemplate(this);\n\t\t});\n\n\t\tthis.states.create(\"default\", {});\n\n\t\tthis._setDefaults();\n\n\t\tthis._applyThemes();\n\t}\n\n\tprotected _createEvents(): EventDispatcher<Events<this, this[\"_events\"]>> {\n\t\treturn new EventDispatcher();\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic get classNames(): Array<string> {\n\t\treturn (this.constructor as any).classNames;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic get className(): string {\n\t\treturn (this.constructor as any).className;\n\t}\n\n\tprotected _setDefaults(){\n\n\t}\n\n\tpublic _setDefault<Key extends keyof this[\"_settings\"]>(key: Key, value: this[\"_settings\"][Key]) {\n\t\tif (!(key in this._settings)) {\n\t\t\tsuper.set(key, value);\n\t\t}\n\t}\n\n\tpublic _setRawDefault<Key extends keyof this[\"_settings\"]>(key: Key, value: this[\"_settings\"][Key]) {\n\t\tif (!(key in this._settings)) {\n\t\t\tsuper.setRaw(key, value);\n\t\t}\n\t}\n\n\tpublic _clearDirty() {\n\t\t$object.keys(this._dirty).forEach((key) => {\n\t\t\tthis._dirty[key] = false;\n\t\t});\n\n\t\t$object.keys(this._dirtyPrivate).forEach((key) => {\n\t\t\tthis._dirtyPrivate[key] = false;\n\t\t});\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic isDirty<Key extends keyof this[\"_settings\"]>(key: Key): boolean {\n\t\treturn !!this._dirty[key];\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic isPrivateDirty<Key extends keyof this[\"_privateSettings\"]>(key: Key): boolean {\n\t\treturn !!this._dirtyPrivate[key];\n\t}\n\n\tpublic _markDirtyKey<Key extends keyof this[\"_settings\"]>(key: Key) {\n\t\tthis._dirty[key] = true;\n\t\tsuper._markDirtyKey(key);\n\t}\n\n\tpublic _markDirtyPrivateKey<Key extends keyof this[\"_privateSettings\"]>(key: Key) {\n\t\tthis._dirtyPrivate[key] = true;\n\t\tsuper._markDirtyKey(key);\n\t}\n\n\t/**\n\t * Checks if element is of certain class (or inherits one).\n\t *\n\t * @param type Class name to check\n\t * @return {boolean} Is of class?\n\t */\n\tpublic isType<A>(type: string): this is A {\n\t\treturn this.classNames.indexOf(type) !== -1;\n\t}\n\n\tprotected _pushPropertyDisposer<Key extends keyof this[\"_settings\"], D extends IDisposer>(key: Key, disposer: D): D {\n\t\tlet disposers = this._disposerProperties[key];\n\n\t\tif (disposers === undefined) {\n\t\t\tdisposers = this._disposerProperties[key] = [];\n\t\t}\n\n\t\tdisposers.push(disposer);\n\n\t\treturn disposer;\n\t}\n\n\tprotected _disposeProperty<Key extends keyof this[\"_settings\"]>(key: Key): void {\n\t\tconst disposers = this._disposerProperties[key];\n\n\t\tif (disposers !== undefined) {\n\t\t\t$array.each(disposers!, (disposer) => {\n\t\t\t\tdisposer.dispose();\n\t\t\t});\n\n\t\t\tdelete this._disposerProperties[key];\n\t\t}\n\t}\n\n\t/**\n\t * @todo needs description\n\t * @param value Template\n\t */\n\tpublic set template(value: Template<this> | undefined) {\n\t\tconst template = this._template;\n\n\t\tif (template !== value) {\n\t\t\tthis._template = value;\n\n\t\t\tif (template) {\n\t\t\t\ttemplate._removeObjectTemplate(this);\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tvalue._setObjectTemplate(this);\n\t\t\t}\n\n\t\t\tthis._applyTemplates();\n\t\t}\n\t}\n\n\tpublic get template(): Template<this> | undefined {\n\t\treturn this._template;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic markDirty() {\n\t\tthis._root._addDirtyEntity(this);\n\t}\n\n\tpublic _startAnimation(): void {\n\t\tthis._root._addAnimation(this);\n\t}\n\n\tprotected _animationTime(): number | null {\n\t\treturn this._root.animationTime;\n\t}\n\n\tpublic _applyState(_name: string): void { }\n\tpublic _applyStateAnimated(_name: string, _duration?: number): void { }\n\n\t/**\n\t * Returns settings value for the specified `key`.\n\t *\n\t * If there is no value, `fallback` is returned instead (if set).\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Settings value\n\t * @param callback Fallback value\n\t * @return Value\n\t */\n\tpublic get<Key extends keyof this[\"_settings\"], F>(key: Key, fallback: F): NonNullable<this[\"_settings\"][Key]> | F;\n\tpublic get<Key extends keyof this[\"_settings\"]>(key: Key): this[\"_settings\"][Key];\n\tpublic get<Key extends keyof this[\"_settings\"]>(key: Key, fallback?: any): any {\n\t\tconst value = this.adapters.fold(key, (<any>this._settings)[key]);\n\n\t\tif (value !== undefined) {\n\t\t\treturn value;\n\n\t\t} else {\n\t\t\treturn fallback;\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic isUserSetting<Key extends keyof this[\"_settings\"]>(key: Key): boolean {\n\t\treturn this._userProperties[key] || false;\n\t}\n\n\t/**\n\t * Sets a setting `value` for the specified `key`, and returns the same `value`.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Setting key\n\t * @param value Setting value\n\t * @return Setting value\n\t */\n\tpublic set<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value): Value {\n\t\tthis._userProperties[key] = true;\n\t\treturn super.set(key, value);\n\t}\n\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setRaw<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value) {\n\t\tthis._userProperties[key] = true;\n\t\tsuper.setRaw(key, value);\n\t}\n\n\t/**\n\t * Sets a setting `value` for the specified `key` only if the value for this key was not set previously using set method, and returns the same `value`.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Setting key\n\t * @param value Setting value\n\t * @return Setting value\n\t */\n\tpublic _setSoft<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value): Value {\n\t\tif(!this._userProperties[key]){\n\t\t\treturn super.set(key, value);\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Removes a setting value for the specified `key`.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Setting key\n\t */\n\tpublic remove<Key extends keyof this[\"_settings\"]>(key: Key) {\n\t\tdelete this._userProperties[key];\n\t\tthis._removeTemplateProperty(key);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setPrivate<Key extends keyof this[\"_privateSettings\"], Value extends this[\"_privateSettings\"][Key]>(key: Key, value: Value): Value {\n\t\tthis._userPrivateProperties[key] = true;\n\t\treturn super.setPrivate(key, value);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setPrivateRaw<Key extends keyof this[\"_privateSettings\"], Value extends this[\"_privateSettings\"][Key]>(key: Key, value: Value) {\n\t\tthis._userPrivateProperties[key] = true;\n\t\tsuper.setPrivateRaw(key, value);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic removePrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key) {\n\t\tdelete this._userPrivateProperties[key];\n\t\tthis._removeTemplatePrivateProperty(key);\n\t}\n\n\tpublic _setTemplateProperty<Key extends keyof this[\"_settings\"]>(template: Template<this>, key: Key, value: this[\"_settings\"][Key]) {\n\t\tif (!this._userProperties[key]) {\n\t\t\tconst match = this._findTemplateByKey(key);\n\n\t\t\tif (template === match) {\n\t\t\t\tsuper.set(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _setTemplatePrivateProperty<Key extends keyof this[\"_privateSettings\"]>(template: Template<this>, key: Key, value: this[\"_privateSettings\"][Key]) {\n\t\tif (!this._userPrivateProperties[key]) {\n\t\t\tconst match = this._findTemplateByPrivateKey(key);\n\n\t\t\tif (template === match) {\n\t\t\t\tsuper.setPrivate(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _removeTemplateProperty<Key extends keyof this[\"_settings\"]>(key: Key) {\n\t\tif (!this._userProperties[key]) {\n\t\t\tconst match = this._findTemplateByKey(key);\n\n\t\t\tif (match) {\n\t\t\t\t// TODO don't stop the animation if the property didn't change\n\t\t\t\tsuper.set(key, match._settings[key]!);\n\n\t\t\t} else {\n\t\t\t\tsuper.remove(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _removeTemplatePrivateProperty<Key extends keyof this[\"_privateSettings\"]>(key: Key) {\n\t\tif (!this._userPrivateProperties[key]) {\n\t\t\tconst match = this._findTemplateByPrivateKey(key);\n\n\t\t\tif (match) {\n\t\t\t\t// TODO don't stop the animation if the property didn't change\n\t\t\t\tsuper.setPrivate(key, match._privateSettings[key]);\n\n\t\t\t} else {\n\t\t\t\tsuper.removePrivate(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _walkParents(f: (parent: Entity) => void): void {\n\t\tf(this._root._rootContainer);\n\t\tf(this);\n\t}\n\n\t// TODO faster version of this method which is specialized to just 1 key\n\tpublic _applyStateByKey(name: string): void {\n\t\tconst other = this.states.create(name, {});\n\t\tconst seen: Dirty<this[\"_settings\"]> = {};\n\n\t\tthis._eachTemplate((template) => {\n\t\t\tconst state = template.states.lookup(name);\n\n\t\t\tif (state) {\n\t\t\t\tstate._apply(other, seen);\n\t\t\t}\n\t\t});\n\n\t\t$object.each(other._settings, (key) => {\n\t\t\tif (!seen[key] && !other._userSettings[key]) {\n\t\t\t\tother.remove(key);\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _applyTemplate(template: Template<this>, state: ApplyState<this>): void {\n\t\tthis._templateDisposers.push(template._apply(this, state));\n\n\t\t$object.each(template._settings, (key, value) => {\n\t\t\tif (!state.settings[key] && !this._userProperties[key]) {\n\t\t\t\tstate.settings[key] = true;\n\t\t\t\tsuper.set(key, value);\n\t\t\t}\n\t\t});\n\n\t\t$object.each(template._privateSettings, (key, value) => {\n\t\t\tif (!state.privateSettings[key] && !this._userPrivateProperties[key]) {\n\t\t\t\tstate.privateSettings[key] = true;\n\t\t\t\tsuper.setPrivate(key, value);\n\t\t\t}\n\t\t});\n\n\t\tif (this._runSetup && template.setup) {\n\t\t\tthis._runSetup = false;\n\t\t\ttemplate.setup(this);\n\t\t}\n\t}\n\n\t/**\n\t * Calls the closure with each template and returns the first template which is true\n\t */\n\tprotected _findStaticTemplate(f: (template: Template<this>) => boolean): Template<this> | undefined {\n\t\tif (this._template) {\n\t\t\tif (f(this._template)) {\n\t\t\t\treturn this._template;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _eachTemplate(f: (template: Template<this>) => void): void {\n\t\tthis._findStaticTemplate((template) => {\n\t\t\tf(template);\n\t\t\treturn false;\n\t\t});\n\n\t\t// _internalTemplates is sorted with most specific to the right\n\t\t$array.eachReverse(this._internalTemplates, f);\n\n\t\t// _templates is sorted with most specific to the left\n\t\t$array.each(this._templates, f);\n\t}\n\n\tpublic _applyTemplates(remove: boolean = true): void {\n\t\tif (remove) {\n\t\t\tthis._disposeTemplates();\n\t\t}\n\n\t\tconst state: ApplyState<this> = {\n\t\t\tsettings: {},\n\t\t\tprivateSettings: {},\n\t\t\tstates: {},\n\t\t};\n\n\t\tthis._eachTemplate((template) => {\n\t\t\tthis._applyTemplate(template, state);\n\t\t});\n\n\t\tif (remove) {\n\t\t\t$object.each(this._settings, (key) => {\n\t\t\t\tif (!this._userProperties[key] && !state.settings[key]) {\n\t\t\t\t\tsuper.remove(key);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$object.each(this._privateSettings, (key) => {\n\t\t\t\tif (!this._userPrivateProperties[key] && !state.privateSettings[key]) {\n\t\t\t\t\tsuper.removePrivate(key);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected _findTemplate(f: (template: Template<this>) => boolean): Template<this> | undefined {\n\t\tconst value = this._findStaticTemplate(f);\n\n\t\tif (value === undefined) {\n\t\t\t// _internalTemplates is sorted with most specific to the right\n\t\t\tconst value = $array.findReverse(this._internalTemplates, f);\n\n\t\t\tif (value === undefined) {\n\t\t\t\t// _templates is sorted with most specific to the left\n\t\t\t\treturn $array.find(this._templates, f);\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tprotected _findTemplateByKey<Key extends keyof this[\"_settings\"]>(key: Key): Template<this> | undefined {\n\t\treturn this._findTemplate((template) => {\n\t\t\treturn key in template._settings;\n\t\t});\n\t}\n\n\tprotected _findTemplateByPrivateKey<Key extends keyof this[\"_privateSettings\"]>(key: Key): Template<this> | undefined {\n\t\treturn this._findTemplate((template) => {\n\t\t\treturn key in template._privateSettings;\n\t\t});\n\t}\n\n\tprotected _disposeTemplates() {\n\t\t$array.each(this._templateDisposers, (disposer) => {\n\t\t\tdisposer.dispose();\n\t\t});\n\n\t\tthis._templateDisposers.length = 0;\n\t}\n\n\tprotected _removeTemplates() {\n\t\t$array.each(this._templates, (template) => {\n\t\t\ttemplate._removeObjectTemplate(this);\n\t\t});\n\n\t\tthis._templates.length = 0;\n\t}\n\n\tpublic _applyThemes(force: boolean = false): boolean {\n\t\tlet isConnected = false;\n\n\t\tconst defaults: Array<Array<Theme>> = [];\n\n\t\tlet themes: Array<Array<Theme>> = [];\n\n\t\tconst themeTags: Set<string> = new Set();\n\n\t\tconst tags = this.get(\"themeTagsSelf\");\n\n\t\tif (tags) {\n\t\t\t$array.each(tags, (tag) => {\n\t\t\t\tthemeTags.add(tag);\n\t\t\t});\n\t\t}\n\n\t\tthis._walkParents((entity) => {\n\t\t\tif (entity === this._root._rootContainer) {\n\t\t\t\tisConnected = true;\n\t\t\t}\n\n\t\t\tif (entity._defaultThemes.length > 0) {\n\t\t\t\tdefaults.push(entity._defaultThemes);\n\t\t\t}\n\n\t\t\tconst theme = entity.get(\"themes\");\n\n\t\t\tif (theme) {\n\t\t\t\tthemes.push(theme);\n\t\t\t}\n\n\t\t\tconst tags = entity.get(\"themeTags\");\n\n\t\t\tif (tags) {\n\t\t\t\t$array.each(tags, (tag) => {\n\t\t\t\t\tthemeTags.add(tag);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tthemes = defaults.concat(themes);\n\n\t\tthis._removeTemplates();\n\n\t\tif (isConnected || force) {\n\t\t\t$array.eachReverse(this.classNames, (name) => {\n\t\t\t\tconst allRules: Array<IRule<this>> = [];\n\n\t\t\t\t$array.each(themes, (themes) => {\n\t\t\t\t\t$array.each(themes, (theme) => {\n\t\t\t\t\t\tconst rules = theme._lookupRules<this>(name);\n\n\t\t\t\t\t\tif (rules) {\n\t\t\t\t\t\t\t$array.eachReverse(rules, (rule) => {\n\t\t\t\t\t\t\t\tconst matches = rule.tags.every((tag) => {\n\t\t\t\t\t\t\t\t\treturn themeTags.has(tag);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (matches) {\n\t\t\t\t\t\t\t\t\tconst result = $array.getFirstSortedIndex(allRules, (x) => {\n\t\t\t\t\t\t\t\t\t\tconst order = $order.compare(rule.tags.length, x.tags.length);\n\n\t\t\t\t\t\t\t\t\t\tif (order === 0) {\n\t\t\t\t\t\t\t\t\t\t\treturn $order.compareArray(rule.tags, x.tags, $order.compare);\n\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn order;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tallRules.splice(result.index, 0, rule);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t$array.each(allRules, (rule) => {\n\t\t\t\t\tthis._templates.push(rule.template);\n\t\t\t\t\trule.template._setObjectTemplate(this);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tthis._applyTemplates();\n\n\t\tif (isConnected || force) {\n\t\t\t// This causes it to only run the setup function the first time that the themes are applied\n\t\t\tthis._runSetup = false;\n\t\t}\n\n\t\treturn isConnected || force;\n\t}\n\n\tpublic _changed(): void { }\n\n\tpublic _beforeChanged(): void {\n\n\t\tif (this.isDirty(\"id\")) {\n\t\t\tconst id = this.get(\"id\")!;\n\t\t\tif (id) {\n\t\t\t\tthis._registerId(id);\n\t\t\t}\n\n\t\t\tconst prevId = this._prevSettings.id;\n\t\t\tif(prevId) {\n\t\t\t\tdelete registry.entitiesById[prevId];\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _registerId(id: string): void {\n\t\tif (registry.entitiesById[id] && registry.entitiesById[id] !== this) {\n\t\t\tthrow new Error(\"An entity with id \\\"\" + id + \"\\\" already exists.\");\n\t\t}\n\t\tregistry.entitiesById[id] = this;\n\t}\n\n\tpublic _afterChanged(): void { }\n\n\t/**\n\t * @ignore\n\t */\n\tpublic addDisposer<T extends IDisposer>(disposer: T): T {\n\t\tthis._disposers.push(disposer);\n\t\treturn disposer;\n\t}\n\n\tprotected _dispose() {\n\t\tsuper._dispose();\n\n\t\tconst template = this._template;\n\n\t\tif (template) {\n\t\t\ttemplate._removeObjectTemplate(this);\n\t\t}\n\n\t\t$array.each(this._internalTemplates, (template) => {\n\t\t\ttemplate._removeObjectTemplate(this);\n\t\t});\n\n\t\tthis._removeTemplates();\n\t\tthis._disposeTemplates();\n\n\t\tthis.events.dispose();\n\n\t\tthis._disposers.forEach((x) => {\n\t\t\tx.dispose();\n\t\t});\n\n\t\t$object.each(this._disposerProperties, (_, disposers) => {\n\t\t\t$array.each(disposers, (disposer) => {\n\t\t\t\tdisposer.dispose();\n\t\t\t});\n\t\t});\n\n\t\tconst id = this.get(\"id\")!;\n\t\tif (id) {\n\t\t\tdelete registry.entitiesById[id];\n\t\t}\n\t}\n\n\t/**\n\t * Creates and returns a \"disposable\" timeout.\n\t *\n\t * @param fn Callback\n\t * @param delay Delay in milliseconds\n\t * @return Timeout disposer\n\t */\n\tpublic setTimeout(fn: () => void, delay: number): IDisposer {\n\t\tconst id = setTimeout(() => {\n\t\t\tthis.removeDispose(disposer);\n\t\t\tfn();\n\t\t}, delay);\n\n\t\tconst disposer = new Disposer(() => {\n\t\t\tclearTimeout(id);\n\t\t});\n\n\t\tthis._disposers.push(disposer);\n\t\treturn disposer;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic removeDispose(target: IDisposer): void {\n\t\tif (!this.isDisposed()) {\n\t\t\tlet index = $array.indexOf(this._disposers, target);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._disposers.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\t\ttarget.dispose();\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic hasTag(tag: string): boolean {\n\t\treturn $array.indexOf(this.get(\"themeTags\", []), tag) !== -1;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic addTag(tag: string): void {\n\t\tif (!this.hasTag(tag)) {\n\t\t\tconst tags = (<any>this).get(\"themeTags\", []);\n\t\t\ttags.push(tag);\n\t\t\tthis.set(\"themeTags\", tags);\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic removeTag(tag: string): void {\n\t\tif (this.hasTag(tag)) {\n\t\t\tconst tags = (<any>this).get(\"themeTags\", []);\n\t\t\t$array.remove(tags, tag);\n\t\t\tthis.set(\"themeTags\", tags);\n\t\t}\n\t}\n\n\tprotected _t(text: any, locale?: ILocale, ...rest: Array<string>){\n\t\treturn this._root.language.translate(text, locale, ...rest);\n\t}\n\n\t/**\n\t * An instance of [[Root]] object.\n\t *\n\t * @readonly\n\t * @since 5.0.6\n\t * @return Root object\n\t */\n\tpublic get root(): Root {\n\t\treturn this._root;\n\t}\n\n}\n"]}
1
+ {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../../../../src/.internal/core/util/Entity.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Root } from \"../Root\";\nimport type { Template, ApplyState } from \"./Template\";\nimport type { Theme, IRule } from \"../Theme\";\nimport type { ILocale } from \"./Language\";\n\nimport { IDisposer, Disposer } from \"./Disposer\";\nimport { EventDispatcher, Events } from \"./EventDispatcher\";\nimport { Time, IAnimation, AnimationState, getInterpolate } from \"./Animation\";\nimport { States } from \"./States\";\nimport { registry } from \"../Registry\";\n\nimport * as $object from \"./Object\";\nimport * as $ease from \"./Ease\";\nimport * as $array from \"./Array\";\nimport * as $order from \"./Order\";\n\n/**\n * @ignore\n */\nexport type Dirty<A> = { [K in keyof A]?: boolean };\n\n\n/**\n * Allows to dynamically modify setting value of its target element.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/adapters/} for more info\n */\nexport class Adapters<E extends Settings> {\n\tprivate _entity: E;\n\tprivate _callbacks: { [K in keyof E[\"_settings\"]]?: Array<<O extends E>(value: O[\"_settings\"][K], target: O, key: K) => O[\"_settings\"][K]> } = {};\n\tprivate _disabled: { [K in keyof E[\"_settings\"]]?: boolean } = {};\n\n\tconstructor(entity: E) {\n\t\tthis._entity = entity;\n\t}\n\n\t/**\n\t * Add a function (`callback`) that will modify value for setting `key`.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/adapters/} for more info\n\t */\n\tpublic add<Key extends keyof E[\"_settings\"]>(key: Key, callback: (value: E[\"_settings\"][Key], target: E, key: Key) => E[\"_settings\"][Key]): IDisposer {\n\t\tlet callbacks = this._callbacks[key];\n\n\t\tif (callbacks === undefined) {\n\t\t\tcallbacks = this._callbacks[key] = [];\n\t\t}\n\n\t\tcallbacks.push(callback);\n\n\t\tthis._entity._markDirtyKey(key);\n\n\t\treturn new Disposer(() => {\n\t\t\tif ($array.removeFirst(callbacks!, callback)) {\n\t\t\t\tthis._entity._markDirtyKey(key);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Removes all adapters for the specific key.\n\t *\n\t * @since 5.1.0\n\t */\n\tpublic remove<Key extends keyof E[\"_settings\"]>(key: Key) {\n\t\tconst callbacks = this._callbacks[key];\n\n\t\tif (callbacks !== undefined) {\n\t\t\tdelete this._callbacks[key];\n\n\t\t\tif (callbacks.length !== 0) {\n\t\t\t\tthis._entity._markDirtyKey(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Enables (previously disabled) adapters for specific key.\n\t *\n\t * @since 5.1.0\n\t */\n\tpublic enable<Key extends keyof E[\"_settings\"]>(key: Key) {\n\t\tif (this._disabled[key]) {\n\t\t\tdelete this._disabled[key];\n\t\t\tthis._entity._markDirtyKey(key);\n\t\t}\n\t}\n\n\t/**\n\t * Disables all adapters for specific key.\n\t *\n\t * @since 5.1.0\n\t */\n\tpublic disable<Key extends keyof E[\"_settings\"]>(key: Key) {\n\t\tif (!this._disabled[key]) {\n\t\t\tthis._disabled[key] = true;\n\t\t\tthis._entity._markDirtyKey(key);\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic fold<Key extends keyof E[\"_settings\"]>(key: Key, value: E[\"_settings\"][Key]): E[\"_settings\"][Key] {\n\t\tif (!this._disabled[key]) {\n\t\t\tconst callbacks = this._callbacks[key];\n\n\t\t\tif (callbacks !== undefined) {\n\t\t\t\tfor (let i = 0, len = callbacks.length; i < len; ++i) {\n\t\t\t\t\tvalue = callbacks[i](value, this._entity, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t}\n}\n\n\nexport interface IEntitySettings {\n\n\t/**\n\t * Tags which can be used by the theme rules.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\n\t */\n\tthemeTags?: Array<string>;\n\n\t/**\n\t * Tags which can be used by the theme rules.\n\t *\n\t * These tags only apply to this object, not any children.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\n\t */\n\tthemeTagsSelf?: Array<string>;\n\n\t/**\n\t * A list of themes applied to the element.\n\t */\n\tthemes?: Array<Theme>;\n\n\n\t/**\n\t * Duration of transition from one state to another.\n\t */\n\tstateAnimationDuration?:number;\n\n\t/**\n\t * Easing of transition from one state to another.\n\t */\n\tstateAnimationEasing?:$ease.Easing;\n\n\t/**\n\t * A custom string ID for the element.\n\t *\n\t * If set, element can be looked up via `am5.registry.entitiesById`.\n\t *\n\t * Will raise error if an element with the same ID already exists.\n\t */\n\tid?: string;\n\n\t/**\n\t * A storage for any custom user data that needs to be associated with the\n\t * element.\n\t */\n\tuserData?: any;\n\n}\n\nexport interface IEntityPrivate {\n}\n\nexport interface IEntityEvents {\n}\n\n/**\n * Animation options.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/} for more info\n */\nexport interface AnimationOptions<Key, Value> {\n\n\t/**\n\t * A setting key to animate value for.\n\t */\n\tkey: Key,\n\n\t/**\n\t * Initial value to animate from. If not set, will use current value.\n\t */\n\tfrom?: Value;\n\n\t/**\n\t * Target value to animate to.\n\t */\n\tto: Value;\n\n\t/**\n\t * Animation duration in milliseconds.\n\t */\n\tduration: number;\n\n\t/**\n\t * Easing function. Defaults to linear.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/#Easing_functions} for more info\n\t */\n\teasing?: $ease.Easing;\n\n\t/**\n\t * How many times to play the animation. Defaults to 1.\n\t */\n\tloops?: number;\n}\n\nexport interface IAnimationEvents {\n\t/**\n\t * Invoked when animation was stopped, which happens in these situations:\n\t * 1. When the animation reached the end.\n\t * 2. When the `stop()` method is called.\n\t * 3. When a new animation starts for the same key.\n\t * 4. When calling `set` for the same key.\n\t */\n\tstopped: {};\n}\n\n/**\n * Animation object.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/} for more info\n */\nexport class Animation<Value> {\n\tprivate _animation: IStartAnimation;\n\tprivate _from: Value;\n\tprivate _to: Value;\n\tprivate _duration: number;\n\tprivate _easing: $ease.Easing;\n\tprivate _loops: number;\n\tprivate _interpolate: <A extends Value>(diff: Time, from: A, to: A) => A;\n\tprivate _oldTime: number | null;\n\tprivate _time: number = 0;\n\n\tpublic _stopped: boolean = false;\n\tpublic _playing: boolean = true;\n\n\tpublic events: EventDispatcher<Events<this, IAnimationEvents>> = new EventDispatcher();\n\n\tconstructor(animation: IStartAnimation, from: Value, to: Value, duration: number, easing: $ease.Easing, loops: number, startingTime: number | null) {\n\t\tthis._animation = animation;\n\t\tthis._from = from;\n\t\tthis._to = to;\n\t\tthis._duration = duration;\n\t\tthis._easing = easing;\n\t\tthis._loops = loops;\n\t\tthis._interpolate = getInterpolate(from, to);\n\t\tthis._oldTime = startingTime;\n\t}\n\n\tpublic get to() {\n\t\treturn this._to;\n\t}\n\n\tpublic get from() {\n\t\treturn this._from;\n\t}\n\n\tpublic get playing() {\n\t\treturn this._playing;\n\t}\n\n\tpublic get stopped() {\n\t\treturn this._stopped;\n\t}\n\n\tpublic stop(): void {\n\t\tif (!this._stopped) {\n\t\t\tthis._stopped = true;\n\t\t\tthis._playing = false;\n\n\t\t\tif (this.events.isEnabled(\"stopped\")) {\n\t\t\t\tthis.events.dispatch(\"stopped\", {\n\t\t\t\t\ttype: \"stopped\",\n\t\t\t\t\ttarget: this,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic pause(): void {\n\t\tthis._playing = false;\n\t\tthis._oldTime = null;\n\t}\n\n\tpublic play(): void {\n\t\tif (!this._stopped && !this._playing) {\n\t\t\tthis._playing = true;\n\t\t\tthis._animation._startAnimation();\n\t\t}\n\t}\n\n\tpublic get percentage(): Time {\n\t\treturn this._time / this._duration;\n\t}\n\n\tpublic waitForStop(): Promise<void> {\n\t\treturn new Promise((resolve, _reject) => {\n\t\t\tif (this._stopped) {\n\t\t\t\tresolve();\n\n\t\t\t} else {\n\t\t\t\tconst listener = () => {\n\t\t\t\t\tstopped.dispose();\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\n\t\t\t\tconst stopped = this.events.on(\"stopped\", listener);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic _checkEnded(): boolean {\n\t\tif (this._loops > 1) {\n\t\t\t--this._loops;\n\t\t\treturn false;\n\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tpublic _run(currentTime: number): void {\n\t\tif (this._oldTime !== null) {\n\t\t\tthis._time += currentTime - this._oldTime;\n\n\t\t\tif (this._time > this._duration) {\n\t\t\t\tthis._time = this._duration;\n\t\t\t}\n\t\t}\n\n\t\tthis._oldTime = currentTime;\n\t}\n\n\tpublic _reset(currentTime: number): void {\n\t\tthis._oldTime = currentTime;\n\t\tthis._time = 0;\n\t}\n\n\tpublic _value(diff: Time): Value {\n\t\treturn this._interpolate(this._easing(diff), this._from, this._to);\n\t}\n}\n\ntype Animated<P> = { [K in keyof P]?: Animation<P[K]> };\n\n\ninterface IStartAnimation {\n\t_startAnimation(): void;\n}\n\n\n/**\n * @ignore\n */\nlet counter = 0;\n\n/**\n * Base class for [[Entity]] objects that support Settings.\n *\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n */\nexport abstract class Settings implements IDisposer, IAnimation, IStartAnimation {\n\n\t/**\n\t * Unique ID.\n\t */\n\tpublic uid: number = ++counter;\n\n\tpublic _settings: {};\n\tpublic _privateSettings: {} = {};\n\n\tpublic _settingEvents: { [K in keyof this[\"_settings\"]]?: Array<<V extends this[\"_settings\"][K], O extends this>(value: V, target?: O, key?: K) => void> } = {};\n\tpublic _privateSettingEvents: { [K in keyof this[\"_settings\"]]?: Array<<V extends this[\"_settings\"][K], O extends this>(value: V, target?: O, key?: K) => void> } = {};\n\n\tpublic _prevSettings: this[\"_settings\"] = {};\n\tpublic _prevPrivateSettings: this[\"_privateSettings\"] = {};\n\n\tprotected _animatingSettings: Animated<this[\"_settings\"]> = {};\n\tprotected _animatingPrivateSettings: Animated<this[\"_privateSettings\"]> = {};\n\n\tprivate _disposed: boolean = false;\n\n\t// TODO move this into Entity\n\tprotected _userProperties: Dirty<this[\"_settings\"]> = {};\n\n\tconstructor(settings: Settings[\"_settings\"]) {\n\t\tthis._settings = settings;\n\t}\n\n\tprotected _checkDirty(): void {\n\t\t$object.keys(this._settings).forEach((key) => {\n\t\t\t(this._userProperties as any)[key] = true;\n\t\t\tthis._markDirtyKey(key);\n\t\t});\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic resetUserSettings(){\n\t\tthis._userProperties = {};\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic abstract markDirty(): void;\n\n\tpublic _runAnimation(currentTime: number): AnimationState {\n\t\tlet state = AnimationState.Stopped;\n\n\t\tif (!this.isDisposed()) {\n\t\t\tlet playing = false;\n\t\t\tlet paused = false;\n\n\t\t\t$object.each(this._animatingSettings, (key, animation) => {\n\t\t\t\tif (animation.stopped) {\n\t\t\t\t\tthis._stopAnimation(key);\n\n\t\t\t\t} else if (animation.playing) {\n\t\t\t\t\tanimation._run(currentTime);\n\n\t\t\t\t\tconst diff = animation.percentage;\n\n\t\t\t\t\tif (diff >= 1) {\n\t\t\t\t\t\tif (animation._checkEnded()) {\n\t\t\t\t\t\t\tthis.set(key, animation._value(1));\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tplaying = true;\n\t\t\t\t\t\t\tanimation._reset(currentTime);\n\t\t\t\t\t\t\tthis._set(key, animation._value(1));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tplaying = true;\n\t\t\t\t\t\tthis._set(key, animation._value(diff));\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tpaused = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$object.each(this._animatingPrivateSettings, (key, animation) => {\n\t\t\t\tif (animation.stopped) {\n\t\t\t\t\tthis._stopAnimationPrivate(key);\n\n\t\t\t\t} else if (animation.playing) {\n\t\t\t\t\tanimation._run(currentTime);\n\n\t\t\t\t\tconst diff = animation.percentage;\n\n\t\t\t\t\tif (diff >= 1) {\n\t\t\t\t\t\tif (animation._checkEnded()) {\n\t\t\t\t\t\t\tthis.setPrivate(key, animation._value(1));\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tplaying = true;\n\t\t\t\t\t\t\tanimation._reset(currentTime);\n\t\t\t\t\t\t\tthis._setPrivate(key, animation._value(1));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tplaying = true;\n\t\t\t\t\t\tthis._setPrivate(key, animation._value(diff));\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tpaused = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (playing) {\n\t\t\t\tstate = AnimationState.Playing;\n\n\t\t\t} else if (paused) {\n\t\t\t\tstate = AnimationState.Paused;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t}\n\n\tpublic abstract _startAnimation(): void;\n\tprotected abstract _animationTime(): number | null;\n\n\tpublic _markDirtyKey<Key extends keyof this[\"_settings\"]>(_key: Key) {\n\t\tthis.markDirty();\n\t}\n\n\tpublic _markDirtyPrivateKey<Key extends keyof this[\"_privateSettings\"]>(_key: Key) {\n\t\tthis.markDirty();\n\t}\n\n\t/**\n\t * Sets a callback function to invoke when specific key of settings changes\n\t * or is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\n\t * @param key Settings key\n\t * @param callback Callback\n\t * @return Disposer for event\n\t */\n\tpublic on<Key extends keyof this[\"_settings\"]>(key: Key, callback: (value: this[\"_settings\"][Key], target?: this, key?: Key) => void): IDisposer {\n\t\tlet events = this._settingEvents[key];\n\n\t\tif (events === undefined) {\n\t\t\tevents = this._settingEvents[key] = [];\n\t\t}\n\n\t\tevents.push(callback);\n\n\t\treturn new Disposer(() => {\n\t\t\t$array.removeFirst(events!, callback);\n\n\t\t\tif (events!.length === 0) {\n\t\t\t\tdelete this._settingEvents[key];\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Sets a callback function to invoke when specific key of private settings\n\t * changes or is set.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\n\t * @ignore\n\t * @param key Private settings key\n\t * @param callback Callback\n\t * @return Disposer for event\n\t */\n\tpublic onPrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key, callback: (value: this[\"_privateSettings\"][Key], target?: this, key?: Key) => void): IDisposer {\n\t\tlet events = this._privateSettingEvents[key];\n\n\t\tif (events === undefined) {\n\t\t\tevents = this._privateSettingEvents[key] = [];\n\t\t}\n\n\t\tevents.push(callback);\n\n\t\treturn new Disposer(() => {\n\t\t\t$array.removeFirst(events!, callback);\n\n\t\t\tif (events!.length === 0) {\n\t\t\t\tdelete this._privateSettingEvents[key];\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getRaw<Key extends keyof this[\"_settings\"], F>(key: Key, fallback: F): NonNullable<this[\"_settings\"][Key]> | F;\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getRaw<Key extends keyof this[\"_settings\"]>(key: Key): this[\"_settings\"][Key];\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getRaw<Key extends keyof this[\"_settings\"]>(key: Key, fallback?: any): any {\n\t\tconst value = (<any>this._settings)[key];\n\n\t\tif (value !== undefined) {\n\t\t\treturn value;\n\n\t\t} else {\n\t\t\treturn fallback;\n\t\t}\n\t}\n\n\t/**\n\t * Returns settings value for the specified `key`.\n\t *\n\t * If there is no value, `fallback` is returned instead (if set).\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Settings value\n\t * @param callback Fallback value\n\t * @return {any} Value\n\t */\n\tpublic get<Key extends keyof this[\"_settings\"], F>(key: Key, fallback: F): NonNullable<this[\"_settings\"][Key]> | F;\n\tpublic get<Key extends keyof this[\"_settings\"]>(key: Key): this[\"_settings\"][Key];\n\tpublic get<Key extends keyof this[\"_settings\"]>(key: Key, fallback?: any): any {\n\t\treturn this.getRaw(key, fallback);\n\t}\n\n\tprotected _sendKeyEvent<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value): void {\n\t\tconst events = this._settingEvents[key];\n\n\t\tif (events !== undefined) {\n\t\t\t$array.each(events!, (callback) => {\n\t\t\t\tcallback(value, this, key);\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected _sendPrivateKeyEvent<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value): void {\n\t\tconst events = this._privateSettingEvents[key];\n\n\t\tif (events !== undefined) {\n\t\t\t$array.each(events!, (callback) => {\n\t\t\t\tcallback(value, this, key);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tprivate _setRaw<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, old: Value, value: Value) {\n\t\tthis._prevSettings[key] = old;\n\t\tthis._sendKeyEvent(key, value);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setRaw<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value) {\n\t\tconst old = (<any>this._settings)[key];\n\n\t\t(<any>this._settings)[key] = value;\n\n\t\tif (old !== value) {\n\t\t\tthis._setRaw(key, old, value);\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tprivate _set<Key extends keyof this[\"_settings\"]>(key: Key, value: this[\"_settings\"][Key]) {\n\t\tconst old = (<any>this._settings)[key];\n\n\t\t(<any>this._settings)[key] = value;\n\n\t\tif (old !== value) {\n\t\t\tthis._setRaw(key, old, value);\n\t\t\tthis._markDirtyKey(key);\n\t\t}\n\t}\n\n\n\tprotected _stopAnimation<Key extends keyof this[\"_settings\"]>(key: Key): void {\n\t\tconst animation = this._animatingSettings[key];\n\n\t\tif (animation) {\n\t\t\tdelete this._animatingSettings[key];\n\t\t\tanimation.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Sets a setting `value` for the specified `key`, and returns the same `value`.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Setting key\n\t * @param value Setting value\n\t * @return Setting value\n\t */\n\tpublic set<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value): Value {\n\t\tthis._set(key, value);\n\t\tthis._stopAnimation(key);\n\t\treturn value;\n\t}\n\n\t/**\n\t * Removes a setting value for the specified `key`;\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Setting key\n\t */\n\tpublic remove<Key extends keyof this[\"_settings\"]>(key: Key): void {\n\t\tif (key in this._settings) {\n\t\t\tthis._prevSettings[key] = (<any>this._settings)[key];\n\n\t\t\tdelete (<any>this._settings)[key];\n\n\t\t\tthis._sendKeyEvent(key, undefined as any);\n\t\t\tthis._markDirtyKey(key);\n\t\t}\n\n\t\tthis._stopAnimation(key);\n\t}\n\n\t/**\n\t * Removes all keys;\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t */\n\tpublic removeAll(): void {\n\t\t$array.each($object.keys(this._settings), (key) => {\n\t\t\tthis.remove(key);\n\t\t});\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getPrivate<Key extends keyof this[\"_privateSettings\"], F>(key: Key, fallback: F): NonNullable<this[\"_privateSettings\"][Key]> | F;\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getPrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key): this[\"_privateSettings\"][Key];\n\n\t/**\n\t * Returns a value of a private setting.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/#Private_settings} for more info\n\t */\n\tpublic getPrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key, fallback?: any): any {\n\t\tconst value = (<any>this._privateSettings)[key];\n\n\t\tif (value !== undefined) {\n\t\t\treturn value;\n\n\t\t} else {\n\t\t\treturn fallback;\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tprivate _setPrivateRaw<Key extends keyof this[\"_privateSettings\"], Value extends this[\"_privateSettings\"][Key]>(key: Key, old: Value, value: Value) {\n\t\tthis._prevPrivateSettings[key] = old;\n\t\tthis._sendPrivateKeyEvent(key, value);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setPrivateRaw<Key extends keyof this[\"_privateSettings\"], Value extends this[\"_privateSettings\"][Key]>(key: Key, value: Value) {\n\t\tconst old = (<any>this._privateSettings)[key];\n\n\t\t(<any>this._privateSettings)[key] = value;\n\n\t\tif (old !== value) {\n\t\t\tthis._setPrivateRaw(key, old, value);\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tprivate _setPrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key, value: this[\"_privateSettings\"][Key]) {\n\t\tconst old = (<any>this._privateSettings)[key];\n\n\t\t(<any>this._privateSettings)[key] = value;\n\n\t\tif (old !== value) {\n\t\t\tthis._setPrivateRaw(key, old, value);\n\t\t\tthis._markDirtyPrivateKey(key);\n\t\t}\n\t}\n\n\tprotected _stopAnimationPrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key): void {\n\t\tconst animation = this._animatingPrivateSettings[key];\n\n\t\tif (animation) {\n\t\t\tanimation.stop();\n\t\t\tdelete this._animatingPrivateSettings[key];\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setPrivate<Key extends keyof this[\"_privateSettings\"], Value extends this[\"_privateSettings\"][Key]>(key: Key, value: Value): Value {\n\t\tthis._setPrivate(key, value);\n\t\tthis._stopAnimationPrivate(key);\n\t\treturn value;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic removePrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key): void {\n\t\tif (key in this._privateSettings) {\n\t\t\tthis._prevPrivateSettings[key] = (<any>this._privateSettings)[key];\n\n\t\t\tdelete (<any>this._privateSettings)[key];\n\n\t\t\tthis._markDirtyPrivateKey(key);\n\t\t}\n\n\t\tthis._stopAnimationPrivate(key);\n\t}\n\n\t/**\n\t * Sets multiple settings at once.\n\t *\n\t * `settings` must be an object with key: value pairs.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param settings Settings\n\t */\n\tpublic setAll(settings: Partial<this[\"_settings\"]>) {\n\t\t$object.each(settings, (key, value) => {\n\t\t\tthis.set(key, value);\n\t\t});\n\t}\n\n\t/**\n\t * Animates setting values from current/start values to new ones.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/#Animating_settings} for more info\n\t * @param options Animation options\n\t * @return Animation object\n\t */\n\tpublic animate<Key extends keyof this[\"_settings\"]>(options: AnimationOptions<Key, this[\"_settings\"][Key]>): Animation<this[\"_settings\"][Key]> {\n\t\tconst key = options.key;\n\t\tconst to = options.to;\n\t\tconst duration = options.duration || 0;\n\t\tconst loops = options.loops || 1;\n\n\t\tconst from = (options.from === undefined ? this.get(key) : options.from);\n\t\tconst easing = (options.easing === undefined ? $ease.linear : options.easing);\n\n\t\tif (duration === 0) {\n\t\t\tthis.set(key, to);\n\n\t\t} else {\n\t\t\tif (from === undefined || from === to) {\n\t\t\t\tthis.set(key, to);\n\n\t\t\t} else {\n\t\t\t\tthis.set(key, from);\n\n\t\t\t\tconst animation = this._animatingSettings[key] = new Animation(this, from, to, duration, easing, loops, this._animationTime());\n\n\t\t\t\tthis._startAnimation();\n\n\t\t\t\treturn animation;\n\t\t\t}\n\t\t}\n\n\t\tconst animation = new Animation(this, from, to, duration, easing, loops, null);\n\t\tanimation.stop();\n\t\treturn animation;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic animatePrivate<Key extends keyof this[\"_privateSettings\"]>(options: AnimationOptions<Key, this[\"_privateSettings\"][Key]>): Animation<this[\"_privateSettings\"][Key]> {\n\t\tconst key = options.key;\n\t\tconst to = options.to;\n\t\tconst duration = options.duration || 0;\n\t\tconst loops = options.loops || 1;\n\n\t\tconst from = (options.from === undefined ? this.getPrivate(key) : options.from);\n\t\tconst easing = (options.easing === undefined ? $ease.linear : options.easing);\n\n\t\tif (duration === 0) {\n\t\t\tthis.setPrivate(key, to);\n\n\t\t} else {\n\t\t\tif (from === undefined || from === to) {\n\t\t\t\tthis.setPrivate(key, to);\n\n\t\t\t} else {\n\t\t\t\tthis.setPrivate(key, from);\n\n\t\t\t\tconst animation = this._animatingPrivateSettings[key] = new Animation(this, from, to, duration, easing, loops, this._animationTime());\n\n\t\t\t\tthis._startAnimation();\n\n\t\t\t\treturn animation;\n\t\t\t}\n\t\t}\n\n\t\tconst animation = new Animation(this, from, to, duration, easing, loops, null);\n\t\tanimation.stop();\n\t\treturn animation;\n\t}\n\n\tprotected _dispose() {}\n\n\t/**\n\t * Returns `true` if this element is disposed.\n\t *\n\t * @return Disposed\n\t */\n\tpublic isDisposed(): boolean {\n\t\treturn this._disposed;\n\t}\n\n\t/**\n\t * Disposes this object.\n\t */\n\tpublic dispose() {\n\t\tif (!this._disposed) {\n\t\t\tthis._disposed = true;\n\t\t\tthis._dispose();\n\t\t}\n\t}\n}\n\n/**\n * Base class.\n *\n * @important\n */\nexport class Entity extends Settings implements IDisposer {\n\tpublic _root: Root;\n\n\tpublic _user_id:any; // for testing purposes\n\n\tdeclare public _settings: IEntitySettings;\n\tdeclare public _privateSettings: IEntityPrivate;\n\tdeclare public _events: IEntityEvents;\n\n\tpublic states: States<this> = new States(this);\n\tpublic adapters: Adapters<this> = new Adapters(this);\n\tpublic events: EventDispatcher<Events<this, this[\"_events\"]>> = this._createEvents();\n\n\tprotected _userPrivateProperties: Dirty<this[\"_privateSettings\"]> = {};\n\n\tpublic _dirty: Dirty<this[\"_settings\"]> = {};\n\tpublic _dirtyPrivate: Dirty<this[\"_privateSettings\"]> = {};\n\n\tprotected _template: Template<this> | undefined;\n\n\t// Templates for the themes\n\tprotected _templates: Array<Template<this>> = [];\n\n\t// Internal templates which can be overridden by the user's templates\n\tprotected _internalTemplates: Array<Template<this>>;\n\n\t// Default themes which can be overridden by the user's themes\n\tpublic _defaultThemes: Array<Theme> = [];\n\n\t// Disposers for all of the templates\n\tprotected _templateDisposers: Array<IDisposer> = [];\n\n\tprotected _disposers: Array<IDisposer> = [];\n\n\t// Whether the template setup function should be run\n\tprotected _runSetup: boolean = true;\n\n\tpublic static className: string = \"Entity\";\n\tpublic static classNames: Array<string> = [\"Entity\"];\n\n\tprotected _disposerProperties: { [Key in keyof this[\"_settings\"]]?: Array<IDisposer> } = {};\n\n\t/**\n\t * IMPORTANT! Do not instantiate this class via `new Class()` syntax.\n\t *\n\t * Use static method `Class.new()` instead.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\n\t * @ignore\n\t */\n\tconstructor(root: Root, settings: Entity[\"_settings\"], isReal: boolean, templates: Array<Template<Entity>> = []) {\n\t\tsuper(settings);\n\t\tif (!isReal) {\n\t\t\tthrow new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\n\t\t}\n\t\tthis._root = root;\n\t\tthis._internalTemplates = templates as Array<Template<this>>;\n\n\t\tif (settings.id) {\n\t\t\tthis._registerId(settings.id);\n\t\t}\n\t}\n\n\t/**\n\t * Use this method to create an instance of this class.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\n\t * @param root Root element\n\t * @param settings Settings\n\t * @param template Template\n\t * @return Instantiated object\n\t */\n\tstatic new<C extends typeof Entity, T extends InstanceType<C>>(this: C, root: Root, settings: T[\"_settings\"], template?: Template<T>): T {\n\t\tconst x = (new this(root, settings, true)) as T;\n\t\tx._template = template;\n\t\tx._afterNew();\n\t\treturn x;\n\t}\n\n\tstatic _new<C extends typeof Entity, T extends InstanceType<C>>(this: C, root: Root, settings: T[\"_settings\"], templates: Array<Template<T>> = []): T {\n\t\tconst x = (new this(root, settings, true, templates)) as T;\n\t\tx._afterNew();\n\t\treturn x;\n\t}\n\n\tprotected _afterNew() {\n\t\tthis._checkDirty();\n\n\t\tlet shouldApply = false;\n\n\t\tconst template = this._template;\n\n\t\tif (template) {\n\t\t\tshouldApply = true;\n\t\t\ttemplate._setObjectTemplate(this);\n\t\t}\n\n\t\t$array.each(this._internalTemplates, (template) => {\n\t\t\tshouldApply = true;\n\t\t\ttemplate._setObjectTemplate(this);\n\t\t});\n\n\t\tif (shouldApply) {\n\t\t\tthis._applyTemplates(false);\n\t\t}\n\n\t\tthis.states.create(\"default\", {});\n\n\t\tthis._setDefaults();\n\t}\n\n\t// This is the same as _afterNew, except it also applies the themes.\n\t// This should only be used for classes which don't have a parent (because they extend from Entity and not Sprite).\n\tprotected _afterNewApplyThemes() {\n\t\tthis._checkDirty();\n\n\t\tconst template = this._template;\n\n\t\tif (template) {\n\t\t\ttemplate._setObjectTemplate(this);\n\t\t}\n\n\t\t$array.each(this._internalTemplates, (template) => {\n\t\t\ttemplate._setObjectTemplate(this);\n\t\t});\n\n\t\tthis.states.create(\"default\", {});\n\n\t\tthis._setDefaults();\n\n\t\tthis._applyThemes();\n\t}\n\n\tprotected _createEvents(): EventDispatcher<Events<this, this[\"_events\"]>> {\n\t\treturn new EventDispatcher();\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic get classNames(): Array<string> {\n\t\treturn (this.constructor as any).classNames;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic get className(): string {\n\t\treturn (this.constructor as any).className;\n\t}\n\n\tprotected _setDefaults(){\n\n\t}\n\n\tpublic _setDefault<Key extends keyof this[\"_settings\"]>(key: Key, value: this[\"_settings\"][Key]) {\n\t\tif (!(key in this._settings)) {\n\t\t\tsuper.set(key, value);\n\t\t}\n\t}\n\n\tpublic _setRawDefault<Key extends keyof this[\"_settings\"]>(key: Key, value: this[\"_settings\"][Key]) {\n\t\tif (!(key in this._settings)) {\n\t\t\tsuper.setRaw(key, value);\n\t\t}\n\t}\n\n\tpublic _clearDirty() {\n\t\t$object.keys(this._dirty).forEach((key) => {\n\t\t\tthis._dirty[key] = false;\n\t\t});\n\n\t\t$object.keys(this._dirtyPrivate).forEach((key) => {\n\t\t\tthis._dirtyPrivate[key] = false;\n\t\t});\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic isDirty<Key extends keyof this[\"_settings\"]>(key: Key): boolean {\n\t\treturn !!this._dirty[key];\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic isPrivateDirty<Key extends keyof this[\"_privateSettings\"]>(key: Key): boolean {\n\t\treturn !!this._dirtyPrivate[key];\n\t}\n\n\tpublic _markDirtyKey<Key extends keyof this[\"_settings\"]>(key: Key) {\n\t\tthis._dirty[key] = true;\n\t\tsuper._markDirtyKey(key);\n\t}\n\n\tpublic _markDirtyPrivateKey<Key extends keyof this[\"_privateSettings\"]>(key: Key) {\n\t\tthis._dirtyPrivate[key] = true;\n\t\tsuper._markDirtyKey(key);\n\t}\n\n\t/**\n\t * Checks if element is of certain class (or inherits one).\n\t *\n\t * @param type Class name to check\n\t * @return {boolean} Is of class?\n\t */\n\tpublic isType<A>(type: string): this is A {\n\t\treturn this.classNames.indexOf(type) !== -1;\n\t}\n\n\tprotected _pushPropertyDisposer<Key extends keyof this[\"_settings\"], D extends IDisposer>(key: Key, disposer: D): D {\n\t\tlet disposers = this._disposerProperties[key];\n\n\t\tif (disposers === undefined) {\n\t\t\tdisposers = this._disposerProperties[key] = [];\n\t\t}\n\n\t\tdisposers.push(disposer);\n\n\t\treturn disposer;\n\t}\n\n\tprotected _disposeProperty<Key extends keyof this[\"_settings\"]>(key: Key): void {\n\t\tconst disposers = this._disposerProperties[key];\n\n\t\tif (disposers !== undefined) {\n\t\t\t$array.each(disposers!, (disposer) => {\n\t\t\t\tdisposer.dispose();\n\t\t\t});\n\n\t\t\tdelete this._disposerProperties[key];\n\t\t}\n\t}\n\n\t/**\n\t * @todo needs description\n\t * @param value Template\n\t */\n\tpublic set template(value: Template<this> | undefined) {\n\t\tconst template = this._template;\n\n\t\tif (template !== value) {\n\t\t\tthis._template = value;\n\n\t\t\tif (template) {\n\t\t\t\ttemplate._removeObjectTemplate(this);\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tvalue._setObjectTemplate(this);\n\t\t\t}\n\n\t\t\tthis._applyTemplates();\n\t\t}\n\t}\n\n\tpublic get template(): Template<this> | undefined {\n\t\treturn this._template;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic markDirty() {\n\t\tthis._root._addDirtyEntity(this);\n\t}\n\n\tpublic _startAnimation(): void {\n\t\tthis._root._addAnimation(this);\n\t}\n\n\tprotected _animationTime(): number | null {\n\t\treturn this._root.animationTime;\n\t}\n\n\tpublic _applyState(_name: string): void { }\n\tpublic _applyStateAnimated(_name: string, _duration?: number): void { }\n\n\t/**\n\t * Returns settings value for the specified `key`.\n\t *\n\t * If there is no value, `fallback` is returned instead (if set).\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Settings value\n\t * @param callback Fallback value\n\t * @return Value\n\t */\n\tpublic get<Key extends keyof this[\"_settings\"], F>(key: Key, fallback: F): NonNullable<this[\"_settings\"][Key]> | F;\n\tpublic get<Key extends keyof this[\"_settings\"]>(key: Key): this[\"_settings\"][Key];\n\tpublic get<Key extends keyof this[\"_settings\"]>(key: Key, fallback?: any): any {\n\t\tconst value = this.adapters.fold(key, (<any>this._settings)[key]);\n\n\t\tif (value !== undefined) {\n\t\t\treturn value;\n\n\t\t} else {\n\t\t\treturn fallback;\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic isUserSetting<Key extends keyof this[\"_settings\"]>(key: Key): boolean {\n\t\treturn this._userProperties[key] || false;\n\t}\n\n\t/**\n\t * Sets a setting `value` for the specified `key`, and returns the same `value`.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Setting key\n\t * @param value Setting value\n\t * @return Setting value\n\t */\n\tpublic set<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value): Value {\n\t\tthis._userProperties[key] = true;\n\t\treturn super.set(key, value);\n\t}\n\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setRaw<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value) {\n\t\tthis._userProperties[key] = true;\n\t\tsuper.setRaw(key, value);\n\t}\n\n\t/**\n\t * Sets a setting `value` for the specified `key` only if the value for this key was not set previously using set method, and returns the same `value`.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Setting key\n\t * @param value Setting value\n\t * @return Setting value\n\t */\n\tpublic _setSoft<Key extends keyof this[\"_settings\"], Value extends this[\"_settings\"][Key]>(key: Key, value: Value): Value {\n\t\tif(!this._userProperties[key]){\n\t\t\treturn super.set(key, value);\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Removes a setting value for the specified `key`.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\n\t * @param key Setting key\n\t */\n\tpublic remove<Key extends keyof this[\"_settings\"]>(key: Key) {\n\t\tdelete this._userProperties[key];\n\t\tthis._removeTemplateProperty(key);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setPrivate<Key extends keyof this[\"_privateSettings\"], Value extends this[\"_privateSettings\"][Key]>(key: Key, value: Value): Value {\n\t\tthis._userPrivateProperties[key] = true;\n\t\treturn super.setPrivate(key, value);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setPrivateRaw<Key extends keyof this[\"_privateSettings\"], Value extends this[\"_privateSettings\"][Key]>(key: Key, value: Value) {\n\t\tthis._userPrivateProperties[key] = true;\n\t\tsuper.setPrivateRaw(key, value);\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic removePrivate<Key extends keyof this[\"_privateSettings\"]>(key: Key) {\n\t\tdelete this._userPrivateProperties[key];\n\t\tthis._removeTemplatePrivateProperty(key);\n\t}\n\n\tpublic _setTemplateProperty<Key extends keyof this[\"_settings\"]>(template: Template<this>, key: Key, value: this[\"_settings\"][Key]) {\n\t\tif (!this._userProperties[key]) {\n\t\t\tconst match = this._findTemplateByKey(key);\n\n\t\t\tif (template === match) {\n\t\t\t\tsuper.set(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _setTemplatePrivateProperty<Key extends keyof this[\"_privateSettings\"]>(template: Template<this>, key: Key, value: this[\"_privateSettings\"][Key]) {\n\t\tif (!this._userPrivateProperties[key]) {\n\t\t\tconst match = this._findTemplateByPrivateKey(key);\n\n\t\t\tif (template === match) {\n\t\t\t\tsuper.setPrivate(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _removeTemplateProperty<Key extends keyof this[\"_settings\"]>(key: Key) {\n\t\tif (!this._userProperties[key]) {\n\t\t\tconst match = this._findTemplateByKey(key);\n\n\t\t\tif (match) {\n\t\t\t\t// TODO don't stop the animation if the property didn't change\n\t\t\t\tsuper.set(key, match._settings[key]!);\n\n\t\t\t} else {\n\t\t\t\tsuper.remove(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _removeTemplatePrivateProperty<Key extends keyof this[\"_privateSettings\"]>(key: Key) {\n\t\tif (!this._userPrivateProperties[key]) {\n\t\t\tconst match = this._findTemplateByPrivateKey(key);\n\n\t\t\tif (match) {\n\t\t\t\t// TODO don't stop the animation if the property didn't change\n\t\t\t\tsuper.setPrivate(key, match._privateSettings[key]);\n\n\t\t\t} else {\n\t\t\t\tsuper.removePrivate(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _walkParents(f: (parent: Entity) => void): void {\n\t\tf(this._root._rootContainer);\n\t\tf(this);\n\t}\n\n\t// TODO faster version of this method which is specialized to just 1 key\n\tpublic _applyStateByKey(name: string): void {\n\t\tconst other = this.states.create(name, {});\n\t\tconst seen: Dirty<this[\"_settings\"]> = {};\n\n\t\tthis._eachTemplate((template) => {\n\t\t\tconst state = template.states.lookup(name);\n\n\t\t\tif (state) {\n\t\t\t\tstate._apply(other, seen);\n\t\t\t}\n\t\t});\n\n\t\t$object.each(other._settings, (key) => {\n\t\t\tif (!seen[key] && !other._userSettings[key]) {\n\t\t\t\tother.remove(key);\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _applyTemplate(template: Template<this>, state: ApplyState<this>): void {\n\t\tthis._templateDisposers.push(template._apply(this, state));\n\n\t\t$object.each(template._settings, (key, value) => {\n\t\t\tif (!state.settings[key] && !this._userProperties[key]) {\n\t\t\t\tstate.settings[key] = true;\n\t\t\t\tsuper.set(key, value);\n\t\t\t}\n\t\t});\n\n\t\t$object.each(template._privateSettings, (key, value) => {\n\t\t\tif (!state.privateSettings[key] && !this._userPrivateProperties[key]) {\n\t\t\t\tstate.privateSettings[key] = true;\n\t\t\t\tsuper.setPrivate(key, value);\n\t\t\t}\n\t\t});\n\n\t\tif (this._runSetup && template.setup) {\n\t\t\tthis._runSetup = false;\n\t\t\ttemplate.setup(this);\n\t\t}\n\t}\n\n\t/**\n\t * Calls the closure with each template and returns the first template which is true\n\t */\n\tprotected _findStaticTemplate(f: (template: Template<this>) => boolean): Template<this> | undefined {\n\t\tif (this._template) {\n\t\t\tif (f(this._template)) {\n\t\t\t\treturn this._template;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _eachTemplate(f: (template: Template<this>) => void): void {\n\t\tthis._findStaticTemplate((template) => {\n\t\t\tf(template);\n\t\t\treturn false;\n\t\t});\n\n\t\t// _internalTemplates is sorted with most specific to the right\n\t\t$array.eachReverse(this._internalTemplates, f);\n\n\t\t// _templates is sorted with most specific to the left\n\t\t$array.each(this._templates, f);\n\t}\n\n\tpublic _applyTemplates(remove: boolean = true): void {\n\t\tif (remove) {\n\t\t\tthis._disposeTemplates();\n\t\t}\n\n\t\tconst state: ApplyState<this> = {\n\t\t\tsettings: {},\n\t\t\tprivateSettings: {},\n\t\t\tstates: {},\n\t\t};\n\n\t\tthis._eachTemplate((template) => {\n\t\t\tthis._applyTemplate(template, state);\n\t\t});\n\n\t\tif (remove) {\n\t\t\t$object.each(this._settings, (key) => {\n\t\t\t\tif (!this._userProperties[key] && !state.settings[key]) {\n\t\t\t\t\tsuper.remove(key);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$object.each(this._privateSettings, (key) => {\n\t\t\t\tif (!this._userPrivateProperties[key] && !state.privateSettings[key]) {\n\t\t\t\t\tsuper.removePrivate(key);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected _findTemplate(f: (template: Template<this>) => boolean): Template<this> | undefined {\n\t\tconst value = this._findStaticTemplate(f);\n\n\t\tif (value === undefined) {\n\t\t\t// _internalTemplates is sorted with most specific to the right\n\t\t\tconst value = $array.findReverse(this._internalTemplates, f);\n\n\t\t\tif (value === undefined) {\n\t\t\t\t// _templates is sorted with most specific to the left\n\t\t\t\treturn $array.find(this._templates, f);\n\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tprotected _findTemplateByKey<Key extends keyof this[\"_settings\"]>(key: Key): Template<this> | undefined {\n\t\treturn this._findTemplate((template) => {\n\t\t\treturn key in template._settings;\n\t\t});\n\t}\n\n\tprotected _findTemplateByPrivateKey<Key extends keyof this[\"_privateSettings\"]>(key: Key): Template<this> | undefined {\n\t\treturn this._findTemplate((template) => {\n\t\t\treturn key in template._privateSettings;\n\t\t});\n\t}\n\n\tprotected _disposeTemplates() {\n\t\t$array.each(this._templateDisposers, (disposer) => {\n\t\t\tdisposer.dispose();\n\t\t});\n\n\t\tthis._templateDisposers.length = 0;\n\t}\n\n\tprotected _removeTemplates() {\n\t\t$array.each(this._templates, (template) => {\n\t\t\ttemplate._removeObjectTemplate(this);\n\t\t});\n\n\t\tthis._templates.length = 0;\n\t}\n\n\tpublic _applyThemes(force: boolean = false): boolean {\n\t\tlet isConnected = false;\n\n\t\tconst defaults: Array<Array<Theme>> = [];\n\n\t\tlet themes: Array<Array<Theme>> = [];\n\n\t\tconst themeTags: Set<string> = new Set();\n\n\t\tconst tags = this.get(\"themeTagsSelf\");\n\n\t\tif (tags) {\n\t\t\t$array.each(tags, (tag) => {\n\t\t\t\tthemeTags.add(tag);\n\t\t\t});\n\t\t}\n\n\t\tthis._walkParents((entity) => {\n\t\t\tif (entity === this._root._rootContainer) {\n\t\t\t\tisConnected = true;\n\t\t\t}\n\n\t\t\tif (entity._defaultThemes.length > 0) {\n\t\t\t\tdefaults.push(entity._defaultThemes);\n\t\t\t}\n\n\t\t\tconst theme = entity.get(\"themes\");\n\n\t\t\tif (theme) {\n\t\t\t\tthemes.push(theme);\n\t\t\t}\n\n\t\t\tconst tags = entity.get(\"themeTags\");\n\n\t\t\tif (tags) {\n\t\t\t\t$array.each(tags, (tag) => {\n\t\t\t\t\tthemeTags.add(tag);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tthemes = defaults.concat(themes);\n\n\t\tthis._removeTemplates();\n\n\t\tif (isConnected || force) {\n\t\t\t$array.eachReverse(this.classNames, (name) => {\n\t\t\t\tconst allRules: Array<IRule<this>> = [];\n\n\t\t\t\t$array.each(themes, (themes) => {\n\t\t\t\t\t$array.each(themes, (theme) => {\n\t\t\t\t\t\tconst rules = theme._lookupRules<this>(name);\n\n\t\t\t\t\t\tif (rules) {\n\t\t\t\t\t\t\t$array.eachReverse(rules, (rule) => {\n\t\t\t\t\t\t\t\tconst matches = rule.tags.every((tag) => {\n\t\t\t\t\t\t\t\t\treturn themeTags.has(tag);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (matches) {\n\t\t\t\t\t\t\t\t\tconst result = $array.getFirstSortedIndex(allRules, (x) => {\n\t\t\t\t\t\t\t\t\t\tconst order = $order.compare(rule.tags.length, x.tags.length);\n\n\t\t\t\t\t\t\t\t\t\tif (order === 0) {\n\t\t\t\t\t\t\t\t\t\t\treturn $order.compareArray(rule.tags, x.tags, $order.compare);\n\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn order;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tallRules.splice(result.index, 0, rule);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t$array.each(allRules, (rule) => {\n\t\t\t\t\tthis._templates.push(rule.template);\n\t\t\t\t\trule.template._setObjectTemplate(this);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tthis._applyTemplates();\n\n\t\tif (isConnected || force) {\n\t\t\t// This causes it to only run the setup function the first time that the themes are applied\n\t\t\tthis._runSetup = false;\n\t\t}\n\n\t\treturn isConnected || force;\n\t}\n\n\tpublic _changed(): void { }\n\n\tpublic _beforeChanged(): void {\n\n\t\tif (this.isDirty(\"id\")) {\n\t\t\tconst id = this.get(\"id\")!;\n\t\t\tif (id) {\n\t\t\t\tthis._registerId(id);\n\t\t\t}\n\n\t\t\tconst prevId = this._prevSettings.id;\n\t\t\tif(prevId) {\n\t\t\t\tdelete registry.entitiesById[prevId];\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _registerId(id: string): void {\n\t\tif (registry.entitiesById[id] && registry.entitiesById[id] !== this) {\n\t\t\tthrow new Error(\"An entity with id \\\"\" + id + \"\\\" already exists.\");\n\t\t}\n\t\tregistry.entitiesById[id] = this;\n\t}\n\n\tpublic _afterChanged(): void { }\n\n\t/**\n\t * @ignore\n\t */\n\tpublic addDisposer<T extends IDisposer>(disposer: T): T {\n\t\tthis._disposers.push(disposer);\n\t\treturn disposer;\n\t}\n\n\tprotected _dispose() {\n\t\tsuper._dispose();\n\n\t\tconst template = this._template;\n\n\t\tif (template) {\n\t\t\ttemplate._removeObjectTemplate(this);\n\t\t}\n\n\t\t$array.each(this._internalTemplates, (template) => {\n\t\t\ttemplate._removeObjectTemplate(this);\n\t\t});\n\n\t\tthis._removeTemplates();\n\t\tthis._disposeTemplates();\n\n\t\tthis.events.dispose();\n\n\t\tthis._disposers.forEach((x) => {\n\t\t\tx.dispose();\n\t\t});\n\n\t\t$object.each(this._disposerProperties, (_, disposers) => {\n\t\t\t$array.each(disposers, (disposer) => {\n\t\t\t\tdisposer.dispose();\n\t\t\t});\n\t\t});\n\n\t\tconst id = this.get(\"id\")!;\n\t\tif (id) {\n\t\t\tdelete registry.entitiesById[id];\n\t\t}\n\t}\n\n\t/**\n\t * Creates and returns a \"disposable\" timeout.\n\t *\n\t * @param fn Callback\n\t * @param delay Delay in milliseconds\n\t * @return Timeout disposer\n\t */\n\tpublic setTimeout(fn: () => void, delay: number): IDisposer {\n\t\tconst id = setTimeout(() => {\n\t\t\tthis.removeDispose(disposer);\n\t\t\tfn();\n\t\t}, delay);\n\n\t\tconst disposer = new Disposer(() => {\n\t\t\tclearTimeout(id);\n\t\t});\n\n\t\tthis._disposers.push(disposer);\n\t\treturn disposer;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic removeDispose(target: IDisposer): void {\n\t\tif (!this.isDisposed()) {\n\t\t\tlet index = $array.indexOf(this._disposers, target);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._disposers.splice(index, 1);\n\t\t\t}\n\t\t}\n\n\t\ttarget.dispose();\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic hasTag(tag: string): boolean {\n\t\treturn $array.indexOf(this.get(\"themeTags\", []), tag) !== -1;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic addTag(tag: string): void {\n\t\tif (!this.hasTag(tag)) {\n\t\t\tconst tags = (<any>this).get(\"themeTags\", []);\n\t\t\ttags.push(tag);\n\t\t\tthis.set(\"themeTags\", tags);\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic removeTag(tag: string): void {\n\t\tif (this.hasTag(tag)) {\n\t\t\tconst tags = (<any>this).get(\"themeTags\", []);\n\t\t\t$array.remove(tags, tag);\n\t\t\tthis.set(\"themeTags\", tags);\n\t\t}\n\t}\n\n\tprotected _t(text: any, locale?: ILocale, ...rest: Array<string>){\n\t\treturn this._root.language.translate(text, locale, ...rest);\n\t}\n\n\t/**\n\t * An instance of [[Root]] object.\n\t *\n\t * @readonly\n\t * @since 5.0.6\n\t * @return Root object\n\t */\n\tpublic get root(): Root {\n\t\treturn this._root;\n\t}\n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Time.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/core/util/Time.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC,oBAAY,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAExG,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACd;AAGD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/C;AAGD;;;;GAIG;AACH,eAAO,IAAI,iBAAiB,EAAE;KAAG,GAAG,IAAI,QAAQ,GAAG,MAAM;CASxD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAyBhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,UAKtE;AAGD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,UAYxI;AAED;;;;GAIG;AACH,wBAAgB,GAAG,IAAI,IAAI,CAE1B;AAED;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAErC;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAwFzH;AAED;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAgFvG;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAMxG;AAGD;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAkQrJ;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,aAAa,CAuBjI;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,UAmBtD"}
1
+ {"version":3,"file":"Time.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/core/util/Time.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC,oBAAY,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAExG,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACd;AAGD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/C;AAGD;;;;GAIG;AACH,eAAO,IAAI,iBAAiB,EAAE;KAAG,GAAG,IAAI,QAAQ,GAAG,MAAM;CASxD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAyBhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,UAKtE;AAGD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,UAYxI;AAED;;;;GAIG;AACH,wBAAgB,GAAG,IAAI,IAAI,CAE1B;AAED;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAErC;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAwFzH;AAED;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAuFvG;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAMxG;AAGD;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAkQrJ;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,aAAa,CAuBjI;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,UAmBtD"}
@@ -251,8 +251,15 @@ export function add(date, unit, count, utc, timezone) {
251
251
  date.setUTCFullYear(year + count);
252
252
  break;
253
253
  case "month":
254
+ const endDays = date.getUTCDate();
255
+ const startDays = new Date(date.getUTCFullYear(), date.getUTCMonth(), 0).getUTCDate();
254
256
  let month = date.getUTCMonth();
255
- date.setUTCMonth(month + count);
257
+ if (endDays > startDays) {
258
+ date.setUTCMonth(month + count, startDays);
259
+ }
260
+ else {
261
+ date.setUTCMonth(month + count);
262
+ }
256
263
  break;
257
264
  case "week":
258
265
  let wday = date.getUTCDate();
@@ -1 +1 @@
1
- {"version":3,"file":"Time.js","sourceRoot":"","sources":["../../../../../src/.internal/core/util/Time.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ============================================================================\n * IMPORTS\n * ============================================================================\n * @hidden\n */\nimport * as $type from \"./Type\";\nimport * as $utils from \"./Utils\";\nimport type { Timezone } from \"./Timezone\";\nimport type { Root } from \"../Root\";\n\nexport type TimeUnit = \"millisecond\" | \"second\" | \"minute\" | \"hour\" | \"day\" | \"week\" | \"month\" | \"year\";\n\nexport interface ITimeInterval {\n\ttimeUnit: TimeUnit;\n\tcount: number;\n}\n\n\n/**\n * Returns a `Promise` which can be used to execute code after number of\n * milliseconds.\n *\n * @param ms Sleep duration in ms\n * @return Promise\n */\nexport function sleep(ms: number): Promise<void> {\n\treturn new Promise((resolve, _reject) => {\n\t\tsetTimeout(resolve, ms);\n\t});\n}\n\n\n/**\n * Maps time period names to their numeric representations in milliseconds.\n *\n * @ignore Exclude from docs\n */\nexport let timeUnitDurations: { [Key in TimeUnit]: number } = {\n\tmillisecond: 1,\n\tsecond: 1000,\n\tminute: 60000,\n\thour: 3600000,\n\tday: 86400000,\n\tweek: 604800000,\n\tmonth: 365.242 / 12 * 86400000,\n\tyear: 31536000000\n};\n\n/**\n * Returns the next time unit that goes after source `unit`.\n *\n * E.g. \"hour\" is the next unit after \"minute\", etc.\n *\n * @ignore Exclude from docs\n * @param unit Source time unit\n * @return Next time unit\n */\nexport function getNextUnit(unit: TimeUnit): TimeUnit | undefined {\n\tswitch (unit) {\n\t\tcase \"year\":\n\t\t\treturn;\n\t\tcase \"month\":\n\t\t\treturn \"year\";\n\n\t\tcase \"week\":\n\t\t\treturn \"month\";\n\n\t\tcase \"day\":\n\t\t\treturn \"month\"; // not a mistake\n\n\t\tcase \"hour\":\n\t\t\treturn \"day\";\n\n\t\tcase \"minute\":\n\t\t\treturn \"hour\";\n\n\t\tcase \"second\":\n\t\t\treturn \"minute\"\n\n\t\tcase \"millisecond\":\n\t\t\treturn \"second\";\n\t}\n}\n\n/**\n * Returns number of milliseconds in the `count` of time `unit`.\n *\n * Available units: \"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\",\n * \"month\", and \"year\".\n *\n * @param unit Time unit\n * @param count Number of units\n * @return Milliseconds\n */\nexport function getDuration(unit: TimeUnit, count?: number): number {\n\tif (count == null) {\n\t\tcount = 1;\n\t}\n\treturn timeUnitDurations[unit] * count;\n}\n\n/**\n * @ignore\n */\nexport function getIntervalDuration(interval: ITimeInterval | undefined) {\n\tif (interval) {\n\t\treturn timeUnitDurations[interval.timeUnit] * interval.count;\n\t}\n\treturn 0;\n}\n\n\nexport function getDateIntervalDuration(interval: ITimeInterval, date: Date, firstDateOfWeek?: number, utc?: boolean, timezone?: Timezone) {\n\tconst unit = interval.timeUnit;\n\tconst count = interval.count;\n\tif (unit == \"hour\" || unit == \"minute\" || unit == \"second\" || unit == \"millisecond\") {\n\t\treturn timeUnitDurations[interval.timeUnit] * interval.count;\n\t}\n\telse {\n\t\tconst firstTime = round(new Date(date.getTime()), unit, count, firstDateOfWeek, utc, undefined, timezone).getTime();\n\t\tlet lastTime = firstTime + count * getDuration(unit) * 1.05;\n\t\tlastTime = round(new Date(lastTime), unit, 1, firstDateOfWeek, utc, undefined, timezone).getTime();\n\t\treturn lastTime - firstTime;\n\t}\n}\n\n/**\n * Returns current `Date` object.\n *\n * @return Current date\n */\nexport function now(): Date {\n\treturn new Date();\n}\n\n/**\n * Returns current timestamp.\n *\n * @return Current timestamp\n */\nexport function getTime(): number {\n\treturn now().getTime();\n}\n\n/**\n * Returns a copy of the `Date` object.\n *\n * @param date Source date\n * @return Copy\n */\nexport function copy(date: Date): Date {\n\treturn new Date(date.getTime()); // todo: check if this is ok. new Date(date) used to strip milliseconds on FF in v3\n}\n\n/**\n * Checks if the `unit` part of two `Date` objects do not match. Two dates\n * represent a \"range\" of time, rather the same time date.\n *\n * @param timeOne timestamp\n * @param timeTwo timestamp\n * @param unit Time unit to check\n * @return Range?\n */\nexport function checkChange(timeOne: number, timeTwo: number, unit: TimeUnit, utc?: boolean, timezone?: Timezone): boolean {\n\t// quick\n\tif ((timeTwo - timeOne) > getDuration(unit, 1.2)) {\n\t\treturn true;\n\t}\n\n\tlet dateOne = new Date(timeOne);\n\tlet dateTwo = new Date(timeTwo);\n\n\tif (timezone) {\n\t\tdateOne = timezone.convertLocal(dateOne);\n\t\tdateTwo = timezone.convertLocal(dateTwo);\n\t}\n\n\tlet timeZoneOffset1 = 0;\n\tlet timeZoneOffset2 = 0;\n\n\tif (!utc && unit != \"millisecond\") {\n\t\ttimeZoneOffset1 = dateOne.getTimezoneOffset();\n\t\tdateOne.setUTCMinutes(dateOne.getUTCMinutes() - timeZoneOffset1);\n\n\t\ttimeZoneOffset2 = dateTwo.getTimezoneOffset();\n\t\tdateTwo.setUTCMinutes(dateTwo.getUTCMinutes() - timeZoneOffset2);\n\t}\n\n\tlet changed = false;\n\tswitch (unit) {\n\t\tcase \"year\":\n\t\t\tif (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"month\":\n\t\t\tif (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\telse if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"day\":\n\t\t\tif (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\telse if (dateOne.getUTCDate() != dateTwo.getUTCDate()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase \"hour\":\n\t\t\tif (dateOne.getUTCHours() != dateTwo.getUTCHours()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"minute\":\n\t\t\tif (dateOne.getUTCMinutes() != dateTwo.getUTCMinutes()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase \"second\":\n\t\t\tif (dateOne.getUTCSeconds() != dateTwo.getUTCSeconds()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"millisecond\":\n\t\t\tif (dateOne.getTime() != dateTwo.getTime()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\tif (changed) {\n\t\treturn changed;\n\t}\n\n\tlet nextUnit = getNextUnit(unit);\n\tif (nextUnit) {\n\t\treturn checkChange(timeOne, timeTwo, nextUnit, utc, timezone);\n\t}\n\telse {\n\t\treturn false;\n\t}\n}\n\n/**\n * Adds `count` of time `unit` to the source date. Returns a modified `Date` object.\n *\n * @param date Source date\n * @param unit Time unit\n * @param count Number of units to add\n * @return Modified date\n */\nexport function add(date: Date, unit: TimeUnit, count: number, utc?: boolean, timezone?: Timezone): Date {\n\tlet timeZoneOffset = 0;\n\n\tif (!utc && unit != \"millisecond\") {\n\t\ttimeZoneOffset = date.getTimezoneOffset();\n\n\t\tif (timezone) {\n\t\t\ttimeZoneOffset -= timezone.offsetUTC(date);\n\t\t}\n\n\t\tdate.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\n\t}\n\n\n\tswitch (unit) {\n\t\tcase \"day\":\n\t\t\tlet day: number = date.getUTCDate();\n\t\t\tdate.setUTCDate(day + count);\n\t\t\tbreak;\n\n\t\tcase \"second\":\n\t\t\tlet seconds: number = date.getUTCSeconds();\n\t\t\tdate.setUTCSeconds(seconds + count);\n\t\t\tbreak;\n\n\t\tcase \"millisecond\":\n\t\t\tlet milliseconds: number = date.getUTCMilliseconds();\n\t\t\tdate.setUTCMilliseconds(milliseconds + count);\n\t\t\tbreak;\n\n\t\tcase \"hour\":\n\t\t\tlet hours: number = date.getUTCHours();\n\t\t\tdate.setUTCHours(hours + count);\n\t\t\tbreak;\n\n\t\tcase \"minute\":\n\t\t\tlet minutes: number = date.getUTCMinutes();\n\t\t\tdate.setUTCMinutes(minutes + count);\n\t\t\tbreak;\n\n\t\tcase \"year\":\n\t\t\tlet year: number = date.getUTCFullYear();\n\t\t\tdate.setUTCFullYear(year + count);\n\t\t\tbreak;\n\n\t\tcase \"month\":\n\t\t\tlet month: number = date.getUTCMonth();\n\t\t\tdate.setUTCMonth(month + count);\n\t\t\tbreak;\n\n\t\tcase \"week\":\n\t\t\tlet wday: number = date.getUTCDate();\n\t\t\tdate.setUTCDate(wday + count * 7);\n\t\t\tbreak;\n\t}\n\n\n\tif (!utc && unit != \"millisecond\") {\n\t\tdate.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\n\t\tif (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\n\n\t\t\tlet newTimeZoneOffset = date.getTimezoneOffset();\n\n\t\t\tif (timezone) {\n\t\t\t\tnewTimeZoneOffset += timezone.offsetUTC(date);\n\t\t\t}\n\n\t\t\tif (newTimeZoneOffset != timeZoneOffset) {\n\t\t\t\tlet diff = newTimeZoneOffset - timeZoneOffset;\n\t\t\t\tdate.setUTCMinutes(date.getUTCMinutes() + diff);\n\n\t\t\t\t// solves issues if new time falls back to old time zone\n\t\t\t\tif (date.getTimezoneOffset() != newTimeZoneOffset) {\n\t\t\t\t\tdate.setUTCMinutes(date.getUTCMinutes() - diff);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn date;\n}\n\n/**\n * @ignore\n */\nexport function roun(time: number, unit: TimeUnit, count: number, root: Root, firstTime?: number): number {\n\tlet firstDate;\n\tif (firstTime != null) {\n\t\tfirstDate = new Date(firstTime);\n\t}\n\treturn round(new Date(time), unit, count, root.locale.firstDayOfWeek, root.utc, firstDate, root.timezone).getTime();\n}\n\n\n/**\n * \"Rounds\" the date to specific time unit.\n *\n * @param date Source date\n * @param unit Time unit\n * @param count Number of units to round to\n * @param firstDateOfWeek First day of week\n * @param utc Use UTC timezone\n * @param firstDate First date to round to\n * @param roundMinutes Minutes to round to (some timezones use non-whole hour)\n * @param timezone Use specific named timezone when rounding\n * @return New date\n */\nexport function round(date: Date, unit: TimeUnit, count: number, firstDateOfWeek?: number, utc?: boolean, firstDate?: Date, timezone?: Timezone): Date {\n\tif (!timezone || utc) {\n\n\t\tlet timeZoneOffset = 0;\n\n\t\tif (!utc && unit != \"millisecond\") {\n\t\t\ttimeZoneOffset = date.getTimezoneOffset();\n\t\t\tdate.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\n\t\t}\n\n\t\tswitch (unit) {\n\n\t\t\tcase \"day\":\n\t\t\t\tlet day = date.getUTCDate();\n\n\t\t\t\tif (count > 1) {\n\t\t\t\t\t//\tday = Math.floor(day / count) * count;\n\t\t\t\t\tif (firstDate) {\n\t\t\t\t\t\tfirstDate = round(firstDate, \"day\", 1);\n\n\t\t\t\t\t\tlet difference = date.getTime() - firstDate.getTime();\n\t\t\t\t\t\tlet unitCount = Math.floor(difference / getDuration(\"day\") / count);\n\t\t\t\t\t\tlet duration = getDuration(\"day\", unitCount * count);\n\t\t\t\t\t\tdate.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdate.setUTCDate(day);\n\t\t\t\t}\n\t\t\t\tdate.setUTCHours(0, 0, 0, 0);\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"second\":\n\t\t\t\tlet seconds = date.getUTCSeconds();\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tseconds = Math.floor(seconds / count) * count;\n\t\t\t\t}\n\t\t\t\tdate.setUTCSeconds(seconds, 0);\n\t\t\t\tbreak;\n\n\t\t\tcase \"millisecond\":\n\t\t\t\tif (count == 1) {\n\t\t\t\t\treturn date; // much better for perf!\n\t\t\t\t}\n\n\t\t\t\tlet milliseconds = date.getUTCMilliseconds();\n\t\t\t\tmilliseconds = Math.floor(milliseconds / count) * count;\n\t\t\t\tdate.setUTCMilliseconds(milliseconds);\n\t\t\t\tbreak;\n\n\t\t\tcase \"hour\":\n\n\t\t\t\tlet hours = date.getUTCHours();\n\t\t\t\tif (count > 1) {\n\t\t\t\t\thours = Math.floor(hours / count) * count;\n\t\t\t\t}\n\t\t\t\tdate.setUTCHours(hours, 0, 0, 0);\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"minute\":\n\n\t\t\t\tlet minutes = date.getUTCMinutes();\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tminutes = Math.floor(minutes / count) * count;\n\t\t\t\t}\n\n\t\t\t\tdate.setUTCMinutes(minutes, 0, 0);\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"month\":\n\n\t\t\t\tlet month = date.getUTCMonth();\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tmonth = Math.floor(month / count) * count;\n\t\t\t\t}\n\n\t\t\t\tdate.setUTCMonth(month, 1);\n\t\t\t\tdate.setUTCHours(0, 0, 0, 0);\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"year\":\n\n\t\t\t\tlet year = date.getUTCFullYear();\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tyear = Math.floor(year / count) * count;\n\t\t\t\t}\n\t\t\t\tdate.setUTCFullYear(year, 0, 1);\n\t\t\t\tdate.setUTCHours(0, 0, 0, 0);\n\t\t\t\tbreak;\n\n\t\t\tcase \"week\":\n\n\t\t\t\tlet wday = date.getUTCDate();\n\t\t\t\tlet weekDay = date.getUTCDay();\n\n\t\t\t\tif (!$type.isNumber(firstDateOfWeek)) {\n\t\t\t\t\tfirstDateOfWeek = 1;\n\t\t\t\t}\n\n\t\t\t\tif (weekDay >= firstDateOfWeek) {\n\t\t\t\t\twday = wday - weekDay + firstDateOfWeek;\n\t\t\t\t} else {\n\t\t\t\t\twday = wday - (7 + weekDay) + firstDateOfWeek;\n\t\t\t\t}\n\n\t\t\t\tdate.setUTCDate(wday);\n\t\t\t\tdate.setUTCHours(0, 0, 0, 0);\n\n\t\t\t\tbreak;\n\t\t}\n\t\tif (!utc && unit != \"millisecond\") {\n\t\t\tdate.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\n\n\t\t\tif (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\n\t\t\t\tlet newTimeZoneOffset = date.getTimezoneOffset();\n\t\t\t\tif (newTimeZoneOffset != timeZoneOffset) {\n\t\t\t\t\tlet diff = newTimeZoneOffset - timeZoneOffset;\n\n\t\t\t\t\tdate.setUTCMinutes(date.getUTCMinutes() + diff);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn date;\n\t}\n\telse {\n\t\tif (isNaN(date.getTime())) {\n\t\t\treturn date;\n\t\t}\n\t\tlet tzoffset = timezone.offsetUTC(date);\n\t\tlet timeZoneOffset = date.getTimezoneOffset();\n\t\tlet parsedDate = timezone.parseDate(date);\n\t\tlet year = parsedDate.year;\n\t\tlet month = parsedDate.month;\n\t\tlet day = parsedDate.day;\n\t\tlet hour = parsedDate.hour;\n\t\tlet minute = parsedDate.minute;\n\t\tlet second = parsedDate.second;\n\t\tlet millisecond = parsedDate.millisecond;\n\t\tlet weekday = parsedDate.weekday;\n\n\t\tlet offsetDif = tzoffset - timeZoneOffset;\n\n\t\tswitch (unit) {\n\n\t\t\tcase \"day\":\n\t\t\t\tif (count > 1 && firstDate) {\n\t\t\t\t\tfirstDate = round(firstDate, \"day\", 1, firstDateOfWeek, utc, undefined, timezone);\n\t\t\t\t\tlet difference = date.getTime() - firstDate.getTime();\n\t\t\t\t\tlet unitCount = Math.floor(difference / getDuration(\"day\") / count);\n\t\t\t\t\tlet duration = getDuration(\"day\", unitCount * count);\n\t\t\t\t\tdate.setTime(firstDate.getTime() + duration);\n\n\t\t\t\t\tparsedDate = timezone.parseDate(date);\n\n\t\t\t\t\tyear = parsedDate.year;\n\t\t\t\t\tmonth = parsedDate.month;\n\t\t\t\t\tday = parsedDate.day;\n\t\t\t\t}\n\n\t\t\t\thour = 0;\n\t\t\t\tminute = offsetDif;\n\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"second\":\n\t\t\t\tminute += offsetDif;\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tsecond = Math.floor(second / count) * count;\n\t\t\t\t}\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase \"millisecond\":\n\t\t\t\tminute += offsetDif;\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tmillisecond = Math.floor(millisecond / count) * count;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"hour\":\n\t\t\t\tif (count > 1) {\n\t\t\t\t\thour = Math.floor(hour / count) * count;\n\t\t\t\t}\n\t\t\t\tminute = offsetDif;\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase \"minute\":\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tminute = Math.floor(minute / count) * count;\n\t\t\t\t}\n\t\t\t\tminute += offsetDif;\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase \"month\":\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tmonth = Math.floor(month / count) * count;\n\t\t\t\t}\n\t\t\t\tday = 1;\n\t\t\t\thour = 0;\n\t\t\t\tminute = offsetDif;\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase \"year\":\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tyear = Math.floor(year / count) * count;\n\t\t\t\t}\n\t\t\t\tmonth = 0;\n\t\t\t\tday = 1;\n\t\t\t\thour = 0;\n\t\t\t\tminute = offsetDif;\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase \"week\":\n\t\t\t\tif (!$type.isNumber(firstDateOfWeek)) {\n\t\t\t\t\tfirstDateOfWeek = 1;\n\t\t\t\t}\n\n\t\t\t\tif (weekday >= firstDateOfWeek) {\n\t\t\t\t\tday = day - weekday + firstDateOfWeek;\n\t\t\t\t} else {\n\t\t\t\t\tday = day - (7 + weekday) + firstDateOfWeek;\n\t\t\t\t}\n\n\t\t\t\thour = 0;\n\t\t\t\tminute = offsetDif;\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tdate = new Date(year, month, day, hour, minute, second, millisecond);\n\n\t\tlet newTimeZoneOffset = date.getTimezoneOffset();\n\t\tlet newTzoffset = timezone.offsetUTC(date);\n\t\tlet newDiff = newTzoffset - newTimeZoneOffset;\n\n\t\tif (newDiff != offsetDif) {\n\t\t\tdate.setTime(date.getTime() + (newDiff - offsetDif) * 60000);\n\t\t}\n\n\t\treturn date;\n\t}\n}\n\n/**\n * @ignore\n */\nexport function chooseInterval(index: number, duration: number, gridCount: number, intervals: Array<ITimeInterval>): ITimeInterval {\n\tlet gridInterval: ITimeInterval = intervals[index];\n\tlet intervalDuration = getIntervalDuration(gridInterval);\n\n\tlet lastIndex = intervals.length - 1;\n\tif (index >= lastIndex) {\n\t\treturn { ...intervals[lastIndex] };\n\t}\n\n\tlet count = Math.ceil(duration / intervalDuration);\n\n\tif (duration < intervalDuration && index > 0) {\n\t\treturn { ...intervals[index - 1] };\n\t}\n\tif (count <= gridCount) {\n\t\treturn { ...intervals[index] };\n\t} else {\n\t\tif (index + 1 < intervals.length) {\n\t\t\treturn chooseInterval(index + 1, duration, gridCount, intervals);\n\t\t} else {\n\t\t\treturn { ...intervals[index] };\n\t\t}\n\t}\n}\n\n/**\n * @ignore\n */\nexport function getUnitValue(date: Date, unit: TimeUnit) {\n\tswitch (unit) {\n\t\tcase \"day\":\n\t\t\treturn date.getDate();\n\t\tcase \"second\":\n\t\t\treturn date.getSeconds();\n\t\tcase \"millisecond\":\n\t\t\treturn date.getMilliseconds();\n\t\tcase \"hour\":\n\t\t\treturn date.getHours();\n\t\tcase \"minute\":\n\t\t\treturn date.getMinutes();\n\t\tcase \"month\":\n\t\t\treturn date.getMonth();\n\t\tcase \"year\":\n\t\t\treturn date.getFullYear();\n\t\tcase \"week\":\n\t\t\treturn $utils.getWeek(date);\n\t}\n}\n"]}
1
+ {"version":3,"file":"Time.js","sourceRoot":"","sources":["../../../../../src/.internal/core/util/Time.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ============================================================================\n * IMPORTS\n * ============================================================================\n * @hidden\n */\nimport * as $type from \"./Type\";\nimport * as $utils from \"./Utils\";\nimport type { Timezone } from \"./Timezone\";\nimport type { Root } from \"../Root\";\n\nexport type TimeUnit = \"millisecond\" | \"second\" | \"minute\" | \"hour\" | \"day\" | \"week\" | \"month\" | \"year\";\n\nexport interface ITimeInterval {\n\ttimeUnit: TimeUnit;\n\tcount: number;\n}\n\n\n/**\n * Returns a `Promise` which can be used to execute code after number of\n * milliseconds.\n *\n * @param ms Sleep duration in ms\n * @return Promise\n */\nexport function sleep(ms: number): Promise<void> {\n\treturn new Promise((resolve, _reject) => {\n\t\tsetTimeout(resolve, ms);\n\t});\n}\n\n\n/**\n * Maps time period names to their numeric representations in milliseconds.\n *\n * @ignore Exclude from docs\n */\nexport let timeUnitDurations: { [Key in TimeUnit]: number } = {\n\tmillisecond: 1,\n\tsecond: 1000,\n\tminute: 60000,\n\thour: 3600000,\n\tday: 86400000,\n\tweek: 604800000,\n\tmonth: 365.242 / 12 * 86400000,\n\tyear: 31536000000\n};\n\n/**\n * Returns the next time unit that goes after source `unit`.\n *\n * E.g. \"hour\" is the next unit after \"minute\", etc.\n *\n * @ignore Exclude from docs\n * @param unit Source time unit\n * @return Next time unit\n */\nexport function getNextUnit(unit: TimeUnit): TimeUnit | undefined {\n\tswitch (unit) {\n\t\tcase \"year\":\n\t\t\treturn;\n\t\tcase \"month\":\n\t\t\treturn \"year\";\n\n\t\tcase \"week\":\n\t\t\treturn \"month\";\n\n\t\tcase \"day\":\n\t\t\treturn \"month\"; // not a mistake\n\n\t\tcase \"hour\":\n\t\t\treturn \"day\";\n\n\t\tcase \"minute\":\n\t\t\treturn \"hour\";\n\n\t\tcase \"second\":\n\t\t\treturn \"minute\"\n\n\t\tcase \"millisecond\":\n\t\t\treturn \"second\";\n\t}\n}\n\n/**\n * Returns number of milliseconds in the `count` of time `unit`.\n *\n * Available units: \"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\",\n * \"month\", and \"year\".\n *\n * @param unit Time unit\n * @param count Number of units\n * @return Milliseconds\n */\nexport function getDuration(unit: TimeUnit, count?: number): number {\n\tif (count == null) {\n\t\tcount = 1;\n\t}\n\treturn timeUnitDurations[unit] * count;\n}\n\n/**\n * @ignore\n */\nexport function getIntervalDuration(interval: ITimeInterval | undefined) {\n\tif (interval) {\n\t\treturn timeUnitDurations[interval.timeUnit] * interval.count;\n\t}\n\treturn 0;\n}\n\n\nexport function getDateIntervalDuration(interval: ITimeInterval, date: Date, firstDateOfWeek?: number, utc?: boolean, timezone?: Timezone) {\n\tconst unit = interval.timeUnit;\n\tconst count = interval.count;\n\tif (unit == \"hour\" || unit == \"minute\" || unit == \"second\" || unit == \"millisecond\") {\n\t\treturn timeUnitDurations[interval.timeUnit] * interval.count;\n\t}\n\telse {\n\t\tconst firstTime = round(new Date(date.getTime()), unit, count, firstDateOfWeek, utc, undefined, timezone).getTime();\n\t\tlet lastTime = firstTime + count * getDuration(unit) * 1.05;\n\t\tlastTime = round(new Date(lastTime), unit, 1, firstDateOfWeek, utc, undefined, timezone).getTime();\n\t\treturn lastTime - firstTime;\n\t}\n}\n\n/**\n * Returns current `Date` object.\n *\n * @return Current date\n */\nexport function now(): Date {\n\treturn new Date();\n}\n\n/**\n * Returns current timestamp.\n *\n * @return Current timestamp\n */\nexport function getTime(): number {\n\treturn now().getTime();\n}\n\n/**\n * Returns a copy of the `Date` object.\n *\n * @param date Source date\n * @return Copy\n */\nexport function copy(date: Date): Date {\n\treturn new Date(date.getTime()); // todo: check if this is ok. new Date(date) used to strip milliseconds on FF in v3\n}\n\n/**\n * Checks if the `unit` part of two `Date` objects do not match. Two dates\n * represent a \"range\" of time, rather the same time date.\n *\n * @param timeOne timestamp\n * @param timeTwo timestamp\n * @param unit Time unit to check\n * @return Range?\n */\nexport function checkChange(timeOne: number, timeTwo: number, unit: TimeUnit, utc?: boolean, timezone?: Timezone): boolean {\n\t// quick\n\tif ((timeTwo - timeOne) > getDuration(unit, 1.2)) {\n\t\treturn true;\n\t}\n\n\tlet dateOne = new Date(timeOne);\n\tlet dateTwo = new Date(timeTwo);\n\n\tif (timezone) {\n\t\tdateOne = timezone.convertLocal(dateOne);\n\t\tdateTwo = timezone.convertLocal(dateTwo);\n\t}\n\n\tlet timeZoneOffset1 = 0;\n\tlet timeZoneOffset2 = 0;\n\n\tif (!utc && unit != \"millisecond\") {\n\t\ttimeZoneOffset1 = dateOne.getTimezoneOffset();\n\t\tdateOne.setUTCMinutes(dateOne.getUTCMinutes() - timeZoneOffset1);\n\n\t\ttimeZoneOffset2 = dateTwo.getTimezoneOffset();\n\t\tdateTwo.setUTCMinutes(dateTwo.getUTCMinutes() - timeZoneOffset2);\n\t}\n\n\tlet changed = false;\n\tswitch (unit) {\n\t\tcase \"year\":\n\t\t\tif (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"month\":\n\t\t\tif (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\telse if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"day\":\n\t\t\tif (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\telse if (dateOne.getUTCDate() != dateTwo.getUTCDate()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase \"hour\":\n\t\t\tif (dateOne.getUTCHours() != dateTwo.getUTCHours()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"minute\":\n\t\t\tif (dateOne.getUTCMinutes() != dateTwo.getUTCMinutes()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase \"second\":\n\t\t\tif (dateOne.getUTCSeconds() != dateTwo.getUTCSeconds()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"millisecond\":\n\t\t\tif (dateOne.getTime() != dateTwo.getTime()) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\tif (changed) {\n\t\treturn changed;\n\t}\n\n\tlet nextUnit = getNextUnit(unit);\n\tif (nextUnit) {\n\t\treturn checkChange(timeOne, timeTwo, nextUnit, utc, timezone);\n\t}\n\telse {\n\t\treturn false;\n\t}\n}\n\n/**\n * Adds `count` of time `unit` to the source date. Returns a modified `Date` object.\n *\n * @param date Source date\n * @param unit Time unit\n * @param count Number of units to add\n * @return Modified date\n */\nexport function add(date: Date, unit: TimeUnit, count: number, utc?: boolean, timezone?: Timezone): Date {\n\tlet timeZoneOffset = 0;\n\n\tif (!utc && unit != \"millisecond\") {\n\t\ttimeZoneOffset = date.getTimezoneOffset();\n\n\t\tif (timezone) {\n\t\t\ttimeZoneOffset -= timezone.offsetUTC(date);\n\t\t}\n\n\t\tdate.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\n\t}\n\n\n\tswitch (unit) {\n\t\tcase \"day\":\n\t\t\tlet day: number = date.getUTCDate();\n\t\t\tdate.setUTCDate(day + count);\n\t\t\tbreak;\n\n\t\tcase \"second\":\n\t\t\tlet seconds: number = date.getUTCSeconds();\n\t\t\tdate.setUTCSeconds(seconds + count);\n\t\t\tbreak;\n\n\t\tcase \"millisecond\":\n\t\t\tlet milliseconds: number = date.getUTCMilliseconds();\n\t\t\tdate.setUTCMilliseconds(milliseconds + count);\n\t\t\tbreak;\n\n\t\tcase \"hour\":\n\t\t\tlet hours: number = date.getUTCHours();\n\t\t\tdate.setUTCHours(hours + count);\n\t\t\tbreak;\n\n\t\tcase \"minute\":\n\t\t\tlet minutes: number = date.getUTCMinutes();\n\t\t\tdate.setUTCMinutes(minutes + count);\n\t\t\tbreak;\n\n\t\tcase \"year\":\n\t\t\tlet year: number = date.getUTCFullYear();\n\t\t\tdate.setUTCFullYear(year + count);\n\t\t\tbreak;\n\n\t\tcase \"month\":\n\t\t\tconst endDays = date.getUTCDate();\n\t\t\tconst startDays = new Date(date.getUTCFullYear(), date.getUTCMonth(), 0).getUTCDate();\n\t\t\tlet month: number = date.getUTCMonth();\n\t\t\tif (endDays > startDays) {\n\t\t\t\tdate.setUTCMonth(month + count, startDays);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdate.setUTCMonth(month + count);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"week\":\n\t\t\tlet wday: number = date.getUTCDate();\n\t\t\tdate.setUTCDate(wday + count * 7);\n\t\t\tbreak;\n\t}\n\n\n\tif (!utc && unit != \"millisecond\") {\n\t\tdate.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\n\t\tif (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\n\n\t\t\tlet newTimeZoneOffset = date.getTimezoneOffset();\n\n\t\t\tif (timezone) {\n\t\t\t\tnewTimeZoneOffset += timezone.offsetUTC(date);\n\t\t\t}\n\n\t\t\tif (newTimeZoneOffset != timeZoneOffset) {\n\t\t\t\tlet diff = newTimeZoneOffset - timeZoneOffset;\n\t\t\t\tdate.setUTCMinutes(date.getUTCMinutes() + diff);\n\n\t\t\t\t// solves issues if new time falls back to old time zone\n\t\t\t\tif (date.getTimezoneOffset() != newTimeZoneOffset) {\n\t\t\t\t\tdate.setUTCMinutes(date.getUTCMinutes() - diff);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn date;\n}\n\n/**\n * @ignore\n */\nexport function roun(time: number, unit: TimeUnit, count: number, root: Root, firstTime?: number): number {\n\tlet firstDate;\n\tif (firstTime != null) {\n\t\tfirstDate = new Date(firstTime);\n\t}\n\treturn round(new Date(time), unit, count, root.locale.firstDayOfWeek, root.utc, firstDate, root.timezone).getTime();\n}\n\n\n/**\n * \"Rounds\" the date to specific time unit.\n *\n * @param date Source date\n * @param unit Time unit\n * @param count Number of units to round to\n * @param firstDateOfWeek First day of week\n * @param utc Use UTC timezone\n * @param firstDate First date to round to\n * @param roundMinutes Minutes to round to (some timezones use non-whole hour)\n * @param timezone Use specific named timezone when rounding\n * @return New date\n */\nexport function round(date: Date, unit: TimeUnit, count: number, firstDateOfWeek?: number, utc?: boolean, firstDate?: Date, timezone?: Timezone): Date {\n\tif (!timezone || utc) {\n\n\t\tlet timeZoneOffset = 0;\n\n\t\tif (!utc && unit != \"millisecond\") {\n\t\t\ttimeZoneOffset = date.getTimezoneOffset();\n\t\t\tdate.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\n\t\t}\n\n\t\tswitch (unit) {\n\n\t\t\tcase \"day\":\n\t\t\t\tlet day = date.getUTCDate();\n\n\t\t\t\tif (count > 1) {\n\t\t\t\t\t//\tday = Math.floor(day / count) * count;\n\t\t\t\t\tif (firstDate) {\n\t\t\t\t\t\tfirstDate = round(firstDate, \"day\", 1);\n\n\t\t\t\t\t\tlet difference = date.getTime() - firstDate.getTime();\n\t\t\t\t\t\tlet unitCount = Math.floor(difference / getDuration(\"day\") / count);\n\t\t\t\t\t\tlet duration = getDuration(\"day\", unitCount * count);\n\t\t\t\t\t\tdate.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdate.setUTCDate(day);\n\t\t\t\t}\n\t\t\t\tdate.setUTCHours(0, 0, 0, 0);\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"second\":\n\t\t\t\tlet seconds = date.getUTCSeconds();\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tseconds = Math.floor(seconds / count) * count;\n\t\t\t\t}\n\t\t\t\tdate.setUTCSeconds(seconds, 0);\n\t\t\t\tbreak;\n\n\t\t\tcase \"millisecond\":\n\t\t\t\tif (count == 1) {\n\t\t\t\t\treturn date; // much better for perf!\n\t\t\t\t}\n\n\t\t\t\tlet milliseconds = date.getUTCMilliseconds();\n\t\t\t\tmilliseconds = Math.floor(milliseconds / count) * count;\n\t\t\t\tdate.setUTCMilliseconds(milliseconds);\n\t\t\t\tbreak;\n\n\t\t\tcase \"hour\":\n\n\t\t\t\tlet hours = date.getUTCHours();\n\t\t\t\tif (count > 1) {\n\t\t\t\t\thours = Math.floor(hours / count) * count;\n\t\t\t\t}\n\t\t\t\tdate.setUTCHours(hours, 0, 0, 0);\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"minute\":\n\n\t\t\t\tlet minutes = date.getUTCMinutes();\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tminutes = Math.floor(minutes / count) * count;\n\t\t\t\t}\n\n\t\t\t\tdate.setUTCMinutes(minutes, 0, 0);\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"month\":\n\n\t\t\t\tlet month = date.getUTCMonth();\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tmonth = Math.floor(month / count) * count;\n\t\t\t\t}\n\n\t\t\t\tdate.setUTCMonth(month, 1);\n\t\t\t\tdate.setUTCHours(0, 0, 0, 0);\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"year\":\n\n\t\t\t\tlet year = date.getUTCFullYear();\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tyear = Math.floor(year / count) * count;\n\t\t\t\t}\n\t\t\t\tdate.setUTCFullYear(year, 0, 1);\n\t\t\t\tdate.setUTCHours(0, 0, 0, 0);\n\t\t\t\tbreak;\n\n\t\t\tcase \"week\":\n\n\t\t\t\tlet wday = date.getUTCDate();\n\t\t\t\tlet weekDay = date.getUTCDay();\n\n\t\t\t\tif (!$type.isNumber(firstDateOfWeek)) {\n\t\t\t\t\tfirstDateOfWeek = 1;\n\t\t\t\t}\n\n\t\t\t\tif (weekDay >= firstDateOfWeek) {\n\t\t\t\t\twday = wday - weekDay + firstDateOfWeek;\n\t\t\t\t} else {\n\t\t\t\t\twday = wday - (7 + weekDay) + firstDateOfWeek;\n\t\t\t\t}\n\n\t\t\t\tdate.setUTCDate(wday);\n\t\t\t\tdate.setUTCHours(0, 0, 0, 0);\n\n\t\t\t\tbreak;\n\t\t}\n\t\tif (!utc && unit != \"millisecond\") {\n\t\t\tdate.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\n\n\t\t\tif (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\n\t\t\t\tlet newTimeZoneOffset = date.getTimezoneOffset();\n\t\t\t\tif (newTimeZoneOffset != timeZoneOffset) {\n\t\t\t\t\tlet diff = newTimeZoneOffset - timeZoneOffset;\n\n\t\t\t\t\tdate.setUTCMinutes(date.getUTCMinutes() + diff);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn date;\n\t}\n\telse {\n\t\tif (isNaN(date.getTime())) {\n\t\t\treturn date;\n\t\t}\n\t\tlet tzoffset = timezone.offsetUTC(date);\n\t\tlet timeZoneOffset = date.getTimezoneOffset();\n\t\tlet parsedDate = timezone.parseDate(date);\n\t\tlet year = parsedDate.year;\n\t\tlet month = parsedDate.month;\n\t\tlet day = parsedDate.day;\n\t\tlet hour = parsedDate.hour;\n\t\tlet minute = parsedDate.minute;\n\t\tlet second = parsedDate.second;\n\t\tlet millisecond = parsedDate.millisecond;\n\t\tlet weekday = parsedDate.weekday;\n\n\t\tlet offsetDif = tzoffset - timeZoneOffset;\n\n\t\tswitch (unit) {\n\n\t\t\tcase \"day\":\n\t\t\t\tif (count > 1 && firstDate) {\n\t\t\t\t\tfirstDate = round(firstDate, \"day\", 1, firstDateOfWeek, utc, undefined, timezone);\n\t\t\t\t\tlet difference = date.getTime() - firstDate.getTime();\n\t\t\t\t\tlet unitCount = Math.floor(difference / getDuration(\"day\") / count);\n\t\t\t\t\tlet duration = getDuration(\"day\", unitCount * count);\n\t\t\t\t\tdate.setTime(firstDate.getTime() + duration);\n\n\t\t\t\t\tparsedDate = timezone.parseDate(date);\n\n\t\t\t\t\tyear = parsedDate.year;\n\t\t\t\t\tmonth = parsedDate.month;\n\t\t\t\t\tday = parsedDate.day;\n\t\t\t\t}\n\n\t\t\t\thour = 0;\n\t\t\t\tminute = offsetDif;\n\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\n\t\t\t\tbreak;\n\n\t\t\tcase \"second\":\n\t\t\t\tminute += offsetDif;\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tsecond = Math.floor(second / count) * count;\n\t\t\t\t}\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase \"millisecond\":\n\t\t\t\tminute += offsetDif;\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tmillisecond = Math.floor(millisecond / count) * count;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"hour\":\n\t\t\t\tif (count > 1) {\n\t\t\t\t\thour = Math.floor(hour / count) * count;\n\t\t\t\t}\n\t\t\t\tminute = offsetDif;\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase \"minute\":\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tminute = Math.floor(minute / count) * count;\n\t\t\t\t}\n\t\t\t\tminute += offsetDif;\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase \"month\":\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tmonth = Math.floor(month / count) * count;\n\t\t\t\t}\n\t\t\t\tday = 1;\n\t\t\t\thour = 0;\n\t\t\t\tminute = offsetDif;\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase \"year\":\n\t\t\t\tif (count > 1) {\n\t\t\t\t\tyear = Math.floor(year / count) * count;\n\t\t\t\t}\n\t\t\t\tmonth = 0;\n\t\t\t\tday = 1;\n\t\t\t\thour = 0;\n\t\t\t\tminute = offsetDif;\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\n\t\t\tcase \"week\":\n\t\t\t\tif (!$type.isNumber(firstDateOfWeek)) {\n\t\t\t\t\tfirstDateOfWeek = 1;\n\t\t\t\t}\n\n\t\t\t\tif (weekday >= firstDateOfWeek) {\n\t\t\t\t\tday = day - weekday + firstDateOfWeek;\n\t\t\t\t} else {\n\t\t\t\t\tday = day - (7 + weekday) + firstDateOfWeek;\n\t\t\t\t}\n\n\t\t\t\thour = 0;\n\t\t\t\tminute = offsetDif;\n\t\t\t\tsecond = 0;\n\t\t\t\tmillisecond = 0;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tdate = new Date(year, month, day, hour, minute, second, millisecond);\n\n\t\tlet newTimeZoneOffset = date.getTimezoneOffset();\n\t\tlet newTzoffset = timezone.offsetUTC(date);\n\t\tlet newDiff = newTzoffset - newTimeZoneOffset;\n\n\t\tif (newDiff != offsetDif) {\n\t\t\tdate.setTime(date.getTime() + (newDiff - offsetDif) * 60000);\n\t\t}\n\n\t\treturn date;\n\t}\n}\n\n/**\n * @ignore\n */\nexport function chooseInterval(index: number, duration: number, gridCount: number, intervals: Array<ITimeInterval>): ITimeInterval {\n\tlet gridInterval: ITimeInterval = intervals[index];\n\tlet intervalDuration = getIntervalDuration(gridInterval);\n\n\tlet lastIndex = intervals.length - 1;\n\tif (index >= lastIndex) {\n\t\treturn { ...intervals[lastIndex] };\n\t}\n\n\tlet count = Math.ceil(duration / intervalDuration);\n\n\tif (duration < intervalDuration && index > 0) {\n\t\treturn { ...intervals[index - 1] };\n\t}\n\tif (count <= gridCount) {\n\t\treturn { ...intervals[index] };\n\t} else {\n\t\tif (index + 1 < intervals.length) {\n\t\t\treturn chooseInterval(index + 1, duration, gridCount, intervals);\n\t\t} else {\n\t\t\treturn { ...intervals[index] };\n\t\t}\n\t}\n}\n\n/**\n * @ignore\n */\nexport function getUnitValue(date: Date, unit: TimeUnit) {\n\tswitch (unit) {\n\t\tcase \"day\":\n\t\t\treturn date.getDate();\n\t\tcase \"second\":\n\t\t\treturn date.getSeconds();\n\t\tcase \"millisecond\":\n\t\t\treturn date.getMilliseconds();\n\t\tcase \"hour\":\n\t\t\treturn date.getHours();\n\t\tcase \"minute\":\n\t\t\treturn date.getMinutes();\n\t\tcase \"month\":\n\t\t\treturn date.getMonth();\n\t\tcase \"year\":\n\t\t\treturn date.getFullYear();\n\t\tcase \"week\":\n\t\t\treturn $utils.getWeek(date);\n\t}\n}\n"]}