minerva-design 1.0.2 → 1.2.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 (354) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +21 -19
  3. package/dist/charts/canvas.d.cts +7 -0
  4. package/dist/charts/canvas.d.ts +7 -0
  5. package/dist/charts/core.cjs +1 -0
  6. package/dist/charts/core.d.cts +7 -0
  7. package/dist/charts/core.d.ts +7 -0
  8. package/dist/charts/core.js +6 -0
  9. package/dist/charts/engine/axis.cjs +2 -0
  10. package/dist/charts/engine/axis.cjs.map +1 -0
  11. package/dist/charts/engine/axis.d.cts +13 -0
  12. package/dist/charts/engine/axis.d.ts +13 -0
  13. package/dist/charts/engine/axis.js +38 -0
  14. package/dist/charts/engine/axis.js.map +1 -0
  15. package/dist/charts/engine/canvas.cjs +2 -0
  16. package/dist/charts/engine/canvas.cjs.map +1 -0
  17. package/dist/charts/engine/canvas.d.cts +85 -0
  18. package/dist/charts/engine/canvas.d.ts +85 -0
  19. package/dist/charts/engine/canvas.js +165 -0
  20. package/dist/charts/engine/canvas.js.map +1 -0
  21. package/dist/charts/engine/chart.cjs +3 -0
  22. package/dist/charts/engine/chart.cjs.map +1 -0
  23. package/dist/charts/engine/chart.d.cts +6 -0
  24. package/dist/charts/engine/chart.d.ts +6 -0
  25. package/dist/charts/engine/chart.js +566 -0
  26. package/dist/charts/engine/chart.js.map +1 -0
  27. package/dist/charts/engine/color.cjs +2 -0
  28. package/dist/charts/engine/color.cjs.map +1 -0
  29. package/dist/charts/engine/color.d.cts +33 -0
  30. package/dist/charts/engine/color.d.ts +33 -0
  31. package/dist/charts/engine/color.js +167 -0
  32. package/dist/charts/engine/color.js.map +1 -0
  33. package/dist/charts/engine/controller.cjs +3 -0
  34. package/dist/charts/engine/controller.cjs.map +1 -0
  35. package/dist/charts/engine/controller.d.cts +182 -0
  36. package/dist/charts/engine/controller.d.ts +182 -0
  37. package/dist/charts/engine/controller.js +528 -0
  38. package/dist/charts/engine/controller.js.map +1 -0
  39. package/dist/charts/engine/data.cjs +2 -0
  40. package/dist/charts/engine/data.cjs.map +1 -0
  41. package/dist/charts/engine/data.d.cts +29 -0
  42. package/dist/charts/engine/data.d.ts +29 -0
  43. package/dist/charts/engine/data.js +104 -0
  44. package/dist/charts/engine/data.js.map +1 -0
  45. package/dist/charts/engine/decimate.cjs +2 -0
  46. package/dist/charts/engine/decimate.cjs.map +1 -0
  47. package/dist/charts/engine/decimate.d.cts +13 -0
  48. package/dist/charts/engine/decimate.d.ts +13 -0
  49. package/dist/charts/engine/decimate.js +28 -0
  50. package/dist/charts/engine/decimate.js.map +1 -0
  51. package/dist/charts/engine/dom.cjs +2 -0
  52. package/dist/charts/engine/dom.cjs.map +1 -0
  53. package/dist/charts/engine/dom.d.cts +21 -0
  54. package/dist/charts/engine/dom.d.ts +21 -0
  55. package/dist/charts/engine/dom.js +125 -0
  56. package/dist/charts/engine/dom.js.map +1 -0
  57. package/dist/charts/engine/format.cjs +2 -0
  58. package/dist/charts/engine/format.cjs.map +1 -0
  59. package/dist/charts/engine/format.d.cts +9 -0
  60. package/dist/charts/engine/format.d.ts +9 -0
  61. package/dist/charts/engine/format.js +34 -0
  62. package/dist/charts/engine/format.js.map +1 -0
  63. package/dist/charts/engine/items.cjs +2 -0
  64. package/dist/charts/engine/items.cjs.map +1 -0
  65. package/dist/charts/engine/items.d.cts +8 -0
  66. package/dist/charts/engine/items.d.ts +8 -0
  67. package/dist/charts/engine/items.js +91 -0
  68. package/dist/charts/engine/items.js.map +1 -0
  69. package/dist/charts/engine/layout.cjs +2 -0
  70. package/dist/charts/engine/layout.cjs.map +1 -0
  71. package/dist/charts/engine/layout.d.cts +37 -0
  72. package/dist/charts/engine/layout.d.ts +37 -0
  73. package/dist/charts/engine/layout.js +26 -0
  74. package/dist/charts/engine/layout.js.map +1 -0
  75. package/dist/charts/engine/model.cjs +2 -0
  76. package/dist/charts/engine/model.cjs.map +1 -0
  77. package/dist/charts/engine/model.d.cts +74 -0
  78. package/dist/charts/engine/model.d.ts +74 -0
  79. package/dist/charts/engine/model.js +175 -0
  80. package/dist/charts/engine/model.js.map +1 -0
  81. package/dist/charts/engine/overlay.cjs +2 -0
  82. package/dist/charts/engine/overlay.cjs.map +1 -0
  83. package/dist/charts/engine/overlay.d.cts +78 -0
  84. package/dist/charts/engine/overlay.d.ts +78 -0
  85. package/dist/charts/engine/overlay.js +137 -0
  86. package/dist/charts/engine/overlay.js.map +1 -0
  87. package/dist/charts/engine/presets.cjs +3 -0
  88. package/dist/charts/engine/presets.cjs.map +1 -0
  89. package/dist/charts/engine/presets.d.cts +103 -0
  90. package/dist/charts/engine/presets.d.ts +103 -0
  91. package/dist/charts/engine/presets.js +153 -0
  92. package/dist/charts/engine/presets.js.map +1 -0
  93. package/dist/charts/engine/renderers/canvas2d.cjs +2 -0
  94. package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -0
  95. package/dist/charts/engine/renderers/canvas2d.d.cts +20 -0
  96. package/dist/charts/engine/renderers/canvas2d.d.ts +20 -0
  97. package/dist/charts/engine/renderers/canvas2d.js +193 -0
  98. package/dist/charts/engine/renderers/canvas2d.js.map +1 -0
  99. package/dist/charts/engine/renderers/detect.cjs +2 -0
  100. package/dist/charts/engine/renderers/detect.cjs.map +1 -0
  101. package/dist/charts/engine/renderers/detect.d.cts +12 -0
  102. package/dist/charts/engine/renderers/detect.d.ts +12 -0
  103. package/dist/charts/engine/renderers/detect.js +33 -0
  104. package/dist/charts/engine/renderers/detect.js.map +1 -0
  105. package/dist/charts/engine/renderers/range.cjs +2 -0
  106. package/dist/charts/engine/renderers/range.cjs.map +1 -0
  107. package/dist/charts/engine/renderers/range.d.cts +5 -0
  108. package/dist/charts/engine/renderers/range.d.ts +5 -0
  109. package/dist/charts/engine/renderers/range.js +32 -0
  110. package/dist/charts/engine/renderers/range.js.map +1 -0
  111. package/dist/charts/engine/renderers/shaders.cjs +266 -0
  112. package/dist/charts/engine/renderers/shaders.cjs.map +1 -0
  113. package/dist/charts/engine/renderers/shaders.d.cts +20 -0
  114. package/dist/charts/engine/renderers/shaders.d.ts +20 -0
  115. package/dist/charts/engine/renderers/shaders.js +251 -0
  116. package/dist/charts/engine/renderers/shaders.js.map +1 -0
  117. package/dist/charts/engine/renderers/types.cjs +2 -0
  118. package/dist/charts/engine/renderers/types.cjs.map +1 -0
  119. package/dist/charts/engine/renderers/types.d.cts +83 -0
  120. package/dist/charts/engine/renderers/types.d.ts +83 -0
  121. package/dist/charts/engine/renderers/types.js +6 -0
  122. package/dist/charts/engine/renderers/types.js.map +1 -0
  123. package/dist/charts/engine/renderers/webgl2.cjs +2 -0
  124. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -0
  125. package/dist/charts/engine/renderers/webgl2.d.cts +5 -0
  126. package/dist/charts/engine/renderers/webgl2.d.ts +5 -0
  127. package/dist/charts/engine/renderers/webgl2.js +134 -0
  128. package/dist/charts/engine/renderers/webgl2.js.map +1 -0
  129. package/dist/charts/engine/renderers/webgpu.cjs +2 -0
  130. package/dist/charts/engine/renderers/webgpu.cjs.map +1 -0
  131. package/dist/charts/engine/renderers/webgpu.d.cts +6 -0
  132. package/dist/charts/engine/renderers/webgpu.d.ts +6 -0
  133. package/dist/charts/engine/renderers/webgpu.js +220 -0
  134. package/dist/charts/engine/renderers/webgpu.js.map +1 -0
  135. package/dist/charts/engine/scale.cjs +2 -0
  136. package/dist/charts/engine/scale.cjs.map +1 -0
  137. package/dist/charts/engine/scale.d.cts +13 -0
  138. package/dist/charts/engine/scale.d.ts +13 -0
  139. package/dist/charts/engine/scale.js +37 -0
  140. package/dist/charts/engine/scale.js.map +1 -0
  141. package/dist/charts/engine/scene.cjs +2 -0
  142. package/dist/charts/engine/scene.cjs.map +1 -0
  143. package/dist/charts/engine/scene.d.cts +89 -0
  144. package/dist/charts/engine/scene.d.ts +89 -0
  145. package/dist/charts/engine/scene.js +241 -0
  146. package/dist/charts/engine/scene.js.map +1 -0
  147. package/dist/charts/engine/spatial.cjs +2 -0
  148. package/dist/charts/engine/spatial.cjs.map +1 -0
  149. package/dist/charts/engine/spatial.d.cts +18 -0
  150. package/dist/charts/engine/spatial.d.ts +18 -0
  151. package/dist/charts/engine/spatial.js +53 -0
  152. package/dist/charts/engine/spatial.js.map +1 -0
  153. package/dist/charts/engine/theme.cjs +2 -0
  154. package/dist/charts/engine/theme.cjs.map +1 -0
  155. package/dist/charts/engine/theme.d.cts +45 -0
  156. package/dist/charts/engine/theme.d.ts +45 -0
  157. package/dist/charts/engine/theme.js +86 -0
  158. package/dist/charts/engine/theme.js.map +1 -0
  159. package/dist/charts/engine/time.cjs +2 -0
  160. package/dist/charts/engine/time.cjs.map +1 -0
  161. package/dist/charts/engine/time.d.cts +10 -0
  162. package/dist/charts/engine/time.d.ts +10 -0
  163. package/dist/charts/engine/time.js +189 -0
  164. package/dist/charts/engine/time.js.map +1 -0
  165. package/dist/charts/engine/types.d.cts +356 -0
  166. package/dist/charts/engine/types.d.ts +356 -0
  167. package/dist/charts/engine/viewport.cjs +2 -0
  168. package/dist/charts/engine/viewport.cjs.map +1 -0
  169. package/dist/charts/engine/viewport.d.cts +12 -0
  170. package/dist/charts/engine/viewport.d.ts +12 -0
  171. package/dist/charts/engine/viewport.js +15 -0
  172. package/dist/charts/engine/viewport.js.map +1 -0
  173. package/dist/charts/index.cjs +1 -0
  174. package/dist/charts/index.d.cts +4 -0
  175. package/dist/charts/index.d.ts +4 -0
  176. package/dist/charts/index.js +10 -0
  177. package/dist/charts/react/Chart.cjs +2 -0
  178. package/dist/charts/react/Chart.cjs.map +1 -0
  179. package/dist/charts/react/Chart.d.cts +35 -0
  180. package/dist/charts/react/Chart.d.ts +35 -0
  181. package/dist/charts/react/Chart.js +117 -0
  182. package/dist/charts/react/Chart.js.map +1 -0
  183. package/dist/charts/react/charts.cjs +2 -0
  184. package/dist/charts/react/charts.cjs.map +1 -0
  185. package/dist/charts/react/charts.d.cts +13 -0
  186. package/dist/charts/react/charts.d.ts +13 -0
  187. package/dist/charts/react/charts.js +133 -0
  188. package/dist/charts/react/charts.js.map +1 -0
  189. package/dist/charts/react/types.d.cts +136 -0
  190. package/dist/charts/react/types.d.ts +136 -0
  191. package/dist/native/charts/src/canvas.cjs +1 -0
  192. package/dist/native/charts/src/canvas.js +6 -0
  193. package/dist/native/charts/src/engine/axis.cjs +2 -0
  194. package/dist/native/charts/src/engine/axis.cjs.map +1 -0
  195. package/dist/native/charts/src/engine/axis.js +38 -0
  196. package/dist/native/charts/src/engine/axis.js.map +1 -0
  197. package/dist/native/charts/src/engine/canvas.cjs +1 -0
  198. package/dist/native/charts/src/engine/canvas.js +1 -0
  199. package/dist/native/charts/src/engine/color.cjs +2 -0
  200. package/dist/native/charts/src/engine/color.cjs.map +1 -0
  201. package/dist/native/charts/src/engine/color.js +130 -0
  202. package/dist/native/charts/src/engine/color.js.map +1 -0
  203. package/dist/native/charts/src/engine/controller.cjs +3 -0
  204. package/dist/native/charts/src/engine/controller.cjs.map +1 -0
  205. package/dist/native/charts/src/engine/controller.js +528 -0
  206. package/dist/native/charts/src/engine/controller.js.map +1 -0
  207. package/dist/native/charts/src/engine/data.cjs +2 -0
  208. package/dist/native/charts/src/engine/data.cjs.map +1 -0
  209. package/dist/native/charts/src/engine/data.js +104 -0
  210. package/dist/native/charts/src/engine/data.js.map +1 -0
  211. package/dist/native/charts/src/engine/decimate.cjs +2 -0
  212. package/dist/native/charts/src/engine/decimate.cjs.map +1 -0
  213. package/dist/native/charts/src/engine/decimate.js +28 -0
  214. package/dist/native/charts/src/engine/decimate.js.map +1 -0
  215. package/dist/native/charts/src/engine/format.cjs +2 -0
  216. package/dist/native/charts/src/engine/format.cjs.map +1 -0
  217. package/dist/native/charts/src/engine/format.js +34 -0
  218. package/dist/native/charts/src/engine/format.js.map +1 -0
  219. package/dist/native/charts/src/engine/layout.cjs +2 -0
  220. package/dist/native/charts/src/engine/layout.cjs.map +1 -0
  221. package/dist/native/charts/src/engine/layout.js +26 -0
  222. package/dist/native/charts/src/engine/layout.js.map +1 -0
  223. package/dist/native/charts/src/engine/model.cjs +2 -0
  224. package/dist/native/charts/src/engine/model.cjs.map +1 -0
  225. package/dist/native/charts/src/engine/model.js +175 -0
  226. package/dist/native/charts/src/engine/model.js.map +1 -0
  227. package/dist/native/charts/src/engine/overlay.cjs +2 -0
  228. package/dist/native/charts/src/engine/overlay.cjs.map +1 -0
  229. package/dist/native/charts/src/engine/overlay.js +49 -0
  230. package/dist/native/charts/src/engine/overlay.js.map +1 -0
  231. package/dist/native/charts/src/engine/presets.cjs +3 -0
  232. package/dist/native/charts/src/engine/presets.cjs.map +1 -0
  233. package/dist/native/charts/src/engine/presets.js +147 -0
  234. package/dist/native/charts/src/engine/presets.js.map +1 -0
  235. package/dist/native/charts/src/engine/scale.cjs +2 -0
  236. package/dist/native/charts/src/engine/scale.cjs.map +1 -0
  237. package/dist/native/charts/src/engine/scale.js +37 -0
  238. package/dist/native/charts/src/engine/scale.js.map +1 -0
  239. package/dist/native/charts/src/engine/scene.cjs +2 -0
  240. package/dist/native/charts/src/engine/scene.cjs.map +1 -0
  241. package/dist/native/charts/src/engine/scene.js +241 -0
  242. package/dist/native/charts/src/engine/scene.js.map +1 -0
  243. package/dist/native/charts/src/engine/spatial.cjs +2 -0
  244. package/dist/native/charts/src/engine/spatial.cjs.map +1 -0
  245. package/dist/native/charts/src/engine/spatial.js +53 -0
  246. package/dist/native/charts/src/engine/spatial.js.map +1 -0
  247. package/dist/native/charts/src/engine/theme.cjs +2 -0
  248. package/dist/native/charts/src/engine/theme.cjs.map +1 -0
  249. package/dist/native/charts/src/engine/theme.js +62 -0
  250. package/dist/native/charts/src/engine/theme.js.map +1 -0
  251. package/dist/native/charts/src/engine/time.cjs +2 -0
  252. package/dist/native/charts/src/engine/time.cjs.map +1 -0
  253. package/dist/native/charts/src/engine/time.js +189 -0
  254. package/dist/native/charts/src/engine/time.js.map +1 -0
  255. package/dist/native/charts/src/engine/viewport.cjs +2 -0
  256. package/dist/native/charts/src/engine/viewport.cjs.map +1 -0
  257. package/dist/native/charts/src/engine/viewport.js +12 -0
  258. package/dist/native/charts/src/engine/viewport.js.map +1 -0
  259. package/dist/native/components/Chart/ChartBase.cjs +2 -0
  260. package/dist/native/components/Chart/ChartBase.cjs.map +1 -0
  261. package/dist/native/components/Chart/ChartBase.d.cts +29 -0
  262. package/dist/native/components/Chart/ChartBase.d.ts +29 -0
  263. package/dist/native/components/Chart/ChartBase.js +287 -0
  264. package/dist/native/components/Chart/ChartBase.js.map +1 -0
  265. package/dist/native/components/Chart/charts.cjs +2 -0
  266. package/dist/native/components/Chart/charts.cjs.map +1 -0
  267. package/dist/native/components/Chart/charts.d.cts +19 -0
  268. package/dist/native/components/Chart/charts.d.ts +19 -0
  269. package/dist/native/components/Chart/charts.js +173 -0
  270. package/dist/native/components/Chart/charts.js.map +1 -0
  271. package/dist/native/components/Chart/index.cjs +1 -0
  272. package/dist/native/components/Chart/index.d.cts +2 -0
  273. package/dist/native/components/Chart/index.d.ts +2 -0
  274. package/dist/native/components/Chart/index.js +2 -0
  275. package/dist/native/components/Chart/measure.cjs +2 -0
  276. package/dist/native/components/Chart/measure.cjs.map +1 -0
  277. package/dist/native/components/Chart/measure.d.cts +5 -0
  278. package/dist/native/components/Chart/measure.d.ts +5 -0
  279. package/dist/native/components/Chart/measure.js +11 -0
  280. package/dist/native/components/Chart/measure.js.map +1 -0
  281. package/dist/native/components/Chart/scene.cjs +2 -0
  282. package/dist/native/components/Chart/scene.cjs.map +1 -0
  283. package/dist/native/components/Chart/scene.d.cts +41 -0
  284. package/dist/native/components/Chart/scene.d.ts +41 -0
  285. package/dist/native/components/Chart/scene.js +419 -0
  286. package/dist/native/components/Chart/scene.js.map +1 -0
  287. package/dist/native/components/Chart/theme.cjs +2 -0
  288. package/dist/native/components/Chart/theme.cjs.map +1 -0
  289. package/dist/native/components/Chart/theme.d.cts +10 -0
  290. package/dist/native/components/Chart/theme.d.ts +10 -0
  291. package/dist/native/components/Chart/theme.js +10 -0
  292. package/dist/native/components/Chart/theme.js.map +1 -0
  293. package/dist/native/components/Chart/types.d.cts +129 -0
  294. package/dist/native/components/Chart/types.d.ts +129 -0
  295. package/dist/native/index.cjs +1 -1
  296. package/dist/native/index.d.cts +1 -0
  297. package/dist/native/index.d.ts +1 -0
  298. package/dist/native/index.js +6 -4
  299. package/dist/native/manifest.d.cts +7 -0
  300. package/dist/native/manifest.d.ts +7 -0
  301. package/dist/native/source/components/Chart/ChartBase.tsx +545 -0
  302. package/dist/native/source/components/Chart/charts.tsx +291 -0
  303. package/dist/native/source/components/Chart/index.ts +8 -0
  304. package/dist/native/source/components/Chart/measure.ts +50 -0
  305. package/dist/native/source/components/Chart/scene.tsx +987 -0
  306. package/dist/native/source/components/Chart/theme.ts +16 -0
  307. package/dist/native/source/components/Chart/types.ts +194 -0
  308. package/dist/native/source/index.ts +1 -0
  309. package/dist/native/source/manifest.ts +14 -0
  310. package/dist/taro/charts.d.ts +144 -0
  311. package/dist/taro/index.d.ts +1 -0
  312. package/dist/taro/index.js +3064 -618
  313. package/dist/uni/BarChart.vue +75 -0
  314. package/dist/uni/BarChart.vue.d.ts +111 -0
  315. package/dist/uni/Chart.vue +68 -0
  316. package/dist/uni/Chart.vue.d.ts +100 -0
  317. package/dist/uni/LineChart.vue +75 -0
  318. package/dist/uni/LineChart.vue.d.ts +111 -0
  319. package/dist/uni/ProgressIndicator.vue.d.ts +1 -1
  320. package/dist/uni/QuadrantChart.vue +184 -0
  321. package/dist/uni/QuadrantChart.vue.d.ts +173 -0
  322. package/dist/uni/ScatterChart.vue +69 -0
  323. package/dist/uni/ScatterChart.vue.d.ts +100 -0
  324. package/dist/uni/chart-canvas.d.ts +68 -0
  325. package/dist/uni/chart-canvas.js +363 -0
  326. package/dist/uni/chart-types.d.ts +135 -0
  327. package/dist/uni/chart-types.js +84 -0
  328. package/dist/uni/charts-canvas.d.ts +1 -0
  329. package/dist/uni/charts-canvas.js +8 -0
  330. package/dist/uni/index.d.ts +6 -0
  331. package/dist/uni/index.js +6 -0
  332. package/dist/weapp/bar-chart/index.js +1 -0
  333. package/dist/weapp/bar-chart/index.json +1 -0
  334. package/dist/weapp/bar-chart/index.wxml +1 -0
  335. package/dist/weapp/bar-chart/index.wxss +1 -0
  336. package/dist/weapp/chart/index.js +1 -0
  337. package/dist/weapp/chart/index.json +1 -0
  338. package/dist/weapp/chart/index.wxml +1 -0
  339. package/dist/weapp/chart/index.wxss +1 -0
  340. package/dist/weapp/controls.js +4019 -266
  341. package/dist/weapp/line-chart/index.js +1 -0
  342. package/dist/weapp/line-chart/index.json +1 -0
  343. package/dist/weapp/line-chart/index.wxml +1 -0
  344. package/dist/weapp/line-chart/index.wxss +1 -0
  345. package/dist/weapp/quadrant-chart/index.js +1 -0
  346. package/dist/weapp/quadrant-chart/index.json +1 -0
  347. package/dist/weapp/quadrant-chart/index.wxml +1 -0
  348. package/dist/weapp/quadrant-chart/index.wxss +1 -0
  349. package/dist/weapp/scatter-chart/index.js +1 -0
  350. package/dist/weapp/scatter-chart/index.json +1 -0
  351. package/dist/weapp/scatter-chart/index.wxml +1 -0
  352. package/dist/weapp/scatter-chart/index.wxss +1 -0
  353. package/dist/weapp/types.d.ts +295 -0
  354. package/package.json +48 -2
