@amcharts/amcharts5 5.2.31 → 5.2.33

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 (222) hide show
  1. package/.internal/charts/hierarchy/HierarchyDefaultTheme.d.ts.map +1 -1
  2. package/.internal/charts/hierarchy/HierarchyDefaultTheme.js +2 -0
  3. package/.internal/charts/hierarchy/HierarchyDefaultTheme.js.map +1 -1
  4. package/.internal/charts/hierarchy/Sunburst.d.ts.map +1 -1
  5. package/.internal/charts/hierarchy/Sunburst.js +6 -2
  6. package/.internal/charts/hierarchy/Sunburst.js.map +1 -1
  7. package/.internal/charts/map/MapChart.d.ts +1 -1
  8. package/.internal/charts/map/MapChart.d.ts.map +1 -1
  9. package/.internal/charts/map/MapChart.js +4 -0
  10. package/.internal/charts/map/MapChart.js.map +1 -1
  11. package/.internal/charts/map/MapLine.d.ts.map +1 -1
  12. package/.internal/charts/map/MapLine.js +6 -5
  13. package/.internal/charts/map/MapLine.js.map +1 -1
  14. package/.internal/charts/map/MapLineSeries.d.ts +15 -0
  15. package/.internal/charts/map/MapLineSeries.d.ts.map +1 -1
  16. package/.internal/charts/map/MapLineSeries.js +10 -0
  17. package/.internal/charts/map/MapLineSeries.js.map +1 -1
  18. package/.internal/charts/map/MapSeries.d.ts +0 -2
  19. package/.internal/charts/map/MapSeries.d.ts.map +1 -1
  20. package/.internal/charts/map/MapSeries.js +26 -0
  21. package/.internal/charts/map/MapSeries.js.map +1 -1
  22. package/.internal/charts/percent/PercentDefaultTheme.js +2 -2
  23. package/.internal/charts/percent/PercentDefaultTheme.js.map +1 -1
  24. package/.internal/charts/stock/StockChart.d.ts +9 -1
  25. package/.internal/charts/stock/StockChart.d.ts.map +1 -1
  26. package/.internal/charts/stock/StockChart.js +9 -1
  27. package/.internal/charts/stock/StockChart.js.map +1 -1
  28. package/.internal/charts/stock/toolbar/PeriodSelector.d.ts +1 -0
  29. package/.internal/charts/stock/toolbar/PeriodSelector.d.ts.map +1 -1
  30. package/.internal/charts/stock/toolbar/PeriodSelector.js +21 -0
  31. package/.internal/charts/stock/toolbar/PeriodSelector.js.map +1 -1
  32. package/.internal/charts/xy/axes/Axis.d.ts +2 -0
  33. package/.internal/charts/xy/axes/Axis.d.ts.map +1 -1
  34. package/.internal/charts/xy/axes/Axis.js +17 -0
  35. package/.internal/charts/xy/axes/Axis.js.map +1 -1
  36. package/.internal/charts/xy/axes/AxisRendererX.js +2 -2
  37. package/.internal/charts/xy/axes/AxisRendererX.js.map +1 -1
  38. package/.internal/charts/xy/axes/AxisRendererY.d.ts.map +1 -1
  39. package/.internal/charts/xy/axes/AxisRendererY.js +2 -3
  40. package/.internal/charts/xy/axes/AxisRendererY.js.map +1 -1
  41. package/.internal/core/Registry.d.ts +4 -0
  42. package/.internal/core/Registry.d.ts.map +1 -1
  43. package/.internal/core/Registry.js +9 -0
  44. package/.internal/core/Registry.js.map +1 -1
  45. package/.internal/core/render/Container.js +3 -3
  46. package/.internal/core/render/Container.js.map +1 -1
  47. package/.internal/core/render/Graphics.d.ts +5 -0
  48. package/.internal/core/render/Graphics.d.ts.map +1 -1
  49. package/.internal/core/render/Graphics.js +4 -1
  50. package/.internal/core/render/Graphics.js.map +1 -1
  51. package/.internal/core/render/Label.d.ts +3 -0
  52. package/.internal/core/render/Label.d.ts.map +1 -1
  53. package/.internal/core/render/Label.js.map +1 -1
  54. package/.internal/core/render/PointedRectangle.d.ts.map +1 -1
  55. package/.internal/core/render/PointedRectangle.js +1 -0
  56. package/.internal/core/render/PointedRectangle.js.map +1 -1
  57. package/.internal/core/render/RoundedRectangle.d.ts.map +1 -1
  58. package/.internal/core/render/RoundedRectangle.js +11 -9
  59. package/.internal/core/render/RoundedRectangle.js.map +1 -1
  60. package/.internal/core/render/Series.d.ts +0 -9
  61. package/.internal/core/render/Series.d.ts.map +1 -1
  62. package/.internal/core/render/Series.js.map +1 -1
  63. package/.internal/core/render/Star.d.ts.map +1 -1
  64. package/.internal/core/render/Star.js +1 -0
  65. package/.internal/core/render/Star.js.map +1 -1
  66. package/.internal/core/render/Text.d.ts +6 -0
  67. package/.internal/core/render/Text.d.ts.map +1 -1
  68. package/.internal/core/render/Text.js +39 -0
  69. package/.internal/core/render/Text.js.map +1 -1
  70. package/.internal/core/render/Triangle.d.ts.map +1 -1
  71. package/.internal/core/render/Triangle.js +1 -0
  72. package/.internal/core/render/Triangle.js.map +1 -1
  73. package/.internal/core/render/backend/CanvasRenderer.d.ts +1 -0
  74. package/.internal/core/render/backend/CanvasRenderer.d.ts.map +1 -1
  75. package/.internal/core/render/backend/CanvasRenderer.js +306 -210
  76. package/.internal/core/render/backend/CanvasRenderer.js.map +1 -1
  77. package/.internal/core/render/patterns/PathPattern.d.ts +26 -0
  78. package/.internal/core/render/patterns/PathPattern.d.ts.map +1 -0
  79. package/.internal/core/render/patterns/PathPattern.js +100 -0
  80. package/.internal/core/render/patterns/PathPattern.js.map +1 -0
  81. package/.internal/core/util/List.d.ts.map +1 -1
  82. package/.internal/core/util/List.js.map +1 -1
  83. package/.internal/themes/DefaultTheme.js +1 -1
  84. package/.internal/themes/DefaultTheme.js.map +1 -1
  85. package/CHANGELOG.md +28 -0
  86. package/examples/javascript/flow-chord/package.json +1 -1
  87. package/examples/javascript/flow-chord-directed/package.json +1 -1
  88. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  89. package/examples/javascript/flow-sankey/package.json +1 -1
  90. package/examples/javascript/gauge/package.json +1 -1
  91. package/examples/javascript/gauge-bands/package.json +1 -1
  92. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  93. package/examples/javascript/hierarchy-pack/package.json +1 -1
  94. package/examples/javascript/hierarchy-partition/package.json +1 -1
  95. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  96. package/examples/javascript/hierarchy-tree/package.json +1 -1
  97. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  98. package/examples/javascript/jest/package.json +1 -1
  99. package/examples/javascript/json/package.json +1 -1
  100. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  101. package/examples/javascript/map-day-and-night/package.json +1 -1
  102. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  103. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  104. package/examples/javascript/map-with-bubbles/package.json +1 -1
  105. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  106. package/examples/javascript/misc-40-charts/package.json +1 -1
  107. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  108. package/examples/javascript/pie-chart/package.json +1 -1
  109. package/examples/javascript/pie-donut-chart/package.json +1 -1
  110. package/examples/javascript/pie-variable-radius/package.json +1 -1
  111. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  112. package/examples/javascript/radar-heat-map/package.json +1 -1
  113. package/examples/javascript/radar-line/package.json +1 -1
  114. package/examples/javascript/radar-time-line/package.json +1 -1
  115. package/examples/javascript/sliced-funnel/package.json +1 -1
  116. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  117. package/examples/javascript/sliced-pyramid/package.json +1 -1
  118. package/examples/javascript/stock-chart/package.json +1 -1
  119. package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
  120. package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
  121. package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
  122. package/examples/javascript/stock-chart-intraday/package.json +1 -1
  123. package/examples/javascript/stock-chart-live/package.json +1 -1
  124. package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
  125. package/examples/javascript/venn-diagram/package.json +1 -1
  126. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  127. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  128. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  129. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  130. package/examples/javascript/xy-bubble/package.json +1 -1
  131. package/examples/javascript/xy-candlestick/package.json +1 -1
  132. package/examples/javascript/xy-clustered-column/package.json +1 -1
  133. package/examples/javascript/xy-column/package.json +1 -1
  134. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  135. package/examples/javascript/xy-data-grouping/package.json +1 -1
  136. package/examples/javascript/xy-draggable-range/package.json +1 -1
  137. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  138. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  139. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  140. package/examples/javascript/xy-line/package.json +1 -1
  141. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  142. package/examples/javascript/xy-live-data/package.json +1 -1
  143. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  144. package/examples/javascript/xy-ohlc/package.json +1 -1
  145. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  146. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  147. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  148. package/examples/javascript/xy-stacked-column/package.json +1 -1
  149. package/examples/javascript/xy-stacked-step/package.json +1 -1
  150. package/examples/javascript/xy-stock/package.json +1 -1
  151. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  152. package/examples/typescript/flow-chord/package.json +1 -1
  153. package/examples/typescript/flow-chord-directed/package.json +1 -1
  154. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  155. package/examples/typescript/flow-sankey/package.json +1 -1
  156. package/examples/typescript/gauge/package.json +1 -1
  157. package/examples/typescript/gauge-bands/package.json +1 -1
  158. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  159. package/examples/typescript/hierarchy-pack/package.json +1 -1
  160. package/examples/typescript/hierarchy-partition/package.json +1 -1
  161. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  162. package/examples/typescript/hierarchy-tree/package.json +1 -1
  163. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  164. package/examples/typescript/jest/package.json +1 -1
  165. package/examples/typescript/json/package.json +1 -1
  166. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  167. package/examples/typescript/map-day-and-night/package.json +1 -1
  168. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  169. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  170. package/examples/typescript/map-with-bubbles/package.json +1 -1
  171. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  172. package/examples/typescript/misc-40-charts/package.json +1 -1
  173. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  174. package/examples/typescript/pie-chart/package.json +1 -1
  175. package/examples/typescript/pie-donut-chart/package.json +1 -1
  176. package/examples/typescript/pie-variable-radius/package.json +1 -1
  177. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  178. package/examples/typescript/radar-heat-map/package.json +1 -1
  179. package/examples/typescript/radar-line/package.json +1 -1
  180. package/examples/typescript/radar-time-line/package.json +1 -1
  181. package/examples/typescript/sliced-funnel/package.json +1 -1
  182. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  183. package/examples/typescript/sliced-pyramid/package.json +1 -1
  184. package/examples/typescript/stock-chart/package.json +1 -1
  185. package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
  186. package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
  187. package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
  188. package/examples/typescript/stock-chart-intraday/package.json +1 -1
  189. package/examples/typescript/stock-chart-live/package.json +1 -1
  190. package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
  191. package/examples/typescript/venn-diagram/package.json +1 -1
  192. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  193. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  194. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  195. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  196. package/examples/typescript/xy-bubble/package.json +1 -1
  197. package/examples/typescript/xy-candlestick/package.json +1 -1
  198. package/examples/typescript/xy-clustered-column/package.json +1 -1
  199. package/examples/typescript/xy-column/package.json +1 -1
  200. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  201. package/examples/typescript/xy-data-grouping/package.json +1 -1
  202. package/examples/typescript/xy-draggable-range/package.json +1 -1
  203. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  204. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  205. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  206. package/examples/typescript/xy-line/package.json +1 -1
  207. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  208. package/examples/typescript/xy-live-data/package.json +1 -1
  209. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  210. package/examples/typescript/xy-ohlc/package.json +1 -1
  211. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  212. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  213. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  214. package/examples/typescript/xy-stacked-column/package.json +1 -1
  215. package/examples/typescript/xy-stacked-step/package.json +1 -1
  216. package/examples/typescript/xy-stock/package.json +1 -1
  217. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  218. package/index.d.ts +1 -0
  219. package/index.d.ts.map +1 -1
  220. package/index.js +1 -0
  221. package/index.js.map +1 -1
  222. package/package.json +1 -1
