@amcharts/amcharts5 5.1.9 → 5.1.12

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 (288) hide show
  1. package/.internal/charts/hierarchy/ForceDirected.d.ts +1 -0
  2. package/.internal/charts/hierarchy/ForceDirected.d.ts.map +1 -1
  3. package/.internal/charts/hierarchy/ForceDirected.js +9 -0
  4. package/.internal/charts/hierarchy/ForceDirected.js.map +1 -1
  5. package/.internal/charts/hierarchy/LinkedHierarchy.d.ts +1 -0
  6. package/.internal/charts/hierarchy/LinkedHierarchy.d.ts.map +1 -1
  7. package/.internal/charts/hierarchy/LinkedHierarchy.js +12 -3
  8. package/.internal/charts/hierarchy/LinkedHierarchy.js.map +1 -1
  9. package/.internal/charts/radar/RadarChart.d.ts.map +1 -1
  10. package/.internal/charts/radar/RadarChart.js +0 -2
  11. package/.internal/charts/radar/RadarChart.js.map +1 -1
  12. package/.internal/charts/xy/XYChart.d.ts +8 -1
  13. package/.internal/charts/xy/XYChart.d.ts.map +1 -1
  14. package/.internal/charts/xy/XYChart.js +22 -3
  15. package/.internal/charts/xy/XYChart.js.map +1 -1
  16. package/.internal/charts/xy/XYChartDefaultTheme.d.ts.map +1 -1
  17. package/.internal/charts/xy/XYChartDefaultTheme.js +0 -2
  18. package/.internal/charts/xy/XYChartDefaultTheme.js.map +1 -1
  19. package/.internal/charts/xy/axes/Axis.d.ts.map +1 -1
  20. package/.internal/charts/xy/axes/Axis.js +1 -0
  21. package/.internal/charts/xy/axes/Axis.js.map +1 -1
  22. package/.internal/charts/xy/axes/AxisRendererX.d.ts.map +1 -1
  23. package/.internal/charts/xy/axes/AxisRendererX.js +1 -0
  24. package/.internal/charts/xy/axes/AxisRendererX.js.map +1 -1
  25. package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
  26. package/.internal/charts/xy/axes/DateAxis.js +46 -4
  27. package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
  28. package/.internal/charts/xy/axes/ValueAxis.d.ts +13 -0
  29. package/.internal/charts/xy/axes/ValueAxis.d.ts.map +1 -1
  30. package/.internal/charts/xy/axes/ValueAxis.js +125 -75
  31. package/.internal/charts/xy/axes/ValueAxis.js.map +1 -1
  32. package/.internal/charts/xy/series/BaseColumnSeries.d.ts.map +1 -1
  33. package/.internal/charts/xy/series/BaseColumnSeries.js +9 -0
  34. package/.internal/charts/xy/series/BaseColumnSeries.js.map +1 -1
  35. package/.internal/charts/xy/series/XYSeries.d.ts +11 -0
  36. package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
  37. package/.internal/charts/xy/series/XYSeries.js +44 -11
  38. package/.internal/charts/xy/series/XYSeries.js.map +1 -1
  39. package/.internal/core/Root.d.ts +1 -0
  40. package/.internal/core/Root.d.ts.map +1 -1
  41. package/.internal/core/Root.js +11 -2
  42. package/.internal/core/Root.js.map +1 -1
  43. package/.internal/core/render/GridLayout.d.ts.map +1 -1
  44. package/.internal/core/render/GridLayout.js +11 -9
  45. package/.internal/core/render/GridLayout.js.map +1 -1
  46. package/.internal/core/render/HorizontalLayout.d.ts.map +1 -1
  47. package/.internal/core/render/HorizontalLayout.js +40 -34
  48. package/.internal/core/render/HorizontalLayout.js.map +1 -1
  49. package/.internal/core/render/Legend.d.ts.map +1 -1
  50. package/.internal/core/render/Legend.js +7 -0
  51. package/.internal/core/render/Legend.js.map +1 -1
  52. package/.internal/core/render/Scrollbar.d.ts.map +1 -1
  53. package/.internal/core/render/Scrollbar.js +3 -0
  54. package/.internal/core/render/Scrollbar.js.map +1 -1
  55. package/.internal/core/render/Series.d.ts +5 -0
  56. package/.internal/core/render/Series.d.ts.map +1 -1
  57. package/.internal/core/render/Series.js +40 -10
  58. package/.internal/core/render/Series.js.map +1 -1
  59. package/.internal/core/render/Sprite.d.ts +4 -0
  60. package/.internal/core/render/Sprite.d.ts.map +1 -1
  61. package/.internal/core/render/Sprite.js +14 -0
  62. package/.internal/core/render/Sprite.js.map +1 -1
  63. package/.internal/core/render/VerticalLayout.d.ts.map +1 -1
  64. package/.internal/core/render/VerticalLayout.js +40 -34
  65. package/.internal/core/render/VerticalLayout.js.map +1 -1
  66. package/.internal/core/render/backend/CanvasRenderer.d.ts +1 -0
  67. package/.internal/core/render/backend/CanvasRenderer.d.ts.map +1 -1
  68. package/.internal/core/render/backend/CanvasRenderer.js +17 -1
  69. package/.internal/core/render/backend/CanvasRenderer.js.map +1 -1
  70. package/.internal/core/render/backend/Renderer.d.ts +1 -0
  71. package/.internal/core/render/backend/Renderer.d.ts.map +1 -1
  72. package/.internal/core/render/backend/Renderer.js.map +1 -1
  73. package/.internal/core/util/PopulateString.js +12 -2
  74. package/.internal/core/util/PopulateString.js.map +1 -1
  75. package/.internal/core/util/Time.d.ts.map +1 -1
  76. package/.internal/core/util/Time.js +4 -0
  77. package/.internal/core/util/Time.js.map +1 -1
  78. package/.internal/plugins/exporting/ExportingMenu.d.ts.map +1 -1
  79. package/.internal/plugins/exporting/ExportingMenu.js +3 -2
  80. package/.internal/plugins/exporting/ExportingMenu.js.map +1 -1
  81. package/.internal/plugins/json/Classes-script.d.ts +271 -0
  82. package/.internal/plugins/json/Classes-script.d.ts.map +1 -0
  83. package/.internal/plugins/json/Classes-script.js +139 -0
  84. package/.internal/plugins/json/Classes-script.js.map +1 -0
  85. package/.internal/plugins/json/Classes.d.ts +262 -262
  86. package/.internal/plugins/json/Classes.d.ts.map +1 -1
  87. package/.internal/plugins/json/Classes.js +131 -262
  88. package/.internal/plugins/json/Classes.js.map +1 -1
  89. package/.internal/plugins/json/Json.d.ts +3 -3
  90. package/.internal/plugins/json/Json.d.ts.map +1 -1
  91. package/.internal/plugins/json/Json.js +301 -34
  92. package/.internal/plugins/json/Json.js.map +1 -1
  93. package/CHANGELOG.md +45 -0
  94. package/examples/javascript/flow-chord/package.json +1 -1
  95. package/examples/javascript/flow-chord-directed/package.json +1 -1
  96. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  97. package/examples/javascript/flow-sankey/package.json +1 -1
  98. package/examples/javascript/gauge/package.json +1 -1
  99. package/examples/javascript/gauge-bands/package.json +1 -1
  100. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  101. package/examples/javascript/hierarchy-pack/package.json +1 -1
  102. package/examples/javascript/hierarchy-partition/package.json +1 -1
  103. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  104. package/examples/javascript/hierarchy-tree/package.json +1 -1
  105. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  106. package/examples/javascript/json/README.md +6 -0
  107. package/examples/javascript/json/index.css +11 -0
  108. package/examples/javascript/json/index.html +12 -0
  109. package/examples/javascript/json/index.js +206 -0
  110. package/examples/javascript/json/package.json +16 -0
  111. package/examples/javascript/json/webpack.config.js +38 -0
  112. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  113. package/examples/javascript/map-day-and-night/package.json +1 -1
  114. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  115. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  116. package/examples/javascript/map-with-bubbles/package.json +1 -1
  117. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  118. package/examples/javascript/misc-40-charts/package.json +1 -1
  119. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  120. package/examples/javascript/pie-chart/package.json +1 -1
  121. package/examples/javascript/pie-donut-chart/package.json +1 -1
  122. package/examples/javascript/pie-variable-radius/package.json +1 -1
  123. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  124. package/examples/javascript/radar-heat-map/package.json +1 -1
  125. package/examples/javascript/radar-line/package.json +1 -1
  126. package/examples/javascript/radar-time-line/package.json +1 -1
  127. package/examples/javascript/sliced-funnel/package.json +1 -1
  128. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  129. package/examples/javascript/sliced-pyramid/package.json +1 -1
  130. package/examples/javascript/venn-diagram/package.json +1 -1
  131. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  132. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  133. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  134. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  135. package/examples/javascript/xy-bubble/package.json +1 -1
  136. package/examples/javascript/xy-candlestick/package.json +1 -1
  137. package/examples/javascript/xy-clustered-column/package.json +1 -1
  138. package/examples/javascript/xy-column/package.json +1 -1
  139. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  140. package/examples/javascript/xy-data-grouping/package.json +1 -1
  141. package/examples/javascript/xy-draggable-range/package.json +1 -1
  142. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  143. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  144. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  145. package/examples/javascript/xy-line/package.json +1 -1
  146. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  147. package/examples/javascript/xy-live-data/package.json +1 -1
  148. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  149. package/examples/javascript/xy-ohlc/package.json +1 -1
  150. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  151. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  152. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  153. package/examples/javascript/xy-stacked-column/package.json +1 -1
  154. package/examples/javascript/xy-stacked-step/package.json +1 -1
  155. package/examples/javascript/xy-stock/package.json +1 -1
  156. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  157. package/examples/typescript/flow-chord/package.json +1 -1
  158. package/examples/typescript/flow-chord/webpack.config.js +1 -1
  159. package/examples/typescript/flow-chord-directed/package.json +1 -1
  160. package/examples/typescript/flow-chord-directed/webpack.config.js +1 -1
  161. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  162. package/examples/typescript/flow-chord-non-ribbon/webpack.config.js +1 -1
  163. package/examples/typescript/flow-sankey/package.json +1 -1
  164. package/examples/typescript/flow-sankey/webpack.config.js +1 -1
  165. package/examples/typescript/gauge/package.json +1 -1
  166. package/examples/typescript/gauge/webpack.config.js +1 -1
  167. package/examples/typescript/gauge-bands/package.json +1 -1
  168. package/examples/typescript/gauge-bands/webpack.config.js +1 -1
  169. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  170. package/examples/typescript/hierarchy-force-directed/webpack.config.js +1 -1
  171. package/examples/typescript/hierarchy-pack/package.json +1 -1
  172. package/examples/typescript/hierarchy-pack/webpack.config.js +1 -1
  173. package/examples/typescript/hierarchy-partition/package.json +1 -1
  174. package/examples/typescript/hierarchy-partition/webpack.config.js +1 -1
  175. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  176. package/examples/typescript/hierarchy-sunburst/webpack.config.js +1 -1
  177. package/examples/typescript/hierarchy-tree/package.json +1 -1
  178. package/examples/typescript/hierarchy-tree/webpack.config.js +1 -1
  179. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  180. package/examples/typescript/hierarchy-treemap/webpack.config.js +1 -1
  181. package/examples/typescript/json/README.md +6 -0
  182. package/examples/typescript/json/index.css +11 -0
  183. package/examples/typescript/json/index.html +12 -0
  184. package/examples/typescript/json/index.ts +206 -0
  185. package/examples/typescript/json/package.json +18 -0
  186. package/examples/typescript/json/tsconfig.json +12 -0
  187. package/examples/typescript/json/webpack.config.js +45 -0
  188. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  189. package/examples/typescript/map-animating-along-lines/webpack.config.js +1 -1
  190. package/examples/typescript/map-day-and-night/package.json +1 -1
  191. package/examples/typescript/map-day-and-night/webpack.config.js +1 -1
  192. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  193. package/examples/typescript/map-globe-rotate-to-country/webpack.config.js +1 -1
  194. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  195. package/examples/typescript/map-globe-with-projected-circles/webpack.config.js +1 -1
  196. package/examples/typescript/map-with-bubbles/package.json +1 -1
  197. package/examples/typescript/map-with-bubbles/webpack.config.js +1 -1
  198. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  199. package/examples/typescript/map-zoom-to-country/webpack.config.js +1 -1
  200. package/examples/typescript/misc-40-charts/package.json +1 -1
  201. package/examples/typescript/misc-40-charts/webpack.config.js +1 -1
  202. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  203. package/examples/typescript/misc-microchart-grid/webpack.config.js +1 -1
  204. package/examples/typescript/pie-chart/package.json +1 -1
  205. package/examples/typescript/pie-chart/webpack.config.js +1 -1
  206. package/examples/typescript/pie-donut-chart/package.json +1 -1
  207. package/examples/typescript/pie-donut-chart/webpack.config.js +1 -1
  208. package/examples/typescript/pie-variable-radius/package.json +1 -1
  209. package/examples/typescript/pie-variable-radius/webpack.config.js +1 -1
  210. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  211. package/examples/typescript/radar-column-iwatch-style/webpack.config.js +1 -1
  212. package/examples/typescript/radar-heat-map/package.json +1 -1
  213. package/examples/typescript/radar-heat-map/webpack.config.js +1 -1
  214. package/examples/typescript/radar-line/package.json +1 -1
  215. package/examples/typescript/radar-line/webpack.config.js +1 -1
  216. package/examples/typescript/radar-time-line/package.json +1 -1
  217. package/examples/typescript/radar-time-line/webpack.config.js +1 -1
  218. package/examples/typescript/sliced-funnel/package.json +1 -1
  219. package/examples/typescript/sliced-funnel/webpack.config.js +1 -1
  220. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  221. package/examples/typescript/sliced-pictorial-stacked/webpack.config.js +1 -1
  222. package/examples/typescript/sliced-pyramid/package.json +1 -1
  223. package/examples/typescript/sliced-pyramid/webpack.config.js +1 -1
  224. package/examples/typescript/venn-diagram/package.json +1 -1
  225. package/examples/typescript/venn-diagram/webpack.config.js +1 -1
  226. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  227. package/examples/typescript/wordcloud-with-data/webpack.config.js +1 -1
  228. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  229. package/examples/typescript/wordcloud-with-text/webpack.config.js +1 -1
  230. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  231. package/examples/typescript/xy-100-percent-stacked-column/webpack.config.js +1 -1
  232. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  233. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/webpack.config.js +1 -1
  234. package/examples/typescript/xy-bubble/package.json +1 -1
  235. package/examples/typescript/xy-bubble/webpack.config.js +1 -1
  236. package/examples/typescript/xy-candlestick/package.json +1 -1
  237. package/examples/typescript/xy-candlestick/webpack.config.js +1 -1
  238. package/examples/typescript/xy-clustered-column/package.json +1 -1
  239. package/examples/typescript/xy-clustered-column/webpack.config.js +1 -1
  240. package/examples/typescript/xy-column/package.json +1 -1
  241. package/examples/typescript/xy-column/webpack.config.js +1 -1
  242. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  243. package/examples/typescript/xy-comparing-series-google-analytics-style/webpack.config.js +1 -1
  244. package/examples/typescript/xy-data-grouping/package.json +1 -1
  245. package/examples/typescript/xy-data-grouping/webpack.config.js +1 -1
  246. package/examples/typescript/xy-draggable-range/package.json +1 -1
  247. package/examples/typescript/xy-draggable-range/webpack.config.js +1 -1
  248. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  249. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/webpack.config.js +1 -1
  250. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  251. package/examples/typescript/xy-dumbbell plot/webpack.config.js +1 -1
  252. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  253. package/examples/typescript/xy-evenly-spaced-date-axis/webpack.config.js +1 -1
  254. package/examples/typescript/xy-line/package.json +1 -1
  255. package/examples/typescript/xy-line/webpack.config.js +1 -1
  256. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  257. package/examples/typescript/xy-line-highlight-on-legend-hover/webpack.config.js +1 -1
  258. package/examples/typescript/xy-live-data/package.json +1 -1
  259. package/examples/typescript/xy-live-data/webpack.config.js +1 -1
  260. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  261. package/examples/typescript/xy-multiple-synced-value-axes/webpack.config.js +1 -1
  262. package/examples/typescript/xy-ohlc/package.json +1 -1
  263. package/examples/typescript/xy-ohlc/webpack.config.js +1 -1
  264. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  265. package/examples/typescript/xy-real-time-data-sorting/webpack.config.js +1 -1
  266. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  267. package/examples/typescript/xy-smoothed-line/webpack.config.js +1 -1
  268. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  269. package/examples/typescript/xy-stacked-and-clustered-column/webpack.config.js +1 -1
  270. package/examples/typescript/xy-stacked-column/package.json +1 -1
  271. package/examples/typescript/xy-stacked-column/webpack.config.js +1 -1
  272. package/examples/typescript/xy-stacked-step/package.json +1 -1
  273. package/examples/typescript/xy-stacked-step/webpack.config.js +1 -1
  274. package/examples/typescript/xy-stock/package.json +1 -1
  275. package/examples/typescript/xy-stock/webpack.config.js +1 -1
  276. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  277. package/examples/typescript/xy-stock-comparing/webpack.config.js +1 -1
  278. package/index.d.ts +4 -0
  279. package/index.d.ts.map +1 -1
  280. package/index.js +4 -0
  281. package/index.js.map +1 -1
  282. package/locales/lt_LT.js +25 -25
  283. package/locales/lt_LT.js.map +1 -1
  284. package/package.json +9 -9
  285. package/xy.d.ts +1 -0
  286. package/xy.d.ts.map +1 -1
  287. package/xy.js +1 -0
  288. package/xy.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Json.js","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/Json.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAGhD,OAAO,OAAO,MAAM,WAAW,CAAC;AAYhC,SAAS,MAAM,CAAC,KAAU;IACtB,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAE,KAAa,CAAC,IAAI,CAAC,CAAC;AACjG,CAAC;AAED;IAAA;IA0CA,CAAC;;;;;eAzCG,UAA0B,IAAU,EAAE,MAAe;YAArD,iBAoCC;YAnCG,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;gBAChB,IAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAQ,CAAC;gBAC9C,IAAI,CAAC,SAAS,EAAE;oBACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;iBACjE;gBAED,IAAM,QAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAM,CAAC;gBAEzD,IAAI,QAAM,YAAY,MAAM,EAAE;oBAC1B,IAAI,MAAM,CAAC,QAAQ,EAAE;wBACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAA8B,EAAE,UAAC,OAAO;4BACvD,QAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;wBACvD,CAAC,CAAC,CAAC;qBACN;iBACJ;gBAED,IAAI,QAAM,YAAY,SAAS,EAAE;oBAC7B,IAAI,MAAM,CAAC,QAAQ,EAAE;wBACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAwB,EAAE,UAAC,KAAK;4BAC/C,IAAM,MAAM,GAAG,KAAI,CAAC,KAAK,CAAS,IAAI,EAAE,KAAK,CAAC,CAAC;4BAE/C,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC,EAAE;gCAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;6BAC9C;4BAED,QAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACjC,CAAC,CAAC,CAAC;qBACN;iBACJ;gBAED,OAAO,QAAM,CAAC;aAEjB;iBAAM;gBACH,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;aACtF;QACL,CAAC;;;;;;eAED,UAAgC,IAAU,EAAE,MAAc;YACtD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;;IACL,iBAAC;AAAD,CAAC,AA1CD,IA0CC","sourcesContent":["import type { Root } from \"../../core/Root\";\nimport type { Settings } from \"../../core/util/Entity\";\nimport { Entity } from \"../../core/util/Entity\";\nimport { Sprite } from \"../../core/render/Sprite\";\nimport { Container } from \"../../core/render/Container\";\n\nimport * as $type from \"../../core/util/Type\";\nimport * as $array from \"../../core/util/Array\";\n\nimport type { IClasses } from \"./Classes\";\nimport classes from \"./Classes\";\n\ninterface IAdapter<E extends Settings> {\n key: keyof E[\"_settings\"],\n callback: (value: E[\"_settings\"][this[\"key\"]], target: E, key: this[\"key\"]) => E[\"_settings\"][this[\"key\"]];\n}\n\ninterface IJson {\n name: keyof IClasses;\n [key: string]: unknown;\n}\n\nfunction isJson(value: any): value is IJson {\n return $type.isObject(value) && !$type.isArray(value) && $type.isString((value as any).name);\n}\n\nexport class JsonParser {\n parse<E extends Settings>(root: Root, object: unknown): E {\n if (isJson(object)) {\n const construct = classes[object.name] as any;\n if (!construct) {\n throw new Error(\"Could not find class `\" + object.name + \"`\");\n }\n\n const entity = construct.new(root, object.settings) as E;\n\n if (entity instanceof Entity) {\n if (object.adapters) {\n $array.each(object.adapters as Array<IAdapter<E>>, (adapter) => {\n entity.adapters.add(adapter.key, adapter.callback);\n });\n }\n }\n\n if (entity instanceof Container) {\n if (object.children) {\n $array.each(object.children as Array<IJson>, (child) => {\n const sprite = this.parse<Sprite>(root, child);\n\n if (!(sprite instanceof Sprite)) {\n throw new Error(\"Children must be Sprite\");\n }\n\n entity.children.push(sprite);\n });\n }\n }\n\n return entity;\n\n } else {\n throw new Error(\"JsonParser.parse requires an object which has a `name` property\");\n }\n }\n\n parseString<E extends Settings>(root: Root, string: string): E {\n return this.parse(root, JSON.parse(string));\n }\n}\n"]}
