@chipmobilesdk/rn-chart 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/README.md +1 -1
  3. package/lib/commonjs/a11y/summary.js +190 -0
  4. package/lib/commonjs/a11y/summary.js.map +1 -0
  5. package/lib/commonjs/contract/datasource.js +64 -0
  6. package/lib/commonjs/contract/datasource.js.map +1 -0
  7. package/lib/commonjs/contract/distribution.js +45 -0
  8. package/lib/commonjs/contract/distribution.js.map +1 -0
  9. package/lib/commonjs/contract/errors.js +88 -0
  10. package/lib/commonjs/contract/errors.js.map +1 -0
  11. package/lib/commonjs/contract/format.js +133 -0
  12. package/lib/commonjs/contract/format.js.map +1 -0
  13. package/lib/commonjs/contract/interaction.js +24 -0
  14. package/lib/commonjs/contract/interaction.js.map +1 -0
  15. package/lib/commonjs/contract/marker.js +55 -0
  16. package/lib/commonjs/contract/marker.js.map +1 -0
  17. package/lib/commonjs/contract/props.js +6 -0
  18. package/lib/commonjs/contract/props.js.map +1 -0
  19. package/lib/commonjs/contract/state.js +68 -0
  20. package/lib/commonjs/contract/state.js.map +1 -0
  21. package/lib/commonjs/contract/strings.js +54 -0
  22. package/lib/commonjs/contract/strings.js.map +1 -0
  23. package/lib/commonjs/contract/theme.js +116 -0
  24. package/lib/commonjs/contract/theme.js.map +1 -0
  25. package/lib/commonjs/contract/value.js +112 -0
  26. package/lib/commonjs/contract/value.js.map +1 -0
  27. package/lib/commonjs/geometry/bar.js +257 -0
  28. package/lib/commonjs/geometry/bar.js.map +1 -0
  29. package/lib/commonjs/geometry/distribution.js +197 -0
  30. package/lib/commonjs/geometry/distribution.js.map +1 -0
  31. package/lib/commonjs/geometry/heatmap.js +186 -0
  32. package/lib/commonjs/geometry/heatmap.js.map +1 -0
  33. package/lib/commonjs/geometry/hitTest.js +117 -0
  34. package/lib/commonjs/geometry/hitTest.js.map +1 -0
  35. package/lib/commonjs/geometry/layout.js +134 -0
  36. package/lib/commonjs/geometry/layout.js.map +1 -0
  37. package/lib/commonjs/geometry/markers.js +59 -0
  38. package/lib/commonjs/geometry/markers.js.map +1 -0
  39. package/lib/commonjs/geometry/path.js +166 -0
  40. package/lib/commonjs/geometry/path.js.map +1 -0
  41. package/lib/commonjs/geometry/progress.js +203 -0
  42. package/lib/commonjs/geometry/progress.js.map +1 -0
  43. package/lib/commonjs/geometry/scale.js +127 -0
  44. package/lib/commonjs/geometry/scale.js.map +1 -0
  45. package/lib/commonjs/geometry/ticks.js +120 -0
  46. package/lib/commonjs/geometry/ticks.js.map +1 -0
  47. package/lib/commonjs/geometry/timeSeries.js +157 -0
  48. package/lib/commonjs/geometry/timeSeries.js.map +1 -0
  49. package/lib/commonjs/geometry/types.js +43 -0
  50. package/lib/commonjs/geometry/types.js.map +1 -0
  51. package/lib/commonjs/index.js +284 -0
  52. package/lib/commonjs/index.js.map +1 -0
  53. package/lib/commonjs/package.json +1 -0
  54. package/lib/commonjs/react/ChartBoundary.js +82 -0
  55. package/lib/commonjs/react/ChartBoundary.js.map +1 -0
  56. package/lib/commonjs/react/ChartFrame.js +270 -0
  57. package/lib/commonjs/react/ChartFrame.js.map +1 -0
  58. package/lib/commonjs/react/ChartLegend.js +242 -0
  59. package/lib/commonjs/react/ChartLegend.js.map +1 -0
  60. package/lib/commonjs/react/ChartPlot.js +62 -0
  61. package/lib/commonjs/react/ChartPlot.js.map +1 -0
  62. package/lib/commonjs/react/ChartStateOverlay.js +89 -0
  63. package/lib/commonjs/react/ChartStateOverlay.js.map +1 -0
  64. package/lib/commonjs/react/ChartThemeProvider.js +51 -0
  65. package/lib/commonjs/react/ChartThemeProvider.js.map +1 -0
  66. package/lib/commonjs/react/charts.js +108 -0
  67. package/lib/commonjs/react/charts.js.map +1 -0
  68. package/lib/commonjs/react/pointEvent.js +35 -0
  69. package/lib/commonjs/react/pointEvent.js.map +1 -0
  70. package/lib/commonjs/react/useChartA11y.js +97 -0
  71. package/lib/commonjs/react/useChartA11y.js.map +1 -0
  72. package/lib/commonjs/react/useChartFormatters.js +66 -0
  73. package/lib/commonjs/react/useChartFormatters.js.map +1 -0
  74. package/lib/commonjs/react/useChartLayout.js +100 -0
  75. package/lib/commonjs/react/useChartLayout.js.map +1 -0
  76. package/lib/commonjs/react/useChartSelection.js +131 -0
  77. package/lib/commonjs/react/useChartSelection.js.map +1 -0
  78. package/lib/commonjs/react/useChartStatus.js +74 -0
  79. package/lib/commonjs/react/useChartStatus.js.map +1 -0
  80. package/lib/commonjs/render/Axis.js +88 -0
  81. package/lib/commonjs/render/Axis.js.map +1 -0
  82. package/lib/commonjs/render/Marks.js +184 -0
  83. package/lib/commonjs/render/Marks.js.map +1 -0
  84. package/lib/commonjs/validation/budgets.js +106 -0
  85. package/lib/commonjs/validation/budgets.js.map +1 -0
  86. package/lib/commonjs/validation/validateDatasource.js +189 -0
  87. package/lib/commonjs/validation/validateDatasource.js.map +1 -0
  88. package/lib/module/a11y/summary.js +184 -0
  89. package/lib/module/a11y/summary.js.map +1 -0
  90. package/lib/module/contract/datasource.js +57 -0
  91. package/lib/module/contract/datasource.js.map +1 -0
  92. package/lib/module/contract/distribution.js +40 -0
  93. package/lib/module/contract/distribution.js.map +1 -0
  94. package/lib/module/contract/errors.js +80 -0
  95. package/lib/module/contract/errors.js.map +1 -0
  96. package/lib/module/contract/format.js +123 -0
  97. package/lib/module/contract/format.js.map +1 -0
  98. package/lib/module/contract/interaction.js +20 -0
  99. package/lib/module/contract/interaction.js.map +1 -0
  100. package/lib/module/contract/marker.js +49 -0
  101. package/lib/module/contract/marker.js.map +1 -0
  102. package/lib/module/contract/props.js +4 -0
  103. package/lib/module/contract/props.js.map +1 -0
  104. package/lib/module/contract/state.js +61 -0
  105. package/lib/module/contract/state.js.map +1 -0
  106. package/lib/module/contract/strings.js +49 -0
  107. package/lib/module/contract/strings.js.map +1 -0
  108. package/lib/module/contract/theme.js +109 -0
  109. package/lib/module/contract/theme.js.map +1 -0
  110. package/lib/module/contract/value.js +101 -0
  111. package/lib/module/contract/value.js.map +1 -0
  112. package/lib/module/geometry/bar.js +253 -0
  113. package/lib/module/geometry/bar.js.map +1 -0
  114. package/lib/module/geometry/distribution.js +193 -0
  115. package/lib/module/geometry/distribution.js.map +1 -0
  116. package/lib/module/geometry/heatmap.js +182 -0
  117. package/lib/module/geometry/heatmap.js.map +1 -0
  118. package/lib/module/geometry/hitTest.js +110 -0
  119. package/lib/module/geometry/hitTest.js.map +1 -0
  120. package/lib/module/geometry/layout.js +122 -0
  121. package/lib/module/geometry/layout.js.map +1 -0
  122. package/lib/module/geometry/markers.js +53 -0
  123. package/lib/module/geometry/markers.js.map +1 -0
  124. package/lib/module/geometry/path.js +157 -0
  125. package/lib/module/geometry/path.js.map +1 -0
  126. package/lib/module/geometry/progress.js +199 -0
  127. package/lib/module/geometry/progress.js.map +1 -0
  128. package/lib/module/geometry/scale.js +119 -0
  129. package/lib/module/geometry/scale.js.map +1 -0
  130. package/lib/module/geometry/ticks.js +112 -0
  131. package/lib/module/geometry/ticks.js.map +1 -0
  132. package/lib/module/geometry/timeSeries.js +153 -0
  133. package/lib/module/geometry/timeSeries.js.map +1 -0
  134. package/lib/module/geometry/types.js +39 -0
  135. package/lib/module/geometry/types.js.map +1 -0
  136. package/lib/module/index.js +85 -0
  137. package/lib/module/index.js.map +1 -0
  138. package/lib/module/package.json +1 -0
  139. package/lib/module/react/ChartBoundary.js +75 -0
  140. package/lib/module/react/ChartBoundary.js.map +1 -0
  141. package/lib/module/react/ChartFrame.js +263 -0
  142. package/lib/module/react/ChartFrame.js.map +1 -0
  143. package/lib/module/react/ChartLegend.js +234 -0
  144. package/lib/module/react/ChartLegend.js.map +1 -0
  145. package/lib/module/react/ChartPlot.js +56 -0
  146. package/lib/module/react/ChartPlot.js.map +1 -0
  147. package/lib/module/react/ChartStateOverlay.js +82 -0
  148. package/lib/module/react/ChartStateOverlay.js.map +1 -0
  149. package/lib/module/react/ChartThemeProvider.js +44 -0
  150. package/lib/module/react/ChartThemeProvider.js.map +1 -0
  151. package/lib/module/react/charts.js +102 -0
  152. package/lib/module/react/charts.js.map +1 -0
  153. package/lib/module/react/pointEvent.js +30 -0
  154. package/lib/module/react/pointEvent.js.map +1 -0
  155. package/lib/module/react/useChartA11y.js +92 -0
  156. package/lib/module/react/useChartA11y.js.map +1 -0
  157. package/lib/module/react/useChartFormatters.js +61 -0
  158. package/lib/module/react/useChartFormatters.js.map +1 -0
  159. package/lib/module/react/useChartLayout.js +95 -0
  160. package/lib/module/react/useChartLayout.js.map +1 -0
  161. package/lib/module/react/useChartSelection.js +125 -0
  162. package/lib/module/react/useChartSelection.js.map +1 -0
  163. package/lib/module/react/useChartStatus.js +69 -0
  164. package/lib/module/react/useChartStatus.js.map +1 -0
  165. package/lib/module/render/Axis.js +80 -0
  166. package/lib/module/render/Axis.js.map +1 -0
  167. package/lib/module/render/Marks.js +173 -0
  168. package/lib/module/render/Marks.js.map +1 -0
  169. package/lib/module/validation/budgets.js +97 -0
  170. package/lib/module/validation/budgets.js.map +1 -0
  171. package/lib/module/validation/validateDatasource.js +184 -0
  172. package/lib/module/validation/validateDatasource.js.map +1 -0
  173. package/lib/typescript/commonjs/a11y/summary.d.ts +38 -0
  174. package/lib/typescript/commonjs/a11y/summary.d.ts.map +1 -0
  175. package/lib/typescript/commonjs/contract/datasource.d.ts +94 -0
  176. package/lib/typescript/commonjs/contract/datasource.d.ts.map +1 -0
  177. package/lib/typescript/commonjs/contract/distribution.d.ts +17 -0
  178. package/lib/typescript/commonjs/contract/distribution.d.ts.map +1 -0
  179. package/lib/typescript/commonjs/contract/errors.d.ts +53 -0
  180. package/lib/typescript/commonjs/contract/errors.d.ts.map +1 -0
  181. package/lib/typescript/commonjs/contract/format.d.ts +63 -0
  182. package/lib/typescript/commonjs/contract/format.d.ts.map +1 -0
  183. package/lib/typescript/commonjs/contract/interaction.d.ts +53 -0
  184. package/lib/typescript/commonjs/contract/interaction.d.ts.map +1 -0
  185. package/lib/typescript/commonjs/contract/marker.d.ts +39 -0
  186. package/lib/typescript/commonjs/contract/marker.d.ts.map +1 -0
  187. package/lib/typescript/commonjs/contract/props.d.ts +58 -0
  188. package/lib/typescript/commonjs/contract/props.d.ts.map +1 -0
  189. package/lib/typescript/commonjs/contract/state.d.ts +45 -0
  190. package/lib/typescript/commonjs/contract/state.d.ts.map +1 -0
  191. package/lib/typescript/commonjs/contract/strings.d.ts +39 -0
  192. package/lib/typescript/commonjs/contract/strings.d.ts.map +1 -0
  193. package/lib/typescript/commonjs/contract/theme.d.ts +85 -0
  194. package/lib/typescript/commonjs/contract/theme.d.ts.map +1 -0
  195. package/lib/typescript/commonjs/contract/value.d.ts +69 -0
  196. package/lib/typescript/commonjs/contract/value.d.ts.map +1 -0
  197. package/lib/typescript/commonjs/geometry/bar.d.ts +18 -0
  198. package/lib/typescript/commonjs/geometry/bar.d.ts.map +1 -0
  199. package/lib/typescript/commonjs/geometry/distribution.d.ts +23 -0
  200. package/lib/typescript/commonjs/geometry/distribution.d.ts.map +1 -0
  201. package/lib/typescript/commonjs/geometry/heatmap.d.ts +24 -0
  202. package/lib/typescript/commonjs/geometry/heatmap.d.ts.map +1 -0
  203. package/lib/typescript/commonjs/geometry/hitTest.d.ts +68 -0
  204. package/lib/typescript/commonjs/geometry/hitTest.d.ts.map +1 -0
  205. package/lib/typescript/commonjs/geometry/layout.d.ts +67 -0
  206. package/lib/typescript/commonjs/geometry/layout.d.ts.map +1 -0
  207. package/lib/typescript/commonjs/geometry/markers.d.ts +29 -0
  208. package/lib/typescript/commonjs/geometry/markers.d.ts.map +1 -0
  209. package/lib/typescript/commonjs/geometry/path.d.ts +66 -0
  210. package/lib/typescript/commonjs/geometry/path.d.ts.map +1 -0
  211. package/lib/typescript/commonjs/geometry/progress.d.ts +17 -0
  212. package/lib/typescript/commonjs/geometry/progress.d.ts.map +1 -0
  213. package/lib/typescript/commonjs/geometry/scale.d.ts +55 -0
  214. package/lib/typescript/commonjs/geometry/scale.d.ts.map +1 -0
  215. package/lib/typescript/commonjs/geometry/ticks.d.ts +48 -0
  216. package/lib/typescript/commonjs/geometry/ticks.d.ts.map +1 -0
  217. package/lib/typescript/commonjs/geometry/timeSeries.d.ts +20 -0
  218. package/lib/typescript/commonjs/geometry/timeSeries.d.ts.map +1 -0
  219. package/lib/typescript/commonjs/geometry/types.d.ts +91 -0
  220. package/lib/typescript/commonjs/geometry/types.d.ts.map +1 -0
  221. package/lib/typescript/commonjs/index.d.ts +47 -0
  222. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  223. package/lib/typescript/commonjs/package.json +1 -0
  224. package/lib/typescript/commonjs/react/ChartBoundary.d.ts +47 -0
  225. package/lib/typescript/commonjs/react/ChartBoundary.d.ts.map +1 -0
  226. package/lib/typescript/commonjs/react/ChartFrame.d.ts +31 -0
  227. package/lib/typescript/commonjs/react/ChartFrame.d.ts.map +1 -0
  228. package/lib/typescript/commonjs/react/ChartLegend.d.ts +31 -0
  229. package/lib/typescript/commonjs/react/ChartLegend.d.ts.map +1 -0
  230. package/lib/typescript/commonjs/react/ChartPlot.d.ts +19 -0
  231. package/lib/typescript/commonjs/react/ChartPlot.d.ts.map +1 -0
  232. package/lib/typescript/commonjs/react/ChartStateOverlay.d.ts +25 -0
  233. package/lib/typescript/commonjs/react/ChartStateOverlay.d.ts.map +1 -0
  234. package/lib/typescript/commonjs/react/ChartThemeProvider.d.ts +21 -0
  235. package/lib/typescript/commonjs/react/ChartThemeProvider.d.ts.map +1 -0
  236. package/lib/typescript/commonjs/react/charts.d.ts +51 -0
  237. package/lib/typescript/commonjs/react/charts.d.ts.map +1 -0
  238. package/lib/typescript/commonjs/react/pointEvent.d.ts +13 -0
  239. package/lib/typescript/commonjs/react/pointEvent.d.ts.map +1 -0
  240. package/lib/typescript/commonjs/react/useChartA11y.d.ts +37 -0
  241. package/lib/typescript/commonjs/react/useChartA11y.d.ts.map +1 -0
  242. package/lib/typescript/commonjs/react/useChartFormatters.d.ts +21 -0
  243. package/lib/typescript/commonjs/react/useChartFormatters.d.ts.map +1 -0
  244. package/lib/typescript/commonjs/react/useChartLayout.d.ts +27 -0
  245. package/lib/typescript/commonjs/react/useChartLayout.d.ts.map +1 -0
  246. package/lib/typescript/commonjs/react/useChartSelection.d.ts +52 -0
  247. package/lib/typescript/commonjs/react/useChartSelection.d.ts.map +1 -0
  248. package/lib/typescript/commonjs/react/useChartStatus.d.ts +22 -0
  249. package/lib/typescript/commonjs/react/useChartStatus.d.ts.map +1 -0
  250. package/lib/typescript/commonjs/render/Axis.d.ts +31 -0
  251. package/lib/typescript/commonjs/render/Axis.d.ts.map +1 -0
  252. package/lib/typescript/commonjs/render/Marks.d.ts +44 -0
  253. package/lib/typescript/commonjs/render/Marks.d.ts.map +1 -0
  254. package/lib/typescript/commonjs/validation/budgets.d.ts +24 -0
  255. package/lib/typescript/commonjs/validation/budgets.d.ts.map +1 -0
  256. package/lib/typescript/commonjs/validation/validateDatasource.d.ts +26 -0
  257. package/lib/typescript/commonjs/validation/validateDatasource.d.ts.map +1 -0
  258. package/lib/typescript/module/a11y/summary.d.ts +38 -0
  259. package/lib/typescript/module/a11y/summary.d.ts.map +1 -0
  260. package/lib/typescript/module/contract/datasource.d.ts +94 -0
  261. package/lib/typescript/module/contract/datasource.d.ts.map +1 -0
  262. package/lib/typescript/module/contract/distribution.d.ts +17 -0
  263. package/lib/typescript/module/contract/distribution.d.ts.map +1 -0
  264. package/lib/typescript/module/contract/errors.d.ts +53 -0
  265. package/lib/typescript/module/contract/errors.d.ts.map +1 -0
  266. package/lib/typescript/module/contract/format.d.ts +63 -0
  267. package/lib/typescript/module/contract/format.d.ts.map +1 -0
  268. package/lib/typescript/module/contract/interaction.d.ts +53 -0
  269. package/lib/typescript/module/contract/interaction.d.ts.map +1 -0
  270. package/lib/typescript/module/contract/marker.d.ts +39 -0
  271. package/lib/typescript/module/contract/marker.d.ts.map +1 -0
  272. package/lib/typescript/module/contract/props.d.ts +58 -0
  273. package/lib/typescript/module/contract/props.d.ts.map +1 -0
  274. package/lib/typescript/module/contract/state.d.ts +45 -0
  275. package/lib/typescript/module/contract/state.d.ts.map +1 -0
  276. package/lib/typescript/module/contract/strings.d.ts +39 -0
  277. package/lib/typescript/module/contract/strings.d.ts.map +1 -0
  278. package/lib/typescript/module/contract/theme.d.ts +85 -0
  279. package/lib/typescript/module/contract/theme.d.ts.map +1 -0
  280. package/lib/typescript/module/contract/value.d.ts +69 -0
  281. package/lib/typescript/module/contract/value.d.ts.map +1 -0
  282. package/lib/typescript/module/geometry/bar.d.ts +18 -0
  283. package/lib/typescript/module/geometry/bar.d.ts.map +1 -0
  284. package/lib/typescript/module/geometry/distribution.d.ts +23 -0
  285. package/lib/typescript/module/geometry/distribution.d.ts.map +1 -0
  286. package/lib/typescript/module/geometry/heatmap.d.ts +24 -0
  287. package/lib/typescript/module/geometry/heatmap.d.ts.map +1 -0
  288. package/lib/typescript/module/geometry/hitTest.d.ts +68 -0
  289. package/lib/typescript/module/geometry/hitTest.d.ts.map +1 -0
  290. package/lib/typescript/module/geometry/layout.d.ts +67 -0
  291. package/lib/typescript/module/geometry/layout.d.ts.map +1 -0
  292. package/lib/typescript/module/geometry/markers.d.ts +29 -0
  293. package/lib/typescript/module/geometry/markers.d.ts.map +1 -0
  294. package/lib/typescript/module/geometry/path.d.ts +66 -0
  295. package/lib/typescript/module/geometry/path.d.ts.map +1 -0
  296. package/lib/typescript/module/geometry/progress.d.ts +17 -0
  297. package/lib/typescript/module/geometry/progress.d.ts.map +1 -0
  298. package/lib/typescript/module/geometry/scale.d.ts +55 -0
  299. package/lib/typescript/module/geometry/scale.d.ts.map +1 -0
  300. package/lib/typescript/module/geometry/ticks.d.ts +48 -0
  301. package/lib/typescript/module/geometry/ticks.d.ts.map +1 -0
  302. package/lib/typescript/module/geometry/timeSeries.d.ts +20 -0
  303. package/lib/typescript/module/geometry/timeSeries.d.ts.map +1 -0
  304. package/lib/typescript/module/geometry/types.d.ts +91 -0
  305. package/lib/typescript/module/geometry/types.d.ts.map +1 -0
  306. package/lib/typescript/module/index.d.ts +47 -0
  307. package/lib/typescript/module/index.d.ts.map +1 -0
  308. package/lib/typescript/module/package.json +1 -0
  309. package/lib/typescript/module/react/ChartBoundary.d.ts +47 -0
  310. package/lib/typescript/module/react/ChartBoundary.d.ts.map +1 -0
  311. package/lib/typescript/module/react/ChartFrame.d.ts +31 -0
  312. package/lib/typescript/module/react/ChartFrame.d.ts.map +1 -0
  313. package/lib/typescript/module/react/ChartLegend.d.ts +31 -0
  314. package/lib/typescript/module/react/ChartLegend.d.ts.map +1 -0
  315. package/lib/typescript/module/react/ChartPlot.d.ts +19 -0
  316. package/lib/typescript/module/react/ChartPlot.d.ts.map +1 -0
  317. package/lib/typescript/module/react/ChartStateOverlay.d.ts +25 -0
  318. package/lib/typescript/module/react/ChartStateOverlay.d.ts.map +1 -0
  319. package/lib/typescript/module/react/ChartThemeProvider.d.ts +21 -0
  320. package/lib/typescript/module/react/ChartThemeProvider.d.ts.map +1 -0
  321. package/lib/typescript/module/react/charts.d.ts +51 -0
  322. package/lib/typescript/module/react/charts.d.ts.map +1 -0
  323. package/lib/typescript/module/react/pointEvent.d.ts +13 -0
  324. package/lib/typescript/module/react/pointEvent.d.ts.map +1 -0
  325. package/lib/typescript/module/react/useChartA11y.d.ts +37 -0
  326. package/lib/typescript/module/react/useChartA11y.d.ts.map +1 -0
  327. package/lib/typescript/module/react/useChartFormatters.d.ts +21 -0
  328. package/lib/typescript/module/react/useChartFormatters.d.ts.map +1 -0
  329. package/lib/typescript/module/react/useChartLayout.d.ts +27 -0
  330. package/lib/typescript/module/react/useChartLayout.d.ts.map +1 -0
  331. package/lib/typescript/module/react/useChartSelection.d.ts +52 -0
  332. package/lib/typescript/module/react/useChartSelection.d.ts.map +1 -0
  333. package/lib/typescript/module/react/useChartStatus.d.ts +22 -0
  334. package/lib/typescript/module/react/useChartStatus.d.ts.map +1 -0
  335. package/lib/typescript/module/render/Axis.d.ts +31 -0
  336. package/lib/typescript/module/render/Axis.d.ts.map +1 -0
  337. package/lib/typescript/module/render/Marks.d.ts +44 -0
  338. package/lib/typescript/module/render/Marks.d.ts.map +1 -0
  339. package/lib/typescript/module/validation/budgets.d.ts +24 -0
  340. package/lib/typescript/module/validation/budgets.d.ts.map +1 -0
  341. package/lib/typescript/module/validation/validateDatasource.d.ts +26 -0
  342. package/lib/typescript/module/validation/validateDatasource.d.ts.map +1 -0
  343. package/package.json +40 -15
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_value","require","_layout","_path","_ticks","buildHeatmapGeometry","datasource","input","options","rows","columns","rowSeen","Set","colSeen","series","point","points","position","kind","has","row","add","push","column","length","plot","width","paths","markers","labels","xTicks","yTicks","hitRegions","incomplete","columnLabels","map","formatCategory","rowLabels","insetForAxes","xLabels","yLabels","fontSize","columnIndex","Map","index","rowIndex","gap","cellGap","cellWidth","cellHeight","height","ramp","heatmapRamp","bucketCount","Math","max","min","buckets","Infinity","isKnown","value","hasKnown","Number","isFinite","span","byBucket","byTexture","excluded","hidden","col","get","undefined","rect","x","y","radius","cellRadius","cell","t","bucket","floor","list","set","seriesId","id","pointId","bounds","selectable","isWithheld","rects","key","d","rectBatchPath","color","pattern","filled","texture","nonValueTextures","thinTicks","label","i","colorScale","colors","slice"],"sourceRoot":"../../../src","sources":["geometry/heatmap.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DEFAULT_HIT_RADIUS = void 0;
7
+ exports.findRegion = findRegion;
8
+ exports.hitTest = hitTest;
9
+ exports.hitTestByX = hitTestByX;
10
+ /**
11
+ * Hit-testing for batched marks.
12
+ *
13
+ * Because marks are batched into one path per series, there are no per-element
14
+ * press handlers to rely on — a touch is resolved against geometry instead.
15
+ * That work would be needed anyway (a mobile time-series chart needs
16
+ * nearest-point search regardless of how it is drawn), and doing it in one
17
+ * place means a single implementation serves every family.
18
+ *
19
+ * PURE. No React, no SVG.
20
+ */
21
+
22
+ /** Touch slop: how far from a mark a tap still counts, in px. */
23
+ const DEFAULT_HIT_RADIUS = exports.DEFAULT_HIT_RADIUS = 44;
24
+ function inBounds(region, x, y) {
25
+ const b = region.bounds;
26
+ if (!b) {
27
+ return false;
28
+ }
29
+ return x >= b.x && x <= b.x + b.width && y >= b.y && y <= b.y + b.height;
30
+ }
31
+ const TAU = Math.PI * 2;
32
+ function inArc(arc, x, y) {
33
+ const dx = x - arc.cx;
34
+ const dy = y - arc.cy;
35
+ const radius = Math.sqrt(dx * dx + dy * dy);
36
+ if (radius < arc.innerRadius || radius > arc.outerRadius) {
37
+ return false;
38
+ }
39
+ // Clockwise from the top, the convention the arcs are drawn in.
40
+ const angle = (Math.atan2(dy, dx) + Math.PI / 2 + TAU) % TAU;
41
+ return angle >= arc.startAngle && angle < arc.endAngle;
42
+ }
43
+
44
+ /**
45
+ * Resolves a touch to a mark.
46
+ *
47
+ * Containment wins over proximity where bounds exist — tapping inside a bar
48
+ * should select that bar even if a neighbouring bar's centre happens to be
49
+ * closer. Otherwise the nearest selectable mark within the hit radius wins.
50
+ */
51
+ function hitTest(regions, x, y, hitRadius = DEFAULT_HIT_RADIUS) {
52
+ let best = null;
53
+ for (const region of regions) {
54
+ if (!region.selectable) {
55
+ continue;
56
+ }
57
+ if (inBounds(region, x, y)) {
58
+ return {
59
+ seriesId: region.seriesId,
60
+ pointId: region.pointId,
61
+ distance: 0
62
+ };
63
+ }
64
+ if (region.arc) {
65
+ // A large segment's edge is far from its midpoint, and a neighbour's
66
+ // midpoint can be nearer: only the segment under the finger counts.
67
+ if (inArc(region.arc, x, y)) {
68
+ return {
69
+ seriesId: region.seriesId,
70
+ pointId: region.pointId,
71
+ distance: 0
72
+ };
73
+ }
74
+ continue;
75
+ }
76
+ const dx = region.x - x;
77
+ const dy = region.y - y;
78
+ const distance = Math.sqrt(dx * dx + dy * dy);
79
+ if (distance <= hitRadius && (best === null || distance < best.distance)) {
80
+ best = {
81
+ seriesId: region.seriesId,
82
+ pointId: region.pointId,
83
+ distance
84
+ };
85
+ }
86
+ }
87
+ return best;
88
+ }
89
+
90
+ /**
91
+ * Nearest mark by horizontal distance only.
92
+ *
93
+ * The right model for a time-series chart: a user aiming at "that Tuesday
94
+ * spike" cares about the x position, and demanding vertical accuracy on a line
95
+ * that may sit anywhere in the plot makes selection frustrating.
96
+ */
97
+ function hitTestByX(regions, x) {
98
+ let best = null;
99
+ for (const region of regions) {
100
+ if (!region.selectable) {
101
+ continue;
102
+ }
103
+ const distance = Math.abs(region.x - x);
104
+ if (best === null || distance < best.distance) {
105
+ best = {
106
+ seriesId: region.seriesId,
107
+ pointId: region.pointId,
108
+ distance
109
+ };
110
+ }
111
+ }
112
+ return best;
113
+ }
114
+ function findRegion(regions, seriesId, pointId) {
115
+ return regions.find(r => r.seriesId === seriesId && (pointId === undefined || r.pointId === pointId));
116
+ }
117
+ //# sourceMappingURL=hitTest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_HIT_RADIUS","exports","inBounds","region","x","y","b","bounds","width","height","TAU","Math","PI","inArc","arc","dx","cx","dy","cy","radius","sqrt","innerRadius","outerRadius","angle","atan2","startAngle","endAngle","hitTest","regions","hitRadius","best","selectable","seriesId","pointId","distance","hitTestByX","abs","findRegion","find","r","undefined"],"sourceRoot":"../../../src","sources":["geometry/hitTest.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MAX_FONT_SCALE = exports.EMPTY_PLOT = void 0;
7
+ exports.containsPoint = containsPoint;
8
+ exports.effectiveFontSize = effectiveFontSize;
9
+ exports.insetForAxes = insetForAxes;
10
+ exports.isMeasurable = isMeasurable;
11
+ exports.plotBottom = plotBottom;
12
+ exports.plotRight = plotRight;
13
+ exports.resolvePlotRect = resolvePlotRect;
14
+ var _ticks = require("./ticks.js");
15
+ /**
16
+ * Plot layout: turning a container size into a drawable plot rectangle.
17
+ *
18
+ * Font scale arrives as a parameter rather than being read from `PixelRatio`
19
+ * here, so this module stays pure and testable at any scale without mocking a
20
+ * platform API. The React layer reads the real value and passes it in.
21
+ *
22
+ * PURE. No React, no SVG.
23
+ */
24
+
25
+ /**
26
+ * Ceiling on how far system text scaling may inflate chart labels.
27
+ *
28
+ * Beyond this the plot area collapses faster than the labels become useful, so
29
+ * we cap the growth rather than let the chart squeeze itself out of existence.
30
+ * The cap is documented in the README as the supported dynamic-type range.
31
+ */
32
+ const MAX_FONT_SCALE = exports.MAX_FONT_SCALE = 1.6;
33
+ function effectiveFontSize(baseFontSize, fontScale) {
34
+ const clamped = Math.max(1, Math.min(fontScale, MAX_FONT_SCALE));
35
+ return Math.round(baseFontSize * clamped);
36
+ }
37
+
38
+ /** A container that has not been measured yet, or has collapsed (FR-078). */
39
+ function isMeasurable(size) {
40
+ return Number.isFinite(size.width) && Number.isFinite(size.height) && size.width > 0 && size.height > 0;
41
+ }
42
+ const EMPTY_PLOT = exports.EMPTY_PLOT = {
43
+ x: 0,
44
+ y: 0,
45
+ width: 0,
46
+ height: 0
47
+ };
48
+
49
+ /**
50
+ * Reserves axis space from estimated label widths, then hands back what is
51
+ * left for the marks.
52
+ *
53
+ * If the reservations would leave nothing to draw on, they are scaled back:
54
+ * a cramped axis beats a zero-area plot.
55
+ */
56
+ function resolvePlotRect(options) {
57
+ if (!isMeasurable(options.container)) {
58
+ return EMPTY_PLOT;
59
+ }
60
+ const pad = options.padding ?? 0;
61
+ const fontSize = effectiveFontSize(options.baseFontSize, options.fontScale);
62
+ let left = pad;
63
+ let bottom = pad;
64
+ if (options.yLabels && options.yLabels.length > 0) {
65
+ left += (0, _ticks.reserveAxisSpace)(options.yLabels, fontSize, 'vertical');
66
+ }
67
+ if (options.xLabels && options.xLabels.length > 0) {
68
+ bottom += (0, _ticks.reserveAxisSpace)(options.xLabels, fontSize, 'horizontal');
69
+ }
70
+ const availableWidth = options.container.width - pad;
71
+ const availableHeight = options.container.height - pad;
72
+
73
+ // Never let axis reservations consume more than 40% of either dimension.
74
+ const maxLeft = availableWidth * 0.4;
75
+ const maxBottom = availableHeight * 0.4;
76
+ left = Math.min(left, maxLeft);
77
+ bottom = Math.min(bottom, maxBottom);
78
+ return {
79
+ x: left,
80
+ y: pad,
81
+ width: Math.max(0, options.container.width - left - pad),
82
+ height: Math.max(0, options.container.height - bottom - pad)
83
+ };
84
+ }
85
+ /**
86
+ * Shrinks a plot so its own axis labels fit inside the container.
87
+ *
88
+ * Builders call this once they know their tick labels (which depend only on
89
+ * the data domain) and before projecting anything, so the reservation costs no
90
+ * second pass. Without it the frame handed every builder the full container:
91
+ * Y labels, drawn right-aligned left of the plot, landed at negative x, and X
92
+ * labels below the baseline fell past the bottom of the SVG (CHT-01).
93
+ *
94
+ * - left: the widest Y label plus a gutter, and at least half the widest X
95
+ * label, because the first X label is centred on the plot's left edge;
96
+ * - right: half the widest X label, for the last one;
97
+ * - top: the part of the topmost Y label that rises above its tick;
98
+ * - bottom: one line of X labels plus a gutter.
99
+ *
100
+ * Each side is capped so labels can never squeeze the plot out of existence.
101
+ */
102
+ function insetForAxes(outer, labels) {
103
+ const {
104
+ fontSize
105
+ } = labels;
106
+ let widestX = 0;
107
+ for (const label of labels.xLabels) {
108
+ widestX = Math.max(widestX, (0, _ticks.estimateTextWidth)(label, fontSize));
109
+ }
110
+ const hasY = labels.yLabels.length > 0;
111
+ const hasX = labels.xLabels.length > 0;
112
+ const left = Math.min(Math.max(hasY ? (0, _ticks.reserveAxisSpace)(labels.yLabels, fontSize, 'vertical') : 0, widestX / 2), outer.width * 0.4);
113
+ const right = Math.min(widestX / 2, outer.width * 0.25);
114
+ // Y labels sit on their tick at `position + fontSize / 3`, so two thirds of
115
+ // the glyph box rise above it.
116
+ const top = hasY ? Math.min(Math.ceil(fontSize * 2 / 3), outer.height * 0.2) : 0;
117
+ const bottom = hasX ? Math.min((0, _ticks.reserveAxisSpace)(labels.xLabels, fontSize, 'horizontal'), outer.height * 0.4) : 0;
118
+ return {
119
+ x: outer.x + left,
120
+ y: outer.y + top,
121
+ width: Math.max(0, outer.width - left - right),
122
+ height: Math.max(0, outer.height - top - bottom)
123
+ };
124
+ }
125
+ function plotBottom(plot) {
126
+ return plot.y + plot.height;
127
+ }
128
+ function plotRight(plot) {
129
+ return plot.x + plot.width;
130
+ }
131
+ function containsPoint(plot, x, y) {
132
+ return x >= plot.x && x <= plotRight(plot) && y >= plot.y && y <= plotBottom(plot);
133
+ }
134
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ticks","require","MAX_FONT_SCALE","exports","effectiveFontSize","baseFontSize","fontScale","clamped","Math","max","min","round","isMeasurable","size","Number","isFinite","width","height","EMPTY_PLOT","x","y","resolvePlotRect","options","container","pad","padding","fontSize","left","bottom","yLabels","length","reserveAxisSpace","xLabels","availableWidth","availableHeight","maxLeft","maxBottom","insetForAxes","outer","labels","widestX","label","estimateTextWidth","hasY","hasX","right","top","ceil","plotBottom","plot","plotRight","containsPoint"],"sourceRoot":"../../../src","sources":["geometry/layout.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.horizontalMarkers = horizontalMarkers;
7
+ exports.markerDomainValues = markerDomainValues;
8
+ exports.placeableMarkers = placeableMarkers;
9
+ var _value = require("../contract/value.js");
10
+ var _layout = require("./layout.js");
11
+ /**
12
+ * Reference markers on a value axis: thresholds, baselines and targets drawn
13
+ * as horizontal lines across the plot (FR-008, FR-072).
14
+ *
15
+ * Every builder used to return `markers: []`, so a threshold the app supplied
16
+ * reached the accessibility summary and nowhere else (CHT-03).
17
+ *
18
+ * PURE. No React, no SVG.
19
+ */
20
+
21
+ /** Markers that can be placed on a value axis: those with a known value. */
22
+ function placeableMarkers(markers) {
23
+ return (markers ?? []).filter(m => (0, _value.isKnown)(m.value));
24
+ }
25
+
26
+ /** Values the domain must include so every marker lands inside the plot. */
27
+ function markerDomainValues(markers) {
28
+ return placeableMarkers(markers).map(m => m.value.value);
29
+ }
30
+
31
+ /** One line per marker across the plot, plus its label when it has one. */
32
+ function horizontalMarkers(markers, plot, project) {
33
+ const lines = [];
34
+ const labels = [];
35
+ for (const marker of placeableMarkers(markers)) {
36
+ const y = project(marker.value.value);
37
+ lines.push({
38
+ id: `marker-${marker.id}`,
39
+ d: `M${plot.x},${y}H${(0, _layout.plotRight)(plot)}`,
40
+ label: marker.label,
41
+ kind: marker.kind
42
+ });
43
+ if (marker.label) {
44
+ labels.push({
45
+ key: `marker-label-${marker.id}`,
46
+ text: marker.label,
47
+ x: (0, _layout.plotRight)(plot),
48
+ // Above the line, unless that would leave the plot.
49
+ y: y - 4 >= plot.y + 8 ? y - 4 : y + 12,
50
+ anchor: 'end'
51
+ });
52
+ }
53
+ }
54
+ return {
55
+ lines,
56
+ labels
57
+ };
58
+ }
59
+ //# sourceMappingURL=markers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_value","require","_layout","placeableMarkers","markers","filter","m","isKnown","value","markerDomainValues","map","horizontalMarkers","plot","project","lines","labels","marker","y","push","id","d","x","plotRight","label","kind","key","text","anchor"],"sourceRoot":"../../../src","sources":["geometry/markers.ts"],"mappings":";;;;;;;;AAUA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA;AACO,SAASE,gBAAgBA,CAACC,OAA+C,EAAkB;EACjG,OAAO,CAACA,OAAO,IAAI,EAAE,EAAEC,MAAM,CAAEC,CAAC,IAAwB,IAAAC,cAAO,EAACD,CAAC,CAACE,KAAK,CAAC,CAAC;AAC1E;;AAEA;AACO,SAASC,kBAAkBA,CAACL,OAA+C,EAAY;EAC7F,OAAOD,gBAAgB,CAACC,OAAO,CAAC,CAACM,GAAG,CAACJ,CAAC,IAAIA,CAAC,CAACE,KAAK,CAACA,KAAK,CAAC;AACzD;;AAEA;AACO,SAASG,iBAAiBA,CAChCP,OAA+C,EAC/CQ,IAAc,EACdC,OAAkC,EACiB;EACnD,MAAMC,KAAmB,GAAG,EAAE;EAC9B,MAAMC,MAAuB,GAAG,EAAE;EAClC,KAAK,MAAMC,MAAM,IAAIb,gBAAgB,CAACC,OAAO,CAAC,EAAE;IAC/C,MAAMa,CAAC,GAAGJ,OAAO,CAACG,MAAM,CAACR,KAAK,CAACA,KAAK,CAAC;IACrCM,KAAK,CAACI,IAAI,CAAC;MACVC,EAAE,EAAE,UAAUH,MAAM,CAACG,EAAE,EAAE;MACzBC,CAAC,EAAE,IAAIR,IAAI,CAACS,CAAC,IAAIJ,CAAC,IAAI,IAAAK,iBAAS,EAACV,IAAI,CAAC,EAAE;MACvCW,KAAK,EAAEP,MAAM,CAACO,KAAK;MACnBC,IAAI,EAAER,MAAM,CAACQ;IACd,CAAC,CAAC;IACF,IAAIR,MAAM,CAACO,KAAK,EAAE;MACjBR,MAAM,CAACG,IAAI,CAAC;QACXO,GAAG,EAAE,gBAAgBT,MAAM,CAACG,EAAE,EAAE;QAChCO,IAAI,EAAEV,MAAM,CAACO,KAAK;QAClBF,CAAC,EAAE,IAAAC,iBAAS,EAACV,IAAI,CAAC;QAClB;QACAK,CAAC,EAAEA,CAAC,GAAG,CAAC,IAAIL,IAAI,CAACK,CAAC,GAAG,CAAC,GAAGA,CAAC,GAAG,CAAC,GAAGA,CAAC,GAAG,EAAE;QACvCU,MAAM,EAAE;MACT,CAAC,CAAC;IACH;EACD;EACA,OAAO;IAAEb,KAAK;IAAEC;EAAO,CAAC;AACzB","ignoreList":[]}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.arcPath = arcPath;
7
+ exports.areaPath = areaPath;
8
+ exports.linePath = linePath;
9
+ exports.linearSegment = linearSegment;
10
+ exports.rectBatchPath = rectBatchPath;
11
+ exports.rectSubpath = rectSubpath;
12
+ /**
13
+ * SVG path-string builders.
14
+ *
15
+ * This is where the "never bridge a gap" guarantee (FR-012) becomes
16
+ * structural rather than a rule someone has to remember. A missing value does
17
+ * not produce a coordinate — it ends the current subpath. The next known value
18
+ * starts a fresh one with an `M` command. There is physically no line segment
19
+ * spanning the gap, so no amount of downstream carelessness can draw one.
20
+ *
21
+ * Batching into path data is also what keeps element counts flat: one `Path`
22
+ * per series regardless of point count (research.md R2).
23
+ *
24
+ * PURE. No React, no SVG imports — this module emits strings.
25
+ */
26
+
27
+ /** A point that may be absent, mirroring the value contract. */
28
+
29
+ function n(value) {
30
+ // Two decimals is well below sub-pixel visibility and keeps `d` strings
31
+ // short, which matters when they cross the bridge on every data change.
32
+ return Number.isFinite(value) ? value.toFixed(2) : '0';
33
+ }
34
+
35
+ /**
36
+ * Polyline through the known points, broken at every gap.
37
+ *
38
+ * `null` entries are missing values. They terminate the current subpath; they
39
+ * are never interpolated, carried forward, or skipped over.
40
+ */
41
+ function linePath(points) {
42
+ let d = '';
43
+ let penDown = false;
44
+ for (const p of points) {
45
+ if (p === null) {
46
+ // Lift the pen. The gap stays a gap.
47
+ penDown = false;
48
+ continue;
49
+ }
50
+ if (!penDown) {
51
+ d += `M${n(p.x)} ${n(p.y)}`;
52
+ penDown = true;
53
+ } else {
54
+ d += `L${n(p.x)} ${n(p.y)}`;
55
+ }
56
+ }
57
+ return d;
58
+ }
59
+
60
+ /**
61
+ * Filled area between the polyline and a baseline, broken at gaps in the same
62
+ * way: each contiguous run of known points becomes its own closed shape.
63
+ */
64
+ function areaPath(points, baselineY) {
65
+ let d = '';
66
+ let run = [];
67
+ const flush = () => {
68
+ if (run.length === 0) {
69
+ return;
70
+ }
71
+ d += `M${n(run[0].x)} ${n(baselineY)}`;
72
+ for (const p of run) {
73
+ d += `L${n(p.x)} ${n(p.y)}`;
74
+ }
75
+ d += `L${n(run[run.length - 1].x)} ${n(baselineY)}Z`;
76
+ run = [];
77
+ };
78
+ for (const p of points) {
79
+ if (p === null) {
80
+ flush();
81
+ } else {
82
+ run.push(p);
83
+ }
84
+ }
85
+ flush();
86
+ return d;
87
+ }
88
+ /** One rectangle as a subpath, with optional corner rounding. */
89
+ function rectSubpath(r) {
90
+ const radius = Math.min(r.radius ?? 0, r.width / 2, Math.abs(r.height) / 2);
91
+ if (radius <= 0) {
92
+ return `M${n(r.x)} ${n(r.y)}` + `h${n(r.width)}v${n(r.height)}h${n(-r.width)}Z`;
93
+ }
94
+ const {
95
+ x,
96
+ y,
97
+ width: w,
98
+ height: h
99
+ } = r;
100
+ return `M${n(x + radius)} ${n(y)}` + `h${n(w - radius * 2)}` + `a${n(radius)} ${n(radius)} 0 0 1 ${n(radius)} ${n(radius)}` + `v${n(h - radius * 2)}` + `a${n(radius)} ${n(radius)} 0 0 1 ${n(-radius)} ${n(radius)}` + `h${n(-(w - radius * 2))}` + `a${n(radius)} ${n(radius)} 0 0 1 ${n(-radius)} ${n(-radius)}` + `v${n(-(h - radius * 2))}` + `a${n(radius)} ${n(radius)} 0 0 1 ${n(radius)} ${n(-radius)}Z`;
101
+ }
102
+
103
+ /**
104
+ * Many rectangles batched into one path — how bars and heatmap cells stay at
105
+ * one element per series or per intensity bucket.
106
+ */
107
+ function rectBatchPath(rects) {
108
+ let d = '';
109
+ for (const r of rects) {
110
+ d += rectSubpath(r);
111
+ }
112
+ return d;
113
+ }
114
+ function polar(cx, cy, r, angle) {
115
+ // Offset by -90 degrees so 0 radians is 12 o'clock, which is where users
116
+ // expect a donut to start.
117
+ const a = angle - Math.PI / 2;
118
+ return {
119
+ x: cx + r * Math.cos(a),
120
+ y: cy + r * Math.sin(a)
121
+ };
122
+ }
123
+
124
+ /**
125
+ * Donut or pie segment. An inner radius of 0 yields a pie wedge.
126
+ *
127
+ * A full-circle segment is drawn as two half-arcs, because SVG cannot express
128
+ * a 360-degree arc in a single command — start and end would coincide and
129
+ * nothing would be drawn.
130
+ */
131
+ function arcPath(spec) {
132
+ const {
133
+ cx,
134
+ cy,
135
+ outerRadius: ro,
136
+ innerRadius: ri
137
+ } = spec;
138
+ const sweep = spec.endAngle - spec.startAngle;
139
+ const full = Math.abs(sweep) >= Math.PI * 2 - 1e-9;
140
+ if (full) {
141
+ const mid = spec.startAngle + Math.PI;
142
+ return arcPath({
143
+ ...spec,
144
+ endAngle: mid
145
+ }) + arcPath({
146
+ ...spec,
147
+ startAngle: mid,
148
+ endAngle: spec.startAngle + Math.PI * 2
149
+ });
150
+ }
151
+ const largeArc = Math.abs(sweep) > Math.PI ? 1 : 0;
152
+ const o0 = polar(cx, cy, ro, spec.startAngle);
153
+ const o1 = polar(cx, cy, ro, spec.endAngle);
154
+ if (ri <= 0) {
155
+ return `M${n(cx)} ${n(cy)}` + `L${n(o0.x)} ${n(o0.y)}` + `A${n(ro)} ${n(ro)} 0 ${largeArc} 1 ${n(o1.x)} ${n(o1.y)}Z`;
156
+ }
157
+ const i1 = polar(cx, cy, ri, spec.endAngle);
158
+ const i0 = polar(cx, cy, ri, spec.startAngle);
159
+ return `M${n(o0.x)} ${n(o0.y)}` + `A${n(ro)} ${n(ro)} 0 ${largeArc} 1 ${n(o1.x)} ${n(o1.y)}` + `L${n(i1.x)} ${n(i1.y)}` + `A${n(ri)} ${n(ri)} 0 ${largeArc} 0 ${n(i0.x)} ${n(i0.y)}Z`;
160
+ }
161
+
162
+ /** Straight line, for axes, baselines, and threshold markers. */
163
+ function linearSegment(from, to) {
164
+ return `M${n(from.x)} ${n(from.y)}L${n(to.x)} ${n(to.y)}`;
165
+ }
166
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["n","value","Number","isFinite","toFixed","linePath","points","d","penDown","p","x","y","areaPath","baselineY","run","flush","length","push","rectSubpath","r","radius","Math","min","width","abs","height","w","h","rectBatchPath","rects","polar","cx","cy","angle","a","PI","cos","sin","arcPath","spec","outerRadius","ro","innerRadius","ri","sweep","endAngle","startAngle","full","mid","largeArc","o0","o1","i1","i0","linearSegment","from","to"],"sourceRoot":"../../../src","sources":["geometry/path.ts"],"mappings":"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","ignoreList":[]}