@@ -38,6 +38,43 @@ function checkEvenArgs(name, actual, expected) {
38
38
  throw new Error("Arguments for " + name + " must be in pairs of " + expected);
39
39
  }
40
40
  }
41
+ /**
42
+ * @ignore
43
+ * This splits the flag so that way 0017 will be processed as 0 0 17
44
+ *
45
+ * This is important for weird paths like `M17 5A1 1 0 0017 30 1 1 0 0017 5`
46
+ */
47
+ function splitArcFlags(args) {
48
+ for (var i = 0; i < args.length; i += 7) {
49
+ var index = i + 3;
50
+ var flag = args[index];
51
+ if (flag.length > 1) {
52
+ var a = /^([01])([01])(.*)$/.exec(flag);
53
+ if (a !== null) {
54
+ args.splice(index, 0, a[1]);
55
+ ++index;
56
+ args.splice(index, 0, a[2]);
57
+ ++index;
58
+ if (a[3].length > 0) {
59
+ args[index] = a[3];
60
+ }
61
+ else {
62
+ args.splice(index, 1);
63
+ }
64
+ }
65
+ }
66
+ ++index;
67
+ flag = args[index];
68
+ if (flag.length > 1) {
69
+ var a = /^([01])(.+)$/.exec(flag);
70
+ if (a !== null) {
71
+ args.splice(index, 0, a[1]);
72
+ ++index;
73
+ args[index] = a[2];
74
+ }
75
+ }
76
+ }
77
+ }
41
78
  /**
42
79
  * @ignore
43
80
  */