1
+ {"version":3,"file":"Json.js","sourceRoot":"","sources":["../../../../../src/.internal/plugins/json/Json.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAGlD,OAAO,OAAO,MAAM,WAAW,CAAC;AAQhC,SAAS,QAAQ,CAAC,KAAU;IACxB,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAGD,SAAe,QAAQ,CAAC,IAAY;;;;;;oBAC1B,OAAO,GAAG,OAAO,CAAC,IAAsB,CAAC,CAAC;oBACzC,qBAAM,OAAO,EAAE,EAAA;wBAAtB,sBAAO,SAAgC,EAAC;;;;CAC3C;AAGD,SAAS,UAAU,CAAC,IAAU,EAAE,KAAqB,EAAE,IAAiB;IACpE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,UAAC,KAAK,IAAK,OAAA,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAA5B,CAA4B,CAAC,CAAC,CAAC;AACnF,CAAC;AAGD,SAAS,SAAS,CAAC,IAAiB,EAAE,IAAY;IAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAEpB,OAAO,CAAC,EAAE,EAAE;QACR,IAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,IAAI,IAAI,GAAG,EAAE;YACb,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;SACpB;KACJ;IAED,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;AACnD,CAAC;AA0BD,SAAe,aAAa,CAAmB,IAAU,EAAE,MAAc,EAAE,IAAiB;;;;;;;oBAClF,QAAQ,GAA2B,EAAE,CAAC;oBAE5C,qBAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAO,GAAG;;;;;wCACzD,KAAA,QAAQ,CAAA;wCAAC,KAAA,GAAG,CAAA;wCAAI,qBAAM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAA;;wCAAxD,MAAa,GAAG,SAAwC,CAAC;;;;6BAC5D,CAAC,CAAC,EAAA;;oBAFH,SAEG,CAAC;oBAEJ,sBAAO,QAAQ,EAAC;;;;CACnB;AAGD,SAAe,eAAe,CAAC,IAAU,EAAE,MAAc,EAAE,IAAiB;;;;;wBACjE,qBAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAO,GAAG;;;;wCACjD,qBAAM,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAA;;oCAAlD,MAAM,GAAG,SAAyC;oCAExD,sBAAO,UAAC,MAAc;4CAClB,IAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAY,CAAC;4CAEnC,IAAI,GAAG,IAAI,GAAG,YAAY,MAAM,EAAE;gDAC9B,0CAA0C;gDAC1C,IAAI,MAAM,CAAC,OAAO,EAAE;oDAChB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;iDACrD;gDAED,IAAI,MAAM,CAAC,QAAQ,EAAE;oDACjB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iDAC/B;gDAED,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;6CAE5B;iDAAM,IAAI,MAAM,CAAC,OAAO,EAAE;gDACvB,wBAAwB;gDACxB,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oDACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAC,KAAK;wDAC3B,GAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oDAC7B,CAAC,CAAC,CAAC;iDAEN;qDAAM;oDACH,0CAA0C;oDACzC,MAAc,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;iDACvC;6CAEJ;iDAAM;gDACF,MAAc,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;6CACxD;wCACL,CAAC,EAAC;;;yBACL,CAAC,CAAC,EAAA;wBAlCH,sBAAO,SAkCJ,EAAC;;;;CACP;AAGD,SAAe,SAAS,CAAC,IAAU,EAAE,MAA8B,EAAE,IAAiB;;;;;;;oBAC5E,OAAO,GAAS,EAAE,CAAC;oBAEzB,qBAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAO,GAAG;;;;;wCACzD,KAAA,OAAO,CAAA;wCAAC,KAAA,GAAG,CAAA;wCAAI,qBAAM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAA;;wCAAvD,MAAY,GAAG,SAAwC,CAAC;;;;6BAC3D,CAAC,CAAC,EAAA;;oBAFH,SAEG,CAAC;oBAEJ,sBAAO,OAAO,EAAC;;;;CAClB;AAGD,SAAe,UAAU,CAAmB,IAAU,EAAE,KAAU,EAAE,IAAiB;;;;;;;yBAC7E,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAApB,wBAAoB;;wBAEhB,OAAO,EAAE,IAAI;;oBACN,qBAAM,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAA;wBAF9C,uBAEI,QAAK,GAAE,SAAmC;6BAC5C;;yBAEK,QAAQ,CAAC,KAAK,CAAC,EAAf,yBAAe;yBAClB,CAAA,KAAK,CAAC,IAAI,KAAK,OAAO,CAAA,EAAtB,wBAAsB;oBACtB,sBAAO;4BACH,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;yBACpC,EAAC;;yBAEK,CAAA,KAAK,CAAC,IAAI,KAAK,UAAU,CAAA,EAAzB,wBAAyB;yBAC5B,KAAK,CAAC,IAAI,EAAV,wBAAU;oBACH,KAAA,CAAA,KAAA,IAAI,CAAA,CAAC,MAAM,CAAA;oBAAE,qBAAM,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAA;;oBAA3D,IAAI,GAAG,eAAa,SAAuC,GAAE,CAAC;;;yBAGhD,KAAK,CAAC,QAAQ,EAAd,wBAAc;oBAAG,qBAAM,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAA;;oBAA/C,KAAA,SAA+C,CAAA;;;oBAAG,KAAA,EAAE,CAAA;;;oBAAjF,QAAQ,GAAG,IAAuE;oBAExF,sBAAO;4BACH,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;yBAChC,EAAC;;yBAGE,KAAK,CAAC,IAAI,EAAV,yBAAU;oBACH,KAAA,CAAA,KAAA,IAAI,CAAA,CAAC,MAAM,CAAA;oBAAE,qBAAM,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAA;;oBAA3D,IAAI,GAAG,eAAa,SAAuC,GAAE,CAAC;;yBAGd,qBAAM,OAAO,CAAC,GAAG,CAAC;wBAClE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBAChE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBACzF,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBAC/F,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;qBACzF,CAAC,EAAA;;oBALI,KAAA,sBAA8C,SAKlD,KAAA,EALK,SAAS,QAAA,EAAE,QAAQ,QAAA,EAAE,UAAU,QAAA,EAAE,QAAQ,QAAA;oBAOhD,sBAAO;4BACH,OAAO,EAAE,KAAK;4BACd,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,SAAS,WAAA;4BACT,QAAQ,UAAA;4BACR,QAAQ,EAAE,KAAK,CAAC,QAAQ;4BACxB,QAAQ,UAAA;4BACR,UAAU,YAAA;4BACV,KAAK,OAAA;yBACR,EAAC;;;oBAGH,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;wBAC9B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;4BACZ,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4BAE3B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gCAClB,sBAAO;wCACH,OAAO,EAAE,IAAI;wCACb,KAAK,EAAE,GAAG;qCACb,EAAC;6BAEL;iCAAM;gCACH,sBAAO;wCACH,OAAO,EAAE,IAAI;wCACb,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;qCAC9B,EAAC;6BACL;yBAEJ;6BAAM;4BACH,sBAAO;oCACH,OAAO,EAAE,IAAI;oCACb,KAAK,OAAA;iCACR,EAAC;yBACL;qBAEJ;yBAAM;wBACH,sBAAO;gCACH,OAAO,EAAE,IAAI;gCACb,KAAK,OAAA;6BACR,EAAC;qBACL;;;;;;CACJ;AAGD,SAAS,WAAW,CAAmB,MAAS,EAAE,MAAwB;IACtE,IAAI,MAAM,CAAC,QAAQ,EAAE;QACjB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAC,OAAO;YACjC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;KACN;IAED,IAAI,MAAM,CAAC,UAAU,EAAE;QACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,UAAC,EAAE;YAC9B,EAAE,CAAC,MAAM,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;KACN;IAED,IAAI,MAAM,YAAY,SAAS,EAAE;QAC7B,IAAI,MAAM,CAAC,QAAQ,EAAE;YACjB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAC3C;KACJ;AACL,CAAC;AAGD,SAAS,eAAe,CAAmB,IAAU,EAAE,MAAwB;IAC3E,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACnB,OAAO,MAAM,CAAC,KAAK,CAAC;KACvB;IAED,IAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAM,CAAC;IAEtE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5B,OAAO,MAAM,CAAC;AAClB,CAAC;AAGD,SAAe,SAAS,CAAC,IAAU,EAAE,KAAc,EAAE,IAAiB;;;;;wBACnD,qBAAM,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAA;;oBAA5C,MAAM,GAAG,SAAmC;oBAElD,IAAI,MAAM,CAAC,OAAO,EAAE;wBAChB,sBAAO,MAAM,CAAC,KAAK,EAAC;qBAEvB;yBAAM;wBACH,sBAAO,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,EAAC;qBACxC;;;;;CACJ;AAGD;IAAA;IAQA,CAAC;;;;;eAPG,UAA8B,IAAU,EAAE,MAAe;;;oBACrD,sBAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAC;;;SACtC;;;;;;eAED,UAAoC,IAAU,EAAE,MAAc;;;;gCACnD,qBAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAA;gCAAjD,sBAAO,SAA0C,EAAC;;;;SACrD;;IACL,iBAAC;AAAD,CAAC,AARD,IAQC","sourcesContent":["import type { Root } from \"../../core/Root\";\nimport type { Sprite } from \"../../core/render/Sprite\";\nimport { Entity } from \"../../core/util/Entity\";\nimport { Container } from \"../../core/render/Container\";\nimport { Color } from \"../../core/util/Color\";\nimport { Template } from \"../../core/util/Template\";\n\nimport * as $type from \"../../core/util/Type\";\nimport * as $array from \"../../core/util/Array\";\nimport * as $object from \"../../core/util/Object\";\n\nimport type { IClasses } from \"./Classes\";\nimport classes from \"./Classes\";\n\n\ninterface IRef {\n [key: string]: any;\n}\n\n\nfunction isObject(value: any): value is { [key: string]: any } {\n return $type.isObject(value);\n}\n\n\nasync function getClass(name: string): Promise<typeof Entity> {\n const promise = classes[name as keyof IClasses];\n return await promise() as typeof Entity;\n}\n\n\nfunction parseArray(root: Root, value: Array<unknown>, refs: Array<IRef>): Promise<any> {\n return Promise.all($array.map(value, (value) => parseType(root, value, refs)));\n}\n\n\nfunction lookupRef(refs: Array<IRef>, name: string): any {\n let i = refs.length;\n\n while (i--) {\n const sub = refs[i];\n\n if (name in sub) {\n return sub[name];\n }\n }\n\n throw new Error(\"Could not find ref #\" + name);\n}\n\n\ninterface IAdapter<E extends Entity> {\n key: keyof E[\"_settings\"],\n callback: (value: E[\"_settings\"][this[\"key\"]], target: E, key: this[\"key\"]) => E[\"_settings\"][this[\"key\"]],\n}\n\ntype IParsedProperties = Array<(entity: Entity) => void>;\n\ninterface IParsedEntity<E extends Entity> {\n isValue: false,\n type: string | undefined,\n construct: typeof Entity | undefined,\n settings: object | undefined,\n adapters: Array<IAdapter<E>> | undefined,\n children: Array<Sprite> | undefined,\n properties: IParsedProperties | undefined,\n value: object,\n}\n\ntype IParsed<E extends Entity>\n = IParsedEntity<E>\n | { isValue: true, value: any };\n\n\nasync function parseSettings<E extends Entity>(root: Root, object: object, refs: Array<IRef>): Promise<E[\"_settings\"]> {\n const settings: { [key: string]: any } = {};\n\n await Promise.all($array.map($object.keys(object), async (key) => {\n settings[key] = await parseType(root, object[key], refs);\n }));\n\n return settings;\n}\n\n\nasync function parseProperties(root: Root, object: object, refs: Array<IRef>): Promise<IParsedProperties> {\n return await Promise.all($array.map($object.keys(object), async (key) => {\n const parsed = await parseValue(root, object[key], refs);\n\n return (entity: Entity) => {\n const old = entity[key] as unknown;\n\n if (old && old instanceof Entity) {\n // TODO merge it if the value is an Entity\n if (parsed.isValue) {\n throw new Error(\"Cannot merge value into Entity\");\n }\n\n if (parsed.settings) {\n old.setAll(parsed.settings);\n }\n\n mergeEntity(old, parsed);\n\n } else if (parsed.isValue) {\n // Merge Array into List\n if (old && $type.isArray(parsed.value)) {\n $array.each(parsed.value, (value) => {\n (old as any).push(value);\n });\n\n } else {\n // TODO merge it if the value is an Entity\n (entity as any)[key] = parsed.value;\n }\n\n } else {\n (entity as any)[key] = constructEntity(root, parsed);\n }\n };\n }));\n}\n\n\nasync function parseRefs(root: Root, object: { [key: string]: any }, refs: Array<IRef>): Promise<IRef> {\n const newRefs: IRef = {};\n\n await Promise.all($array.map($object.keys(object), async (key) => {\n newRefs[key] = await parseType(root, object[key], refs);\n }));\n\n return newRefs;\n}\n\n\nasync function parseValue<E extends Entity>(root: Root, value: any, refs: Array<IRef>): Promise<IParsed<E>> {\n if ($type.isArray(value)) {\n return {\n isValue: true,\n value: await parseArray(root, value, refs),\n };\n\n } else if (isObject(value)) {\n if (value.type === \"Color\") {\n return {\n isValue: true,\n value: Color.fromAny(value.value),\n };\n\n } else if (value.type === \"Template\") {\n if (value.refs) {\n refs = refs.concat([await parseRefs(root, value.refs, refs)]);\n }\n\n const settings = (value.settings ? await parseSettings(root, value.settings, refs) : {});\n\n return {\n isValue: true,\n value: Template.new(settings),\n };\n\n } else {\n if (value.refs) {\n refs = refs.concat([await parseRefs(root, value.refs, refs)]);\n }\n\n const [construct, settings, properties, children] = await Promise.all([\n (value.type ? getClass(value.type) : Promise.resolve(undefined)),\n (value.settings ? parseSettings(root, value.settings, refs) : Promise.resolve(undefined)),\n (value.properties ? parseProperties(root, value.properties, refs) : Promise.resolve(undefined)),\n (value.children ? parseArray(root, value.children, refs) : Promise.resolve(undefined)),\n ]);\n\n return {\n isValue: false,\n type: value.type,\n construct,\n settings,\n adapters: value.adapters,\n children,\n properties,\n value,\n };\n }\n\n } else if ($type.isString(value)) {\n if (value[0] === \"#\") {\n const ref = value.slice(1);\n\n if (value[1] === \"#\") {\n return {\n isValue: true,\n value: ref,\n };\n\n } else {\n return {\n isValue: true,\n value: lookupRef(refs, ref),\n };\n }\n\n } else {\n return {\n isValue: true,\n value,\n };\n }\n\n } else {\n return {\n isValue: true,\n value,\n };\n }\n}\n\n\nfunction mergeEntity<E extends Entity>(entity: E, parsed: IParsedEntity<E>): void {\n if (parsed.adapters) {\n $array.each(parsed.adapters, (adapter) => {\n entity.adapters.add(adapter.key, adapter.callback);\n });\n }\n\n if (parsed.properties) {\n $array.each(parsed.properties, (fn) => {\n fn(entity);\n });\n }\n\n if (entity instanceof Container) {\n if (parsed.children) {\n entity.children.setAll(parsed.children);\n }\n }\n}\n\n\nfunction constructEntity<E extends Entity>(root: Root, parsed: IParsedEntity<E>): E | object {\n if (!parsed.construct) {\n return parsed.value;\n }\n\n const entity = parsed.construct.new(root, parsed.settings || {}) as E;\n\n mergeEntity(entity, parsed);\n\n return entity;\n}\n\n\nasync function parseType(root: Root, value: unknown, refs: Array<IRef>): Promise<any> {\n const parsed = await parseValue(root, value, refs);\n\n if (parsed.isValue) {\n return parsed.value;\n\n } else {\n return constructEntity(root, parsed);\n }\n}\n\n\nexport class JsonParser {\n async parse<E extends Entity>(root: Root, object: unknown): Promise<E> {\n return parseType(root, object, []);\n }\n\n async parseString<E extends Entity>(root: Root, string: string): Promise<E> {\n return await this.parse(root, JSON.parse(string));\n }\n}\n"]}
package/CHANGELOG.md CHANGED
@@ -5,6 +5,51 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
5
5
  Please note, that this project, while following numbering syntax, it DOES NOT
6
6
  adhere to [Semantic Versioning](http://semver.org/spec/v2.0.0.html) rules.
7
7
 
8
+ ## [5.1.12] - 2022-04-07
9
+
10
+ ### Fixed
11
+ - Rounding a Date during daylight saving hour could produce incorrect result in some specific cases.
12
+
13
+
14
+ ## [5.1.11] - 2022-04-06
15
+
16
+ ### Added
17
+ - `groupDataWithOriginals` and `groupDataCallback` settings added to `XYSeries`. [More info](https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Custom_aggregation_functions).
18
+ - `strictMinMaxSelection` setting added to `ValueAxis`. When set to `true`, the axis won't round `min` and `max` of a selection to the nearest round values, but will use actual min and max (`extraMin` and `extraMax` will still be added if set). This is a good feature when your series displays not actual but derivative values, like `valueYChangeSelection` as it helps to avoid frequent jumping of series to adjusted min and max of the axis.
19
+
20
+ ### Changed
21
+ - Internal layout of `XYChart` containers was changed. `plotContainers` now goes to `yAxesAndPlotContainer`, and `plotContainer` and `topPlotContainer` goe into `plotContainers`.
22
+
23
+ ### Fixed
24
+ - If `XYChart` was used without animated theme, and scrollbar's background was clicked to zoom to some specific spot, it resulted in scrollbar not being updated anymore when zoomed with wheel or zoom-out button.
25
+ - Fixed and issue where nodes of `ForceDirected` series were flickering to 0,0 point when div of a chart was resized.
26
+ - Fixed potential XSS injection issue with the accessibility of tooltips.
27
+ - `container` setting in `ExportingMenu` was being ignored.
28
+ - In some specific cases not all series were included in min/max calculation of a `ValueAxis` resulting not all series to be visible.
29
+ - When whole series was out of selected scope, its last or first value (depending on seleciton) was still included when calculating min and max.
30
+ - Layouts were allocating space for margins of hidden items.
31
+
32
+
33
+ ## [5.1.10] - 2022-03-30
34
+
35
+ ### Added
36
+ - New in-line text formatting property `verticalAlign` added. Currently supports only `"super"` and `"sub"` values. E.g. `Copyright[fontSize: 8px; verticalAlign: super;]TM[\]`.
37
+
38
+ ### Changed
39
+ - Logarithmic scale on `ValueAxis` was revamped with a different approach. No changes from the configration, but might influence appearance/scale.
40
+ - When calculating derivative values for series, `low`, `high`, and `open` used previous `low`, `high`, and `open` values. Now they all use `value` instead.
41
+ - Updated to D3 v7.
42
+
43
+ ### Fixed
44
+ - In some cases, using a text placehodler, an empty string was shown insteaf of a zero.
45
+ - Some grid container masking issues fixed.
46
+ - Sometimes `valueAxis` was zoomed-in a bit on the first render of an `XYChart`.
47
+ - Axis ranges with `dRadius > 0` were not visible on `RadarChart`.
48
+ - Dynamic change of `value*Show` fields of an `XYSeries` was not working.
49
+ - Removing data from a legend could lead to JS errors in some particular cases.
50
+ - Ghost label was creating a gap in an `XYChartScrollbar` between scrollbar bottom an scrollbar series.
51
+
52
+
8
53
  ## [5.1.9] - 2022-03-17
9
54
 
10
55
  ### Fixed
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-flow-chord",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-flow-chord-directed",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-flow-chord-non-ribbon",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-flow-sankey",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-gauge",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-gauge-bands",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-force-directed",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-pack",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-partition",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-sunburst",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-tree",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-hierarchy-treemap",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -0,0 +1,6 @@
1
+ Steps to use
2
+ ============
3
+
4
+ 1. Run `yarn`
5
+
6
+ 2. Run `yarn start` for development, or `yarn build` for production
@@ -0,0 +1,11 @@
1
+ body {
2
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
3
+ padding: 0;
4
+ margin: 0;
5
+ background-color: #ffffff;
6
+ }
7
+
8
+ #chartdiv {
9
+ width: 100%;
10
+ height: 80vh;
11
+ }
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <title>amCharts 5 Example - json</title>
6
+ <link rel="stylesheet" href="index.css" />
7
+ </head>
8
+ <body>
9
+ <div id="chartdiv"></div>
10
+ <script src="dist/index.js"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,206 @@
1
+ import * as am5 from "@amcharts/amcharts5";
2
+
3
+ import am5themes_Animated from "@amcharts/amcharts5/themes/Animated";
4
+ import * as am5plugins_json from "@amcharts/amcharts5/plugins/json";
5
+
6
+
7
+ // Create root element
8
+ // https://www.amcharts.com/docs/v5/getting-started/#Root_element
9
+ const root = am5.Root.new("chartdiv");
10
+
11
+ // Set themes
12
+ // https://www.amcharts.com/docs/v5/concepts/themes/
13
+ root.setThemes([
14
+ am5themes_Animated.new(root)
15
+ ]);
16
+
17
+ // Specify date fields, so that they are formatted accordingly in tooltips
18
+ // https://www.amcharts.com/docs/v5/concepts/formatters/data-placeholders/#Formatting_placeholders
19
+ root.dateFormatter.setAll({
20
+ dateFields: ["valueX"]
21
+ });
22
+
23
+
24
+ async function main() {
25
+ const chart = await new am5plugins_json.JsonParser().parse(root, {
26
+ refs: {
27
+ data: [
28
+ {
29
+ "date": 1652425200000,
30
+ "value": 92
31
+ },
32
+ {
33
+ "date": 1652511600000,
34
+ "value": 95
35
+ },
36
+ {
37
+ "date": 1652598000000,
38
+ "value": 100
39
+ },
40
+ {
41
+ "date": 1652684400000,
42
+ "value": 100
43
+ },
44
+ {
45
+ "date": 1652770800000,
46
+ "value": 96
47
+ },
48
+ {
49
+ "date": 1652857200000,
50
+ "value": 97
51
+ },
52
+ {
53
+ "date": 1652943600000,
54
+ "value": 94
55
+ },
56
+ {
57
+ "date": 1653030000000,
58
+ "value": 89
59
+ },
60
+ {
61
+ "date": 1653116400000,
62
+ "value": 89
63
+ },
64
+ {
65
+ "date": 1653202800000,
66
+ "value": 87
67
+ },
68
+ {
69
+ "date": 1653289200000,
70
+ "value": 84
71
+ },
72
+ {
73
+ "date": 1653375600000,
74
+ "value": 81
75
+ },
76
+ {
77
+ "date": 1653462000000,
78
+ "value": 85
79
+ },
80
+ {
81
+ "date": 1653548400000,
82
+ "value": 89
83
+ },
84
+ {
85
+ "date": 1653634800000,
86
+ "value": 86
87
+ },
88
+ {
89
+ "date": 1653721200000,
90
+ "value": 90
91
+ },
92
+ {
93
+ "date": 1653807600000,
94
+ "value": 93
95
+ },
96
+ {
97
+ "date": 1653894000000,
98
+ "value": 94
99
+ },
100
+ {
101
+ "date": 1653980400000,
102
+ "value": 94
103
+ },
104
+ {
105
+ "date": 1654066800000,
106
+ "value": 96
107
+ }
108
+ ],
109
+ xAxis: {
110
+ type: "DateAxis",
111
+ settings: {
112
+ maxDeviation: 0.5,
113
+ baseInterval: {
114
+ timeUnit: "day",
115
+ count: 1
116
+ },
117
+ renderer: {
118
+ type: "AxisRendererX",
119
+ settings: {
120
+ pan: "zoom"
121
+ }
122
+ },
123
+ tooltip: {
124
+ type: "Tooltip",
125
+ },
126
+ }
127
+ },
128
+ yAxis: {
129
+ type: "ValueAxis",
130
+ settings: {
131
+ maxDeviation: 1,
132
+ renderer: {
133
+ type: "AxisRendererY",
134
+ settings: {
135
+ pan: "zoom"
136
+ },
137
+ },
138
+ }
139
+ },
140
+ },
141
+ type: "XYChart",
142
+ settings: {
143
+ panX: false,
144
+ panY: false,
145
+ wheelX: "panX",
146
+ wheelY: "zoomX",
147
+ cursor: {
148
+ type: "XYCursor",
149
+ settings: {
150
+ behavior: "zoomX"
151
+ },
152
+ properties: {
153
+ lineY: {
154
+ settings: {
155
+ visible: false
156
+ },
157
+ },
158
+ },
159
+ },
160
+ scrollbarX: {
161
+ type: "Scrollbar",
162
+ settings: {
163
+ orientation: "horizontal"
164
+ }
165
+ },
166
+ },
167
+ properties: {
168
+ xAxes: [
169
+ "#xAxis",
170
+ ],
171
+ yAxes: [
172
+ "#yAxis",
173
+ ],
174
+ series: [
175
+ {
176
+ type: "LineSeries",
177
+ settings: {
178
+ name: "Series",
179
+ xAxis: "#xAxis",
180
+ yAxis: "#yAxis",
181
+ valueYField: "value",
182
+ valueXField: "date",
183
+ tooltip: {
184
+ type: "Tooltip",
185
+ settings: {
186
+ labelText: "{valueX}: {valueY}"
187
+ }
188
+ },
189
+ },
190
+ properties: {
191
+ data: "#data"
192
+ }
193
+ },
194
+ ],
195
+ },
196
+ });
197
+
198
+ root.container.children.push(chart);
199
+
200
+ // Make stuff animate on load
201
+ // https://www.amcharts.com/docs/v5/concepts/animations/#Forcing_appearance_animation
202
+ chart.series.getIndex(0).appear(1000);
203
+ chart.appear(1000, 100);
204
+ }
205
+
206
+ main();
@@ -0,0 +1,16 @@
1
+ {
2
+ "private": true,
3
+ "name": "amcharts5-example-json",
4
+ "version": "0.1.0",
5
+ "devDependencies": {
6
+ "@amcharts/amcharts5": "^5.1.12",
7
+ "source-map-loader": "^3.0.0",
8
+ "webpack": "^5.1.3",
9
+ "webpack-cli": "^4.1.0",
10
+ "webpack-dev-server": "^3.11.0"
11
+ },
12
+ "scripts": {
13
+ "build": "webpack",
14
+ "start": "webpack serve --mode development"
15
+ }
16
+ }
@@ -0,0 +1,38 @@
1
+ var $path = require("path");
2
+
3
+ module.exports = {
4
+ mode: "production",
5
+
6
+ devtool: "source-map",
7
+
8
+ stats: "errors-warnings",
9
+
10
+ target: ["web", "es5"],
11
+
12
+ entry: {
13
+ index: "./index.js",
14
+ },
15
+
16
+ devServer: {
17
+ publicPath: "/dist/",
18
+ liveReload: true,
19
+ overlay: true,
20
+ noInfo: true,
21
+ open: true
22
+ },
23
+
24
+ output: {
25
+ path: $path.join(__dirname, "dist"),
26
+ publicPath: "dist/",
27
+ filename: "[name].js",
28
+ chunkFilename: "[name].js"
29
+ },
30
+
31
+ module: {
32
+ rules: [{
33
+ test: /.js$/,
34
+ use: ["source-map-loader"],
35
+ enforce: "pre"
36
+ }]
37
+ }
38
+ };
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-map-animating-along-lines",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-map-day-and-night",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-map-globe-rotate-to-country",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-map-globe-with-projected-circles",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-map-with-bubbles",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-map-zoom-to-country",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-misc-40-charts",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-misc-microchart-grid",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-pie-chart",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-pie-donut-chart",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-pie-variable-radius",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-radar-column-iwatch-style",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",
@@ -3,7 +3,7 @@
3
3
  "name": "amcharts5-example-radar-heat-map",
4
4
  "version": "0.1.0",
5
5
  "devDependencies": {
6
- "@amcharts/amcharts5": "^5.1.9",
6
+ "@amcharts/amcharts5": "^5.1.12",
7
7
  "source-map-loader": "^3.0.0",
8
8
  "webpack": "^5.1.3",
9
9
  "webpack-cli": "^4.1.0",