minerva-design 1.1.0 → 1.3.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 (385) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/charts/canvas.d.cts +10 -0
  3. package/dist/charts/canvas.d.ts +10 -0
  4. package/dist/charts/core.cjs +1 -1
  5. package/dist/charts/core.d.cts +8 -1
  6. package/dist/charts/core.d.ts +8 -1
  7. package/dist/charts/core.js +6 -1
  8. package/dist/charts/engine/canvas.cjs +2 -0
  9. package/dist/charts/engine/canvas.cjs.map +1 -0
  10. package/dist/charts/engine/canvas.d.cts +85 -0
  11. package/dist/charts/engine/canvas.d.ts +85 -0
  12. package/dist/charts/engine/canvas.js +177 -0
  13. package/dist/charts/engine/canvas.js.map +1 -0
  14. package/dist/charts/engine/chart.cjs +1 -2
  15. package/dist/charts/engine/chart.cjs.map +1 -1
  16. package/dist/charts/engine/chart.js +450 -489
  17. package/dist/charts/engine/chart.js.map +1 -1
  18. package/dist/charts/engine/color.cjs +1 -1
  19. package/dist/charts/engine/color.cjs.map +1 -1
  20. package/dist/charts/engine/color.d.cts +27 -0
  21. package/dist/charts/engine/color.d.ts +27 -0
  22. package/dist/charts/engine/color.js +100 -4
  23. package/dist/charts/engine/color.js.map +1 -1
  24. package/dist/charts/engine/controller.cjs +3 -0
  25. package/dist/charts/engine/controller.cjs.map +1 -0
  26. package/dist/charts/engine/controller.d.cts +188 -0
  27. package/dist/charts/engine/controller.d.ts +188 -0
  28. package/dist/charts/engine/controller.js +592 -0
  29. package/dist/charts/engine/controller.js.map +1 -0
  30. package/dist/charts/engine/curve.cjs +2 -0
  31. package/dist/charts/engine/curve.cjs.map +1 -0
  32. package/dist/charts/engine/curve.d.cts +15 -0
  33. package/dist/charts/engine/curve.d.ts +15 -0
  34. package/dist/charts/engine/curve.js +56 -0
  35. package/dist/charts/engine/curve.js.map +1 -0
  36. package/dist/charts/engine/data.cjs +1 -1
  37. package/dist/charts/engine/data.cjs.map +1 -1
  38. package/dist/charts/engine/data.d.cts +15 -2
  39. package/dist/charts/engine/data.d.ts +15 -2
  40. package/dist/charts/engine/data.js +98 -38
  41. package/dist/charts/engine/data.js.map +1 -1
  42. package/dist/charts/engine/dom.cjs +1 -1
  43. package/dist/charts/engine/dom.cjs.map +1 -1
  44. package/dist/charts/engine/dom.d.cts +5 -3
  45. package/dist/charts/engine/dom.d.ts +5 -3
  46. package/dist/charts/engine/dom.js +27 -22
  47. package/dist/charts/engine/dom.js.map +1 -1
  48. package/dist/charts/engine/items.cjs +1 -1
  49. package/dist/charts/engine/items.cjs.map +1 -1
  50. package/dist/charts/engine/items.js +132 -61
  51. package/dist/charts/engine/items.js.map +1 -1
  52. package/dist/charts/engine/model.cjs +1 -1
  53. package/dist/charts/engine/model.cjs.map +1 -1
  54. package/dist/charts/engine/model.d.cts +32 -5
  55. package/dist/charts/engine/model.d.ts +32 -5
  56. package/dist/charts/engine/model.js +226 -109
  57. package/dist/charts/engine/model.js.map +1 -1
  58. package/dist/charts/engine/overlay.cjs +1 -1
  59. package/dist/charts/engine/overlay.cjs.map +1 -1
  60. package/dist/charts/engine/overlay.d.cts +19 -1
  61. package/dist/charts/engine/overlay.d.ts +19 -1
  62. package/dist/charts/engine/overlay.js +77 -63
  63. package/dist/charts/engine/overlay.js.map +1 -1
  64. package/dist/charts/engine/presets.cjs +3 -0
  65. package/dist/charts/engine/presets.cjs.map +1 -0
  66. package/dist/charts/engine/presets.d.cts +169 -0
  67. package/dist/charts/engine/presets.d.ts +169 -0
  68. package/dist/charts/engine/presets.js +240 -0
  69. package/dist/charts/engine/presets.js.map +1 -0
  70. package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
  71. package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
  72. package/dist/charts/engine/renderers/canvas2d.d.cts +17 -1
  73. package/dist/charts/engine/renderers/canvas2d.d.ts +17 -1
  74. package/dist/charts/engine/renderers/canvas2d.js +176 -101
  75. package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
  76. package/dist/charts/engine/renderers/range.cjs +1 -1
  77. package/dist/charts/engine/renderers/range.cjs.map +1 -1
  78. package/dist/charts/engine/renderers/range.js +4 -4
  79. package/dist/charts/engine/renderers/range.js.map +1 -1
  80. package/dist/charts/engine/renderers/shaders.cjs +37 -19
  81. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  82. package/dist/charts/engine/renderers/shaders.d.cts +2 -2
  83. package/dist/charts/engine/renderers/shaders.d.ts +2 -2
  84. package/dist/charts/engine/renderers/shaders.js +37 -19
  85. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  86. package/dist/charts/engine/renderers/types.cjs.map +1 -1
  87. package/dist/charts/engine/renderers/types.d.cts +11 -4
  88. package/dist/charts/engine/renderers/types.d.ts +11 -4
  89. package/dist/charts/engine/renderers/types.js.map +1 -1
  90. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  91. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  92. package/dist/charts/engine/renderers/webgl2.js +33 -12
  93. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  94. package/dist/charts/engine/renderers/webgpu.cjs +1 -1
  95. package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
  96. package/dist/charts/engine/renderers/webgpu.js +18 -15
  97. package/dist/charts/engine/renderers/webgpu.js.map +1 -1
  98. package/dist/charts/engine/scene.cjs +2 -0
  99. package/dist/charts/engine/scene.cjs.map +1 -0
  100. package/dist/charts/engine/scene.d.cts +102 -0
  101. package/dist/charts/engine/scene.d.ts +102 -0
  102. package/dist/charts/engine/scene.js +353 -0
  103. package/dist/charts/engine/scene.js.map +1 -0
  104. package/dist/charts/engine/shapes/canvas.cjs +2 -0
  105. package/dist/charts/engine/shapes/canvas.cjs.map +1 -0
  106. package/dist/charts/engine/shapes/canvas.d.cts +58 -0
  107. package/dist/charts/engine/shapes/canvas.d.ts +58 -0
  108. package/dist/charts/engine/shapes/canvas.js +159 -0
  109. package/dist/charts/engine/shapes/canvas.js.map +1 -0
  110. package/dist/charts/engine/shapes/chart.cjs +2 -0
  111. package/dist/charts/engine/shapes/chart.cjs.map +1 -0
  112. package/dist/charts/engine/shapes/chart.d.cts +6 -0
  113. package/dist/charts/engine/shapes/chart.d.ts +6 -0
  114. package/dist/charts/engine/shapes/chart.js +273 -0
  115. package/dist/charts/engine/shapes/chart.js.map +1 -0
  116. package/dist/charts/engine/shapes/draw.cjs +2 -0
  117. package/dist/charts/engine/shapes/draw.cjs.map +1 -0
  118. package/dist/charts/engine/shapes/draw.d.cts +20 -0
  119. package/dist/charts/engine/shapes/draw.d.ts +20 -0
  120. package/dist/charts/engine/shapes/draw.js +152 -0
  121. package/dist/charts/engine/shapes/draw.js.map +1 -0
  122. package/dist/charts/engine/shapes/funnel.cjs +2 -0
  123. package/dist/charts/engine/shapes/funnel.cjs.map +1 -0
  124. package/dist/charts/engine/shapes/funnel.d.cts +6 -0
  125. package/dist/charts/engine/shapes/funnel.d.ts +6 -0
  126. package/dist/charts/engine/shapes/funnel.js +149 -0
  127. package/dist/charts/engine/shapes/funnel.js.map +1 -0
  128. package/dist/charts/engine/shapes/gauge.cjs +2 -0
  129. package/dist/charts/engine/shapes/gauge.cjs.map +1 -0
  130. package/dist/charts/engine/shapes/gauge.d.cts +7 -0
  131. package/dist/charts/engine/shapes/gauge.d.ts +7 -0
  132. package/dist/charts/engine/shapes/gauge.js +173 -0
  133. package/dist/charts/engine/shapes/gauge.js.map +1 -0
  134. package/dist/charts/engine/shapes/hit.cjs +2 -0
  135. package/dist/charts/engine/shapes/hit.cjs.map +1 -0
  136. package/dist/charts/engine/shapes/hit.d.cts +28 -0
  137. package/dist/charts/engine/shapes/hit.d.ts +28 -0
  138. package/dist/charts/engine/shapes/hit.js +124 -0
  139. package/dist/charts/engine/shapes/hit.js.map +1 -0
  140. package/dist/charts/engine/shapes/index.d.cts +9 -0
  141. package/dist/charts/engine/shapes/index.d.ts +9 -0
  142. package/dist/charts/engine/shapes/layout.cjs +3 -0
  143. package/dist/charts/engine/shapes/layout.cjs.map +1 -0
  144. package/dist/charts/engine/shapes/layout.d.cts +88 -0
  145. package/dist/charts/engine/shapes/layout.d.ts +88 -0
  146. package/dist/charts/engine/shapes/layout.js +266 -0
  147. package/dist/charts/engine/shapes/layout.js.map +1 -0
  148. package/dist/charts/engine/shapes/pie.cjs +2 -0
  149. package/dist/charts/engine/shapes/pie.cjs.map +1 -0
  150. package/dist/charts/engine/shapes/pie.d.cts +20 -0
  151. package/dist/charts/engine/shapes/pie.d.ts +20 -0
  152. package/dist/charts/engine/shapes/pie.js +302 -0
  153. package/dist/charts/engine/shapes/pie.js.map +1 -0
  154. package/dist/charts/engine/shapes/radar.cjs +2 -0
  155. package/dist/charts/engine/shapes/radar.cjs.map +1 -0
  156. package/dist/charts/engine/shapes/radar.d.cts +8 -0
  157. package/dist/charts/engine/shapes/radar.d.ts +8 -0
  158. package/dist/charts/engine/shapes/radar.js +197 -0
  159. package/dist/charts/engine/shapes/radar.js.map +1 -0
  160. package/dist/charts/engine/shapes/runtime.cjs +2 -0
  161. package/dist/charts/engine/shapes/runtime.cjs.map +1 -0
  162. package/dist/charts/engine/shapes/runtime.d.cts +29 -0
  163. package/dist/charts/engine/shapes/runtime.d.ts +29 -0
  164. package/dist/charts/engine/shapes/runtime.js +97 -0
  165. package/dist/charts/engine/shapes/runtime.js.map +1 -0
  166. package/dist/charts/engine/shapes/scene.cjs +2 -0
  167. package/dist/charts/engine/shapes/scene.cjs.map +1 -0
  168. package/dist/charts/engine/shapes/scene.d.cts +257 -0
  169. package/dist/charts/engine/shapes/scene.d.ts +257 -0
  170. package/dist/charts/engine/shapes/scene.js +123 -0
  171. package/dist/charts/engine/shapes/scene.js.map +1 -0
  172. package/dist/charts/engine/shapes/treemap.cjs +2 -0
  173. package/dist/charts/engine/shapes/treemap.cjs.map +1 -0
  174. package/dist/charts/engine/shapes/treemap.d.cts +14 -0
  175. package/dist/charts/engine/shapes/treemap.d.ts +14 -0
  176. package/dist/charts/engine/shapes/treemap.js +213 -0
  177. package/dist/charts/engine/shapes/treemap.js.map +1 -0
  178. package/dist/charts/engine/shapes/types.d.cts +292 -0
  179. package/dist/charts/engine/shapes/types.d.ts +292 -0
  180. package/dist/charts/engine/signature.cjs +2 -0
  181. package/dist/charts/engine/signature.cjs.map +1 -0
  182. package/dist/charts/engine/signature.d.cts +9 -0
  183. package/dist/charts/engine/signature.d.ts +9 -0
  184. package/dist/charts/engine/signature.js +13 -0
  185. package/dist/charts/engine/signature.js.map +1 -0
  186. package/dist/charts/engine/theme.cjs +1 -1
  187. package/dist/charts/engine/theme.cjs.map +1 -1
  188. package/dist/charts/engine/theme.d.cts +35 -2
  189. package/dist/charts/engine/theme.d.ts +35 -2
  190. package/dist/charts/engine/theme.js +66 -26
  191. package/dist/charts/engine/theme.js.map +1 -1
  192. package/dist/charts/engine/types.d.cts +139 -11
  193. package/dist/charts/engine/types.d.ts +139 -11
  194. package/dist/charts/index.cjs +1 -1
  195. package/dist/charts/index.d.cts +4 -2
  196. package/dist/charts/index.d.ts +4 -2
  197. package/dist/charts/index.js +8 -2
  198. package/dist/charts/react/Chart.cjs +1 -1
  199. package/dist/charts/react/Chart.cjs.map +1 -1
  200. package/dist/charts/react/Chart.d.cts +18 -4
  201. package/dist/charts/react/Chart.d.ts +18 -4
  202. package/dist/charts/react/Chart.js +102 -41
  203. package/dist/charts/react/Chart.js.map +1 -1
  204. package/dist/charts/react/charts.cjs +1 -1
  205. package/dist/charts/react/charts.cjs.map +1 -1
  206. package/dist/charts/react/charts.d.cts +11 -3
  207. package/dist/charts/react/charts.d.ts +11 -3
  208. package/dist/charts/react/charts.js +221 -144
  209. package/dist/charts/react/charts.js.map +1 -1
  210. package/dist/charts/react/shapes.cjs +2 -0
  211. package/dist/charts/react/shapes.cjs.map +1 -0
  212. package/dist/charts/react/shapes.d.cts +255 -0
  213. package/dist/charts/react/shapes.d.ts +255 -0
  214. package/dist/charts/react/shapes.js +242 -0
  215. package/dist/charts/react/shapes.js.map +1 -0
  216. package/dist/charts/react/types.d.cts +100 -63
  217. package/dist/charts/react/types.d.ts +100 -63
  218. package/dist/native/charts/src/canvas.cjs +1 -0
  219. package/dist/native/charts/src/canvas.js +6 -0
  220. package/dist/native/charts/src/engine/axis.cjs +2 -0
  221. package/dist/native/charts/src/engine/axis.cjs.map +1 -0
  222. package/dist/native/charts/src/engine/axis.js +38 -0
  223. package/dist/native/charts/src/engine/axis.js.map +1 -0
  224. package/dist/native/charts/src/engine/canvas.cjs +1 -0
  225. package/dist/native/charts/src/engine/canvas.js +1 -0
  226. package/dist/native/charts/src/engine/color.cjs +2 -0
  227. package/dist/native/charts/src/engine/color.cjs.map +1 -0
  228. package/dist/native/charts/src/engine/color.js +139 -0
  229. package/dist/native/charts/src/engine/color.js.map +1 -0
  230. package/dist/native/charts/src/engine/controller.cjs +3 -0
  231. package/dist/native/charts/src/engine/controller.cjs.map +1 -0
  232. package/dist/native/charts/src/engine/controller.js +592 -0
  233. package/dist/native/charts/src/engine/controller.js.map +1 -0
  234. package/dist/native/charts/src/engine/curve.cjs +2 -0
  235. package/dist/native/charts/src/engine/curve.cjs.map +1 -0
  236. package/dist/native/charts/src/engine/curve.js +56 -0
  237. package/dist/native/charts/src/engine/curve.js.map +1 -0
  238. package/dist/native/charts/src/engine/data.cjs +2 -0
  239. package/dist/native/charts/src/engine/data.cjs.map +1 -0
  240. package/dist/native/charts/src/engine/data.js +164 -0
  241. package/dist/native/charts/src/engine/data.js.map +1 -0
  242. package/dist/native/charts/src/engine/decimate.cjs +2 -0
  243. package/dist/native/charts/src/engine/decimate.cjs.map +1 -0
  244. package/dist/native/charts/src/engine/decimate.js +28 -0
  245. package/dist/native/charts/src/engine/decimate.js.map +1 -0
  246. package/dist/native/charts/src/engine/format.cjs +2 -0
  247. package/dist/native/charts/src/engine/format.cjs.map +1 -0
  248. package/dist/native/charts/src/engine/format.js +34 -0
  249. package/dist/native/charts/src/engine/format.js.map +1 -0
  250. package/dist/native/charts/src/engine/layout.cjs +2 -0
  251. package/dist/native/charts/src/engine/layout.cjs.map +1 -0
  252. package/dist/native/charts/src/engine/layout.js +26 -0
  253. package/dist/native/charts/src/engine/layout.js.map +1 -0
  254. package/dist/native/charts/src/engine/model.cjs +2 -0
  255. package/dist/native/charts/src/engine/model.cjs.map +1 -0
  256. package/dist/native/charts/src/engine/model.js +292 -0
  257. package/dist/native/charts/src/engine/model.js.map +1 -0
  258. package/dist/native/charts/src/engine/overlay.cjs +2 -0
  259. package/dist/native/charts/src/engine/overlay.cjs.map +1 -0
  260. package/dist/native/charts/src/engine/overlay.js +49 -0
  261. package/dist/native/charts/src/engine/overlay.js.map +1 -0
  262. package/dist/native/charts/src/engine/presets.cjs +3 -0
  263. package/dist/native/charts/src/engine/presets.cjs.map +1 -0
  264. package/dist/native/charts/src/engine/presets.js +154 -0
  265. package/dist/native/charts/src/engine/presets.js.map +1 -0
  266. package/dist/native/charts/src/engine/scale.cjs +2 -0
  267. package/dist/native/charts/src/engine/scale.cjs.map +1 -0
  268. package/dist/native/charts/src/engine/scale.js +37 -0
  269. package/dist/native/charts/src/engine/scale.js.map +1 -0
  270. package/dist/native/charts/src/engine/scene.cjs +2 -0
  271. package/dist/native/charts/src/engine/scene.cjs.map +1 -0
  272. package/dist/native/charts/src/engine/scene.js +353 -0
  273. package/dist/native/charts/src/engine/scene.js.map +1 -0
  274. package/dist/native/charts/src/engine/spatial.cjs +2 -0
  275. package/dist/native/charts/src/engine/spatial.cjs.map +1 -0
  276. package/dist/native/charts/src/engine/spatial.js +53 -0
  277. package/dist/native/charts/src/engine/spatial.js.map +1 -0
  278. package/dist/native/charts/src/engine/theme.cjs +2 -0
  279. package/dist/native/charts/src/engine/theme.cjs.map +1 -0
  280. package/dist/native/charts/src/engine/theme.js +62 -0
  281. package/dist/native/charts/src/engine/theme.js.map +1 -0
  282. package/dist/native/charts/src/engine/time.cjs +2 -0
  283. package/dist/native/charts/src/engine/time.cjs.map +1 -0
  284. package/dist/native/charts/src/engine/time.js +189 -0
  285. package/dist/native/charts/src/engine/time.js.map +1 -0
  286. package/dist/native/charts/src/engine/viewport.cjs +2 -0
  287. package/dist/native/charts/src/engine/viewport.cjs.map +1 -0
  288. package/dist/native/charts/src/engine/viewport.js +12 -0
  289. package/dist/native/charts/src/engine/viewport.js.map +1 -0
  290. package/dist/native/components/Chart/ChartBase.cjs +2 -0
  291. package/dist/native/components/Chart/ChartBase.cjs.map +1 -0
  292. package/dist/native/components/Chart/ChartBase.d.cts +29 -0
  293. package/dist/native/components/Chart/ChartBase.d.ts +29 -0
  294. package/dist/native/components/Chart/ChartBase.js +287 -0
  295. package/dist/native/components/Chart/ChartBase.js.map +1 -0
  296. package/dist/native/components/Chart/charts.cjs +2 -0
  297. package/dist/native/components/Chart/charts.cjs.map +1 -0
  298. package/dist/native/components/Chart/charts.d.cts +19 -0
  299. package/dist/native/components/Chart/charts.d.ts +19 -0
  300. package/dist/native/components/Chart/charts.js +173 -0
  301. package/dist/native/components/Chart/charts.js.map +1 -0
  302. package/dist/native/components/Chart/index.cjs +1 -0
  303. package/dist/native/components/Chart/index.d.cts +2 -0
  304. package/dist/native/components/Chart/index.d.ts +2 -0
  305. package/dist/native/components/Chart/index.js +2 -0
  306. package/dist/native/components/Chart/measure.cjs +2 -0
  307. package/dist/native/components/Chart/measure.cjs.map +1 -0
  308. package/dist/native/components/Chart/measure.d.cts +5 -0
  309. package/dist/native/components/Chart/measure.d.ts +5 -0
  310. package/dist/native/components/Chart/measure.js +11 -0
  311. package/dist/native/components/Chart/measure.js.map +1 -0
  312. package/dist/native/components/Chart/scene.cjs +2 -0
  313. package/dist/native/components/Chart/scene.cjs.map +1 -0
  314. package/dist/native/components/Chart/scene.d.cts +41 -0
  315. package/dist/native/components/Chart/scene.d.ts +41 -0
  316. package/dist/native/components/Chart/scene.js +431 -0
  317. package/dist/native/components/Chart/scene.js.map +1 -0
  318. package/dist/native/components/Chart/theme.cjs +2 -0
  319. package/dist/native/components/Chart/theme.cjs.map +1 -0
  320. package/dist/native/components/Chart/theme.d.cts +10 -0
  321. package/dist/native/components/Chart/theme.d.ts +10 -0
  322. package/dist/native/components/Chart/theme.js +10 -0
  323. package/dist/native/components/Chart/theme.js.map +1 -0
  324. package/dist/native/components/Chart/types.d.cts +129 -0
  325. package/dist/native/components/Chart/types.d.ts +129 -0
  326. package/dist/native/index.cjs +1 -1
  327. package/dist/native/index.d.cts +1 -0
  328. package/dist/native/index.d.ts +1 -0
  329. package/dist/native/index.js +6 -4
  330. package/dist/native/manifest.d.cts +7 -0
  331. package/dist/native/manifest.d.ts +7 -0
  332. package/dist/native/source/components/Chart/ChartBase.tsx +545 -0
  333. package/dist/native/source/components/Chart/charts.tsx +291 -0
  334. package/dist/native/source/components/Chart/index.ts +8 -0
  335. package/dist/native/source/components/Chart/measure.ts +50 -0
  336. package/dist/native/source/components/Chart/scene.tsx +1021 -0
  337. package/dist/native/source/components/Chart/theme.ts +16 -0
  338. package/dist/native/source/components/Chart/types.ts +194 -0
  339. package/dist/native/source/index.ts +1 -0
  340. package/dist/native/source/manifest.ts +14 -0
  341. package/dist/taro/charts.d.ts +144 -0
  342. package/dist/taro/index.d.ts +1 -0
  343. package/dist/taro/index.js +3544 -618
  344. package/dist/uni/BarChart.vue +75 -0
  345. package/dist/uni/BarChart.vue.d.ts +111 -0
  346. package/dist/uni/Chart.vue +68 -0
  347. package/dist/uni/Chart.vue.d.ts +100 -0
  348. package/dist/uni/LineChart.vue +75 -0
  349. package/dist/uni/LineChart.vue.d.ts +111 -0
  350. package/dist/uni/ProgressIndicator.vue.d.ts +1 -1
  351. package/dist/uni/QuadrantChart.vue +184 -0
  352. package/dist/uni/QuadrantChart.vue.d.ts +173 -0
  353. package/dist/uni/ScatterChart.vue +69 -0
  354. package/dist/uni/ScatterChart.vue.d.ts +100 -0
  355. package/dist/uni/chart-canvas.d.ts +68 -0
  356. package/dist/uni/chart-canvas.js +363 -0
  357. package/dist/uni/chart-types.d.ts +135 -0
  358. package/dist/uni/chart-types.js +84 -0
  359. package/dist/uni/charts-canvas.d.ts +1 -0
  360. package/dist/uni/charts-canvas.js +10 -0
  361. package/dist/uni/index.d.ts +6 -0
  362. package/dist/uni/index.js +6 -0
  363. package/dist/weapp/bar-chart/index.js +1 -0
  364. package/dist/weapp/bar-chart/index.json +1 -0
  365. package/dist/weapp/bar-chart/index.wxml +1 -0
  366. package/dist/weapp/bar-chart/index.wxss +1 -0
  367. package/dist/weapp/chart/index.js +1 -0
  368. package/dist/weapp/chart/index.json +1 -0
  369. package/dist/weapp/chart/index.wxml +1 -0
  370. package/dist/weapp/chart/index.wxss +1 -0
  371. package/dist/weapp/controls.js +4760 -266
  372. package/dist/weapp/line-chart/index.js +1 -0
  373. package/dist/weapp/line-chart/index.json +1 -0
  374. package/dist/weapp/line-chart/index.wxml +1 -0
  375. package/dist/weapp/line-chart/index.wxss +1 -0
  376. package/dist/weapp/quadrant-chart/index.js +1 -0
  377. package/dist/weapp/quadrant-chart/index.json +1 -0
  378. package/dist/weapp/quadrant-chart/index.wxml +1 -0
  379. package/dist/weapp/quadrant-chart/index.wxss +1 -0
  380. package/dist/weapp/scatter-chart/index.js +1 -0
  381. package/dist/weapp/scatter-chart/index.json +1 -0
  382. package/dist/weapp/scatter-chart/index.wxml +1 -0
  383. package/dist/weapp/scatter-chart/index.wxss +1 -0
  384. package/dist/weapp/types.d.ts +295 -0
  385. package/package.json +21 -1