@@ -1950,7 +1987,7 @@ var CanvasGraphics = /** @class */ (function (_super) {
1950
1987
  var rest = match[2];
1951
1988
  var args = [];
1952
1989
  while ((match = ARGS_REGEXP.exec(rest)) !== null) {
1953
- args.push(+match[1]);
1990
+ args.push(match[1]);
1954
1991
  }
1955
1992
  // Reset control point
1956
1993
  if (name_1 !== "S" && name_1 !== "s" && name_1 !== "C" && name_1 !== "c") {
@@ -1965,91 +2002,91 @@ var CanvasGraphics = /** @class */ (function (_super) {
1965
2002
  switch (name_1) {
1966
2003
  case "M":
1967
2004
  checkEvenArgs(name_1, args.length, 2);
1968
- x = args[0];
1969
- y = args[1];
2005
+ x = +args[0];
2006
+ y = +args[1];
1970
2007
  this.moveTo(x, y);
1971
2008
  for (var i = 2; i < args.length; i += 2) {
1972
- x = args[i];
1973
- y = args[i + 1];
2009
+ x = +args[i];
2010
+ y = +args[i + 1];
1974
2011
  this.lineTo(x, y);
1975
2012
  }
1976
2013
  break;
1977
2014
  case "m":
1978
2015
  checkEvenArgs(name_1, args.length, 2);
1979
- x += args[0];
1980
- y += args[1];
2016
+ x += +args[0];
2017
+ y += +args[1];
1981
2018
  this.moveTo(x, y);
1982
2019
  for (var i = 2; i < args.length; i += 2) {
1983
- x += args[i];
1984
- y += args[i + 1];
2020
+ x += +args[i];
2021
+ y += +args[i + 1];
1985
2022
  this.lineTo(x, y);
1986
2023
  }
1987
2024
  break;
1988
2025
  case "L":
1989
2026
  checkEvenArgs(name_1, args.length, 2);
1990
2027
  for (var i = 0; i < args.length; i += 2) {
1991
- x = args[i];
1992
- y = args[i + 1];
2028
+ x = +args[i];
2029
+ y = +args[i + 1];
1993
2030
  this.lineTo(x, y);
1994
2031
  }
1995
2032
  break;
1996
2033
  case "l":
1997
2034
  checkEvenArgs(name_1, args.length, 2);
1998
2035
  for (var i = 0; i < args.length; i += 2) {
1999
- x += args[i];
2000
- y += args[i + 1];
2036
+ x += +args[i];
2037
+ y += +args[i + 1];
2001
2038
  this.lineTo(x, y);
2002
2039
  }
2003
2040
  break;
2004
2041
  case "H":
2005
2042
  checkMinArgs(name_1, args.length, 1);
2006
2043
  for (var i = 0; i < args.length; ++i) {
2007
- x = args[i];
2044
+ x = +args[i];
2008
2045
  this.lineTo(x, y);
2009
2046
  }
2010
2047
  break;
2011
2048
  case "h":
2012
2049
  checkMinArgs(name_1, args.length, 1);
2013
2050
  for (var i = 0; i < args.length; ++i) {
2014
- x += args[i];
2051
+ x += +args[i];
2015
2052
  this.lineTo(x, y);
2016
2053
  }
2017
2054
  break;
2018
2055
  case "V":
2019
2056
  checkMinArgs(name_1, args.length, 1);
2020
2057
  for (var i = 0; i < args.length; ++i) {
2021
- y = args[i];
2058
+ y = +args[i];
2022
2059
  this.lineTo(x, y);
2023
2060
  }
2024
2061
  break;
2025
2062
  case "v":
2026
2063
  checkMinArgs(name_1, args.length, 1);
2027
2064
  for (var i = 0; i < args.length; ++i) {
2028
- y += args[i];
2065
+ y += +args[i];
2029
2066
  this.lineTo(x, y);
2030
2067
  }
2031
2068
  break;
2032
2069
  case "C":
2033
2070
  checkEvenArgs(name_1, args.length, 6);
2034
2071
  for (var i = 0; i < args.length; i += 6) {
2035
- var x1 = args[i];
2036
- var y1 = args[i + 1];
2037
- cpx = args[i + 2];
2038
- cpy = args[i + 3];
2039
- x = args[i + 4];
2040
- y = args[i + 5];
2072
+ var x1 = +args[i];
2073
+ var y1 = +args[i + 1];
2074
+ cpx = +args[i + 2];
2075
+ cpy = +args[i + 3];
2076
+ x = +args[i + 4];
2077
+ y = +args[i + 5];
2041
2078
  this.bezierCurveTo(x1, y1, cpx, cpy, x, y);
2042
2079
  }
2043
2080
  break;
2044
2081
  case "c":
2045
2082
  checkEvenArgs(name_1, args.length, 6);
2046
2083
  for (var i = 0; i < args.length; i += 6) {
2047
- var x1 = args[i] + x;
2048
- var y1 = args[i + 1] + y;
2049
- cpx = args[i + 2] + x;
2050
- cpy = args[i + 3] + y;
2051
- x += args[i + 4];
2052
- y += args[i + 5];
2084
+ var x1 = +args[i] + x;
2085
+ var y1 = +args[i + 1] + y;
2086
+ cpx = +args[i + 2] + x;
2087
+ cpy = +args[i + 3] + y;
2088
+ x += +args[i + 4];
2089
+ y += +args[i + 5];
2053
2090
  this.bezierCurveTo(x1, y1, cpx, cpy, x, y);
2054
2091
  }
2055
2092
  break;
@@ -2062,10 +2099,10 @@ var CanvasGraphics = /** @class */ (function (_super) {
2062
2099
  for (var i = 0; i < args.length; i += 4) {
2063
2100
  var x1 = 2 * x - cpx;
2064
2101
  var y1 = 2 * y - cpy;
2065
- cpx = args[i];
2066
- cpy = args[i + 1];
2067
- x = args[i + 2];
2068
- y = args[i + 3];
2102
+ cpx = +args[i];
2103
+ cpy = +args[i + 1];
2104
+ x = +args[i + 2];
2105
+ y = +args[i + 3];
2069
2106
  this.bezierCurveTo(x1, y1, cpx, cpy, x, y);
2070
2107
  }
2071
2108
  break;
@@ -2078,30 +2115,30 @@ var CanvasGraphics = /** @class */ (function (_super) {
2078
2115
  for (var i = 0; i < args.length; i += 4) {
2079
2116
  var x1 = 2 * x - cpx;
2080
2117
  var y1 = 2 * y - cpy;
2081
- cpx = args[i] + x;
2082
- cpy = args[i + 1] + y;
2083
- x += args[i + 2];
2084
- y += args[i + 3];
2118
+ cpx = +args[i] + x;
2119
+ cpy = +args[i + 1] + y;
2120
+ x += +args[i + 2];
2121
+ y += +args[i + 3];
2085
2122
  this.bezierCurveTo(x1, y1, cpx, cpy, x, y);
2086
2123
  }
2087
2124
  break;
2088
2125
  case "Q":
2089
2126
  checkEvenArgs(name_1, args.length, 4);
2090
2127
  for (var i = 0; i < args.length; i += 4) {
2091
- qcpx = args[i];
2092
- qcpy = args[i + 1];
2093
- x = args[i + 2];
2094
- y = args[i + 3];
2128
+ qcpx = +args[i];
2129
+ qcpy = +args[i + 1];
2130
+ x = +args[i + 2];
2131
+ y = +args[i + 3];
2095
2132
  this.quadraticCurveTo(qcpx, qcpy, x, y);
2096
2133
  }
2097
2134
  break;
2098
2135
  case "q":
2099
2136
  checkEvenArgs(name_1, args.length, 4);
2100
2137
  for (var i = 0; i < args.length; i += 4) {
2101
- qcpx = args[i] + x;
2102
- qcpy = args[i + 1] + y;
2103
- x += args[i + 2];
2104
- y += args[i + 3];
2138
+ qcpx = +args[i] + x;
2139
+ qcpy = +args[i + 1] + y;
2140
+ x += +args[i + 2];
2141
+ y += +args[i + 3];
2105
2142
  this.quadraticCurveTo(qcpx, qcpy, x, y);
2106
2143
  }
2107
2144
  break;
@@ -2114,8 +2151,8 @@ var CanvasGraphics = /** @class */ (function (_super) {
2114
2151
  for (var i = 0; i < args.length; i += 2) {
2115
2152
  qcpx = 2 * x - qcpx;
2116
2153
  qcpy = 2 * y - qcpy;
2117
- x = args[i];
2118
- y = args[i + 1];
2154
+ x = +args[i];
2155
+ y = +args[i + 1];
2119
2156
  this.quadraticCurveTo(qcpx, qcpy, x, y);
2120
2157
  }
2121
2158
  break;
@@ -2128,18 +2165,19 @@ var CanvasGraphics = /** @class */ (function (_super) {
2128
2165
  for (var i = 0; i < args.length; i += 2) {
2129
2166
  qcpx = 2 * x - qcpx;
2130
2167
  qcpy = 2 * y - qcpy;
2131
- x += args[i];
2132
- y += args[i + 1];
2168
+ x += +args[i];
2169
+ y += +args[i + 1];
2133
2170
  this.quadraticCurveTo(qcpx, qcpy, x, y);
2134
2171
  }
2135
2172
  break;
2136
2173
  case "A":
2137
2174
  case "a":
2138
2175
  var relative = (name_1 === "a");
2176
+ splitArcFlags(args);
2139
2177
  checkEvenArgs(name_1, args.length, 7);
2140
2178
  for (var i = 0; i < args.length; i += 7) {
2141
- var cx = args[i + 5];
2142
- var cy = args[i + 6];
2179
+ var cx = +args[i + 5];
2180
+ var cy = +args[i + 6];
2143
2181
  if (relative) {
2144
2182
  cx += x;
2145
2183
  cy += y;
@@ -2147,11 +2185,11 @@ var CanvasGraphics = /** @class */ (function (_super) {
2147
2185
  var bs = arcToBezier({
2148
2186
  px: x,
2149
2187
  py: y,
2150
- rx: args[i],
2151
- ry: args[i + 1],
2152
- xAxisRotation: args[i + 2],
2153
- largeArcFlag: assertBinary(args[i + 3]),
2154
- sweepFlag: assertBinary(args[i + 4]),
2188
+ rx: +args[i],
2189
+ ry: +args[i + 1],
2190
+ xAxisRotation: +args[i + 2],
2191
+ largeArcFlag: assertBinary(+args[i + 3]),
2192
+ sweepFlag: assertBinary(+args[i + 4]),
2155
2193
  cx: cx,
2156
2194
  cy: cy,
2157
2195
  });
@@ -2562,6 +2600,14 @@ var CanvasText = /** @class */ (function (_super) {
2562
2600
  }
2563
2601
  }
2564
2602
  });
2603
+ Object.defineProperty(CanvasText.prototype, "_ignoreFontWeight", {
2604
+ enumerable: false,
2605
+ configurable: true,
2606
+ writable: true,
2607
+ value: function () {
2608
+ return /apple/i.test(navigator.vendor);
2609
+ }
2610
+ });
2565
2611
  Object.defineProperty(CanvasText.prototype, "_measure", {
2566
2612
  enumerable: false,
2567
2613
  configurable: true,
@@ -2581,7 +2627,7 @@ var CanvasText = /** @class */ (function (_super) {
2581
2627
  // Pre-render
2582
2628
  context.save();
2583
2629
  ghostContext.save();
2584
- this._prerender(layer, true, true);
2630
+ this._prerender(layer, true, this._ignoreFontWeight());
2585
2631
  // Get default font metrix
2586
2632
  var refText = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ";
2587
2633
  // Split up text into lines
@@ -3234,173 +3280,175 @@ var CanvasRadialText = /** @class */ (function (_super) {
3234
3280
  configurable: true,
3235
3281
  writable: true,
3236
3282
  value: function (parentLayer) {
3237
- var layer = this._layer || parentLayer;
3238
- this._prerender(layer);
3239
- var interactive = this._isInteractive();
3240
- var context = layer.context;
3241
- var layerDirty = layer.dirty;
3242
- var ghostContext = this._renderer._ghostContext;
3243
- // Savepoint
3244
- context.save();
3245
- if (interactive) {
3246
- ghostContext.save();
3247
- }
3248
- // Init
3249
- var radius = (this.radius || 0);
3250
- var startAngle = (this.startAngle || 0);
3251
- var deltaAngle = 0;
3252
- var orientation = this.orientation;
3253
- var inward = orientation == "auto" ? "auto" : orientation == "inward";
3254
- var inside = this.inside;
3255
- var align = this.style.textAlign || "left";
3256
- var kerning = this.kerning || 0;
3257
- var clockwise = align == "left" ? 1 : -1;
3258
- var shouldReverse = !this._textReversed;
3259
- // We need measurements in order to properly position text for alignment
3260
- if (!this._textInfo) {
3261
- this._measure(layer);
3262
- }
3263
- // Check if we need to invert the whole stuff
3264
- if (inward == "auto") {
3265
- // Calc max angle so we know whether we need to flip it
3266
- var maxAngle_1 = 0;
3267
- var midAngle = 0;
3268
- $array.each(this._textInfo, function (line, _index) {
3269
- var deltaAngle = startAngle + (line.width / (radius - line.height)) / 2 * -clockwise;
3270
- if (deltaAngle > maxAngle_1) {
3271
- maxAngle_1 = deltaAngle;
3272
- }
3273
- });
3274
- if (align == "left") {
3275
- midAngle = (maxAngle_1 + deltaAngle / 2) * $math.DEGREES;
3276
- }
3277
- else if (align == "right") {
3278
- midAngle = (maxAngle_1 - deltaAngle / 2) * $math.DEGREES;
3279
- }
3280
- else {
3281
- midAngle = startAngle * $math.DEGREES;
3282
- }
3283
- midAngle = $math.normalizeAngle(midAngle);
3284
- inward = (midAngle >= 270) || (midAngle <= 90);
3285
- }
3286
- if (inward == true && shouldReverse) {
3287
- this._textInfo.reverse();
3288
- this._textReversed = true;
3289
- }
3290
- // if ((inward == false && align == "left") || (inward == true && align == "right")) {
3291
- // clockwise *= -1;
3292
- // }
3293
- // Process text info produced by _measure()
3294
- $array.each(this._textInfo, function (line, _index) {
3295
- var textHeight = line.height;
3296
- // Adjust radius (for `inside = false`)
3297
- // Radius adjustment for `inside = false` is below the line calculation
3298
- if (!inside) {
3299
- radius += textHeight;
3300
- }
3301
- // Reverse letters if we're painting them counter-clockwise
3302
- if (((clockwise == -1 && inward) || (clockwise == 1 && !inward)) && shouldReverse) {
3303
- line.textChunks.reverse();
3304
- }
3305
- // Init angles
3306
- var lineStartAngle = startAngle;
3307
- deltaAngle = 0;
3308
- // Adjust for center-align
3309
- if (align == "center") {
3310
- lineStartAngle += (line.width / (radius - textHeight)) / 2 * -clockwise;
3311
- deltaAngle = lineStartAngle - startAngle;
3312
- }
3313
- // if (inward == "auto") {
3314
- // let midAngle;
3315
- // if (align == "left") {
3316
- // midAngle = (lineStartAngle + deltaAngle / 2) * $math.DEGREES;
3317
- // }
3318
- // else if () {
3319
- // midAngle = (lineStartAngle - deltaAngle / 2) * $math.DEGREES;
3320
- // }
3321
- // inward = (midAngle >= 270) || (midAngle <= 90);
3322
- // }
3323
- // Rotate letters if they are facing outward
3324
- lineStartAngle += (Math.PI * (inward ? 0 : 1)); // Rotate 180 if outward
3283
+ if (this._textVisible) {
3284
+ var layer = this._layer || parentLayer;
3285
+ this._prerender(layer);
3286
+ var interactive_2 = this._isInteractive();
3287
+ var context_3 = layer.context;
3288
+ var layerDirty_2 = layer.dirty;
3289
+ var ghostContext_3 = this._renderer._ghostContext;
3325
3290
  // Savepoint
3326
- context.save();
3327
- if (interactive) {
3328
- ghostContext.save();
3291
+ context_3.save();
3292
+ if (interactive_2) {
3293
+ ghostContext_3.save();
3329
3294
  }
3330
- // Assume starting angle
3331
- context.rotate(lineStartAngle);
3332
- if (interactive) {
3333
- ghostContext.rotate(lineStartAngle);
3295
+ // Init
3296
+ var radius_1 = (this.radius || 0);
3297
+ var startAngle_1 = (this.startAngle || 0);
3298
+ var deltaAngle_1 = 0;
3299
+ var orientation_1 = this.orientation;
3300
+ var inward_1 = orientation_1 == "auto" ? "auto" : orientation_1 == "inward";
3301
+ var inside_1 = this.inside;
3302
+ var align_1 = this.style.textAlign || "left";
3303
+ var kerning_1 = this.kerning || 0;
3304
+ var clockwise_1 = align_1 == "left" ? 1 : -1;
3305
+ var shouldReverse_1 = !this._textReversed;
3306
+ // We need measurements in order to properly position text for alignment
3307
+ if (!this._textInfo) {
3308
+ this._measure(layer);
3334
3309
  }
3335
- var angleShift = 0;
3336
- $array.each(line.textChunks, function (chunk, _index) {
3337
- // Draw the letter
3338
- var char = chunk.text;
3339
- var charWidth = chunk.width;
3340
- // Rotate half a letter
3341
- angleShift = (charWidth / 2) / (radius - textHeight) * clockwise;
3342
- context.rotate(angleShift);
3343
- if (interactive) {
3344
- ghostContext.rotate(angleShift);
3345
- }
3346
- // Set style
3347
- if (chunk.style) {
3348
- context.save();
3349
- ghostContext.save();
3350
- context.font = chunk.style;
3351
- if (interactive) {
3352
- ghostContext.font = chunk.style;
3310
+ // Check if we need to invert the whole stuff
3311
+ if (inward_1 == "auto") {
3312
+ // Calc max angle so we know whether we need to flip it
3313
+ var maxAngle_1 = 0;
3314
+ var midAngle = 0;
3315
+ $array.each(this._textInfo, function (line, _index) {
3316
+ var deltaAngle = startAngle_1 + (line.width / (radius_1 - line.height)) / 2 * -clockwise_1;
3317
+ if (deltaAngle > maxAngle_1) {
3318
+ maxAngle_1 = deltaAngle;
3353
3319
  }
3320
+ });
3321
+ if (align_1 == "left") {
3322
+ midAngle = (maxAngle_1 + deltaAngle_1 / 2) * $math.DEGREES;
3354
3323
  }
3355
- if (chunk.fill) {
3356
- context.save();
3357
- context.fillStyle = chunk.fill.toCSS();
3358
- // Color does not affect ghostContext so we not set it
3324
+ else if (align_1 == "right") {
3325
+ midAngle = (maxAngle_1 - deltaAngle_1 / 2) * $math.DEGREES;
3359
3326
  }
3360
- // Center letters
3361
- context.textBaseline = "middle";
3362
- context.textAlign = "center";
3363
- if (interactive) {
3364
- ghostContext.textBaseline = "middle";
3365
- ghostContext.textAlign = "center";
3327
+ else {
3328
+ midAngle = startAngle_1 * $math.DEGREES;
3366
3329
  }
3367
- // Plop the letter
3368
- if (layerDirty) {
3369
- context.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));
3330
+ midAngle = $math.normalizeAngle(midAngle);
3331
+ inward_1 = (midAngle >= 270) || (midAngle <= 90);
3332
+ }
3333
+ if (inward_1 == true && shouldReverse_1) {
3334
+ this._textInfo.reverse();
3335
+ this._textReversed = true;
3336
+ }
3337
+ // if ((inward == false && align == "left") || (inward == true && align == "right")) {
3338
+ // clockwise *= -1;
3339
+ // }
3340
+ // Process text info produced by _measure()
3341
+ $array.each(this._textInfo, function (line, _index) {
3342
+ var textHeight = line.height;
3343
+ // Adjust radius (for `inside = false`)
3344
+ // Radius adjustment for `inside = false` is below the line calculation
3345
+ if (!inside_1) {
3346
+ radius_1 += textHeight;
3370
3347
  }
3371
- if (interactive) {
3372
- ghostContext.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));
3348
+ // Reverse letters if we're painting them counter-clockwise
3349
+ if (((clockwise_1 == -1 && inward_1) || (clockwise_1 == 1 && !inward_1)) && shouldReverse_1) {
3350
+ line.textChunks.reverse();
3373
3351
  }
3374
- if (chunk.fill) {
3375
- context.restore();
3376
- // Color does not affect ghostContext so we not set it
3352
+ // Init angles
3353
+ var lineStartAngle = startAngle_1;
3354
+ deltaAngle_1 = 0;
3355
+ // Adjust for center-align
3356
+ if (align_1 == "center") {
3357
+ lineStartAngle += (line.width / (radius_1 - textHeight)) / 2 * -clockwise_1;
3358
+ deltaAngle_1 = lineStartAngle - startAngle_1;
3377
3359
  }
3378
- // Reset style
3379
- if (chunk.style) {
3380
- context.restore();
3381
- ghostContext.restore();
3360
+ // if (inward == "auto") {
3361
+ // let midAngle;
3362
+ // if (align == "left") {
3363
+ // midAngle = (lineStartAngle + deltaAngle / 2) * $math.DEGREES;
3364
+ // }
3365
+ // else if () {
3366
+ // midAngle = (lineStartAngle - deltaAngle / 2) * $math.DEGREES;
3367
+ // }
3368
+ // inward = (midAngle >= 270) || (midAngle <= 90);
3369
+ // }
3370
+ // Rotate letters if they are facing outward
3371
+ lineStartAngle += (Math.PI * (inward_1 ? 0 : 1)); // Rotate 180 if outward
3372
+ // Savepoint
3373
+ context_3.save();
3374
+ if (interactive_2) {
3375
+ ghostContext_3.save();
3382
3376
  }
3383
- // Rotate half a letter and add spacing
3384
- angleShift = (charWidth / 2 + kerning) / (radius - textHeight) * clockwise;
3385
- context.rotate(angleShift);
3386
- if (interactive) {
3387
- ghostContext.rotate(angleShift);
3377
+ // Assume starting angle
3378
+ context_3.rotate(lineStartAngle);
3379
+ if (interactive_2) {
3380
+ ghostContext_3.rotate(lineStartAngle);
3381
+ }
3382
+ var angleShift = 0;
3383
+ $array.each(line.textChunks, function (chunk, _index) {
3384
+ // Draw the letter
3385
+ var char = chunk.text;
3386
+ var charWidth = chunk.width;
3387
+ // Rotate half a letter
3388
+ angleShift = (charWidth / 2) / (radius_1 - textHeight) * clockwise_1;
3389
+ context_3.rotate(angleShift);
3390
+ if (interactive_2) {
3391
+ ghostContext_3.rotate(angleShift);
3392
+ }
3393
+ // Set style
3394
+ if (chunk.style) {
3395
+ context_3.save();
3396
+ ghostContext_3.save();
3397
+ context_3.font = chunk.style;
3398
+ if (interactive_2) {
3399
+ ghostContext_3.font = chunk.style;
3400
+ }
3401
+ }
3402
+ if (chunk.fill) {
3403
+ context_3.save();
3404
+ context_3.fillStyle = chunk.fill.toCSS();
3405
+ // Color does not affect ghostContext so we not set it
3406
+ }
3407
+ // Center letters
3408
+ context_3.textBaseline = "middle";
3409
+ context_3.textAlign = "center";
3410
+ if (interactive_2) {
3411
+ ghostContext_3.textBaseline = "middle";
3412
+ ghostContext_3.textAlign = "center";
3413
+ }
3414
+ // Plop the letter
3415
+ if (layerDirty_2) {
3416
+ context_3.fillText(char, 0, (inward_1 ? 1 : -1) * (0 - radius_1 + textHeight / 2));
3417
+ }
3418
+ if (interactive_2) {
3419
+ ghostContext_3.fillText(char, 0, (inward_1 ? 1 : -1) * (0 - radius_1 + textHeight / 2));
3420
+ }
3421
+ if (chunk.fill) {
3422
+ context_3.restore();
3423
+ // Color does not affect ghostContext so we not set it
3424
+ }
3425
+ // Reset style
3426
+ if (chunk.style) {
3427
+ context_3.restore();
3428
+ ghostContext_3.restore();
3429
+ }
3430
+ // Rotate half a letter and add spacing
3431
+ angleShift = (charWidth / 2 + kerning_1) / (radius_1 - textHeight) * clockwise_1;
3432
+ context_3.rotate(angleShift);
3433
+ if (interactive_2) {
3434
+ ghostContext_3.rotate(angleShift);
3435
+ }
3436
+ });
3437
+ // Restore angle
3438
+ context_3.restore();
3439
+ if (interactive_2) {
3440
+ ghostContext_3.restore();
3441
+ }
3442
+ // Adjust radius (for `inside = true`)
3443
+ if (inside_1) {
3444
+ radius_1 -= textHeight;
3388
3445
  }
3389
3446
  });
3390
- // Restore angle
3391
- context.restore();
3392
- if (interactive) {
3393
- ghostContext.restore();
3394
- }
3395
- // Adjust radius (for `inside = true`)
3396
- if (inside) {
3397
- radius -= textHeight;
3447
+ // Restore
3448
+ context_3.restore();
3449
+ if (interactive_2) {
3450
+ ghostContext_3.restore();
3398
3451
  }
3399
- });
3400
- // Restore
3401
- context.restore();
3402
- if (interactive) {
3403
- ghostContext.restore();
3404
3452
  }
3405
3453
  }
3406
3454
  });
@@ -3426,7 +3474,14 @@ var CanvasRadialText = /** @class */ (function (_super) {
3426
3474
  var context = layer.context;
3427
3475
  var ghostContext = this._renderer._ghostContext;
3428
3476
  var rtl = this.style.direction == "rtl";
3477
+ var oversizedBehavior = this.style.oversizedBehavior;
3478
+ var maxWidth = this.style.maxWidth;
3479
+ var truncate = $type.isNumber(maxWidth) && oversizedBehavior == "truncate";
3480
+ var ellipsis = this.style.ellipsis || "";
3481
+ var ellipsisMetrics;
3482
+ //const wrap = $type.isNumber(maxWidth) && (oversizedBehavior == "wrap" || oversizedBehavior == "wrap-no-break");
3429
3483
  // Reset text info
3484
+ this._textVisible = true;
3430
3485
  this._textInfo = [];
3431
3486
  this._textReversed = false;
3432
3487
  // Pre-render
@@ -3436,6 +3491,7 @@ var CanvasRadialText = /** @class */ (function (_super) {
3436
3491
  // Split up text into lines
3437
3492
  var lines = this.text.toString().replace(/\r/g, "").split(/\n/);
3438
3493
  var styleRestored = true;
3494
+ var totalWidth = 0;
3439
3495
  // Iterate through the lines
3440
3496
  var offsetY = 0;
3441
3497
  $array.each(lines, function (line, _index) {
@@ -3483,6 +3539,9 @@ var CanvasRadialText = /** @class */ (function (_super) {
3483
3539
  }
3484
3540
  styleRestored = false;
3485
3541
  }
3542
+ if (truncate) {
3543
+ ellipsisMetrics = _this._measureText(ellipsis, context);
3544
+ }
3486
3545
  }
3487
3546
  // Text format
3488
3547
  else if (chunk.type == "value") {
@@ -3523,6 +3582,40 @@ var CanvasRadialText = /** @class */ (function (_super) {
3523
3582
  offsetY: chunkHeight,
3524
3583
  textDecoration: undefined
3525
3584
  });
3585
+ totalWidth += chunkWidth;
3586
+ // Handle oversized behavior
3587
+ if (truncate) {
3588
+ // Measure ellipsis and check if it fits
3589
+ if (!ellipsisMetrics) {
3590
+ ellipsisMetrics = _this._measureText(ellipsis, context);
3591
+ }
3592
+ var ellipsisWidth = ellipsisMetrics.actualBoundingBoxLeft + ellipsisMetrics.actualBoundingBoxRight;
3593
+ totalWidth += ellipsisWidth;
3594
+ if ((totalWidth + ellipsisWidth) > maxWidth) {
3595
+ if (lineInfo.textChunks.length == 1) {
3596
+ _this._textVisible = false;
3597
+ }
3598
+ else {
3599
+ lineInfo.width += ellipsisWidth;
3600
+ lineInfo.left += ellipsisMetrics.actualBoundingBoxLeft;
3601
+ lineInfo.right += ellipsisMetrics.actualBoundingBoxRight;
3602
+ lineInfo.textChunks.push({
3603
+ style: currentStyle,
3604
+ fill: currentFill,
3605
+ text: ellipsis,
3606
+ width: ellipsisWidth,
3607
+ height: chunkHeight + ellipsisMetrics.actualBoundingBoxDescent,
3608
+ left: ellipsisMetrics.actualBoundingBoxLeft,
3609
+ right: ellipsisMetrics.actualBoundingBoxRight,
3610
+ ascent: ellipsisMetrics.actualBoundingBoxAscent,
3611
+ offsetX: 0,
3612
+ offsetY: chunkHeight,
3613
+ textDecoration: undefined
3614
+ });
3615
+ }
3616
+ break;
3617
+ }
3618
+ }
3526
3619
  if (rtl) {
3527
3620
  break;
3528
3621
  }
@@ -3543,6 +3636,9 @@ var CanvasRadialText = /** @class */ (function (_super) {
3543
3636
  context.restore();
3544
3637
  ghostContext.restore();
3545
3638
  }
3639
+ if (oversizedBehavior == "hide" && (totalWidth > maxWidth)) {
3640
+ this._textVisible = false;
3641
+ }
3546
3642
  // Adjust chunk internal offsets
3547
3643
  $array.each(this._textInfo, function (lineInfo) {
3548
3644
  $array.each(lineInfo.textChunks, function (chunk) {