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,189 @@
1
+ import { linearTicks as e, tickStep as t } from "./scale.js";
2
+ //#region ../charts/src/engine/time.ts
3
+ var n = 1e3, r = 60 * n, i = 60 * r, a = 24 * i, o = 30 * a, s = 365 * a, c = [
4
+ {
5
+ unit: "second",
6
+ step: 1,
7
+ ms: n
8
+ },
9
+ {
10
+ unit: "second",
11
+ step: 5,
12
+ ms: 5 * n
13
+ },
14
+ {
15
+ unit: "second",
16
+ step: 15,
17
+ ms: 15 * n
18
+ },
19
+ {
20
+ unit: "second",
21
+ step: 30,
22
+ ms: 30 * n
23
+ },
24
+ {
25
+ unit: "minute",
26
+ step: 1,
27
+ ms: r
28
+ },
29
+ {
30
+ unit: "minute",
31
+ step: 5,
32
+ ms: 5 * r
33
+ },
34
+ {
35
+ unit: "minute",
36
+ step: 15,
37
+ ms: 15 * r
38
+ },
39
+ {
40
+ unit: "minute",
41
+ step: 30,
42
+ ms: 30 * r
43
+ },
44
+ {
45
+ unit: "hour",
46
+ step: 1,
47
+ ms: i
48
+ },
49
+ {
50
+ unit: "hour",
51
+ step: 3,
52
+ ms: 3 * i
53
+ },
54
+ {
55
+ unit: "hour",
56
+ step: 6,
57
+ ms: 6 * i
58
+ },
59
+ {
60
+ unit: "hour",
61
+ step: 12,
62
+ ms: 12 * i
63
+ },
64
+ {
65
+ unit: "day",
66
+ step: 1,
67
+ ms: a
68
+ },
69
+ {
70
+ unit: "day",
71
+ step: 2,
72
+ ms: 2 * a
73
+ },
74
+ {
75
+ unit: "day",
76
+ step: 7,
77
+ ms: 7 * a
78
+ },
79
+ {
80
+ unit: "month",
81
+ step: 1,
82
+ ms: o
83
+ },
84
+ {
85
+ unit: "month",
86
+ step: 3,
87
+ ms: 3 * o
88
+ },
89
+ {
90
+ unit: "month",
91
+ step: 6,
92
+ ms: 6 * o
93
+ }
94
+ ], l = (e, t = 2) => String(e).padStart(t, "0"), u = (e, r) => {
95
+ let i = e / Math.max(1, r);
96
+ if (i < n * .75) return {
97
+ unit: "millisecond",
98
+ step: t(0, e, r),
99
+ ms: 1
100
+ };
101
+ for (let e of c) if (e.ms >= i * .75) return e;
102
+ let a = Math.max(1, t(0, e / s, r));
103
+ return {
104
+ unit: "year",
105
+ step: Math.round(a),
106
+ ms: Math.round(a) * s
107
+ };
108
+ }, d = (e, { unit: t, step: n }) => {
109
+ let r = new Date(e);
110
+ switch (t) {
111
+ case "second":
112
+ r.setMilliseconds(0), r.setSeconds(r.getSeconds() - r.getSeconds() % n);
113
+ break;
114
+ case "minute":
115
+ r.setSeconds(0, 0), r.setMinutes(r.getMinutes() - r.getMinutes() % n);
116
+ break;
117
+ case "hour":
118
+ r.setMinutes(0, 0, 0), r.setHours(r.getHours() - r.getHours() % n);
119
+ break;
120
+ case "day":
121
+ r.setHours(0, 0, 0, 0), n === 7 && r.setDate(r.getDate() - (r.getDay() + 6) % 7);
122
+ break;
123
+ case "month":
124
+ r.setHours(0, 0, 0, 0), r.setDate(1), r.setMonth(r.getMonth() - r.getMonth() % n);
125
+ break;
126
+ case "year": r.setHours(0, 0, 0, 0), r.setMonth(0, 1), r.setFullYear(r.getFullYear() - r.getFullYear() % n);
127
+ }
128
+ return r;
129
+ }, f = (e, { unit: t, step: n }) => {
130
+ switch (t) {
131
+ case "second":
132
+ e.setSeconds(e.getSeconds() + n);
133
+ break;
134
+ case "minute":
135
+ e.setMinutes(e.getMinutes() + n);
136
+ break;
137
+ case "hour":
138
+ e.setHours(e.getHours() + n);
139
+ break;
140
+ case "day":
141
+ e.setDate(e.getDate() + n);
142
+ break;
143
+ case "month":
144
+ e.setMonth(e.getMonth() + n);
145
+ break;
146
+ case "year": e.setFullYear(e.getFullYear() + n);
147
+ }
148
+ }, p = (t, n, r) => {
149
+ t > n && ([t, n] = [n, t]);
150
+ let i = u(n - t, r);
151
+ if (i.unit === "millisecond") return {
152
+ values: e(t, n, r),
153
+ unit: "millisecond",
154
+ format: (e) => _(e, "millisecond")
155
+ };
156
+ let a = [], o = d(t, i);
157
+ for (; o.getTime() < t;) f(o, i);
158
+ for (; o.getTime() <= n && a.length < 500;) a.push(o.getTime()), f(o, i);
159
+ let { unit: s } = i;
160
+ return {
161
+ values: a,
162
+ unit: s,
163
+ format: (e) => g(e, s)
164
+ };
165
+ }, m = (e) => `${e.getFullYear()}-${l(e.getMonth() + 1)}-${l(e.getDate())}`, h = (e) => `${l(e.getHours())}:${l(e.getMinutes())}`, g = (e, t) => {
166
+ let n = new Date(e), r = n.getHours() === 0 && n.getMinutes() === 0 && n.getSeconds() === 0;
167
+ switch (t) {
168
+ case "second": return `${h(n)}:${l(n.getSeconds())}`;
169
+ case "minute":
170
+ case "hour": return r ? `${l(n.getMonth() + 1)}-${l(n.getDate())}` : h(n);
171
+ case "day": return n.getMonth() === 0 && n.getDate() === 1 ? String(n.getFullYear()) : `${l(n.getMonth() + 1)}-${l(n.getDate())}`;
172
+ case "month": return n.getMonth() === 0 ? String(n.getFullYear()) : `${n.getFullYear()}-${l(n.getMonth() + 1)}`;
173
+ default: return String(n.getFullYear());
174
+ }
175
+ }, _ = (e, t = "minute") => {
176
+ let n = new Date(e);
177
+ if (Number.isNaN(n.getTime())) return "–";
178
+ switch (t) {
179
+ case "millisecond": return `${m(n)} ${h(n)}:${l(n.getSeconds())}.${l(n.getMilliseconds(), 3)}`;
180
+ case "second": return `${m(n)} ${h(n)}:${l(n.getSeconds())}`;
181
+ case "minute":
182
+ case "hour": return `${m(n)} ${h(n)}`;
183
+ default: return m(n);
184
+ }
185
+ };
186
+ //#endregion
187
+ export { _ as formatTime, p as timeTicks };
188
+
189
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","names":["SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","INTERVALS","pad","n","width","chooseInterval","target","span","count","tickStep","interval","years","floorTo","d","t","unit","step","advance","timeTicks","min","max","linearTicks","formatTime","v","values","formatTick","ymd","hm","value","midnight"],"sources":["../../../../../../charts/src/engine/time.ts"],"sourcesContent":["// Ticks and labels of time axes (timestamps in ms, local time).\n\nimport { linearTicks, tickStep } from \"./scale\";\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\nexport type TimeUnit =\n \"millisecond\" | \"second\" | \"minute\" | \"hour\" | \"day\" | \"month\" | \"year\";\n\ninterface Interval {\n unit: TimeUnit;\n step: number;\n /** Approximate duration (ms) */\n ms: number;\n}\n\nconst INTERVALS: Interval[] = [\n { unit: \"second\", step: 1, ms: SECOND },\n { unit: \"second\", step: 5, ms: 5 * SECOND },\n { unit: \"second\", step: 15, ms: 15 * SECOND },\n { unit: \"second\", step: 30, ms: 30 * SECOND },\n { unit: \"minute\", step: 1, ms: MINUTE },\n { unit: \"minute\", step: 5, ms: 5 * MINUTE },\n { unit: \"minute\", step: 15, ms: 15 * MINUTE },\n { unit: \"minute\", step: 30, ms: 30 * MINUTE },\n { unit: \"hour\", step: 1, ms: HOUR },\n { unit: \"hour\", step: 3, ms: 3 * HOUR },\n { unit: \"hour\", step: 6, ms: 6 * HOUR },\n { unit: \"hour\", step: 12, ms: 12 * HOUR },\n { unit: \"day\", step: 1, ms: DAY },\n { unit: \"day\", step: 2, ms: 2 * DAY },\n { unit: \"day\", step: 7, ms: 7 * DAY },\n { unit: \"month\", step: 1, ms: MONTH },\n { unit: \"month\", step: 3, ms: 3 * MONTH },\n { unit: \"month\", step: 6, ms: 6 * MONTH },\n];\n\nconst pad = (n: number, width = 2) => String(n).padStart(width, \"0\");\n\nconst chooseInterval = (span: number, count: number): Interval => {\n const target = span / Math.max(1, count);\n if (target < SECOND * 0.75) {\n return { unit: \"millisecond\", step: tickStep(0, span, count), ms: 1 };\n }\n for (const interval of INTERVALS) {\n if (interval.ms >= target * 0.75) return interval;\n }\n const years = Math.max(1, tickStep(0, span / YEAR, count));\n return {\n unit: \"year\",\n step: Math.round(years),\n ms: Math.round(years) * YEAR,\n };\n};\n\n/** Start of the tick sequence: `t` floored to the unit, aligned on the step */\nconst floorTo = (t: number, { unit, step }: Interval): Date => {\n const d = new Date(t);\n switch (unit) {\n case \"second\":\n d.setMilliseconds(0);\n d.setSeconds(d.getSeconds() - (d.getSeconds() % step));\n break;\n case \"minute\":\n d.setSeconds(0, 0);\n d.setMinutes(d.getMinutes() - (d.getMinutes() % step));\n break;\n case \"hour\":\n d.setMinutes(0, 0, 0);\n d.setHours(d.getHours() - (d.getHours() % step));\n break;\n case \"day\":\n d.setHours(0, 0, 0, 0);\n // weeks start on Monday\n if (step === 7) d.setDate(d.getDate() - ((d.getDay() + 6) % 7));\n break;\n case \"month\":\n d.setHours(0, 0, 0, 0);\n d.setDate(1);\n d.setMonth(d.getMonth() - (d.getMonth() % step));\n break;\n case \"year\":\n d.setHours(0, 0, 0, 0);\n d.setMonth(0, 1);\n d.setFullYear(d.getFullYear() - (d.getFullYear() % step));\n break;\n default:\n break;\n }\n return d;\n};\n\nconst advance = (d: Date, { unit, step }: Interval) => {\n switch (unit) {\n case \"second\":\n d.setSeconds(d.getSeconds() + step);\n break;\n case \"minute\":\n d.setMinutes(d.getMinutes() + step);\n break;\n case \"hour\":\n d.setHours(d.getHours() + step);\n break;\n case \"day\":\n d.setDate(d.getDate() + step);\n break;\n case \"month\":\n d.setMonth(d.getMonth() + step);\n break;\n case \"year\":\n d.setFullYear(d.getFullYear() + step);\n break;\n default:\n break;\n }\n};\n\nexport interface TimeTicks {\n values: number[];\n unit: TimeUnit;\n format: (value: number) => string;\n}\n\n/** Calendar-aligned ticks between two timestamps */\nexport const timeTicks = (\n min: number,\n max: number,\n count: number,\n): TimeTicks => {\n if (min > max) [min, max] = [max, min];\n const interval = chooseInterval(max - min, count);\n if (interval.unit === \"millisecond\") {\n return {\n values: linearTicks(min, max, count),\n unit: \"millisecond\",\n format: (v) => formatTime(v, \"millisecond\"),\n };\n }\n const values: number[] = [];\n const d = floorTo(min, interval);\n while (d.getTime() < min) advance(d, interval);\n while (d.getTime() <= max && values.length < 500) {\n values.push(d.getTime());\n advance(d, interval);\n }\n const { unit } = interval;\n return { values, unit, format: (v) => formatTick(v, unit) };\n};\n\nconst ymd = (d: Date) =>\n `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\nconst hm = (d: Date) => `${pad(d.getHours())}:${pad(d.getMinutes())}`;\n\n/** Short tick label; day boundaries show the date, year boundaries the year */\nconst formatTick = (value: number, unit: TimeUnit): string => {\n const d = new Date(value);\n const midnight =\n d.getHours() === 0 && d.getMinutes() === 0 && d.getSeconds() === 0;\n switch (unit) {\n case \"second\":\n return `${hm(d)}:${pad(d.getSeconds())}`;\n case \"minute\":\n case \"hour\":\n return midnight ? `${pad(d.getMonth() + 1)}-${pad(d.getDate())}` : hm(d);\n case \"day\":\n return d.getMonth() === 0 && d.getDate() === 1\n ? String(d.getFullYear())\n : `${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n case \"month\":\n return d.getMonth() === 0\n ? String(d.getFullYear())\n : `${d.getFullYear()}-${pad(d.getMonth() + 1)}`;\n default:\n return String(d.getFullYear());\n }\n};\n\n/** Full label (tooltips): precision follows the unit of the ticks */\nexport const formatTime = (\n value: number,\n unit: TimeUnit = \"minute\",\n): string => {\n const d = new Date(value);\n if (Number.isNaN(d.getTime())) return \"–\";\n switch (unit) {\n case \"millisecond\":\n return `${ymd(d)} ${hm(d)}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(), 3)}`;\n case \"second\":\n return `${ymd(d)} ${hm(d)}:${pad(d.getSeconds())}`;\n case \"minute\":\n case \"hour\":\n return `${ymd(d)} ${hm(d)}`;\n default:\n return ymd(d);\n }\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e=(e,t,n)=>{let r=t[1]-t[0],i=Math.min(Math.max(e[1]-e[0],n),r),a=(e[0]+e[1])/2-i/2,o=a+i;return a<t[0]&&(a=t[0],o=a+i),o>t[1]&&(o=t[1],a=o-i),[a,o]},t=(e,t,n)=>[t-(t-e[0])*n,t+(e[1]-t)*n],n=(e,t)=>[e[0]+t,e[1]+t],r=(e,t,n=1e-9)=>{let r=Math.max(Math.abs(t[1]-t[0]),1e-300);return Math.abs(e[0]-t[0])<=r*n&&Math.abs(e[1]-t[1])<=r*n};exports.clampRange=e,exports.panRange=n,exports.sameRange=r,exports.zoomRange=t;
2
+ //# sourceMappingURL=viewport.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewport.cjs","names":["clampRange","maxSpan","bounds","span","range","minSpan","b","zoomRange","anchor","factor","panRange","delta","sameRange","a","epsilon"],"sources":["../../../../../../charts/src/engine/viewport.ts"],"sourcesContent":["// Zoom / pan math on [min, max] ranges.\n\nexport type Range = [number, number];\n\n/**\n * Keeps a range inside `bounds` with a span between `minSpan` and the\n * span of the bounds (shifts it back instead of shrinking it).\n */\nexport const clampRange = (\n range: Range,\n bounds: Range,\n minSpan: number,\n): Range => {\n const maxSpan = bounds[1] - bounds[0];\n const span = Math.min(Math.max(range[1] - range[0], minSpan), maxSpan);\n const center = (range[0] + range[1]) / 2;\n let a = center - span / 2;\n let b = a + span;\n if (a < bounds[0]) {\n a = bounds[0];\n b = a + span;\n }\n if (b > bounds[1]) {\n b = bounds[1];\n a = b - span;\n }\n return [a, b];\n};\n\n/** Scales a range around `anchor` (factor < 1 zooms in) */\nexport const zoomRange = (\n range: Range,\n anchor: number,\n factor: number,\n): Range => [\n anchor - (anchor - range[0]) * factor,\n anchor + (range[1] - anchor) * factor,\n];\n\nexport const panRange = (range: Range, delta: number): Range => [\n range[0] + delta,\n range[1] + delta,\n];\n\nexport const sameRange = (a: Range, b: Range, epsilon = 1e-9): boolean => {\n const span = Math.max(Math.abs(b[1] - b[0]), 1e-300);\n return (\n Math.abs(a[0] - b[0]) <= span * epsilon &&\n Math.abs(a[1] - b[1]) <= span * epsilon\n );\n};\n\n/** Wheel delta -> zoom factor (trackpad pinches arrive as ctrl + small deltas) */\nexport const wheelFactor = (\n deltaY: number,\n deltaMode: number,\n pinch: boolean,\n): number => {\n const pixels =\n deltaMode === 1 ? deltaY * 16 : deltaMode === 2 ? deltaY * 400 : deltaY;\n const speed = pinch ? 0.01 : 0.0025;\n return Math.exp(Math.max(-1, Math.min(1, pixels * speed)));\n};\n"],"mappings":"AAQA,IAAaA,GACX,EACA,EACA,IACU,CACV,IAAMC,EAAUC,EAAO,GAAKA,EAAO,GAC7BC,EAAO,KAAK,IAAI,KAAK,IAAIC,EAAM,GAAKA,EAAM,GAAIC,CAAO,EAAGJ,CAAO,EAEjE,GADYG,EAAM,GAAKA,EAAM,IAAM,EACtBD,EAAO,EACpBG,EAAI,EAAIH,EASZ,OARI,EAAID,EAAO,KACb,EAAIA,EAAO,GACX,EAAI,EAAIC,GAENG,EAAIJ,EAAO,KACb,EAAIA,EAAO,GACX,EAAII,EAAIH,GAEH,CAAC,EAAGG,CAAC,CACd,EAGaC,GACX,EACA,EACA,IACU,CACVC,GAAUA,EAASJ,EAAM,IAAMK,EAC/BD,GAAUJ,EAAM,GAAKI,GAAUC,CACjC,EAEaC,GAAY,EAAc,IAAyB,CAC9DN,EAAM,GAAKO,EACXP,EAAM,GAAKO,CACb,EAEaC,GAAa,EAAU,EAAU,EAAU,OAAkB,CACxE,IAAMT,EAAO,KAAK,IAAI,KAAK,IAAIG,EAAE,GAAKA,EAAE,EAAE,EAAG,MAAM,EACnD,OACE,KAAK,IAAIO,EAAE,GAAKP,EAAE,EAAE,GAAKH,EAAOW,GAChC,KAAK,IAAID,EAAE,GAAKP,EAAE,EAAE,GAAKH,EAAOW,CAEpC"}
@@ -0,0 +1,12 @@
1
+ //#region ../charts/src/engine/viewport.ts
2
+ var e = (e, t, n) => {
3
+ let r = t[1] - t[0], i = Math.min(Math.max(e[1] - e[0], n), r), a = (e[0] + e[1]) / 2 - i / 2, o = a + i;
4
+ return a < t[0] && (a = t[0], o = a + i), o > t[1] && (o = t[1], a = o - i), [a, o];
5
+ }, t = (e, t, n) => [t - (t - e[0]) * n, t + (e[1] - t) * n], n = (e, t) => [e[0] + t, e[1] + t], r = (e, t, n = 1e-9) => {
6
+ let r = Math.max(Math.abs(t[1] - t[0]), 1e-300);
7
+ return Math.abs(e[0] - t[0]) <= r * n && Math.abs(e[1] - t[1]) <= r * n;
8
+ };
9
+ //#endregion
10
+ export { e as clampRange, n as panRange, r as sameRange, t as zoomRange };
11
+
12
+ //# sourceMappingURL=viewport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewport.js","names":["clampRange","maxSpan","bounds","span","range","minSpan","b","zoomRange","anchor","factor","panRange","delta","sameRange","a","epsilon"],"sources":["../../../../../../charts/src/engine/viewport.ts"],"sourcesContent":["// Zoom / pan math on [min, max] ranges.\n\nexport type Range = [number, number];\n\n/**\n * Keeps a range inside `bounds` with a span between `minSpan` and the\n * span of the bounds (shifts it back instead of shrinking it).\n */\nexport const clampRange = (\n range: Range,\n bounds: Range,\n minSpan: number,\n): Range => {\n const maxSpan = bounds[1] - bounds[0];\n const span = Math.min(Math.max(range[1] - range[0], minSpan), maxSpan);\n const center = (range[0] + range[1]) / 2;\n let a = center - span / 2;\n let b = a + span;\n if (a < bounds[0]) {\n a = bounds[0];\n b = a + span;\n }\n if (b > bounds[1]) {\n b = bounds[1];\n a = b - span;\n }\n return [a, b];\n};\n\n/** Scales a range around `anchor` (factor < 1 zooms in) */\nexport const zoomRange = (\n range: Range,\n anchor: number,\n factor: number,\n): Range => [\n anchor - (anchor - range[0]) * factor,\n anchor + (range[1] - anchor) * factor,\n];\n\nexport const panRange = (range: Range, delta: number): Range => [\n range[0] + delta,\n range[1] + delta,\n];\n\nexport const sameRange = (a: Range, b: Range, epsilon = 1e-9): boolean => {\n const span = Math.max(Math.abs(b[1] - b[0]), 1e-300);\n return (\n Math.abs(a[0] - b[0]) <= span * epsilon &&\n Math.abs(a[1] - b[1]) <= span * epsilon\n );\n};\n\n/** Wheel delta -> zoom factor (trackpad pinches arrive as ctrl + small deltas) */\nexport const wheelFactor = (\n deltaY: number,\n deltaMode: number,\n pinch: boolean,\n): number => {\n const pixels =\n deltaMode === 1 ? deltaY * 16 : deltaMode === 2 ? deltaY * 400 : deltaY;\n const speed = pinch ? 0.01 : 0.0025;\n return Math.exp(Math.max(-1, Math.min(1, pixels * speed)));\n};\n"],"mappings":";AAQA,IAAaA,KACX,GACA,GACA,MACU;CACV,IAAMC,IAAUC,EAAO,KAAKA,EAAO,IAC7BC,IAAO,KAAK,IAAI,KAAK,IAAIC,EAAM,KAAKA,EAAM,IAAIC,CAAO,GAAGJ,CAAO,GAEjE,KADYG,EAAM,KAAKA,EAAM,MAAM,IACtBD,IAAO,GACpBG,IAAI,IAAIH;CASZ,OARI,IAAID,EAAO,OACb,IAAIA,EAAO,IACX,IAAI,IAAIC,IAENG,IAAIJ,EAAO,OACb,IAAIA,EAAO,IACX,IAAII,IAAIH,IAEH,CAAC,GAAGG,CAAC;AACd,GAGaC,KACX,GACA,GACA,MACU,CACVC,KAAUA,IAASJ,EAAM,MAAMK,GAC/BD,KAAUJ,EAAM,KAAKI,KAAUC,CACjC,GAEaC,KAAY,GAAc,MAAyB,CAC9DN,EAAM,KAAKO,GACXP,EAAM,KAAKO,CACb,GAEaC,KAAa,GAAU,GAAU,IAAU,SAAkB;CACxE,IAAMT,IAAO,KAAK,IAAI,KAAK,IAAIG,EAAE,KAAKA,EAAE,EAAE,GAAG,MAAM;CACnD,OACE,KAAK,IAAIO,EAAE,KAAKP,EAAE,EAAE,KAAKH,IAAOW,KAChC,KAAK,IAAID,EAAE,KAAKP,EAAE,EAAE,KAAKH,IAAOW;AAEpC"}
@@ -0,0 +1,2 @@
1
+ const e=require("../../theme/MinervaProvider.cjs"),t=require("../../internal/parts.cjs"),n=require("../../charts/src/engine/controller.cjs");require("../../charts/src/canvas.cjs");const r=require("./measure.cjs"),i=require("./scene.cjs"),a=require("./theme.cjs");let o=require("react"),s=require("react-native"),c=require("react/jsx-runtime");var l=e=>({series:e.series,xAxis:e.xAxis,yAxis:e.yAxis,legend:e.legend,tooltip:e.tooltip,crosshair:e.crosshair,annotations:e.annotations,interaction:e.interaction,padding:e.padding,palette:e.palette,ariaLabel:e.ariaLabel}),u={},d=(e,t)=>{let n=Number(e.identifier);return Number.isFinite(n)?n:t},f=e=>{if(typeof requestAnimationFrame==`function`){let t=requestAnimationFrame(e);return{cancel:()=>cancelAnimationFrame(t)}}let t=setTimeout(e,16);return{cancel:()=>clearTimeout(t)}};function p(e,t,a){let o=0,s=null,c=new Set,l=null,u={x:0,y:0},p=new Map,m=e=>typeof e.interaction==`object`&&!!e.interaction.dragPoints,h=m(e),g=!1,_=()=>{o++,c.forEach(e=>e())},v=()=>{s?.cancel(),s=null},y=n.createChartController({options:e,theme:t,measureText:r.measureChartText,onInvalidate:()=>{!s&&c.size&&(s=f(()=>{s=null,_()}))}});a&&y.setSize(a[0],a[1]);let b=e=>({x:e.pageX-u.x,y:e.pageY-u.y}),x=e=>{let t=e.nativeEvent;(t.touches?.length?t.touches:[t]).forEach((e,t)=>{let n=d(e,t),r=b(e),i=p.get(n);i?(i.x!==r.x||i.y!==r.y)&&(p.set(n,r),y.pointerMove(r.x,r.y,{id:n,touch:!0})):(p.set(n,r),y.pointerDown(r.x,r.y,{id:n,touch:!0}))}),p.size===1&&(S.anchor=[...p.values()][0])},S={controller:y,setOptions(e){h=m(e),y.setOptions(e)},subscribe(e){return c.add(e),()=>{c.delete(e),c.size||v()}},version:()=>o,commit(){v(),_()},layers(e,t){let{plot:n}=e.layout,{view:r}=e,a=[e.model,e.annotations,e.theme,e.width,e.height,r.x[0],r.x[1],r.y[0],r.y[1],n.x,n.y,n.width,n.height,t];return(!l||l.key.some((e,t)=>e!==a[t]))&&(l={key:a,node:i.drawStatic(e,t)}),l.node},anchor:null,touchStart(e){let t=e.nativeEvent;!p.size&&t.locationX!==void 0&&(u={x:t.pageX-t.locationX,y:t.pageY-(t.locationY??0)}),x(e),S.commit();let n=y.getPlotRect(),r=p.values().next().value;return g=h&&!!n&&!!r&&r.x>=n.x&&r.x<=n.x+n.width&&r.y>=n.y&&r.y<=n.y+n.height,S.holdsGesture()},touchAdd(e){x(e),S.commit()},touchMove:x,touchEnd(e){let t=e.nativeEvent,n=new Set((t.touches??[]).map((e,t)=>d(e,t))),r=t.changedTouches?.length?t.changedTouches:[t];for(let[e,t]of[...p]){if(n.has(e))continue;let i=r.find((t,n)=>d(t,n)===e),a=i?b(i):t;p.delete(e),p.size===0&&(S.anchor=a),y.pointerUp(a.x,a.y,{id:e,touch:!0})}S.commit()},touchCancel(){for(let e of p.keys())y.pointerCancel({id:e});p.clear(),S.commit()},holdsGesture(){if(p.size>1||g&&p.size>0)return!0;let e=y.getScene();if(!e)return!1;if(e.dragging)return!0;let{base:t}=e.model,n=y.getView();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]}};return S}function m({scene:e,anchor:n,children:r}){let[a,l]=(0,o.useState)(null),{width:u,height:d}=e,f=n.x+14,p=n.y;return a&&(f+a.width>u-4&&(f=n.x-14-a.width),f=Math.max(4,Math.min(f,u-a.width-4)),p=Math.max(4,Math.min(n.y-a.height/2,d-a.height-4))),(0,c.jsx)(s.View,{pointerEvents:`none`,...t.part(`chart`,`tooltip`,{custom:!0}),onLayout:e=>{let{width:t,height:n}=e.nativeEvent.layout;l(e=>e&&e.width===t&&e.height===n?e:{width:t,height:n})},style:[i.tooltipCard(e),{left:0,top:0,maxWidth:Math.max(0,u-8),padding:8,opacity:+!!a,transform:[{translateX:f},{translateY:p}]}],children:r})}function h({options:n,height:r=320,width:l=`100%`,style:d,testID:f,handleRef:h,renderTooltip:g,overlay:_,...v}){let{tokens:y,fonts:b}=e.useTheme(),x=b.sans,S=(0,o.useMemo)(()=>a.chartThemeInput(y),[y]),C=!!g&&n.tooltip!==!1,w=(0,o.useMemo)(()=>{if(!C)return n;let e=typeof n.tooltip==`object`?n.tooltip:{};return{...n,tooltip:{...e,render:()=>u}}},[n,C]),[T]=(0,o.useState)(()=>p(w,S,typeof l==`number`&&typeof r==`number`?[l,r]:null)),{controller:E}=T;(0,o.useSyncExternalStore)(T.subscribe,T.version,T.version);let D=(0,o.useRef)({options:w,theme:S});(0,o.useLayoutEffect)(()=>{let e=D.current;(e.theme!==S||e.options!==w)&&(e.theme!==S&&E.setTheme(S),e.options!==w&&T.setOptions(w),D.current={options:w,theme:S},T.commit())},[E,T,w,S]),(0,o.useLayoutEffect)(()=>{if(typeof l!=`number`||typeof r!=`number`)return;let e=E.getScene();e&&e.width===l&&e.height===r||(E.setSize(l,r),T.commit())},[E,T,l,r]);let O=(0,o.useRef)(v);(0,o.useLayoutEffect)(()=>{O.current=v}),(0,o.useEffect)(()=>{let e=O,t=[E.on(`hover`,t=>e.current.onHover?.(t)),E.on(`click`,t=>e.current.onPointClick?.(t)),E.on(`plotClick`,t=>e.current.onPlotClick?.(t)),E.on(`zoom`,t=>e.current.onZoom?.(t)),E.on(`drag`,t=>e.current.onDrag?.(t)),E.on(`drop`,t=>e.current.onDrop?.(t))];return()=>t.forEach(e=>e())},[E]),(0,o.useImperativeHandle)(h,()=>({resetZoom:()=>E.resetZoom(),getView:()=>E.getView(),setView:e=>E.setView(e),getPlotRect:()=>E.getPlotRect(),getController:()=>E}),[E]);let k=e=>{let{width:t,height:n}=e.nativeEvent.layout,r=E.getScene();r&&r.width===t&&r.height===n||(E.setSize(t,n),T.commit())},A=E.getScene(),j=null,M=A?.hover?.tooltip?A.hover.event:null;if(A&&M&&C&&g){let e=g(M),t=T.anchor??A.hover?.marks[0]??null;e!=null&&e!==!1&&t&&(j=(0,c.jsx)(m,{scene:A,anchor:t,children:e}))}return(0,c.jsxs)(s.View,{testID:f,onLayout:k,style:[{width:l,height:r},d],...t.part(`chart`,`root`),children:[(0,c.jsx)(s.View,{style:s.StyleSheet.absoluteFill,accessible:!0,accessibilityRole:`image`,accessibilityLabel:n.ariaLabel,onStartShouldSetResponder:()=>!0,onResponderTerminationRequest:()=>!T.holdsGesture(),onResponderGrant:T.touchStart,onResponderStart:T.touchAdd,onResponderMove:T.touchMove,onResponderEnd:T.touchEnd,onResponderRelease:T.touchEnd,onResponderTerminate:T.touchCancel,...t.part(`chart`,`surface`),children:(0,c.jsxs)(s.View,{pointerEvents:`none`,style:s.StyleSheet.absoluteFill,children:[A?T.layers(A,x):null,A?i.drawHover(A,x,C):null]})}),_&&A?(0,c.jsx)(s.View,{pointerEvents:`box-none`,style:{position:`absolute`,left:A.layout.plot.x,top:A.layout.plot.y,width:A.layout.plot.width,height:A.layout.plot.height},...t.part(`chart`,`overlay`),children:_(A.layout.plot)}):null,j]})}exports.ChartBase=h,exports.engineOptions=l;
2
+ //# sourceMappingURL=ChartBase.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartBase.cjs","names":["createChartController","measureChartText","drawStatic","useState","View","part","tooltipCard","useTheme","useMemo","chartThemeInput","useRef","StyleSheet","drawHover","require_MinervaProvider","require_parts","require_controller","require_measure","require_scene","require_theme","react","react_native","react_jsx_runtime","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","size","local","sync","n","event","i","p","previous","store","next","scene","key","view","plot","family","value","active","changed","last","touch","base","CustomTooltip","setSize","left","anchor","top","width","height","w","h","ChartBase","handlers","fonts","theme","tokens","customTooltip","renderTooltip","resolved","applied","current","handlersRef","offs","e","v","off","handleRef","onLayout","tooltip","content","style","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,29 @@
1
+ import { ReactNode, Ref } from 'react';
2
+ import { DimensionValue, StyleProp, ViewStyle } from 'react-native';
3
+ import { ChartDragEvent, ChartHoverEvent, ChartOptions, ChartPlotClickEvent, ChartRect, ChartView } from '../../../charts/canvas.cjs';
4
+ import { ChartCommonProps, ChartHandle } from './types.cjs';
5
+ interface Handlers {
6
+ onHover?: (event: ChartHoverEvent | null) => void;
7
+ onPointClick?: (event: ChartHoverEvent) => void;
8
+ onPlotClick?: (event: ChartPlotClickEvent) => void;
9
+ onZoom?: (view: ChartView) => void;
10
+ onDrag?: (event: ChartDragEvent) => void;
11
+ onDrop?: (event: ChartDragEvent) => void;
12
+ }
13
+ /** Engine options of the common props */
14
+ export declare const engineOptions: (props: Pick<ChartCommonProps, "xAxis" | "yAxis" | "legend" | "tooltip" | "crosshair" | "annotations" | "interaction" | "padding" | "palette" | "ariaLabel"> & Pick<ChartOptions, "series">) => ChartOptions;
15
+ interface ChartBaseProps extends Handlers {
16
+ options: ChartOptions;
17
+ height?: DimensionValue;
18
+ width?: DimensionValue;
19
+ style?: StyleProp<ViewStyle>;
20
+ testID?: string;
21
+ handleRef?: Ref<ChartHandle>;
22
+ /** React content of the tooltip (replaces the engine's content) */
23
+ renderTooltip?: (event: ChartHoverEvent) => ReactNode;
24
+ /** React content placed over the plot area, given the plot rectangle */
25
+ overlay?: (plot: ChartRect) => ReactNode;
26
+ }
27
+ /** Sizes the chart, forwards options / theme / touches to the controller and draws its scene */
28
+ export declare function ChartBase({ options, height, width, style, testID, handleRef, renderTooltip, overlay, ...handlers }: ChartBaseProps): import('react').JSX.Element;
29
+ export {};
@@ -0,0 +1,29 @@
1
+ import { ReactNode, Ref } from 'react';
2
+ import { DimensionValue, StyleProp, ViewStyle } from 'react-native';
3
+ import { ChartDragEvent, ChartHoverEvent, ChartOptions, ChartPlotClickEvent, ChartRect, ChartView } from '../../../charts/canvas.js';
4
+ import { ChartCommonProps, ChartHandle } from './types.js';
5
+ interface Handlers {
6
+ onHover?: (event: ChartHoverEvent | null) => void;
7
+ onPointClick?: (event: ChartHoverEvent) => void;
8
+ onPlotClick?: (event: ChartPlotClickEvent) => void;
9
+ onZoom?: (view: ChartView) => void;
10
+ onDrag?: (event: ChartDragEvent) => void;
11
+ onDrop?: (event: ChartDragEvent) => void;
12
+ }
13
+ /** Engine options of the common props */
14
+ export declare const engineOptions: (props: Pick<ChartCommonProps, "xAxis" | "yAxis" | "legend" | "tooltip" | "crosshair" | "annotations" | "interaction" | "padding" | "palette" | "ariaLabel"> & Pick<ChartOptions, "series">) => ChartOptions;
15
+ interface ChartBaseProps extends Handlers {
16
+ options: ChartOptions;
17
+ height?: DimensionValue;
18
+ width?: DimensionValue;
19
+ style?: StyleProp<ViewStyle>;
20
+ testID?: string;
21
+ handleRef?: Ref<ChartHandle>;
22
+ /** React content of the tooltip (replaces the engine's content) */
23
+ renderTooltip?: (event: ChartHoverEvent) => ReactNode;
24
+ /** React content placed over the plot area, given the plot rectangle */
25
+ overlay?: (plot: ChartRect) => ReactNode;
26
+ }
27
+ /** Sizes the chart, forwards options / theme / touches to the controller and draws its scene */
28
+ export declare function ChartBase({ options, height, width, style, testID, handleRef, renderTooltip, overlay, ...handlers }: ChartBaseProps): import('react').JSX.Element;
29
+ export {};