@@ -0,0 +1,169 @@
1
+ import { ChartCurve, ChartOptions, ChartSeries, ChartSeriesType } from './types.cjs';
2
+ /** Gives the series without a `type` the type of the component */
3
+ export declare const withSeriesType: (series: readonly ChartSeries[], type: ChartSeriesType, stack?: string, curve?: ChartCurve) => ChartSeries[];
4
+ /** Options of the line-like components */
5
+ export interface LineSeriesOptions {
6
+ /** Stacks the series on top of each other */
7
+ stacked?: boolean;
8
+ /** Shape of the lines */
9
+ curve?: ChartCurve;
10
+ }
11
+ /** Series of a LineChart (`area` fills them) */
12
+ export declare const lineSeries: (series: readonly ChartSeries[], area?: boolean, extra?: LineSeriesOptions) => ChartSeries[];
13
+ /** Series of an AreaChart */
14
+ export declare const areaSeries: (series: readonly ChartSeries[], extra?: LineSeriesOptions) => ChartSeries[];
15
+ /** Series of a BarChart (`stacked` stacks them, `labels` shows the values) */
16
+ export declare const barSeries: (series: readonly ChartSeries[], stacked?: boolean, labels?: boolean) => ChartSeries[];
17
+ /** Series of a ScatterChart */
18
+ export declare const scatterSeries: (series: readonly ChartSeries[]) => ChartSeries[];
19
+ /** Series of a CandlestickChart */
20
+ export declare const candlestickSeries: (series: readonly ChartSeries[]) => ChartSeries[];
21
+ /** A cell of a HeatmapChart */
22
+ export interface HeatmapCell {
23
+ /** Column: a category name (or a number on a numeric axis) */
24
+ x: string | number;
25
+ /** Row: a category name (or a number on a numeric axis) */
26
+ y: string | number;
27
+ /** Value mapped to the color scale; `null` leaves the cell empty */
28
+ value: number | null;
29
+ }
30
+ /** Settings of a heatmap (the props of HeatmapChart) */
31
+ export interface HeatmapConfig {
32
+ /** Cells */
33
+ data: readonly HeatmapCell[];
34
+ /** Column names in order (collected from the data when omitted) */
35
+ xCategories?: readonly string[];
36
+ /** Row names from bottom to top (collected from the data when omitted) */
37
+ yCategories?: readonly string[];
38
+ /** Colors from the lowest to the highest value; a ramp of the first palette color by default */
39
+ colorScale?: readonly string[];
40
+ /** Values at the ends of the color scale; the data range by default */
41
+ valueRange?: readonly [number, number];
42
+ /** Name of the value in the tooltip */
43
+ name?: string;
44
+ /** Corner radius of the cells, in pixels */
45
+ radius?: number;
46
+ /** Formats the values in the tooltip */
47
+ format?: (value: number) => string;
48
+ }
49
+ /** Engine options of a heatmap */
50
+ export declare const heatmapChartOptions: (config: HeatmapConfig, base?: Partial<ChartOptions>) => ChartOptions;
51
+ /** Settings of a sparkline (the props of Sparkline) */
52
+ export interface SparklineConfig {
53
+ /** Values (or `[x, y]` pairs, typed arrays, ...) */
54
+ data: ChartSeries["data"];
55
+ /**
56
+ * How the values are drawn
57
+ * @default "line"
58
+ */
59
+ type?: "line" | "area" | "bar";
60
+ /** Color (any CSS color); the first palette color by default */
61
+ color?: string;
62
+ /**
63
+ * Shape of the line
64
+ * @default "smooth"
65
+ */
66
+ curve?: ChartCurve;
67
+ /** Name shown in the tooltip */
68
+ name?: string;
69
+ /** Draws a reference line at this value (e.g. a target or the average) */
70
+ reference?: number;
71
+ /** Formats the value in the tooltip */
72
+ format?: (value: number) => string;
73
+ }
74
+ /** Engine options of a sparkline: no axes, no legend, a tooltip only */
75
+ export declare const sparklineOptions: (config: SparklineConfig, base?: Partial<ChartOptions>) => ChartOptions;
76
+ /** A point of a QuadrantChart */
77
+ export interface QuadrantPoint {
78
+ /** Position on the horizontal axis */
79
+ x: number;
80
+ /** Position on the vertical axis */
81
+ y: number;
82
+ /** Text drawn next to the dot and shown in the tooltip */
83
+ label?: string;
84
+ /** Dot color (any CSS color); the color of its quadrant by default */
85
+ color?: string;
86
+ /** Dot diameter in pixels */
87
+ size?: number;
88
+ }
89
+ /** Title and color of a quadrant */
90
+ export interface QuadrantRegion {
91
+ /** Title drawn in the outer corner of the quadrant */
92
+ label?: string;
93
+ /** Background tint and default dot color (any CSS color) */
94
+ color?: string;
95
+ }
96
+ /** The four quadrants of a QuadrantChart */
97
+ export interface QuadrantRegions {
98
+ topLeft?: QuadrantRegion;
99
+ topRight?: QuadrantRegion;
100
+ bottomLeft?: QuadrantRegion;
101
+ bottomRight?: QuadrantRegion;
102
+ }
103
+ /** A quadrant, as seen on screen */
104
+ export type QuadrantCorner = keyof QuadrantRegions;
105
+ /** Texts at the four ends of the dividers, inside the plot */
106
+ export interface QuadrantAxisLabels {
107
+ top?: string;
108
+ bottom?: string;
109
+ left?: string;
110
+ right?: string;
111
+ }
112
+ /** Settings of a quadrant matrix (the props of QuadrantChart) */
113
+ export interface QuadrantConfig {
114
+ /** Points to place */
115
+ points: readonly QuadrantPoint[];
116
+ /**
117
+ * Range of the horizontal axis
118
+ * @default [0, 10]
119
+ */
120
+ xDomain?: [number, number];
121
+ /**
122
+ * Range of the vertical axis
123
+ * @default [0, 10]
124
+ */
125
+ yDomain?: [number, number];
126
+ /** X value of the vertical divider (the middle of `xDomain` by default) */
127
+ xSplit?: number;
128
+ /** Y value of the horizontal divider (the middle of `yDomain` by default) */
129
+ ySplit?: number;
130
+ /** Titles and colors of the quadrants */
131
+ quadrants?: QuadrantRegions;
132
+ /** Title of the horizontal axis */
133
+ xLabel?: string;
134
+ /** Title of the vertical axis */
135
+ yLabel?: string;
136
+ /** Texts at the ends of the dividers, drawn inside the plot (e.g. "Important" at the top) */
137
+ axisLabels?: QuadrantAxisLabels;
138
+ /**
139
+ * Shows the numeric ticks of the axes; `false` keeps only the matrix
140
+ * @default true
141
+ */
142
+ showTicks?: boolean;
143
+ /** Reverses the horizontal axis (e.g. "urgent" on the left) */
144
+ reverseX?: boolean;
145
+ /**
146
+ * Draws the labels next to the dots (overlapping labels are skipped)
147
+ * @default true
148
+ */
149
+ showLabels?: boolean;
150
+ /**
151
+ * Dot diameter in pixels
152
+ * @default 12
153
+ */
154
+ pointSize?: number;
155
+ /** Name of the points in the tooltip */
156
+ name?: string;
157
+ /** Lets the user drag the dots (`drag` / `drop` events) */
158
+ draggable?: boolean;
159
+ }
160
+ export declare const DEFAULT_QUADRANT_COLORS: Required<Record<QuadrantCorner, string>>;
161
+ /** Quadrant of a data position, as seen on screen */
162
+ export declare const quadrantOf: (config: Pick<QuadrantConfig, "xDomain" | "yDomain" | "xSplit" | "ySplit" | "reverseX">, x: number, y: number) => QuadrantCorner;
163
+ /** Center of a quadrant in data coordinates */
164
+ export declare const quadrantCenter: (config: Pick<QuadrantConfig, "xDomain" | "yDomain" | "xSplit" | "ySplit" | "reverseX">, corner: QuadrantCorner) => {
165
+ x: number;
166
+ y: number;
167
+ };
168
+ /** Engine options of a quadrant matrix */
169
+ export declare const quadrantChartOptions: (config: QuadrantConfig, base?: Omit<ChartOptions, "series">) => ChartOptions;
@@ -0,0 +1,169 @@
1
+ import { ChartCurve, ChartOptions, ChartSeries, ChartSeriesType } from './types.js';
2
+ /** Gives the series without a `type` the type of the component */
3
+ export declare const withSeriesType: (series: readonly ChartSeries[], type: ChartSeriesType, stack?: string, curve?: ChartCurve) => ChartSeries[];
4
+ /** Options of the line-like components */
5
+ export interface LineSeriesOptions {
6
+ /** Stacks the series on top of each other */
7
+ stacked?: boolean;
8
+ /** Shape of the lines */
9
+ curve?: ChartCurve;
10
+ }
11
+ /** Series of a LineChart (`area` fills them) */
12
+ export declare const lineSeries: (series: readonly ChartSeries[], area?: boolean, extra?: LineSeriesOptions) => ChartSeries[];
13
+ /** Series of an AreaChart */
14
+ export declare const areaSeries: (series: readonly ChartSeries[], extra?: LineSeriesOptions) => ChartSeries[];
15
+ /** Series of a BarChart (`stacked` stacks them, `labels` shows the values) */
16
+ export declare const barSeries: (series: readonly ChartSeries[], stacked?: boolean, labels?: boolean) => ChartSeries[];
17
+ /** Series of a ScatterChart */
18
+ export declare const scatterSeries: (series: readonly ChartSeries[]) => ChartSeries[];
19
+ /** Series of a CandlestickChart */
20
+ export declare const candlestickSeries: (series: readonly ChartSeries[]) => ChartSeries[];
21
+ /** A cell of a HeatmapChart */
22
+ export interface HeatmapCell {
23
+ /** Column: a category name (or a number on a numeric axis) */
24
+ x: string | number;
25
+ /** Row: a category name (or a number on a numeric axis) */
26
+ y: string | number;
27
+ /** Value mapped to the color scale; `null` leaves the cell empty */
28
+ value: number | null;
29
+ }
30
+ /** Settings of a heatmap (the props of HeatmapChart) */
31
+ export interface HeatmapConfig {
32
+ /** Cells */
33
+ data: readonly HeatmapCell[];
34
+ /** Column names in order (collected from the data when omitted) */
35
+ xCategories?: readonly string[];
36
+ /** Row names from bottom to top (collected from the data when omitted) */
37
+ yCategories?: readonly string[];
38
+ /** Colors from the lowest to the highest value; a ramp of the first palette color by default */
39
+ colorScale?: readonly string[];
40
+ /** Values at the ends of the color scale; the data range by default */
41
+ valueRange?: readonly [number, number];
42
+ /** Name of the value in the tooltip */
43
+ name?: string;
44
+ /** Corner radius of the cells, in pixels */
45
+ radius?: number;
46
+ /** Formats the values in the tooltip */
47
+ format?: (value: number) => string;
48
+ }
49
+ /** Engine options of a heatmap */
50
+ export declare const heatmapChartOptions: (config: HeatmapConfig, base?: Partial<ChartOptions>) => ChartOptions;
51
+ /** Settings of a sparkline (the props of Sparkline) */
52
+ export interface SparklineConfig {
53
+ /** Values (or `[x, y]` pairs, typed arrays, ...) */
54
+ data: ChartSeries["data"];
55
+ /**
56
+ * How the values are drawn
57
+ * @default "line"
58
+ */
59
+ type?: "line" | "area" | "bar";
60
+ /** Color (any CSS color); the first palette color by default */
61
+ color?: string;
62
+ /**
63
+ * Shape of the line
64
+ * @default "smooth"
65
+ */
66
+ curve?: ChartCurve;
67
+ /** Name shown in the tooltip */
68
+ name?: string;
69
+ /** Draws a reference line at this value (e.g. a target or the average) */
70
+ reference?: number;
71
+ /** Formats the value in the tooltip */
72
+ format?: (value: number) => string;
73
+ }
74
+ /** Engine options of a sparkline: no axes, no legend, a tooltip only */
75
+ export declare const sparklineOptions: (config: SparklineConfig, base?: Partial<ChartOptions>) => ChartOptions;
76
+ /** A point of a QuadrantChart */
77
+ export interface QuadrantPoint {
78
+ /** Position on the horizontal axis */
79
+ x: number;
80
+ /** Position on the vertical axis */
81
+ y: number;
82
+ /** Text drawn next to the dot and shown in the tooltip */
83
+ label?: string;
84
+ /** Dot color (any CSS color); the color of its quadrant by default */
85
+ color?: string;
86
+ /** Dot diameter in pixels */
87
+ size?: number;
88
+ }
89
+ /** Title and color of a quadrant */
90
+ export interface QuadrantRegion {
91
+ /** Title drawn in the outer corner of the quadrant */
92
+ label?: string;
93
+ /** Background tint and default dot color (any CSS color) */
94
+ color?: string;
95
+ }
96
+ /** The four quadrants of a QuadrantChart */
97
+ export interface QuadrantRegions {
98
+ topLeft?: QuadrantRegion;
99
+ topRight?: QuadrantRegion;
100
+ bottomLeft?: QuadrantRegion;
101
+ bottomRight?: QuadrantRegion;
102
+ }
103
+ /** A quadrant, as seen on screen */
104
+ export type QuadrantCorner = keyof QuadrantRegions;
105
+ /** Texts at the four ends of the dividers, inside the plot */
106
+ export interface QuadrantAxisLabels {
107
+ top?: string;
108
+ bottom?: string;
109
+ left?: string;
110
+ right?: string;
111
+ }
112
+ /** Settings of a quadrant matrix (the props of QuadrantChart) */
113
+ export interface QuadrantConfig {
114
+ /** Points to place */
115
+ points: readonly QuadrantPoint[];
116
+ /**
117
+ * Range of the horizontal axis
118
+ * @default [0, 10]
119
+ */
120
+ xDomain?: [number, number];
121
+ /**
122
+ * Range of the vertical axis
123
+ * @default [0, 10]
124
+ */
125
+ yDomain?: [number, number];
126
+ /** X value of the vertical divider (the middle of `xDomain` by default) */
127
+ xSplit?: number;
128
+ /** Y value of the horizontal divider (the middle of `yDomain` by default) */
129
+ ySplit?: number;
130
+ /** Titles and colors of the quadrants */
131
+ quadrants?: QuadrantRegions;
132
+ /** Title of the horizontal axis */
133
+ xLabel?: string;
134
+ /** Title of the vertical axis */
135
+ yLabel?: string;
136
+ /** Texts at the ends of the dividers, drawn inside the plot (e.g. "Important" at the top) */
137
+ axisLabels?: QuadrantAxisLabels;
138
+ /**
139
+ * Shows the numeric ticks of the axes; `false` keeps only the matrix
140
+ * @default true
141
+ */
142
+ showTicks?: boolean;
143
+ /** Reverses the horizontal axis (e.g. "urgent" on the left) */
144
+ reverseX?: boolean;
145
+ /**
146
+ * Draws the labels next to the dots (overlapping labels are skipped)
147
+ * @default true
148
+ */
149
+ showLabels?: boolean;
150
+ /**
151
+ * Dot diameter in pixels
152
+ * @default 12
153
+ */
154
+ pointSize?: number;
155
+ /** Name of the points in the tooltip */
156
+ name?: string;
157
+ /** Lets the user drag the dots (`drag` / `drop` events) */
158
+ draggable?: boolean;
159
+ }
160
+ export declare const DEFAULT_QUADRANT_COLORS: Required<Record<QuadrantCorner, string>>;
161
+ /** Quadrant of a data position, as seen on screen */
162
+ export declare const quadrantOf: (config: Pick<QuadrantConfig, "xDomain" | "yDomain" | "xSplit" | "ySplit" | "reverseX">, x: number, y: number) => QuadrantCorner;
163
+ /** Center of a quadrant in data coordinates */
164
+ export declare const quadrantCenter: (config: Pick<QuadrantConfig, "xDomain" | "yDomain" | "xSplit" | "ySplit" | "reverseX">, corner: QuadrantCorner) => {
165
+ x: number;
166
+ y: number;
167
+ };
168
+ /** Engine options of a quadrant matrix */
169
+ export declare const quadrantChartOptions: (config: QuadrantConfig, base?: Omit<ChartOptions, "series">) => ChartOptions;
@@ -0,0 +1,240 @@
1
+ //#region src/engine/presets.ts
2
+ var e = (e, t, n, r) => e.map((e) => {
3
+ let i = e.type ?? t;
4
+ return {
5
+ ...e,
6
+ type: i,
7
+ ...n !== void 0 && i === t ? { stack: e.stack ?? n } : {},
8
+ ...r !== void 0 && (i === "line" || i === "area") ? { curve: e.curve ?? r } : {}
9
+ };
10
+ }), t = (t, n = !1, r = {}) => e(t, n ? "area" : "line", r.stacked ? "stack" : void 0, r.curve), n = (e, n = {}) => t(e, !0, n), r = (t, n = !1, r = !1) => e(t, "bar", n ? "stack" : void 0).map((e) => r && e.type === "bar" ? {
11
+ ...e,
12
+ showLabels: e.showLabels ?? !0
13
+ } : e), i = (t) => e(t, "scatter"), a = (t) => e(t, "candlestick"), o = (e, t = {}) => {
14
+ let n = e.data.some((e) => typeof e.x == "number"), r = e.data.some((e) => typeof e.y == "number");
15
+ return {
16
+ ...t,
17
+ series: [{
18
+ id: "heatmap",
19
+ name: e.name ?? "Value",
20
+ type: "heatmap",
21
+ data: e.data.map((e) => ({
22
+ x: e.x,
23
+ y: e.y,
24
+ value: e.value
25
+ })),
26
+ colorScale: e.colorScale,
27
+ valueRange: e.valueRange,
28
+ radius: e.radius,
29
+ format: e.format
30
+ }],
31
+ xAxis: {
32
+ ...n ? {} : {
33
+ type: "category",
34
+ categories: e.xCategories
35
+ },
36
+ grid: !1,
37
+ ...t.xAxis
38
+ },
39
+ yAxis: {
40
+ ...r ? {} : {
41
+ type: "category",
42
+ categories: e.yCategories
43
+ },
44
+ grid: !1,
45
+ ...t.yAxis
46
+ },
47
+ legend: t.legend ?? !1,
48
+ interaction: t.interaction ?? { zoom: !1 },
49
+ tooltip: t.tooltip ?? { mode: "nearest" }
50
+ };
51
+ }, s = (e, t = {}) => {
52
+ let n = e.type ?? "line";
53
+ return {
54
+ ...t,
55
+ series: [{
56
+ id: "sparkline",
57
+ name: e.name ?? "Value",
58
+ type: n,
59
+ data: e.data,
60
+ color: e.color,
61
+ curve: n === "bar" ? void 0 : e.curve ?? "smooth",
62
+ lineWidth: 1.5,
63
+ opacity: n === "area" ? .22 : void 0,
64
+ radius: n === "bar" ? 1.5 : void 0,
65
+ format: e.format
66
+ }],
67
+ xAxis: {
68
+ visible: !1,
69
+ grid: !1,
70
+ ...t.xAxis
71
+ },
72
+ yAxis: {
73
+ visible: !1,
74
+ grid: !1,
75
+ nice: !1,
76
+ ...t.yAxis
77
+ },
78
+ legend: !1,
79
+ padding: t.padding ?? {
80
+ top: 4,
81
+ right: 4,
82
+ bottom: 4,
83
+ left: 4
84
+ },
85
+ interaction: t.interaction ?? { zoom: !1 },
86
+ annotations: e.reference === void 0 ? t.annotations : [...t.annotations ?? [], {
87
+ type: "line",
88
+ axis: "y",
89
+ value: e.reference,
90
+ dash: [2, 3]
91
+ }]
92
+ };
93
+ }, c = {
94
+ topLeft: "var(--danger-color, #ef4444)",
95
+ topRight: "var(--primary-color, #4f46e5)",
96
+ bottomLeft: "var(--warning-color, #f59e0b)",
97
+ bottomRight: "var(--text-secondary-color, #64748b)"
98
+ }, l = "var(--border-strong-color, var(--border-color, #cbd5e1))", u = (e) => {
99
+ let [t, n] = e.xDomain ?? [0, 10], [r, i] = e.yDomain ?? [0, 10];
100
+ return {
101
+ x0: t,
102
+ x1: n,
103
+ y0: r,
104
+ y1: i,
105
+ xs: e.xSplit ?? (t + n) / 2,
106
+ ys: e.ySplit ?? (r + i) / 2
107
+ };
108
+ }, d = (e, t, n) => {
109
+ let { xs: r, ys: i } = u(e), a = e.reverseX ? t < r : t >= r;
110
+ return n >= i ? a ? "topRight" : "topLeft" : a ? "bottomRight" : "bottomLeft";
111
+ }, f = (e, t) => {
112
+ let { x0: n, x1: r, y0: i, y1: a, xs: o, ys: s } = u(e), c = t.endsWith("Right");
113
+ return {
114
+ x: (e.reverseX ? !c : c) ? (o + r) / 2 : (n + o) / 2,
115
+ y: t.startsWith("top") ? (s + a) / 2 : (i + s) / 2
116
+ };
117
+ }, p = (e, t = {}) => {
118
+ let { x0: n, x1: r, y0: i, y1: a, xs: o, ys: s } = u(e), f = !!e.reverseX, p = (t) => e.quadrants?.[t]?.color ?? c[t], m = [{
119
+ type: "scatter",
120
+ name: e.name ?? "",
121
+ pointSize: e.pointSize ?? 12,
122
+ showLabels: e.showLabels ?? !0,
123
+ opacity: .9,
124
+ data: e.points.map((t) => ({
125
+ x: t.x,
126
+ y: t.y,
127
+ label: t.label,
128
+ size: t.size,
129
+ color: t.color ?? p(d(e, t.x, t.y))
130
+ }))
131
+ }], h = f ? [o, r] : [n, o], g = f ? [n, o] : [o, r], _ = (t, [n, r], [i, a], o) => ({
132
+ type: "rect",
133
+ x0: n,
134
+ x1: r,
135
+ y0: i,
136
+ y1: a,
137
+ color: p(t),
138
+ opacity: .07,
139
+ label: e.quadrants?.[t]?.label,
140
+ labelPosition: o
141
+ }), v = e.axisLabels ?? {}, y = f ? r : n, b = f ? n : r, x = [
142
+ ...v.top ? [{
143
+ type: "text",
144
+ x: o,
145
+ y: a,
146
+ text: v.top,
147
+ anchor: "top"
148
+ }] : [],
149
+ ...v.bottom ? [{
150
+ type: "text",
151
+ x: o,
152
+ y: i,
153
+ text: v.bottom,
154
+ anchor: "bottom"
155
+ }] : [],
156
+ ...v.left ? [{
157
+ type: "text",
158
+ x: y,
159
+ y: s,
160
+ text: v.left,
161
+ anchor: "left"
162
+ }] : [],
163
+ ...v.right ? [{
164
+ type: "text",
165
+ x: b,
166
+ y: s,
167
+ text: v.right,
168
+ anchor: "right"
169
+ }] : []
170
+ ], S = [
171
+ _("topLeft", h, [s, a], "top-left"),
172
+ _("topRight", g, [s, a], "top-right"),
173
+ _("bottomLeft", h, [i, s], "bottom-left"),
174
+ _("bottomRight", g, [i, s], "bottom-right"),
175
+ {
176
+ type: "line",
177
+ axis: "x",
178
+ value: o,
179
+ dash: [],
180
+ color: l
181
+ },
182
+ {
183
+ type: "line",
184
+ axis: "y",
185
+ value: s,
186
+ dash: [],
187
+ color: l
188
+ },
189
+ ...x,
190
+ ...t.annotations ?? []
191
+ ], C = e.showTicks ?? !0, w = t.interaction !== !1 && {
192
+ zoom: !1,
193
+ ...typeof t.interaction == "object" ? t.interaction : {},
194
+ ...e.draggable ? { dragPoints: !0 } : {}
195
+ };
196
+ return {
197
+ ...t,
198
+ series: m,
199
+ annotations: S,
200
+ tooltip: t.tooltip ?? (C ? void 0 : { render: (t) => {
201
+ let n = t.items[0];
202
+ if (!n) return null;
203
+ let r = e.quadrants?.[d(e, n.x, n.y)]?.label;
204
+ return [n.label ?? e.name ?? "", r ?? ""].filter(Boolean).join("\n");
205
+ } }),
206
+ xAxis: {
207
+ min: n,
208
+ max: r,
209
+ title: e.xLabel,
210
+ reverse: f,
211
+ nice: !1,
212
+ grid: !1,
213
+ tickCount: 4,
214
+ visible: C || !!e.xLabel,
215
+ ...C ? {} : { format: () => "" }
216
+ },
217
+ yAxis: {
218
+ min: i,
219
+ max: a,
220
+ title: e.yLabel,
221
+ nice: !1,
222
+ grid: !1,
223
+ tickCount: 4,
224
+ visible: C || !!e.yLabel,
225
+ ...C ? {} : { format: () => "" }
226
+ },
227
+ legend: t.legend ?? !1,
228
+ padding: t.padding ?? (C ? void 0 : {
229
+ top: 4,
230
+ right: 4,
231
+ bottom: 4,
232
+ left: 4
233
+ }),
234
+ interaction: w
235
+ };
236
+ };
237
+ //#endregion
238
+ export { c as DEFAULT_QUADRANT_COLORS, n as areaSeries, r as barSeries, a as candlestickSeries, o as heatmapChartOptions, t as lineSeries, f as quadrantCenter, p as quadrantChartOptions, d as quadrantOf, i as scatterSeries, s as sparklineOptions, e as withSeriesType };
239
+
240
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.js","names":["withSeriesType","series","t","s","type","stack","curve","lineSeries","area","extra","areaSeries","barSeries","stacked","labels","scatterSeries","candlestickSeries","heatmapChartOptions","numericX","config","c","numericY","base","sparklineOptions","DEFAULT_QUADRANT_COLORS","DIVIDER","splits","x0","x1","y0","y1","quadrantOf","right","x","xs","y","ys","quadrantCenter","visualRight","corner","quadrantChartOptions","reverseX","color","p","left","rect","xa","xb","ya","yb","position","ends","visualLeft","texts","annotations","showTicks","interaction","item","event","region"],"sources":["../../../../charts/src/engine/presets.ts"],"sourcesContent":["// Option presets of the chart components, shared by every platform (React,\n// mini-programs, React Native): they turn component props into engine\n// options.\n\nimport type {\n ChartAnnotation,\n ChartCurve,\n ChartInteractionOptions,\n ChartOptions,\n ChartSeries,\n ChartSeriesType,\n} from \"./types\";\n\n/** Gives the series without a `type` the type of the component */\nexport const withSeriesType = (\n series: readonly ChartSeries[],\n type: ChartSeriesType,\n stack?: string,\n curve?: ChartCurve,\n): ChartSeries[] =>\n series.map((s) => {\n const t = s.type ?? type;\n return {\n ...s,\n type: t,\n ...(stack !== undefined && t === type ? { stack: s.stack ?? stack } : {}),\n ...(curve !== undefined && (t === \"line\" || t === \"area\")\n ? { curve: s.curve ?? curve }\n : {}),\n };\n });\n\n/** Options of the line-like components */\nexport interface LineSeriesOptions {\n /** Stacks the series on top of each other */\n stacked?: boolean;\n /** Shape of the lines */\n curve?: ChartCurve;\n}\n\n/** Series of a LineChart (`area` fills them) */\nexport const lineSeries = (\n series: readonly ChartSeries[],\n area = false,\n extra: LineSeriesOptions = {},\n) =>\n withSeriesType(\n series,\n area ? \"area\" : \"line\",\n extra.stacked ? \"stack\" : undefined,\n extra.curve,\n );\n\n/** Series of an AreaChart */\nexport const areaSeries = (\n series: readonly ChartSeries[],\n extra: LineSeriesOptions = {},\n) => lineSeries(series, true, extra);\n\n/** Series of a BarChart (`stacked` stacks them, `labels` shows the values) */\nexport const barSeries = (\n series: readonly ChartSeries[],\n stacked = false,\n labels = false,\n) =>\n withSeriesType(series, \"bar\", stacked ? \"stack\" : undefined).map((s) =>\n labels && s.type === \"bar\" ? { ...s, showLabels: s.showLabels ?? true } : s,\n );\n\n/** Series of a ScatterChart */\nexport const scatterSeries = (series: readonly ChartSeries[]) =>\n withSeriesType(series, \"scatter\");\n\n/** Series of a CandlestickChart */\nexport const candlestickSeries = (series: readonly ChartSeries[]) =>\n withSeriesType(series, \"candlestick\");\n\n/** A cell of a HeatmapChart */\nexport interface HeatmapCell {\n /** Column: a category name (or a number on a numeric axis) */\n x: string | number;\n /** Row: a category name (or a number on a numeric axis) */\n y: string | number;\n /** Value mapped to the color scale; `null` leaves the cell empty */\n value: number | null;\n}\n\n/** Settings of a heatmap (the props of HeatmapChart) */\nexport interface HeatmapConfig {\n /** Cells */\n data: readonly HeatmapCell[];\n /** Column names in order (collected from the data when omitted) */\n xCategories?: readonly string[];\n /** Row names from bottom to top (collected from the data when omitted) */\n yCategories?: readonly string[];\n /** Colors from the lowest to the highest value; a ramp of the first palette color by default */\n colorScale?: readonly string[];\n /** Values at the ends of the color scale; the data range by default */\n valueRange?: readonly [number, number];\n /** Name of the value in the tooltip */\n name?: string;\n /** Corner radius of the cells, in pixels */\n radius?: number;\n /** Formats the values in the tooltip */\n format?: (value: number) => string;\n}\n\n/** Engine options of a heatmap */\nexport const heatmapChartOptions = (\n config: HeatmapConfig,\n base: Partial<ChartOptions> = {},\n): ChartOptions => {\n const numericX = config.data.some((c) => typeof c.x === \"number\");\n const numericY = config.data.some((c) => typeof c.y === \"number\");\n return {\n ...base,\n series: [\n {\n id: \"heatmap\",\n name: config.name ?? \"Value\",\n type: \"heatmap\",\n data: config.data.map((c) => ({ x: c.x, y: c.y, value: c.value })),\n colorScale: config.colorScale,\n valueRange: config.valueRange,\n radius: config.radius,\n format: config.format,\n },\n ],\n xAxis: {\n ...(numericX\n ? {}\n : { type: \"category\" as const, categories: config.xCategories }),\n grid: false,\n ...base.xAxis,\n },\n yAxis: {\n ...(numericY\n ? {}\n : { type: \"category\" as const, categories: config.yCategories }),\n grid: false,\n ...base.yAxis,\n },\n legend: base.legend ?? false,\n interaction: base.interaction ?? { zoom: false },\n tooltip: base.tooltip ?? { mode: \"nearest\" },\n };\n};\n\n/** Settings of a sparkline (the props of Sparkline) */\nexport interface SparklineConfig {\n /** Values (or `[x, y]` pairs, typed arrays, ...) */\n data: ChartSeries[\"data\"];\n /**\n * How the values are drawn\n * @default \"line\"\n */\n type?: \"line\" | \"area\" | \"bar\";\n /** Color (any CSS color); the first palette color by default */\n color?: string;\n /**\n * Shape of the line\n * @default \"smooth\"\n */\n curve?: ChartCurve;\n /** Name shown in the tooltip */\n name?: string;\n /** Draws a reference line at this value (e.g. a target or the average) */\n reference?: number;\n /** Formats the value in the tooltip */\n format?: (value: number) => string;\n}\n\n/** Engine options of a sparkline: no axes, no legend, a tooltip only */\nexport const sparklineOptions = (\n config: SparklineConfig,\n base: Partial<ChartOptions> = {},\n): ChartOptions => {\n const type = config.type ?? \"line\";\n return {\n ...base,\n series: [\n {\n id: \"sparkline\",\n name: config.name ?? \"Value\",\n type,\n data: config.data,\n color: config.color,\n curve: type === \"bar\" ? undefined : (config.curve ?? \"smooth\"),\n lineWidth: 1.5,\n opacity: type === \"area\" ? 0.22 : undefined,\n radius: type === \"bar\" ? 1.5 : undefined,\n format: config.format,\n },\n ],\n xAxis: { visible: false, grid: false, ...base.xAxis },\n yAxis: { visible: false, grid: false, nice: false, ...base.yAxis },\n legend: false,\n padding: base.padding ?? { top: 4, right: 4, bottom: 4, left: 4 },\n interaction: base.interaction ?? { zoom: false },\n annotations:\n config.reference !== undefined\n ? [\n ...(base.annotations ?? []),\n {\n type: \"line\",\n axis: \"y\",\n value: config.reference,\n dash: [2, 3],\n },\n ]\n : base.annotations,\n };\n};\n\n/** A point of a QuadrantChart */\nexport interface QuadrantPoint {\n /** Position on the horizontal axis */\n x: number;\n /** Position on the vertical axis */\n y: number;\n /** Text drawn next to the dot and shown in the tooltip */\n label?: string;\n /** Dot color (any CSS color); the color of its quadrant by default */\n color?: string;\n /** Dot diameter in pixels */\n size?: number;\n}\n\n/** Title and color of a quadrant */\nexport interface QuadrantRegion {\n /** Title drawn in the outer corner of the quadrant */\n label?: string;\n /** Background tint and default dot color (any CSS color) */\n color?: string;\n}\n\n/** The four quadrants of a QuadrantChart */\nexport interface QuadrantRegions {\n topLeft?: QuadrantRegion;\n topRight?: QuadrantRegion;\n bottomLeft?: QuadrantRegion;\n bottomRight?: QuadrantRegion;\n}\n\n/** A quadrant, as seen on screen */\nexport type QuadrantCorner = keyof QuadrantRegions;\n\n/** Texts at the four ends of the dividers, inside the plot */\nexport interface QuadrantAxisLabels {\n top?: string;\n bottom?: string;\n left?: string;\n right?: string;\n}\n\n/** Settings of a quadrant matrix (the props of QuadrantChart) */\nexport interface QuadrantConfig {\n /** Points to place */\n points: readonly QuadrantPoint[];\n /**\n * Range of the horizontal axis\n * @default [0, 10]\n */\n xDomain?: [number, number];\n /**\n * Range of the vertical axis\n * @default [0, 10]\n */\n yDomain?: [number, number];\n /** X value of the vertical divider (the middle of `xDomain` by default) */\n xSplit?: number;\n /** Y value of the horizontal divider (the middle of `yDomain` by default) */\n ySplit?: number;\n /** Titles and colors of the quadrants */\n quadrants?: QuadrantRegions;\n /** Title of the horizontal axis */\n xLabel?: string;\n /** Title of the vertical axis */\n yLabel?: string;\n /** Texts at the ends of the dividers, drawn inside the plot (e.g. \"Important\" at the top) */\n axisLabels?: QuadrantAxisLabels;\n /**\n * Shows the numeric ticks of the axes; `false` keeps only the matrix\n * @default true\n */\n showTicks?: boolean;\n /** Reverses the horizontal axis (e.g. \"urgent\" on the left) */\n reverseX?: boolean;\n /**\n * Draws the labels next to the dots (overlapping labels are skipped)\n * @default true\n */\n showLabels?: boolean;\n /**\n * Dot diameter in pixels\n * @default 12\n */\n pointSize?: number;\n /** Name of the points in the tooltip */\n name?: string;\n /** Lets the user drag the dots (`drag` / `drop` events) */\n draggable?: boolean;\n}\n\nexport const DEFAULT_QUADRANT_COLORS: Required<Record<QuadrantCorner, string>> =\n {\n topLeft: \"var(--danger-color, #ef4444)\",\n topRight: \"var(--primary-color, #4f46e5)\",\n bottomLeft: \"var(--warning-color, #f59e0b)\",\n bottomRight: \"var(--text-secondary-color, #64748b)\",\n };\n\nconst DIVIDER = \"var(--border-strong-color, var(--border-color, #cbd5e1))\";\n\nconst splits = (config: QuadrantConfig) => {\n const [x0, x1] = config.xDomain ?? [0, 10];\n const [y0, y1] = config.yDomain ?? [0, 10];\n return {\n x0,\n x1,\n y0,\n y1,\n xs: config.xSplit ?? (x0 + x1) / 2,\n ys: config.ySplit ?? (y0 + y1) / 2,\n };\n};\n\n/** Quadrant of a data position, as seen on screen */\nexport const quadrantOf = (\n config: Pick<\n QuadrantConfig,\n \"xDomain\" | \"yDomain\" | \"xSplit\" | \"ySplit\" | \"reverseX\"\n >,\n x: number,\n y: number,\n): QuadrantCorner => {\n const { xs, ys } = splits(config as QuadrantConfig);\n const right = config.reverseX ? x < xs : x >= xs;\n const top = y >= ys;\n return top\n ? right\n ? \"topRight\"\n : \"topLeft\"\n : right\n ? \"bottomRight\"\n : \"bottomLeft\";\n};\n\n/** Center of a quadrant in data coordinates */\nexport const quadrantCenter = (\n config: Pick<\n QuadrantConfig,\n \"xDomain\" | \"yDomain\" | \"xSplit\" | \"ySplit\" | \"reverseX\"\n >,\n corner: QuadrantCorner,\n): { x: number; y: number } => {\n const { x0, x1, y0, y1, xs, ys } = splits(config as QuadrantConfig);\n const visualRight = corner.endsWith(\"Right\");\n const dataHigh = config.reverseX ? !visualRight : visualRight;\n return {\n x: dataHigh ? (xs + x1) / 2 : (x0 + xs) / 2,\n y: corner.startsWith(\"top\") ? (ys + y1) / 2 : (y0 + ys) / 2,\n };\n};\n\n/** Engine options of a quadrant matrix */\nexport const quadrantChartOptions = (\n config: QuadrantConfig,\n base: Omit<ChartOptions, \"series\"> = {},\n): ChartOptions => {\n const { x0, x1, y0, y1, xs, ys } = splits(config);\n const reverseX = !!config.reverseX;\n const color = (corner: QuadrantCorner) =>\n config.quadrants?.[corner]?.color ?? DEFAULT_QUADRANT_COLORS[corner];\n\n const series: ChartSeries[] = [\n {\n type: \"scatter\",\n name: config.name ?? \"\",\n pointSize: config.pointSize ?? 12,\n showLabels: config.showLabels ?? true,\n opacity: 0.9,\n data: config.points.map((p) => ({\n x: p.x,\n y: p.y,\n label: p.label,\n size: p.size,\n color: p.color ?? color(quadrantOf(config, p.x, p.y)),\n })),\n },\n ];\n\n // visual left / right -> data ranges\n const left: [number, number] = reverseX ? [xs, x1] : [x0, xs];\n const right: [number, number] = reverseX ? [x0, xs] : [xs, x1];\n const rect = (\n corner: QuadrantCorner,\n [xa, xb]: [number, number],\n [ya, yb]: [number, number],\n position: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\",\n ): ChartAnnotation => ({\n type: \"rect\",\n x0: xa,\n x1: xb,\n y0: ya,\n y1: yb,\n color: color(corner),\n opacity: 0.07,\n label: config.quadrants?.[corner]?.label,\n labelPosition: position,\n });\n const ends = config.axisLabels ?? {};\n const visualLeft = reverseX ? x1 : x0;\n const visualRight = reverseX ? x0 : x1;\n const texts: ChartAnnotation[] = [\n ...(ends.top\n ? [{ type: \"text\", x: xs, y: y1, text: ends.top, anchor: \"top\" } as const]\n : []),\n ...(ends.bottom\n ? [\n {\n type: \"text\",\n x: xs,\n y: y0,\n text: ends.bottom,\n anchor: \"bottom\",\n } as const,\n ]\n : []),\n ...(ends.left\n ? [\n {\n type: \"text\",\n x: visualLeft,\n y: ys,\n text: ends.left,\n anchor: \"left\",\n } as const,\n ]\n : []),\n ...(ends.right\n ? [\n {\n type: \"text\",\n x: visualRight,\n y: ys,\n text: ends.right,\n anchor: \"right\",\n } as const,\n ]\n : []),\n ];\n\n const annotations: ChartAnnotation[] = [\n rect(\"topLeft\", left, [ys, y1], \"top-left\"),\n rect(\"topRight\", right, [ys, y1], \"top-right\"),\n rect(\"bottomLeft\", left, [y0, ys], \"bottom-left\"),\n rect(\"bottomRight\", right, [y0, ys], \"bottom-right\"),\n { type: \"line\", axis: \"x\", value: xs, dash: [], color: DIVIDER },\n { type: \"line\", axis: \"y\", value: ys, dash: [], color: DIVIDER },\n ...texts,\n ...(base.annotations ?? []),\n ];\n\n const showTicks = config.showTicks ?? true;\n const interaction: boolean | ChartInteractionOptions =\n base.interaction === false\n ? false\n : {\n zoom: false,\n ...(typeof base.interaction === \"object\" ? base.interaction : {}),\n ...(config.draggable ? { dragPoints: true } : {}),\n };\n\n return {\n ...base,\n series,\n annotations,\n tooltip:\n base.tooltip ??\n (showTicks\n ? undefined\n : {\n render: (event) => {\n const item = event.items[0];\n if (!item) return null;\n const region =\n config.quadrants?.[quadrantOf(config, item.x, item.y)]?.label;\n return [item.label ?? config.name ?? \"\", region ?? \"\"]\n .filter(Boolean)\n .join(\"\\n\");\n },\n }),\n xAxis: {\n min: x0,\n max: x1,\n title: config.xLabel,\n reverse: reverseX,\n nice: false,\n grid: false,\n tickCount: 4,\n visible: showTicks || !!config.xLabel,\n ...(showTicks ? {} : { format: () => \"\" }),\n },\n yAxis: {\n min: y0,\n max: y1,\n title: config.yLabel,\n nice: false,\n grid: false,\n tickCount: 4,\n visible: showTicks || !!config.yLabel,\n ...(showTicks ? {} : { format: () => \"\" }),\n },\n legend: base.legend ?? false,\n padding:\n base.padding ??\n (showTicks ? undefined : { top: 4, right: 4, bottom: 4, left: 4 }),\n interaction,\n };\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("./types.cjs"),t=require("../decimate.cjs");var n=2e4,r=(e,t)=>`rgba(${Math.round(e[0]*255)},${Math.round(e[1]*255)},${Math.round(e[2]*255)},${e[3]*t})`,i=e=>[(e&255)/255,(e>>>8&255)/255,(e>>>16&255)/255,(e>>>24&255)/255],a=e=>!Number.isFinite(e)||Math.abs(e)>=15e37,o=(e,t,n)=>{let r=0,i=t;for(;r<i;){let t=r+i>>>1;e[t*2]<n?r=t+1:i=t}return r},s=n=>{let s=n.getContext(`2d`);if(!s)return null;let c=null,l=e=>{let{xScale:t,xOffset:n,yScale:r,yOffset:i}=e.transform,a=e.width,o=e.height;return{px:e=>((e*t+n)*.5+.5)*a,py:e=>(1-((e*r+i)*.5+.5))*o,xRange:()=>{let e=(-1-n)/t,r=(1-n)/t;return e<r?[e,r]:[r,e]}}},u=(n,r)=>{if(!n.sorted||n.count<=r.width*2)return{points:n.points,length:n.count};let i=l(r),[a,s]=i.xRange(),c=Math.max(0,o(n.points,n.count,a)-1),u=Math.min(n.count,o(n.points,n.count,s)+1),d=t.decimateMinMax(n.points,c,u,i.px,e.GAP*.5);return{points:d.points,length:d.length}},d=(e,t)=>{let n=l(t),{points:i,length:o}=u(e,t);s.beginPath();let c=!1;for(let e=0;e<o;e++){let t=i[e*2],r=i[e*2+1];if(a(t)||a(r)){c=!1;continue}c?s.lineTo(n.px(t),n.py(r)):s.moveTo(n.px(t),n.py(r)),c=!0}s.lineWidth=e.width*t.dpr,s.lineJoin=`round`,s.lineCap=`round`,s.strokeStyle=r(e.color,1),s.stroke()},f=(e,t)=>{let n=l(t),{points:i,length:o}=u(e,t),c=n.py(e.baseline),d=s.createLinearGradient(0,0,0,c);d.addColorStop(0,r(e.color,e.opacity)),d.addColorStop(1,r(e.color,e.opacity*.3)),s.fillStyle=d,s.beginPath();let f=-1,p=0,m=()=>{f<0||(s.lineTo(p,c),s.closePath(),f=-1)};for(let e=0;e<o;e++){let t=i[e*2],r=i[e*2+1];if(a(t)||a(r)){m();continue}let o=n.px(t);f<0&&(f=e,s.moveTo(o,c)),s.lineTo(o,n.py(r)),p=o}m(),s.fill()},p=(e,t)=>{let n=l(t),i=Math.max(Math.abs(e.halfWidth*t.transform.xScale)*.5*t.width,.5),o=e.radius*t.dpr;s.fillStyle=r(e.color,1),s.beginPath();let c=e.instances;for(let t=0;t<e.count;t++){let e=c[t*3],r=c[t*3+1],l=c[t*3+2];if(a(e)||a(r)||a(l))continue;let u=n.px(e),d=n.py(r),f=n.py(l),p=Math.min(d,f),m=Math.abs(d-f),h=Math.min(o,i,m/2);h>.5&&typeof s.roundRect==`function`?s.roundRect(u-i,p,i*2,m,h):s.rect(u-i,p,i*2,m)}s.fill()},m=(e,t)=>{let r=l(t),i=n.width,o=n.height;c??(c=document.createElement(`canvas`)),c.width=i,c.height=o;let u=c.getContext(`2d`);if(!u)return;let d=u.createImageData(i,o),f=d.data,p=new Float32Array(e.instances,0,e.count*4),m=new Uint32Array(e.instances,0,e.count*4);for(let n=0;n<e.count;n++){let s=p[n*4],c=p[n*4+1],l=p[n*4+2];if(a(s)||a(c)||!(l>0))continue;let u=r.px(s),d=r.py(c),h=Math.max(1,Math.round(l*t.dpr*.8)),g=Math.round(u-h/2),_=Math.round(d-h/2),v=m[n*4+3],y=(v>>>24&255)/255*Math.max(e.opacity,.6),b=v&255,x=v>>>8&255,S=v>>>16&255;for(let e=Math.max(0,_);e<Math.min(o,_+h);e++)for(let t=Math.max(0,g);t<Math.min(i,g+h);t++){let n=(e*i+t)*4,r=f[n+3]/255,a=y+r*(1-y);f[n]=(b*y+f[n]*r*(1-y))/a,f[n+1]=(x*y+f[n+1]*r*(1-y))/a,f[n+2]=(S*y+f[n+2]*r*(1-y))/a,f[n+3]=a*255}}u.putImageData(d,0,0),s.drawImage(c,0,0)},h=(e,t)=>{if(e.count>2e4){m(e,t);return}let n=l(t),o=new Float32Array(e.instances,0,e.count*4),c=new Uint32Array(e.instances,0,e.count*4),u=new Map;for(let t=0;t<e.count;t++){let e=c[t*4+3],n=u.get(e);n||u.set(e,n=[]),n.push(t)}let d=e.stroke*t.dpr;for(let[c,l]of u){let u=i(c);s.beginPath();for(let e of l){let r=o[e*4],i=o[e*4+1],c=o[e*4+2];if(a(r)||a(i)||!(c>0))continue;let l=n.px(r),u=n.py(i),d=c*t.dpr/2;s.moveTo(l+d,u),s.arc(l,u,d,0,Math.PI*2)}if(s.fillStyle=r(u,e.opacity),s.fill(),d>0){s.beginPath();for(let e of l){let r=o[e*4],i=o[e*4+1],c=o[e*4+2];if(a(r)||a(i)||!(c>0))continue;let l=Math.max(0,c*t.dpr/2-d/2),u=n.px(r),f=n.py(i);s.moveTo(u+l,f),s.arc(u,f,l,0,Math.PI*2)}s.lineWidth=d,s.strokeStyle=r(u,1),s.stroke()}}};return{kind:`canvas2d`,canvas:n,resize(e,t){n.width=Math.max(1,e),n.height=Math.max(1,t)},render(e,t){s.setTransform(1,0,0,1,0,0),s.clearRect(0,0,n.width,n.height);for(let n of e)switch(n.kind){case`line`:n.count>1&&d(n,t);break;case`area`:n.count>1&&f(n,t);break;case`bar`:p(n,t);break;default:h(n,t)}},destroy(){c=null,n.width=0,n.height=0}}};exports.SCATTER_PIXEL_THRESHOLD=n,exports.createCanvas2dRenderer=s;
1
+ const e=require("../color.cjs"),t=require("./types.cjs"),n=require("../decimate.cjs");var r=2e4,i=(e,t)=>`rgba(${Math.round(e[0]*255)},${Math.round(e[1]*255)},${Math.round(e[2]*255)},${e[3]*t})`,a=e=>!Number.isFinite(e)||Math.abs(e)>=15e37,o=(e,t,n,r=2)=>{let i=0,a=t;for(;i<a;){let t=i+a>>>1;e[t*r]<n?i=t+1:a=t}return i},s=(e,t,n,r)=>{let i=new Float64Array(Math.max(0,n-t)*3),o=0,s=t=>{i[o*3]=e[t*3],i[o*3+1]=e[t*3+1],i[o*3+2]=e[t*3+2],o++},c=NaN,l=-1,u=-1,d=-1,f=-1,p=()=>{if(l<0)return;let e=[l,u,d,f].sort((e,t)=>e-t),t=-1;for(let n of e)n!==t&&s(n),t=n;l=-1};for(let i=t;i<n;i++){let t=e[i*3+1];if(a(e[i*3])||a(t)||a(e[i*3+2])){p(),c=NaN,s(i);continue}let n=Math.floor(r(e[i*3]));n!==c||l<0?(p(),c=n,l=u=d=f=i):(t<e[u*3+1]&&(u=i),t>e[d*3+1]&&(d=i),f=i)}return p(),{points:i,length:o}},c=(r,c)=>{let l=null,u=e=>{let{xScale:t,xOffset:n,yScale:r,yOffset:i}=e.transform,a=e.width,o=e.height;return{px:e=>((e*t+n)*.5+.5)*a,py:e=>(1-((e*r+i)*.5+.5))*o,xRange:()=>{let e=(-1-n)/t,r=(1-n)/t;return e<r?[e,r]:[r,e]}}},d=(e,r)=>{if(!e.sorted||e.count<=r.width*2)return{points:e.points,length:e.count};let i=u(r),[a,s]=i.xRange(),c=Math.max(0,o(e.points,e.count,a)-1),l=Math.min(e.count,o(e.points,e.count,s)+1),d=n.decimateMinMax(e.points,c,l,i.px,t.GAP*.5);return{points:d.points,length:d.length}},f=(e,t)=>{let n=u(t),{points:o,length:s}=d(e,t);r.beginPath();let c=!1;for(let e=0;e<s;e++){let t=o[e*2],i=o[e*2+1];if(a(t)||a(i)){c=!1;continue}c?r.lineTo(n.px(t),n.py(i)):r.moveTo(n.px(t),n.py(i)),c=!0}r.lineWidth=e.width*t.dpr,r.lineJoin=`round`,r.lineCap=`round`,r.strokeStyle=i(e.color,1),r.stroke()},p=(e,t)=>{let n=u(t),c=e.points,l=e.count;if(e.sorted&&e.count>t.width*2){let[t,r]=n.xRange(),i=Math.max(0,o(e.points,e.count,t,3)-1),a=Math.min(e.count,o(e.points,e.count,r,3)+1);({points:c,length:l}=s(e.points,i,a,n.px))}let d=r.createLinearGradient(0,0,0,t.height);d.addColorStop(0,i(e.color,e.opacity)),d.addColorStop(1,i(e.color,e.opacity*.25)),r.fillStyle=d,r.beginPath();let f=-1,p=e=>{if(!(f<0)){for(let t=e-1;t>=f;t--)r.lineTo(n.px(c[t*3]),n.py(c[t*3+2]));r.closePath(),f=-1}};for(let e=0;e<l;e++){let t=c[e*3],i=c[e*3+1];if(a(t)||a(i)||a(c[e*3+2])){p(e);continue}f<0?(f=e,r.moveTo(n.px(t),n.py(i))):r.lineTo(n.px(t),n.py(i))}p(l),r.fill()},m=(t,n)=>{let o=u(n),s=n.dpr,c=t.minHalf*s,l=Math.abs(t.halfWidth*n.transform.xScale)*.5*n.width,d=t.radius*s,f=new Float32Array(t.instances,0,t.count*4),p=new Uint32Array(t.instances,0,t.count*4),[m,h]=o.xRange(),g=Math.abs(t.halfWidth),_=new Map;for(let e=0;e<t.count;e++){let t=f[e*4];if(a(t)||a(f[e*4+1])||a(f[e*4+2])||t<m-g||t>h+g)continue;let n=p[e*4+3],r=_.get(n);r||_.set(n,r=[]),r.push(e)}let v=typeof r.roundRect==`function`;for(let[n,a]of _){r.fillStyle=i(e.unpackColor(n),1),r.beginPath();for(let e of a){let n=o.px(f[e*4]),i=o.py(f[e*4+1]),a=o.py(f[e*4+2]),u=Math.abs(i-a)/2,p=Math.min(1,Math.max(0,(Math.min(l,u)-3*s)/(2*s))),m=t.inset*s*p-(t.inset>0?.5*(1-p):0),h=Math.max(l-m,.5,c),g=Math.max(u-m,c);if(g<=0)continue;let _=(i+a)/2,y=Math.min(d,h,g);y>.5&&v?r.roundRect(n-h,_-g,h*2,g*2,y):r.rect(n-h,_-g,h*2,g*2)}r.fill()}},h=(t,n)=>{let o=u(n),s=n.width,c=n.height,l=new Float32Array(t.instances,0,t.count*4),d=new Uint32Array(t.instances,0,t.count*4),f=0;for(let e=0;e<Math.min(t.count,64);e++)f=Math.max(f,l[e*4+2]);f=Math.max(1,Math.round((f||2)*n.dpr*.8));let p=Math.ceil(s/f),m=Math.ceil(c/f),h=new Int32Array(p*m).fill(-1);for(let e=0;e<t.count;e++){let t=l[e*4],n=l[e*4+1];if(a(t)||a(n)||!(l[e*4+2]>0))continue;let r=Math.floor(o.px(t)/f),i=Math.floor(o.py(n)/f);r<0||i<0||r>=p||i>=m||(h[i*p+r]=e)}let g=new Map;for(let e=0;e<h.length;e++){let t=h[e];if(t<0)continue;let n=d[t*4+3],r=g.get(n);r||g.set(n,r=[]),r.push(e)}for(let[n,a]of g){r.fillStyle=i(e.unpackColor(n),Math.max(t.opacity,.6));for(let e of a)r.fillRect(e%p*f,Math.floor(e/p)*f,f,f)}},g=(e,t)=>{let n=u(t),i=t.width,o=t.height;if(l??(l=c?.()??null),!l){h(e,t);return}l.width=i,l.height=o;let s=l.getContext(`2d`);if(!s)return;let d=s.createImageData(i,o),f=d.data,p=new Float32Array(e.instances,0,e.count*4),m=new Uint32Array(e.instances,0,e.count*4);for(let r=0;r<e.count;r++){let s=p[r*4],c=p[r*4+1],l=p[r*4+2];if(a(s)||a(c)||!(l>0))continue;let u=n.px(s),d=n.py(c),h=Math.max(1,Math.round(l*t.dpr*.8)),g=Math.round(u-h/2),_=Math.round(d-h/2),v=m[r*4+3],y=(v>>>24&255)/255*Math.max(e.opacity,.6),b=v&255,x=v>>>8&255,S=v>>>16&255;for(let e=Math.max(0,_);e<Math.min(o,_+h);e++)for(let t=Math.max(0,g);t<Math.min(i,g+h);t++){let n=(e*i+t)*4,r=f[n+3]/255,a=y+r*(1-y);f[n]=(b*y+f[n]*r*(1-y))/a,f[n+1]=(x*y+f[n+1]*r*(1-y))/a,f[n+2]=(S*y+f[n+2]*r*(1-y))/a,f[n+3]=a*255}}s.putImageData(d,0,0),r.drawImage(l,0,0)},_=(t,n)=>{if(t.count>2e4){g(t,n);return}let o=u(n),s=new Float32Array(t.instances,0,t.count*4),c=new Uint32Array(t.instances,0,t.count*4),l=new Map;for(let e=0;e<t.count;e++){let t=c[e*4+3],n=l.get(t);n||l.set(t,n=[]),n.push(e)}let d=t.stroke*n.dpr;for(let[c,u]of l){let l=e.unpackColor(c);r.beginPath();for(let e of u){let t=s[e*4],i=s[e*4+1],c=s[e*4+2];if(a(t)||a(i)||!(c>0))continue;let l=o.px(t),u=o.py(i),d=c*n.dpr/2;r.moveTo(l+d,u),r.arc(l,u,d,0,Math.PI*2)}if(r.fillStyle=i(l,t.opacity),r.fill(),d>0){r.beginPath();for(let e of u){let t=s[e*4],i=s[e*4+1],c=s[e*4+2];if(a(t)||a(i)||!(c>0))continue;let l=Math.max(0,c*n.dpr/2-d/2),u=o.px(t),f=o.py(i);r.moveTo(u+l,f),r.arc(u,f,l,0,Math.PI*2)}r.lineWidth=d,r.strokeStyle=i(l,1),r.stroke()}}};return{paint(e,t,n=0,i=0){r.save(),r.setTransform(1,0,0,1,n,i),r.beginPath(),r.rect(0,0,t.width,t.height),r.clip();for(let n of e)switch(n.kind){case`line`:n.count>1&&f(n,t);break;case`area`:n.count>1&&p(n,t);break;case`bar`:m(n,t);break;default:_(n,t)}r.restore()},destroy(){l=null}}},l=e=>{let t=e.getContext(`2d`);if(!t)return null;let n=c(t,()=>typeof document>`u`?null:document.createElement(`canvas`));return{kind:`canvas2d`,canvas:e,resize(t,n){e.width=Math.max(1,t),e.height=Math.max(1,n)},render(r,i){t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,e.width,e.height),n.paint(r,i)},destroy(){n.destroy(),e.width=0,e.height=0}}};exports.SCATTER_PIXEL_THRESHOLD=r,exports.createCanvas2dPainter=c,exports.createCanvas2dRenderer=l;
2
2
  //# sourceMappingURL=canvas2d.cjs.map