@@ -0,0 +1,287 @@
1
+ import { useTheme as e } from "../../theme/MinervaProvider.js";
2
+ import { part as t } from "../../internal/parts.js";
3
+ import { createChartController as n } from "../../charts/src/engine/controller.js";
4
+ import "../../charts/src/canvas.js";
5
+ import { measureChartText as r } from "./measure.js";
6
+ import { drawHover as i, drawStatic as a, tooltipCard as o } from "./scene.js";
7
+ import { chartThemeInput as s } from "./theme.js";
8
+ import { useEffect as c, useImperativeHandle as l, useLayoutEffect as u, useMemo as d, useRef as f, useState as p, useSyncExternalStore as m } from "react";
9
+ import { StyleSheet as h, View as g } from "react-native";
10
+ import { jsx as _, jsxs as v } from "react/jsx-runtime";
11
+ //#region src/components/Chart/ChartBase.tsx
12
+ var y = (e) => ({
13
+ series: e.series,
14
+ xAxis: e.xAxis,
15
+ yAxis: e.yAxis,
16
+ legend: e.legend,
17
+ tooltip: e.tooltip,
18
+ crosshair: e.crosshair,
19
+ annotations: e.annotations,
20
+ interaction: e.interaction,
21
+ padding: e.padding,
22
+ palette: e.palette,
23
+ ariaLabel: e.ariaLabel
24
+ }), b = {}, x = (e, t) => {
25
+ let n = Number(e.identifier);
26
+ return Number.isFinite(n) ? n : t;
27
+ }, S = (e) => {
28
+ if (typeof requestAnimationFrame == "function") {
29
+ let t = requestAnimationFrame(e);
30
+ return { cancel: () => cancelAnimationFrame(t) };
31
+ }
32
+ let t = setTimeout(e, 16);
33
+ return { cancel: () => clearTimeout(t) };
34
+ };
35
+ function C(e, t, i) {
36
+ let o = 0, s = null, c = /* @__PURE__ */ new Set(), l = null, u = {
37
+ x: 0,
38
+ y: 0
39
+ }, d = /* @__PURE__ */ new Map(), f = (e) => typeof e.interaction == "object" && !!e.interaction.dragPoints, p = f(e), m = !1, h = () => {
40
+ o++, c.forEach((e) => e());
41
+ }, g = () => {
42
+ s?.cancel(), s = null;
43
+ }, _ = n({
44
+ options: e,
45
+ theme: t,
46
+ measureText: r,
47
+ onInvalidate: () => {
48
+ !s && c.size && (s = S(() => {
49
+ s = null, h();
50
+ }));
51
+ }
52
+ });
53
+ i && _.setSize(i[0], i[1]);
54
+ let v = (e) => ({
55
+ x: e.pageX - u.x,
56
+ y: e.pageY - u.y
57
+ }), y = (e) => {
58
+ let t = e.nativeEvent;
59
+ (t.touches?.length ? t.touches : [t]).forEach((e, t) => {
60
+ let n = x(e, t), r = v(e), i = d.get(n);
61
+ i ? (i.x !== r.x || i.y !== r.y) && (d.set(n, r), _.pointerMove(r.x, r.y, {
62
+ id: n,
63
+ touch: !0
64
+ })) : (d.set(n, r), _.pointerDown(r.x, r.y, {
65
+ id: n,
66
+ touch: !0
67
+ }));
68
+ }), d.size === 1 && (b.anchor = [...d.values()][0]);
69
+ }, b = {
70
+ controller: _,
71
+ setOptions(e) {
72
+ p = f(e), _.setOptions(e);
73
+ },
74
+ subscribe(e) {
75
+ return c.add(e), () => {
76
+ c.delete(e), c.size || g();
77
+ };
78
+ },
79
+ version: () => o,
80
+ commit() {
81
+ g(), h();
82
+ },
83
+ layers(e, t) {
84
+ let { plot: n } = e.layout, { view: r } = e, i = [
85
+ e.model,
86
+ e.annotations,
87
+ e.theme,
88
+ e.width,
89
+ e.height,
90
+ r.x[0],
91
+ r.x[1],
92
+ r.y[0],
93
+ r.y[1],
94
+ n.x,
95
+ n.y,
96
+ n.width,
97
+ n.height,
98
+ t
99
+ ];
100
+ return (!l || l.key.some((e, t) => e !== i[t])) && (l = {
101
+ key: i,
102
+ node: a(e, t)
103
+ }), l.node;
104
+ },
105
+ anchor: null,
106
+ touchStart(e) {
107
+ let t = e.nativeEvent;
108
+ !d.size && t.locationX !== void 0 && (u = {
109
+ x: t.pageX - t.locationX,
110
+ y: t.pageY - (t.locationY ?? 0)
111
+ }), y(e), b.commit();
112
+ let n = _.getPlotRect(), r = d.values().next().value;
113
+ return m = p && !!n && !!r && r.x >= n.x && r.x <= n.x + n.width && r.y >= n.y && r.y <= n.y + n.height, b.holdsGesture();
114
+ },
115
+ touchAdd(e) {
116
+ y(e), b.commit();
117
+ },
118
+ touchMove: y,
119
+ touchEnd(e) {
120
+ let t = e.nativeEvent, n = new Set((t.touches ?? []).map((e, t) => x(e, t))), r = t.changedTouches?.length ? t.changedTouches : [t];
121
+ for (let [e, t] of [...d]) {
122
+ if (n.has(e)) continue;
123
+ let i = r.find((t, n) => x(t, n) === e), a = i ? v(i) : t;
124
+ d.delete(e), d.size === 0 && (b.anchor = a), _.pointerUp(a.x, a.y, {
125
+ id: e,
126
+ touch: !0
127
+ });
128
+ }
129
+ b.commit();
130
+ },
131
+ touchCancel() {
132
+ for (let e of d.keys()) _.pointerCancel({ id: e });
133
+ d.clear(), b.commit();
134
+ },
135
+ holdsGesture() {
136
+ if (d.size > 1 || m && d.size > 0) return !0;
137
+ let e = _.getScene();
138
+ if (!e) return !1;
139
+ if (e.dragging) return !0;
140
+ let { base: t } = e.model, n = _.getView();
141
+ return n.x[0] !== t.x[0] || n.x[1] !== t.x[1] || n.y[0] !== t.y[0] || n.y[1] !== t.y[1];
142
+ }
143
+ };
144
+ return b;
145
+ }
146
+ function w({ scene: e, anchor: n, children: r }) {
147
+ let [i, a] = p(null), { width: s, height: c } = e, l = n.x + 14, u = n.y;
148
+ return i && (l + i.width > s - 4 && (l = n.x - 14 - i.width), l = Math.max(4, Math.min(l, s - i.width - 4)), u = Math.max(4, Math.min(n.y - i.height / 2, c - i.height - 4))), /* @__PURE__ */ _(g, {
149
+ pointerEvents: "none",
150
+ ...t("chart", "tooltip", { custom: !0 }),
151
+ onLayout: (e) => {
152
+ let { width: t, height: n } = e.nativeEvent.layout;
153
+ a((e) => e && e.width === t && e.height === n ? e : {
154
+ width: t,
155
+ height: n
156
+ });
157
+ },
158
+ style: [o(e), {
159
+ left: 0,
160
+ top: 0,
161
+ maxWidth: Math.max(0, s - 8),
162
+ padding: 8,
163
+ opacity: +!!i,
164
+ transform: [{ translateX: l }, { translateY: u }]
165
+ }],
166
+ children: r
167
+ });
168
+ }
169
+ function T({ options: n, height: r = 320, width: a = "100%", style: o, testID: y, handleRef: x, renderTooltip: S, overlay: T, ...E }) {
170
+ let { tokens: D, fonts: O } = e(), k = O.sans, A = d(() => s(D), [D]), j = !!S && n.tooltip !== !1, M = d(() => {
171
+ if (!j) return n;
172
+ let e = typeof n.tooltip == "object" ? n.tooltip : {};
173
+ return {
174
+ ...n,
175
+ tooltip: {
176
+ ...e,
177
+ render: () => b
178
+ }
179
+ };
180
+ }, [n, j]), [N] = p(() => C(M, A, typeof a == "number" && typeof r == "number" ? [a, r] : null)), { controller: P } = N;
181
+ m(N.subscribe, N.version, N.version);
182
+ let F = f({
183
+ options: M,
184
+ theme: A
185
+ });
186
+ u(() => {
187
+ let e = F.current;
188
+ (e.theme !== A || e.options !== M) && (e.theme !== A && P.setTheme(A), e.options !== M && N.setOptions(M), F.current = {
189
+ options: M,
190
+ theme: A
191
+ }, N.commit());
192
+ }, [
193
+ P,
194
+ N,
195
+ M,
196
+ A
197
+ ]), u(() => {
198
+ if (typeof a != "number" || typeof r != "number") return;
199
+ let e = P.getScene();
200
+ e && e.width === a && e.height === r || (P.setSize(a, r), N.commit());
201
+ }, [
202
+ P,
203
+ N,
204
+ a,
205
+ r
206
+ ]);
207
+ let I = f(E);
208
+ u(() => {
209
+ I.current = E;
210
+ }), c(() => {
211
+ let e = I, t = [
212
+ P.on("hover", (t) => e.current.onHover?.(t)),
213
+ P.on("click", (t) => e.current.onPointClick?.(t)),
214
+ P.on("plotClick", (t) => e.current.onPlotClick?.(t)),
215
+ P.on("zoom", (t) => e.current.onZoom?.(t)),
216
+ P.on("drag", (t) => e.current.onDrag?.(t)),
217
+ P.on("drop", (t) => e.current.onDrop?.(t))
218
+ ];
219
+ return () => t.forEach((e) => e());
220
+ }, [P]), l(x, () => ({
221
+ resetZoom: () => P.resetZoom(),
222
+ getView: () => P.getView(),
223
+ setView: (e) => P.setView(e),
224
+ getPlotRect: () => P.getPlotRect(),
225
+ getController: () => P
226
+ }), [P]);
227
+ let L = (e) => {
228
+ let { width: t, height: n } = e.nativeEvent.layout, r = P.getScene();
229
+ r && r.width === t && r.height === n || (P.setSize(t, n), N.commit());
230
+ }, R = P.getScene(), z = null, B = R?.hover?.tooltip ? R.hover.event : null;
231
+ if (R && B && j && S) {
232
+ let e = S(B), t = N.anchor ?? R.hover?.marks[0] ?? null;
233
+ e != null && e !== !1 && t && (z = /* @__PURE__ */ _(w, {
234
+ scene: R,
235
+ anchor: t,
236
+ children: e
237
+ }));
238
+ }
239
+ return /* @__PURE__ */ v(g, {
240
+ testID: y,
241
+ onLayout: L,
242
+ style: [{
243
+ width: a,
244
+ height: r
245
+ }, o],
246
+ ...t("chart", "root"),
247
+ children: [
248
+ /* @__PURE__ */ _(g, {
249
+ style: h.absoluteFill,
250
+ accessible: !0,
251
+ accessibilityRole: "image",
252
+ accessibilityLabel: n.ariaLabel,
253
+ onStartShouldSetResponder: () => !0,
254
+ onResponderTerminationRequest: () => !N.holdsGesture(),
255
+ onResponderGrant: N.touchStart,
256
+ onResponderStart: N.touchAdd,
257
+ onResponderMove: N.touchMove,
258
+ onResponderEnd: N.touchEnd,
259
+ onResponderRelease: N.touchEnd,
260
+ onResponderTerminate: N.touchCancel,
261
+ ...t("chart", "surface"),
262
+ children: /* @__PURE__ */ v(g, {
263
+ pointerEvents: "none",
264
+ style: h.absoluteFill,
265
+ children: [R ? N.layers(R, k) : null, R ? i(R, k, j) : null]
266
+ })
267
+ }),
268
+ T && R ? /* @__PURE__ */ _(g, {
269
+ pointerEvents: "box-none",
270
+ style: {
271
+ position: "absolute",
272
+ left: R.layout.plot.x,
273
+ top: R.layout.plot.y,
274
+ width: R.layout.plot.width,
275
+ height: R.layout.plot.height
276
+ },
277
+ ...t("chart", "overlay"),
278
+ children: T(R.layout.plot)
279
+ }) : null,
280
+ z
281
+ ]
282
+ });
283
+ }
284
+ //#endregion
285
+ export { T as ChartBase, y as engineOptions };
286
+
287
+ //# sourceMappingURL=ChartBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartBase.js","names":["engineOptions","props","CUSTOM_TOOLTIP","idOf","id","t","index","requestFrame","callback","createChartStore","version","frame","listeners","cache","origin","touches","dragsPoints","o","draggable","options","claimed","notify","listener","cancelFrame","controller","createChartController","measureChartText","size","local","sync","n","event","i","p","previous","store","next","scene","key","view","plot","family","value","drawStatic","active","changed","last","touch","base","CustomTooltip","setSize","useState","left","anchor","top","width","height","View","part","w","h","tooltipCard","ChartBase","handlers","useTheme","fonts","theme","useMemo","chartThemeInput","tokens","customTooltip","renderTooltip","resolved","applied","useRef","useLayoutEffect","current","handlersRef","useEffect","offs","e","v","off","useImperativeHandle","handleRef","onLayout","tooltip","content","style","StyleSheet","drawHover","overlay"],"sources":["../../../../../native/src/components/Chart/ChartBase.tsx"],"sourcesContent":["// The chart host of React Native: owns a platform-free chart controller\n// (@minerva/charts/canvas: options, model, zoom, gestures, scene in pixels)\n// and draws its scene with views (./scene). Touches go through the\n// responder system; the drawing is `pointerEvents=\"none\"`, so every touch\n// lands on the surface and positions come from page coordinates.\n\nimport {\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport {\n StyleSheet,\n View,\n type DimensionValue,\n type GestureResponderEvent,\n type LayoutChangeEvent,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport {\n createChartController,\n type ChartController,\n type ChartDragEvent,\n type ChartHoverEvent,\n type ChartOptions,\n type ChartPlotClickEvent,\n type ChartRect,\n type ChartScene,\n type ChartThemeInput,\n type ChartTooltipOptions,\n type ChartView,\n} from \"@minerva/charts/canvas\";\nimport { useTheme } from \"../../theme/MinervaProvider\";\nimport { part } from \"../../internal/parts\";\nimport { measureChartText } from \"./measure\";\nimport { drawHover, drawStatic, tooltipCard } from \"./scene\";\nimport { chartThemeInput } from \"./theme\";\nimport type { ChartCommonProps, ChartHandle } from \"./types\";\n\ninterface Handlers {\n onHover?: (event: ChartHoverEvent | null) => void;\n onPointClick?: (event: ChartHoverEvent) => void;\n onPlotClick?: (event: ChartPlotClickEvent) => void;\n onZoom?: (view: ChartView) => void;\n onDrag?: (event: ChartDragEvent) => void;\n onDrop?: (event: ChartDragEvent) => void;\n}\n\n/** Engine options of the common props */\nexport const engineOptions = (\n props: Pick<\n ChartCommonProps,\n | \"xAxis\"\n | \"yAxis\"\n | \"legend\"\n | \"tooltip\"\n | \"crosshair\"\n | \"annotations\"\n | \"interaction\"\n | \"padding\"\n | \"palette\"\n | \"ariaLabel\"\n > &\n Pick<ChartOptions, \"series\">,\n): ChartOptions => ({\n series: props.series,\n xAxis: props.xAxis,\n yAxis: props.yAxis,\n legend: props.legend,\n tooltip: props.tooltip,\n crosshair: props.crosshair,\n annotations: props.annotations,\n interaction: props.interaction,\n padding: props.padding,\n palette: props.palette,\n ariaLabel: props.ariaLabel,\n});\n\ntype TooltipResult = Exclude<\n ReturnType<NonNullable<ChartTooltipOptions[\"render\"]>>,\n string | null\n>;\n/** Non-string result of `tooltip.render`: the engine lays a tooltip out without drawing text */\nconst CUSTOM_TOOLTIP = {} as unknown as TooltipResult;\n\ninterface TouchPoint {\n identifier?: number | string;\n pageX: number;\n pageY: number;\n locationX?: number;\n locationY?: number;\n}\n\nconst idOf = (t: TouchPoint, index: number) => {\n const id = Number(t.identifier);\n return Number.isFinite(id) ? id : index;\n};\n\ntype Frame = { cancel: () => void };\n\nconst requestFrame = (callback: () => void): Frame => {\n if (typeof requestAnimationFrame === \"function\") {\n const id = requestAnimationFrame(callback);\n return { cancel: () => cancelAnimationFrame(id) };\n }\n const id = setTimeout(callback, 16);\n return { cancel: () => clearTimeout(id) };\n};\n\n/**\n * External store of a chart: the controller, a version bumped when its\n * scene must be drawn again (coalesced per frame), the touches being\n * tracked and the cache of the static layers.\n */\ninterface ChartStore {\n controller: ChartController;\n /** Options of the controller (`setOptions` of the controller) */\n setOptions: (options: ChartOptions) => void;\n subscribe: (listener: () => void) => () => void;\n version: () => number;\n /** Draws again now */\n commit: () => void;\n /** Static layers of a scene (cached while model / view / size are the same) */\n layers: (scene: ChartScene, family: string | undefined) => ReactNode;\n /** Last single-finger position (anchor of a custom tooltip) */\n anchor: { x: number; y: number } | null;\n /**\n * First finger (responder grant); returns whether the chart owns the\n * gesture, which keeps native scroll views from taking it (Android)\n */\n touchStart: (event: GestureResponderEvent) => boolean;\n /** Another finger touches the chart */\n touchAdd: (event: GestureResponderEvent) => void;\n /** Moves (drawn on the next frame) */\n touchMove: (event: GestureResponderEvent) => void;\n touchEnd: (event: GestureResponderEvent) => void;\n touchCancel: () => void;\n /** Whether the chart keeps the touches (pinch, point drag, pan when zoomed) */\n holdsGesture: () => boolean;\n}\n\nfunction createChartStore(\n options: ChartOptions,\n theme: ChartThemeInput,\n size: [number, number] | null,\n): ChartStore {\n let version = 0;\n let frame: Frame | null = null;\n const listeners = new Set<() => void>();\n let cache: { key: unknown[]; node: ReactNode } | null = null;\n let origin = { x: 0, y: 0 };\n const touches = new Map<number, { x: number; y: number }>();\n const dragsPoints = (o: ChartOptions) =>\n typeof o.interaction === \"object\" && !!o.interaction.dragPoints;\n let draggable = dragsPoints(options);\n /** The current touch sequence started on the plot of a draggable chart */\n let claimed = false;\n\n const notify = () => {\n version++;\n listeners.forEach((listener) => listener());\n };\n const cancelFrame = () => {\n frame?.cancel();\n frame = null;\n };\n const schedule = () => {\n if (frame || !listeners.size) return;\n frame = requestFrame(() => {\n frame = null;\n notify();\n });\n };\n\n const controller = createChartController({\n options,\n theme,\n measureText: measureChartText,\n onInvalidate: schedule,\n });\n if (size) controller.setSize(size[0], size[1]);\n\n const local = (t: TouchPoint) => ({\n x: t.pageX - origin.x,\n y: t.pageY - origin.y,\n });\n\n /** Feeds the controller the fingers that appeared or moved */\n const sync = (event: GestureResponderEvent) => {\n const n = event.nativeEvent;\n const list: readonly TouchPoint[] = n.touches?.length\n ? n.touches\n : [n as unknown as TouchPoint];\n list.forEach((t, i) => {\n const id = idOf(t, i);\n const p = local(t);\n const previous = touches.get(id);\n if (!previous) {\n touches.set(id, p);\n controller.pointerDown(p.x, p.y, { id, touch: true });\n } else if (previous.x !== p.x || previous.y !== p.y) {\n touches.set(id, p);\n controller.pointerMove(p.x, p.y, { id, touch: true });\n }\n });\n if (touches.size === 1) store.anchor = [...touches.values()][0];\n };\n\n const store: ChartStore = {\n controller,\n setOptions(next) {\n draggable = dragsPoints(next);\n controller.setOptions(next);\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n if (!listeners.size) cancelFrame();\n };\n },\n version: () => version,\n commit() {\n cancelFrame();\n notify();\n },\n layers(scene, family) {\n const { plot } = scene.layout;\n const { view } = scene;\n const key = [\n scene.model,\n scene.annotations,\n scene.theme,\n scene.width,\n scene.height,\n view.x[0],\n view.x[1],\n view.y[0],\n view.y[1],\n plot.x,\n plot.y,\n plot.width,\n plot.height,\n family,\n ];\n if (!cache || cache.key.some((value, i) => value !== key[i]))\n cache = { key, node: drawStatic(scene, family) };\n return cache.node;\n },\n anchor: null,\n touchStart(event) {\n const n = event.nativeEvent as unknown as TouchPoint;\n // the drawing ignores touches: `location` is relative to the surface\n if (!touches.size && n.locationX !== undefined)\n origin = { x: n.pageX - n.locationX, y: n.pageY - (n.locationY ?? 0) };\n sync(event);\n store.commit();\n // draggable points: the drag only starts after the touch slop, too\n // late to keep a scroll view from stealing the touch: claim it now\n const plot = controller.getPlotRect();\n const p = touches.values().next().value;\n claimed =\n draggable &&\n !!plot &&\n !!p &&\n p.x >= plot.x &&\n p.x <= plot.x + plot.width &&\n p.y >= plot.y &&\n p.y <= plot.y + plot.height;\n return store.holdsGesture();\n },\n touchAdd(event) {\n sync(event);\n store.commit();\n },\n touchMove: sync,\n touchEnd(event) {\n const n = event.nativeEvent;\n const active = new Set(\n (n.touches ?? []).map((t, i) => idOf(t as TouchPoint, i)),\n );\n const changed: readonly TouchPoint[] = n.changedTouches?.length\n ? n.changedTouches\n : [n as unknown as TouchPoint];\n for (const [id, last] of [...touches]) {\n if (active.has(id)) continue;\n const touch = changed.find((t, i) => idOf(t, i) === id);\n const p = touch ? local(touch) : last;\n touches.delete(id);\n if (touches.size === 0) store.anchor = p;\n controller.pointerUp(p.x, p.y, { id, touch: true });\n }\n store.commit();\n },\n touchCancel() {\n for (const id of touches.keys()) controller.pointerCancel({ id });\n touches.clear();\n store.commit();\n },\n holdsGesture() {\n if (touches.size > 1 || (claimed && touches.size > 0)) return true;\n const scene = controller.getScene();\n if (!scene) return false;\n if (scene.dragging) return true;\n const { base } = scene.model;\n const view = controller.getView();\n return (\n view.x[0] !== base.x[0] ||\n view.x[1] !== base.x[1] ||\n view.y[0] !== base.y[0] ||\n view.y[1] !== base.y[1]\n );\n },\n };\n return store;\n}\n\n/** A `renderTooltip` node, placed next to the finger once measured */\nfunction CustomTooltip({\n scene,\n anchor,\n children,\n}: {\n scene: ChartScene;\n anchor: { x: number; y: number };\n children: ReactNode;\n}) {\n const [size, setSize] = useState<{ width: number; height: number } | null>(\n null,\n );\n const { width, height } = scene;\n let left = anchor.x + 14;\n let top = anchor.y;\n if (size) {\n if (left + size.width > width - 4) left = anchor.x - 14 - size.width;\n left = Math.max(4, Math.min(left, width - size.width - 4));\n top = Math.max(\n 4,\n Math.min(anchor.y - size.height / 2, height - size.height - 4),\n );\n }\n return (\n <View\n pointerEvents=\"none\"\n {...part(\"chart\", \"tooltip\", { custom: true })}\n onLayout={(e: LayoutChangeEvent) => {\n const { width: w, height: h } = e.nativeEvent.layout;\n setSize((previous) =>\n previous && previous.width === w && previous.height === h\n ? previous\n : { width: w, height: h },\n );\n }}\n style={[\n tooltipCard(scene),\n {\n // laid out at the origin (full width available), moved by a transform\n left: 0,\n top: 0,\n maxWidth: Math.max(0, width - 8),\n padding: 8,\n opacity: size ? 1 : 0,\n transform: [{ translateX: left }, { translateY: top }],\n },\n ]}\n >\n {children}\n </View>\n );\n}\n\ninterface ChartBaseProps extends Handlers {\n options: ChartOptions;\n height?: DimensionValue;\n width?: DimensionValue;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n handleRef?: Ref<ChartHandle>;\n /** React content of the tooltip (replaces the engine's content) */\n renderTooltip?: (event: ChartHoverEvent) => ReactNode;\n /** React content placed over the plot area, given the plot rectangle */\n overlay?: (plot: ChartRect) => ReactNode;\n}\n\n/** Sizes the chart, forwards options / theme / touches to the controller and draws its scene */\nexport function ChartBase({\n options,\n height = 320,\n width = \"100%\",\n style,\n testID,\n handleRef,\n renderTooltip,\n overlay,\n ...handlers\n}: ChartBaseProps) {\n const { tokens, fonts } = useTheme();\n const family = fonts.sans;\n const theme = useMemo(() => chartThemeInput(tokens), [tokens]);\n const customTooltip = !!renderTooltip && options.tooltip !== false;\n const resolved = useMemo((): ChartOptions => {\n if (!customTooltip) return options;\n const base = typeof options.tooltip === \"object\" ? options.tooltip : {};\n return { ...options, tooltip: { ...base, render: () => CUSTOM_TOOLTIP } };\n }, [options, customTooltip]);\n\n const [store] = useState(() =>\n createChartStore(\n resolved,\n theme,\n typeof width === \"number\" && typeof height === \"number\"\n ? [width, height]\n : null,\n ),\n );\n const { controller } = store;\n useSyncExternalStore(store.subscribe, store.version, store.version);\n\n const applied = useRef({ options: resolved, theme });\n useLayoutEffect(() => {\n const current = applied.current;\n if (current.theme === theme && current.options === resolved) return;\n if (current.theme !== theme) controller.setTheme(theme);\n if (current.options !== resolved) store.setOptions(resolved);\n applied.current = { options: resolved, theme };\n store.commit();\n }, [controller, store, resolved, theme]);\n\n useLayoutEffect(() => {\n if (typeof width !== \"number\" || typeof height !== \"number\") return;\n const scene = controller.getScene();\n if (scene && scene.width === width && scene.height === height) return;\n controller.setSize(width, height);\n store.commit();\n }, [controller, store, width, height]);\n\n const handlersRef = useRef<Handlers>(handlers);\n useLayoutEffect(() => {\n handlersRef.current = handlers;\n });\n useEffect(() => {\n const h = handlersRef;\n const offs = [\n controller.on(\"hover\", (e) => h.current.onHover?.(e)),\n controller.on(\"click\", (e) => h.current.onPointClick?.(e)),\n controller.on(\"plotClick\", (e) => h.current.onPlotClick?.(e)),\n controller.on(\"zoom\", (v) => h.current.onZoom?.(v)),\n controller.on(\"drag\", (e) => h.current.onDrag?.(e)),\n controller.on(\"drop\", (e) => h.current.onDrop?.(e)),\n ];\n return () => offs.forEach((off) => off());\n }, [controller]);\n\n useImperativeHandle(\n handleRef,\n () => ({\n resetZoom: () => controller.resetZoom(),\n getView: () => controller.getView(),\n setView: (view) => controller.setView(view),\n getPlotRect: () => controller.getPlotRect(),\n getController: () => controller,\n }),\n [controller],\n );\n\n const onLayout = (e: LayoutChangeEvent) => {\n const { width: w, height: h } = e.nativeEvent.layout;\n const scene = controller.getScene();\n if (scene && scene.width === w && scene.height === h) return;\n controller.setSize(w, h);\n store.commit();\n };\n\n const scene = controller.getScene();\n let tooltip: ReactNode = null;\n const event = scene?.hover?.tooltip ? scene.hover.event : null;\n if (scene && event && customTooltip && renderTooltip) {\n const content = renderTooltip(event);\n const anchor = store.anchor ?? scene.hover?.marks[0] ?? null;\n if (\n content !== null &&\n content !== undefined &&\n content !== false &&\n anchor\n )\n tooltip = (\n <CustomTooltip scene={scene} anchor={anchor}>\n {content}\n </CustomTooltip>\n );\n }\n\n return (\n <View\n testID={testID}\n onLayout={onLayout}\n style={[{ width, height }, style]}\n {...part(\"chart\", \"root\")}\n >\n <View\n style={StyleSheet.absoluteFill}\n accessible\n accessibilityRole=\"image\"\n accessibilityLabel={options.ariaLabel}\n onStartShouldSetResponder={() => true}\n onResponderTerminationRequest={() => !store.holdsGesture()}\n onResponderGrant={store.touchStart}\n onResponderStart={store.touchAdd}\n onResponderMove={store.touchMove}\n onResponderEnd={store.touchEnd}\n onResponderRelease={store.touchEnd}\n onResponderTerminate={store.touchCancel}\n {...part(\"chart\", \"surface\")}\n >\n <View pointerEvents=\"none\" style={StyleSheet.absoluteFill}>\n {scene ? store.layers(scene, family) : null}\n {scene ? drawHover(scene, family, customTooltip) : null}\n </View>\n </View>\n {overlay && scene ? (\n <View\n pointerEvents=\"box-none\"\n style={{\n position: \"absolute\",\n left: scene.layout.plot.x,\n top: scene.layout.plot.y,\n width: scene.layout.plot.width,\n height: scene.layout.plot.height,\n }}\n {...part(\"chart\", \"overlay\")}\n >\n {overlay(scene.layout.plot)}\n </View>\n ) : null}\n {tooltip}\n </View>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require("../../internal/parts.cjs"),t=require("../../charts/src/engine/presets.cjs");require("../../charts/src/canvas.cjs");const n=require("./ChartBase.cjs");let r=require("react"),i=require("react-native"),a=require("react/jsx-runtime");function o(e,t){let{xAxis:i,yAxis:a,legend:o,tooltip:s,crosshair:c,annotations:l,interaction:u,padding:d,palette:f,ariaLabel:p}=e;return(0,r.useMemo)(()=>n.engineOptions({series:t,xAxis:i,yAxis:a,legend:o,tooltip:s,crosshair:c,annotations:l,interaction:u,padding:d,palette:f,ariaLabel:p}),[t,i,a,o,s,c,l,u,d,f,p])}var s=e=>({height:e.height,width:e.width,style:e.style,testID:e.testID,handleRef:e.ref,onHover:e.onHover,onPointClick:e.onPointClick,onPlotClick:e.onPlotClick,onZoom:e.onZoom,renderTooltip:e.renderTooltip});function c(e){let t=o(e,e.series);return(0,a.jsx)(n.ChartBase,{options:t,...s(e)})}function l(e){let{series:i,area:c=!1}=e,l=o(e,(0,r.useMemo)(()=>t.lineSeries(i,c),[i,c]));return(0,a.jsx)(n.ChartBase,{options:l,...s(e)})}function u(e){let{series:i,stacked:c=!1}=e,l=o(e,(0,r.useMemo)(()=>t.barSeries(i,c),[i,c]));return(0,a.jsx)(n.ChartBase,{options:l,...s(e)})}function d(e){let{series:i}=e,c=o(e,(0,r.useMemo)(()=>t.scatterSeries(i),[i]));return(0,a.jsx)(n.ChartBase,{options:c,...s(e)})}var f=[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`],p=[];function m(c){let{points:l,xDomain:u,yDomain:d,xSplit:m,ySplit:h,quadrants:g,xLabel:_,yLabel:v,axisLabels:y,showTicks:b,reverseX:x,showLabels:S,pointSize:C,name:w,draggable:T,onPointClick:E,onPointDrop:D,onQuadrantClick:O,renderTooltip:k,quadrantContent:A}=c,j=o(c,p),M=T??!!D,N=(0,r.useMemo)(()=>t.quadrantChartOptions({points:l,xDomain:u,yDomain:d,xSplit:m,ySplit:h,quadrants:g,xLabel:_,yLabel:v,axisLabels:y,showTicks:b,reverseX:x,showLabels:S,pointSize:C,name:w,draggable:M},j),[l,u,d,m,h,g,_,v,y,b,x,S,C,w,M,j]),P={xDomain:u,yDomain:d,xSplit:m,ySplit:h,reverseX:x},F=A?t=>{let[n,r]=u??[0,10],[o,s]=d??[0,10],c=m??(n+r)/2,l=h??(o+s)/2,p=(c-n)/(r-n||1),g=(l-o)/(s-o||1),_=t.width*(x?1-p:p),v=t.height*(1-g);return f.map(n=>{let r=A[n];if(r==null||r===!1)return null;let o=n.endsWith(`Left`),s=n.startsWith(`top`);return(0,a.jsx)(i.View,{pointerEvents:`box-none`,style:{position:`absolute`,left:o?0:_,top:s?0:v,width:o?_:t.width-_,height:s?v:t.height-v},...e.part(`chart`,`quadrant`,{corner:n}),children:r},n)})}:void 0;return(0,a.jsx)(n.ChartBase,{options:N,...s({...c,onPointClick:void 0,renderTooltip:void 0}),overlay:F,onPointClick:E?e=>{let t=e.items[0]?.index;t!==void 0&&l[t]&&E(l[t],t)}:void 0,onPlotClick:O?e=>O(t.quadrantOf(P,e.x,e.y),e):void 0,onDrop:D?e=>{let n=e.item.index;l[n]&&D(l[n],n,{x:e.x,y:e.y,quadrant:t.quadrantOf(P,e.x,e.y)})}:void 0,renderTooltip:k?e=>{let t=e.items[0]?.index;return t!==void 0&&l[t]?k(l[t],t):null}:void 0})}exports.BarChart=u,exports.Chart=c,exports.LineChart=l,exports.QuadrantChart=m,exports.ScatterChart=d;
2
+ //# sourceMappingURL=charts.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charts.cjs","names":["useMemo","engineOptions","ChartBase","lineSeries","barSeries","scatterSeries","quadrantChartOptions","View","part","quadrantOf","require_parts","require_presets","require_ChartBase","react","react_native","react_jsx_runtime","useEngineOptions","props","series","xAxis","yAxis","legend","tooltip","crosshair","annotations","interaction","padding","palette","ariaLabel","frameProps","Chart","options","LineChart","input","area","BarChart","stacked","ScatterChart","CORNERS","NO_SERIES","QuadrantChart","base","dragPoints","draggable","onPointDrop","points","xDomain","yDomain","xSplit","ySplit","quadrants","xLabel","yLabel","axisLabels","showTicks","reverseX","showLabels","pointSize","name","geometry","overlay","quadrantContent","x0","x1","y0","y1","xs","ys","fx","fy","sx","plot","sy","content","corner","left","top","onPointClick","index","event","onQuadrantClick","at","renderTooltip"],"sources":["../../../../../native/src/components/Chart/charts.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { View } from \"react-native\";\nimport {\n barSeries,\n lineSeries,\n quadrantChartOptions,\n quadrantOf,\n scatterSeries,\n type ChartHoverEvent,\n type ChartOptions,\n type ChartRect,\n type ChartSeries,\n type QuadrantCorner,\n} from \"@minerva/charts/canvas\";\nimport { part } from \"../../internal/parts\";\nimport { ChartBase, engineOptions } from \"./ChartBase\";\nimport type {\n BarChartProps,\n ChartCommonProps,\n ChartProps,\n LineChartProps,\n QuadrantChartProps,\n ScatterChartProps,\n} from \"./types\";\n\n/** Engine options of the common props, kept while the props are the same */\nfunction useEngineOptions(\n props: Omit<\n ChartCommonProps,\n \"onPointClick\" | \"onPlotClick\" | \"renderTooltip\"\n >,\n series: readonly ChartSeries[],\n): ChartOptions {\n const {\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n } = props;\n return useMemo(\n () =>\n engineOptions({\n series,\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n }),\n [\n series,\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n ],\n );\n}\n\nconst frameProps = (props: ChartCommonProps) => ({\n height: props.height,\n width: props.width,\n style: props.style,\n testID: props.testID,\n handleRef: props.ref,\n onHover: props.onHover,\n onPointClick: props.onPointClick,\n onPlotClick: props.onPlotClick,\n onZoom: props.onZoom,\n renderTooltip: props.renderTooltip,\n});\n\n/**\n * Chart mixing line, area, bar and scatter series, drawn with views:\n * tap for the tooltip, pinch to zoom, drag to pan, double tap to reset.\n * Themed by the closest `MinervaProvider` (light / dark).\n */\nexport function Chart(props: ChartProps) {\n const options = useEngineOptions(props, props.series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\n/** Line (or area) chart; large series are decimated to the pixel columns */\nexport function LineChart(props: LineChartProps) {\n const { series: input, area = false } = props;\n const series = useMemo(() => lineSeries(input, area), [input, area]);\n const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\n/** Bar chart: grouped side by side, or stacked */\nexport function BarChart(props: BarChartProps) {\n const { series: input, stacked = false } = props;\n const series = useMemo(() => barSeries(input, stacked), [input, stacked]);\n const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\n/** Scatter chart: zooms on both axes; large point sets are merged per cell */\nexport function ScatterChart(props: ScatterChartProps) {\n const { series: input } = props;\n const series = useMemo(() => scatterSeries(input), [input]);\n const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\nconst CORNERS: QuadrantCorner[] = [\n \"topLeft\",\n \"topRight\",\n \"bottomLeft\",\n \"bottomRight\",\n];\n\nconst NO_SERIES: readonly ChartSeries[] = [];\n\n/**\n * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted\n * quadrants with titles, dividers, and labelled dots placed without\n * overlapping labels. Dots can be dragged to another quadrant.\n */\nexport function QuadrantChart(props: QuadrantChartProps) {\n const {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable,\n onPointClick,\n onPointDrop,\n onQuadrantClick,\n renderTooltip,\n quadrantContent,\n } = props;\n const base = useEngineOptions(props, NO_SERIES);\n const dragPoints = draggable ?? !!onPointDrop;\n const options = useMemo(\n () =>\n quadrantChartOptions(\n {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable: dragPoints,\n },\n base,\n ),\n [\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n dragPoints,\n base,\n ],\n );\n const geometry = { xDomain, yDomain, xSplit, ySplit, reverseX };\n\n const overlay = quadrantContent\n ? (plot: ChartRect) => {\n const [x0, x1] = xDomain ?? [0, 10];\n const [y0, y1] = yDomain ?? [0, 10];\n const xs = xSplit ?? (x0 + x1) / 2;\n const ys = ySplit ?? (y0 + y1) / 2;\n const fx = (xs - x0) / (x1 - x0 || 1);\n const fy = (ys - y0) / (y1 - y0 || 1);\n // split point relative to the plot area\n const sx = plot.width * (reverseX ? 1 - fx : fx);\n const sy = plot.height * (1 - fy);\n return CORNERS.map((corner) => {\n const content = quadrantContent[corner];\n if (content === undefined || content === null || content === false)\n return null;\n const left = corner.endsWith(\"Left\");\n const top = corner.startsWith(\"top\");\n return (\n <View\n key={corner}\n pointerEvents=\"box-none\"\n style={{\n position: \"absolute\",\n left: left ? 0 : sx,\n top: top ? 0 : sy,\n width: left ? sx : plot.width - sx,\n height: top ? sy : plot.height - sy,\n }}\n {...part(\"chart\", \"quadrant\", { corner })}\n >\n {content}\n </View>\n );\n });\n }\n : undefined;\n\n return (\n <ChartBase\n options={options}\n {...frameProps({\n ...props,\n onPointClick: undefined,\n renderTooltip: undefined,\n })}\n overlay={overlay}\n onPointClick={\n onPointClick\n ? (event: ChartHoverEvent) => {\n const index = event.items[0]?.index;\n if (index !== undefined && points[index])\n onPointClick(points[index], index);\n }\n : undefined\n }\n onPlotClick={\n onQuadrantClick\n ? (at) => onQuadrantClick(quadrantOf(geometry, at.x, at.y), at)\n : undefined\n }\n onDrop={\n onPointDrop\n ? (event) => {\n const index = event.item.index;\n if (!points[index]) return;\n onPointDrop(points[index], index, {\n x: event.x,\n y: event.y,\n quadrant: quadrantOf(geometry, event.x, event.y),\n });\n }\n : undefined\n }\n renderTooltip={\n renderTooltip\n ? (event) => {\n const index = event.items[0]?.index;\n return index !== undefined && points[index]\n ? renderTooltip(points[index], index)\n : null;\n }\n : undefined\n }\n />\n );\n}\n"],"mappings":"uPA0BA,SAASgB,EACP,EAIA,EACc,CACd,GAAM,CACJ,QACA,QACA,SACA,UACA,YACA,cACA,cACA,UACA,UACA,aACEC,EACJ,OAAA,EAAOjB,EAAAA,QAAAA,KAEHC,EAAAA,cAAc,CACZ,SACA,QACA,QACA,SACA,UACA,YACA,cACA,cACA,UACA,UACA,WACF,CAAC,EACH,CACEiB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,CACF,CACF,CACF,CAEA,IAAMC,EAAc,IAA6B,CAC/C,OAAQZ,EAAM,OACd,MAAOA,EAAM,MACb,MAAOA,EAAM,MACb,OAAQA,EAAM,OACd,UAAWA,EAAM,IACjB,QAASA,EAAM,QACf,aAAcA,EAAM,aACpB,YAAaA,EAAM,YACnB,OAAQA,EAAM,OACd,cAAeA,EAAM,aACvB,GAOA,SAAgBa,EAAM,EAAmB,CACvC,IAAMC,EAAUf,EAAiBC,EAAOA,EAAM,MAAM,EACpD,OAAO,EAAAF,EAAA,IAAA,CAACb,EAAAA,UAAD,CAAoB,UAAS,GAAI2B,EAAWZ,CAAK,CAAI,CAAA,CAC9D,CAGA,SAAgBe,EAAU,EAAuB,CAC/C,GAAM,CAAE,OAAQC,EAAO,OAAO,IAAUhB,EAElCc,EAAUf,EAAiBC,GAAA,EADlBjB,EAAAA,QAAAA,KAAcG,EAAAA,WAAW8B,EAAOC,CAAI,EAAG,CAACD,EAAOC,CAAI,CAC1B,CAAM,EAC9C,OAAO,EAAAnB,EAAA,IAAA,CAACb,EAAAA,UAAD,CAAoB,UAAS,GAAI2B,EAAWZ,CAAK,CAAI,CAAA,CAC9D,CAGA,SAAgBkB,EAAS,EAAsB,CAC7C,GAAM,CAAE,OAAQF,EAAO,UAAU,IAAUhB,EAErCc,EAAUf,EAAiBC,GAAA,EADlBjB,EAAAA,QAAAA,KAAcI,EAAAA,UAAU6B,EAAOG,CAAO,EAAG,CAACH,EAAOG,CAAO,CAC/B,CAAM,EAC9C,OAAO,EAAArB,EAAA,IAAA,CAACb,EAAAA,UAAD,CAAoB,UAAS,GAAI2B,EAAWZ,CAAK,CAAI,CAAA,CAC9D,CAGA,SAAgBoB,EAAa,EAA0B,CACrD,GAAM,CAAE,OAAQJ,GAAUhB,EAEpBc,EAAUf,EAAiBC,GAAA,EADlBjB,EAAAA,QAAAA,KAAcK,EAAAA,cAAc4B,CAAK,EAAG,CAACA,CAAK,CACjB,CAAM,EAC9C,OAAO,EAAAlB,EAAA,IAAA,CAACb,EAAAA,UAAD,CAAoB,UAAS,GAAI2B,EAAWZ,CAAK,CAAI,CAAA,CAC9D,CAEA,IAAMqB,EAA4B,CAChC,UACA,WACA,aACA,aACF,EAEMC,EAAoC,CAAC,EAO3C,SAAgBC,EAAc,EAA2B,CACvD,GAAM,CACJ,SACA,UACA,UACA,SACA,SACA,YACA,SACA,SACA,aACA,YACA,WACA,aACA,YACA,OACA,YACA,eACA,cACA,kBACA,gBACA,mBACEvB,EACEwB,EAAOzB,EAAiBC,EAAOsB,CAAS,EACxCG,EAAaC,GAAa,CAAC,CAACC,EAC5Bb,GAAA,EAAU/B,EAAAA,QAAAA,KAEZM,EAAAA,qBACE,CACE,SACA,UACA,UACA,SACA,SACA,YACA,SACA,SACA,aACA,YACA,WACA,aACA,YACA,OACA,UAAWoC,CACb,EACAD,CACF,EACF,CACEI,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAhB,EACAD,CACF,CACF,EACMkB,EAAW,CAAE,UAAS,UAAS,SAAQ,SAAQ,UAAS,EAExDC,EAAUC,EACX,GAAoB,CACnB,GAAM,CAACC,EAAIC,GAAMjB,GAAW,CAAC,EAAG,EAAE,EAC5B,CAACkB,EAAIC,GAAMlB,GAAW,CAAC,EAAG,EAAE,EAC5BmB,EAAKlB,IAAWc,EAAKC,GAAM,EAC3BI,EAAKlB,IAAWe,EAAKC,GAAM,EAC3BG,GAAMF,EAAKJ,IAAOC,EAAKD,GAAM,GAC7BO,GAAMF,EAAKH,IAAOC,EAAKD,GAAM,GAE7BM,EAAKC,EAAK,OAAShB,EAAW,EAAIa,EAAKA,GACvCI,EAAKD,EAAK,QAAU,EAAIF,GAC9B,OAAO/B,EAAQ,IAAK,GAAW,CAC7B,IAAMmC,EAAUZ,EAAgBa,GAChC,GAAID,GAAqC,MAAQA,IAAY,GAC3D,OAAO,KACT,IAAME,EAAOD,EAAO,SAAS,MAAM,EAC7BE,EAAMF,EAAO,WAAW,KAAK,EACnC,OACE,EAAA3D,EAAA,IAAA,CAACR,EAAAA,KAAD,CAEE,cAAc,WACd,MAAO,CACL,SAAU,WACV,KAAMoE,EAAO,EAAIL,EACjB,IAAKM,EAAM,EAAIJ,EACf,MAAOG,EAAOL,EAAKC,EAAK,MAAQD,EAChC,OAAQM,EAAMJ,EAAKD,EAAK,OAASC,CACnC,EACA,GAAIhE,EAAAA,KAAK,QAAS,WAAY,CAAE,QAAO,CAAC,EAEvC,SAAAiE,CACG,EAZCC,CAYD,CAEV,CAAC,CACH,EACA,IAAA,GAEJ,OACE,EAAA3D,EAAA,IAAA,CAACb,EAAAA,UAAD,CACW,UACT,GAAI2B,EAAW,CACb,GAAGZ,EACH,aAAc,IAAA,GACd,cAAe,IAAA,EACjB,CAAC,EACQ,UACT,aACE4D,EACK,GAA2B,CAC1B,IAAMC,EAAQC,EAAM,MAAM,EAAE,EAAE,MAC1BD,IAAU,IAAA,IAAajC,EAAOiC,IAChCD,EAAahC,EAAOiC,GAAQA,CAAK,CACrC,EACA,IAAA,GAEN,YACEE,EACK,GAAOA,EAAgBvE,EAAAA,WAAWkD,EAAUsB,EAAG,EAAGA,EAAG,CAAC,EAAGA,CAAE,EAC5D,IAAA,GAEN,OACErC,EACK,GAAU,CACT,IAAMkC,EAAQC,EAAM,KAAK,MACpBlC,EAAOiC,IACZlC,EAAYC,EAAOiC,GAAQA,EAAO,CAChC,EAAGC,EAAM,EACT,EAAGA,EAAM,EACT,SAAUtE,EAAAA,WAAWkD,EAAUoB,EAAM,EAAGA,EAAM,CAAC,CACjD,CAAC,CACH,EACA,IAAA,GAEN,cACEG,EACK,GAAU,CACT,IAAMJ,EAAQC,EAAM,MAAM,EAAE,EAAE,MAC9B,OAAOD,IAAU,IAAA,IAAajC,EAAOiC,GACjCI,EAAcrC,EAAOiC,GAAQA,CAAK,EAClC,IACN,EACA,IAAA,EAEP,CAAA,CAEL"}
@@ -0,0 +1,19 @@
1
+ import { BarChartProps, ChartProps, LineChartProps, QuadrantChartProps, ScatterChartProps } from './types.cjs';
2
+ /**
3
+ * Chart mixing line, area, bar and scatter series, drawn with views:
4
+ * tap for the tooltip, pinch to zoom, drag to pan, double tap to reset.
5
+ * Themed by the closest `MinervaProvider` (light / dark).
6
+ */
7
+ export declare function Chart(props: ChartProps): import('react').JSX.Element;
8
+ /** Line (or area) chart; large series are decimated to the pixel columns */
9
+ export declare function LineChart(props: LineChartProps): import('react').JSX.Element;
10
+ /** Bar chart: grouped side by side, or stacked */
11
+ export declare function BarChart(props: BarChartProps): import('react').JSX.Element;
12
+ /** Scatter chart: zooms on both axes; large point sets are merged per cell */
13
+ export declare function ScatterChart(props: ScatterChartProps): import('react').JSX.Element;
14
+ /**
15
+ * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted
16
+ * quadrants with titles, dividers, and labelled dots placed without
17
+ * overlapping labels. Dots can be dragged to another quadrant.
18
+ */
19
+ export declare function QuadrantChart(props: QuadrantChartProps): import('react').JSX.Element;
@@ -0,0 +1,19 @@
1
+ import { BarChartProps, ChartProps, LineChartProps, QuadrantChartProps, ScatterChartProps } from './types.js';
2
+ /**
3
+ * Chart mixing line, area, bar and scatter series, drawn with views:
4
+ * tap for the tooltip, pinch to zoom, drag to pan, double tap to reset.
5
+ * Themed by the closest `MinervaProvider` (light / dark).
6
+ */
7
+ export declare function Chart(props: ChartProps): import('react').JSX.Element;
8
+ /** Line (or area) chart; large series are decimated to the pixel columns */
9
+ export declare function LineChart(props: LineChartProps): import('react').JSX.Element;
10
+ /** Bar chart: grouped side by side, or stacked */
11
+ export declare function BarChart(props: BarChartProps): import('react').JSX.Element;
12
+ /** Scatter chart: zooms on both axes; large point sets are merged per cell */
13
+ export declare function ScatterChart(props: ScatterChartProps): import('react').JSX.Element;
14
+ /**
15
+ * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted
16
+ * quadrants with titles, dividers, and labelled dots placed without
17
+ * overlapping labels. Dots can be dragged to another quadrant.
18
+ */
19
+ export declare function QuadrantChart(props: QuadrantChartProps): import('react').JSX.Element;
@@ -0,0 +1,173 @@
1
+ import { part as e } from "../../internal/parts.js";
2
+ import { barSeries as t, lineSeries as n, quadrantChartOptions as r, quadrantOf as i, scatterSeries as a } from "../../charts/src/engine/presets.js";
3
+ import "../../charts/src/canvas.js";
4
+ import { ChartBase as o, engineOptions as s } from "./ChartBase.js";
5
+ import { useMemo as c } from "react";
6
+ import { View as l } from "react-native";
7
+ import { jsx as u } from "react/jsx-runtime";
8
+ //#region src/components/Chart/charts.tsx
9
+ function d(e, t) {
10
+ let { xAxis: n, yAxis: r, legend: i, tooltip: a, crosshair: o, annotations: l, interaction: u, padding: d, palette: f, ariaLabel: p } = e;
11
+ return c(() => s({
12
+ series: t,
13
+ xAxis: n,
14
+ yAxis: r,
15
+ legend: i,
16
+ tooltip: a,
17
+ crosshair: o,
18
+ annotations: l,
19
+ interaction: u,
20
+ padding: d,
21
+ palette: f,
22
+ ariaLabel: p
23
+ }), [
24
+ t,
25
+ n,
26
+ r,
27
+ i,
28
+ a,
29
+ o,
30
+ l,
31
+ u,
32
+ d,
33
+ f,
34
+ p
35
+ ]);
36
+ }
37
+ var f = (e) => ({
38
+ height: e.height,
39
+ width: e.width,
40
+ style: e.style,
41
+ testID: e.testID,
42
+ handleRef: e.ref,
43
+ onHover: e.onHover,
44
+ onPointClick: e.onPointClick,
45
+ onPlotClick: e.onPlotClick,
46
+ onZoom: e.onZoom,
47
+ renderTooltip: e.renderTooltip
48
+ });
49
+ function p(e) {
50
+ let t = d(e, e.series);
51
+ return /* @__PURE__ */ u(o, {
52
+ options: t,
53
+ ...f(e)
54
+ });
55
+ }
56
+ function m(e) {
57
+ let { series: t, area: r = !1 } = e, i = d(e, c(() => n(t, r), [t, r]));
58
+ return /* @__PURE__ */ u(o, {
59
+ options: i,
60
+ ...f(e)
61
+ });
62
+ }
63
+ function h(e) {
64
+ let { series: n, stacked: r = !1 } = e, i = d(e, c(() => t(n, r), [n, r]));
65
+ return /* @__PURE__ */ u(o, {
66
+ options: i,
67
+ ...f(e)
68
+ });
69
+ }
70
+ function g(e) {
71
+ let { series: t } = e, n = d(e, c(() => a(t), [t]));
72
+ return /* @__PURE__ */ u(o, {
73
+ options: n,
74
+ ...f(e)
75
+ });
76
+ }
77
+ var _ = [
78
+ "topLeft",
79
+ "topRight",
80
+ "bottomLeft",
81
+ "bottomRight"
82
+ ], v = [];
83
+ function y(t) {
84
+ let { points: n, xDomain: a, yDomain: s, xSplit: p, ySplit: m, quadrants: h, xLabel: g, yLabel: y, axisLabels: b, showTicks: x, reverseX: S, showLabels: C, pointSize: w, name: T, draggable: E, onPointClick: D, onPointDrop: O, onQuadrantClick: k, renderTooltip: A, quadrantContent: j } = t, M = d(t, v), N = E ?? !!O, P = c(() => r({
85
+ points: n,
86
+ xDomain: a,
87
+ yDomain: s,
88
+ xSplit: p,
89
+ ySplit: m,
90
+ quadrants: h,
91
+ xLabel: g,
92
+ yLabel: y,
93
+ axisLabels: b,
94
+ showTicks: x,
95
+ reverseX: S,
96
+ showLabels: C,
97
+ pointSize: w,
98
+ name: T,
99
+ draggable: N
100
+ }, M), [
101
+ n,
102
+ a,
103
+ s,
104
+ p,
105
+ m,
106
+ h,
107
+ g,
108
+ y,
109
+ b,
110
+ x,
111
+ S,
112
+ C,
113
+ w,
114
+ T,
115
+ N,
116
+ M
117
+ ]), F = {
118
+ xDomain: a,
119
+ yDomain: s,
120
+ xSplit: p,
121
+ ySplit: m,
122
+ reverseX: S
123
+ }, I = j ? (t) => {
124
+ let [n, r] = a ?? [0, 10], [i, o] = s ?? [0, 10], c = p ?? (n + r) / 2, d = m ?? (i + o) / 2, f = (c - n) / (r - n || 1), h = (d - i) / (o - i || 1), g = t.width * (S ? 1 - f : f), v = t.height * (1 - h);
125
+ return _.map((n) => {
126
+ let r = j[n];
127
+ if (r == null || r === !1) return null;
128
+ let i = n.endsWith("Left"), a = n.startsWith("top");
129
+ return /* @__PURE__ */ u(l, {
130
+ pointerEvents: "box-none",
131
+ style: {
132
+ position: "absolute",
133
+ left: i ? 0 : g,
134
+ top: a ? 0 : v,
135
+ width: i ? g : t.width - g,
136
+ height: a ? v : t.height - v
137
+ },
138
+ ...e("chart", "quadrant", { corner: n }),
139
+ children: r
140
+ }, n);
141
+ });
142
+ } : void 0;
143
+ return /* @__PURE__ */ u(o, {
144
+ options: P,
145
+ ...f({
146
+ ...t,
147
+ onPointClick: void 0,
148
+ renderTooltip: void 0
149
+ }),
150
+ overlay: I,
151
+ onPointClick: D ? (e) => {
152
+ let t = e.items[0]?.index;
153
+ t !== void 0 && n[t] && D(n[t], t);
154
+ } : void 0,
155
+ onPlotClick: k ? (e) => k(i(F, e.x, e.y), e) : void 0,
156
+ onDrop: O ? (e) => {
157
+ let t = e.item.index;
158
+ n[t] && O(n[t], t, {
159
+ x: e.x,
160
+ y: e.y,
161
+ quadrant: i(F, e.x, e.y)
162
+ });
163
+ } : void 0,
164
+ renderTooltip: A ? (e) => {
165
+ let t = e.items[0]?.index;
166
+ return t !== void 0 && n[t] ? A(n[t], t) : null;
167
+ } : void 0
168
+ });
169
+ }
170
+ //#endregion
171
+ export { h as BarChart, p as Chart, m as LineChart, y as QuadrantChart, g as ScatterChart };
172
+
173
+ //# sourceMappingURL=charts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charts.js","names":["useEngineOptions","props","useMemo","engineOptions","series","xAxis","yAxis","legend","tooltip","crosshair","annotations","interaction","padding","palette","ariaLabel","frameProps","Chart","options","ChartBase","LineChart","input","lineSeries","area","BarChart","barSeries","stacked","ScatterChart","scatterSeries","CORNERS","NO_SERIES","QuadrantChart","base","dragPoints","draggable","onPointDrop","quadrantChartOptions","points","xDomain","yDomain","xSplit","ySplit","quadrants","xLabel","yLabel","axisLabels","showTicks","reverseX","showLabels","pointSize","name","geometry","overlay","quadrantContent","x0","x1","y0","y1","xs","ys","fx","fy","sx","plot","sy","content","corner","left","top","View","part","onPointClick","index","event","onQuadrantClick","quadrantOf","at","renderTooltip"],"sources":["../../../../../native/src/components/Chart/charts.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { View } from \"react-native\";\nimport {\n barSeries,\n lineSeries,\n quadrantChartOptions,\n quadrantOf,\n scatterSeries,\n type ChartHoverEvent,\n type ChartOptions,\n type ChartRect,\n type ChartSeries,\n type QuadrantCorner,\n} from \"@minerva/charts/canvas\";\nimport { part } from \"../../internal/parts\";\nimport { ChartBase, engineOptions } from \"./ChartBase\";\nimport type {\n BarChartProps,\n ChartCommonProps,\n ChartProps,\n LineChartProps,\n QuadrantChartProps,\n ScatterChartProps,\n} from \"./types\";\n\n/** Engine options of the common props, kept while the props are the same */\nfunction useEngineOptions(\n props: Omit<\n ChartCommonProps,\n \"onPointClick\" | \"onPlotClick\" | \"renderTooltip\"\n >,\n series: readonly ChartSeries[],\n): ChartOptions {\n const {\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n } = props;\n return useMemo(\n () =>\n engineOptions({\n series,\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n }),\n [\n series,\n xAxis,\n yAxis,\n legend,\n tooltip,\n crosshair,\n annotations,\n interaction,\n padding,\n palette,\n ariaLabel,\n ],\n );\n}\n\nconst frameProps = (props: ChartCommonProps) => ({\n height: props.height,\n width: props.width,\n style: props.style,\n testID: props.testID,\n handleRef: props.ref,\n onHover: props.onHover,\n onPointClick: props.onPointClick,\n onPlotClick: props.onPlotClick,\n onZoom: props.onZoom,\n renderTooltip: props.renderTooltip,\n});\n\n/**\n * Chart mixing line, area, bar and scatter series, drawn with views:\n * tap for the tooltip, pinch to zoom, drag to pan, double tap to reset.\n * Themed by the closest `MinervaProvider` (light / dark).\n */\nexport function Chart(props: ChartProps) {\n const options = useEngineOptions(props, props.series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\n/** Line (or area) chart; large series are decimated to the pixel columns */\nexport function LineChart(props: LineChartProps) {\n const { series: input, area = false } = props;\n const series = useMemo(() => lineSeries(input, area), [input, area]);\n const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\n/** Bar chart: grouped side by side, or stacked */\nexport function BarChart(props: BarChartProps) {\n const { series: input, stacked = false } = props;\n const series = useMemo(() => barSeries(input, stacked), [input, stacked]);\n const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\n/** Scatter chart: zooms on both axes; large point sets are merged per cell */\nexport function ScatterChart(props: ScatterChartProps) {\n const { series: input } = props;\n const series = useMemo(() => scatterSeries(input), [input]);\n const options = useEngineOptions(props, series);\n return <ChartBase options={options} {...frameProps(props)} />;\n}\n\nconst CORNERS: QuadrantCorner[] = [\n \"topLeft\",\n \"topRight\",\n \"bottomLeft\",\n \"bottomRight\",\n];\n\nconst NO_SERIES: readonly ChartSeries[] = [];\n\n/**\n * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted\n * quadrants with titles, dividers, and labelled dots placed without\n * overlapping labels. Dots can be dragged to another quadrant.\n */\nexport function QuadrantChart(props: QuadrantChartProps) {\n const {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable,\n onPointClick,\n onPointDrop,\n onQuadrantClick,\n renderTooltip,\n quadrantContent,\n } = props;\n const base = useEngineOptions(props, NO_SERIES);\n const dragPoints = draggable ?? !!onPointDrop;\n const options = useMemo(\n () =>\n quadrantChartOptions(\n {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable: dragPoints,\n },\n base,\n ),\n [\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n dragPoints,\n base,\n ],\n );\n const geometry = { xDomain, yDomain, xSplit, ySplit, reverseX };\n\n const overlay = quadrantContent\n ? (plot: ChartRect) => {\n const [x0, x1] = xDomain ?? [0, 10];\n const [y0, y1] = yDomain ?? [0, 10];\n const xs = xSplit ?? (x0 + x1) / 2;\n const ys = ySplit ?? (y0 + y1) / 2;\n const fx = (xs - x0) / (x1 - x0 || 1);\n const fy = (ys - y0) / (y1 - y0 || 1);\n // split point relative to the plot area\n const sx = plot.width * (reverseX ? 1 - fx : fx);\n const sy = plot.height * (1 - fy);\n return CORNERS.map((corner) => {\n const content = quadrantContent[corner];\n if (content === undefined || content === null || content === false)\n return null;\n const left = corner.endsWith(\"Left\");\n const top = corner.startsWith(\"top\");\n return (\n <View\n key={corner}\n pointerEvents=\"box-none\"\n style={{\n position: \"absolute\",\n left: left ? 0 : sx,\n top: top ? 0 : sy,\n width: left ? sx : plot.width - sx,\n height: top ? sy : plot.height - sy,\n }}\n {...part(\"chart\", \"quadrant\", { corner })}\n >\n {content}\n </View>\n );\n });\n }\n : undefined;\n\n return (\n <ChartBase\n options={options}\n {...frameProps({\n ...props,\n onPointClick: undefined,\n renderTooltip: undefined,\n })}\n overlay={overlay}\n onPointClick={\n onPointClick\n ? (event: ChartHoverEvent) => {\n const index = event.items[0]?.index;\n if (index !== undefined && points[index])\n onPointClick(points[index], index);\n }\n : undefined\n }\n onPlotClick={\n onQuadrantClick\n ? (at) => onQuadrantClick(quadrantOf(geometry, at.x, at.y), at)\n : undefined\n }\n onDrop={\n onPointDrop\n ? (event) => {\n const index = event.item.index;\n if (!points[index]) return;\n onPointDrop(points[index], index, {\n x: event.x,\n y: event.y,\n quadrant: quadrantOf(geometry, event.x, event.y),\n });\n }\n : undefined\n }\n renderTooltip={\n renderTooltip\n ? (event) => {\n const index = event.items[0]?.index;\n return index !== undefined && points[index]\n ? renderTooltip(points[index], index)\n : null;\n }\n : undefined\n }\n />\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ const e=require("./charts.cjs");exports.BarChart=e.BarChart,exports.Chart=e.Chart,exports.LineChart=e.LineChart,exports.QuadrantChart=e.QuadrantChart,exports.ScatterChart=e.ScatterChart;
@@ -0,0 +1,2 @@
1
+ export { BarChart, Chart, LineChart, QuadrantChart, ScatterChart, } from './charts.cjs';
2
+ export type * from './types.cjs';
@@ -0,0 +1,2 @@
1
+ export { BarChart, Chart, LineChart, QuadrantChart, ScatterChart, } from './charts.js';
2
+ export type * from './types.js';
@@ -0,0 +1,2 @@
1
+ import { BarChart as e, Chart as t, LineChart as n, QuadrantChart as r, ScatterChart as i } from "./charts.js";
2
+ export { e as BarChart, t as Chart, n as LineChart, r as QuadrantChart, i as ScatterChart };
@@ -0,0 +1,2 @@
1
+ var e=/^\s*(?:(\d{3}|bold|normal)\s+)?([\d.]+)px/,t=e=>e>=4352&&e<=4447||e>=11904&&e<=42191||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65072&&e<=65103||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=126976,n=new Set(" il.,:;'|!Ijtfr()[]`"),r=new Set(`MWmw@%`),i=e=>t(e.codePointAt(0)??0)?1:n.has(e)?.3:r.has(e)?.82:e>=`0`&&e<=`9`?.56:e>=`A`&&e<=`Z`?.66:.55;function a(t,n){let r=e.exec(n),a=r?.[1],o=a===`bold`?700:a&&a!==`normal`?+a:400,s=r?Number(r[2]):11,c=0;for(let e of t)c+=i(e);return c*s*(o>=600?1.07:o>=500?1.03:1)}exports.measureChartText=a;
2
+ //# sourceMappingURL=measure.cjs.map