@amcharts/amcharts5 5.0.0-beta.3 → 5.0.0-beta.30

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 (1037) hide show
  1. package/.internal/charts/flow/Chord.d.ts +0 -12
  2. package/.internal/charts/flow/Chord.d.ts.map +1 -1
  3. package/.internal/charts/flow/Chord.js +6 -24
  4. package/.internal/charts/flow/Chord.js.map +1 -1
  5. package/.internal/charts/flow/ChordDirected.d.ts +0 -12
  6. package/.internal/charts/flow/ChordDirected.d.ts.map +1 -1
  7. package/.internal/charts/flow/ChordDirected.js +6 -24
  8. package/.internal/charts/flow/ChordDirected.js.map +1 -1
  9. package/.internal/charts/flow/ChordLink.d.ts +0 -12
  10. package/.internal/charts/flow/ChordLink.d.ts.map +1 -1
  11. package/.internal/charts/flow/ChordLink.js +1 -20
  12. package/.internal/charts/flow/ChordLink.js.map +1 -1
  13. package/.internal/charts/flow/ChordLinkDirected.d.ts +1 -12
  14. package/.internal/charts/flow/ChordLinkDirected.d.ts.map +1 -1
  15. package/.internal/charts/flow/ChordLinkDirected.js +4 -15
  16. package/.internal/charts/flow/ChordLinkDirected.js.map +1 -1
  17. package/.internal/charts/flow/ChordNodes.d.ts +0 -12
  18. package/.internal/charts/flow/ChordNodes.d.ts.map +1 -1
  19. package/.internal/charts/flow/ChordNodes.js +6 -22
  20. package/.internal/charts/flow/ChordNodes.js.map +1 -1
  21. package/.internal/charts/flow/ChordNonRibbon.d.ts +1 -12
  22. package/.internal/charts/flow/ChordNonRibbon.d.ts.map +1 -1
  23. package/.internal/charts/flow/ChordNonRibbon.js +5 -16
  24. package/.internal/charts/flow/ChordNonRibbon.js.map +1 -1
  25. package/.internal/charts/flow/Flow.d.ts +2 -1
  26. package/.internal/charts/flow/Flow.d.ts.map +1 -1
  27. package/.internal/charts/flow/Flow.js +78 -63
  28. package/.internal/charts/flow/Flow.js.map +1 -1
  29. package/.internal/charts/flow/FlowNode.d.ts +0 -12
  30. package/.internal/charts/flow/FlowNode.d.ts.map +1 -1
  31. package/.internal/charts/flow/FlowNode.js +0 -19
  32. package/.internal/charts/flow/FlowNode.js.map +1 -1
  33. package/.internal/charts/flow/FlowNodes.d.ts +19 -1
  34. package/.internal/charts/flow/FlowNodes.d.ts.map +1 -1
  35. package/.internal/charts/flow/FlowNodes.js +25 -13
  36. package/.internal/charts/flow/FlowNodes.js.map +1 -1
  37. package/.internal/charts/flow/Sankey.d.ts +2 -12
  38. package/.internal/charts/flow/Sankey.d.ts.map +1 -1
  39. package/.internal/charts/flow/Sankey.js +16 -21
  40. package/.internal/charts/flow/Sankey.js.map +1 -1
  41. package/.internal/charts/flow/SankeyLink.d.ts +0 -12
  42. package/.internal/charts/flow/SankeyLink.d.ts.map +1 -1
  43. package/.internal/charts/flow/SankeyLink.js +5 -24
  44. package/.internal/charts/flow/SankeyLink.js.map +1 -1
  45. package/.internal/charts/flow/SankeyNodes.d.ts +0 -12
  46. package/.internal/charts/flow/SankeyNodes.d.ts.map +1 -1
  47. package/.internal/charts/flow/SankeyNodes.js +6 -24
  48. package/.internal/charts/flow/SankeyNodes.js.map +1 -1
  49. package/.internal/charts/funnel/FunnelSeries.d.ts +0 -12
  50. package/.internal/charts/funnel/FunnelSeries.d.ts.map +1 -1
  51. package/.internal/charts/funnel/FunnelSeries.js +16 -35
  52. package/.internal/charts/funnel/FunnelSeries.js.map +1 -1
  53. package/.internal/charts/funnel/FunnelSlice.d.ts +0 -12
  54. package/.internal/charts/funnel/FunnelSlice.d.ts.map +1 -1
  55. package/.internal/charts/funnel/FunnelSlice.js +0 -21
  56. package/.internal/charts/funnel/FunnelSlice.js.map +1 -1
  57. package/.internal/charts/funnel/PictorialStackedSeries.d.ts +1 -12
  58. package/.internal/charts/funnel/PictorialStackedSeries.d.ts.map +1 -1
  59. package/.internal/charts/funnel/PictorialStackedSeries.js +13 -20
  60. package/.internal/charts/funnel/PictorialStackedSeries.js.map +1 -1
  61. package/.internal/charts/funnel/PyramidSeries.d.ts +0 -12
  62. package/.internal/charts/funnel/PyramidSeries.d.ts.map +1 -1
  63. package/.internal/charts/funnel/PyramidSeries.js +0 -19
  64. package/.internal/charts/funnel/PyramidSeries.js.map +1 -1
  65. package/.internal/charts/funnel/SlicedChart.d.ts +0 -12
  66. package/.internal/charts/funnel/SlicedChart.d.ts.map +1 -1
  67. package/.internal/charts/funnel/SlicedChart.js +0 -19
  68. package/.internal/charts/funnel/SlicedChart.js.map +1 -1
  69. package/.internal/charts/hierarchy/BreadcrumbBar.d.ts +1 -12
  70. package/.internal/charts/hierarchy/BreadcrumbBar.d.ts.map +1 -1
  71. package/.internal/charts/hierarchy/BreadcrumbBar.js +7 -17
  72. package/.internal/charts/hierarchy/BreadcrumbBar.js.map +1 -1
  73. package/.internal/charts/hierarchy/ForceDirected.d.ts +2 -12
  74. package/.internal/charts/hierarchy/ForceDirected.d.ts.map +1 -1
  75. package/.internal/charts/hierarchy/ForceDirected.js +27 -22
  76. package/.internal/charts/hierarchy/ForceDirected.js.map +1 -1
  77. package/.internal/charts/hierarchy/Hierarchy.d.ts +7 -0
  78. package/.internal/charts/hierarchy/Hierarchy.d.ts.map +1 -1
  79. package/.internal/charts/hierarchy/Hierarchy.js +38 -16
  80. package/.internal/charts/hierarchy/Hierarchy.js.map +1 -1
  81. package/.internal/charts/hierarchy/HierarchyLink.d.ts +1 -12
  82. package/.internal/charts/hierarchy/HierarchyLink.d.ts.map +1 -1
  83. package/.internal/charts/hierarchy/HierarchyLink.js +0 -19
  84. package/.internal/charts/hierarchy/HierarchyLink.js.map +1 -1
  85. package/.internal/charts/hierarchy/HierarchyNode.d.ts +0 -12
  86. package/.internal/charts/hierarchy/HierarchyNode.d.ts.map +1 -1
  87. package/.internal/charts/hierarchy/HierarchyNode.js +0 -19
  88. package/.internal/charts/hierarchy/HierarchyNode.js.map +1 -1
  89. package/.internal/charts/hierarchy/LinkedHierarchy.d.ts +14 -1
  90. package/.internal/charts/hierarchy/LinkedHierarchy.d.ts.map +1 -1
  91. package/.internal/charts/hierarchy/LinkedHierarchy.js +102 -19
  92. package/.internal/charts/hierarchy/LinkedHierarchy.js.map +1 -1
  93. package/.internal/charts/hierarchy/LinkedHierarchyNode.d.ts +0 -12
  94. package/.internal/charts/hierarchy/LinkedHierarchyNode.d.ts.map +1 -1
  95. package/.internal/charts/hierarchy/LinkedHierarchyNode.js +0 -19
  96. package/.internal/charts/hierarchy/LinkedHierarchyNode.js.map +1 -1
  97. package/.internal/charts/hierarchy/Pack.d.ts +0 -12
  98. package/.internal/charts/hierarchy/Pack.d.ts.map +1 -1
  99. package/.internal/charts/hierarchy/Pack.js +6 -24
  100. package/.internal/charts/hierarchy/Pack.js.map +1 -1
  101. package/.internal/charts/hierarchy/Partition.d.ts +0 -12
  102. package/.internal/charts/hierarchy/Partition.d.ts.map +1 -1
  103. package/.internal/charts/hierarchy/Partition.js +7 -24
  104. package/.internal/charts/hierarchy/Partition.js.map +1 -1
  105. package/.internal/charts/hierarchy/Sunburst.d.ts +0 -11
  106. package/.internal/charts/hierarchy/Sunburst.d.ts.map +1 -1
  107. package/.internal/charts/hierarchy/Sunburst.js +17 -27
  108. package/.internal/charts/hierarchy/Sunburst.js.map +1 -1
  109. package/.internal/charts/hierarchy/Tree.d.ts +0 -12
  110. package/.internal/charts/hierarchy/Tree.d.ts.map +1 -1
  111. package/.internal/charts/hierarchy/Tree.js +0 -19
  112. package/.internal/charts/hierarchy/Tree.js.map +1 -1
  113. package/.internal/charts/hierarchy/Treemap.d.ts +1 -12
  114. package/.internal/charts/hierarchy/Treemap.d.ts.map +1 -1
  115. package/.internal/charts/hierarchy/Treemap.js +6 -24
  116. package/.internal/charts/hierarchy/Treemap.js.map +1 -1
  117. package/.internal/charts/map/GraticuleSeries.d.ts +0 -12
  118. package/.internal/charts/map/GraticuleSeries.d.ts.map +1 -1
  119. package/.internal/charts/map/GraticuleSeries.js +1 -20
  120. package/.internal/charts/map/GraticuleSeries.js.map +1 -1
  121. package/.internal/charts/map/MapChart.d.ts +8 -32
  122. package/.internal/charts/map/MapChart.d.ts.map +1 -1
  123. package/.internal/charts/map/MapChart.js +198 -180
  124. package/.internal/charts/map/MapChart.js.map +1 -1
  125. package/.internal/charts/map/MapLine.d.ts +1 -13
  126. package/.internal/charts/map/MapLine.d.ts.map +1 -1
  127. package/.internal/charts/map/MapLine.js +14 -25
  128. package/.internal/charts/map/MapLine.js.map +1 -1
  129. package/.internal/charts/map/MapLineSeries.d.ts +13 -14
  130. package/.internal/charts/map/MapLineSeries.d.ts.map +1 -1
  131. package/.internal/charts/map/MapLineSeries.js +34 -26
  132. package/.internal/charts/map/MapLineSeries.js.map +1 -1
  133. package/.internal/charts/map/MapPointSeries.d.ts +16 -14
  134. package/.internal/charts/map/MapPointSeries.d.ts.map +1 -1
  135. package/.internal/charts/map/MapPointSeries.js +28 -27
  136. package/.internal/charts/map/MapPointSeries.js.map +1 -1
  137. package/.internal/charts/map/MapPolygon.d.ts +0 -12
  138. package/.internal/charts/map/MapPolygon.d.ts.map +1 -1
  139. package/.internal/charts/map/MapPolygon.js +0 -19
  140. package/.internal/charts/map/MapPolygon.js.map +1 -1
  141. package/.internal/charts/map/MapPolygonSeries.d.ts +1 -12
  142. package/.internal/charts/map/MapPolygonSeries.d.ts.map +1 -1
  143. package/.internal/charts/map/MapPolygonSeries.js +17 -20
  144. package/.internal/charts/map/MapPolygonSeries.js.map +1 -1
  145. package/.internal/charts/map/MapSeries.d.ts +3 -3
  146. package/.internal/charts/map/MapSeries.d.ts.map +1 -1
  147. package/.internal/charts/map/MapSeries.js +30 -8
  148. package/.internal/charts/map/MapSeries.js.map +1 -1
  149. package/.internal/charts/map/MapUtils.d.ts.map +1 -1
  150. package/.internal/charts/map/MapUtils.js +6 -1
  151. package/.internal/charts/map/MapUtils.js.map +1 -1
  152. package/.internal/charts/map/ZoomControl.d.ts +0 -12
  153. package/.internal/charts/map/ZoomControl.d.ts.map +1 -1
  154. package/.internal/charts/map/ZoomControl.js +0 -19
  155. package/.internal/charts/map/ZoomControl.js.map +1 -1
  156. package/.internal/charts/percent/PercentSeries.d.ts +29 -0
  157. package/.internal/charts/percent/PercentSeries.d.ts.map +1 -1
  158. package/.internal/charts/percent/PercentSeries.js +32 -6
  159. package/.internal/charts/percent/PercentSeries.js.map +1 -1
  160. package/.internal/charts/pie/PieChart.d.ts +0 -12
  161. package/.internal/charts/pie/PieChart.d.ts.map +1 -1
  162. package/.internal/charts/pie/PieChart.js +0 -19
  163. package/.internal/charts/pie/PieChart.js.map +1 -1
  164. package/.internal/charts/pie/PieSeries.d.ts +1 -12
  165. package/.internal/charts/pie/PieSeries.d.ts.map +1 -1
  166. package/.internal/charts/pie/PieSeries.js +27 -35
  167. package/.internal/charts/pie/PieSeries.js.map +1 -1
  168. package/.internal/charts/radar/AxisRendererCircular.d.ts +0 -12
  169. package/.internal/charts/radar/AxisRendererCircular.d.ts.map +1 -1
  170. package/.internal/charts/radar/AxisRendererCircular.js +37 -54
  171. package/.internal/charts/radar/AxisRendererCircular.js.map +1 -1
  172. package/.internal/charts/radar/AxisRendererRadial.d.ts +0 -12
  173. package/.internal/charts/radar/AxisRendererRadial.d.ts.map +1 -1
  174. package/.internal/charts/radar/AxisRendererRadial.js +4 -23
  175. package/.internal/charts/radar/AxisRendererRadial.js.map +1 -1
  176. package/.internal/charts/radar/ClockHand.d.ts +0 -12
  177. package/.internal/charts/radar/ClockHand.d.ts.map +1 -1
  178. package/.internal/charts/radar/ClockHand.js +10 -23
  179. package/.internal/charts/radar/ClockHand.js.map +1 -1
  180. package/.internal/charts/radar/RadarChart.d.ts +1 -12
  181. package/.internal/charts/radar/RadarChart.d.ts.map +1 -1
  182. package/.internal/charts/radar/RadarChart.js +12 -20
  183. package/.internal/charts/radar/RadarChart.js.map +1 -1
  184. package/.internal/charts/radar/RadarColumnSeries.d.ts +0 -13
  185. package/.internal/charts/radar/RadarColumnSeries.d.ts.map +1 -1
  186. package/.internal/charts/radar/RadarColumnSeries.js +28 -27
  187. package/.internal/charts/radar/RadarColumnSeries.js.map +1 -1
  188. package/.internal/charts/radar/RadarCursor.d.ts +1 -12
  189. package/.internal/charts/radar/RadarCursor.d.ts.map +1 -1
  190. package/.internal/charts/radar/RadarCursor.js +11 -19
  191. package/.internal/charts/radar/RadarCursor.js.map +1 -1
  192. package/.internal/charts/radar/RadarLineSeries.d.ts +0 -12
  193. package/.internal/charts/radar/RadarLineSeries.d.ts.map +1 -1
  194. package/.internal/charts/radar/RadarLineSeries.js +0 -19
  195. package/.internal/charts/radar/RadarLineSeries.js.map +1 -1
  196. package/.internal/charts/radar/SmoothedRadarLineSeries.d.ts +0 -12
  197. package/.internal/charts/radar/SmoothedRadarLineSeries.d.ts.map +1 -1
  198. package/.internal/charts/radar/SmoothedRadarLineSeries.js +0 -19
  199. package/.internal/charts/radar/SmoothedRadarLineSeries.js.map +1 -1
  200. package/.internal/charts/xy/XYChart.d.ts +27 -25
  201. package/.internal/charts/xy/XYChart.d.ts.map +1 -1
  202. package/.internal/charts/xy/XYChart.js +263 -245
  203. package/.internal/charts/xy/XYChart.js.map +1 -1
  204. package/.internal/charts/xy/XYChartScrollbar.d.ts +0 -12
  205. package/.internal/charts/xy/XYChartScrollbar.d.ts.map +1 -1
  206. package/.internal/charts/xy/XYChartScrollbar.js +18 -27
  207. package/.internal/charts/xy/XYChartScrollbar.js.map +1 -1
  208. package/.internal/charts/xy/XYCursor.d.ts +3 -14
  209. package/.internal/charts/xy/XYCursor.d.ts.map +1 -1
  210. package/.internal/charts/xy/XYCursor.js +69 -43
  211. package/.internal/charts/xy/XYCursor.js.map +1 -1
  212. package/.internal/charts/xy/axes/Axis.d.ts +25 -4
  213. package/.internal/charts/xy/axes/Axis.d.ts.map +1 -1
  214. package/.internal/charts/xy/axes/Axis.js +70 -56
  215. package/.internal/charts/xy/axes/Axis.js.map +1 -1
  216. package/.internal/charts/xy/axes/AxisBullet.d.ts +0 -12
  217. package/.internal/charts/xy/axes/AxisBullet.d.ts.map +1 -1
  218. package/.internal/charts/xy/axes/AxisBullet.js +4 -22
  219. package/.internal/charts/xy/axes/AxisBullet.js.map +1 -1
  220. package/.internal/charts/xy/axes/AxisLabel.d.ts +0 -12
  221. package/.internal/charts/xy/axes/AxisLabel.d.ts.map +1 -1
  222. package/.internal/charts/xy/axes/AxisLabel.js +0 -19
  223. package/.internal/charts/xy/axes/AxisLabel.js.map +1 -1
  224. package/.internal/charts/xy/axes/AxisLabelRadial.d.ts +0 -12
  225. package/.internal/charts/xy/axes/AxisLabelRadial.d.ts.map +1 -1
  226. package/.internal/charts/xy/axes/AxisLabelRadial.js +0 -19
  227. package/.internal/charts/xy/axes/AxisLabelRadial.js.map +1 -1
  228. package/.internal/charts/xy/axes/AxisRenderer.d.ts.map +1 -1
  229. package/.internal/charts/xy/axes/AxisRenderer.js +24 -15
  230. package/.internal/charts/xy/axes/AxisRenderer.js.map +1 -1
  231. package/.internal/charts/xy/axes/AxisRendererX.d.ts +0 -11
  232. package/.internal/charts/xy/axes/AxisRendererX.d.ts.map +1 -1
  233. package/.internal/charts/xy/axes/AxisRendererX.js +20 -33
  234. package/.internal/charts/xy/axes/AxisRendererX.js.map +1 -1
  235. package/.internal/charts/xy/axes/AxisRendererY.d.ts +0 -11
  236. package/.internal/charts/xy/axes/AxisRendererY.d.ts.map +1 -1
  237. package/.internal/charts/xy/axes/AxisRendererY.js +34 -40
  238. package/.internal/charts/xy/axes/AxisRendererY.js.map +1 -1
  239. package/.internal/charts/xy/axes/AxisTick.d.ts +0 -12
  240. package/.internal/charts/xy/axes/AxisTick.d.ts.map +1 -1
  241. package/.internal/charts/xy/axes/AxisTick.js +0 -19
  242. package/.internal/charts/xy/axes/AxisTick.js.map +1 -1
  243. package/.internal/charts/xy/axes/CategoryAxis.d.ts +8 -12
  244. package/.internal/charts/xy/axes/CategoryAxis.d.ts.map +1 -1
  245. package/.internal/charts/xy/axes/CategoryAxis.js +11 -25
  246. package/.internal/charts/xy/axes/CategoryAxis.js.map +1 -1
  247. package/.internal/charts/xy/axes/CategoryDateAxis.d.ts +0 -12
  248. package/.internal/charts/xy/axes/CategoryDateAxis.d.ts.map +1 -1
  249. package/.internal/charts/xy/axes/CategoryDateAxis.js +1 -20
  250. package/.internal/charts/xy/axes/CategoryDateAxis.js.map +1 -1
  251. package/.internal/charts/xy/axes/DateAxis.d.ts +3 -15
  252. package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
  253. package/.internal/charts/xy/axes/DateAxis.js +14 -33
  254. package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
  255. package/.internal/charts/xy/axes/Grid.d.ts +0 -12
  256. package/.internal/charts/xy/axes/Grid.d.ts.map +1 -1
  257. package/.internal/charts/xy/axes/Grid.js +0 -19
  258. package/.internal/charts/xy/axes/Grid.js.map +1 -1
  259. package/.internal/charts/xy/axes/ValueAxis.d.ts +33 -13
  260. package/.internal/charts/xy/axes/ValueAxis.d.ts.map +1 -1
  261. package/.internal/charts/xy/axes/ValueAxis.js +121 -22
  262. package/.internal/charts/xy/axes/ValueAxis.js.map +1 -1
  263. package/.internal/charts/xy/series/BaseColumnSeries.d.ts +20 -4
  264. package/.internal/charts/xy/series/BaseColumnSeries.d.ts.map +1 -1
  265. package/.internal/charts/xy/series/BaseColumnSeries.js +100 -70
  266. package/.internal/charts/xy/series/BaseColumnSeries.js.map +1 -1
  267. package/.internal/charts/xy/series/Candlestick.d.ts +0 -12
  268. package/.internal/charts/xy/series/Candlestick.d.ts.map +1 -1
  269. package/.internal/charts/xy/series/Candlestick.js +0 -19
  270. package/.internal/charts/xy/series/Candlestick.js.map +1 -1
  271. package/.internal/charts/xy/series/CandlestickSeries.d.ts +0 -13
  272. package/.internal/charts/xy/series/CandlestickSeries.d.ts.map +1 -1
  273. package/.internal/charts/xy/series/CandlestickSeries.js +5 -22
  274. package/.internal/charts/xy/series/CandlestickSeries.js.map +1 -1
  275. package/.internal/charts/xy/series/ColumnSeries.d.ts +0 -13
  276. package/.internal/charts/xy/series/ColumnSeries.d.ts.map +1 -1
  277. package/.internal/charts/xy/series/ColumnSeries.js +6 -22
  278. package/.internal/charts/xy/series/ColumnSeries.js.map +1 -1
  279. package/.internal/charts/xy/series/LineSeries.d.ts +0 -11
  280. package/.internal/charts/xy/series/LineSeries.d.ts.map +1 -1
  281. package/.internal/charts/xy/series/LineSeries.js +97 -105
  282. package/.internal/charts/xy/series/LineSeries.js.map +1 -1
  283. package/.internal/charts/xy/series/OHLC.d.ts +0 -12
  284. package/.internal/charts/xy/series/OHLC.d.ts.map +1 -1
  285. package/.internal/charts/xy/series/OHLC.js +0 -19
  286. package/.internal/charts/xy/series/OHLC.js.map +1 -1
  287. package/.internal/charts/xy/series/OHLCSeries.d.ts +0 -13
  288. package/.internal/charts/xy/series/OHLCSeries.d.ts.map +1 -1
  289. package/.internal/charts/xy/series/OHLCSeries.js +5 -22
  290. package/.internal/charts/xy/series/OHLCSeries.js.map +1 -1
  291. package/.internal/charts/xy/series/SmoothedXLineSeries.d.ts +0 -12
  292. package/.internal/charts/xy/series/SmoothedXLineSeries.d.ts.map +1 -1
  293. package/.internal/charts/xy/series/SmoothedXLineSeries.js +0 -19
  294. package/.internal/charts/xy/series/SmoothedXLineSeries.js.map +1 -1
  295. package/.internal/charts/xy/series/SmoothedXYLineSeries.d.ts +0 -12
  296. package/.internal/charts/xy/series/SmoothedXYLineSeries.d.ts.map +1 -1
  297. package/.internal/charts/xy/series/SmoothedXYLineSeries.js +0 -19
  298. package/.internal/charts/xy/series/SmoothedXYLineSeries.js.map +1 -1
  299. package/.internal/charts/xy/series/SmoothedYLineSeries.d.ts +0 -12
  300. package/.internal/charts/xy/series/SmoothedYLineSeries.d.ts.map +1 -1
  301. package/.internal/charts/xy/series/SmoothedYLineSeries.js +0 -19
  302. package/.internal/charts/xy/series/SmoothedYLineSeries.js.map +1 -1
  303. package/.internal/charts/xy/series/StepLineSeries.d.ts +1 -12
  304. package/.internal/charts/xy/series/StepLineSeries.d.ts.map +1 -1
  305. package/.internal/charts/xy/series/StepLineSeries.js +6 -14
  306. package/.internal/charts/xy/series/StepLineSeries.js.map +1 -1
  307. package/.internal/charts/xy/series/XYSeries.d.ts +8 -67
  308. package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
  309. package/.internal/charts/xy/series/XYSeries.js +97 -121
  310. package/.internal/charts/xy/series/XYSeries.js.map +1 -1
  311. package/.internal/core/Registry.d.ts +15 -1
  312. package/.internal/core/Registry.d.ts.map +1 -1
  313. package/.internal/core/Registry.js +28 -1
  314. package/.internal/core/Registry.js.map +1 -1
  315. package/.internal/core/Root.d.ts +18 -8
  316. package/.internal/core/Root.d.ts.map +1 -1
  317. package/.internal/core/Root.js +99 -48
  318. package/.internal/core/Root.js.map +1 -1
  319. package/.internal/core/Theme.d.ts +1 -2
  320. package/.internal/core/Theme.d.ts.map +1 -1
  321. package/.internal/core/Theme.js.map +1 -1
  322. package/.internal/core/render/Bullet.d.ts +22 -12
  323. package/.internal/core/render/Bullet.d.ts.map +1 -1
  324. package/.internal/core/render/Bullet.js +0 -19
  325. package/.internal/core/render/Bullet.js.map +1 -1
  326. package/.internal/core/render/Button.d.ts +1 -12
  327. package/.internal/core/render/Button.d.ts.map +1 -1
  328. package/.internal/core/render/Button.js +11 -32
  329. package/.internal/core/render/Button.js.map +1 -1
  330. package/.internal/core/render/Chart.d.ts +0 -15
  331. package/.internal/core/render/Chart.d.ts.map +1 -1
  332. package/.internal/core/render/Chart.js +0 -38
  333. package/.internal/core/render/Chart.js.map +1 -1
  334. package/.internal/core/render/Circle.d.ts +0 -12
  335. package/.internal/core/render/Circle.d.ts.map +1 -1
  336. package/.internal/core/render/Circle.js +0 -19
  337. package/.internal/core/render/Circle.js.map +1 -1
  338. package/.internal/core/render/Component.d.ts +7 -10
  339. package/.internal/core/render/Component.d.ts.map +1 -1
  340. package/.internal/core/render/Component.js +37 -65
  341. package/.internal/core/render/Component.js.map +1 -1
  342. package/.internal/core/render/Container.d.ts +5 -13
  343. package/.internal/core/render/Container.d.ts.map +1 -1
  344. package/.internal/core/render/Container.js +71 -52
  345. package/.internal/core/render/Container.js.map +1 -1
  346. package/.internal/core/render/Graphics.d.ts +40 -14
  347. package/.internal/core/render/Graphics.d.ts.map +1 -1
  348. package/.internal/core/render/Graphics.js +20 -28
  349. package/.internal/core/render/Graphics.js.map +1 -1
  350. package/.internal/core/render/GridLayout.d.ts +0 -12
  351. package/.internal/core/render/GridLayout.d.ts.map +1 -1
  352. package/.internal/core/render/GridLayout.js +0 -19
  353. package/.internal/core/render/GridLayout.js.map +1 -1
  354. package/.internal/core/render/HeatLegend.d.ts +0 -12
  355. package/.internal/core/render/HeatLegend.d.ts.map +1 -1
  356. package/.internal/core/render/HeatLegend.js +3 -22
  357. package/.internal/core/render/HeatLegend.js.map +1 -1
  358. package/.internal/core/render/HorizontalLayout.d.ts +0 -12
  359. package/.internal/core/render/HorizontalLayout.d.ts.map +1 -1
  360. package/.internal/core/render/HorizontalLayout.js +0 -19
  361. package/.internal/core/render/HorizontalLayout.js.map +1 -1
  362. package/.internal/core/render/Label.d.ts +47 -16
  363. package/.internal/core/render/Label.d.ts.map +1 -1
  364. package/.internal/core/render/Label.js +24 -26
  365. package/.internal/core/render/Label.js.map +1 -1
  366. package/.internal/core/render/Legend.d.ts +5 -13
  367. package/.internal/core/render/Legend.d.ts.map +1 -1
  368. package/.internal/core/render/Legend.js +44 -47
  369. package/.internal/core/render/Legend.js.map +1 -1
  370. package/.internal/core/render/Line.d.ts +0 -12
  371. package/.internal/core/render/Line.d.ts.map +1 -1
  372. package/.internal/core/render/Line.js +0 -19
  373. package/.internal/core/render/Line.js.map +1 -1
  374. package/.internal/core/render/MonotoneXTension.js.map +1 -1
  375. package/.internal/core/render/MonotoneYTension.js.map +1 -1
  376. package/.internal/core/render/Picture.d.ts +39 -13
  377. package/.internal/core/render/Picture.d.ts.map +1 -1
  378. package/.internal/core/render/Picture.js +21 -19
  379. package/.internal/core/render/Picture.js.map +1 -1
  380. package/.internal/core/render/PointedRectangle.d.ts +0 -12
  381. package/.internal/core/render/PointedRectangle.d.ts.map +1 -1
  382. package/.internal/core/render/PointedRectangle.js +0 -19
  383. package/.internal/core/render/PointedRectangle.js.map +1 -1
  384. package/.internal/core/render/RadialLabel.d.ts +0 -12
  385. package/.internal/core/render/RadialLabel.d.ts.map +1 -1
  386. package/.internal/core/render/RadialLabel.js +0 -19
  387. package/.internal/core/render/RadialLabel.js.map +1 -1
  388. package/.internal/core/render/RadialText.d.ts +0 -11
  389. package/.internal/core/render/RadialText.d.ts.map +1 -1
  390. package/.internal/core/render/RadialText.js +0 -19
  391. package/.internal/core/render/RadialText.js.map +1 -1
  392. package/.internal/core/render/Rectangle.d.ts +0 -12
  393. package/.internal/core/render/Rectangle.d.ts.map +1 -1
  394. package/.internal/core/render/Rectangle.js +0 -19
  395. package/.internal/core/render/Rectangle.js.map +1 -1
  396. package/.internal/core/render/RoundedRectangle.d.ts +0 -12
  397. package/.internal/core/render/RoundedRectangle.d.ts.map +1 -1
  398. package/.internal/core/render/RoundedRectangle.js +0 -19
  399. package/.internal/core/render/RoundedRectangle.js.map +1 -1
  400. package/.internal/core/render/Scrollbar.d.ts +6 -13
  401. package/.internal/core/render/Scrollbar.d.ts.map +1 -1
  402. package/.internal/core/render/Scrollbar.js +66 -56
  403. package/.internal/core/render/Scrollbar.js.map +1 -1
  404. package/.internal/core/render/SerialChart.d.ts +9 -2
  405. package/.internal/core/render/SerialChart.d.ts.map +1 -1
  406. package/.internal/core/render/SerialChart.js +19 -10
  407. package/.internal/core/render/SerialChart.js.map +1 -1
  408. package/.internal/core/render/Series.d.ts +27 -9
  409. package/.internal/core/render/Series.d.ts.map +1 -1
  410. package/.internal/core/render/Series.js +52 -9
  411. package/.internal/core/render/Series.js.map +1 -1
  412. package/.internal/core/render/Slice.d.ts +0 -12
  413. package/.internal/core/render/Slice.d.ts.map +1 -1
  414. package/.internal/core/render/Slice.js +0 -19
  415. package/.internal/core/render/Slice.js.map +1 -1
  416. package/.internal/core/render/Slider.d.ts +0 -12
  417. package/.internal/core/render/Slider.d.ts.map +1 -1
  418. package/.internal/core/render/Slider.js +2 -20
  419. package/.internal/core/render/Slider.js.map +1 -1
  420. package/.internal/core/render/Sprite.d.ts +37 -27
  421. package/.internal/core/render/Sprite.d.ts.map +1 -1
  422. package/.internal/core/render/Sprite.js +120 -83
  423. package/.internal/core/render/Sprite.js.map +1 -1
  424. package/.internal/core/render/Star.d.ts +2 -13
  425. package/.internal/core/render/Star.d.ts.map +1 -1
  426. package/.internal/core/render/Star.js +2 -21
  427. package/.internal/core/render/Star.js.map +1 -1
  428. package/.internal/core/render/Text.d.ts +9 -15
  429. package/.internal/core/render/Text.d.ts.map +1 -1
  430. package/.internal/core/render/Text.js +10 -26
  431. package/.internal/core/render/Text.js.map +1 -1
  432. package/.internal/core/render/Tick.d.ts +0 -12
  433. package/.internal/core/render/Tick.d.ts.map +1 -1
  434. package/.internal/core/render/Tick.js +0 -19
  435. package/.internal/core/render/Tick.js.map +1 -1
  436. package/.internal/core/render/Tooltip.d.ts +2 -12
  437. package/.internal/core/render/Tooltip.d.ts.map +1 -1
  438. package/.internal/core/render/Tooltip.js +33 -34
  439. package/.internal/core/render/Tooltip.js.map +1 -1
  440. package/.internal/core/render/VerticalLayout.d.ts +0 -12
  441. package/.internal/core/render/VerticalLayout.d.ts.map +1 -1
  442. package/.internal/core/render/VerticalLayout.js +0 -19
  443. package/.internal/core/render/VerticalLayout.js.map +1 -1
  444. package/.internal/core/render/backend/CanvasRenderer.d.ts +29 -4
  445. package/.internal/core/render/backend/CanvasRenderer.d.ts.map +1 -1
  446. package/.internal/core/render/backend/CanvasRenderer.js +418 -93
  447. package/.internal/core/render/backend/CanvasRenderer.js.map +1 -1
  448. package/.internal/core/render/backend/Renderer.d.ts +12 -0
  449. package/.internal/core/render/backend/Renderer.d.ts.map +1 -1
  450. package/.internal/core/render/backend/Renderer.js.map +1 -1
  451. package/.internal/core/render/gradients/LinearGradient.d.ts +0 -12
  452. package/.internal/core/render/gradients/LinearGradient.d.ts.map +1 -1
  453. package/.internal/core/render/gradients/LinearGradient.js +0 -19
  454. package/.internal/core/render/gradients/LinearGradient.js.map +1 -1
  455. package/.internal/core/render/gradients/RadialGradient.d.ts +0 -12
  456. package/.internal/core/render/gradients/RadialGradient.d.ts.map +1 -1
  457. package/.internal/core/render/gradients/RadialGradient.js +0 -19
  458. package/.internal/core/render/gradients/RadialGradient.js.map +1 -1
  459. package/.internal/core/render/patterns/CirclePattern.d.ts +0 -12
  460. package/.internal/core/render/patterns/CirclePattern.d.ts.map +1 -1
  461. package/.internal/core/render/patterns/CirclePattern.js +2 -21
  462. package/.internal/core/render/patterns/CirclePattern.js.map +1 -1
  463. package/.internal/core/render/patterns/LinePattern.d.ts +0 -12
  464. package/.internal/core/render/patterns/LinePattern.d.ts.map +1 -1
  465. package/.internal/core/render/patterns/LinePattern.js +17 -21
  466. package/.internal/core/render/patterns/LinePattern.js.map +1 -1
  467. package/.internal/core/render/patterns/Pattern.d.ts +15 -15
  468. package/.internal/core/render/patterns/Pattern.d.ts.map +1 -1
  469. package/.internal/core/render/patterns/Pattern.js +3 -22
  470. package/.internal/core/render/patterns/Pattern.js.map +1 -1
  471. package/.internal/core/render/patterns/RectanglePattern.d.ts +0 -12
  472. package/.internal/core/render/patterns/RectanglePattern.d.ts.map +1 -1
  473. package/.internal/core/render/patterns/RectanglePattern.js +2 -21
  474. package/.internal/core/render/patterns/RectanglePattern.js.map +1 -1
  475. package/.internal/core/util/Array.d.ts +11 -1
  476. package/.internal/core/util/Array.d.ts.map +1 -1
  477. package/.internal/core/util/Array.js +37 -1
  478. package/.internal/core/util/Array.js.map +1 -1
  479. package/.internal/core/util/Children.d.ts.map +1 -1
  480. package/.internal/core/util/Children.js +2 -0
  481. package/.internal/core/util/Children.js.map +1 -1
  482. package/.internal/core/util/ColorSet.d.ts +0 -12
  483. package/.internal/core/util/ColorSet.d.ts.map +1 -1
  484. package/.internal/core/util/ColorSet.js +2 -21
  485. package/.internal/core/util/ColorSet.js.map +1 -1
  486. package/.internal/core/util/DataProcessor.d.ts +0 -12
  487. package/.internal/core/util/DataProcessor.d.ts.map +1 -1
  488. package/.internal/core/util/DataProcessor.js +2 -21
  489. package/.internal/core/util/DataProcessor.js.map +1 -1
  490. package/.internal/core/util/DateFormatter.d.ts +23 -15
  491. package/.internal/core/util/DateFormatter.d.ts.map +1 -1
  492. package/.internal/core/util/DateFormatter.js +21 -21
  493. package/.internal/core/util/DateFormatter.js.map +1 -1
  494. package/.internal/core/util/Entity.d.ts +62 -17
  495. package/.internal/core/util/Entity.d.ts.map +1 -1
  496. package/.internal/core/util/Entity.js +247 -75
  497. package/.internal/core/util/Entity.js.map +1 -1
  498. package/.internal/core/util/InterfaceColors.d.ts +0 -12
  499. package/.internal/core/util/InterfaceColors.d.ts.map +1 -1
  500. package/.internal/core/util/InterfaceColors.js +0 -19
  501. package/.internal/core/util/InterfaceColors.js.map +1 -1
  502. package/.internal/core/util/Language.d.ts +0 -12
  503. package/.internal/core/util/Language.d.ts.map +1 -1
  504. package/.internal/core/util/Language.js +1 -20
  505. package/.internal/core/util/Language.js.map +1 -1
  506. package/.internal/core/util/List.d.ts +21 -2
  507. package/.internal/core/util/List.d.ts.map +1 -1
  508. package/.internal/core/util/List.js +89 -1
  509. package/.internal/core/util/List.js.map +1 -1
  510. package/.internal/core/util/NumberFormatter.d.ts +1 -22
  511. package/.internal/core/util/NumberFormatter.d.ts.map +1 -1
  512. package/.internal/core/util/NumberFormatter.js +0 -30
  513. package/.internal/core/util/NumberFormatter.js.map +1 -1
  514. package/.internal/core/util/PopulateString.js +0 -17
  515. package/.internal/core/util/PopulateString.js.map +1 -1
  516. package/.internal/core/util/States.d.ts +7 -4
  517. package/.internal/core/util/States.d.ts.map +1 -1
  518. package/.internal/core/util/States.js +32 -42
  519. package/.internal/core/util/States.js.map +1 -1
  520. package/.internal/core/util/Template.d.ts +18 -4
  521. package/.internal/core/util/Template.d.ts.map +1 -1
  522. package/.internal/core/util/Template.js +74 -14
  523. package/.internal/core/util/Template.js.map +1 -1
  524. package/.internal/core/util/TextFormatter.d.ts +19 -19
  525. package/.internal/core/util/TextFormatter.d.ts.map +1 -1
  526. package/.internal/core/util/TextFormatter.js +19 -19
  527. package/.internal/core/util/TextFormatter.js.map +1 -1
  528. package/.internal/core/util/Throttler.d.ts +3 -1
  529. package/.internal/core/util/Throttler.d.ts.map +1 -1
  530. package/.internal/core/util/Throttler.js +16 -9
  531. package/.internal/core/util/Throttler.js.map +1 -1
  532. package/.internal/core/util/Utils.d.ts +6 -1
  533. package/.internal/core/util/Utils.d.ts.map +1 -1
  534. package/.internal/core/util/Utils.js +24 -6
  535. package/.internal/core/util/Utils.js.map +1 -1
  536. package/.internal/plugins/exporting/Exporting.d.ts +2 -13
  537. package/.internal/plugins/exporting/Exporting.d.ts.map +1 -1
  538. package/.internal/plugins/exporting/Exporting.js +2 -21
  539. package/.internal/plugins/exporting/Exporting.js.map +1 -1
  540. package/.internal/plugins/exporting/ExportingMenu.d.ts +0 -12
  541. package/.internal/plugins/exporting/ExportingMenu.d.ts.map +1 -1
  542. package/.internal/plugins/exporting/ExportingMenu.js +1 -20
  543. package/.internal/plugins/exporting/ExportingMenu.js.map +1 -1
  544. package/.internal/themes/AnimatedTheme.js.map +1 -1
  545. package/.internal/themes/DarkTheme.d.ts.map +1 -1
  546. package/.internal/themes/DarkTheme.js +21 -1
  547. package/.internal/themes/DarkTheme.js.map +1 -1
  548. package/.internal/themes/DefaultTheme.d.ts.map +1 -1
  549. package/.internal/themes/DefaultTheme.js +69 -30
  550. package/.internal/themes/DefaultTheme.js.map +1 -1
  551. package/.internal/themes/MicrochartTheme.d.ts.map +1 -1
  552. package/.internal/themes/MicrochartTheme.js +30 -0
  553. package/.internal/themes/MicrochartTheme.js.map +1 -1
  554. package/CHANGELOG.md +317 -0
  555. package/examples/javascript/flow-chord/index.js +22 -24
  556. package/examples/javascript/flow-chord/package.json +1 -1
  557. package/examples/javascript/flow-chord-directed/index.js +25 -27
  558. package/examples/javascript/flow-chord-directed/package.json +1 -1
  559. package/examples/javascript/flow-chord-non-ribbon/index.js +24 -26
  560. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  561. package/examples/javascript/flow-sankey/index.js +23 -25
  562. package/examples/javascript/flow-sankey/package.json +1 -1
  563. package/examples/javascript/gauge/index.js +34 -39
  564. package/examples/javascript/gauge/package.json +1 -1
  565. package/examples/javascript/gauge-bands/index.js +39 -47
  566. package/examples/javascript/gauge-bands/package.json +1 -1
  567. package/examples/javascript/hierarchy-force-directed/index.js +34 -39
  568. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  569. package/examples/javascript/hierarchy-pack/index.js +34 -39
  570. package/examples/javascript/hierarchy-pack/package.json +1 -1
  571. package/examples/javascript/hierarchy-partition/index.js +35 -40
  572. package/examples/javascript/hierarchy-partition/package.json +1 -1
  573. package/examples/javascript/hierarchy-sunburst/index.js +34 -39
  574. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  575. package/examples/javascript/hierarchy-tree/index.js +34 -39
  576. package/examples/javascript/hierarchy-tree/package.json +1 -1
  577. package/examples/javascript/hierarchy-treemap/index.js +33 -38
  578. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  579. package/examples/javascript/map-animating-along-lines/index.js +80 -66
  580. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  581. package/examples/javascript/map-day-and-night/index.js +154 -101
  582. package/examples/javascript/map-day-and-night/package.json +1 -1
  583. package/examples/javascript/map-globe-rotate-to-country/index.js +33 -45
  584. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  585. package/examples/javascript/map-globe-with-projected-circles/index.js +36 -48
  586. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  587. package/examples/javascript/map-with-bubbles/index.js +1094 -228
  588. package/examples/javascript/map-with-bubbles/package.json +1 -1
  589. package/examples/javascript/map-zoom-to-country/index.js +28 -31
  590. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  591. package/examples/javascript/{xy-100%stacked-column → misc-40-charts}/README.md +0 -0
  592. package/examples/javascript/{xy-100%stacked-column → misc-40-charts}/index.css +0 -0
  593. package/examples/javascript/{xy-100%stacked-column → misc-40-charts}/index.html +1 -1
  594. package/examples/javascript/misc-40-charts/index.js +167 -0
  595. package/examples/javascript/{xy-100%stacked-column → misc-40-charts}/package.json +2 -2
  596. package/examples/javascript/{xy-100%stacked-column → misc-40-charts}/webpack.config.js +0 -0
  597. package/examples/{typescript/xy-100%stacked-column → javascript/misc-microchart-grid}/README.md +0 -0
  598. package/examples/{typescript/xy-100%stacked-column → javascript/misc-microchart-grid}/index.css +0 -0
  599. package/examples/{typescript/xy-100%stacked-column → javascript/misc-microchart-grid}/index.html +1 -1
  600. package/examples/javascript/misc-microchart-grid/index.js +171 -0
  601. package/examples/javascript/misc-microchart-grid/package.json +16 -0
  602. package/examples/javascript/misc-microchart-grid/webpack.config.js +38 -0
  603. package/examples/javascript/pie-chart/index.js +30 -35
  604. package/examples/javascript/pie-chart/package.json +1 -1
  605. package/examples/javascript/pie-donut-chart/index.js +43 -46
  606. package/examples/javascript/pie-donut-chart/package.json +1 -1
  607. package/examples/javascript/pie-variable-radius/index.js +68 -68
  608. package/examples/javascript/pie-variable-radius/package.json +1 -1
  609. package/examples/javascript/radar-column-iwatch-style/README.md +6 -0
  610. package/examples/javascript/radar-column-iwatch-style/index.css +11 -0
  611. package/examples/javascript/radar-column-iwatch-style/index.html +12 -0
  612. package/examples/javascript/radar-column-iwatch-style/index.js +152 -0
  613. package/examples/javascript/radar-column-iwatch-style/package.json +16 -0
  614. package/examples/javascript/radar-column-iwatch-style/webpack.config.js +38 -0
  615. package/examples/javascript/radar-heat-map/index.js +36 -57
  616. package/examples/javascript/radar-heat-map/package.json +1 -1
  617. package/examples/javascript/radar-line/index.js +52 -67
  618. package/examples/javascript/radar-line/package.json +1 -1
  619. package/examples/javascript/radar-time-line/index.js +81 -111
  620. package/examples/javascript/radar-time-line/package.json +1 -1
  621. package/examples/javascript/sliced-funnel/index.js +45 -53
  622. package/examples/javascript/sliced-funnel/package.json +1 -1
  623. package/examples/javascript/sliced-pictorial-stacked/index.js +29 -39
  624. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  625. package/examples/javascript/sliced-pyramid/index.js +44 -56
  626. package/examples/javascript/sliced-pyramid/package.json +1 -1
  627. package/examples/javascript/xy-100-percent-stacked-column/README.md +6 -0
  628. package/examples/javascript/xy-100-percent-stacked-column/index.css +11 -0
  629. package/examples/javascript/xy-100-percent-stacked-column/index.html +12 -0
  630. package/examples/javascript/xy-100-percent-stacked-column/index.js +140 -0
  631. package/examples/javascript/xy-100-percent-stacked-column/package.json +16 -0
  632. package/examples/javascript/xy-100-percent-stacked-column/webpack.config.js +38 -0
  633. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/README.md +6 -0
  634. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/index.css +11 -0
  635. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/index.html +12 -0
  636. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/index.js +168 -0
  637. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +16 -0
  638. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/webpack.config.js +38 -0
  639. package/examples/javascript/xy-bubble/index.js +92 -65
  640. package/examples/javascript/xy-bubble/package.json +1 -1
  641. package/examples/javascript/xy-candlestick/index.js +112 -78
  642. package/examples/javascript/xy-candlestick/package.json +1 -1
  643. package/examples/javascript/xy-clustered-column/index.js +71 -47
  644. package/examples/javascript/xy-clustered-column/package.json +1 -1
  645. package/examples/javascript/xy-column/index.js +59 -48
  646. package/examples/javascript/xy-column/package.json +1 -1
  647. package/examples/javascript/xy-comparing-series-google-analytics-style/README.md +6 -0
  648. package/examples/javascript/xy-comparing-series-google-analytics-style/index.css +11 -0
  649. package/examples/javascript/xy-comparing-series-google-analytics-style/index.html +12 -0
  650. package/examples/javascript/xy-comparing-series-google-analytics-style/index.js +142 -0
  651. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +16 -0
  652. package/examples/javascript/xy-comparing-series-google-analytics-style/webpack.config.js +38 -0
  653. package/examples/javascript/xy-data-grouping/index.js +62 -49
  654. package/examples/javascript/xy-data-grouping/package.json +1 -1
  655. package/examples/javascript/xy-draggable-range/README.md +6 -0
  656. package/examples/javascript/xy-draggable-range/index.css +11 -0
  657. package/examples/javascript/xy-draggable-range/index.html +12 -0
  658. package/examples/javascript/xy-draggable-range/index.js +176 -0
  659. package/examples/javascript/xy-draggable-range/package.json +16 -0
  660. package/examples/javascript/xy-draggable-range/webpack.config.js +38 -0
  661. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/README.md +6 -0
  662. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/index.css +11 -0
  663. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/index.html +12 -0
  664. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/index.js +201 -0
  665. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +16 -0
  666. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/webpack.config.js +38 -0
  667. package/examples/javascript/xy-dumbbell plot/README.md +6 -0
  668. package/examples/javascript/xy-dumbbell plot/index.css +11 -0
  669. package/examples/javascript/xy-dumbbell plot/index.html +12 -0
  670. package/examples/javascript/xy-dumbbell plot/index.js +156 -0
  671. package/examples/javascript/xy-dumbbell plot/package.json +16 -0
  672. package/examples/javascript/xy-dumbbell plot/webpack.config.js +38 -0
  673. package/examples/javascript/xy-evenly-spaced-date-axis/index.js +58 -38
  674. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  675. package/examples/javascript/xy-line/index.js +70 -46
  676. package/examples/javascript/xy-line/package.json +1 -1
  677. package/examples/javascript/xy-line-highlight-on-legend-hover/README.md +6 -0
  678. package/examples/javascript/xy-line-highlight-on-legend-hover/index.css +11 -0
  679. package/examples/javascript/xy-line-highlight-on-legend-hover/index.html +12 -0
  680. package/examples/javascript/xy-line-highlight-on-legend-hover/index.js +183 -0
  681. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +16 -0
  682. package/examples/javascript/xy-line-highlight-on-legend-hover/webpack.config.js +38 -0
  683. package/examples/javascript/xy-live-data/index.js +91 -55
  684. package/examples/javascript/xy-live-data/package.json +1 -1
  685. package/examples/javascript/xy-multiple-synced-value-axes/README.md +6 -0
  686. package/examples/javascript/xy-multiple-synced-value-axes/index.css +11 -0
  687. package/examples/javascript/xy-multiple-synced-value-axes/index.html +12 -0
  688. package/examples/javascript/xy-multiple-synced-value-axes/index.js +168 -0
  689. package/examples/javascript/xy-multiple-synced-value-axes/package.json +16 -0
  690. package/examples/javascript/xy-multiple-synced-value-axes/webpack.config.js +38 -0
  691. package/examples/javascript/xy-ohlc/index.js +123 -59
  692. package/examples/javascript/xy-ohlc/package.json +1 -1
  693. package/examples/javascript/xy-real-time-data-sorting/README.md +6 -0
  694. package/examples/javascript/xy-real-time-data-sorting/index.css +11 -0
  695. package/examples/javascript/xy-real-time-data-sorting/index.html +12 -0
  696. package/examples/javascript/xy-real-time-data-sorting/index.js +220 -0
  697. package/examples/javascript/xy-real-time-data-sorting/package.json +16 -0
  698. package/examples/javascript/xy-real-time-data-sorting/webpack.config.js +38 -0
  699. package/examples/javascript/xy-smoothed-line/index.js +67 -37
  700. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  701. package/examples/javascript/xy-stacked-and-clustered-column/index.js +60 -33
  702. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  703. package/examples/javascript/xy-stacked-column/index.js +71 -55
  704. package/examples/javascript/xy-stacked-column/package.json +1 -1
  705. package/examples/javascript/xy-stacked-step/index.js +64 -48
  706. package/examples/javascript/xy-stacked-step/package.json +1 -1
  707. package/examples/javascript/xy-stock/index.js +147 -42
  708. package/examples/javascript/xy-stock/package.json +1 -1
  709. package/examples/javascript/xy-stock-comparing/index.js +198 -70
  710. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  711. package/examples/typescript/flow-chord/index.ts +22 -24
  712. package/examples/typescript/flow-chord/package.json +1 -1
  713. package/examples/typescript/flow-chord-directed/index.ts +25 -27
  714. package/examples/typescript/flow-chord-directed/package.json +1 -1
  715. package/examples/typescript/flow-chord-non-ribbon/index.ts +24 -26
  716. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  717. package/examples/typescript/flow-sankey/index.ts +23 -25
  718. package/examples/typescript/flow-sankey/package.json +1 -1
  719. package/examples/typescript/gauge/index.ts +34 -39
  720. package/examples/typescript/gauge/package.json +1 -1
  721. package/examples/typescript/gauge-bands/index.ts +39 -47
  722. package/examples/typescript/gauge-bands/package.json +1 -1
  723. package/examples/typescript/hierarchy-force-directed/index.ts +34 -39
  724. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  725. package/examples/typescript/hierarchy-pack/index.ts +34 -39
  726. package/examples/typescript/hierarchy-pack/package.json +1 -1
  727. package/examples/typescript/hierarchy-partition/index.ts +35 -40
  728. package/examples/typescript/hierarchy-partition/package.json +1 -1
  729. package/examples/typescript/hierarchy-sunburst/index.ts +34 -39
  730. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  731. package/examples/typescript/hierarchy-tree/index.ts +34 -39
  732. package/examples/typescript/hierarchy-tree/package.json +1 -1
  733. package/examples/typescript/hierarchy-treemap/index.ts +33 -38
  734. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  735. package/examples/typescript/map-animating-along-lines/index.ts +80 -66
  736. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  737. package/examples/typescript/map-day-and-night/index.ts +154 -101
  738. package/examples/typescript/map-day-and-night/package.json +1 -1
  739. package/examples/typescript/map-globe-rotate-to-country/index.ts +33 -45
  740. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  741. package/examples/typescript/map-globe-with-projected-circles/index.ts +36 -48
  742. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  743. package/examples/typescript/map-with-bubbles/index.ts +1095 -229
  744. package/examples/typescript/map-with-bubbles/package.json +1 -1
  745. package/examples/typescript/map-zoom-to-country/index.ts +28 -31
  746. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  747. package/examples/typescript/misc-40-charts/README.md +6 -0
  748. package/examples/typescript/misc-40-charts/index.css +11 -0
  749. package/examples/typescript/misc-40-charts/index.html +12 -0
  750. package/examples/typescript/misc-40-charts/index.ts +167 -0
  751. package/examples/typescript/{xy-100%stacked-column → misc-40-charts}/package.json +2 -2
  752. package/examples/typescript/{xy-100%stacked-column → misc-40-charts}/tsconfig.json +0 -0
  753. package/examples/typescript/{xy-100%stacked-column → misc-40-charts}/webpack.config.js +0 -0
  754. package/examples/typescript/misc-microchart-grid/README.md +6 -0
  755. package/examples/typescript/misc-microchart-grid/index.css +11 -0
  756. package/examples/typescript/misc-microchart-grid/index.html +12 -0
  757. package/examples/typescript/misc-microchart-grid/index.ts +171 -0
  758. package/examples/typescript/misc-microchart-grid/package.json +18 -0
  759. package/examples/typescript/misc-microchart-grid/tsconfig.json +12 -0
  760. package/examples/typescript/misc-microchart-grid/webpack.config.js +45 -0
  761. package/examples/typescript/pie-chart/index.ts +30 -35
  762. package/examples/typescript/pie-chart/package.json +1 -1
  763. package/examples/typescript/pie-donut-chart/index.ts +43 -46
  764. package/examples/typescript/pie-donut-chart/package.json +1 -1
  765. package/examples/typescript/pie-variable-radius/index.ts +69 -69
  766. package/examples/typescript/pie-variable-radius/package.json +1 -1
  767. package/examples/typescript/radar-column-iwatch-style/README.md +6 -0
  768. package/examples/typescript/radar-column-iwatch-style/index.css +11 -0
  769. package/examples/typescript/radar-column-iwatch-style/index.html +12 -0
  770. package/examples/typescript/radar-column-iwatch-style/index.ts +152 -0
  771. package/examples/typescript/radar-column-iwatch-style/package.json +18 -0
  772. package/examples/typescript/radar-column-iwatch-style/tsconfig.json +12 -0
  773. package/examples/typescript/radar-column-iwatch-style/webpack.config.js +45 -0
  774. package/examples/typescript/radar-heat-map/index.ts +36 -57
  775. package/examples/typescript/radar-heat-map/package.json +1 -1
  776. package/examples/typescript/radar-line/index.ts +52 -67
  777. package/examples/typescript/radar-line/package.json +1 -1
  778. package/examples/typescript/radar-time-line/index.ts +81 -111
  779. package/examples/typescript/radar-time-line/package.json +1 -1
  780. package/examples/typescript/sliced-funnel/index.ts +45 -53
  781. package/examples/typescript/sliced-funnel/package.json +1 -1
  782. package/examples/typescript/sliced-pictorial-stacked/index.ts +29 -39
  783. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  784. package/examples/typescript/sliced-pyramid/index.ts +44 -56
  785. package/examples/typescript/sliced-pyramid/package.json +1 -1
  786. package/examples/typescript/xy-100-percent-stacked-column/README.md +6 -0
  787. package/examples/typescript/xy-100-percent-stacked-column/index.css +11 -0
  788. package/examples/typescript/xy-100-percent-stacked-column/index.html +12 -0
  789. package/examples/typescript/xy-100-percent-stacked-column/index.ts +140 -0
  790. package/examples/typescript/xy-100-percent-stacked-column/package.json +18 -0
  791. package/examples/typescript/xy-100-percent-stacked-column/tsconfig.json +12 -0
  792. package/examples/typescript/xy-100-percent-stacked-column/webpack.config.js +45 -0
  793. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/README.md +6 -0
  794. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/index.css +11 -0
  795. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/index.html +12 -0
  796. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/index.ts +168 -0
  797. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +18 -0
  798. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/tsconfig.json +12 -0
  799. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/webpack.config.js +45 -0
  800. package/examples/typescript/xy-bubble/index.ts +92 -65
  801. package/examples/typescript/xy-bubble/package.json +1 -1
  802. package/examples/typescript/xy-candlestick/index.ts +112 -78
  803. package/examples/typescript/xy-candlestick/package.json +1 -1
  804. package/examples/typescript/xy-clustered-column/index.ts +71 -47
  805. package/examples/typescript/xy-clustered-column/package.json +1 -1
  806. package/examples/typescript/xy-column/index.ts +59 -48
  807. package/examples/typescript/xy-column/package.json +1 -1
  808. package/examples/typescript/xy-comparing-series-google-analytics-style/README.md +6 -0
  809. package/examples/typescript/xy-comparing-series-google-analytics-style/index.css +11 -0
  810. package/examples/typescript/xy-comparing-series-google-analytics-style/index.html +12 -0
  811. package/examples/typescript/xy-comparing-series-google-analytics-style/index.ts +142 -0
  812. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +18 -0
  813. package/examples/typescript/xy-comparing-series-google-analytics-style/tsconfig.json +12 -0
  814. package/examples/typescript/xy-comparing-series-google-analytics-style/webpack.config.js +45 -0
  815. package/examples/typescript/xy-data-grouping/index.ts +62 -49
  816. package/examples/typescript/xy-data-grouping/package.json +1 -1
  817. package/examples/typescript/xy-draggable-range/README.md +6 -0
  818. package/examples/typescript/xy-draggable-range/index.css +11 -0
  819. package/examples/typescript/xy-draggable-range/index.html +12 -0
  820. package/examples/typescript/xy-draggable-range/index.ts +176 -0
  821. package/examples/typescript/xy-draggable-range/package.json +18 -0
  822. package/examples/typescript/xy-draggable-range/tsconfig.json +12 -0
  823. package/examples/typescript/xy-draggable-range/webpack.config.js +45 -0
  824. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/README.md +6 -0
  825. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/index.css +11 -0
  826. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/index.html +12 -0
  827. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/index.ts +201 -0
  828. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +18 -0
  829. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/tsconfig.json +12 -0
  830. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/webpack.config.js +45 -0
  831. package/examples/typescript/xy-dumbbell plot/README.md +6 -0
  832. package/examples/typescript/xy-dumbbell plot/index.css +11 -0
  833. package/examples/typescript/xy-dumbbell plot/index.html +12 -0
  834. package/examples/typescript/xy-dumbbell plot/index.ts +156 -0
  835. package/examples/typescript/xy-dumbbell plot/package.json +18 -0
  836. package/examples/typescript/xy-dumbbell plot/tsconfig.json +12 -0
  837. package/examples/typescript/xy-dumbbell plot/webpack.config.js +45 -0
  838. package/examples/typescript/xy-evenly-spaced-date-axis/index.ts +58 -38
  839. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  840. package/examples/typescript/xy-line/index.ts +70 -46
  841. package/examples/typescript/xy-line/package.json +1 -1
  842. package/examples/typescript/xy-line-highlight-on-legend-hover/README.md +6 -0
  843. package/examples/typescript/xy-line-highlight-on-legend-hover/index.css +11 -0
  844. package/examples/typescript/xy-line-highlight-on-legend-hover/index.html +12 -0
  845. package/examples/typescript/xy-line-highlight-on-legend-hover/index.ts +183 -0
  846. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +18 -0
  847. package/examples/typescript/xy-line-highlight-on-legend-hover/tsconfig.json +12 -0
  848. package/examples/typescript/xy-line-highlight-on-legend-hover/webpack.config.js +45 -0
  849. package/examples/typescript/xy-live-data/index.ts +91 -55
  850. package/examples/typescript/xy-live-data/package.json +1 -1
  851. package/examples/typescript/xy-multiple-synced-value-axes/README.md +6 -0
  852. package/examples/typescript/xy-multiple-synced-value-axes/index.css +11 -0
  853. package/examples/typescript/xy-multiple-synced-value-axes/index.html +12 -0
  854. package/examples/typescript/xy-multiple-synced-value-axes/index.ts +168 -0
  855. package/examples/typescript/xy-multiple-synced-value-axes/package.json +18 -0
  856. package/examples/typescript/xy-multiple-synced-value-axes/tsconfig.json +12 -0
  857. package/examples/typescript/xy-multiple-synced-value-axes/webpack.config.js +45 -0
  858. package/examples/typescript/xy-ohlc/index.ts +124 -60
  859. package/examples/typescript/xy-ohlc/package.json +1 -1
  860. package/examples/typescript/xy-real-time-data-sorting/README.md +6 -0
  861. package/examples/typescript/xy-real-time-data-sorting/index.css +11 -0
  862. package/examples/typescript/xy-real-time-data-sorting/index.html +12 -0
  863. package/examples/typescript/xy-real-time-data-sorting/index.ts +220 -0
  864. package/examples/typescript/xy-real-time-data-sorting/package.json +18 -0
  865. package/examples/typescript/xy-real-time-data-sorting/tsconfig.json +12 -0
  866. package/examples/typescript/xy-real-time-data-sorting/webpack.config.js +45 -0
  867. package/examples/typescript/xy-smoothed-line/index.ts +67 -37
  868. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  869. package/examples/typescript/xy-stacked-and-clustered-column/index.ts +60 -33
  870. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  871. package/examples/typescript/xy-stacked-column/index.ts +71 -55
  872. package/examples/typescript/xy-stacked-column/package.json +1 -1
  873. package/examples/typescript/xy-stacked-step/index.ts +64 -48
  874. package/examples/typescript/xy-stacked-step/package.json +1 -1
  875. package/examples/typescript/xy-stock/index.ts +147 -42
  876. package/examples/typescript/xy-stock/package.json +1 -1
  877. package/examples/typescript/xy-stock-comparing/index.ts +198 -70
  878. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  879. package/index.d.ts +1 -2
  880. package/index.d.ts.map +1 -1
  881. package/index.js +1 -2
  882. package/index.js.map +1 -1
  883. package/locales/ar.d.ts +1 -1
  884. package/locales/ar.d.ts.map +1 -1
  885. package/locales/ar.js +2 -5
  886. package/locales/ar.js.map +1 -1
  887. package/locales/bs_BA.d.ts +1 -1
  888. package/locales/bs_BA.d.ts.map +1 -1
  889. package/locales/bs_BA.js +2 -5
  890. package/locales/bs_BA.js.map +1 -1
  891. package/locales/ca_ES.d.ts +1 -1
  892. package/locales/ca_ES.d.ts.map +1 -1
  893. package/locales/ca_ES.js +2 -5
  894. package/locales/ca_ES.js.map +1 -1
  895. package/locales/cs_CZ.d.ts +1 -1
  896. package/locales/cs_CZ.d.ts.map +1 -1
  897. package/locales/cs_CZ.js +2 -5
  898. package/locales/cs_CZ.js.map +1 -1
  899. package/locales/da_DK.d.ts +1 -1
  900. package/locales/da_DK.d.ts.map +1 -1
  901. package/locales/da_DK.js +2 -5
  902. package/locales/da_DK.js.map +1 -1
  903. package/locales/de_CH.d.ts +1 -1
  904. package/locales/de_CH.js +2 -2
  905. package/locales/de_CH.js.map +1 -1
  906. package/locales/de_DE.d.ts +1 -1
  907. package/locales/de_DE.js +2 -2
  908. package/locales/de_DE.js.map +1 -1
  909. package/locales/el_GR.d.ts +1 -1
  910. package/locales/el_GR.d.ts.map +1 -1
  911. package/locales/el_GR.js +2 -5
  912. package/locales/el_GR.js.map +1 -1
  913. package/locales/en.js +1 -1
  914. package/locales/en.js.map +1 -1
  915. package/locales/en_CA.d.ts +1 -1
  916. package/locales/en_CA.js +1 -1
  917. package/locales/en_CA.js.map +1 -1
  918. package/locales/en_US.d.ts +1 -1
  919. package/locales/en_US.js +1 -1
  920. package/locales/en_US.js.map +1 -1
  921. package/locales/es_ES.d.ts +1 -1
  922. package/locales/es_ES.js +1 -1
  923. package/locales/es_ES.js.map +1 -1
  924. package/locales/et_EE.d.ts +1 -1
  925. package/locales/et_EE.d.ts.map +1 -1
  926. package/locales/et_EE.js +2 -5
  927. package/locales/et_EE.js.map +1 -1
  928. package/locales/fi_FI.d.ts +1 -1
  929. package/locales/fi_FI.d.ts.map +1 -1
  930. package/locales/fi_FI.js +2 -5
  931. package/locales/fi_FI.js.map +1 -1
  932. package/locales/fr_FR.d.ts +1 -1
  933. package/locales/fr_FR.js +2 -2
  934. package/locales/fr_FR.js.map +1 -1
  935. package/locales/he_IL.d.ts +1 -1
  936. package/locales/he_IL.d.ts.map +1 -1
  937. package/locales/he_IL.js +2 -5
  938. package/locales/he_IL.js.map +1 -1
  939. package/locales/hi_IN.d.ts +1 -1
  940. package/locales/hi_IN.d.ts.map +1 -1
  941. package/locales/hi_IN.js +2 -5
  942. package/locales/hi_IN.js.map +1 -1
  943. package/locales/hr_HR.d.ts +1 -1
  944. package/locales/hr_HR.d.ts.map +1 -1
  945. package/locales/hr_HR.js +2 -5
  946. package/locales/hr_HR.js.map +1 -1
  947. package/locales/hu_HU.d.ts +1 -1
  948. package/locales/hu_HU.d.ts.map +1 -1
  949. package/locales/hu_HU.js +2 -5
  950. package/locales/hu_HU.js.map +1 -1
  951. package/locales/id_ID.d.ts +1 -1
  952. package/locales/id_ID.d.ts.map +1 -1
  953. package/locales/id_ID.js +2 -5
  954. package/locales/id_ID.js.map +1 -1
  955. package/locales/it_IT.d.ts +1 -1
  956. package/locales/it_IT.js +2 -2
  957. package/locales/it_IT.js.map +1 -1
  958. package/locales/ja_JP.d.ts +1 -1
  959. package/locales/ja_JP.d.ts.map +1 -1
  960. package/locales/ja_JP.js +2 -5
  961. package/locales/ja_JP.js.map +1 -1
  962. package/locales/ko_KR.d.ts +1 -1
  963. package/locales/ko_KR.d.ts.map +1 -1
  964. package/locales/ko_KR.js +2 -5
  965. package/locales/ko_KR.js.map +1 -1
  966. package/locales/lt_LT.d.ts +1 -1
  967. package/locales/lt_LT.js +1 -1
  968. package/locales/lt_LT.js.map +1 -1
  969. package/locales/lv_LV.d.ts +1 -1
  970. package/locales/lv_LV.d.ts.map +1 -1
  971. package/locales/lv_LV.js +2 -5
  972. package/locales/lv_LV.js.map +1 -1
  973. package/locales/nb_NO.d.ts +1 -1
  974. package/locales/nb_NO.d.ts.map +1 -1
  975. package/locales/nb_NO.js +2 -5
  976. package/locales/nb_NO.js.map +1 -1
  977. package/locales/nl_NL.d.ts +1 -1
  978. package/locales/nl_NL.js +2 -2
  979. package/locales/nl_NL.js.map +1 -1
  980. package/locales/pl_PL.d.ts +1 -1
  981. package/locales/pl_PL.d.ts.map +1 -1
  982. package/locales/pl_PL.js +2 -5
  983. package/locales/pl_PL.js.map +1 -1
  984. package/locales/pt_BR.d.ts +1 -1
  985. package/locales/pt_BR.js +2 -2
  986. package/locales/pt_BR.js.map +1 -1
  987. package/locales/pt_PT.d.ts +1 -1
  988. package/locales/pt_PT.js +2 -2
  989. package/locales/pt_PT.js.map +1 -1
  990. package/locales/ro_RO.d.ts +1 -1
  991. package/locales/ro_RO.d.ts.map +1 -1
  992. package/locales/ro_RO.js +2 -5
  993. package/locales/ro_RO.js.map +1 -1
  994. package/locales/ru_RU.d.ts +1 -1
  995. package/locales/ru_RU.js +1 -1
  996. package/locales/ru_RU.js.map +1 -1
  997. package/locales/sl_SL.d.ts +1 -1
  998. package/locales/sl_SL.js +2 -2
  999. package/locales/sl_SL.js.map +1 -1
  1000. package/locales/sr_RS.d.ts +1 -1
  1001. package/locales/sr_RS.d.ts.map +1 -1
  1002. package/locales/sr_RS.js +2 -5
  1003. package/locales/sr_RS.js.map +1 -1
  1004. package/locales/sv_SE.d.ts +1 -1
  1005. package/locales/sv_SE.js +2 -2
  1006. package/locales/sv_SE.js.map +1 -1
  1007. package/locales/th_TH.d.ts +1 -1
  1008. package/locales/th_TH.d.ts.map +1 -1
  1009. package/locales/th_TH.js +2 -5
  1010. package/locales/th_TH.js.map +1 -1
  1011. package/locales/tr_TR.d.ts +1 -1
  1012. package/locales/tr_TR.d.ts.map +1 -1
  1013. package/locales/tr_TR.js +2 -5
  1014. package/locales/tr_TR.js.map +1 -1
  1015. package/locales/uk_UA.d.ts +1 -1
  1016. package/locales/uk_UA.d.ts.map +1 -1
  1017. package/locales/uk_UA.js +2 -5
  1018. package/locales/uk_UA.js.map +1 -1
  1019. package/locales/vi_VN.d.ts +1 -1
  1020. package/locales/vi_VN.d.ts.map +1 -1
  1021. package/locales/vi_VN.js +2 -5
  1022. package/locales/vi_VN.js.map +1 -1
  1023. package/locales/zh_Hans.d.ts +1 -1
  1024. package/locales/zh_Hans.d.ts.map +1 -1
  1025. package/locales/zh_Hans.js +2 -5
  1026. package/locales/zh_Hans.js.map +1 -1
  1027. package/locales/zh_Hant.d.ts +1 -1
  1028. package/locales/zh_Hant.d.ts.map +1 -1
  1029. package/locales/zh_Hant.js +2 -5
  1030. package/locales/zh_Hant.js.map +1 -1
  1031. package/package.json +7 -1
  1032. package/.internal/core/util/DurationFormatter.d.ts +0 -131
  1033. package/.internal/core/util/DurationFormatter.d.ts.map +0 -1
  1034. package/.internal/core/util/DurationFormatter.js +0 -534
  1035. package/.internal/core/util/DurationFormatter.js.map +0 -1
  1036. package/examples/javascript/xy-100%stacked-column/index.js +0 -116
  1037. package/examples/typescript/xy-100%stacked-column/index.ts +0 -116
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasRenderer.js","sourceRoot":"","sources":["../../../../../../src/.internal/core/render/backend/CanvasRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["/** @ignore *//** */\n\nimport {\n\tIRenderer, IContainer, IDisplayObject, IGraphics, IRendererEvents,\n\tIText, ITextStyle, IRadialText, IPicture, IRendererEvent, ILayer, ICanvasOptions, BlendMode, IPointerEvent, Id\n} from \"./Renderer\";\nimport type { IBounds } from \"../../util/IBounds\";\nimport type { IPoint } from \"../../util/IPoint\";\nimport { Color } from \"../../util/Color\";\nimport { Matrix } from \"../../util/Matrix\";\nimport { Percent, percent } from \"../../util/Percent\";\n//import { Throttler } from \"../../util/Throttler\";\nimport { Disposer, IDisposer, CounterDisposer } from \"../../util/Disposer\";\nimport { TextFormatter, ITextChunk } from \"../../util/TextFormatter\";\nimport * as $utils from \"../../util/Utils\";\nimport * as $array from \"../../util/Array\";\nimport * as $type from \"../../util/Type\";\nimport * as $math from \"../../util/Math\";\n\n\n/**\n * @ignore\n */\nfunction checkArgs(name: string, actual: number, expected: number) {\n\tif (actual !== expected) {\n\t\tthrow new Error(\"Required \" + expected + \" arguments for \" + name + \" but got \" + actual);\n\t}\n}\n\n/**\n * @ignore\n */\nfunction checkMinArgs(name: string, actual: number, expected: number) {\n\tif (actual < expected) {\n\t\tthrow new Error(\"Required at least \" + expected + \" arguments for \" + name + \" but got \" + actual);\n\t}\n}\n\n/**\n * @ignore\n */\nfunction checkEvenArgs(name: string, actual: number, expected: number) {\n\tcheckMinArgs(name, actual, expected);\n\n\tif ((actual % expected) !== 0) {\n\t\tthrow new Error(\"Arguments for \" + name + \" must be in pairs of \" + expected);\n\t}\n}\n\n// 1 -> 0xffffff * (2 / 2)\n// 2 -> 0xffffff * (1 / 2)\n//\n// 3 -> 0xffffff * (3 / 4)\n// 4 -> 0xffffff * (1 / 4)\n//\n// 5 -> 0xffffff * (7 / 8)\n// 6 -> 0xffffff * (5 / 8)\n// 7 -> 0xffffff * (3 / 8)\n// 8 -> 0xffffff * (1 / 8)\n//\n// 9 -> 0xffffff * (15 / 16)\n// 10 -> 0xffffff * (13 / 16)\n// 11 -> 0xffffff * (11 / 16)\n// 12 -> 0xffffff * (9 / 16)\n// 13 -> 0xffffff * (7 / 16)\n// 14 -> 0xffffff * (5 / 16)\n// 15 -> 0xffffff * (3 / 16)\n// 16 -> 0xffffff * (1 / 16)\n// @todo remove this old color distribution algo if the new one pans out\n// function distributeIdBAK(id: number): number {\n// \tif (id === 1) {\n// \t\treturn 0x000001;\n\n// \t} else {\n// \t\t// Finds the closest power of 2\n// \t\tconst base = Math.pow(2, Math.ceil(Math.log(id) / Math.log(2)));\n\n// \t\t// Translates the id into an odd fraction index\n// \t\tconst index = ((base - id) * 2) + 1;\n\n// \t\t// TODO is Math.round correct ?\n// \t\treturn Math.round(0xffffff * (index / base));\n// \t}\n// }\n\n/**\n * Function by smeans:\n * https://lowcode.life/generating-unique-contrasting-colors-in-javascript/\n * @ignore\n */\nfunction distributeId(id: number): number {\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 24; i++) {\n\t\trgb[i % 3] <<= 1;\n\t\trgb[i % 3] |= id & 0x01;\n\t\tid >>= 1;\n\t}\n\treturn (rgb[2] | 0) + (rgb[1] << 8) + (rgb[0] << 16);\n}\n\n/**\n * @ignore\n */\nfunction eachTargets(hitTarget: CanvasDisplayObject, f: (target: CanvasDisplayObject) => boolean): void {\n\tfor (; ;) {\n\t\tif (hitTarget.interactive) {\n\t\t\tif (!f(hitTarget)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (hitTarget._parent) {\n\t\t\thitTarget = hitTarget._parent;\n\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n// TODO feature detection for mouse/touch/pointer\n/**\n * @ignore\n */\nfunction onPointerEvent(element: EventTarget, name: string, f: (event: IPointerEvent) => void): IDisposer {\n\treturn $utils.addEventListener(element, $utils.getRendererEvent(name), (event: MouseEvent | TouchEvent) => {\n\t\tif ((<any>event).touches) {\n\t\t\t$array.each((<TouchEvent>event).touches, (touch) => {\n\t\t\t\tf(touch);\n\t\t\t});\n\n\t\t} else {\n\t\t\tf(<MouseEvent>event);\n\t\t}\n\t});\n}\n\n/**\n * @ignore\n */\nfunction isTainted(image: HTMLImageElement): boolean {\n\tconst canvas = document.createElement(\"canvas\");\n\tcanvas.width = 1;\n\tcanvas.height = 1;\n\tconst context = canvas.getContext(\"2d\")!;\n\tcontext.drawImage(image, 0, 0, 1, 1);\n\n\ttry {\n\t\tcontext.getImageData(0, 0, 1, 1);\n\t\treturn false;\n\t}\n\tcatch (err) {\n\t\tconsole.warn(\"Image \\\"\" + image.src + \"\\\" is loaded from different host and is not covered by CORS policy. For more information about the implications read here: https://www.amcharts.com/docs/v5/concepts/cors\");\n\t\treturn true;\n\t}\n}\n\n/**\n * @ignore\n */\nexport class CanvasPivot implements IPoint {\n\tprotected _x: number = 0;\n\tprotected _y: number = 0;\n\n\tget x(): number {\n\t\treturn this._x;\n\t}\n\n\tget y(): number {\n\t\treturn this._y;\n\t}\n\n\tset x(value: number) {\n\t\tthis._x = value;\n\t}\n\n\tset y(value: number) {\n\t\tthis._y = value;\n\t}\n}\n\n/**\n * @ignore\n */\nexport class CanvasDisplayObject extends Disposer implements IDisplayObject, IDisposer {\n\tpublic _layer?: CanvasLayer;\n\n\tpublic mask: CanvasGraphics | null = null;\n\tpublic visible: boolean = true;\n\tpublic exportable?: boolean = true;\n\tpublic interactive: boolean = false;\n\tpublic wheelable: boolean = false;\n\tpublic isMeasured: boolean = true;\n\tpublic buttonMode: boolean = false;\n\tpublic alpha: number = 1;\n\tpublic compoundAlpha: number = 1;\n\tpublic angle: number = 0;\n\tpublic scale: number = 1;\n\tpublic x: number = 0;\n\tpublic y: number = 0;\n\tpublic pivot: CanvasPivot = new CanvasPivot();\n\n\tpublic filter?: string;\n\n\tpublic cursorOverStyle?: string;\n\tpublic _replacedCursorStyle?: string;\n\n\tpublic _localMatrix: Matrix = new Matrix();\n\tpublic _matrix: Matrix = new Matrix();\n\t// TODO can this be replaced with _localMatrix ?\n\tprotected _uMatrix: Matrix = new Matrix();\n\n\tprotected _renderer: CanvasRenderer;\n\tpublic _parent: CanvasContainer | undefined;\n\n\tprotected _localBounds: IBounds | undefined;\n\tprotected _bounds: IBounds | undefined;\n\tpublic _colorId: string | undefined;\n\n\tconstructor(renderer: CanvasRenderer) {\n\t\tsuper(() => {\n\t\t\tthis._renderer._removeObject(this);\n\t\t});\n\n\t\tthis._renderer = renderer;\n\t}\n\n\tpublic getLayer(): CanvasLayer {\n\t\tlet self: CanvasDisplayObject = this;\n\n\t\tfor (; ;) {\n\t\t\tif (self._layer) {\n\t\t\t\treturn self._layer;\n\n\t\t\t} else if (self._parent) {\n\t\t\t\tself = self._parent;\n\n\t\t\t} else {\n\t\t\t\treturn this._renderer.defaultLayer;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic setLayer(order: number | undefined, visible: boolean = true): void {\n\t\tif (order == null) {\n\t\t\tthis._layer = undefined;\n\n\t\t} else {\n\t\t\tthis._layer = this._renderer.getLayer(order, visible);\n\t\t\tthis._layer.visible = visible;\n\t\t\tif (this._parent) {\n\t\t\t\tthis._parent.registerChildLayer(this._layer);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic markDirtyLayer(): void {\n\t\tthis.getLayer().dirty = true;\n\t}\n\n\tpublic clear(): void {\n\t\tthis.invalidateBounds();\n\t}\n\n\tpublic invalidateBounds(): void {\n\t\tthis._localBounds = undefined;\n\t}\n\n\tpublic _addBounds(_bounds: IBounds): void { }\n\n\tprotected _getColorId(): string {\n\t\tif (this._colorId === undefined) {\n\t\t\tthis._colorId = this._renderer.paintId(this);\n\t\t}\n\n\t\treturn this._colorId;\n\t}\n\n\tprotected _isInteractive(): boolean {\n\t\treturn this.interactive || this._renderer._forceInteractive > 0;\n\t}\n\n\tprotected _isInteractiveMask(): boolean {\n\t\treturn this._isInteractive();\n\t}\n\n\tpublic contains(child: CanvasDisplayObject): boolean {\n\t\tfor (; ;) {\n\t\t\tif (child === this) {\n\t\t\t\treturn true;\n\n\t\t\t} else if (child._parent) {\n\t\t\t\tchild = child._parent;\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\ttoGlobal(point: IPoint): IPoint {\n\t\treturn this._matrix.apply(point);\n\t}\n\n\ttoLocal(point: IPoint): IPoint {\n\t\treturn this._matrix.applyInverse(point);\n\t}\n\n\tpublic getLocalMatrix(): Matrix {\n\t\tthis._uMatrix.setTransform(0, 0, this.pivot.x, this.pivot.y, this.angle * Math.PI / 180, this.scale);\n\t\treturn this._uMatrix;\n\t}\n\n\tgetLocalBounds(): IBounds {\n\t\tif (!this._localBounds) {\n\n\t\t\tconst bn = 10000000;\n\t\t\tthis._localBounds = {\n\t\t\t\tleft: bn,\n\t\t\t\ttop: bn,\n\t\t\t\tright: -bn,\n\t\t\t\tbottom: -bn\n\t\t\t};\n\n\t\t\tthis._addBounds(this._localBounds);\n\t\t}\n\t\treturn this._localBounds;\n\t}\n\n\tgetAdjustedBounds(bounds: IBounds): IBounds {\n\t\tthis._setMatrix();\n\n\t\tconst matrix = this.getLocalMatrix();\n\n\t\tconst p0 = matrix.apply({ x: bounds.left, y: bounds.top });\n\t\tconst p1 = matrix.apply({ x: bounds.right, y: bounds.top });\n\t\tconst p2 = matrix.apply({ x: bounds.right, y: bounds.bottom });\n\t\tconst p3 = matrix.apply({ x: bounds.left, y: bounds.bottom });\n\n\t\treturn {\n\t\t\tleft: Math.min(p0.x, p1.x, p2.x, p3.x),\n\t\t\ttop: Math.min(p0.y, p1.y, p2.y, p3.y),\n\t\t\tright: Math.max(p0.x, p1.x, p2.x, p3.x),\n\t\t\tbottom: Math.max(p0.y, p1.y, p2.y, p3.y)\n\t\t}\n\t}\n\n\ton<C, Key extends keyof IRendererEvents>(key: Key, callback: (this: C, event: IRendererEvents[Key]) => void, context?: C): IDisposer {\n\t\tif (this.interactive) {\n\t\t\treturn this._renderer._addEvent(this, key, callback, context);\n\n\t\t} else {\n\t\t\treturn new Disposer(() => { });\n\t\t}\n\t}\n\n\tpublic _setMatrix(): void {\n\t\t// TODO only calculate this if it has actually changed\n\t\tthis._localMatrix.setTransform(\n\t\t\tthis.x,\n\t\t\tthis.y,\n\t\t\tthis.pivot.x,\n\t\t\tthis.pivot.y,\n\t\t\t// Converts degrees to radians\n\t\t\tthis.angle * Math.PI / 180,\n\t\t\tthis.scale\n\t\t);\n\n\t\tthis._matrix.copyFrom(this._localMatrix);\n\n\t\tif (this._parent) {\n\t\t\t// TODO only calculate this if it has actually changed\n\t\t\tthis._matrix.prepend(this._parent._matrix);\n\t\t}\n\t}\n\n\tpublic _transform(context: CanvasRenderingContext2D, resolution: number): void {\n\t\tconst m = this._matrix;\n\t\tcontext.setTransform(\n\t\t\tm.a * resolution,\n\t\t\tm.b * resolution,\n\t\t\tm.c * resolution,\n\t\t\tm.d * resolution,\n\t\t\tm.tx * resolution,\n\t\t\tm.ty * resolution\n\t\t);\n\t}\n\n\tpublic render(parentLayer: CanvasLayer): void {\n\t\tif (this.visible && (this.exportable !== false || !this._renderer._omitTainted)) {\n\t\t\tthis._setMatrix();\n\n\t\t\tconst resolution = this._renderer.resolution;\n\n\t\t\tconst layers = this._renderer.layers;\n\t\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t\tconst mask = this.mask;\n\t\t\tif (mask) {\n\t\t\t\tmask._setMatrix();\n\t\t\t}\n\n\t\t\t$array.each(layers, (layer) => {\n\t\t\t\tif (layer) {\n\t\t\t\t\tlayer.context.save();\n\n\t\t\t\t\t// We must apply the mask before we transform the element\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tmask._transform(layer.context, layer.scale || resolution);\n\t\t\t\t\t\tmask._runPath(layer.context);\n\t\t\t\t\t\tlayer.context.clip();\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer.context.globalAlpha = this.compoundAlpha * this.alpha;\n\n\t\t\t\t\tthis._transform(layer.context, layer.scale || resolution);\n\n\t\t\t\t\tif (this.filter) {\n\t\t\t\t\t\tlayer.context.filter = this.filter;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tghostContext.save();\n\n\t\t\t// We must apply the mask before we transform the element\n\t\t\tif (mask && this._isInteractiveMask()) {\n\t\t\t\tmask._transform(ghostContext, resolution);\n\t\t\t\tmask._runPath(ghostContext);\n\t\t\t\tghostContext.clip();\n\t\t\t}\n\n\t\t\tthis._transform(ghostContext, resolution);\n\n\t\t\tthis._render(parentLayer);\n\n\t\t\tghostContext.restore();\n\n\t\t\t$array.each(layers, (layer) => {\n\t\t\t\tif (layer) {\n\t\t\t\t\tlayer.context.restore();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected _render(parentLayer: CanvasLayer): void {\n\t\tif (this.exportable === false) {\n\t\t\tconst layer = this._layer || parentLayer;\n\t\t\tlayer.tainted = true;\n\t\t}\n\t}\n\n\thovering(): boolean {\n\t\treturn this._renderer._hovering.has(this);\n\t}\n\n\tdragging(): boolean {\n\t\treturn this._renderer._dragging.some((x) => x.value === this);\n\t}\n\n\tpublic dispose() {\n\t\tthis.getLayer().dirty = true;\n\t}\n\n}\n\n/**\n * @ignore\n */\nexport class CanvasContainer extends CanvasDisplayObject implements IContainer {\n\tpublic interactiveChildren: boolean = true;\n\tprivate _childLayers?: CanvasLayer[];\n\n\tprotected _children: Array<CanvasDisplayObject> = [];\n\n\tprotected _isInteractiveMask(): boolean {\n\t\treturn this.interactiveChildren || super._isInteractiveMask();\n\t}\n\n\taddChild(child: CanvasDisplayObject): void {\n\t\tchild._parent = this;\n\t\tthis._children.push(child);\n\t\tif (child._layer) {\n\t\t\tthis.registerChildLayer(child._layer);\n\t\t}\n\t}\n\n\taddChildAt(child: CanvasDisplayObject, index: number): void {\n\t\tchild._parent = this;\n\t\tthis._children.splice(index, 0, child);\n\t\tif (child._layer) {\n\t\t\tthis.registerChildLayer(child._layer);\n\t\t}\n\t}\n\n\tremoveChild(child: CanvasDisplayObject): void {\n\t\tchild._parent = undefined;\n\t\t$array.removeFirst(this._children, child);\n\t}\n\n\tprotected _render(parentLayer: CanvasLayer): void {\n\t\tsuper._render(parentLayer);\n\n\t\tconst renderer = this._renderer;\n\n\t\tif (this.interactive && this.interactiveChildren) {\n\t\t\t++renderer._forceInteractive;\n\t\t}\n\n\t\tconst layer = this._layer || parentLayer;\n\n\t\t$array.each(this._children, (child) => {\n\t\t\tchild.compoundAlpha = this.compoundAlpha * this.alpha;\n\t\t\tchild.render(layer);\n\t\t});\n\n\t\tif (this.interactive && this.interactiveChildren) {\n\t\t\t--renderer._forceInteractive;\n\t\t}\n\t}\n\n\tregisterChildLayer(layer: CanvasLayer): void {\n\t\tif (!this._childLayers) {\n\t\t\tthis._childLayers = [];\n\t\t}\n\t\t$array.pushOne(this._childLayers, layer);\n\t\tif (this._parent) {\n\t\t\tthis._parent.registerChildLayer(layer);\n\t\t}\n\t}\n\n\tpublic markDirtyLayer(deep: boolean = false): void {\n\t\tsuper.markDirtyLayer();\n\t\tif (deep && this._childLayers) {\n\t\t\t$array.each(this._childLayers, (layer) => layer.dirty = true);\n\t\t}\n\t}\n\n\tpublic dispose() {\n\t\tsuper.dispose();\n\t\tif (this._childLayers) {\n\t\t\t$array.each(this._childLayers, (layer) => {\n\t\t\t\tlayer.dirty = true;\n\t\t\t});\n\t\t}\n\t}\n}\n\n/**\n * @ignore\n */\nfunction setPoint(bounds: IBounds, point: IPoint): void {\n\tbounds.left = Math.min(bounds.left, point.x);\n\tbounds.top = Math.min(bounds.top, point.y);\n\tbounds.right = Math.max(bounds.right, point.x);\n\tbounds.bottom = Math.max(bounds.bottom, point.y);\n}\n\n/**\n * @ignore\n */\nabstract class Op {\n\tpublic colorize(_context: CanvasRenderingContext2D, _forceColor: string | undefined): void { }\n\n\tpublic path(_context: CanvasRenderingContext2D): void { }\n\n\tpublic addBounds(_bounds: IBounds): void { }\n}\n\n/**\n * @ignore\n */\nclass BeginFill extends Op {\n\tconstructor(public color: string | CanvasGradient | CanvasPattern) { super(); }\n\n\tpublic colorize(context: CanvasRenderingContext2D, forceColor: string | undefined): void {\n\t\tif (forceColor !== undefined) {\n\t\t\tcontext.fillStyle = forceColor;\n\n\t\t} else {\n\t\t\tcontext.fillStyle = this.color;\n\t\t}\n\t}\n}\n\n/**\n * @ignore\n */\nclass EndFill extends Op {\n\tpublic colorize(context: CanvasRenderingContext2D, _forceColor: string | undefined): void {\n\t\tcontext.fill();\n\t}\n}\n\n/**\n * @ignore\n */\nclass EndStroke extends Op {\n\tpublic colorize(context: CanvasRenderingContext2D, _forceColor: string | undefined): void {\n\t\tcontext.stroke();\n\t}\n}\n\n/**\n * @ignore\n */\nclass LineStyle extends Op {\n\tconstructor(public width: number, public color: string | CanvasGradient | CanvasPattern) { super(); }\n\n\tpublic colorize(context: CanvasRenderingContext2D, forceColor: string | undefined): void {\n\t\tif (forceColor !== undefined) {\n\t\t\tcontext.strokeStyle = forceColor;\n\n\t\t} else {\n\t\t\tcontext.strokeStyle = this.color;\n\t\t}\n\n\t\tcontext.lineWidth = this.width;\n\t}\n}\n\n/**\n * @ignore\n */\nclass LineDash extends Op {\n\tconstructor(public dash: number[]) { super(); }\n\n\tpublic colorize(context: CanvasRenderingContext2D, _forceColor: string | undefined): void {\n\t\tcontext.setLineDash(this.dash);\n\t}\n}\n\n/**\n * @ignore\n */\nclass LineDashOffset extends Op {\n\tconstructor(public dashOffset: number) { super(); }\n\n\tpublic colorize(context: CanvasRenderingContext2D, _forceColor: string | undefined): void {\n\t\tcontext.lineDashOffset = this.dashOffset;\n\t}\n}\n\n/**\n * @ignore\n */\nclass DrawRect extends Op {\n\tconstructor(public x: number, public y: number, public width: number, public height: number) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.rect(this.x, this.y, this.width, this.height);\n\t}\n\n\tpublic addBounds(bounds: IBounds): void {\n\t\tconst l = this.x;\n\t\tconst t = this.y;\n\t\tconst r = l + this.width;\n\t\tconst b = t + this.height;\n\n\t\tsetPoint(bounds, { x: l, y: t });\n\t\tsetPoint(bounds, { x: r, y: t });\n\t\tsetPoint(bounds, { x: l, y: b });\n\t\tsetPoint(bounds, { x: r, y: b });\n\t}\n}\n\n/**\n * @ignore\n */\nclass DrawCircle extends Op {\n\tconstructor(public x: number, public y: number, public radius: number) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.moveTo(this.x + this.radius, this.y);\n\t\tcontext.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);\n\t}\n\n\t// TODO handle skewing and rotation\n\tpublic addBounds(bounds: IBounds): void {\n\t\tsetPoint(bounds, { x: this.x - this.radius, y: this.y - this.radius });\n\t\tsetPoint(bounds, { x: this.x + this.radius, y: this.y + this.radius });\n\t}\n}\n\n/**\n * @ignore\n */\nclass Arc extends Op {\n\tconstructor(\n\t\tpublic cx: number,\n\t\tpublic cy: number,\n\t\tpublic radius: number,\n\t\tpublic startAngle: number,\n\t\tpublic endAngle: number,\n\t\tpublic anticlockwise: boolean,\n\t) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.arc(this.cx, this.cy, this.radius, this.startAngle, this.endAngle, this.anticlockwise);\n\t}\n\n\tpublic addBounds(bounds: IBounds): void {\n\t\tlet arcBounds = $math.getArcBounds(this.cx, this.cy, this.startAngle * $math.DEGREES, this.endAngle * $math.DEGREES, this.radius);\n\t\tsetPoint(bounds, { x: arcBounds.left, y: arcBounds.top });\n\t\tsetPoint(bounds, { x: arcBounds.right, y: arcBounds.bottom });\n\t}\n}\n\n/**\n * @ignore\n */\nclass ArcTo extends Op {\n\tconstructor(\n\t\tpublic x1: number,\n\t\tpublic y1: number,\n\t\tpublic x2: number,\n\t\tpublic y2: number,\n\t\tpublic radius: number,\n\t) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.arcTo(this.x1, this.y1, this.x2, this.y2, this.radius);\n\t}\n\n\t// TODO: add points\n\tpublic addBounds(_bounds: IBounds): void {\n\t\t/*\n\t\t// not finished\n\t\thttps://math.stackexchange.com/questions/1781438/finding-the-center-of-a-circle-given-two-points-and-a-radius-algebraically\n\n\t\tif (prevPoint) {\n\t\t\tlet x1 = prevPoint.x;\n\t\t\tlet y1 = prevPoint.y;\n\t\t\tlet x2 = this.x2;\n\t\t\tlet y2 = this.y2;\n\t\t\tlet r = this.radius;\n\n\t\t\tlet xa = (x2 - x1) / 2;\n\t\t\tlet ya = (y2 - y1) / 2;\n\n\t\t\tlet x0 = x1 + xa;\n\t\t\tlet y0 = y1 + ya;\n\n\t\t\tlet a = Math.hypot(xa, ya);\n\t\t\tlet b = Math.sqrt(r * r - a * a);\n\n\t\t\tlet cx = x0 + b * ya / a;\n\t\t\tlet cy = y0 - b * xa / a;\n\n\t\t\tconsole.log(cx, cy);\n\t\t}*/\n\t}\n}\n\n/**\n * @ignore\n */\nclass LineTo extends Op {\n\tconstructor(public x: number, public y: number) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.lineTo(this.x, this.y);\n\t}\n\n\tpublic addBounds(bounds: IBounds): void {\n\t\tsetPoint(bounds, { x: this.x, y: this.y });\n\t}\n}\n\n/**\n * @ignore\n */\nclass MoveTo extends Op {\n\tconstructor(public x: number, public y: number) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.moveTo(this.x, this.y);\n\t}\n\n\tpublic addBounds(bounds: IBounds): void {\n\t\tsetPoint(bounds, { x: this.x, y: this.y });\n\t}\n}\n\n/**\n * @ignore\n */\nclass ClosePath extends Op {\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.closePath();\n\t}\n}\n\n/**\n * @ignore\n */\nclass BezierCurveTo extends Op {\n\tconstructor(\n\t\tpublic cpX: number,\n\t\tpublic cpY: number,\n\t\tpublic cpX2: number,\n\t\tpublic cpY2: number,\n\t\tpublic toX: number,\n\t\tpublic toY: number,\n\t) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.bezierCurveTo(this.cpX, this.cpY, this.cpX2, this.cpY2, this.toX, this.toY);\n\t}\n\n\t// TODO: OK?\n\tpublic addBounds(bounds: IBounds): void {\n\t\tsetPoint(bounds, { x: this.cpX, y: this.cpY });\n\t\tsetPoint(bounds, { x: this.cpX2, y: this.cpY2 });\n\t\tsetPoint(bounds, { x: this.toX, y: this.toY });\n\t}\n}\n\n/**\n * @ignore\n */\nclass QuadraticCurveTo extends Op {\n\tconstructor(\n\t\tpublic cpX: number,\n\t\tpublic cpY: number,\n\t\tpublic toX: number,\n\t\tpublic toY: number,\n\t) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.quadraticCurveTo(this.cpX, this.cpY, this.toX, this.toY);\n\t}\n\n\t// TODO: OK?\n\tpublic addBounds(bounds: IBounds): void {\n\t\tsetPoint(bounds, { x: this.cpX, y: this.cpY });\n\t\tsetPoint(bounds, { x: this.toX, y: this.toY });\n\t}\n}\n\n/**\n * @ignore\n */\nexport class CanvasGraphics extends CanvasDisplayObject implements IGraphics {\n\tprotected _operations: Array<Op> = [];\n\n\tpublic blendMode: BlendMode = BlendMode.NORMAL;\n\n\tclear(): void {\n\t\tsuper.clear();\n\t\tthis._operations.length = 0;\n\t}\n\n\tprotected _pushOp(op: Op): void {\n\t\tthis._operations.push(op);\n\t}\n\n\tbeginFill(color?: Color | CanvasGradient | CanvasPattern, alpha: number = 1): void {\n\t\tif (color) {\n\t\t\tif (color instanceof Color) {\n\t\t\t\tthis._pushOp(new BeginFill(color.toCSS(alpha)));\n\n\t\t\t} else {\n\t\t\t\tthis._pushOp(new BeginFill(color));\n\t\t\t}\n\t\t} else {\n\t\t\tthis._pushOp(new BeginFill(\"rgba(0, 0, 0, \" + alpha + \")\"));\n\t\t}\n\t}\n\n\tendFill(): void {\n\t\tthis._pushOp(new EndFill());\n\t}\n\n\tendStroke(): void {\n\t\tthis._pushOp(new EndStroke());\n\t}\n\n\tlineStyle(width: number = 0, color?: Color | CanvasGradient | CanvasPattern, alpha: number = 1): void {\n\t\tif (color) {\n\t\t\tif (color instanceof Color) {\n\t\t\t\tthis._pushOp(new LineStyle(width, color.toCSS(alpha)));\n\t\t\t} else {\n\t\t\t\tthis._pushOp(new LineStyle(width, color));\n\t\t\t}\n\t\t} else {\n\t\t\tthis._pushOp(new LineStyle(width, \"rgba(0, 0, 0, \" + alpha + \")\"));\n\t\t}\n\t}\n\n\tsetLineDash(dash?: number[]): void {\n\t\tthis._pushOp(new LineDash(dash ? dash : []));\n\t}\n\n\tsetLineDashOffset(dashOffset?: number): void {\n\t\tthis._pushOp(new LineDashOffset(dashOffset || 0));\n\t}\n\n\tdrawRect(x: number, y: number, width: number, height: number): void {\n\t\tthis._pushOp(new DrawRect(x, y, width, height));\n\t}\n\n\tdrawCircle(x: number, y: number, radius: number): void {\n\t\tthis._pushOp(new DrawCircle(x, y, radius));\n\t}\n\n\tarc(cx: number, cy: number, radius: number, startAngle: number, endAngle: number, anticlockwise: boolean = false): void {\n\t\tthis._pushOp(new Arc(cx, cy, radius, startAngle, endAngle, anticlockwise));\n\t}\n\n\tarcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void {\n\t\tthis._pushOp(new ArcTo(x1, y1, x2, y2, radius));\n\t}\n\n\tlineTo(x: number, y: number): void {\n\t\tthis._pushOp(new LineTo(x, y));\n\t}\n\n\tmoveTo(x: number, y: number): void {\n\t\tthis._pushOp(new MoveTo(x, y));\n\t}\n\n\tbezierCurveTo(cpX: number, cpY: number, cpX2: number, cpY2: number, toX: number, toY: number): void {\n\t\tthis._pushOp(new BezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY));\n\t}\n\n\tquadraticCurveTo(cpX: number, cpY: number, toX: number, toY: number): void {\n\t\tthis._pushOp(new QuadraticCurveTo(cpX, cpY, toX, toY));\n\t}\n\n\tclosePath(): void {\n\t\tthis._pushOp(new ClosePath());\n\t}\n\n\t// TODO better error checking\n\tsvgPath(path: string): void {\n\t\tlet x = 0;\n\t\tlet y = 0;\n\t\tlet cpx: number | null = null;\n\t\tlet cpy: number | null = null;\n\t\tlet qcpx: number | null = null;\n\t\tlet qcpy: number | null = null;\n\n\t\tconst SEGMENTS_REGEXP = /([MmZzLlHhVvCcSsQqTtAa])([^MmZzLlHhVvCcSsQqTtAa]*)/g;\n\t\tconst ARGS_REGEXP = /[\\u0009\\u0020\\u000A\\u000C\\u000D]*([\\+\\-]?[0-9]*\\.?[0-9]+(?:[eE][\\+\\-]?[0-9]+)?)[\\u0009\\u0020\\u000A\\u000C\\u000D]*,?/g;\n\n\t\tlet match;\n\n\t\twhile ((match = SEGMENTS_REGEXP.exec(path)) !== null) {\n\t\t\tconst name = match[1];\n\t\t\tconst rest = match[2];\n\n\t\t\tconst args = [];\n\n\t\t\twhile ((match = ARGS_REGEXP.exec(rest)) !== null) {\n\t\t\t\targs.push(+match[1]);\n\t\t\t}\n\n\t\t\t// Reset control point\n\t\t\tif (name !== \"S\" && name !== \"s\" && name !== \"C\" && name !== \"c\") {\n\t\t\t\tcpx = null;\n\t\t\t\tcpy = null;\n\t\t\t}\n\n\t\t\t// Reset control point\n\t\t\tif (name !== \"Q\" && name !== \"q\" && name !== \"T\" && name !== \"t\") {\n\t\t\t\tqcpx = null;\n\t\t\t\tqcpy = null;\n\t\t\t}\n\n\t\t\tswitch (name) {\n\t\t\t\tcase \"M\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tx = args[0];\n\t\t\t\t\ty = args[1];\n\t\t\t\t\tthis.moveTo(x, y);\n\n\t\t\t\t\tfor (let i = 2; i < args.length; i += 2) {\n\t\t\t\t\t\tx = args[i];\n\t\t\t\t\t\ty = args[i + 1];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"m\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tx += args[0];\n\t\t\t\t\ty += args[1];\n\t\t\t\t\tthis.moveTo(x, y);\n\n\t\t\t\t\tfor (let i = 2; i < args.length; i += 2) {\n\t\t\t\t\t\tx += args[i];\n\t\t\t\t\t\ty += args[i + 1];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"L\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 2) {\n\t\t\t\t\t\tx = args[i];\n\t\t\t\t\t\ty = args[i + 1];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"l\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 2) {\n\t\t\t\t\t\tx += args[i];\n\t\t\t\t\t\ty += args[i + 1];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"H\":\n\t\t\t\t\tcheckMinArgs(name, args.length, 1);\n\t\t\t\t\tfor (let i = 0; i < args.length; ++i) {\n\t\t\t\t\t\tx = args[i];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"h\":\n\t\t\t\t\tcheckMinArgs(name, args.length, 1);\n\t\t\t\t\tfor (let i = 0; i < args.length; ++i) {\n\t\t\t\t\t\tx += args[i];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"V\":\n\t\t\t\t\tcheckMinArgs(name, args.length, 1);\n\t\t\t\t\tfor (let i = 0; i < args.length; ++i) {\n\t\t\t\t\t\ty = args[i];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"v\":\n\t\t\t\t\tcheckMinArgs(name, args.length, 1);\n\t\t\t\t\tfor (let i = 0; i < args.length; ++i) {\n\t\t\t\t\t\ty += args[i];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"C\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 6);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 6) {\n\t\t\t\t\t\tconst x1 = args[i];\n\t\t\t\t\t\tconst y1 = args[i + 1];\n\t\t\t\t\t\tcpx = args[i + 2];\n\t\t\t\t\t\tcpy = args[i + 3];\n\t\t\t\t\t\tx = args[i + 4];\n\t\t\t\t\t\ty = args[i + 5];\n\t\t\t\t\t\tthis.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"c\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 6);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 6) {\n\t\t\t\t\t\tconst x1 = args[i] + x;\n\t\t\t\t\t\tconst y1 = args[i + 1] + y;\n\t\t\t\t\t\tcpx = args[i + 2] + x;\n\t\t\t\t\t\tcpy = args[i + 3] + y;\n\t\t\t\t\t\tx += args[i + 4];\n\t\t\t\t\t\ty += args[i + 5];\n\t\t\t\t\t\tthis.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"S\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 4);\n\t\t\t\t\tif (cpx === null || cpy === null) {\n\t\t\t\t\t\tcpx = x;\n\t\t\t\t\t\tcpy = y;\n\t\t\t\t\t}\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 4) {\n\t\t\t\t\t\tconst x1 = 2 * x - cpx;\n\t\t\t\t\t\tconst y1 = 2 * y - cpy;\n\t\t\t\t\t\tcpx = args[i];\n\t\t\t\t\t\tcpy = args[i + 1];\n\t\t\t\t\t\tx = args[i + 2];\n\t\t\t\t\t\ty = args[i + 3];\n\t\t\t\t\t\tthis.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"s\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 4);\n\t\t\t\t\tif (cpx === null || cpy === null) {\n\t\t\t\t\t\tcpx = x;\n\t\t\t\t\t\tcpy = y;\n\t\t\t\t\t}\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 4) {\n\t\t\t\t\t\tconst x1 = 2 * x - cpx;\n\t\t\t\t\t\tconst y1 = 2 * y - cpy;\n\t\t\t\t\t\tcpx = args[i] + x;\n\t\t\t\t\t\tcpy = args[i + 1] + y;\n\t\t\t\t\t\tx += args[i + 2];\n\t\t\t\t\t\ty += args[i + 3];\n\t\t\t\t\t\tthis.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"Q\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 4);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 4) {\n\t\t\t\t\t\tqcpx = args[i];\n\t\t\t\t\t\tqcpy = args[i + 1];\n\t\t\t\t\t\tx = args[i + 2];\n\t\t\t\t\t\ty = args[i + 3];\n\t\t\t\t\t\tthis.quadraticCurveTo(qcpx, qcpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"q\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 4);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 4) {\n\t\t\t\t\t\tqcpx = args[i] + x;\n\t\t\t\t\t\tqcpy = args[i + 1] + y;\n\t\t\t\t\t\tx += args[i + 2];\n\t\t\t\t\t\ty += args[i + 3];\n\t\t\t\t\t\tthis.quadraticCurveTo(qcpx, qcpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"T\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tif (qcpx === null || qcpy === null) {\n\t\t\t\t\t\tqcpx = x;\n\t\t\t\t\t\tqcpy = y;\n\t\t\t\t\t}\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 2) {\n\t\t\t\t\t\tqcpx = 2 * x - qcpx;\n\t\t\t\t\t\tqcpy = 2 * y - qcpy;\n\t\t\t\t\t\tx = args[i];\n\t\t\t\t\t\ty = args[i + 1];\n\t\t\t\t\t\tthis.quadraticCurveTo(qcpx, qcpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"t\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tif (qcpx === null || qcpy === null) {\n\t\t\t\t\t\tqcpx = x;\n\t\t\t\t\t\tqcpy = y;\n\t\t\t\t\t}\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 2) {\n\t\t\t\t\t\tqcpx = 2 * x - qcpx;\n\t\t\t\t\t\tqcpy = 2 * y - qcpy;\n\t\t\t\t\t\tx += args[i];\n\t\t\t\t\t\ty += args[i + 1];\n\t\t\t\t\t\tthis.quadraticCurveTo(qcpx, qcpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"A\":\n\t\t\t\tcase \"a\":\n\t\t\t\t\tthrow new Error(\"'\" + name + \"' command is not supported\")\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"Z\":\n\t\t\t\tcase \"z\":\n\t\t\t\t\tcheckArgs(name, args.length, 0);\n\t\t\t\t\tthis.closePath();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tpublic _runPath(context: CanvasRenderingContext2D): void {\n\t\tcontext.beginPath();\n\n\t\t$array.each(this._operations, (op) => {\n\t\t\top.path(context);\n\t\t});\n\t}\n\n\tprotected _render(parentLayer: CanvasLayer): void {\n\t\tsuper._render(parentLayer);\n\n\t\tconst layer = this._layer || parentLayer;\n\n\t\tconst layerDirty = layer.dirty;\n\t\tconst interactive = this._isInteractive();\n\n\t\t// if (this.targetLayer) {\n\t\t// \tconsole.log(this._operations, layer)\n\t\t// }\n\n\t\tif (layerDirty || interactive) {\n\t\t\tconst context = layer.context;\n\t\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t\tif (layerDirty) {\n\t\t\t\tcontext.globalCompositeOperation = this.blendMode;\n\n\t\t\t\tcontext.beginPath();\n\t\t\t}\n\n\t\t\tconst color = (interactive ? this._getColorId() : undefined);\n\n\t\t\tif (interactive) {\n\t\t\t\tghostContext.beginPath();\n\t\t\t}\n\n\t\t\t$array.each(this._operations, (op) => {\n\t\t\t\tif (layerDirty) {\n\t\t\t\t\top.path(context);\n\t\t\t\t\top.colorize(context, undefined);\n\t\t\t\t}\n\n\t\t\t\tif (interactive) {\n\t\t\t\t\top.path(ghostContext);\n\t\t\t\t\top.colorize(ghostContext, color);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic renderDetached(context: CanvasRenderingContext2D): void {\n\t\tif (this.visible) {\n\t\t\tthis._setMatrix();\n\n\t\t\tcontext.save();\n\n\t\t\t// We must apply the mask before we transform the element\n\t\t\tconst mask = this.mask;\n\t\t\tif (mask) {\n\t\t\t\tmask._setMatrix();\n\t\t\t\tmask._transform(context, 1);\n\t\t\t\tmask._runPath(context);\n\t\t\t\tcontext.clip();\n\t\t\t}\n\n\t\t\t// TODO handle compoundAlpha somehow ?\n\t\t\tcontext.globalAlpha = this.compoundAlpha * this.alpha;\n\n\t\t\tthis._transform(context, 1);\n\n\t\t\tif (this.filter) {\n\t\t\t\tcontext.filter = this.filter;\n\t\t\t}\n\n\t\t\tcontext.globalCompositeOperation = this.blendMode;\n\n\t\t\tcontext.beginPath();\n\n\t\t\t$array.each(this._operations, (op) => {\n\t\t\t\top.path(context);\n\t\t\t\top.colorize(context, undefined);\n\t\t\t});\n\n\t\t\tcontext.restore();\n\t\t}\n\t}\n\n\tpublic _addBounds(bounds: IBounds): void {\n\t\tif (this.visible && this.isMeasured) {\n\t\t\t$array.each(this._operations, (op) => {\n\t\t\t\top.addBounds(bounds);\n\t\t\t});\n\t\t}\n\t}\n}\n\n/**\n * @ignore\n */\ninterface ILineChunk {\n\tstyle: string | undefined,\n\tfill: Color | undefined,\n\ttext: string,\n\twidth: number,\n\theight: number,\n\tleft: number,\n\tright: number,\n\tascent: number,\n\toffsetX: number,\n\toffsetY: number,\n}\n\n/**\n * @ignore\n */\ninterface ILine {\n\toffsetY: number,\n\tascent: number,\n\twidth: number,\n\theight: number,\n\tleft: number,\n\tright: number,\n\ttextChunks: Array<ILineChunk>,\n}\n\n/**\n * @ignore\n */\nexport class CanvasText extends CanvasContainer implements IText {\n\tpublic text: string;\n\tpublic style: CanvasTextStyle;\n\tpublic resolution: number = 1;\n\n\tprotected _textInfo: Array<ILine> | undefined;\n\tprotected _textVisible: boolean = true;\n\tprotected _originalScale?: number = 1;\n\n\tconstructor(renderer: CanvasRenderer, text: string, style: CanvasTextStyle) {\n\t\tsuper(renderer);\n\t\tthis.text = text;\n\t\tthis.style = style;\n\t}\n\n\tpublic invalidateBounds(): void {\n\t\tsuper.invalidateBounds();\n\t\tthis._textInfo = undefined;\n\t}\n\n\tprivate _shared(context: CanvasRenderingContext2D) {\n\t\tif (this.style.textAlign) {\n\t\t\tcontext.textAlign = this.style.textAlign;\n\t\t}\n\n\t\tif (this.style.direction) {\n\t\t\tcontext.direction = this.style.direction;\n\t\t}\n\n\t\tif (this.style.textBaseline) {\n\t\t\tcontext.textBaseline = this.style.textBaseline;\n\t\t}\n\n\t}\n\n\tprotected _prerender(layer: CanvasLayer, ignoreGhost = false): void {\n\t\tsuper._render(layer);\n\n\t\tconst context = layer.context;\n\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t// Font style\n\n\t\tconst style = this.style;\n\t\tlet fontStyle = this._getFontStyle();\n\n\t\tcontext.font = fontStyle;\n\t\tif (this._isInteractive() && !ignoreGhost) {\n\t\t\tghostContext.font = fontStyle;\n\t\t}\n\n\t\t// Other parameters\n\t\tif (style.fill) {\n\t\t\tif (style.fill instanceof Color) {\n\t\t\t\tcontext.fillStyle = style.fill.toCSS();\n\t\t\t} else {\n\t\t\t\tcontext.fillStyle = style.fill;\n\t\t\t}\n\t\t}\n\n\t\tthis._shared(context);\n\n\t\tif (this._isInteractive() && !ignoreGhost) {\n\t\t\tghostContext.fillStyle = this._getColorId();\n\t\t\tthis._shared(ghostContext);\n\t\t}\n\t}\n\n\tprotected _getFontStyle(style2?: ITextStyle): string {\n\n\t\t// Process defaults\n\t\tconst style = this.style;\n\t\tlet fontStyle: string[] = [];\n\n\t\tif (style2 && style2.fontVariant) {\n\t\t\tfontStyle.push(style2.fontVariant);\n\t\t}\n\t\telse if (style.fontVariant) {\n\t\t\tfontStyle.push(style.fontVariant);\n\t\t}\n\n\t\tif (style2 && style2.fontWeight) {\n\t\t\tfontStyle.push(style2.fontWeight);\n\t\t}\n\t\telse if (style.fontWeight) {\n\t\t\tfontStyle.push(style.fontWeight);\n\t\t}\n\n\t\tif (style2 && style2.fontStyle) {\n\t\t\tfontStyle.push(style2.fontStyle);\n\t\t}\n\t\telse if (style.fontStyle) {\n\t\t\tfontStyle.push(style.fontStyle);\n\t\t}\n\n\t\tif (style2 && style2.fontSize) {\n\t\t\tif ($type.isNumber(style2.fontSize)) {\n\t\t\t\tstyle2.fontSize = style2.fontSize + \"px\";\n\t\t\t}\n\t\t\tfontStyle.push(style2.fontSize);\n\t\t}\n\t\telse if (style.fontSize) {\n\t\t\tif ($type.isNumber(style.fontSize)) {\n\t\t\t\tstyle.fontSize = style.fontSize + \"px\";\n\t\t\t}\n\t\t\tfontStyle.push(style.fontSize);\n\t\t}\n\n\t\tif (style2 && style2.fontFamily) {\n\t\t\tfontStyle.push(style2.fontFamily);\n\t\t}\n\t\telse if (style.fontFamily) {\n\t\t\tfontStyle.push(style.fontFamily);\n\t\t}\n\t\telse if (fontStyle.length) {\n\t\t\tfontStyle.push(\"Arial\");\n\t\t}\n\n\t\treturn fontStyle.join(\" \");\n\t}\n\n\tpublic render(parentLayer: CanvasLayer): void {\n\t\tsuper.render(parentLayer);\n\t}\n\n\tprotected _render(parentLayer: CanvasLayer): void {\n\t\tconst layer = this._layer || parentLayer;\n\n\t\t// We need measurements in order to properly position text for alignment\n\t\tif (!this._textInfo) {\n\t\t\tthis._measure(layer);\n\t\t}\n\n\t\tif (this._textVisible) {\n\t\t\tthis._prerender(layer);\n\n\t\t\tconst interactive = this._isInteractive();\n\t\t\tconst context = layer.context;\n\t\t\tconst layerDirty = layer.dirty;\n\t\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t\t// const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\n\t\t\t// const x = this._localBounds && (this._localBounds.left < 0) ? Math.abs(this._localBounds.left) : 0;\n\n\n\n\t\t\t// Process text info produced by _measure()\n\t\t\t$array.each(this._textInfo!, (line, _index) => {\n\t\t\t\t$array.each(line.textChunks, (chunk, _index) => {\n\n\t\t\t\t\t// Set style\n\t\t\t\t\tif (chunk.style) {\n\t\t\t\t\t\tcontext.save();\n\t\t\t\t\t\tghostContext.save();\n\n\t\t\t\t\t\tcontext.font = chunk.style;\n\t\t\t\t\t\tif (this._isInteractive()) {\n\t\t\t\t\t\t\tghostContext.font = chunk.style;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chunk.fill) {\n\t\t\t\t\t\tcontext.save();\n\t\t\t\t\t\tcontext.fillStyle = chunk.fill.toCSS();\n\t\t\t\t\t\t// Color does not affect ghostContext so we not set it\n\t\t\t\t\t}\n\n\t\t\t\t\t// Draw text\n\t\t\t\t\tif (layerDirty) {\n\t\t\t\t\t\tcontext.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (interactive && this.interactive) {\n\t\t\t\t\t\t// Draw text in ghost canvas ONLY if it is set as interactive\n\t\t\t\t\t\t// explicitly. This way we avoid hit test anomalies caused by anti\n\t\t\t\t\t\t// aliasing of text.\n\t\t\t\t\t\tghostContext.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chunk.fill) {\n\t\t\t\t\t\tcontext.restore();\n\t\t\t\t\t\t// Color does not affect ghostContext so we not set it\n\t\t\t\t\t}\n\n\t\t\t\t\t// Reset style\n\t\t\t\t\tif (chunk.style) {\n\t\t\t\t\t\tcontext.restore();\n\t\t\t\t\t\tghostContext.restore();\n\t\t\t\t\t}\n\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic _addBounds(bounds: IBounds): void {\n\t\tif (this.visible && this.isMeasured) {\n\t\t\tif (this._textVisible) {\n\t\t\t\tconst x = this._measure(this.getLayer());\n\t\t\t\tsetPoint(bounds, { x: x.left, y: x.top });\n\t\t\t\tsetPoint(bounds, { x: x.right, y: x.bottom });\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _measure(layer: CanvasLayer): IBounds {\n\t\tconst context = layer.context;\n\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t// Reset text info\n\t\tthis._textInfo = [];\n\n\t\t// Init\n\t\tconst oversizedBehavior = this.style.oversizedBehavior;\n\t\tconst maxWidth = this.style.maxWidth!;\n\t\tconst truncate = maxWidth && oversizedBehavior == \"truncate\";\n\t\tconst wrap = maxWidth && oversizedBehavior == \"wrap\";\n\n\t\t// Pre-render\n\t\tcontext.save();\n\t\tghostContext.save();\n\t\tthis._prerender(layer, true);\n\n\t\t// Get default font metrix\n\t\tconst refText = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 \";\n\n\t\t// Split up text into lines\n\t\tconst lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\n\t\tlet styleRestored = true;\n\t\tlet minX = 0;\n\t\tlet maxX = 0;\n\n\t\t// Iterate through the lines\n\t\tlet offsetY = 0;\n\t\t$array.each(lines, (line, _index) => {\n\n\t\t\t// Split up line into format/value chunks\n\t\t\tlet chunks = TextFormatter.chunk(line);\n\n\t\t\twhile (chunks.length > 0) {\n\n\t\t\t\t// Init line object\n\t\t\t\tlet lineInfo: ILine = {\n\t\t\t\t\toffsetY: offsetY,\n\t\t\t\t\tascent: 0,\n\t\t\t\t\twidth: 0,\n\t\t\t\t\theight: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: 0,\n\t\t\t\t\ttextChunks: []\n\t\t\t\t};\n\n\t\t\t\t// Measure reference text\n\t\t\t\tconst metrics = this._measureText(refText, context);\n\n\t\t\t\tconst height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n\t\t\t\tlineInfo.height = height;\n\t\t\t\tlineInfo.ascent = metrics.actualBoundingBoxAscent;\n\n\t\t\t\tlet currentStyle: string | undefined;\n\t\t\t\tlet currentFormat: string;\n\t\t\t\tlet currentFill: Color | undefined;\n\t\t\t\tlet currentChunkWidth: number | undefined;\n\t\t\t\tlet skipFurtherText = false;\n\t\t\t\tlet firstTextChunk = true;\n\t\t\t\tlet leftoverChunks: Array<ITextChunk> = [];\n\t\t\t\t//let offsetX = 0;\n\t\t\t\t//let chunk;\n\n\t\t\t\t//while(chunk = chunks.shift()) {\n\t\t\t\t$array.eachContinue(chunks, (chunk, index) => {\n\n\t\t\t\t\t// Format chunk\n\t\t\t\t\tif (chunk.type == \"format\") {\n\t\t\t\t\t\tif (chunk.text == \"[/]\") {\n\t\t\t\t\t\t\tif (!styleRestored) {\n\t\t\t\t\t\t\t\tcontext.restore();\n\t\t\t\t\t\t\t\tghostContext.restore();\n\t\t\t\t\t\t\t\tstyleRestored = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcurrentFill = undefined;\n\t\t\t\t\t\t\tcurrentStyle = undefined;\n\t\t\t\t\t\t\tcurrentChunkWidth = undefined;\n\t\t\t\t\t\t\tcurrentFormat = chunk.text;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet format = TextFormatter.getTextStyle(chunk.text);\n\t\t\t\t\t\t\tconst fontStyle = this._getFontStyle(format);\n\t\t\t\t\t\t\tcontext.save();\n\t\t\t\t\t\t\tghostContext.save();\n\t\t\t\t\t\t\tcontext.font = fontStyle;\n\t\t\t\t\t\t\tcurrentStyle = fontStyle;\n\t\t\t\t\t\t\tcurrentFormat = chunk.text;\n\t\t\t\t\t\t\tif (format.fill) {\n\t\t\t\t\t\t\t\tcurrentFill = <Color>format.fill;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ((<any>format).width) {\n\t\t\t\t\t\t\t\tcurrentChunkWidth = $type.toNumber((<any>format).width);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstyleRestored = false;\n\n\t\t\t\t\t\t\t// Measure reference text after change of format\n\t\t\t\t\t\t\tconst metrics = this._measureText(refText, context);\n\t\t\t\t\t\t\tconst height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n\t\t\t\t\t\t\tif (height > lineInfo.height) {\n\t\t\t\t\t\t\t\tlineInfo.height = height;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\n\t\t\t\t\t\t\t\tlineInfo.ascent = metrics.actualBoundingBoxAscent;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Text chunk\n\t\t\t\t\telse if (chunk.type == \"value\" && !skipFurtherText) {\n\n\t\t\t\t\t\t// Measure\n\t\t\t\t\t\tconst metrics = this._measureText(chunk.text.replace(/ /g, \".\"), context);\n\t\t\t\t\t\tlet chunkWidth = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\n\n\t\t\t\t\t\t// Check for fit\n\t\t\t\t\t\tif (truncate) {\n\n\t\t\t\t\t\t\t// Break words?\n\t\t\t\t\t\t\tlet breakWords = firstTextChunk || this.style.breakWords || false;\n\n\t\t\t\t\t\t\t// Measure ellipsis and check if it fits\n\t\t\t\t\t\t\tconst ellipsis = this.style.ellipsis || \"\";\n\t\t\t\t\t\t\tconst ellipsisMetrics = this._measureText(ellipsis, context);\n\t\t\t\t\t\t\tconst ellipsisWidth = ellipsisMetrics.actualBoundingBoxLeft + ellipsisMetrics.actualBoundingBoxRight;\n\n\t\t\t\t\t\t\t// Check fit\n\t\t\t\t\t\t\tif ((lineInfo.width + chunkWidth) > maxWidth) {\n\t\t\t\t\t\t\t\tconst excessWidth = maxWidth - lineInfo.width - ellipsisWidth;\n\t\t\t\t\t\t\t\tchunk.text = this._truncateText(context, chunk.text, excessWidth, breakWords);\n\t\t\t\t\t\t\t\tchunk.text += ellipsis;\n\t\t\t\t\t\t\t\tskipFurtherText = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (wrap) {\n\n\t\t\t\t\t\t\t// Check fit\n\t\t\t\t\t\t\tif ((lineInfo.width + chunkWidth) > maxWidth) {\n\t\t\t\t\t\t\t\tconst excessWidth = maxWidth - lineInfo.width;\n\t\t\t\t\t\t\t\tconst tmpText = this._truncateText(context, chunk.text, excessWidth, false, firstTextChunk);\n\t\t\t\t\t\t\t\t//skipFurtherText = true;\n\n\t\t\t\t\t\t\t\t//Add remaining chunks for the next line\n\t\t\t\t\t\t\t\tleftoverChunks = chunks.slice(index + 1);\n\n\t\t\t\t\t\t\t\t//Add remaining text of current chunk if it was forced-cut\n\t\t\t\t\t\t\t\tif ($utils.trim(tmpText) != $utils.trim(chunk.text)) {\n\t\t\t\t\t\t\t\t\tleftoverChunks.unshift({\n\t\t\t\t\t\t\t\t\t\ttype: \"value\",\n\t\t\t\t\t\t\t\t\t\ttext: chunk.text.substr(tmpText.length)\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tif (currentFormat) {\n\t\t\t\t\t\t\t\t\t\tleftoverChunks.unshift({\n\t\t\t\t\t\t\t\t\t\t\ttype: \"format\",\n\t\t\t\t\t\t\t\t\t\t\ttext: currentFormat\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Set current chunk (truncated)\n\t\t\t\t\t\t\t\tchunk.text = tmpText;\n\n\t\t\t\t\t\t\t\tchunks = [];\n\t\t\t\t\t\t\t\tskipFurtherText = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Chunk width?\n\t\t\t\t\t\tlet leftBoundMod = 1;\n\t\t\t\t\t\tlet rightBoundMod = 1;\n\t\t\t\t\t\tif (currentStyle && currentChunkWidth && (currentChunkWidth > chunkWidth)) {\n\t\t\t\t\t\t\t// increase horizontal bounding boxes accordingly\n\t\t\t\t\t\t\tconst boundsMod = chunkWidth / currentChunkWidth\n\t\t\t\t\t\t\tswitch (this.style.textAlign) {\n\t\t\t\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\t\t\tcase \"end\":\n\t\t\t\t\t\t\t\t\tleftBoundMod = boundsMod;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\t\t\t\tleftBoundMod = boundsMod;\n\t\t\t\t\t\t\t\t\trightBoundMod = boundsMod;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\trightBoundMod = boundsMod;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchunkWidth = currentChunkWidth;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst chunkHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n\t\t\t\t\t\tif (chunkHeight > lineInfo.height) {\n\t\t\t\t\t\t\tlineInfo.height = chunkHeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\n\t\t\t\t\t\t\tlineInfo.ascent = metrics.actualBoundingBoxAscent;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlineInfo.width += chunkWidth;\n\t\t\t\t\t\tlineInfo.left += metrics.actualBoundingBoxLeft / leftBoundMod;\n\t\t\t\t\t\tlineInfo.right += metrics.actualBoundingBoxRight / rightBoundMod;\n\t\t\t\t\t\tlineInfo.textChunks.push({\n\t\t\t\t\t\t\tstyle: currentStyle,\n\t\t\t\t\t\t\tfill: currentFill,\n\t\t\t\t\t\t\ttext: chunk.text,\n\t\t\t\t\t\t\twidth: chunkWidth,\n\t\t\t\t\t\t\theight: chunkHeight,\n\t\t\t\t\t\t\tleft: metrics.actualBoundingBoxLeft,\n\t\t\t\t\t\t\tright: metrics.actualBoundingBoxRight,\n\t\t\t\t\t\t\tascent: metrics.actualBoundingBoxAscent,\n\t\t\t\t\t\t\toffsetX: 0,\n\t\t\t\t\t\t\toffsetY: 0\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t//offsetX += chunkWidth;\n\n\t\t\t\t\t\tfirstTextChunk = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif (leftoverChunks) {\n\t\t\t\t\t\t//return false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t\t//}\n\t\t\t\t});\n\n\t\t\t\tif (this.style.lineHeight instanceof Percent) {\n\t\t\t\t\tlineInfo.height *= this.style.lineHeight.value;\n\t\t\t\t\tlineInfo.ascent *= this.style.lineHeight.value;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlineInfo.height *= this.style.lineHeight || 1.2;\n\t\t\t\t\tlineInfo.ascent *= this.style.lineHeight || 1.2;\n\t\t\t\t}\n\n\t\t\t\tif (minX < lineInfo.left) {\n\t\t\t\t\tminX = lineInfo.left;\n\t\t\t\t}\n\n\t\t\t\tif (maxX < lineInfo.right) {\n\t\t\t\t\tmaxX = lineInfo.right;\n\t\t\t\t}\n\n\t\t\t\tthis._textInfo!.push(lineInfo);\n\n\t\t\t\t//lineInfo.offsetY += lineInfo.ascent;\n\t\t\t\toffsetY += lineInfo.height;\n\n\t\t\t\t// Reset chunks so that it can proceed to the next line\n\t\t\t\tchunks = leftoverChunks || [];\n\t\t\t}\n\n\t\t});\n\n\t\tif (!styleRestored) {\n\t\t\tcontext.restore();\n\t\t\tghostContext.restore();\n\t\t}\n\n\t\t// Adjust chunk internal offsets\n\t\t$array.each(this._textInfo, (lineInfo, _index: number) => {\n\t\t\tlet currentChunkOffset = 0\n\t\t\t$array.each(lineInfo.textChunks, (chunk) => {\n\n\t\t\t\tchunk.offsetX = currentChunkOffset + chunk.left - lineInfo.left;\n\t\t\t\t//chunk.offsetY += Math.round(lineInfo.ascent);\n\t\t\t\tchunk.offsetY += lineInfo.height - lineInfo.height * (this.style.baselineRatio || 0.19);\n\t\t\t\t//chunk.offsetY += Math.round(lineInfo.height / 2) + ((lineInfo.height - chunk.height) / 2);\n\t\t\t\t//console.log(chunk.text, chunk.ascent, lineInfo.ascent)\n\t\t\t\t//chunk.offsetY += Math.round((lineInfo.height - chunk.height + (lineInfo.ascent - chunk.ascent)) / 2);\n\t\t\t\t//chunk.offsetY -= Math.round((lineInfo.height - chunk.height + (lineInfo.ascent - chunk.ascent)) / 2) - lineInfo.ascent / 2;\n\t\t\t\tcurrentChunkOffset += chunk.width;\n\t\t\t});\n\t\t});\n\n\t\tconst bounds = {\n\t\t\tleft: -minX,\n\t\t\ttop: 0,\n\t\t\tright: maxX,\n\t\t\tbottom: offsetY,\n\t\t};\n\n\t\t// We need to fit?\n\t\tif (oversizedBehavior !== \"none\") {\n\t\t\tconst ratio = this._fitRatio(bounds);\n\t\t\tif (ratio < 1) {\n\t\t\t\tif (oversizedBehavior == \"fit\") {\n\t\t\t\t\tif ($type.isNumber(this.style.minScale) && (ratio < this.style.minScale)) {\n\t\t\t\t\t\tthis._textVisible = false;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (!this._originalScale || this._originalScale == 1) {\n\t\t\t\t\t\t\tthis._originalScale = this.scale;\n\t\t\t\t\t\t\tthis.scale = ratio;\n\t\t\t\t\t\t\tthis._textVisible = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (oversizedBehavior == \"hide\") {\n\t\t\t\t\tthis._textVisible = false;\n\t\t\t\t}\n\t\t\t\telse {\n\n\t\t\t\t\tswitch (this.style.textAlign) {\n\t\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\tcase \"end\":\n\t\t\t\t\t\t\tbounds.left = maxWidth;\n\t\t\t\t\t\t\tbounds.right = 0;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\t\tbounds.left = -maxWidth / 2;\n\t\t\t\t\t\t\tbounds.right = maxWidth / 2;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tbounds.left = 0;\n\t\t\t\t\t\t\tbounds.right = maxWidth;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.scale = this._originalScale || 1;\n\t\t\t\t\tthis._originalScale = undefined;\n\t\t\t\t\tthis._textVisible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.scale = this._originalScale || 1;\n\t\t\t\tthis._originalScale = undefined;\n\t\t\t\tthis._textVisible = true;\n\t\t\t}\n\t\t}\n\n\t\tcontext.restore();\n\t\tghostContext.restore();\n\n\t\treturn bounds;\n\t}\n\n\tprotected _fitRatio(bounds: IBounds): number {\n\t\tconst maxW = this.style.maxWidth;\n\t\tconst maxH = this.style.maxHeight;\n\t\tif (!maxW && !maxH) {\n\t\t\treturn 1;\n\t\t}\n\t\tconst w = bounds.right - bounds.left;\n\t\tconst h = bounds.bottom - bounds.top;\n\t\treturn Math.min(maxW! / w || 1, maxH! / h || 1);\n\t}\n\n\tprotected _truncateText(context: CanvasRenderingContext2D, text: string, maxWidth: number, breakWords: boolean = false, fallbackBreakWords: boolean = true): string {\n\t\tlet width: number;\n\t\tdo {\n\t\t\tif (breakWords) {\n\t\t\t\ttext = text.slice(0, -1);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet tmp = text.replace(/[^,;:!?\\\\\\/\\.\\s]+[,;:!?\\\\\\/\\.\\s]*$/g, \"\");\n\t\t\t\tif (tmp == \"\" && fallbackBreakWords) {\n\t\t\t\t\tbreakWords = true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttext = tmp;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst metrics = this._measureText(text, context);\n\t\t\twidth = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\n\t\t} while ((width > maxWidth) && text != \"\");\n\t\treturn text;\n\t}\n\n\tprotected _measureText(text: string, context: CanvasRenderingContext2D): TextMetrics {\n\t\tlet metrics = context.measureText(text);\n\t\tif (metrics.actualBoundingBoxAscent == null) {\n\t\t\tconst div = document.createElement(\"div\");\n\t\t\tdiv.innerText = text;\n\t\t\tdiv.style.visibility = \"hidden\";\n\t\t\tdiv.style.position = \"absolute\";\n\t\t\tdiv.style.top = \"-1000000px;\"\n\t\t\tdiv.style.fontFamily = this.style.fontFamily || \"\";\n\t\t\tdiv.style.fontSize = this.style.fontSize + \"\";\n\t\t\tdocument.body.appendChild(div);\n\t\t\tconst bbox = div.getBoundingClientRect();\n\t\t\tdocument.body.removeChild(div);\n\t\t\tconst h = bbox.height;\n\t\t\tconst w = metrics.width;\n\t\t\tlet left = 0;\n\t\t\tlet right = w;\n\t\t\tswitch (this.style.textAlign) {\n\t\t\t\tcase \"right\":\n\t\t\t\tcase \"end\":\n\t\t\t\t\tleft = -w;\n\t\t\t\t\tright = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"center\":\n\t\t\t\t\tleft = -w / 2;\n\t\t\t\t\tright = w / 2;\n\t\t\t}\n\t\t\tlet fake = {\n\t\t\t\tactualBoundingBoxAscent: h,\n\t\t\t\tactualBoundingBoxDescent: 0,\n\t\t\t\tactualBoundingBoxLeft: left,\n\t\t\t\tactualBoundingBoxRight: right,\n\t\t\t\twidth: w\n\t\t\t}\n\t\t\treturn fake;\n\t\t}\n\t\treturn metrics;\n\t}\n\n}\n\n/**\n * @ignore\n */\nexport class CanvasTextStyle implements ITextStyle {\n\t//public wordWrapWidth: number = 100;\n\tpublic fill?: Color | CanvasGradient | CanvasPattern;\n\tpublic textAlign?: \"start\" | \"end\" | \"left\" | \"right\" | \"center\";\n\tpublic fontFamily?: string;\n\tpublic fontSize?: string | number;\n\tpublic fontWeight?: 'normal' | 'bold' | 'bolder' | 'lighter' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'\n\tpublic fontStyle?: 'normal' | 'italic' | 'oblique';\n\t// dropShadow?: boolean;\n\t// dropShadowAlpha?: number;\n\t// dropShadowAngle?: number;\n\t// dropShadowBlur?: number;\n\t// dropShadowColor?: number;\n\t// dropShadowDistance?: number;\n\tpublic fontVariant?: \"normal\" | \"small-caps\";\n\t// leading?: number;\n\t// letterSpacing?: number;\n\tpublic lineHeight?: number | Percent = percent(120);\n\tpublic baselineRatio?: number = 0.19;\n\t// padding?: number;\n\t// stroke?: number;\n\t// strokeThickness?: number;\n\t// trim?: number;\n\t// wordWrap?: boolean;\n\tpublic direction?: \"ltr\" | \"rtl\";\n\tpublic textBaseline?: \"top\" | \"hanging\" | \"middle\" | \"alphabetic\" | \"ideographic\" | \"bottom\";\n\tpublic oversizedBehavior?: \"none\" | \"hide\" | \"fit\" | \"wrap\" | \"truncate\" = \"none\";\n\tpublic breakWords?: boolean = false;\n\tpublic ellipsis?: string = \"…\";\n\tpublic maxWidth?: number;\n\tpublic maxHeight?: number;\n\tpublic minScale?: number;\n}\n\n/**\n * @ignore\n */\nexport class CanvasRadialText extends CanvasText implements IRadialText {\n\tpublic textType?: \"regular\" | \"circular\" | \"radial\" | \"aligned\" | \"adjusted\" = \"circular\";\n\tpublic radius?: number;\n\tpublic startAngle?: number;\n\tpublic inside?: boolean = false;\n\tpublic orientation?: \"inward\" | \"outward\" | \"auto\" = \"auto\";\n\tpublic kerning?: number = 0;\n\n\tprivate _textReversed: boolean = false;\n\n\tpublic _render(parentLayer: CanvasLayer): void {\n\t\tswitch (this.textType) {\n\t\t\tcase \"circular\":\n\t\t\t\tthis._renderCircular(parentLayer);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tsuper._render(parentLayer);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpublic _renderCircular(parentLayer: CanvasLayer): void {\n\t\tconst layer = this._layer || parentLayer;\n\n\t\tthis._prerender(layer);\n\n\t\tconst interactive = this._isInteractive();\n\t\tconst context = layer.context;\n\t\tconst layerDirty = layer.dirty;\n\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t// Savepoint\n\t\tcontext.save();\n\t\tif (interactive) {\n\t\t\tghostContext.save();\n\t\t}\n\n\t\t// Init\n\t\tlet radius = (this.radius || 0);\n\t\tlet startAngle = (this.startAngle || 0);\n\t\tlet deltaAngle = 0;\n\t\tlet orientation = this.orientation;\n\t\tlet inward = orientation == \"auto\" ? \"auto\" : orientation == \"inward\";\n\t\tconst inside = this.inside;\n\t\tconst align = this.style.textAlign || \"left\";\n\t\tconst kerning = this.kerning || 0;\n\t\tlet clockwise = align == \"left\" ? 1 : -1;\n\t\tconst shouldReverse = !this._textReversed;\n\n\t\t// We need measurements in order to properly position text for alignment\n\t\tif (!this._textInfo) {\n\t\t\tthis._measure(layer);\n\t\t}\n\n\t\t// Check if we need to invert the whole stuff\n\t\tif (inward == \"auto\") {\n\t\t\t// Calc max angle so we know whether we need to flip it\n\t\t\tlet maxAngle = 0;\n\t\t\tlet midAngle = 0;\n\t\t\t$array.each(this._textInfo!, (line, _index) => {\n\t\t\t\tconst deltaAngle = startAngle + (line.width / (radius - line.height)) / 2 * -clockwise;\n\t\t\t\tif (deltaAngle > maxAngle) {\n\t\t\t\t\tmaxAngle = deltaAngle;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (align == \"left\") {\n\t\t\t\tmidAngle = (maxAngle + deltaAngle / 2) * $math.DEGREES;\n\t\t\t}\n\t\t\telse if (align == \"right\") {\n\t\t\t\tmidAngle = (maxAngle - deltaAngle / 2) * $math.DEGREES;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmidAngle = startAngle * $math.DEGREES;\n\t\t\t}\n\t\t\tmidAngle = $math.normalizeAngle(midAngle);\n\t\t\tinward = (midAngle >= 270) || (midAngle <= 90);\n\t\t}\n\n\t\tif (inward == true && shouldReverse) {\n\t\t\tthis._textInfo!.reverse();\n\t\t\tthis._textReversed = true;\n\t\t}\n\n\t\t// if ((inward == false && align == \"left\") || (inward == true && align == \"right\")) {\n\t\t// \tclockwise *= -1;\n\t\t// }\n\n\t\t// Process text info produced by _measure()\n\t\t$array.each(this._textInfo!, (line, _index) => {\n\n\t\t\tconst textHeight = line.height;\n\n\t\t\t// Adjust radius for inside text\n\t\t\tif (!inside) {\n\t\t\t\tradius += textHeight;\n\t\t\t}\n\n\t\t\t// Reverse letters if we're painting them counter-clockwise\n\t\t\tif (((clockwise == -1 && inward) || (clockwise == 1 && !inward)) && shouldReverse) {\n\t\t\t\tline.textChunks.reverse();\n\t\t\t}\n\n\t\t\t// Init angles\n\t\t\tlet lineStartAngle = startAngle;\n\t\t\tdeltaAngle = 0;\n\n\t\t\t// Adjust for center-align\n\t\t\tif (align == \"center\") {\n\t\t\t\tlineStartAngle += (line.width / (radius - textHeight)) / 2 * -clockwise;\n\t\t\t\tdeltaAngle = lineStartAngle - startAngle;\n\t\t\t}\n\n\t\t\t// if (inward == \"auto\") {\n\t\t\t// \tlet midAngle;\n\t\t\t// \tif (align == \"left\") {\n\t\t\t// \t\tmidAngle = (lineStartAngle + deltaAngle / 2) * $math.DEGREES;\n\t\t\t// \t}\n\t\t\t// \telse if () {\n\t\t\t// \t\tmidAngle = (lineStartAngle - deltaAngle / 2) * $math.DEGREES;\n\t\t\t// \t}\n\t\t\t// \tinward = (midAngle >= 270) || (midAngle <= 90);\n\t\t\t// }\n\n\t\t\t// Rotate letters if they are facing outward\n\t\t\tlineStartAngle += (Math.PI * (inward ? 0 : 1)); // Rotate 180 if outward\n\n\t\t\t// Savepoint\n\t\t\tcontext.save();\n\t\t\tif (interactive) {\n\t\t\t\tghostContext.save();\n\t\t\t}\n\n\t\t\t// Assume starting angle\n\t\t\tcontext.rotate(lineStartAngle);\n\t\t\tif (interactive) {\n\t\t\t\tghostContext.rotate(lineStartAngle);\n\t\t\t}\n\n\t\t\tlet angleShift = 0;\n\t\t\t$array.each(line.textChunks, (chunk, _index) => {\n\n\t\t\t\t// Draw the letter\n\t\t\t\tconst char = chunk.text;\n\t\t\t\tconst charWidth = chunk.width;\n\n\t\t\t\t// Rotate half a letter\n\t\t\t\tangleShift = (charWidth / 2) / (radius - textHeight) * clockwise;\n\t\t\t\tcontext.rotate(angleShift);\n\t\t\t\tif (interactive) {\n\t\t\t\t\tghostContext.rotate(angleShift);\n\t\t\t\t}\n\n\t\t\t\t// Set style\n\t\t\t\tif (chunk.style) {\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tghostContext.save();\n\n\t\t\t\t\tcontext.font = chunk.style;\n\t\t\t\t\tif (interactive) {\n\t\t\t\t\t\tghostContext.font = chunk.style;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (chunk.fill) {\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.fillStyle = chunk.fill.toCSS();\n\t\t\t\t\t// Color does not affect ghostContext so we not set it\n\t\t\t\t}\n\n\t\t\t\t// Center letters\n\t\t\t\tcontext.textBaseline = \"middle\";\n\t\t\t\tcontext.textAlign = \"center\";\n\t\t\t\tif (interactive) {\n\t\t\t\t\tghostContext.textBaseline = \"middle\";\n\t\t\t\t\tghostContext.textAlign = \"center\";\n\t\t\t\t}\n\n\t\t\t\t// Plop the letter\n\t\t\t\tif (layerDirty) {\n\t\t\t\t\tcontext.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));\n\t\t\t\t}\n\t\t\t\tif (interactive) {\n\t\t\t\t\tghostContext.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));\n\t\t\t\t}\n\n\t\t\t\tif (chunk.fill) {\n\t\t\t\t\tcontext.restore();\n\t\t\t\t\t// Color does not affect ghostContext so we not set it\n\t\t\t\t}\n\n\t\t\t\t// Reset style\n\t\t\t\tif (chunk.style) {\n\t\t\t\t\tcontext.restore();\n\t\t\t\t\tghostContext.restore();\n\t\t\t\t}\n\n\t\t\t\t// Rotate half a letter and add spacing\n\t\t\t\tangleShift = (charWidth / 2 + kerning) / (radius - textHeight) * clockwise;\n\t\t\t\tcontext.rotate(angleShift);\n\t\t\t\tif (interactive) {\n\t\t\t\t\tghostContext.rotate(angleShift);\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t// Restore angle\n\t\t\tcontext.restore();\n\t\t\tif (interactive) {\n\t\t\t\tghostContext.restore();\n\t\t\t}\n\n\t\t});\n\n\t\t// Restore\n\t\tcontext.restore();\n\t\tif (interactive) {\n\t\t\tghostContext.restore();\n\t\t}\n\t}\n\n\tpublic _measure(layer: CanvasLayer): IBounds {\n\t\tswitch (this.textType) {\n\t\t\tcase \"circular\":\n\t\t\t\treturn this._measureCircular(layer);\n\t\t\tdefault:\n\t\t\t\treturn super._measure(layer);\n\t\t}\n\t}\n\n\tpublic _measureCircular(layer: CanvasLayer): IBounds {\n\t\tconst context = layer.context;\n\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t// Reset text info\n\t\tthis._textInfo = [];\n\t\tthis._textReversed = false;\n\n\t\t// Pre-render\n\t\tcontext.save();\n\t\tghostContext.save();\n\t\tthis._prerender(layer, true);\n\n\t\t// Split up text into lines\n\t\tconst lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\n\t\tlet styleRestored = true;\n\n\t\t// Iterate through the lines\n\t\tlet offsetY = 0;\n\t\t$array.each(lines, (line, _index) => {\n\n\t\t\t// Split up line into format/value chunks\n\t\t\tlet chunks = TextFormatter.chunk(line);\n\n\t\t\t// Init line object\n\t\t\tlet lineInfo: ILine = {\n\t\t\t\toffsetY: offsetY,\n\t\t\t\tascent: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttextChunks: []\n\t\t\t};\n\n\t\t\tlet currentStyle: string | undefined;\n\t\t\tlet currentFill: Color | undefined;\n\t\t\tlet currentChunkWidth: number | undefined;\n\n\t\t\t//while(chunk = chunks.shift()) {\n\t\t\t$array.each(chunks, (chunk, _index) => {\n\n\t\t\t\t// Format chunk\n\t\t\t\tif (chunk.type == \"format\") {\n\t\t\t\t\tif (chunk.text == \"[/]\") {\n\t\t\t\t\t\tif (!styleRestored) {\n\t\t\t\t\t\t\tcontext.restore();\n\t\t\t\t\t\t\tghostContext.restore();\n\t\t\t\t\t\t\tstyleRestored = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentFill = undefined;\n\t\t\t\t\t\tcurrentStyle = undefined;\n\t\t\t\t\t\tcurrentChunkWidth = undefined;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet format = TextFormatter.getTextStyle(chunk.text);\n\t\t\t\t\t\tconst fontStyle = this._getFontStyle(format);\n\t\t\t\t\t\tcontext.save();\n\t\t\t\t\t\tghostContext.save();\n\t\t\t\t\t\tcontext.font = fontStyle;\n\t\t\t\t\t\tcurrentStyle = fontStyle;\n\t\t\t\t\t\tif (format.fill) {\n\t\t\t\t\t\t\tcurrentFill = <Color>format.fill;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ((<any>format).width) {\n\t\t\t\t\t\t\tcurrentChunkWidth = $type.toNumber((<any>format).width);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyleRestored = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Text format\n\t\t\t\telse if (chunk.type == \"value\") {\n\n\t\t\t\t\t// Measure each letter\n\t\t\t\t\tfor (let i = 0; i < chunk.text.length; i++) {\n\n\t\t\t\t\t\tconst char = chunk.text[i];\n\n\t\t\t\t\t\t// Measure\n\t\t\t\t\t\tconst metrics = this._measureText(char.replace(\" \", \".\"), context);\n\t\t\t\t\t\tlet chunkWidth = metrics.width;\n\n\t\t\t\t\t\t// Chunk width?\n\t\t\t\t\t\tif (currentStyle && currentChunkWidth && (currentChunkWidth > chunkWidth)) {\n\t\t\t\t\t\t\tchunkWidth = currentChunkWidth;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst chunkHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n\t\t\t\t\t\tif (chunkHeight > lineInfo.height) {\n\t\t\t\t\t\t\tlineInfo.height = chunkHeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\n\t\t\t\t\t\t\tlineInfo.ascent = metrics.actualBoundingBoxAscent;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlineInfo.width += chunkWidth;\n\t\t\t\t\t\tlineInfo.left += metrics.actualBoundingBoxLeft;\n\t\t\t\t\t\tlineInfo.right += metrics.actualBoundingBoxRight;\n\t\t\t\t\t\tlineInfo.textChunks.push({\n\t\t\t\t\t\t\tstyle: currentStyle,\n\t\t\t\t\t\t\tfill: currentFill,\n\t\t\t\t\t\t\ttext: char,\n\t\t\t\t\t\t\twidth: chunkWidth,\n\t\t\t\t\t\t\theight: chunkHeight + metrics.actualBoundingBoxDescent,\n\t\t\t\t\t\t\tleft: metrics.actualBoundingBoxLeft,\n\t\t\t\t\t\t\tright: metrics.actualBoundingBoxRight,\n\t\t\t\t\t\t\tascent: metrics.actualBoundingBoxAscent,\n\t\t\t\t\t\t\toffsetX: 0,\n\t\t\t\t\t\t\toffsetY: chunkHeight\n\t\t\t\t\t\t});\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.style.lineHeight instanceof Percent) {\n\t\t\t\tlineInfo.height *= this.style.lineHeight.value;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlineInfo.height *= this.style.lineHeight || 1.2;\n\t\t\t}\n\n\t\t\tthis._textInfo!.push(lineInfo);\n\n\t\t\t//lineInfo.offsetY += lineInfo.ascent;\n\t\t\toffsetY += lineInfo.height;\n\n\n\t\t});\n\n\t\tif (!styleRestored) {\n\t\t\tcontext.restore();\n\t\t\tghostContext.restore();\n\t\t}\n\n\t\t// Adjust chunk internal offsets\n\t\t$array.each(this._textInfo, (lineInfo) => {\n\t\t\t$array.each(lineInfo.textChunks, (chunk) => {\n\t\t\t\tchunk.offsetY += Math.round((lineInfo.height - chunk.height + (lineInfo.ascent - chunk.ascent)) / 2);\n\t\t\t});\n\t\t});\n\n\t\tcontext.restore();\n\t\tghostContext.restore();\n\n\t\treturn {\n\t\t\tleft: 0,\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t};\n\t}\n\n}\n\n/**\n * @ignore\n */\nexport class CanvasImage extends CanvasDisplayObject implements IPicture {\n\tpublic width: number | undefined;\n\tpublic height: number | undefined;\n\tpublic image: HTMLImageElement | undefined;\n\tpublic tainted?: boolean;\n\n\tprotected _imageMask: HTMLCanvasElement | undefined;\n\n\tconstructor(renderer: CanvasRenderer, image: HTMLImageElement | undefined) {\n\t\tsuper(renderer);\n\t\tthis.image = image;\n\t}\n\n\tgetLocalBounds(): IBounds {\n\t\tif (!this._localBounds) {\n\n\n\t\t\tlet w = 0;\n\t\t\tlet h = 0;\n\n\t\t\tif (this.width) {\n\t\t\t\tw = this.width;\n\t\t\t}\n\t\t\tif (this.height) {\n\t\t\t\th = this.height;\n\t\t\t}\n\n\t\t\tthis._localBounds = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\tright: w,\n\t\t\t\tbottom: h\n\t\t\t};\n\n\t\t\tthis._addBounds(this._localBounds);\n\t\t}\n\t\treturn this._localBounds;\n\t}\n\n\tprotected _render(parentLayer: CanvasLayer): void {\n\t\tsuper._render(parentLayer);\n\n\t\tif (this.image) {\n\t\t\tconst layer = this._layer || parentLayer;\n\n\t\t\tif (this.tainted === undefined) {\n\t\t\t\tthis.tainted = isTainted(this.image);\n\t\t\t\tlayer.tainted = true;\n\t\t\t}\n\n\t\t\tif (this.tainted && this._renderer._omitTainted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (layer.dirty) {\n\t\t\t\tconst width = this.width || this.image.naturalWidth;\n\t\t\t\tconst height = this.height || this.image.naturalHeight;\n\n\t\t\t\tlayer.context.drawImage(this.image, 0, 0, width, height);\n\t\t\t}\n\n\t\t\tif (this._isInteractive()) {\n\t\t\t\tconst mask = this._getMask(this.image);\n\n\t\t\t\tthis._renderer._ghostContext.drawImage(mask, 0, 0);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic clear(): void {\n\t\tsuper.clear();\n\t\tthis.image = undefined;\n\t\tthis._imageMask = undefined;\n\t}\n\n\tprotected _getMask(image: HTMLImageElement): HTMLCanvasElement {\n\t\tif (this._imageMask === undefined) {\n\t\t\tconst width = this.width || image.naturalWidth;\n\t\t\tconst height = this.height || image.naturalHeight;\n\n\t\t\t// We need to create a second canvas because destination-in clears out the entire canvas\n\t\t\tconst canvas = document.createElement(\"canvas\");\n\t\t\tcanvas.width = width;\n\t\t\tcanvas.height = height;\n\n\t\t\tconst context = canvas.getContext(\"2d\")!;\n\n\t\t\tcontext.imageSmoothingEnabled = false;\n\n\t\t\tcontext.fillStyle = this._getColorId();\n\t\t\tcontext.fillRect(0, 0, width, height);\n\n\t\t\tif (!isTainted(image)) {\n\t\t\t\tcontext.globalCompositeOperation = \"destination-in\";\n\t\t\t\tcontext.drawImage(image, 0, 0, width, height);\n\t\t\t}\n\n\t\t\tthis._imageMask = canvas;\n\t\t}\n\n\t\treturn this._imageMask;\n\t}\n\n}\n\n/**\n * @ignore\n */\nexport class CanvasRendererEvent<A> implements IRendererEvent<A> {\n\tpublic id: Id;\n\tpublic simulated: boolean = false;\n\n\tconstructor(public event: A, public point: IPoint) {\n\t\tif ($utils.supports(\"touchevents\") && event instanceof Touch) {\n\t\t\tthis.id = event.identifier;\n\n\t\t} else {\n\t\t\tthis.id = null;\n\t\t}\n\t}\n}\n\n/**\n * @ignore\n */\ninterface Event<Key extends keyof IRendererEvents> {\n\tobject: CanvasDisplayObject;\n\tcontext: unknown;\n\tcallback: (event: IRendererEvents[Key]) => void;\n}\n\n/**\n * @ignore\n */\ninterface Events<Key extends keyof IRendererEvents> {\n\tdisposer: IDisposer;\n\tcallbacks: Array<Event<Key>>;\n}\n\n/**\n * @ignore\n */\nexport class CanvasRenderer extends Disposer implements IRenderer, IDisposer {\n\tpublic view: HTMLElement = document.createElement(\"div\");\n\tprotected _layerDom: HTMLElement = document.createElement(\"div\");\n\n\tpublic layers: Array<CanvasLayer | undefined> = [];\n\tpublic _dirtyLayers: Array<CanvasLayer> = [];\n\tpublic defaultLayer: CanvasLayer = this.getLayer(0);\n\n\tprotected _ghostView: HTMLCanvasElement;\n\tpublic _ghostContext: CanvasRenderingContext2D;\n\n\tprotected _patternCanvas: HTMLCanvasElement = document.createElement(\"canvas\");\n\tprotected _patternContext: CanvasRenderingContext2D = this._patternCanvas.getContext(\"2d\")!;\n\n\tprotected _width: number = 0;\n\tprotected _height: number = 0;\n\n\tpublic resolution: number = window.devicePixelRatio;\n\tpublic interactionsEnabled: boolean = true;;\n\n\tprotected _listeners: { [key: string]: CounterDisposer } = {};\n\tprotected _events: { [Key in keyof IRendererEvents]?: Events<Key> } = {};\n\n\tprotected _colorId: number = 0;\n\tprotected _colorMap: { [color: string]: CanvasDisplayObject } = {};\n\n\tpublic _forceInteractive: number = 0;\n\tpublic _omitTainted: boolean = false;\n\n\t// TODO this should store the Id as well\n\tpublic _hovering: Set<CanvasDisplayObject> = new Set();\n\tpublic _dragging: Array<{ id: Id, value: CanvasDisplayObject }> = [];\n\tpublic _mousedown: Array<{ id: Id, value: CanvasDisplayObject }> = [];\n\n\tprotected _lastPointerMoveEvent!: IPointerEvent;\n\n\tconstructor() {\n\t\tsuper(() => {\n\t\t});\n\n\t\tthis.view.appendChild(this._layerDom);\n\n\t\t// @todo : do the same for ghost\n\t\tthis._ghostView = document.createElement(\"canvas\");\n\t\tthis._ghostContext = this._ghostView.getContext(\"2d\", { alpha: false })!;\n\t\tthis._ghostContext.imageSmoothingEnabled = false;\n\n\t\t// We need this in order top prevent default touch gestures when dragging\n\t\t// draggable elements\n\t\tif ($utils.supports(\"touchevents\")) {\n\t\t\tdocument.addEventListener(\"touchstart\", (ev) => {\n\t\t\t\tif (this._dragging.length !== 0) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t}\n\t\t\t}, { passive: false });\n\t\t}\n\n\t\t// Prevent scrolling of the window when hovering on \"wheelable\" object\n\t\tif ($utils.supports(\"wheelevents\")) {\n\t\t\tthis.view.addEventListener(\"wheel\", (ev) => {\n\t\t\t\tlet prevent = false;\n\t\t\t\tthis._hovering.forEach((obj) => {\n\t\t\t\t\tif (obj.wheelable) {\n\t\t\t\t\t\tprevent = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (prevent) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t}\n\t\t\t}, { passive: false });\n\t\t}\n\n\t}\n\n\tcreateLinearGradient(x1: number, y1: number, x2: number, y2: number): CanvasGradient {\n\t\treturn this.defaultLayer.context.createLinearGradient(x1, y1, x2, y2);\n\t}\n\n\tcreateRadialGradient(x1: number, y1: number, radius1: number, x2: number, y2: number, radius2: number): CanvasGradient {\n\t\treturn this.defaultLayer.context.createRadialGradient(x1, y1, radius1, x2, y2, radius2);\n\t}\n\n\tcreatePattern(graphics: CanvasGraphics, background: CanvasGraphics, repetition: string, width: number, height: number): CanvasPattern {\n\t\t// const patternCanvas = document.createElement(\"canvas\");\n\t\t// const patternContext = patternCanvas.getContext(\"2d\")!;\n\t\t// patternCanvas.width = width;\n\t\t// patternCanvas.height = height;\n\t\t// if (fill) {\n\t\t// \tpatternContext.fillStyle = fill.toCSS();\n\t\t// \tpatternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height);\n\t\t// }\n\n\t\t// const layer = {\n\t\t// \tview: patternCanvas,\n\t\t// \tcontext: patternContext,\n\t\t// \tvisible: true,\n\t\t// \torder: 0,\n\t\t// \twidth: width,\n\t\t// \theight: height,\n\t\t// \tdirty: true\n\t\t// };\n\n\t\t// // patternContext.arc(0, 0, 50, 0, .5 * Math.PI);\n\t\t// // patternContext.stroke();\n\n\t\t// image.targetLayer = layer;\n\t\t// image.render(layer);\n\n\t\t//this._layerDom.appendChild(patternCanvas);\n\n\t\tthis._patternCanvas.width = width;\n\t\tthis._patternCanvas.height = height;\n\n\t\tthis._patternContext.clearRect(0, 0, width, height);\n\n\t\t// patternCanvas.style.width = width * this.resolution + \"px\";\n\t\t// patternCanvas.style.height = height * this.resolution + \"px\";\n\n\t\tbackground.renderDetached(this._patternContext);\n\t\tgraphics.renderDetached(this._patternContext);\n\n\t\treturn this._patternContext.createPattern(this._patternCanvas, repetition)!;\n\t}\n\n\tmakeContainer(): CanvasContainer {\n\t\treturn new CanvasContainer(this);\n\t}\n\n\tmakeGraphics(): CanvasGraphics {\n\t\treturn new CanvasGraphics(this);\n\t}\n\n\tmakeText(text: string, style: CanvasTextStyle): CanvasText {\n\t\treturn new CanvasText(this, text, style);\n\t}\n\n\tmakeTextStyle(): CanvasTextStyle {\n\t\treturn new CanvasTextStyle();\n\t}\n\n\tmakeRadialText(text: string, style: CanvasTextStyle): CanvasRadialText {\n\t\treturn new CanvasRadialText(this, text, style);\n\t}\n\n\tmakePicture(image: HTMLImageElement | undefined): CanvasImage {\n\t\treturn new CanvasImage(this, image);\n\t}\n\n\tresize(width: number, height: number): void {\n\t\tthis._width = Math.floor(width * this.resolution);\n\t\tthis._height = Math.floor(height * this.resolution);\n\n\t\t$array.each(this.layers, (layer) => {\n\t\t\tif (layer) {\n\t\t\t\tlayer.dirty = true;\n\n\t\t\t\tif (layer.width != null) {\n\t\t\t\t\tlayer.view.width = layer.width;\n\t\t\t\t\tlayer.view.style.width = layer.width + \"px\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlayer.view.width = this._width;\n\t\t\t\t\tlayer.view.style.width = width + \"px\";\n\t\t\t\t}\n\n\t\t\t\tif (layer.height != null) {\n\t\t\t\t\tlayer.view.height = layer.height;\n\t\t\t\t\tlayer.view.style.height = layer.height + \"px\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlayer.view.height = this._height;\n\t\t\t\t\tlayer.view.style.height = height + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// @todo: do the same for ghost canvases\n\t\tthis._ghostView.width = this._width;\n\t\tthis._ghostView.height = this._height;\n\t\tthis._ghostView.style.width = width + \"px\";\n\t\tthis._ghostView.style.height = height + \"px\";\n\t}\n\n\tcreateDetachedLayer(): CanvasLayer {\n\t\tconst view = document.createElement(\"canvas\");\n\t\tconst context = view.getContext(\"2d\")!;\n\t\tconst layer = {\n\t\t\tview: view,\n\t\t\tcontext: context,\n\t\t\torder: 0,\n\t\t\tvisible: true,\n\t\t\twidth: undefined,\n\t\t\theight: undefined,\n\t\t\tdirty: true,\n\t\t\ttainted: false\n\t\t};\n\n\t\tview.style.position = \"absolute\";\n\t\tview.style.top = \"0px\";\n\t\tview.style.left = \"0px\";\n\n\t\treturn layer;\n\t}\n\n\tgetLayer(order: number, visible: boolean = true): CanvasLayer {\n\t\tconst layers = this.layers;\n\n\t\tif (layers.length > order) {\n\t\t\tconst layer = layers[order];\n\n\t\t\tif (layer) {\n\t\t\t\treturn layer;\n\t\t\t}\n\t\t}\n\n\t\tconst layer = this.createDetachedLayer();\n\t\tlayer.order = order;\n\t\tlayer.visible = visible;\n\n\t\tlayers[order] = layer;\n\n\t\tlet next;\n\n\t\tconst length = layers.length;\n\n\t\t// This finds the next layer\n\t\tfor (let i = order + 1; i < length; ++i) {\n\t\t\tnext = layers[i];\n\n\t\t\tif (next !== undefined && next.visible) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnext = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif (visible) {\n\t\t\tif (next === undefined) {\n\t\t\t\tthis._layerDom.appendChild(layer.view);\n\n\t\t\t} else {\n\t\t\t\tthis._layerDom.insertBefore(layer.view, next.view);\n\t\t\t}\n\t\t}\n\n\t\treturn layer;\n\t}\n\n\trender(root: CanvasDisplayObject): void {\n\n\t\tthis._dirtyLayers.length = 0;\n\n\t\t$array.each(this.layers, (layer) => {\n\t\t\tif (layer) {\n\t\t\t\t//console.log(layer.order, layer.dirty);\n\n\t\t\t\tif (layer.dirty && layer.visible) {\n\t\t\t\t\tthis._dirtyLayers.push(layer);\n\n\t\t\t\t\tlayer.context.save();\n\t\t\t\t\tlayer.context.clearRect(0, 0, this._width, this._height);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._ghostContext.save();\n\t\t//this._ghostContext.clearRect(0, 0, this._width, this._height);\n\t\t//this._ghostContext.beginPath();\n\t\tthis._ghostContext.fillStyle = '#000';\n\t\tthis._ghostContext.fillRect(0, 0, this._width, this._height);\n\n\t\troot.render(this.defaultLayer);\n\n\t\tthis._ghostContext.restore();\n\n\t\t//setTimeout(() => {\n\n\t\t$array.each(this._dirtyLayers, (layer) => {\n\t\t\tlayer.context.restore();\n\t\t\tlayer.dirty = false;\n\t\t});\n\t\t//}, 100)\n\n\t\tif (this._hovering.size && this._lastPointerMoveEvent) {\n\t\t\tthis._dispatchGlobalMousemove(this._lastPointerMoveEvent);\n\t\t}\n\t}\n\n\tpaintId(obj: CanvasDisplayObject): string {\n\t\tconst id = distributeId(++this._colorId);\n\t\tconst color = Color.fromHex(id).toCSS();\n\t\t//console.log(\"ASSIGNING\", color);\n\t\tthis._colorMap[color] = obj;\n\t\treturn color;\n\t}\n\n\t_removeObject(obj: CanvasDisplayObject): void {\n\t\tif (obj._colorId !== undefined) {\n\t\t\tdelete this._colorMap[obj._colorId];\n\t\t}\n\t}\n\n\t// protected _identifyObjectByColor(colorId: number): CanvasDisplayObject | undefined {\n\t// \treturn this._colorMap[colorId];\n\t// }\n\n\tpublic getEvent<A extends IPointerEvent>(originalEvent: A, adjustPoint: boolean = true): CanvasRendererEvent<A> {\n\t\tconst bbox = adjustPoint ? this.view.getBoundingClientRect() : { left: 0, top: 0 };\n\n\t\treturn new CanvasRendererEvent(originalEvent, originalEvent.clientX || originalEvent.clientY ? {\n\t\t\tx: originalEvent.clientX - (originalEvent.clientX ? bbox.left : 0),\n\t\t\ty: originalEvent.clientY - (originalEvent.clientY ? bbox.top : 0),\n\t\t} : {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t});\n\t}\n\n\t_getHitTarget(point: IPoint): CanvasDisplayObject | undefined | false {\n\t\tconst pixel = this._ghostContext.getImageData(\n\t\t\t// TODO should this round ?\n\t\t\tMath.round(point.x * this.resolution),\n\t\t\tMath.round(point.y * this.resolution),\n\t\t\t1,\n\t\t\t1,\n\t\t);\n\n\t\tif (pixel.data[0] === 0 && pixel.data[1] === 0 && pixel.data[2] === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst colorId = Color.fromRGB(pixel.data[0], pixel.data[1], pixel.data[2]).toCSS();\n\t\tconst hit = this._colorMap[colorId];\n\n\t\treturn hit;\n\t}\n\n\t_dispatchEventAll<Key extends keyof IRendererEvents>(key: Key, event: IRendererEvents[Key]): void {\n\t\tif (!this.interactionsEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst events = this._events[key] as Events<Key> | undefined;\n\n\t\tif (events !== undefined) {\n\t\t\t$array.each(events.callbacks, (callback) => {\n\t\t\t\tcallback.callback.call(callback.context, event);\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatchEvent<Key extends keyof IRendererEvents>(key: Key, target: CanvasDisplayObject, event: IRendererEvents[Key]): boolean {\n\t\tif (!this.interactionsEnabled) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst events = this._events[key] as Events<Key> | undefined;\n\t\tlet dispatched = false;\n\n\t\tif (events !== undefined) {\n\t\t\t$array.each(events.callbacks, (callback) => {\n\t\t\t\t//console.log(key, callback.object === target)\n\t\t\t\tif (callback.object === target) {\n\t\t\t\t\tcallback.callback.call(callback.context, event);\n\t\t\t\t\tdispatched = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn dispatched;\n\t}\n\n\t_dispatchMousedown(originalEvent: IPointerEvent): void {\n\t\tconst event = this.getEvent(originalEvent);\n\t\tconst target = this._getHitTarget(event.point);\n\n\t\tif (target) {\n\t\t\tconst id = event.id;\n\n\t\t\tlet dragged = false;\n\n\t\t\teachTargets(target, (obj) => {\n\t\t\t\tconst info = { id: id, value: obj };\n\n\t\t\t\tthis._mousedown.push(info);\n\n\t\t\t\tif (!dragged && this._dispatchEvent(\"pointerdown\", obj, event)) {\n\t\t\t\t\t// Only dispatch the first element which matches\n\t\t\t\t\tdragged = true;\n\n\t\t\t\t\tconst has = this._dragging.some((x) => {\n\t\t\t\t\t\treturn x.value === obj && x.id === id;\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!has) {\n\t\t\t\t\t\tthis._dragging.push(info);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatchGlobalMousemove(originalEvent: IPointerEvent): void {\n\t\tconst event = this.getEvent(originalEvent);\n\t\tconst target = this._getHitTarget(event.point);\n\t\tthis._lastPointerMoveEvent = originalEvent;\n\n\t\tif (target) {\n\t\t\tthis._hovering.forEach((obj) => {\n\t\t\t\tif (!obj.contains(target)) {\n\t\t\t\t\tthis._hovering.delete(obj);\n\t\t\t\t\tif (obj.cursorOverStyle) {\n\t\t\t\t\t\t$utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle!);\n\t\t\t\t\t}\n\t\t\t\t\tthis._dispatchEvent(\"pointerout\", obj, event);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\teachTargets(target, (obj) => {\n\t\t\t\tif (!this._hovering.has(obj)) {\n\t\t\t\t\tthis._hovering.add(obj);\n\t\t\t\t\tif (obj.cursorOverStyle) {\n\t\t\t\t\t\tobj._replacedCursorStyle = $utils.getStyle(document.body, \"cursor\");\n\t\t\t\t\t\t$utils.setStyle(document.body, \"cursor\", obj.cursorOverStyle);\n\t\t\t\t\t}\n\t\t\t\t\tthis._dispatchEvent(\"pointerover\", obj, event);\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t} else if (target === false) {\n\t\t\tthis._hovering.forEach((obj) => {\n\t\t\t\tif (obj.cursorOverStyle) {\n\t\t\t\t\t$utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle!);\n\t\t\t\t}\n\t\t\t\tthis._dispatchEvent(\"pointerout\", obj, event);\n\t\t\t});\n\n\t\t\tthis._hovering.clear();\n\t\t}\n\n\t\tthis._dispatchEventAll(\"globalpointermove\", event);\n\t}\n\n\t_dispatchGlobalMouseup(originalEvent: IPointerEvent): void {\n\t\tconst event = this.getEvent(originalEvent);\n\t\t//const target = this._getHitTarget(event.point);\n\t\tthis._dispatchEventAll(\"globalpointerup\", event);\n\t}\n\n\t_dispatchDragMove(originalEvent: IPointerEvent): void {\n\t\tif (this._dragging.length !== 0) {\n\t\t\tconst event = this.getEvent(originalEvent);\n\t\t\tconst id = event.id;\n\n\t\t\tthis._dragging.forEach((obj) => {\n\t\t\t\tif (obj.id === id) {\n\t\t\t\t\tthis._dispatchEvent(\"pointermove\", obj.value, event);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatchDragEnd(originalEvent: IPointerEvent): void {\n\t\tconst event = this.getEvent(originalEvent);\n\t\tconst id = event.id;\n\n\t\tif (this._mousedown.length !== 0) {\n\t\t\tconst target = this._getHitTarget(event.point);\n\n\t\t\tif (target) {\n\t\t\t\tthis._mousedown.forEach((obj) => {\n\t\t\t\t\tif (obj.id === id && obj.value.contains(target)) {\n\t\t\t\t\t\tthis._dispatchEvent(\"click\", obj.value, event);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis._mousedown.length = 0;\n\t\t}\n\n\t\tif (this._dragging.length !== 0) {\n\t\t\tthis._dragging.forEach((obj) => {\n\t\t\t\tif (obj.id === id) {\n\t\t\t\t\tthis._dispatchEvent(\"pointerup\", obj.value, event);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._dragging.length = 0;\n\t\t}\n\t}\n\n\t_dispatchDoubleClick(originalEvent: IPointerEvent): void {\n\t\tconst event = this.getEvent(originalEvent);\n\t\tconst target = this._getHitTarget(event.point);\n\n\t\tif (target) {\n\t\t\teachTargets(target, (obj) => {\n\t\t\t\tif (this._dispatchEvent(\"dblclick\", obj, event)) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatchWheel(originalEvent: WheelEvent): void {\n\t\tconst event = this.getEvent(originalEvent);\n\t\tthis._hovering.forEach((obj) => {\n\t\t\tif (obj.wheelable) {\n\t\t\t\tthis._dispatchEvent(\"wheel\", obj, event);\n\t\t\t}\n\t\t});\n\t}\n\n\t_makeSharedEvent(key: string, f: () => IDisposer): IDisposer {\n\t\tif (this._listeners[key] === undefined) {\n\t\t\tconst listener = f();\n\n\t\t\tthis._listeners[key] = new CounterDisposer(() => {\n\t\t\t\tdelete this._listeners[key];\n\t\t\t\tlistener.dispose();\n\t\t\t});\n\t\t}\n\n\t\treturn this._listeners[key].increment();\n\t}\n\n\t// This ensures that only a single DOM event is added (e.g. only a single mousemove event listener)\n\t_initEvent(key: keyof IRendererEvents): IDisposer | undefined {\n\t\tswitch (key) {\n\t\t\tcase \"globalpointermove\":\n\t\t\tcase \"pointerover\":\n\t\t\tcase \"pointerout\":\n\t\t\t\treturn this._makeSharedEvent(\"pointermove\", () => {\n\t\t\t\t\t//const throttler = new Throttler();\n\n\t\t\t\t\t// TODO handle throttling properly for multitouch\n\t\t\t\t\treturn onPointerEvent(window, \"pointermove\", (ev) => {\n\t\t\t\t\t\t//throttler.throttle(() => {\n\t\t\t\t\t\tthis._dispatchGlobalMousemove(ev);\n\t\t\t\t\t\t//});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\tcase \"globalpointerup\":\n\t\t\t\treturn this._makeSharedEvent(\"pointerup\", () => {\n\t\t\t\t\t//const throttler = new Throttler();\n\n\t\t\t\t\t// TODO handle throttling properly for multitouch\n\t\t\t\t\treturn onPointerEvent(window, \"pointerup\", (ev) => {\n\t\t\t\t\t\t//throttler.throttle(() => {\n\t\t\t\t\t\tthis._dispatchGlobalMouseup(ev);\n\t\t\t\t\t\t//});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\tcase \"click\":\n\t\t\tcase \"pointerdown\":\n\t\t\tcase \"pointermove\":\n\t\t\tcase \"pointerup\":\n\t\t\t\treturn this._makeSharedEvent(\"pointerdown\", () => {\n\t\t\t\t\t//const throttler = new Throttler();\n\n\t\t\t\t\tconst mousedown = onPointerEvent(this.view, \"pointerdown\", (ev: IPointerEvent) => {\n\t\t\t\t\t\tthis._dispatchMousedown(ev);\n\t\t\t\t\t});\n\n\t\t\t\t\t// TODO handle throttling properly for multitouch\n\t\t\t\t\tconst mousemove = onPointerEvent(window, \"pointermove\", (ev: IPointerEvent) => {\n\t\t\t\t\t\t//throttler.throttle(() => {\n\t\t\t\t\t\tthis._dispatchDragMove(ev);\n\t\t\t\t\t\t//});\n\t\t\t\t\t});\n\n\t\t\t\t\tconst mouseup = onPointerEvent(window, \"pointerup\", (ev: IPointerEvent) => {\n\t\t\t\t\t\tthis._dispatchDragEnd(ev);\n\t\t\t\t\t});\n\n\t\t\t\t\treturn new Disposer(() => {\n\t\t\t\t\t\tmousedown.dispose();\n\t\t\t\t\t\tmousemove.dispose();\n\t\t\t\t\t\tmouseup.dispose();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\tcase \"dblclick\":\n\t\t\t\treturn this._makeSharedEvent(\"dblclick\", () => {\n\t\t\t\t\treturn onPointerEvent(window, \"dblclick\", (ev) => {\n\t\t\t\t\t\tthis._dispatchDoubleClick(ev);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\tcase \"wheel\":\n\t\t\t\treturn this._makeSharedEvent(\"wheel\", () => {\n\t\t\t\t\treturn $utils.addEventListener(window, $utils.getRendererEvent(\"wheel\"), (event: WheelEvent) => {\n\t\t\t\t\t\tthis._dispatchWheel(event);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t}\n\n\t_addEvent<C, Key extends keyof IRendererEvents>(object: CanvasDisplayObject, key: Key, callback: (this: C, event: IRendererEvents[Key]) => void, context?: C): IDisposer {\n\t\tlet events: Events<Key> | undefined = this._events[key] as any;\n\n\t\tif (events === undefined) {\n\t\t\tevents = this._events[key] = {\n\t\t\t\tdisposer: this._initEvent(key)!,\n\t\t\t\tcallbacks: [],\n\t\t\t};\n\t\t}\n\n\t\tconst listener = { object, context, callback };\n\n\t\tevents!.callbacks.push(listener);\n\n\t\treturn new Disposer(() => {\n\t\t\t$array.removeFirst(events!.callbacks, listener);\n\n\t\t\tif (events!.callbacks.length === 0) {\n\t\t\t\tevents!.disposer.dispose();\n\t\t\t\tdelete this._events[key];\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic getCanvas(root: CanvasDisplayObject, options?: ICanvasOptions): HTMLCanvasElement {\n\n\t\t// Make sure everything is rendered\n\t\tthis.render(root);\n\n\t\tif (!options) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tlet scale: number = this.resolution;\n\n\t\t// Check if we need to scale\n\t\tif (options.minWidth && (options.minWidth > this._width)) {\n\t\t\tlet minScale = options.minWidth / this._width;\n\t\t\tif (minScale > scale) {\n\t\t\t\tscale = minScale * this.resolution;\n\t\t\t}\n\t\t}\n\n\t\tif (options.minHeight && (options.minHeight > this._height)) {\n\t\t\tlet minScale = options.minHeight / this._height;\n\t\t\tif (minScale > scale) {\n\t\t\t\tscale = minScale * this.resolution;\n\t\t\t}\n\t\t}\n\n\t\tif (options.maxWidth && (options.maxWidth < this._width)) {\n\t\t\tlet maxScale = options.maxWidth / this._width;\n\t\t\tif (maxScale < scale) {\n\t\t\t\tscale = maxScale * this.resolution;\n\t\t\t}\n\t\t}\n\n\t\tif (options.maxHeight && (options.maxHeight > this._height)) {\n\t\t\tlet maxScale = options.maxHeight / this._height;\n\t\t\tif (maxScale < scale) {\n\t\t\t\tscale = maxScale * this.resolution;\n\t\t\t}\n\t\t}\n\n\t\t// Check if we need to compensate for pixel ratio\n\t\tif (options.maintainPixelRatio) {\n\t\t\tscale /= this.resolution;\n\t\t}\n\n\t\t// Set up new canvas for export\n\t\tlet forceRender = false;\n\t\tlet canvasWidth = this._width;\n\t\tlet canvasHeight = this._height;\n\t\tconst canvas = document.createElement(\"canvas\");\n\t\tif (scale != this.resolution) {\n\t\t\tforceRender = true;\n\t\t\tcanvasWidth = this._width * scale / this.resolution;\n\t\t\tcanvasHeight = this._height * scale / this.resolution;\n\t\t}\n\n\t\tcanvas.width = canvasWidth;\n\t\tcanvas.height = canvasHeight;\n\n\t\t// Context\n\t\tconst context = canvas.getContext(\"2d\")!;\n\n\t\tlet width = 0;\n\t\tlet height = 0;\n\t\tlet needRerender = false;\n\n\t\t$array.each(this.layers, (layer) => {\n\t\t\tif (layer && layer.visible) {\n\t\t\t\tif (layer.tainted || forceRender) {\n\t\t\t\t\tneedRerender = true;\n\n\t\t\t\t\tlayer.exportableView = layer.view;\n\t\t\t\t\tlayer.exportableContext = layer.context;\n\n\t\t\t\t\tlayer.view = document.createElement(\"canvas\");\n\t\t\t\t\tlayer.view.width = canvasWidth;\n\t\t\t\t\tlayer.view.height = canvasHeight;\n\n\t\t\t\t\tlayer.context = layer.view.getContext(\"2d\")!;\n\n\t\t\t\t\tlayer.dirty = true;\n\t\t\t\t\tlayer.scale = scale;\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (needRerender) {\n\t\t\tthis._omitTainted = true;\n\t\t\tthis.render(root);\n\t\t\tthis._omitTainted = false;\n\t\t}\n\n\t\t$array.each(this.layers, (layer) => {\n\t\t\tif (layer && layer.visible) {\n\n\t\t\t\t// Layer is fine. Just plop it into our target canvas\n\t\t\t\tcontext.drawImage(layer.view, 0, 0);\n\n\t\t\t\t// Restore layer original canvas\n\t\t\t\tif (layer.exportableView) {\n\t\t\t\t\tlayer.view = layer.exportableView;\n\t\t\t\t\tlayer.exportableView = undefined;\n\t\t\t\t}\n\n\t\t\t\tif (layer.exportableContext) {\n\t\t\t\t\tlayer.context = layer.exportableContext;\n\t\t\t\t\tlayer.exportableContext = undefined;\n\t\t\t\t}\n\n\t\t\t\tif (width < layer.view.clientWidth) {\n\t\t\t\t\twidth = layer.view.clientWidth;\n\t\t\t\t}\n\t\t\t\tif (height < layer.view.clientHeight) {\n\t\t\t\t\theight = layer.view.clientHeight;\n\t\t\t\t}\n\n\t\t\t\tlayer.scale = undefined;\n\t\t\t}\n\t\t});\n\n\t\tcanvas.style.width = width + \"px\";\n\t\tcanvas.style.height = height + \"px\";\n\n\t\treturn canvas;\n\t}\n\n}\n\n/**\n * @ignore\n */\nexport interface CanvasLayer extends ILayer {\n\tview: HTMLCanvasElement;\n\tcontext: CanvasRenderingContext2D;\n\ttainted?: boolean;\n\texportableView?: HTMLCanvasElement;\n\texportableContext?: CanvasRenderingContext2D;\n\tscale?: number;\n}\n"]}
1
+ {"version":3,"file":"CanvasRenderer.js","sourceRoot":"","sources":["../../../../../../src/.internal/core/render/backend/CanvasRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["/** @ignore *//** */\n\nimport {\n\tIRenderer, IContainer, IDisplayObject, IGraphics, IRendererEvents,\n\tIText, ITextStyle, IRadialText, IPicture, IRendererEvent, ILayer, ICanvasOptions, BlendMode, IPointerEvent, Id\n} from \"./Renderer\";\nimport type { IBounds } from \"../../util/IBounds\";\nimport type { IPoint } from \"../../util/IPoint\";\nimport { Color } from \"../../util/Color\";\nimport { Matrix } from \"../../util/Matrix\";\nimport { Percent, percent } from \"../../util/Percent\";\nimport { Throttler } from \"../../util/Throttler\";\nimport { Disposer, IDisposer, CounterDisposer } from \"../../util/Disposer\";\nimport { TextFormatter, ITextChunk } from \"../../util/TextFormatter\";\nimport * as $utils from \"../../util/Utils\";\nimport * as $array from \"../../util/Array\";\nimport * as $type from \"../../util/Type\";\nimport * as $math from \"../../util/Math\";\n\n\n/**\n * @ignore\n */\nfunction checkArgs(name: string, actual: number, expected: number) {\n\tif (actual !== expected) {\n\t\tthrow new Error(\"Required \" + expected + \" arguments for \" + name + \" but got \" + actual);\n\t}\n}\n\n/**\n * @ignore\n */\nfunction checkMinArgs(name: string, actual: number, expected: number) {\n\tif (actual < expected) {\n\t\tthrow new Error(\"Required at least \" + expected + \" arguments for \" + name + \" but got \" + actual);\n\t}\n}\n\n/**\n * @ignore\n */\nfunction checkEvenArgs(name: string, actual: number, expected: number) {\n\tcheckMinArgs(name, actual, expected);\n\n\tif ((actual % expected) !== 0) {\n\t\tthrow new Error(\"Arguments for \" + name + \" must be in pairs of \" + expected);\n\t}\n}\n\n// 1 -> 0xffffff * (2 / 2)\n// 2 -> 0xffffff * (1 / 2)\n//\n// 3 -> 0xffffff * (3 / 4)\n// 4 -> 0xffffff * (1 / 4)\n//\n// 5 -> 0xffffff * (7 / 8)\n// 6 -> 0xffffff * (5 / 8)\n// 7 -> 0xffffff * (3 / 8)\n// 8 -> 0xffffff * (1 / 8)\n//\n// 9 -> 0xffffff * (15 / 16)\n// 10 -> 0xffffff * (13 / 16)\n// 11 -> 0xffffff * (11 / 16)\n// 12 -> 0xffffff * (9 / 16)\n// 13 -> 0xffffff * (7 / 16)\n// 14 -> 0xffffff * (5 / 16)\n// 15 -> 0xffffff * (3 / 16)\n// 16 -> 0xffffff * (1 / 16)\n// @todo remove this old color distribution algo if the new one pans out\n// function distributeIdBAK(id: number): number {\n// \tif (id === 1) {\n// \t\treturn 0x000001;\n\n// \t} else {\n// \t\t// Finds the closest power of 2\n// \t\tconst base = Math.pow(2, Math.ceil(Math.log(id) / Math.log(2)));\n\n// \t\t// Translates the id into an odd fraction index\n// \t\tconst index = ((base - id) * 2) + 1;\n\n// \t\t// TODO is Math.round correct ?\n// \t\treturn Math.round(0xffffff * (index / base));\n// \t}\n// }\n\n/**\n * Function by smeans:\n * https://lowcode.life/generating-unique-contrasting-colors-in-javascript/\n * @ignore\n */\nfunction distributeId(id: number): number {\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 24; i++) {\n\t\trgb[i % 3] <<= 1;\n\t\trgb[i % 3] |= id & 0x01;\n\t\tid >>= 1;\n\t}\n\treturn (rgb[2] | 0) + (rgb[1] << 8) + (rgb[0] << 16);\n}\n\n/**\n * @ignore\n */\nfunction eachTargets(hitTarget: CanvasDisplayObject, f: (target: CanvasDisplayObject) => boolean): void {\n\tfor (; ;) {\n\t\tif (hitTarget.interactive) {\n\t\t\tif (!f(hitTarget)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (hitTarget._parent) {\n\t\t\thitTarget = hitTarget._parent;\n\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n// TODO feature detection for mouse/touch/pointer\n/**\n * @ignore\n */\nfunction onPointerEvent(element: EventTarget, name: string, f: (event: IPointerEvent) => void): IDisposer {\n\treturn $utils.addEventListener(element, $utils.getRendererEvent(name), (event: MouseEvent | TouchEvent) => {\n\t\tif ((<any>event).touches) {\n\t\t\t$array.each((<TouchEvent>event).touches, (touch) => {\n\t\t\t\tf(touch);\n\t\t\t});\n\n\t\t} else {\n\t\t\tf(<MouseEvent>event);\n\t\t}\n\t});\n}\n\n/**\n * @ignore\n */\nfunction isTainted(image: HTMLImageElement): boolean {\n\tconst canvas = document.createElement(\"canvas\");\n\tcanvas.width = 1;\n\tcanvas.height = 1;\n\tconst context = canvas.getContext(\"2d\")!;\n\tcontext.drawImage(image, 0, 0, 1, 1);\n\n\ttry {\n\t\tcontext.getImageData(0, 0, 1, 1);\n\t\treturn false;\n\t}\n\tcatch (err) {\n\t\tconsole.warn(\"Image \\\"\" + image.src + \"\\\" is loaded from different host and is not covered by CORS policy. For more information about the implications read here: https://www.amcharts.com/docs/v5/concepts/cors\");\n\t\treturn true;\n\t}\n}\n\n/**\n * @ignore\n */\nexport class CanvasPivot implements IPoint {\n\tprotected _x: number = 0;\n\tprotected _y: number = 0;\n\n\tget x(): number {\n\t\treturn this._x;\n\t}\n\n\tget y(): number {\n\t\treturn this._y;\n\t}\n\n\tset x(value: number) {\n\t\tthis._x = value;\n\t}\n\n\tset y(value: number) {\n\t\tthis._y = value;\n\t}\n}\n\n/**\n * @ignore\n */\nexport class CanvasDisplayObject extends Disposer implements IDisplayObject, IDisposer {\n\tpublic _layer?: CanvasLayer;\n\n\tpublic mask: CanvasGraphics | null = null;\n\tpublic visible: boolean = true;\n\tpublic exportable?: boolean = true;\n\tpublic interactive: boolean = false;\n\tpublic wheelable: boolean = false;\n\tpublic isMeasured: boolean = false;\n\tpublic buttonMode: boolean = false;\n\tpublic alpha: number = 1;\n\tpublic compoundAlpha: number = 1;\n\tpublic angle: number = 0;\n\tpublic scale: number = 1;\n\tpublic x: number = 0;\n\tpublic y: number = 0;\n\tpublic pivot: CanvasPivot = new CanvasPivot();\n\n\tpublic filter?: string;\n\n\tpublic cursorOverStyle?: string;\n\tpublic _replacedCursorStyle?: string;\n\n\tpublic _localMatrix: Matrix = new Matrix();\n\tpublic _matrix: Matrix = new Matrix();\n\t// TODO can this be replaced with _localMatrix ?\n\tprotected _uMatrix: Matrix = new Matrix();\n\n\tprotected _renderer: CanvasRenderer;\n\tpublic _parent: CanvasContainer | undefined;\n\n\tprotected _localBounds: IBounds | undefined;\n\tprotected _bounds: IBounds | undefined;\n\tpublic _colorId: string | undefined;\n\n\tconstructor(renderer: CanvasRenderer) {\n\t\tsuper(() => {\n\t\t\tthis._renderer._removeObject(this);\n\t\t});\n\n\t\tthis._renderer = renderer;\n\t}\n\n\tpublic getLayer(): CanvasLayer {\n\t\tlet self: CanvasDisplayObject = this;\n\n\t\tfor (; ;) {\n\t\t\tif (self._layer) {\n\t\t\t\treturn self._layer;\n\n\t\t\t} else if (self._parent) {\n\t\t\t\tself = self._parent;\n\n\t\t\t} else {\n\t\t\t\treturn this._renderer.defaultLayer;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic setLayer(order: number | undefined, visible: boolean = true): void {\n\t\tif (order == null) {\n\t\t\tthis._layer = undefined;\n\n\t\t} else {\n\t\t\tthis._layer = this._renderer.getLayer(order, visible);\n\t\t\tthis._layer.visible = visible;\n\t\t\tif (this._parent) {\n\t\t\t\tthis._parent.registerChildLayer(this._layer);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic markDirtyLayer(): void {\n\t\tthis.getLayer().dirty = true;\n\t}\n\n\tpublic clear(): void {\n\t\tthis.invalidateBounds();\n\t}\n\n\tpublic invalidateBounds(): void {\n\t\tthis._localBounds = undefined;\n\t}\n\n\tpublic _addBounds(_bounds: IBounds): void { }\n\n\tprotected _getColorId(): string {\n\t\tif (this._colorId === undefined) {\n\t\t\tthis._colorId = this._renderer.paintId(this);\n\t\t}\n\n\t\treturn this._colorId;\n\t}\n\n\tprotected _isInteractive(): boolean {\n\t\treturn this.interactive || this._renderer._forceInteractive > 0;\n\t}\n\n\tprotected _isInteractiveMask(): boolean {\n\t\treturn this._isInteractive();\n\t}\n\n\tpublic contains(child: CanvasDisplayObject): boolean {\n\t\tfor (; ;) {\n\t\t\tif (child === this) {\n\t\t\t\treturn true;\n\n\t\t\t} else if (child._parent) {\n\t\t\t\tchild = child._parent;\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\ttoGlobal(point: IPoint): IPoint {\n\t\treturn this._matrix.apply(point);\n\t}\n\n\ttoLocal(point: IPoint): IPoint {\n\t\treturn this._matrix.applyInverse(point);\n\t}\n\n\tpublic getLocalMatrix(): Matrix {\n\t\tthis._uMatrix.setTransform(0, 0, this.pivot.x, this.pivot.y, this.angle * Math.PI / 180, this.scale);\n\t\treturn this._uMatrix;\n\t}\n\n\tgetLocalBounds(): IBounds {\n\t\tif (!this._localBounds) {\n\n\t\t\tconst bn = 10000000;\n\t\t\tthis._localBounds = {\n\t\t\t\tleft: bn,\n\t\t\t\ttop: bn,\n\t\t\t\tright: -bn,\n\t\t\t\tbottom: -bn\n\t\t\t};\n\n\t\t\tthis._addBounds(this._localBounds);\n\t\t}\n\t\treturn this._localBounds;\n\t}\n\n\tgetAdjustedBounds(bounds: IBounds): IBounds {\n\t\tthis._setMatrix();\n\n\t\tconst matrix = this.getLocalMatrix();\n\n\t\tconst p0 = matrix.apply({ x: bounds.left, y: bounds.top });\n\t\tconst p1 = matrix.apply({ x: bounds.right, y: bounds.top });\n\t\tconst p2 = matrix.apply({ x: bounds.right, y: bounds.bottom });\n\t\tconst p3 = matrix.apply({ x: bounds.left, y: bounds.bottom });\n\n\t\treturn {\n\t\t\tleft: Math.min(p0.x, p1.x, p2.x, p3.x),\n\t\t\ttop: Math.min(p0.y, p1.y, p2.y, p3.y),\n\t\t\tright: Math.max(p0.x, p1.x, p2.x, p3.x),\n\t\t\tbottom: Math.max(p0.y, p1.y, p2.y, p3.y)\n\t\t}\n\t}\n\n\ton<C, Key extends keyof IRendererEvents>(key: Key, callback: (this: C, event: IRendererEvents[Key]) => void, context?: C): IDisposer {\n\t\tif (this.interactive) {\n\t\t\treturn this._renderer._addEvent(this, key, callback, context);\n\n\t\t} else {\n\t\t\treturn new Disposer(() => { });\n\t\t}\n\t}\n\n\tpublic _setMatrix(): void {\n\t\t// TODO only calculate this if it has actually changed\n\t\tthis._localMatrix.setTransform(\n\t\t\tthis.x,\n\t\t\tthis.y,\n\t\t\tthis.pivot.x,\n\t\t\tthis.pivot.y,\n\t\t\t// Converts degrees to radians\n\t\t\tthis.angle * Math.PI / 180,\n\t\t\tthis.scale\n\t\t);\n\n\t\tthis._matrix.copyFrom(this._localMatrix);\n\n\t\tif (this._parent) {\n\t\t\t// TODO only calculate this if it has actually changed\n\t\t\tthis._matrix.prepend(this._parent._matrix);\n\t\t}\n\t}\n\n\tpublic _transform(context: CanvasRenderingContext2D, resolution: number): void {\n\t\tconst m = this._matrix;\n\t\tcontext.setTransform(\n\t\t\tm.a * resolution,\n\t\t\tm.b * resolution,\n\t\t\tm.c * resolution,\n\t\t\tm.d * resolution,\n\t\t\tm.tx * resolution,\n\t\t\tm.ty * resolution\n\t\t);\n\t}\n\n\tpublic render(parentLayer: CanvasLayer): void {\n\t\tif (this.visible && (this.exportable !== false || !this._renderer._omitTainted)) {\n\t\t\tthis._setMatrix();\n\n\t\t\tconst resolution = this._renderer.resolution;\n\n\t\t\tconst layers = this._renderer.layers;\n\t\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t\tconst mask = this.mask;\n\t\t\tif (mask) {\n\t\t\t\tmask._setMatrix();\n\t\t\t}\n\n\t\t\t$array.each(layers, (layer) => {\n\t\t\t\tif (layer) {\n\t\t\t\t\tlayer.context.save();\n\n\t\t\t\t\t// We must apply the mask before we transform the element\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tmask._transform(layer.context, layer.scale || resolution);\n\t\t\t\t\t\tmask._runPath(layer.context);\n\t\t\t\t\t\tlayer.context.clip();\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer.context.globalAlpha = this.compoundAlpha * this.alpha;\n\n\t\t\t\t\tthis._transform(layer.context, layer.scale || resolution);\n\n\t\t\t\t\tif (this.filter) {\n\t\t\t\t\t\tlayer.context.filter = this.filter;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tghostContext.save();\n\n\t\t\t// We must apply the mask before we transform the element\n\t\t\tif (mask && this._isInteractiveMask()) {\n\t\t\t\tmask._transform(ghostContext, resolution);\n\t\t\t\tmask._runPath(ghostContext);\n\t\t\t\tghostContext.clip();\n\t\t\t}\n\n\t\t\tthis._transform(ghostContext, resolution);\n\n\t\t\tthis._render(parentLayer);\n\n\t\t\tghostContext.restore();\n\n\t\t\t$array.each(layers, (layer) => {\n\t\t\t\tif (layer) {\n\t\t\t\t\tlayer.context.restore();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected _render(parentLayer: CanvasLayer): void {\n\t\tif (this.exportable === false) {\n\t\t\tconst layer = this._layer || parentLayer;\n\t\t\tlayer.tainted = true;\n\t\t}\n\t}\n\n\thovering(): boolean {\n\t\treturn this._renderer._hovering.has(this);\n\t}\n\n\tdragging(): boolean {\n\t\treturn this._renderer._dragging.some((x) => x.value === this);\n\t}\n\n\tpublic dispose() {\n\t\tthis.getLayer().dirty = true;\n\t}\n\n}\n\n/**\n * @ignore\n */\nexport class CanvasContainer extends CanvasDisplayObject implements IContainer {\n\tpublic interactiveChildren: boolean = true;\n\tprivate _childLayers?: CanvasLayer[];\n\n\tprotected _children: Array<CanvasDisplayObject> = [];\n\n\tprotected _isInteractiveMask(): boolean {\n\t\treturn this.interactiveChildren || super._isInteractiveMask();\n\t}\n\n\taddChild(child: CanvasDisplayObject): void {\n\t\tchild._parent = this;\n\t\tthis._children.push(child);\n\t\tif (child._layer) {\n\t\t\tthis.registerChildLayer(child._layer);\n\t\t}\n\t}\n\n\taddChildAt(child: CanvasDisplayObject, index: number): void {\n\t\tchild._parent = this;\n\t\tthis._children.splice(index, 0, child);\n\t\tif (child._layer) {\n\t\t\tthis.registerChildLayer(child._layer);\n\t\t}\n\t}\n\n\tremoveChild(child: CanvasDisplayObject): void {\n\t\tchild._parent = undefined;\n\t\t$array.removeFirst(this._children, child);\n\t}\n\n\tprotected _render(parentLayer: CanvasLayer): void {\n\t\tsuper._render(parentLayer);\n\n\t\tconst renderer = this._renderer;\n\n\t\tif (this.interactive && this.interactiveChildren) {\n\t\t\t++renderer._forceInteractive;\n\t\t}\n\n\t\tconst layer = this._layer || parentLayer;\n\n\t\t$array.each(this._children, (child) => {\n\t\t\tchild.compoundAlpha = this.compoundAlpha * this.alpha;\n\t\t\tchild.render(layer);\n\t\t});\n\n\t\tif (this.interactive && this.interactiveChildren) {\n\t\t\t--renderer._forceInteractive;\n\t\t}\n\t}\n\n\tregisterChildLayer(layer: CanvasLayer): void {\n\t\tif (!this._childLayers) {\n\t\t\tthis._childLayers = [];\n\t\t}\n\t\t$array.pushOne(this._childLayers, layer);\n\t\tif (this._parent) {\n\t\t\tthis._parent.registerChildLayer(layer);\n\t\t}\n\t}\n\n\tpublic markDirtyLayer(deep: boolean = false): void {\n\t\tsuper.markDirtyLayer();\n\t\tif (deep && this._childLayers) {\n\t\t\t$array.each(this._childLayers, (layer) => layer.dirty = true);\n\t\t}\n\t}\n\n\tpublic dispose() {\n\t\tsuper.dispose();\n\t\tif (this._childLayers) {\n\t\t\t$array.each(this._childLayers, (layer) => {\n\t\t\t\tlayer.dirty = true;\n\t\t\t});\n\t\t}\n\t}\n}\n\n/**\n * @ignore\n */\nfunction setPoint(bounds: IBounds, point: IPoint): void {\n\tbounds.left = Math.min(bounds.left, point.x);\n\tbounds.top = Math.min(bounds.top, point.y);\n\tbounds.right = Math.max(bounds.right, point.x);\n\tbounds.bottom = Math.max(bounds.bottom, point.y);\n}\n\n/**\n * @ignore\n */\nabstract class Op {\n\tpublic colorize(_context: CanvasRenderingContext2D, _forceColor: string | undefined): void { }\n\n\tpublic path(_context: CanvasRenderingContext2D): void { }\n\n\tpublic addBounds(_bounds: IBounds): void { }\n}\n\n/**\n * @ignore\n */\nclass BeginFill extends Op {\n\tconstructor(public color: string | CanvasGradient | CanvasPattern) { super(); }\n\n\tpublic colorize(context: CanvasRenderingContext2D, forceColor: string | undefined): void {\n\t\tif (forceColor !== undefined) {\n\t\t\tcontext.fillStyle = forceColor;\n\n\t\t} else {\n\t\t\tcontext.fillStyle = this.color;\n\t\t}\n\t}\n}\n\n/**\n * @ignore\n */\nclass EndFill extends Op {\n\tconstructor(public clearShadow: boolean) { super(); }\n\tpublic colorize(context: CanvasRenderingContext2D, _forceColor: string | undefined): void {\n\t\tcontext.fill();\n\t\tif (this.clearShadow) {\n\t\t\tcontext.shadowColor = \"\";\n\t\t\tcontext.shadowBlur = 0;\n\t\t\tcontext.shadowOffsetX = 0;\n\t\t\tcontext.shadowOffsetY = 0;\n\t\t}\n\t}\n}\n\n/**\n * @ignore\n */\nclass EndStroke extends Op {\n\tpublic colorize(context: CanvasRenderingContext2D, _forceColor: string | undefined): void {\n\t\tcontext.stroke();\n\t}\n}\n\n/**\n * @ignore\n */\nclass LineStyle extends Op {\n\tconstructor(public width: number, public color: string | CanvasGradient | CanvasPattern) { super(); }\n\n\tpublic colorize(context: CanvasRenderingContext2D, forceColor: string | undefined): void {\n\t\tif (forceColor !== undefined) {\n\t\t\tcontext.strokeStyle = forceColor;\n\n\t\t} else {\n\t\t\tcontext.strokeStyle = this.color;\n\t\t}\n\n\t\tcontext.lineWidth = this.width;\n\t}\n}\n\n/**\n * @ignore\n */\nclass LineDash extends Op {\n\tconstructor(public dash: number[]) { super(); }\n\n\tpublic colorize(context: CanvasRenderingContext2D, _forceColor: string | undefined): void {\n\t\tcontext.setLineDash(this.dash);\n\t}\n}\n\n/**\n * @ignore\n */\nclass LineDashOffset extends Op {\n\tconstructor(public dashOffset: number) { super(); }\n\n\tpublic colorize(context: CanvasRenderingContext2D, _forceColor: string | undefined): void {\n\t\tcontext.lineDashOffset = this.dashOffset;\n\t}\n}\n\n/**\n * @ignore\n */\nclass DrawRect extends Op {\n\tconstructor(public x: number, public y: number, public width: number, public height: number) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.rect(this.x, this.y, this.width, this.height);\n\t}\n\n\tpublic addBounds(bounds: IBounds): void {\n\t\tconst l = this.x;\n\t\tconst t = this.y;\n\t\tconst r = l + this.width;\n\t\tconst b = t + this.height;\n\n\t\tsetPoint(bounds, { x: l, y: t });\n\t\tsetPoint(bounds, { x: r, y: t });\n\t\tsetPoint(bounds, { x: l, y: b });\n\t\tsetPoint(bounds, { x: r, y: b });\n\t}\n}\n\n/**\n * @ignore\n */\nclass DrawCircle extends Op {\n\tconstructor(public x: number, public y: number, public radius: number) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.moveTo(this.x + this.radius, this.y);\n\t\tcontext.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);\n\t}\n\n\t// TODO handle skewing and rotation\n\tpublic addBounds(bounds: IBounds): void {\n\t\tsetPoint(bounds, { x: this.x - this.radius, y: this.y - this.radius });\n\t\tsetPoint(bounds, { x: this.x + this.radius, y: this.y + this.radius });\n\t}\n}\n\n/**\n * @ignore\n */\nclass Arc extends Op {\n\tconstructor(\n\t\tpublic cx: number,\n\t\tpublic cy: number,\n\t\tpublic radius: number,\n\t\tpublic startAngle: number,\n\t\tpublic endAngle: number,\n\t\tpublic anticlockwise: boolean,\n\t) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tif (this.radius > 0) {\n\t\t\tcontext.arc(this.cx, this.cy, this.radius, this.startAngle, this.endAngle, this.anticlockwise);\n\t\t}\n\t}\n\n\tpublic addBounds(bounds: IBounds): void {\n\t\tlet arcBounds = $math.getArcBounds(this.cx, this.cy, this.startAngle * $math.DEGREES, this.endAngle * $math.DEGREES, this.radius);\n\t\tsetPoint(bounds, { x: arcBounds.left, y: arcBounds.top });\n\t\tsetPoint(bounds, { x: arcBounds.right, y: arcBounds.bottom });\n\t}\n}\n\n/**\n * @ignore\n */\nclass ArcTo extends Op {\n\tconstructor(\n\t\tpublic x1: number,\n\t\tpublic y1: number,\n\t\tpublic x2: number,\n\t\tpublic y2: number,\n\t\tpublic radius: number,\n\t) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tif (this.radius > 0) {\n\t\t\tcontext.arcTo(this.x1, this.y1, this.x2, this.y2, this.radius);\n\t\t}\n\t}\n\n\t// TODO: add points\n\tpublic addBounds(_bounds: IBounds): void {\n\t\t/*\n\t\t// not finished\n\t\thttps://math.stackexchange.com/questions/1781438/finding-the-center-of-a-circle-given-two-points-and-a-radius-algebraically\n\n\t\tif (prevPoint) {\n\t\t\tlet x1 = prevPoint.x;\n\t\t\tlet y1 = prevPoint.y;\n\t\t\tlet x2 = this.x2;\n\t\t\tlet y2 = this.y2;\n\t\t\tlet r = this.radius;\n\n\t\t\tlet xa = (x2 - x1) / 2;\n\t\t\tlet ya = (y2 - y1) / 2;\n\n\t\t\tlet x0 = x1 + xa;\n\t\t\tlet y0 = y1 + ya;\n\n\t\t\tlet a = Math.hypot(xa, ya);\n\t\t\tlet b = Math.sqrt(r * r - a * a);\n\n\t\t\tlet cx = x0 + b * ya / a;\n\t\t\tlet cy = y0 - b * xa / a;\n\n\t\t\tconsole.log(cx, cy);\n\t\t}*/\n\t}\n}\n\n/**\n * @ignore\n */\nclass LineTo extends Op {\n\tconstructor(public x: number, public y: number) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.lineTo(this.x, this.y);\n\t}\n\n\tpublic addBounds(bounds: IBounds): void {\n\t\tsetPoint(bounds, { x: this.x, y: this.y });\n\t}\n}\n\n/**\n * @ignore\n */\nclass MoveTo extends Op {\n\tconstructor(public x: number, public y: number) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.moveTo(this.x, this.y);\n\t}\n\n\tpublic addBounds(bounds: IBounds): void {\n\t\tsetPoint(bounds, { x: this.x, y: this.y });\n\t}\n}\n\n/**\n * @ignore\n */\nclass ClosePath extends Op {\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.closePath();\n\t}\n}\n\n/**\n * @ignore\n */\nclass BezierCurveTo extends Op {\n\tconstructor(\n\t\tpublic cpX: number,\n\t\tpublic cpY: number,\n\t\tpublic cpX2: number,\n\t\tpublic cpY2: number,\n\t\tpublic toX: number,\n\t\tpublic toY: number,\n\t) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.bezierCurveTo(this.cpX, this.cpY, this.cpX2, this.cpY2, this.toX, this.toY);\n\t}\n\n\t// TODO: OK?\n\tpublic addBounds(bounds: IBounds): void {\n\t\tsetPoint(bounds, { x: this.cpX, y: this.cpY });\n\t\tsetPoint(bounds, { x: this.cpX2, y: this.cpY2 });\n\t\tsetPoint(bounds, { x: this.toX, y: this.toY });\n\t}\n}\n\n/**\n * @ignore\n */\nclass QuadraticCurveTo extends Op {\n\tconstructor(\n\t\tpublic cpX: number,\n\t\tpublic cpY: number,\n\t\tpublic toX: number,\n\t\tpublic toY: number,\n\t) { super(); }\n\n\tpublic path(context: CanvasRenderingContext2D): void {\n\t\tcontext.quadraticCurveTo(this.cpX, this.cpY, this.toX, this.toY);\n\t}\n\n\t// TODO: OK?\n\tpublic addBounds(bounds: IBounds): void {\n\t\tsetPoint(bounds, { x: this.cpX, y: this.cpY });\n\t\tsetPoint(bounds, { x: this.toX, y: this.toY });\n\t}\n}\n\n/**\n * @ignore\n */\nclass Shadow extends Op {\n\tconstructor(\n\t\tpublic color: string,\n\t\tpublic blur?: number,\n\t\tpublic offsetX?: number,\n\t\tpublic offsetY?: number,\n\t\tpublic opacity?: number\n\t) { super(); }\n\n\tpublic colorize(context: CanvasRenderingContext2D, _forceColor: string | undefined): void {\n\t\tif (this.opacity) {\n\t\t\tcontext.fillStyle = this.color;\n\t\t}\n\t\tcontext.shadowColor = this.color;\n\t\tif (this.blur) {\n\t\t\tcontext.shadowBlur = this.blur;\n\t\t}\n\t\tif (this.offsetX) {\n\t\t\tcontext.shadowOffsetX = this.offsetX;\n\t\t}\n\t\tif (this.offsetY) {\n\t\t\tcontext.shadowOffsetY = this.offsetY;\n\t\t}\n\t}\n}\n\n\n/**\n * @ignore\n */\nexport class CanvasGraphics extends CanvasDisplayObject implements IGraphics {\n\tprotected _operations: Array<Op> = [];\n\n\tpublic blendMode: BlendMode = BlendMode.NORMAL;\n\n\tprotected _hasShadows: boolean = false;\n\tprotected _fillAlpha?: number;\n\tprotected _strokeAlpha?: number;\n\n\tclear(): void {\n\t\tsuper.clear();\n\t\tthis._operations.length = 0;\n\t}\n\n\tprotected _pushOp(op: Op): void {\n\t\tthis._operations.push(op);\n\t}\n\n\tbeginFill(color?: Color | CanvasGradient | CanvasPattern, alpha: number = 1): void {\n\t\tthis._fillAlpha = alpha;\n\t\tif (color) {\n\t\t\tif (color instanceof Color) {\n\t\t\t\tthis._pushOp(new BeginFill(color.toCSS(alpha)));\n\n\t\t\t} else {\n\t\t\t\tthis.isMeasured = true;\n\t\t\t\tthis._pushOp(new BeginFill(color));\n\t\t\t}\n\t\t} else {\n\t\t\tthis._pushOp(new BeginFill(\"rgba(0, 0, 0, \" + alpha + \")\"));\n\t\t}\n\t}\n\n\tendFill(): void {\n\t\tthis._pushOp(new EndFill(this._hasShadows));\n\t}\n\n\tendStroke(): void {\n\t\tthis._pushOp(new EndStroke());\n\t}\n\n\tlineStyle(width: number = 0, color?: Color | CanvasGradient | CanvasPattern, alpha: number = 1): void {\n\t\tthis._strokeAlpha = alpha;\n\t\tif (color) {\n\t\t\tif (color instanceof Color) {\n\t\t\t\tthis._pushOp(new LineStyle(width, color.toCSS(alpha)));\n\t\t\t} else {\n\t\t\t\tthis._pushOp(new LineStyle(width, color));\n\t\t\t}\n\t\t} else {\n\t\t\tthis._pushOp(new LineStyle(width, \"rgba(0, 0, 0, \" + alpha + \")\"));\n\t\t}\n\t}\n\n\tsetLineDash(dash?: number[]): void {\n\t\tthis._pushOp(new LineDash(dash ? dash : []));\n\t}\n\n\tsetLineDashOffset(dashOffset?: number): void {\n\t\tthis._pushOp(new LineDashOffset(dashOffset || 0));\n\t}\n\n\tdrawRect(x: number, y: number, width: number, height: number): void {\n\t\tthis._pushOp(new DrawRect(x, y, width, height));\n\t}\n\n\tdrawCircle(x: number, y: number, radius: number): void {\n\t\tthis._pushOp(new DrawCircle(x, y, radius));\n\t}\n\n\tarc(cx: number, cy: number, radius: number, startAngle: number, endAngle: number, anticlockwise: boolean = false): void {\n\t\tthis._pushOp(new Arc(cx, cy, radius, startAngle, endAngle, anticlockwise));\n\t}\n\n\tarcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void {\n\t\tthis._pushOp(new ArcTo(x1, y1, x2, y2, radius));\n\t}\n\n\tlineTo(x: number, y: number): void {\n\t\tthis._pushOp(new LineTo(x, y));\n\t}\n\n\tmoveTo(x: number, y: number): void {\n\t\tthis._pushOp(new MoveTo(x, y));\n\t}\n\n\tbezierCurveTo(cpX: number, cpY: number, cpX2: number, cpY2: number, toX: number, toY: number): void {\n\t\tthis._pushOp(new BezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY));\n\t}\n\n\tquadraticCurveTo(cpX: number, cpY: number, toX: number, toY: number): void {\n\t\tthis._pushOp(new QuadraticCurveTo(cpX, cpY, toX, toY));\n\t}\n\n\tclosePath(): void {\n\t\tthis._pushOp(new ClosePath());\n\t}\n\n\tshadow(color: Color, blur?: number, offsetX?: number, offsetY?: number, opacity?: number): void {\n\t\tthis._hasShadows = true;\n\t\tthis._pushOp(new Shadow(opacity ? color.toCSS(opacity) : color.toCSS(this._fillAlpha || this._strokeAlpha), blur, offsetX, offsetY));\n\t}\n\n\t// TODO better error checking\n\tsvgPath(path: string): void {\n\t\tlet x = 0;\n\t\tlet y = 0;\n\t\tlet cpx: number | null = null;\n\t\tlet cpy: number | null = null;\n\t\tlet qcpx: number | null = null;\n\t\tlet qcpy: number | null = null;\n\n\t\tconst SEGMENTS_REGEXP = /([MmZzLlHhVvCcSsQqTtAa])([^MmZzLlHhVvCcSsQqTtAa]*)/g;\n\t\tconst ARGS_REGEXP = /[\\u0009\\u0020\\u000A\\u000C\\u000D]*([\\+\\-]?[0-9]*\\.?[0-9]+(?:[eE][\\+\\-]?[0-9]+)?)[\\u0009\\u0020\\u000A\\u000C\\u000D]*,?/g;\n\n\t\tlet match;\n\n\t\twhile ((match = SEGMENTS_REGEXP.exec(path)) !== null) {\n\t\t\tconst name = match[1];\n\t\t\tconst rest = match[2];\n\n\t\t\tconst args = [];\n\n\t\t\twhile ((match = ARGS_REGEXP.exec(rest)) !== null) {\n\t\t\t\targs.push(+match[1]);\n\t\t\t}\n\n\t\t\t// Reset control point\n\t\t\tif (name !== \"S\" && name !== \"s\" && name !== \"C\" && name !== \"c\") {\n\t\t\t\tcpx = null;\n\t\t\t\tcpy = null;\n\t\t\t}\n\n\t\t\t// Reset control point\n\t\t\tif (name !== \"Q\" && name !== \"q\" && name !== \"T\" && name !== \"t\") {\n\t\t\t\tqcpx = null;\n\t\t\t\tqcpy = null;\n\t\t\t}\n\n\t\t\tswitch (name) {\n\t\t\t\tcase \"M\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tx = args[0];\n\t\t\t\t\ty = args[1];\n\t\t\t\t\tthis.moveTo(x, y);\n\n\t\t\t\t\tfor (let i = 2; i < args.length; i += 2) {\n\t\t\t\t\t\tx = args[i];\n\t\t\t\t\t\ty = args[i + 1];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"m\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tx += args[0];\n\t\t\t\t\ty += args[1];\n\t\t\t\t\tthis.moveTo(x, y);\n\n\t\t\t\t\tfor (let i = 2; i < args.length; i += 2) {\n\t\t\t\t\t\tx += args[i];\n\t\t\t\t\t\ty += args[i + 1];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"L\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 2) {\n\t\t\t\t\t\tx = args[i];\n\t\t\t\t\t\ty = args[i + 1];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"l\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 2) {\n\t\t\t\t\t\tx += args[i];\n\t\t\t\t\t\ty += args[i + 1];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"H\":\n\t\t\t\t\tcheckMinArgs(name, args.length, 1);\n\t\t\t\t\tfor (let i = 0; i < args.length; ++i) {\n\t\t\t\t\t\tx = args[i];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"h\":\n\t\t\t\t\tcheckMinArgs(name, args.length, 1);\n\t\t\t\t\tfor (let i = 0; i < args.length; ++i) {\n\t\t\t\t\t\tx += args[i];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"V\":\n\t\t\t\t\tcheckMinArgs(name, args.length, 1);\n\t\t\t\t\tfor (let i = 0; i < args.length; ++i) {\n\t\t\t\t\t\ty = args[i];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"v\":\n\t\t\t\t\tcheckMinArgs(name, args.length, 1);\n\t\t\t\t\tfor (let i = 0; i < args.length; ++i) {\n\t\t\t\t\t\ty += args[i];\n\t\t\t\t\t\tthis.lineTo(x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"C\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 6);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 6) {\n\t\t\t\t\t\tconst x1 = args[i];\n\t\t\t\t\t\tconst y1 = args[i + 1];\n\t\t\t\t\t\tcpx = args[i + 2];\n\t\t\t\t\t\tcpy = args[i + 3];\n\t\t\t\t\t\tx = args[i + 4];\n\t\t\t\t\t\ty = args[i + 5];\n\t\t\t\t\t\tthis.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"c\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 6);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 6) {\n\t\t\t\t\t\tconst x1 = args[i] + x;\n\t\t\t\t\t\tconst y1 = args[i + 1] + y;\n\t\t\t\t\t\tcpx = args[i + 2] + x;\n\t\t\t\t\t\tcpy = args[i + 3] + y;\n\t\t\t\t\t\tx += args[i + 4];\n\t\t\t\t\t\ty += args[i + 5];\n\t\t\t\t\t\tthis.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"S\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 4);\n\t\t\t\t\tif (cpx === null || cpy === null) {\n\t\t\t\t\t\tcpx = x;\n\t\t\t\t\t\tcpy = y;\n\t\t\t\t\t}\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 4) {\n\t\t\t\t\t\tconst x1 = 2 * x - cpx;\n\t\t\t\t\t\tconst y1 = 2 * y - cpy;\n\t\t\t\t\t\tcpx = args[i];\n\t\t\t\t\t\tcpy = args[i + 1];\n\t\t\t\t\t\tx = args[i + 2];\n\t\t\t\t\t\ty = args[i + 3];\n\t\t\t\t\t\tthis.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"s\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 4);\n\t\t\t\t\tif (cpx === null || cpy === null) {\n\t\t\t\t\t\tcpx = x;\n\t\t\t\t\t\tcpy = y;\n\t\t\t\t\t}\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 4) {\n\t\t\t\t\t\tconst x1 = 2 * x - cpx;\n\t\t\t\t\t\tconst y1 = 2 * y - cpy;\n\t\t\t\t\t\tcpx = args[i] + x;\n\t\t\t\t\t\tcpy = args[i + 1] + y;\n\t\t\t\t\t\tx += args[i + 2];\n\t\t\t\t\t\ty += args[i + 3];\n\t\t\t\t\t\tthis.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"Q\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 4);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 4) {\n\t\t\t\t\t\tqcpx = args[i];\n\t\t\t\t\t\tqcpy = args[i + 1];\n\t\t\t\t\t\tx = args[i + 2];\n\t\t\t\t\t\ty = args[i + 3];\n\t\t\t\t\t\tthis.quadraticCurveTo(qcpx, qcpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"q\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 4);\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 4) {\n\t\t\t\t\t\tqcpx = args[i] + x;\n\t\t\t\t\t\tqcpy = args[i + 1] + y;\n\t\t\t\t\t\tx += args[i + 2];\n\t\t\t\t\t\ty += args[i + 3];\n\t\t\t\t\t\tthis.quadraticCurveTo(qcpx, qcpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"T\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tif (qcpx === null || qcpy === null) {\n\t\t\t\t\t\tqcpx = x;\n\t\t\t\t\t\tqcpy = y;\n\t\t\t\t\t}\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 2) {\n\t\t\t\t\t\tqcpx = 2 * x - qcpx;\n\t\t\t\t\t\tqcpy = 2 * y - qcpy;\n\t\t\t\t\t\tx = args[i];\n\t\t\t\t\t\ty = args[i + 1];\n\t\t\t\t\t\tthis.quadraticCurveTo(qcpx, qcpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"t\":\n\t\t\t\t\tcheckEvenArgs(name, args.length, 2);\n\t\t\t\t\tif (qcpx === null || qcpy === null) {\n\t\t\t\t\t\tqcpx = x;\n\t\t\t\t\t\tqcpy = y;\n\t\t\t\t\t}\n\t\t\t\t\tfor (let i = 0; i < args.length; i += 2) {\n\t\t\t\t\t\tqcpx = 2 * x - qcpx;\n\t\t\t\t\t\tqcpy = 2 * y - qcpy;\n\t\t\t\t\t\tx += args[i];\n\t\t\t\t\t\ty += args[i + 1];\n\t\t\t\t\t\tthis.quadraticCurveTo(qcpx, qcpy, x, y);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"A\":\n\t\t\t\tcase \"a\":\n\t\t\t\t\tthrow new Error(\"'\" + name + \"' command is not supported\")\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"Z\":\n\t\t\t\tcase \"z\":\n\t\t\t\t\tcheckArgs(name, args.length, 0);\n\t\t\t\t\tthis.closePath();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tpublic _runPath(context: CanvasRenderingContext2D): void {\n\t\tcontext.beginPath();\n\n\t\t$array.each(this._operations, (op) => {\n\t\t\top.path(context);\n\t\t});\n\t}\n\n\tprotected _render(parentLayer: CanvasLayer): void {\n\t\tsuper._render(parentLayer);\n\n\t\tconst layer = this._layer || parentLayer;\n\n\t\tconst layerDirty = layer.dirty;\n\t\tconst interactive = this._isInteractive();\n\n\t\t// if (this.targetLayer) {\n\t\t// \tconsole.log(this._operations, layer)\n\t\t// }\n\n\t\tif (layerDirty || interactive) {\n\t\t\tconst context = layer.context;\n\t\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t\tif (layerDirty) {\n\t\t\t\tcontext.globalCompositeOperation = this.blendMode;\n\n\t\t\t\tcontext.beginPath();\n\t\t\t}\n\n\t\t\tlet color: string | undefined;\n\n\t\t\tif (interactive) {\n\t\t\t\tghostContext.beginPath();\n\t\t\t\tcolor = this._getColorId();\n\t\t\t}\n\n\t\t\t$array.each(this._operations, (op) => {\n\t\t\t\tif (layerDirty) {\n\t\t\t\t\top.path(context);\n\t\t\t\t\top.colorize(context, undefined);\n\t\t\t\t}\n\n\t\t\t\tif (interactive) {\n\t\t\t\t\top.path(ghostContext);\n\t\t\t\t\top.colorize(ghostContext, color);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic renderDetached(context: CanvasRenderingContext2D): void {\n\t\tif (this.visible) {\n\t\t\tthis._setMatrix();\n\n\t\t\tcontext.save();\n\n\t\t\t// We must apply the mask before we transform the element\n\t\t\tconst mask = this.mask;\n\t\t\tif (mask) {\n\t\t\t\tmask._setMatrix();\n\t\t\t\tmask._transform(context, 1);\n\t\t\t\tmask._runPath(context);\n\t\t\t\tcontext.clip();\n\t\t\t}\n\n\t\t\t// TODO handle compoundAlpha somehow ?\n\t\t\tcontext.globalAlpha = this.compoundAlpha * this.alpha;\n\n\t\t\tthis._transform(context, 1);\n\n\t\t\tif (this.filter) {\n\t\t\t\tcontext.filter = this.filter;\n\t\t\t}\n\n\t\t\tcontext.globalCompositeOperation = this.blendMode;\n\n\t\t\tcontext.beginPath();\n\n\t\t\t$array.each(this._operations, (op) => {\n\t\t\t\top.path(context);\n\t\t\t\top.colorize(context, undefined);\n\t\t\t});\n\n\t\t\tcontext.restore();\n\t\t}\n\t}\n\n\tpublic _addBounds(bounds: IBounds): void {\n\t\tif (this.visible && this.isMeasured) {\n\t\t\t$array.each(this._operations, (op) => {\n\t\t\t\top.addBounds(bounds);\n\t\t\t});\n\t\t}\n\t}\n}\n\n/**\n * @ignore\n */\ninterface ILineChunk {\n\tstyle: string | undefined,\n\tfill: Color | undefined,\n\ttext: string,\n\twidth: number,\n\theight: number,\n\tleft: number,\n\tright: number,\n\tascent: number,\n\toffsetX: number,\n\toffsetY: number,\n}\n\n/**\n * @ignore\n */\ninterface ILine {\n\toffsetY: number,\n\tascent: number,\n\twidth: number,\n\theight: number,\n\tleft: number,\n\tright: number,\n\ttextChunks: Array<ILineChunk>,\n}\n\n/**\n * @ignore\n */\nexport class CanvasText extends CanvasContainer implements IText {\n\tpublic text: string;\n\tpublic style: CanvasTextStyle;\n\tpublic resolution: number = 1;\n\n\tprotected _textInfo: Array<ILine> | undefined;\n\tprotected _textVisible: boolean = true;\n\tprotected _originalScale?: number = 1;\n\n\tconstructor(renderer: CanvasRenderer, text: string, style: CanvasTextStyle) {\n\t\tsuper(renderer);\n\t\tthis.text = text;\n\t\tthis.style = style;\n\t}\n\n\tpublic invalidateBounds(): void {\n\t\tsuper.invalidateBounds();\n\t\tthis._textInfo = undefined;\n\t}\n\n\tprivate _shared(context: CanvasRenderingContext2D) {\n\t\tif (this.style.textAlign) {\n\t\t\tcontext.textAlign = this.style.textAlign;\n\t\t}\n\n\t\tif (this.style.direction) {\n\t\t\tcontext.direction = this.style.direction;\n\t\t}\n\n\t\tif (this.style.textBaseline) {\n\t\t\tcontext.textBaseline = this.style.textBaseline;\n\t\t}\n\n\t}\n\n\tprotected _prerender(layer: CanvasLayer, ignoreGhost = false, ignoreFontWeight = false): void {\n\t\tsuper._render(layer);\n\n\t\tconst context = layer.context;\n\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t// Font style\n\n\t\tconst style = this.style;\n\t\tlet fontStyle = this._getFontStyle(undefined, ignoreFontWeight);\n\n\t\tcontext.font = fontStyle;\n\t\tif (this._isInteractive() && !ignoreGhost) {\n\t\t\tghostContext.font = fontStyle;\n\t\t}\n\n\t\t// Other parameters\n\t\tif (style.fill) {\n\t\t\tif (style.fill instanceof Color) {\n\t\t\t\tcontext.fillStyle = style.fill.toCSS();\n\t\t\t} else {\n\t\t\t\tcontext.fillStyle = style.fill;\n\t\t\t}\n\t\t}\n\n\t\tif (style.shadowColor) {\n\t\t\tlayer.context.shadowColor = style.shadowColor.toCSS(style.shadowOpacity || 1);\n\t\t}\n\t\tif (style.shadowBlur) {\n\t\t\tlayer.context.shadowBlur = style.shadowBlur;\n\t\t}\n\t\tif (style.shadowOffsetX) {\n\t\t\tlayer.context.shadowOffsetX = style.shadowOffsetX;\n\t\t}\n\t\tif (style.shadowOffsetY) {\n\t\t\tlayer.context.shadowOffsetY = style.shadowOffsetY;\n\t\t}\n\n\t\tthis._shared(context);\n\n\t\tif (this._isInteractive() && !ignoreGhost) {\n\t\t\tghostContext.fillStyle = this._getColorId();\n\t\t\tthis._shared(ghostContext);\n\t\t}\n\t}\n\n\tprotected _getFontStyle(style2?: ITextStyle, ignoreFontWeight = false): string {\n\n\t\t// Process defaults\n\t\tconst style = this.style;\n\t\tlet fontStyle: string[] = [];\n\n\t\tif (style2 && style2.fontVariant) {\n\t\t\tfontStyle.push(style2.fontVariant);\n\t\t}\n\t\telse if (style.fontVariant) {\n\t\t\tfontStyle.push(style.fontVariant);\n\t\t}\n\n\t\tif (!ignoreFontWeight) {\n\t\t\tif (style2 && style2.fontWeight) {\n\t\t\t\tfontStyle.push(style2.fontWeight);\n\t\t\t}\n\t\t\telse if (style.fontWeight) {\n\t\t\t\tfontStyle.push(style.fontWeight);\n\t\t\t}\n\t\t}\n\n\t\tif (style2 && style2.fontStyle) {\n\t\t\tfontStyle.push(style2.fontStyle);\n\t\t}\n\t\telse if (style.fontStyle) {\n\t\t\tfontStyle.push(style.fontStyle);\n\t\t}\n\n\t\tif (style2 && style2.fontSize) {\n\t\t\tif ($type.isNumber(style2.fontSize)) {\n\t\t\t\tstyle2.fontSize = style2.fontSize + \"px\";\n\t\t\t}\n\t\t\tfontStyle.push(style2.fontSize);\n\t\t}\n\t\telse if (style.fontSize) {\n\t\t\tif ($type.isNumber(style.fontSize)) {\n\t\t\t\tstyle.fontSize = style.fontSize + \"px\";\n\t\t\t}\n\t\t\tfontStyle.push(style.fontSize);\n\t\t}\n\n\t\tif (style2 && style2.fontFamily) {\n\t\t\tfontStyle.push(style2.fontFamily);\n\t\t}\n\t\telse if (style.fontFamily) {\n\t\t\tfontStyle.push(style.fontFamily);\n\t\t}\n\t\telse if (fontStyle.length) {\n\t\t\tfontStyle.push(\"Arial\");\n\t\t}\n\n\t\treturn fontStyle.join(\" \");\n\t}\n\n\tprotected _render(parentLayer: CanvasLayer): void {\n\t\tconst layer = this._layer || parentLayer;\n\n\t\t// We need measurements in order to properly position text for alignment\n\t\tif (!this._textInfo) {\n\t\t\tthis._measure(layer);\n\t\t}\n\n\t\tif (this._textVisible) {\n\n\t\t\tconst interactive = this._isInteractive();\n\t\t\tconst context = layer.context;\n\t\t\tconst layerDirty = layer.dirty;\n\t\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t\tcontext.save();\n\t\t\tghostContext.save();\n\t\t\tthis._prerender(layer);\n\n\t\t\t// const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\n\t\t\t// const x = this._localBounds && (this._localBounds.left < 0) ? Math.abs(this._localBounds.left) : 0;\n\n\n\n\t\t\t// Process text info produced by _measure()\n\t\t\t$array.each(this._textInfo!, (line, _index) => {\n\t\t\t\t$array.each(line.textChunks, (chunk, _index) => {\n\n\t\t\t\t\t// Set style\n\t\t\t\t\tif (chunk.style) {\n\t\t\t\t\t\tcontext.save();\n\t\t\t\t\t\tghostContext.save();\n\n\t\t\t\t\t\tcontext.font = chunk.style;\n\t\t\t\t\t\tif (this._isInteractive()) {\n\t\t\t\t\t\t\tghostContext.font = chunk.style;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chunk.fill) {\n\t\t\t\t\t\tcontext.save();\n\t\t\t\t\t\tcontext.fillStyle = chunk.fill.toCSS();\n\t\t\t\t\t\t// Color does not affect ghostContext so we not set it\n\t\t\t\t\t}\n\n\t\t\t\t\t// Draw text\n\t\t\t\t\tif (layerDirty) {\n\t\t\t\t\t\tcontext.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (interactive && this.interactive) {\n\t\t\t\t\t\t// Draw text in ghost canvas ONLY if it is set as interactive\n\t\t\t\t\t\t// explicitly. This way we avoid hit test anomalies caused by anti\n\t\t\t\t\t\t// aliasing of text.\n\t\t\t\t\t\tghostContext.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chunk.fill) {\n\t\t\t\t\t\tcontext.restore();\n\t\t\t\t\t\t// Color does not affect ghostContext so we not set it\n\t\t\t\t\t}\n\n\t\t\t\t\t// Reset style\n\t\t\t\t\tif (chunk.style) {\n\t\t\t\t\t\tcontext.restore();\n\t\t\t\t\t\tghostContext.restore();\n\t\t\t\t\t}\n\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tcontext.restore();\n\t\t\tghostContext.restore();\n\t\t}\n\t}\n\n\tpublic _addBounds(bounds: IBounds): void {\n\t\tif (this.visible && this.isMeasured) {\n\t\t\t//if (this._textVisible) {\n\t\t\tconst x = this._measure(this.getLayer());\n\t\t\tsetPoint(bounds, { x: x.left, y: x.top });\n\t\t\tsetPoint(bounds, { x: x.right, y: x.bottom });\n\t\t\t//}\n\t\t}\n\t}\n\n\tpublic _measure(layer: CanvasLayer): IBounds {\n\t\tconst context = layer.context;\n\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t// Reset text info\n\t\tthis._textInfo = [];\n\n\t\t// Init\n\t\tconst oversizedBehavior = this.style.oversizedBehavior;\n\t\tconst maxWidth = this.style.maxWidth!;\n\t\tconst truncate = maxWidth && oversizedBehavior == \"truncate\";\n\t\tconst wrap = maxWidth && oversizedBehavior == \"wrap\";\n\n\t\t// Pre-render\n\t\tcontext.save();\n\t\tghostContext.save();\n\t\tthis._prerender(layer, true, true);\n\n\t\t// Get default font metrix\n\t\tconst refText = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 \";\n\n\t\t// Split up text into lines\n\t\tconst lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\n\t\tlet styleRestored = true;\n\t\tlet minX = 0;\n\t\tlet maxX = 0;\n\n\t\t// Iterate through the lines\n\t\tlet offsetY = 0;\n\t\t$array.each(lines, (line, _index) => {\n\n\t\t\t// Split up line into format/value chunks\n\t\t\tlet chunks: ITextChunk[];\n\t\t\tif (line == \"\") {\n\t\t\t\tchunks = [{\n\t\t\t\t\ttype: \"value\",\n\t\t\t\t\ttext: \"\"\n\t\t\t\t}];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tchunks = TextFormatter.chunk(line, false, this.style.ignoreFormatting);\n\t\t\t}\n\n\t\t\twhile (chunks.length > 0) {\n\n\t\t\t\t// Init line object\n\t\t\t\tlet lineInfo: ILine = {\n\t\t\t\t\toffsetY: offsetY,\n\t\t\t\t\tascent: 0,\n\t\t\t\t\twidth: 0,\n\t\t\t\t\theight: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: 0,\n\t\t\t\t\ttextChunks: []\n\t\t\t\t};\n\n\t\t\t\t// Measure reference text\n\t\t\t\tconst metrics = this._measureText(refText, context);\n\n\t\t\t\tconst height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n\t\t\t\tlineInfo.height = height;\n\t\t\t\tlineInfo.ascent = metrics.actualBoundingBoxAscent;\n\n\t\t\t\tlet currentStyle: string | undefined;\n\t\t\t\tlet currentFormat: string;\n\t\t\t\tlet currentFill: Color | undefined;\n\t\t\t\tlet currentChunkWidth: number | undefined;\n\t\t\t\tlet skipFurtherText = false;\n\t\t\t\tlet firstTextChunk = true;\n\t\t\t\tlet leftoverChunks: Array<ITextChunk> = [];\n\t\t\t\t//let offsetX = 0;\n\t\t\t\t//let chunk;\n\n\t\t\t\t//while(chunk = chunks.shift()) {\n\t\t\t\t$array.eachContinue(chunks, (chunk, index) => {\n\n\t\t\t\t\t// Format chunk\n\t\t\t\t\tif (chunk.type == \"format\") {\n\t\t\t\t\t\tif (chunk.text == \"[/]\") {\n\t\t\t\t\t\t\tif (!styleRestored) {\n\t\t\t\t\t\t\t\tcontext.restore();\n\t\t\t\t\t\t\t\tghostContext.restore();\n\t\t\t\t\t\t\t\tstyleRestored = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcurrentFill = undefined;\n\t\t\t\t\t\t\tcurrentStyle = undefined;\n\t\t\t\t\t\t\tcurrentChunkWidth = undefined;\n\t\t\t\t\t\t\tcurrentFormat = chunk.text;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\n\t\t\t\t\t\t\tif (!styleRestored) {\n\t\t\t\t\t\t\t\tcontext.restore();\n\t\t\t\t\t\t\t\tghostContext.restore();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet format = TextFormatter.getTextStyle(chunk.text);\n\t\t\t\t\t\t\tconst fontStyle = this._getFontStyle(format);\n\t\t\t\t\t\t\tcontext.save();\n\t\t\t\t\t\t\tghostContext.save();\n\t\t\t\t\t\t\tcontext.font = fontStyle;\n\t\t\t\t\t\t\tcurrentStyle = fontStyle;\n\t\t\t\t\t\t\tcurrentFormat = chunk.text;\n\t\t\t\t\t\t\tif (format.fill) {\n\t\t\t\t\t\t\t\tcurrentFill = <Color>format.fill;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ((<any>format).width) {\n\t\t\t\t\t\t\t\tcurrentChunkWidth = $type.toNumber((<any>format).width);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstyleRestored = false;\n\n\t\t\t\t\t\t\t// Measure reference text after change of format\n\t\t\t\t\t\t\tconst metrics = this._measureText(refText, context);\n\t\t\t\t\t\t\tconst height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n\t\t\t\t\t\t\tif (height > lineInfo.height) {\n\t\t\t\t\t\t\t\tlineInfo.height = height;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\n\t\t\t\t\t\t\t\tlineInfo.ascent = metrics.actualBoundingBoxAscent;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Text chunk\n\t\t\t\t\telse if (chunk.type == \"value\" && !skipFurtherText) {\n\n\t\t\t\t\t\t// Measure\n\t\t\t\t\t\tconst metrics = this._measureText(chunk.text.replace(/ /g, \".\"), context);\n\t\t\t\t\t\tlet chunkWidth = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\n\n\t\t\t\t\t\t// Check for fit\n\t\t\t\t\t\tif (truncate) {\n\n\t\t\t\t\t\t\t// Break words?\n\t\t\t\t\t\t\tlet breakWords = firstTextChunk || this.style.breakWords || false;\n\n\t\t\t\t\t\t\t// Measure ellipsis and check if it fits\n\t\t\t\t\t\t\tconst ellipsis = this.style.ellipsis || \"\";\n\t\t\t\t\t\t\tconst ellipsisMetrics = this._measureText(ellipsis, context);\n\t\t\t\t\t\t\tconst ellipsisWidth = ellipsisMetrics.actualBoundingBoxLeft + ellipsisMetrics.actualBoundingBoxRight;\n\n\t\t\t\t\t\t\t// Check fit\n\t\t\t\t\t\t\tif ((lineInfo.width + chunkWidth) > maxWidth) {\n\t\t\t\t\t\t\t\tconst excessWidth = maxWidth - lineInfo.width - ellipsisWidth;\n\t\t\t\t\t\t\t\tchunk.text = this._truncateText(context, chunk.text, excessWidth, breakWords);\n\t\t\t\t\t\t\t\tchunk.text += ellipsis;\n\t\t\t\t\t\t\t\tskipFurtherText = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (wrap) {\n\n\t\t\t\t\t\t\t// Check fit\n\t\t\t\t\t\t\tif ((lineInfo.width + chunkWidth) > maxWidth) {\n\t\t\t\t\t\t\t\tconst excessWidth = maxWidth - lineInfo.width;\n\t\t\t\t\t\t\t\tconst tmpText = this._truncateText(context, chunk.text, excessWidth, false, firstTextChunk);\n\t\t\t\t\t\t\t\t//skipFurtherText = true;\n\n\t\t\t\t\t\t\t\t//Add remaining chunks for the next line\n\t\t\t\t\t\t\t\tleftoverChunks = chunks.slice(index + 1);\n\n\t\t\t\t\t\t\t\t//Add remaining text of current chunk if it was forced-cut\n\t\t\t\t\t\t\t\tif ($utils.trim(tmpText) != $utils.trim(chunk.text)) {\n\t\t\t\t\t\t\t\t\tleftoverChunks.unshift({\n\t\t\t\t\t\t\t\t\t\ttype: \"value\",\n\t\t\t\t\t\t\t\t\t\ttext: chunk.text.substr(tmpText.length)\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tif (currentFormat) {\n\t\t\t\t\t\t\t\t\t\tleftoverChunks.unshift({\n\t\t\t\t\t\t\t\t\t\t\ttype: \"format\",\n\t\t\t\t\t\t\t\t\t\t\ttext: currentFormat\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Set current chunk (truncated)\n\t\t\t\t\t\t\t\tchunk.text = tmpText;\n\n\t\t\t\t\t\t\t\tchunks = [];\n\t\t\t\t\t\t\t\tskipFurtherText = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\n\n\t\t\t\t\t\t// Chunk width?\n\t\t\t\t\t\tlet leftBoundMod = 1;\n\t\t\t\t\t\tlet rightBoundMod = 1;\n\t\t\t\t\t\tif (currentStyle && currentChunkWidth && (currentChunkWidth > chunkWidth)) {\n\t\t\t\t\t\t\t// increase horizontal bounding boxes accordingly\n\t\t\t\t\t\t\tconst boundsMod = chunkWidth / currentChunkWidth\n\t\t\t\t\t\t\tswitch (this.style.textAlign) {\n\t\t\t\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\t\t\tcase \"end\":\n\t\t\t\t\t\t\t\t\tleftBoundMod = boundsMod;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\t\t\t\tleftBoundMod = boundsMod;\n\t\t\t\t\t\t\t\t\trightBoundMod = boundsMod;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\trightBoundMod = boundsMod;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchunkWidth = currentChunkWidth;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst chunkHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n\n\n\t\t\t\t\t\tif (chunkHeight > lineInfo.height) {\n\t\t\t\t\t\t\tlineInfo.height = chunkHeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\n\t\t\t\t\t\t\tlineInfo.ascent = metrics.actualBoundingBoxAscent;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlineInfo.width += chunkWidth;\n\t\t\t\t\t\tlineInfo.left += metrics.actualBoundingBoxLeft / leftBoundMod;\n\t\t\t\t\t\tlineInfo.right += metrics.actualBoundingBoxRight / rightBoundMod;\n\t\t\t\t\t\tlineInfo.textChunks.push({\n\t\t\t\t\t\t\tstyle: currentStyle,\n\t\t\t\t\t\t\tfill: currentFill,\n\t\t\t\t\t\t\ttext: chunk.text,\n\t\t\t\t\t\t\twidth: chunkWidth,\n\t\t\t\t\t\t\theight: chunkHeight,\n\t\t\t\t\t\t\tleft: metrics.actualBoundingBoxLeft,\n\t\t\t\t\t\t\tright: metrics.actualBoundingBoxRight,\n\t\t\t\t\t\t\tascent: metrics.actualBoundingBoxAscent,\n\t\t\t\t\t\t\toffsetX: 0,\n\t\t\t\t\t\t\toffsetY: 0\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t//offsetX += chunkWidth;\n\n\t\t\t\t\t\tfirstTextChunk = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif (leftoverChunks) {\n\t\t\t\t\t\t//return false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t\t//}\n\t\t\t\t});\n\n\t\t\t\tif (this.style.lineHeight instanceof Percent) {\n\t\t\t\t\tlineInfo.height *= this.style.lineHeight.value;\n\t\t\t\t\tlineInfo.ascent *= this.style.lineHeight.value;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlineInfo.height *= this.style.lineHeight || 1.2;\n\t\t\t\t\tlineInfo.ascent *= this.style.lineHeight || 1.2;\n\t\t\t\t}\n\n\t\t\t\tif (minX < lineInfo.left) {\n\t\t\t\t\tminX = lineInfo.left;\n\t\t\t\t}\n\n\t\t\t\tif (maxX < lineInfo.right) {\n\t\t\t\t\tmaxX = lineInfo.right;\n\t\t\t\t}\n\n\t\t\t\tthis._textInfo!.push(lineInfo);\n\n\t\t\t\t//lineInfo.offsetY += lineInfo.ascent;\n\t\t\t\toffsetY += lineInfo.height;\n\n\t\t\t\t// Reset chunks so that it can proceed to the next line\n\t\t\t\tchunks = leftoverChunks || [];\n\t\t\t}\n\n\t\t});\n\n\t\tif (!styleRestored) {\n\t\t\tcontext.restore();\n\t\t\tghostContext.restore();\n\t\t}\n\n\t\t// Adjust chunk internal offsets\n\t\t$array.each(this._textInfo, (lineInfo, _index: number) => {\n\t\t\tlet currentChunkOffset = 0\n\t\t\t$array.each(lineInfo.textChunks, (chunk) => {\n\n\t\t\t\tchunk.offsetX = currentChunkOffset + chunk.left - lineInfo.left;\n\t\t\t\t//chunk.offsetY += Math.round(lineInfo.ascent);\n\t\t\t\tchunk.offsetY += lineInfo.height - lineInfo.height * (this.style.baselineRatio || 0.19);\n\t\t\t\t//chunk.offsetY += Math.round(lineInfo.height / 2) + ((lineInfo.height - chunk.height) / 2);\n\t\t\t\t//console.log(chunk.text, chunk.ascent, lineInfo.ascent)\n\t\t\t\t//chunk.offsetY += Math.round((lineInfo.height - chunk.height + (lineInfo.ascent - chunk.ascent)) / 2);\n\t\t\t\t//chunk.offsetY -= Math.round((lineInfo.height - chunk.height + (lineInfo.ascent - chunk.ascent)) / 2) - lineInfo.ascent / 2;\n\t\t\t\tcurrentChunkOffset += chunk.width;\n\t\t\t});\n\t\t});\n\n\t\tconst bounds = {\n\t\t\tleft: -minX,\n\t\t\ttop: 0,\n\t\t\tright: maxX,\n\t\t\tbottom: offsetY,\n\t\t};\n\n\t\t// We need to fit?\n\t\tif (oversizedBehavior !== \"none\") {\n\t\t\tconst ratio = this._fitRatio(bounds);\n\t\t\tif (ratio < 1) {\n\t\t\t\tif (oversizedBehavior == \"fit\") {\n\t\t\t\t\tif ($type.isNumber(this.style.minScale) && (ratio < this.style.minScale)) {\n\t\t\t\t\t\tthis._textVisible = false;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (!this._originalScale || this._originalScale == 1) {\n\t\t\t\t\t\t\tthis._originalScale = this.scale;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.scale = ratio;\n\t\t\t\t\t\tthis._textVisible = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (oversizedBehavior == \"hide\") {\n\t\t\t\t\tthis._textVisible = false;\n\t\t\t\t}\n\t\t\t\telse {\n\n\t\t\t\t\tswitch (this.style.textAlign) {\n\t\t\t\t\t\tcase \"right\":\n\t\t\t\t\t\tcase \"end\":\n\t\t\t\t\t\t\tbounds.left = maxWidth;\n\t\t\t\t\t\t\tbounds.right = 0;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"center\":\n\t\t\t\t\t\t\tbounds.left = -maxWidth / 2;\n\t\t\t\t\t\t\tbounds.right = maxWidth / 2;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tbounds.left = 0;\n\t\t\t\t\t\t\tbounds.right = maxWidth;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.scale = this._originalScale || 1;\n\t\t\t\t\tthis._originalScale = undefined;\n\t\t\t\t\tthis._textVisible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.scale = this._originalScale || 1;\n\t\t\t\tthis._originalScale = undefined;\n\t\t\t\tthis._textVisible = true;\n\t\t\t}\n\t\t}\n\n\t\tcontext.restore();\n\t\tghostContext.restore();\n\n\t\treturn bounds;\n\t}\n\n\tprotected _fitRatio(bounds: IBounds): number {\n\t\tconst maxW = this.style.maxWidth;\n\t\tconst maxH = this.style.maxHeight;\n\t\tif (!maxW && !maxH) {\n\t\t\treturn 1;\n\t\t}\n\t\tconst w = bounds.right - bounds.left;\n\t\tconst h = bounds.bottom - bounds.top;\n\t\treturn Math.min(maxW! / w || 1, maxH! / h || 1);\n\t}\n\n\tprotected _truncateText(context: CanvasRenderingContext2D, text: string, maxWidth: number, breakWords: boolean = false, fallbackBreakWords: boolean = true): string {\n\t\tlet width: number;\n\t\tdo {\n\t\t\tif (breakWords) {\n\t\t\t\ttext = text.slice(0, -1);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet tmp = text.replace(/[^,;:!?\\\\\\/\\.\\s]+[,;:!?\\\\\\/\\.\\s]*$/g, \"\");\n\t\t\t\tif (tmp == \"\" && fallbackBreakWords) {\n\t\t\t\t\tbreakWords = true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttext = tmp;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst metrics = this._measureText(text, context);\n\t\t\twidth = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\n\t\t} while ((width > maxWidth) && text != \"\");\n\t\treturn text;\n\t}\n\n\tprotected _measureText(text: string, context: CanvasRenderingContext2D): TextMetrics {\n\t\tlet metrics = context.measureText(text);\n\t\tif (metrics.actualBoundingBoxAscent == null) {\n\t\t\tconst div = document.createElement(\"div\");\n\t\t\tdiv.innerText = text;\n\t\t\tdiv.style.visibility = \"hidden\";\n\t\t\tdiv.style.position = \"absolute\";\n\t\t\tdiv.style.top = \"-1000000px;\"\n\t\t\tdiv.style.fontFamily = this.style.fontFamily || \"\";\n\t\t\tdiv.style.fontSize = this.style.fontSize + \"\";\n\t\t\tdocument.body.appendChild(div);\n\t\t\tconst bbox = div.getBoundingClientRect();\n\t\t\tdocument.body.removeChild(div);\n\t\t\tconst h = bbox.height;\n\t\t\tconst w = metrics.width;\n\t\t\tlet left = 0;\n\t\t\tlet right = w;\n\t\t\tswitch (this.style.textAlign) {\n\t\t\t\tcase \"right\":\n\t\t\t\tcase \"end\":\n\t\t\t\t\tleft = -w;\n\t\t\t\t\tright = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"center\":\n\t\t\t\t\tleft = -w / 2;\n\t\t\t\t\tright = w / 2;\n\t\t\t}\n\t\t\tlet fake = {\n\t\t\t\tactualBoundingBoxAscent: h,\n\t\t\t\tactualBoundingBoxDescent: 0,\n\t\t\t\tactualBoundingBoxLeft: left,\n\t\t\t\tactualBoundingBoxRight: right,\n\t\t\t\twidth: w\n\t\t\t}\n\t\t\treturn fake;\n\t\t}\n\t\treturn metrics;\n\t}\n\n}\n\n/**\n * @ignore\n */\nexport class CanvasTextStyle implements ITextStyle {\n\t//public wordWrapWidth: number = 100;\n\tpublic fill?: Color | CanvasGradient | CanvasPattern;\n\tpublic textAlign?: \"start\" | \"end\" | \"left\" | \"right\" | \"center\";\n\tpublic fontFamily?: string;\n\tpublic fontSize?: string | number;\n\tpublic fontWeight?: 'normal' | 'bold' | 'bolder' | 'lighter' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900'\n\tpublic fontStyle?: 'normal' | 'italic' | 'oblique';\n\tpublic fontVariant?: \"normal\" | \"small-caps\";\n\tpublic shadowColor?: Color | null;\n\tpublic shadowBlur?: number;\n\tpublic shadowOffsetX?: number;\n\tpublic shadowOffsetY?: number;\n\tpublic shadowOpacity?: number;\n\t// leading?: number;\n\t// letterSpacing?: number;\n\tpublic lineHeight?: number | Percent = percent(120);\n\tpublic baselineRatio?: number = 0.19;\n\t// padding?: number;\n\t// stroke?: number;\n\t// strokeThickness?: number;\n\t// trim?: number;\n\t// wordWrap?: boolean;\n\tpublic direction?: \"ltr\" | \"rtl\";\n\tpublic textBaseline?: \"top\" | \"hanging\" | \"middle\" | \"alphabetic\" | \"ideographic\" | \"bottom\";\n\tpublic oversizedBehavior?: \"none\" | \"hide\" | \"fit\" | \"wrap\" | \"truncate\" = \"none\";\n\tpublic breakWords?: boolean = false;\n\tpublic ellipsis?: string = \"…\";\n\tpublic maxWidth?: number;\n\tpublic maxHeight?: number;\n\tpublic minScale?: number;\n\tpublic ignoreFormatting?: boolean = false;\n}\n\n/**\n * @ignore\n */\nexport class CanvasRadialText extends CanvasText implements IRadialText {\n\tpublic textType?: \"regular\" | \"circular\" | \"radial\" | \"aligned\" | \"adjusted\" = \"circular\";\n\tpublic radius?: number;\n\tpublic startAngle?: number;\n\tpublic inside?: boolean = false;\n\tpublic orientation?: \"inward\" | \"outward\" | \"auto\" = \"auto\";\n\tpublic kerning?: number = 0;\n\n\tprivate _textReversed: boolean = false;\n\n\tpublic _render(parentLayer: CanvasLayer): void {\n\t\tswitch (this.textType) {\n\t\t\tcase \"circular\":\n\t\t\t\tthis._renderCircular(parentLayer);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tsuper._render(parentLayer);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tpublic _renderCircular(parentLayer: CanvasLayer): void {\n\t\tconst layer = this._layer || parentLayer;\n\n\t\tthis._prerender(layer);\n\n\t\tconst interactive = this._isInteractive();\n\t\tconst context = layer.context;\n\t\tconst layerDirty = layer.dirty;\n\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t// Savepoint\n\t\tcontext.save();\n\t\tif (interactive) {\n\t\t\tghostContext.save();\n\t\t}\n\n\t\t// Init\n\t\tlet radius = (this.radius || 0);\n\t\tlet startAngle = (this.startAngle || 0);\n\t\tlet deltaAngle = 0;\n\t\tlet orientation = this.orientation;\n\t\tlet inward = orientation == \"auto\" ? \"auto\" : orientation == \"inward\";\n\t\tconst inside = this.inside;\n\t\tconst align = this.style.textAlign || \"left\";\n\t\tconst kerning = this.kerning || 0;\n\t\tlet clockwise = align == \"left\" ? 1 : -1;\n\t\tconst shouldReverse = !this._textReversed;\n\n\t\t// We need measurements in order to properly position text for alignment\n\t\tif (!this._textInfo) {\n\t\t\tthis._measure(layer);\n\t\t}\n\n\t\t// Check if we need to invert the whole stuff\n\t\tif (inward == \"auto\") {\n\t\t\t// Calc max angle so we know whether we need to flip it\n\t\t\tlet maxAngle = 0;\n\t\t\tlet midAngle = 0;\n\t\t\t$array.each(this._textInfo!, (line, _index) => {\n\t\t\t\tconst deltaAngle = startAngle + (line.width / (radius - line.height)) / 2 * -clockwise;\n\t\t\t\tif (deltaAngle > maxAngle) {\n\t\t\t\t\tmaxAngle = deltaAngle;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (align == \"left\") {\n\t\t\t\tmidAngle = (maxAngle + deltaAngle / 2) * $math.DEGREES;\n\t\t\t}\n\t\t\telse if (align == \"right\") {\n\t\t\t\tmidAngle = (maxAngle - deltaAngle / 2) * $math.DEGREES;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmidAngle = startAngle * $math.DEGREES;\n\t\t\t}\n\t\t\tmidAngle = $math.normalizeAngle(midAngle);\n\t\t\tinward = (midAngle >= 270) || (midAngle <= 90);\n\t\t}\n\n\t\tif (inward == true && shouldReverse) {\n\t\t\tthis._textInfo!.reverse();\n\t\t\tthis._textReversed = true;\n\t\t}\n\n\t\t// if ((inward == false && align == \"left\") || (inward == true && align == \"right\")) {\n\t\t// \tclockwise *= -1;\n\t\t// }\n\n\t\t// Process text info produced by _measure()\n\t\t$array.each(this._textInfo!, (line, _index) => {\n\n\t\t\tconst textHeight = line.height;\n\n\t\t\t// Adjust radius for inside text\n\t\t\tif (!inside) {\n\t\t\t\tradius += textHeight;\n\t\t\t}\n\n\t\t\t// Reverse letters if we're painting them counter-clockwise\n\t\t\tif (((clockwise == -1 && inward) || (clockwise == 1 && !inward)) && shouldReverse) {\n\t\t\t\tline.textChunks.reverse();\n\t\t\t}\n\n\t\t\t// Init angles\n\t\t\tlet lineStartAngle = startAngle;\n\t\t\tdeltaAngle = 0;\n\n\t\t\t// Adjust for center-align\n\t\t\tif (align == \"center\") {\n\t\t\t\tlineStartAngle += (line.width / (radius - textHeight)) / 2 * -clockwise;\n\t\t\t\tdeltaAngle = lineStartAngle - startAngle;\n\t\t\t}\n\n\t\t\t// if (inward == \"auto\") {\n\t\t\t// \tlet midAngle;\n\t\t\t// \tif (align == \"left\") {\n\t\t\t// \t\tmidAngle = (lineStartAngle + deltaAngle / 2) * $math.DEGREES;\n\t\t\t// \t}\n\t\t\t// \telse if () {\n\t\t\t// \t\tmidAngle = (lineStartAngle - deltaAngle / 2) * $math.DEGREES;\n\t\t\t// \t}\n\t\t\t// \tinward = (midAngle >= 270) || (midAngle <= 90);\n\t\t\t// }\n\n\t\t\t// Rotate letters if they are facing outward\n\t\t\tlineStartAngle += (Math.PI * (inward ? 0 : 1)); // Rotate 180 if outward\n\n\t\t\t// Savepoint\n\t\t\tcontext.save();\n\t\t\tif (interactive) {\n\t\t\t\tghostContext.save();\n\t\t\t}\n\n\t\t\t// Assume starting angle\n\t\t\tcontext.rotate(lineStartAngle);\n\t\t\tif (interactive) {\n\t\t\t\tghostContext.rotate(lineStartAngle);\n\t\t\t}\n\n\t\t\tlet angleShift = 0;\n\t\t\t$array.each(line.textChunks, (chunk, _index) => {\n\n\t\t\t\t// Draw the letter\n\t\t\t\tconst char = chunk.text;\n\t\t\t\tconst charWidth = chunk.width;\n\n\t\t\t\t// Rotate half a letter\n\t\t\t\tangleShift = (charWidth / 2) / (radius - textHeight) * clockwise;\n\t\t\t\tcontext.rotate(angleShift);\n\t\t\t\tif (interactive) {\n\t\t\t\t\tghostContext.rotate(angleShift);\n\t\t\t\t}\n\n\t\t\t\t// Set style\n\t\t\t\tif (chunk.style) {\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tghostContext.save();\n\n\t\t\t\t\tcontext.font = chunk.style;\n\t\t\t\t\tif (interactive) {\n\t\t\t\t\t\tghostContext.font = chunk.style;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (chunk.fill) {\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.fillStyle = chunk.fill.toCSS();\n\t\t\t\t\t// Color does not affect ghostContext so we not set it\n\t\t\t\t}\n\n\t\t\t\t// Center letters\n\t\t\t\tcontext.textBaseline = \"middle\";\n\t\t\t\tcontext.textAlign = \"center\";\n\t\t\t\tif (interactive) {\n\t\t\t\t\tghostContext.textBaseline = \"middle\";\n\t\t\t\t\tghostContext.textAlign = \"center\";\n\t\t\t\t}\n\n\t\t\t\t// Plop the letter\n\t\t\t\tif (layerDirty) {\n\t\t\t\t\tcontext.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));\n\t\t\t\t}\n\t\t\t\tif (interactive) {\n\t\t\t\t\tghostContext.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));\n\t\t\t\t}\n\n\t\t\t\tif (chunk.fill) {\n\t\t\t\t\tcontext.restore();\n\t\t\t\t\t// Color does not affect ghostContext so we not set it\n\t\t\t\t}\n\n\t\t\t\t// Reset style\n\t\t\t\tif (chunk.style) {\n\t\t\t\t\tcontext.restore();\n\t\t\t\t\tghostContext.restore();\n\t\t\t\t}\n\n\t\t\t\t// Rotate half a letter and add spacing\n\t\t\t\tangleShift = (charWidth / 2 + kerning) / (radius - textHeight) * clockwise;\n\t\t\t\tcontext.rotate(angleShift);\n\t\t\t\tif (interactive) {\n\t\t\t\t\tghostContext.rotate(angleShift);\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t// Restore angle\n\t\t\tcontext.restore();\n\t\t\tif (interactive) {\n\t\t\t\tghostContext.restore();\n\t\t\t}\n\n\t\t});\n\n\t\t// Restore\n\t\tcontext.restore();\n\t\tif (interactive) {\n\t\t\tghostContext.restore();\n\t\t}\n\t}\n\n\tpublic _measure(layer: CanvasLayer): IBounds {\n\t\tswitch (this.textType) {\n\t\t\tcase \"circular\":\n\t\t\t\treturn this._measureCircular(layer);\n\t\t\tdefault:\n\t\t\t\treturn super._measure(layer);\n\t\t}\n\t}\n\n\tpublic _measureCircular(layer: CanvasLayer): IBounds {\n\t\tconst context = layer.context;\n\t\tconst ghostContext = this._renderer._ghostContext;\n\n\t\t// Reset text info\n\t\tthis._textInfo = [];\n\t\tthis._textReversed = false;\n\n\t\t// Pre-render\n\t\tcontext.save();\n\t\tghostContext.save();\n\t\tthis._prerender(layer, true);\n\n\t\t// Split up text into lines\n\t\tconst lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\n\t\tlet styleRestored = true;\n\n\t\t// Iterate through the lines\n\t\tlet offsetY = 0;\n\t\t$array.each(lines, (line, _index) => {\n\n\t\t\t// Split up line into format/value chunks\n\t\t\tlet chunks = TextFormatter.chunk(line, false, this.style.ignoreFormatting);\n\n\t\t\t// Init line object\n\t\t\tlet lineInfo: ILine = {\n\t\t\t\toffsetY: offsetY,\n\t\t\t\tascent: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttextChunks: []\n\t\t\t};\n\n\t\t\tlet currentStyle: string | undefined;\n\t\t\tlet currentFill: Color | undefined;\n\t\t\tlet currentChunkWidth: number | undefined;\n\n\t\t\t//while(chunk = chunks.shift()) {\n\t\t\t$array.each(chunks, (chunk, _index) => {\n\n\t\t\t\t// Format chunk\n\t\t\t\tif (chunk.type == \"format\") {\n\t\t\t\t\tif (chunk.text == \"[/]\") {\n\t\t\t\t\t\tif (!styleRestored) {\n\t\t\t\t\t\t\tcontext.restore();\n\t\t\t\t\t\t\tghostContext.restore();\n\t\t\t\t\t\t\tstyleRestored = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentFill = undefined;\n\t\t\t\t\t\tcurrentStyle = undefined;\n\t\t\t\t\t\tcurrentChunkWidth = undefined;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet format = TextFormatter.getTextStyle(chunk.text);\n\t\t\t\t\t\tconst fontStyle = this._getFontStyle(format);\n\t\t\t\t\t\tcontext.save();\n\t\t\t\t\t\tghostContext.save();\n\t\t\t\t\t\tcontext.font = fontStyle;\n\t\t\t\t\t\tcurrentStyle = fontStyle;\n\t\t\t\t\t\tif (format.fill) {\n\t\t\t\t\t\t\tcurrentFill = <Color>format.fill;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ((<any>format).width) {\n\t\t\t\t\t\t\tcurrentChunkWidth = $type.toNumber((<any>format).width);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyleRestored = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Text format\n\t\t\t\telse if (chunk.type == \"value\") {\n\n\t\t\t\t\t// Measure each letter\n\t\t\t\t\tfor (let i = 0; i < chunk.text.length; i++) {\n\n\t\t\t\t\t\tconst char = chunk.text[i];\n\n\t\t\t\t\t\t// Measure\n\t\t\t\t\t\tconst metrics = this._measureText(char.replace(\" \", \".\"), context);\n\t\t\t\t\t\tlet chunkWidth = metrics.width;\n\n\t\t\t\t\t\t// Chunk width?\n\t\t\t\t\t\tif (currentStyle && currentChunkWidth && (currentChunkWidth > chunkWidth)) {\n\t\t\t\t\t\t\tchunkWidth = currentChunkWidth;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst chunkHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n\t\t\t\t\t\tif (chunkHeight > lineInfo.height) {\n\t\t\t\t\t\t\tlineInfo.height = chunkHeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\n\t\t\t\t\t\t\tlineInfo.ascent = metrics.actualBoundingBoxAscent;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlineInfo.width += chunkWidth;\n\t\t\t\t\t\tlineInfo.left += metrics.actualBoundingBoxLeft;\n\t\t\t\t\t\tlineInfo.right += metrics.actualBoundingBoxRight;\n\t\t\t\t\t\tlineInfo.textChunks.push({\n\t\t\t\t\t\t\tstyle: currentStyle,\n\t\t\t\t\t\t\tfill: currentFill,\n\t\t\t\t\t\t\ttext: char,\n\t\t\t\t\t\t\twidth: chunkWidth,\n\t\t\t\t\t\t\theight: chunkHeight + metrics.actualBoundingBoxDescent,\n\t\t\t\t\t\t\tleft: metrics.actualBoundingBoxLeft,\n\t\t\t\t\t\t\tright: metrics.actualBoundingBoxRight,\n\t\t\t\t\t\t\tascent: metrics.actualBoundingBoxAscent,\n\t\t\t\t\t\t\toffsetX: 0,\n\t\t\t\t\t\t\toffsetY: chunkHeight\n\t\t\t\t\t\t});\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.style.lineHeight instanceof Percent) {\n\t\t\t\tlineInfo.height *= this.style.lineHeight.value;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlineInfo.height *= this.style.lineHeight || 1.2;\n\t\t\t}\n\n\t\t\tthis._textInfo!.push(lineInfo);\n\n\t\t\t//lineInfo.offsetY += lineInfo.ascent;\n\t\t\toffsetY += lineInfo.height;\n\n\n\t\t});\n\n\t\tif (!styleRestored) {\n\t\t\tcontext.restore();\n\t\t\tghostContext.restore();\n\t\t}\n\n\t\t// Adjust chunk internal offsets\n\t\t$array.each(this._textInfo, (lineInfo) => {\n\t\t\t$array.each(lineInfo.textChunks, (chunk) => {\n\t\t\t\tchunk.offsetY += Math.round((lineInfo.height - chunk.height + (lineInfo.ascent - chunk.ascent)) / 2);\n\t\t\t});\n\t\t});\n\n\t\tcontext.restore();\n\t\tghostContext.restore();\n\n\t\treturn {\n\t\t\tleft: 0,\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t};\n\t}\n\n}\n\n/**\n * @ignore\n */\nexport class CanvasImage extends CanvasDisplayObject implements IPicture {\n\tpublic width: number | undefined;\n\tpublic height: number | undefined;\n\tpublic image: HTMLImageElement | undefined;\n\tpublic tainted?: boolean;\n\n\tpublic shadowColor?: Color;\n\tpublic shadowBlur?: number;\n\tpublic shadowOffsetX?: number;\n\tpublic shadowOffsetY?: number;\n\tpublic shadowOpacity?: number;\n\n\tprotected _imageMask: HTMLCanvasElement | undefined;\n\n\tconstructor(renderer: CanvasRenderer, image: HTMLImageElement | undefined) {\n\t\tsuper(renderer);\n\t\tthis.image = image;\n\t}\n\n\tgetLocalBounds(): IBounds {\n\t\tif (!this._localBounds) {\n\n\n\t\t\tlet w = 0;\n\t\t\tlet h = 0;\n\n\t\t\tif (this.width) {\n\t\t\t\tw = this.width;\n\t\t\t}\n\t\t\tif (this.height) {\n\t\t\t\th = this.height;\n\t\t\t}\n\n\t\t\tthis._localBounds = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\tright: w,\n\t\t\t\tbottom: h\n\t\t\t};\n\n\t\t\tthis._addBounds(this._localBounds);\n\t\t}\n\t\treturn this._localBounds;\n\t}\n\n\tprotected _render(parentLayer: CanvasLayer): void {\n\t\tsuper._render(parentLayer);\n\n\t\tif (this.image) {\n\t\t\tconst layer = this._layer || parentLayer;\n\n\t\t\tif (this.tainted === undefined) {\n\t\t\t\tthis.tainted = isTainted(this.image);\n\t\t\t\tlayer.tainted = true;\n\t\t\t}\n\n\t\t\tif (this.tainted && this._renderer._omitTainted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (layer.dirty) {\n\n\t\t\t\tif (this.shadowColor) {\n\t\t\t\t\tlayer.context.shadowColor = this.shadowColor.toCSS(this.shadowOpacity || 1);\n\t\t\t\t}\n\t\t\t\tif (this.shadowBlur) {\n\t\t\t\t\tlayer.context.shadowBlur = this.shadowBlur;\n\t\t\t\t}\n\t\t\t\tif (this.shadowOffsetX) {\n\t\t\t\t\tlayer.context.shadowOffsetX = this.shadowOffsetX;\n\t\t\t\t}\n\t\t\t\tif (this.shadowOffsetY) {\n\t\t\t\t\tlayer.context.shadowOffsetY = this.shadowOffsetY;\n\t\t\t\t}\n\n\t\t\t\tconst width = this.width || this.image.naturalWidth;\n\t\t\t\tconst height = this.height || this.image.naturalHeight;\n\n\t\t\t\tlayer.context.drawImage(this.image, 0, 0, width, height);\n\t\t\t}\n\n\t\t\tif (this._isInteractive()) {\n\t\t\t\tconst mask = this._getMask(this.image);\n\n\t\t\t\tthis._renderer._ghostContext.drawImage(mask, 0, 0);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic clear(): void {\n\t\tsuper.clear();\n\t\tthis.image = undefined;\n\t\tthis._imageMask = undefined;\n\t}\n\n\tprotected _getMask(image: HTMLImageElement): HTMLCanvasElement {\n\t\tif (this._imageMask === undefined) {\n\t\t\tconst width = this.width || image.naturalWidth;\n\t\t\tconst height = this.height || image.naturalHeight;\n\n\t\t\t// We need to create a second canvas because destination-in clears out the entire canvas\n\t\t\tconst canvas = document.createElement(\"canvas\");\n\t\t\tcanvas.width = width;\n\t\t\tcanvas.height = height;\n\n\t\t\tconst context = canvas.getContext(\"2d\")!;\n\n\t\t\tcontext.imageSmoothingEnabled = false;\n\n\t\t\tcontext.fillStyle = this._getColorId();\n\t\t\tcontext.fillRect(0, 0, width, height);\n\n\t\t\tif (!isTainted(image)) {\n\t\t\t\tcontext.globalCompositeOperation = \"destination-in\";\n\t\t\t\tcontext.drawImage(image, 0, 0, width, height);\n\t\t\t}\n\n\t\t\tthis._imageMask = canvas;\n\t\t}\n\n\t\treturn this._imageMask;\n\t}\n\n}\n\n/**\n * @ignore\n */\nexport class CanvasRendererEvent<A> implements IRendererEvent<A> {\n\tpublic id: Id;\n\tpublic simulated: boolean = false;\n\tpublic native: boolean = true;\n\n\tconstructor(public event: A, public point: IPoint) {\n\t\tif ($utils.supports(\"touchevents\") && event instanceof Touch) {\n\t\t\tthis.id = event.identifier;\n\n\t\t} else {\n\t\t\tthis.id = null;\n\t\t}\n\t}\n}\n\n/**\n * @ignore\n */\ninterface Event<Key extends keyof IRendererEvents> {\n\tobject: CanvasDisplayObject;\n\tcontext: unknown;\n\tcallback: (event: IRendererEvents[Key]) => void;\n\tdisposed: boolean;\n}\n\n/**\n * @ignore\n */\ninterface Events<Key extends keyof IRendererEvents> {\n\tdisposer: IDisposer;\n\tcallbacks: Array<Event<Key>>;\n\tdispatching: boolean;\n\tcleanup: boolean;\n}\n\n/**\n * @ignore\n */\nexport class CanvasRenderer extends Disposer implements IRenderer, IDisposer {\n\tpublic view: HTMLElement = document.createElement(\"div\");\n\tprotected _layerDom: HTMLElement = document.createElement(\"div\");\n\n\tpublic layers: Array<CanvasLayer> = [];\n\tpublic _dirtyLayers: Array<CanvasLayer> = [];\n\tpublic defaultLayer: CanvasLayer = this.getLayer(0);\n\n\tprotected _ghostView: HTMLCanvasElement;\n\tpublic _ghostContext: CanvasRenderingContext2D;\n\n\tprotected _patternCanvas: HTMLCanvasElement = document.createElement(\"canvas\");\n\tprotected _patternContext: CanvasRenderingContext2D = this._patternCanvas.getContext(\"2d\")!;\n\n\tprotected _width: number = 0;\n\tprotected _height: number = 0;\n\n\tprotected _clientWidth: number = 0;\n\tprotected _clientHeight: number = 0;\n\n\tpublic resolution: number = window.devicePixelRatio;\n\tpublic interactionsEnabled: boolean = true;;\n\n\tprotected _listeners: { [key: string]: CounterDisposer } = {};\n\tprotected _events: { [Key in keyof IRendererEvents]?: Events<Key> } = {};\n\n\tprotected _colorId: number = 0;\n\tprotected _colorMap: { [color: string]: CanvasDisplayObject } = {};\n\n\tpublic _forceInteractive: number = 0;\n\tpublic _omitTainted: boolean = false;\n\n\t// TODO this should store the Id as well\n\tpublic _hovering: Set<CanvasDisplayObject> = new Set();\n\tpublic _dragging: Array<{ id: Id, value: CanvasDisplayObject }> = [];\n\tpublic _mousedown: Array<{ id: Id, value: CanvasDisplayObject }> = [];\n\n\tprotected _lastPointerMoveEvent!: IPointerEvent;\n\tprotected _mouseMoveThrottler: Throttler = new Throttler(() => {\n\t\tthis._dispatchGlobalMousemove(this._lastPointerMoveEvent);\n\t});\n\n\tconstructor() {\n\t\tsuper(() => {\n\t\t});\n\n\t\tthis.view.appendChild(this._layerDom);\n\n\t\t// @todo : do the same for ghost\n\t\tthis._ghostView = document.createElement(\"canvas\");\n\t\tthis._ghostContext = this._ghostView.getContext(\"2d\", { alpha: false })!;\n\t\tthis._ghostContext.imageSmoothingEnabled = false;\n\n\t\t// Monitor for possible pixel ratio changes (when page is zoomed)\n\t\twindow.addEventListener(\"resize\", (_ev) => {\n\t\t\tthis.resolution = window.devicePixelRatio;\n\t\t});\n\n\t\t// We need this in order top prevent default touch gestures when dragging\n\t\t// draggable elements\n\t\tif ($utils.supports(\"touchevents\")) {\n\t\t\tdocument.addEventListener(\"touchstart\", (ev) => {\n\t\t\t\tif (this._dragging.length !== 0) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t}\n\t\t\t}, { passive: false });\n\t\t}\n\n\t\t// Prevent scrolling of the window when hovering on \"wheelable\" object\n\t\tif ($utils.supports(\"wheelevents\")) {\n\t\t\tthis.view.addEventListener(\"wheel\", (ev) => {\n\t\t\t\tlet prevent = false;\n\t\t\t\tthis._hovering.forEach((obj) => {\n\t\t\t\t\tif (obj.wheelable) {\n\t\t\t\t\t\tprevent = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (prevent) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t}\n\t\t\t}, { passive: false });\n\t\t}\n\n\t}\n\n\tcreateLinearGradient(x1: number, y1: number, x2: number, y2: number): CanvasGradient {\n\t\treturn this.defaultLayer.context.createLinearGradient(x1, y1, x2, y2);\n\t}\n\n\tcreateRadialGradient(x1: number, y1: number, radius1: number, x2: number, y2: number, radius2: number): CanvasGradient {\n\t\treturn this.defaultLayer.context.createRadialGradient(x1, y1, radius1, x2, y2, radius2);\n\t}\n\n\tcreatePattern(graphics: CanvasGraphics, background: CanvasGraphics, repetition: string, width: number, height: number): CanvasPattern {\n\t\t// const patternCanvas = document.createElement(\"canvas\");\n\t\t// const patternContext = patternCanvas.getContext(\"2d\")!;\n\t\t// patternCanvas.width = width;\n\t\t// patternCanvas.height = height;\n\t\t// if (fill) {\n\t\t// \tpatternContext.fillStyle = fill.toCSS();\n\t\t// \tpatternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height);\n\t\t// }\n\n\t\t// const layer = {\n\t\t// \tview: patternCanvas,\n\t\t// \tcontext: patternContext,\n\t\t// \tvisible: true,\n\t\t// \torder: 0,\n\t\t// \twidth: width,\n\t\t// \theight: height,\n\t\t// \tdirty: true\n\t\t// };\n\n\t\t// // patternContext.arc(0, 0, 50, 0, .5 * Math.PI);\n\t\t// // patternContext.stroke();\n\n\t\t// image.targetLayer = layer;\n\t\t// image.render(layer);\n\n\t\t//this._layerDom.appendChild(patternCanvas);\n\n\t\tthis._patternCanvas.width = width;\n\t\tthis._patternCanvas.height = height;\n\n\t\tthis._patternContext.clearRect(0, 0, width, height);\n\n\t\t// patternCanvas.style.width = width * this.resolution + \"px\";\n\t\t// patternCanvas.style.height = height * this.resolution + \"px\";\n\n\t\tbackground.renderDetached(this._patternContext);\n\t\tgraphics.renderDetached(this._patternContext);\n\n\t\treturn this._patternContext.createPattern(this._patternCanvas, repetition)!;\n\t}\n\n\tmakeContainer(): CanvasContainer {\n\t\treturn new CanvasContainer(this);\n\t}\n\n\tmakeGraphics(): CanvasGraphics {\n\t\treturn new CanvasGraphics(this);\n\t}\n\n\tmakeText(text: string, style: CanvasTextStyle): CanvasText {\n\t\treturn new CanvasText(this, text, style);\n\t}\n\n\tmakeTextStyle(): CanvasTextStyle {\n\t\treturn new CanvasTextStyle();\n\t}\n\n\tmakeRadialText(text: string, style: CanvasTextStyle): CanvasRadialText {\n\t\treturn new CanvasRadialText(this, text, style);\n\t}\n\n\tmakePicture(image: HTMLImageElement | undefined): CanvasImage {\n\t\treturn new CanvasImage(this, image);\n\t}\n\n\tresize(width: number, height: number): void {\n\t\tthis._clientWidth = width;\n\t\tthis._clientHeight = height;\n\t\tthis._width = Math.floor(width * this.resolution);\n\t\tthis._height = Math.floor(height * this.resolution);\n\n\t\t$array.each(this.layers, (layer) => {\n\t\t\tif (layer) {\n\t\t\t\tlayer.dirty = true;\n\n\t\t\t\tif (layer.width != null) {\n\t\t\t\t\tlayer.view.width = layer.width;\n\t\t\t\t\tlayer.view.style.width = layer.width + \"px\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlayer.view.width = this._width;\n\t\t\t\t\tlayer.view.style.width = width + \"px\";\n\t\t\t\t}\n\n\t\t\t\tif (layer.height != null) {\n\t\t\t\t\tlayer.view.height = layer.height;\n\t\t\t\t\tlayer.view.style.height = layer.height + \"px\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlayer.view.height = this._height;\n\t\t\t\t\tlayer.view.style.height = height + \"px\";\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// @todo: do the same for ghost canvases\n\t\tthis._ghostView.width = this._width;\n\t\tthis._ghostView.height = this._height;\n\t\tthis._ghostView.style.width = width + \"px\";\n\t\tthis._ghostView.style.height = height + \"px\";\n\t}\n\n\tcreateDetachedLayer(): CanvasLayer {\n\t\tconst view = document.createElement(\"canvas\");\n\t\tconst context = view.getContext(\"2d\")!;\n\t\tconst layer = {\n\t\t\tview: view,\n\t\t\tcontext: context,\n\t\t\torder: 0,\n\t\t\tvisible: true,\n\t\t\twidth: undefined,\n\t\t\theight: undefined,\n\t\t\tdirty: true,\n\t\t\ttainted: false\n\t\t};\n\n\t\tview.style.position = \"absolute\";\n\t\tview.style.top = \"0px\";\n\t\tview.style.left = \"0px\";\n\n\t\treturn layer;\n\t}\n\n\tgetLayerByOrder(order: number): CanvasLayer | undefined {\n\t\tconst layers = this.layers;\n\t\tconst length = layers.length;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst layer = layers[i];\n\t\t\tif (layer.order == order) {\n\t\t\t\treturn layer;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetLayer(order: number, visible: boolean = true): CanvasLayer {\n\t\tconst layers = this.layers;\n\n\t\tlet existingLayer = this.getLayerByOrder(order);\n\t\tif (existingLayer) {\n\t\t\treturn existingLayer;\n\t\t}\n\n\t\tconst layer = this.createDetachedLayer();\n\t\tlayer.order = order;\n\t\tlayer.visible = visible;\n\n\t\tif (layer.visible && this._width) {\n\t\t\tlayer.view.width = this._width;\n\t\t\tlayer.view.style.width = this._clientWidth + \"px\";\n\t\t\tlayer.view.height = this._height;\n\t\t\tlayer.view.style.height = this._clientHeight + \"px\";\n\t\t}\n\n\t\tlayers.push(layer);\n\n\t\tlayers.sort((a, b) => {\n\t\t\tif (a.order > b.order) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\telse if (a.order < b.order) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\n\t\tconst length = layers.length;\n\t\tconst layerIndex = $array.indexOf(layers, layer);\n\t\tlet next;\n\n\t\tfor (let i = layerIndex + 1; i < length; i++) {\n\t\t\tif (layers[i].visible) {\n\t\t\t\tnext = layers[i];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (visible) {\n\t\t\tif (next === undefined) {\n\t\t\t\tthis._layerDom.appendChild(layer.view);\n\n\t\t\t} else {\n\t\t\t\tthis._layerDom.insertBefore(layer.view, next.view);\n\t\t\t}\n\t\t}\n\n\t\treturn layer;\n\t}\n\n\trender(root: CanvasDisplayObject): void {\n\n\t\tthis._dirtyLayers.length = 0;\n\n\t\t$array.each(this.layers, (layer) => {\n\t\t\tif (layer) {\n\n\t\t\t\tif (layer.dirty && layer.visible) {\n\t\t\t\t\tthis._dirtyLayers.push(layer);\n\n\t\t\t\t\tlayer.context.save();\n\t\t\t\t\tlayer.context.clearRect(0, 0, this._width, this._height);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._ghostContext.save();\n\t\t//this._ghostContext.clearRect(0, 0, this._width, this._height);\n\t\t//this._ghostContext.beginPath();\n\t\tthis._ghostContext.fillStyle = '#000';\n\t\tthis._ghostContext.fillRect(0, 0, this._width, this._height);\n\n\t\troot.render(this.defaultLayer);\n\n\t\tthis._ghostContext.restore();\n\n\t\t//setTimeout(() => {\n\n\t\t$array.each(this._dirtyLayers, (layer) => {\n\t\t\tlayer.context.restore();\n\t\t\tlayer.dirty = false;\n\t\t});\n\t\t//}, 100)\n\n\t\tif (this._hovering.size && this._lastPointerMoveEvent) {\n\t\t\tthis._mouseMoveThrottler.run();\n\t\t}\n\t}\n\n\tpaintId(obj: CanvasDisplayObject): string {\n\t\tconst id = distributeId(++this._colorId);\n\t\tconst color = Color.fromHex(id).toCSS();\n\t\tthis._colorMap[color] = obj;\n\t\treturn color;\n\t}\n\n\t_removeObject(obj: CanvasDisplayObject): void {\n\t\tif (obj._colorId !== undefined) {\n\t\t\tdelete this._colorMap[obj._colorId];\n\t\t}\n\t}\n\n\t// protected _identifyObjectByColor(colorId: number): CanvasDisplayObject | undefined {\n\t// \treturn this._colorMap[colorId];\n\t// }\n\n\tpublic getEvent<A extends IPointerEvent>(originalEvent: A, adjustPoint: boolean = true): CanvasRendererEvent<A> {\n\t\tconst bbox = adjustPoint ? this.view.getBoundingClientRect() : { left: 0, top: 0 };\n\n\t\treturn new CanvasRendererEvent(originalEvent, originalEvent.clientX || originalEvent.clientY ? {\n\t\t\tx: originalEvent.clientX - (originalEvent.clientX ? bbox.left : 0),\n\t\t\ty: originalEvent.clientY - (originalEvent.clientY ? bbox.top : 0),\n\t\t} : {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t});\n\t}\n\n\t_getHitTarget(point: IPoint): CanvasDisplayObject | undefined | false {\n\t\tif (point.x < 0 || point.x > this._width / this.resolution || point.y < 0 || point.y > this._height / this.resolution) {\n\t\t\treturn;\n\t\t}\n\t\telse {\n\t\t\tconst pixel = this._ghostContext.getImageData(\n\t\t\t\t// TODO should this round ?\n\t\t\t\tMath.round(point.x * this.resolution),\n\t\t\t\tMath.round(point.y * this.resolution),\n\t\t\t\t1,\n\t\t\t\t1\n\t\t\t);\n\n\t\t\tif (pixel.data[0] === 0 && pixel.data[1] === 0 && pixel.data[2] === 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst colorId = Color.fromRGB(pixel.data[0], pixel.data[1], pixel.data[2]).toCSS();\n\t\t\tconst hit = this._colorMap[colorId];\n\n\t\t\treturn hit;\n\t\t}\n\t}\n\n\t_withEvents<Key extends keyof IRendererEvents>(key: Key, f: (events: Events<Key>) => void): void {\n\t\tconst events = this._events[key] as Events<Key> | undefined;\n\n\t\tif (events !== undefined) {\n\t\t\tevents.dispatching = true;\n\n\t\t\ttry {\n\t\t\t\tf(events);\n\n\t\t\t} finally {\n\t\t\t\tevents.dispatching = false;\n\n\t\t\t\tif (events.cleanup) {\n\t\t\t\t\tevents.cleanup = false;\n\n\t\t\t\t\t$array.keepIf(events.callbacks, (callback) => {\n\t\t\t\t\t\treturn !callback.disposed;\n\t\t\t\t\t});\n\n\t\t\t\t\tif (events.callbacks.length === 0) {\n\t\t\t\t\t\tevents.disposer.dispose();\n\t\t\t\t\t\tdelete this._events[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_dispatchEventAll<Key extends keyof IRendererEvents>(key: Key, event: IRendererEvents[Key]): void {\n\t\tif (!this.interactionsEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._withEvents(key, (events) => {\n\t\t\t$array.each(events.callbacks, (callback) => {\n\t\t\t\tif (!callback.disposed) {\n\t\t\t\t\tcallback.callback.call(callback.context, event);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t_dispatchEvent<Key extends keyof IRendererEvents>(key: Key, target: CanvasDisplayObject, event: IRendererEvents[Key]): boolean {\n\t\tif (!this.interactionsEnabled) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet dispatched = false;\n\n\t\tthis._withEvents(key, (events) => {\n\t\t\t$array.each(events.callbacks, (callback) => {\n\t\t\t\tif (!callback.disposed && callback.object === target) {\n\t\t\t\t\tcallback.callback.call(callback.context, event);\n\t\t\t\t\tdispatched = true;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn dispatched;\n\t}\n\n\t_dispatchMousedown(originalEvent: IPointerEvent): void {\n\n\t\tif ((<PointerEvent>originalEvent).button > 0) {\n\t\t\t// Ignore non-primary mouse buttons\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = this.getEvent(originalEvent);\n\t\tconst target = this._getHitTarget(event.point);\n\n\t\tif (target) {\n\t\t\tconst id = event.id;\n\n\t\t\tlet dragged = false;\n\n\t\t\teachTargets(target, (obj) => {\n\t\t\t\tconst info = { id: id, value: obj };\n\n\t\t\t\tthis._mousedown.push(info);\n\n\t\t\t\tif (!dragged && this._dispatchEvent(\"pointerdown\", obj, event)) {\n\t\t\t\t\t// Only dispatch the first element which matches\n\t\t\t\t\tdragged = true;\n\n\t\t\t\t\tconst has = this._dragging.some((x) => {\n\t\t\t\t\t\treturn x.value === obj && x.id === id;\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!has) {\n\t\t\t\t\t\tthis._dragging.push(info);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatchGlobalMousemove(originalEvent: IPointerEvent): void {\n\t\tconst event = this.getEvent(originalEvent);\n\n\t\tconst target = this._getHitTarget(event.point);\n\t\tevent.native = this._isNativeEvent(originalEvent);\n\n\t\tif (target) {\n\t\t\tthis._hovering.forEach((obj) => {\n\t\t\t\tif (!obj.contains(target)) {\n\t\t\t\t\tthis._hovering.delete(obj);\n\t\t\t\t\tif (obj.cursorOverStyle) {\n\t\t\t\t\t\t$utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle!);\n\t\t\t\t\t}\n\t\t\t\t\tthis._dispatchEvent(\"pointerout\", obj, event);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (event.native) {\n\t\t\t\teachTargets(target, (obj) => {\n\t\t\t\t\tif (!this._hovering.has(obj)) {\n\t\t\t\t\t\tthis._hovering.add(obj);\n\t\t\t\t\t\tif (obj.cursorOverStyle) {\n\t\t\t\t\t\t\tobj._replacedCursorStyle = $utils.getStyle(document.body, \"cursor\");\n\t\t\t\t\t\t\t$utils.setStyle(document.body, \"cursor\", obj.cursorOverStyle);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._dispatchEvent(\"pointerover\", obj, event);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t//} else if (target === false) {\n\t\t} else {\n\t\t\tthis._hovering.forEach((obj) => {\n\t\t\t\tif (obj.cursorOverStyle) {\n\t\t\t\t\t$utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle!);\n\t\t\t\t}\n\t\t\t\tthis._dispatchEvent(\"pointerout\", obj, event);\n\t\t\t});\n\n\t\t\tthis._hovering.clear();\n\t\t}\n\t\tthis._dispatchEventAll(\"globalpointermove\", event);\n\t}\n\n\t_isNativeEvent(event: IPointerEvent): boolean {\n\t\tif (event.target) {\n\t\t\treturn (<any>event.target).parentNode === this._layerDom;\n\t\t}\n\t\treturn true;\n\t}\n\n\t_dispatchGlobalMouseup(originalEvent: IPointerEvent): void {\n\t\tconst event = this.getEvent(originalEvent);\n\t\t//const target = this._getHitTarget(event.point);\n\t\tthis._dispatchEventAll(\"globalpointerup\", event);\n\t}\n\n\t_dispatchDragMove(originalEvent: IPointerEvent): void {\n\t\tif (this._dragging.length !== 0) {\n\t\t\tconst event = this.getEvent(originalEvent);\n\t\t\tconst id = event.id;\n\n\t\t\tthis._dragging.forEach((obj) => {\n\t\t\t\tif (obj.id === id) {\n\t\t\t\t\tthis._dispatchEvent(\"pointermove\", obj.value, event);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatchDragEnd(originalEvent: IPointerEvent): void {\n\n\t\tif ((<PointerEvent>originalEvent).button > 0) {\n\t\t\t// Ignore non-primary mouse buttons\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = this.getEvent(originalEvent);\n\t\tconst id = event.id;\n\n\n\t\tif (this._mousedown.length !== 0) {\n\t\t\tconst target = this._getHitTarget(event.point);\n\n\t\t\tif (target) {\n\t\t\t\tthis._mousedown.forEach((obj) => {\n\t\t\t\t\tif (obj.id === id && obj.value.contains(target)) {\n\t\t\t\t\t\tthis._dispatchEvent(\"click\", obj.value, event);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis._mousedown.length = 0;\n\t\t}\n\n\t\tif (this._dragging.length !== 0) {\n\t\t\tthis._dragging.forEach((obj) => {\n\t\t\t\tif (obj.id === id) {\n\t\t\t\t\tthis._dispatchEvent(\"pointerup\", obj.value, event);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._dragging.length = 0;\n\t\t}\n\t}\n\n\t_dispatchDoubleClick(originalEvent: IPointerEvent): void {\n\t\tconst event = this.getEvent(originalEvent);\n\t\tconst target = this._getHitTarget(event.point);\n\n\t\tif (target) {\n\t\t\teachTargets(target, (obj) => {\n\t\t\t\tif (this._dispatchEvent(\"dblclick\", obj, event)) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t_dispatchWheel(originalEvent: WheelEvent): void {\n\t\tconst event = this.getEvent(originalEvent);\n\t\tthis._hovering.forEach((obj) => {\n\t\t\tif (obj.wheelable) {\n\t\t\t\tthis._dispatchEvent(\"wheel\", obj, event);\n\t\t\t}\n\t\t});\n\t}\n\n\t_makeSharedEvent(key: string, f: () => IDisposer): IDisposer {\n\t\tif (this._listeners[key] === undefined) {\n\t\t\tconst listener = f();\n\n\t\t\tthis._listeners[key] = new CounterDisposer(() => {\n\t\t\t\tdelete this._listeners[key];\n\t\t\t\tlistener.dispose();\n\t\t\t});\n\t\t}\n\n\t\treturn this._listeners[key].increment();\n\t}\n\n\t// This ensures that only a single DOM event is added (e.g. only a single mousemove event listener)\n\t_initEvent(key: keyof IRendererEvents): IDisposer | undefined {\n\t\tswitch (key) {\n\t\t\tcase \"globalpointermove\":\n\t\t\tcase \"pointerover\":\n\t\t\tcase \"pointerout\":\n\t\t\t\treturn this._makeSharedEvent(\"pointermove\", () => {\n\t\t\t\t\t//const throttler = new Throttler();\n\n\t\t\t\t\t// TODO handle throttling properly for multitouch\n\t\t\t\t\treturn onPointerEvent(window, \"pointermove\", (ev) => {\n\t\t\t\t\t\tthis._lastPointerMoveEvent = ev;\n\t\t\t\t\t\tthis._mouseMoveThrottler.run();\n\t\t\t\t\t\t//throttler.throttle(() => {\n\t\t\t\t\t\t//});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\tcase \"globalpointerup\":\n\t\t\t\treturn this._makeSharedEvent(\"pointerup\", () => {\n\t\t\t\t\t//const throttler = new Throttler();\n\n\t\t\t\t\t// TODO handle throttling properly for multitouch\n\t\t\t\t\treturn onPointerEvent(window, \"pointerup\", (ev) => {\n\t\t\t\t\t\t//throttler.throttle(() => {\n\t\t\t\t\t\tthis._dispatchGlobalMouseup(ev);\n\t\t\t\t\t\t//});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\tcase \"click\":\n\t\t\tcase \"pointerdown\":\n\t\t\tcase \"pointermove\":\n\t\t\tcase \"pointerup\":\n\t\t\t\treturn this._makeSharedEvent(\"pointerdown\", () => {\n\t\t\t\t\t//const throttler = new Throttler();\n\n\t\t\t\t\tconst mousedown = onPointerEvent(this.view, \"pointerdown\", (ev: IPointerEvent) => {\n\t\t\t\t\t\tthis._dispatchMousedown(ev);\n\t\t\t\t\t});\n\n\t\t\t\t\t// TODO handle throttling properly for multitouch\n\t\t\t\t\tconst mousemove = onPointerEvent(window, \"pointermove\", (ev: IPointerEvent) => {\n\t\t\t\t\t\t//throttler.throttle(() => {\n\t\t\t\t\t\tthis._dispatchDragMove(ev);\n\t\t\t\t\t\t//});\n\t\t\t\t\t});\n\n\t\t\t\t\tconst mouseup = onPointerEvent(window, \"pointerup\", (ev: IPointerEvent) => {\n\t\t\t\t\t\tthis._dispatchDragEnd(ev);\n\t\t\t\t\t});\n\n\t\t\t\t\treturn new Disposer(() => {\n\t\t\t\t\t\tmousedown.dispose();\n\t\t\t\t\t\tmousemove.dispose();\n\t\t\t\t\t\tmouseup.dispose();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\tcase \"dblclick\":\n\t\t\t\treturn this._makeSharedEvent(\"dblclick\", () => {\n\t\t\t\t\treturn onPointerEvent(window, \"dblclick\", (ev) => {\n\t\t\t\t\t\tthis._dispatchDoubleClick(ev);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\tcase \"wheel\":\n\t\t\t\treturn this._makeSharedEvent(\"wheel\", () => {\n\t\t\t\t\treturn $utils.addEventListener(window, $utils.getRendererEvent(\"wheel\"), (event: WheelEvent) => {\n\t\t\t\t\t\tthis._dispatchWheel(event);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t}\n\n\t_addEvent<C, Key extends keyof IRendererEvents>(object: CanvasDisplayObject, key: Key, callback: (this: C, event: IRendererEvents[Key]) => void, context?: C): IDisposer {\n\t\tlet events: Events<Key> | undefined = this._events[key] as any;\n\n\t\tif (events === undefined) {\n\t\t\tevents = this._events[key] = {\n\t\t\t\tdisposer: this._initEvent(key)!,\n\t\t\t\tcallbacks: [],\n\t\t\t\tdispatching: false,\n\t\t\t\tcleanup: false,\n\t\t\t};\n\t\t}\n\n\t\tconst listener = { object, context, callback, disposed: false };\n\n\t\tevents!.callbacks.push(listener);\n\n\t\treturn new Disposer(() => {\n\t\t\tlistener.disposed = true;\n\n\t\t\tif (events!.dispatching) {\n\t\t\t\tevents!.cleanup = true;\n\n\t\t\t} else {\n\t\t\t\t$array.removeFirst(events!.callbacks, listener);\n\n\t\t\t\tif (events!.callbacks.length === 0) {\n\t\t\t\t\tevents!.disposer.dispose();\n\t\t\t\t\tdelete this._events[key];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic getCanvas(root: CanvasDisplayObject, options?: ICanvasOptions): HTMLCanvasElement {\n\n\t\t// Make sure everything is rendered\n\t\tthis.render(root);\n\n\t\tif (!options) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tlet scale: number = this.resolution;\n\n\t\t// Check if we need to scale\n\t\tif (options.minWidth && (options.minWidth > this._width)) {\n\t\t\tlet minScale = options.minWidth / this._width;\n\t\t\tif (minScale > scale) {\n\t\t\t\tscale = minScale * this.resolution;\n\t\t\t}\n\t\t}\n\n\t\tif (options.minHeight && (options.minHeight > this._height)) {\n\t\t\tlet minScale = options.minHeight / this._height;\n\t\t\tif (minScale > scale) {\n\t\t\t\tscale = minScale * this.resolution;\n\t\t\t}\n\t\t}\n\n\t\tif (options.maxWidth && (options.maxWidth < this._width)) {\n\t\t\tlet maxScale = options.maxWidth / this._width;\n\t\t\tif (maxScale < scale) {\n\t\t\t\tscale = maxScale * this.resolution;\n\t\t\t}\n\t\t}\n\n\t\tif (options.maxHeight && (options.maxHeight > this._height)) {\n\t\t\tlet maxScale = options.maxHeight / this._height;\n\t\t\tif (maxScale < scale) {\n\t\t\t\tscale = maxScale * this.resolution;\n\t\t\t}\n\t\t}\n\n\t\t// Check if we need to compensate for pixel ratio\n\t\tif (options.maintainPixelRatio) {\n\t\t\tscale /= this.resolution;\n\t\t}\n\n\t\t// Set up new canvas for export\n\t\tlet forceRender = false;\n\t\tlet canvasWidth = this._width;\n\t\tlet canvasHeight = this._height;\n\t\tconst canvas = document.createElement(\"canvas\");\n\t\tif (scale != this.resolution) {\n\t\t\tforceRender = true;\n\t\t\tcanvasWidth = this._width * scale / this.resolution;\n\t\t\tcanvasHeight = this._height * scale / this.resolution;\n\t\t}\n\n\t\tcanvas.width = canvasWidth;\n\t\tcanvas.height = canvasHeight;\n\n\t\t// Context\n\t\tconst context = canvas.getContext(\"2d\")!;\n\n\t\tlet width = 0;\n\t\tlet height = 0;\n\t\tlet needRerender = false;\n\n\t\t$array.each(this.layers, (layer) => {\n\t\t\tif (layer && layer.visible) {\n\t\t\t\tif (layer.tainted || forceRender) {\n\t\t\t\t\tneedRerender = true;\n\n\t\t\t\t\tlayer.exportableView = layer.view;\n\t\t\t\t\tlayer.exportableContext = layer.context;\n\n\t\t\t\t\tlayer.view = document.createElement(\"canvas\");\n\t\t\t\t\tlayer.view.width = canvasWidth;\n\t\t\t\t\tlayer.view.height = canvasHeight;\n\n\t\t\t\t\tlayer.context = layer.view.getContext(\"2d\")!;\n\n\t\t\t\t\tlayer.dirty = true;\n\t\t\t\t\tlayer.scale = scale;\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (needRerender) {\n\t\t\tthis._omitTainted = true;\n\t\t\tthis.render(root);\n\t\t\tthis._omitTainted = false;\n\t\t}\n\n\t\t$array.each(this.layers, (layer) => {\n\t\t\tif (layer && layer.visible) {\n\n\t\t\t\t// Layer is fine. Just plop it into our target canvas\n\t\t\t\tcontext.drawImage(layer.view, 0, 0);\n\n\t\t\t\t// Restore layer original canvas\n\t\t\t\tif (layer.exportableView) {\n\t\t\t\t\tlayer.view = layer.exportableView;\n\t\t\t\t\tlayer.exportableView = undefined;\n\t\t\t\t}\n\n\t\t\t\tif (layer.exportableContext) {\n\t\t\t\t\tlayer.context = layer.exportableContext;\n\t\t\t\t\tlayer.exportableContext = undefined;\n\t\t\t\t}\n\n\t\t\t\tif (width < layer.view.clientWidth) {\n\t\t\t\t\twidth = layer.view.clientWidth;\n\t\t\t\t}\n\t\t\t\tif (height < layer.view.clientHeight) {\n\t\t\t\t\theight = layer.view.clientHeight;\n\t\t\t\t}\n\n\t\t\t\tlayer.scale = undefined;\n\t\t\t}\n\t\t});\n\n\t\tcanvas.style.width = width + \"px\";\n\t\tcanvas.style.height = height + \"px\";\n\n\t\treturn canvas;\n\t}\n\n}\n\n/**\n * @ignore\n */\nexport interface CanvasLayer extends ILayer {\n\tview: HTMLCanvasElement;\n\tcontext: CanvasRenderingContext2D;\n\ttainted?: boolean;\n\texportableView?: HTMLCanvasElement;\n\texportableContext?: CanvasRenderingContext2D;\n\tscale?: number;\n}\n"]}