react-cheminfo 0.28.0 → 0.29.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 (691) hide show
  1. package/README.md +38 -25
  2. package/lib/chart/core/axisLabels.d.ts +82 -0
  3. package/lib/chart/core/axisLabels.d.ts.map +1 -0
  4. package/lib/chart/core/axisLabels.js +111 -0
  5. package/lib/chart/core/axisLabels.js.map +1 -0
  6. package/lib/chart/core/boxLayout.d.ts +53 -0
  7. package/lib/chart/core/boxLayout.d.ts.map +1 -0
  8. package/lib/chart/core/boxLayout.js +112 -0
  9. package/lib/chart/core/boxLayout.js.map +1 -0
  10. package/lib/chart/core/chartAxisScale.d.ts +23 -2
  11. package/lib/chart/core/chartAxisScale.d.ts.map +1 -1
  12. package/lib/chart/core/chartAxisScale.js +64 -13
  13. package/lib/chart/core/chartAxisScale.js.map +1 -1
  14. package/lib/chart/core/chartDomain.d.ts +160 -0
  15. package/lib/chart/core/chartDomain.d.ts.map +1 -0
  16. package/lib/chart/core/chartDomain.js +46 -0
  17. package/lib/chart/core/chartDomain.js.map +1 -0
  18. package/lib/chart/core/chartGeometry.d.ts +131 -0
  19. package/lib/chart/core/chartGeometry.d.ts.map +1 -0
  20. package/lib/chart/core/chartGeometry.js +101 -0
  21. package/lib/chart/core/chartGeometry.js.map +1 -0
  22. package/lib/chart/core/chartPane.d.ts +11 -0
  23. package/lib/chart/core/chartPane.d.ts.map +1 -0
  24. package/lib/chart/core/chartPane.js +11 -0
  25. package/lib/chart/core/chartPane.js.map +1 -0
  26. package/lib/chart/core/chartScale.d.ts +4 -1
  27. package/lib/chart/core/chartScale.d.ts.map +1 -1
  28. package/lib/chart/core/chartScale.js +8 -4
  29. package/lib/chart/core/chartScale.js.map +1 -1
  30. package/lib/chart/core/chartTheme.d.ts +156 -0
  31. package/lib/chart/core/chartTheme.d.ts.map +1 -0
  32. package/lib/chart/core/chartTheme.js +156 -0
  33. package/lib/chart/core/chartTheme.js.map +1 -0
  34. package/lib/chart/core/chartViewport.d.ts +32 -5
  35. package/lib/chart/core/chartViewport.d.ts.map +1 -1
  36. package/lib/chart/core/chartViewport.js +40 -11
  37. package/lib/chart/core/chartViewport.js.map +1 -1
  38. package/lib/chart/core/guidePlacement.d.ts +52 -0
  39. package/lib/chart/core/guidePlacement.d.ts.map +1 -0
  40. package/lib/chart/core/guidePlacement.js +52 -0
  41. package/lib/chart/core/guidePlacement.js.map +1 -0
  42. package/lib/chart/core/index.d.ts +29 -2
  43. package/lib/chart/core/index.d.ts.map +1 -1
  44. package/lib/chart/core/index.js +19 -2
  45. package/lib/chart/core/index.js.map +1 -1
  46. package/lib/chart/core/labelStack.d.ts +27 -0
  47. package/lib/chart/core/labelStack.d.ts.map +1 -0
  48. package/lib/chart/core/labelStack.js +62 -0
  49. package/lib/chart/core/labelStack.js.map +1 -0
  50. package/lib/chart/core/legendBox.d.ts +152 -0
  51. package/lib/chart/core/legendBox.d.ts.map +1 -0
  52. package/lib/chart/core/legendBox.js +169 -0
  53. package/lib/chart/core/legendBox.js.map +1 -0
  54. package/lib/chart/core/selectionGeometry.d.ts +45 -0
  55. package/lib/chart/core/selectionGeometry.d.ts.map +1 -0
  56. package/lib/chart/core/selectionGeometry.js +49 -0
  57. package/lib/chart/core/selectionGeometry.js.map +1 -0
  58. package/lib/chart/core/spectrumColor.d.ts +80 -0
  59. package/lib/chart/core/spectrumColor.d.ts.map +1 -0
  60. package/lib/chart/core/spectrumColor.js +120 -0
  61. package/lib/chart/core/spectrumColor.js.map +1 -0
  62. package/lib/chart/core/stackCapacity.d.ts +136 -0
  63. package/lib/chart/core/stackCapacity.d.ts.map +1 -0
  64. package/lib/chart/core/stackCapacity.js +153 -0
  65. package/lib/chart/core/stackCapacity.js.map +1 -0
  66. package/lib/chart/core/svgPoint.d.ts +62 -0
  67. package/lib/chart/core/svgPoint.d.ts.map +1 -0
  68. package/lib/chart/core/svgPoint.js +43 -0
  69. package/lib/chart/core/svgPoint.js.map +1 -0
  70. package/lib/chart/core/tracePath.d.ts +94 -0
  71. package/lib/chart/core/tracePath.d.ts.map +1 -0
  72. package/lib/chart/core/tracePath.js +191 -0
  73. package/lib/chart/core/tracePath.js.map +1 -0
  74. package/lib/chart/core/trackerReadout.d.ts +55 -0
  75. package/lib/chart/core/trackerReadout.d.ts.map +1 -0
  76. package/lib/chart/core/trackerReadout.js +53 -0
  77. package/lib/chart/core/trackerReadout.js.map +1 -0
  78. package/lib/chart/core/viewTransform.d.ts +167 -0
  79. package/lib/chart/core/viewTransform.d.ts.map +1 -0
  80. package/lib/chart/core/viewTransform.js +188 -0
  81. package/lib/chart/core/viewTransform.js.map +1 -0
  82. package/lib/chart/core/zoomDomain.d.ts +127 -0
  83. package/lib/chart/core/zoomDomain.d.ts.map +1 -0
  84. package/lib/chart/core/zoomDomain.js +175 -0
  85. package/lib/chart/core/zoomDomain.js.map +1 -0
  86. package/lib/chart/ui/Axes.d.ts +104 -0
  87. package/lib/chart/ui/Axes.d.ts.map +1 -0
  88. package/lib/chart/ui/Axes.js +155 -0
  89. package/lib/chart/ui/Axes.js.map +1 -0
  90. package/lib/chart/ui/AxisGuide.d.ts +60 -0
  91. package/lib/chart/ui/AxisGuide.d.ts.map +1 -0
  92. package/lib/chart/ui/AxisGuide.js +111 -0
  93. package/lib/chart/ui/AxisGuide.js.map +1 -0
  94. package/lib/chart/ui/ChartStack.d.ts +81 -0
  95. package/lib/chart/ui/ChartStack.d.ts.map +1 -0
  96. package/lib/chart/ui/ChartStack.js +42 -0
  97. package/lib/chart/ui/ChartStack.js.map +1 -0
  98. package/lib/chart/ui/ChartTracker.d.ts +36 -0
  99. package/lib/chart/ui/ChartTracker.d.ts.map +1 -0
  100. package/lib/chart/ui/ChartTracker.js +27 -0
  101. package/lib/chart/ui/ChartTracker.js.map +1 -0
  102. package/lib/chart/ui/PlotCaption.d.ts +44 -0
  103. package/lib/chart/ui/PlotCaption.d.ts.map +1 -0
  104. package/lib/chart/ui/PlotCaption.js +68 -0
  105. package/lib/chart/ui/PlotCaption.js.map +1 -0
  106. package/lib/chart/ui/SelectionRect.d.ts +27 -0
  107. package/lib/chart/ui/SelectionRect.d.ts.map +1 -0
  108. package/lib/chart/ui/SelectionRect.js +31 -0
  109. package/lib/chart/ui/SelectionRect.js.map +1 -0
  110. package/lib/chart/ui/TraceLegend.d.ts +99 -0
  111. package/lib/chart/ui/TraceLegend.d.ts.map +1 -0
  112. package/lib/chart/ui/TraceLegend.js +45 -0
  113. package/lib/chart/ui/TraceLegend.js.map +1 -0
  114. package/lib/chart/ui/chartGestures.d.ts +158 -0
  115. package/lib/chart/ui/chartGestures.d.ts.map +1 -0
  116. package/lib/chart/ui/chartGestures.js +145 -0
  117. package/lib/chart/ui/chartGestures.js.map +1 -0
  118. package/lib/chart/ui/chartStackLevel.d.ts +115 -0
  119. package/lib/chart/ui/chartStackLevel.d.ts.map +1 -0
  120. package/lib/chart/ui/chartStackLevel.js +96 -0
  121. package/lib/chart/ui/chartStackLevel.js.map +1 -0
  122. package/lib/chart/ui/chartSurface.d.ts +35 -0
  123. package/lib/chart/ui/chartSurface.d.ts.map +1 -0
  124. package/lib/chart/ui/chartSurface.js +58 -0
  125. package/lib/chart/ui/chartSurface.js.map +1 -0
  126. package/lib/chart/ui/index.d.ts +24 -0
  127. package/lib/chart/ui/index.d.ts.map +1 -1
  128. package/lib/chart/ui/index.js +13 -0
  129. package/lib/chart/ui/index.js.map +1 -1
  130. package/lib/chart/ui/useChartPointer.d.ts +124 -0
  131. package/lib/chart/ui/useChartPointer.d.ts.map +1 -0
  132. package/lib/chart/ui/useChartPointer.js +152 -0
  133. package/lib/chart/ui/useChartPointer.js.map +1 -0
  134. package/lib/chart/ui/useChartSize.d.ts +49 -0
  135. package/lib/chart/ui/useChartSize.d.ts.map +1 -0
  136. package/lib/chart/ui/useChartSize.js +91 -0
  137. package/lib/chart/ui/useChartSize.js.map +1 -0
  138. package/lib/chart/ui/useChartWindow.d.ts +147 -0
  139. package/lib/chart/ui/useChartWindow.d.ts.map +1 -0
  140. package/lib/chart/ui/useChartWindow.js +135 -0
  141. package/lib/chart/ui/useChartWindow.js.map +1 -0
  142. package/lib/chart/ui/useChartZoom.d.ts +88 -0
  143. package/lib/chart/ui/useChartZoom.d.ts.map +1 -0
  144. package/lib/chart/ui/useChartZoom.js +142 -0
  145. package/lib/chart/ui/useChartZoom.js.map +1 -0
  146. package/lib/chart/ui/useWheelListener.d.ts +30 -0
  147. package/lib/chart/ui/useWheelListener.d.ts.map +1 -0
  148. package/lib/chart/ui/useWheelListener.js +57 -0
  149. package/lib/chart/ui/useWheelListener.js.map +1 -0
  150. package/lib/clipboard/core/copyPng.d.ts +13 -0
  151. package/lib/clipboard/core/copyPng.d.ts.map +1 -0
  152. package/lib/clipboard/core/copyPng.js +19 -0
  153. package/lib/clipboard/core/copyPng.js.map +1 -0
  154. package/lib/clipboard/core/index.d.ts +1 -0
  155. package/lib/clipboard/core/index.d.ts.map +1 -1
  156. package/lib/clipboard/core/index.js +1 -0
  157. package/lib/clipboard/core/index.js.map +1 -1
  158. package/lib/core.d.ts +1 -0
  159. package/lib/core.d.ts.map +1 -1
  160. package/lib/core.js +1 -0
  161. package/lib/core.js.map +1 -1
  162. package/lib/download/core/exportStyles.d.ts +22 -0
  163. package/lib/download/core/exportStyles.d.ts.map +1 -0
  164. package/lib/download/core/exportStyles.js +19 -0
  165. package/lib/download/core/exportStyles.js.map +1 -0
  166. package/lib/download/core/imageResolution.d.ts +88 -0
  167. package/lib/download/core/imageResolution.d.ts.map +1 -0
  168. package/lib/download/core/imageResolution.js +77 -0
  169. package/lib/download/core/imageResolution.js.map +1 -0
  170. package/lib/download/core/index.d.ts +13 -0
  171. package/lib/download/core/index.d.ts.map +1 -1
  172. package/lib/download/core/index.js +8 -0
  173. package/lib/download/core/index.js.map +1 -1
  174. package/lib/download/core/pictureExport.d.ts +93 -0
  175. package/lib/download/core/pictureExport.d.ts.map +1 -0
  176. package/lib/download/core/pictureExport.js +116 -0
  177. package/lib/download/core/pictureExport.js.map +1 -0
  178. package/lib/download/core/stackedDrawing.d.ts +36 -0
  179. package/lib/download/core/stackedDrawing.d.ts.map +1 -0
  180. package/lib/download/core/stackedDrawing.js +98 -0
  181. package/lib/download/core/stackedDrawing.js.map +1 -0
  182. package/lib/download/core/svgBounds.d.ts +44 -0
  183. package/lib/download/core/svgBounds.d.ts.map +1 -0
  184. package/lib/download/core/svgBounds.js +69 -0
  185. package/lib/download/core/svgBounds.js.map +1 -0
  186. package/lib/download/core/svgNamespace.d.ts +9 -0
  187. package/lib/download/core/svgNamespace.d.ts.map +1 -0
  188. package/lib/download/core/svgNamespace.js +10 -0
  189. package/lib/download/core/svgNamespace.js.map +1 -0
  190. package/lib/download/core/svgToPng.d.ts +43 -0
  191. package/lib/download/core/svgToPng.d.ts.map +1 -0
  192. package/lib/download/core/svgToPng.js +79 -0
  193. package/lib/download/core/svgToPng.js.map +1 -0
  194. package/lib/download/core/svgToString.d.ts +45 -0
  195. package/lib/download/core/svgToString.d.ts.map +1 -0
  196. package/lib/download/core/svgToString.js +58 -0
  197. package/lib/download/core/svgToString.js.map +1 -0
  198. package/lib/download/ui/ExportDialogFrame.d.ts +46 -0
  199. package/lib/download/ui/ExportDialogFrame.d.ts.map +1 -0
  200. package/lib/download/ui/ExportDialogFrame.js +24 -0
  201. package/lib/download/ui/ExportDialogFrame.js.map +1 -0
  202. package/lib/download/ui/ExportImageDialog.d.ts +47 -0
  203. package/lib/download/ui/ExportImageDialog.d.ts.map +1 -0
  204. package/lib/download/ui/ExportImageDialog.js +25 -0
  205. package/lib/download/ui/ExportImageDialog.js.map +1 -0
  206. package/lib/download/ui/ExportNameField.d.ts +29 -0
  207. package/lib/download/ui/ExportNameField.d.ts.map +1 -0
  208. package/lib/download/ui/ExportNameField.js +99 -0
  209. package/lib/download/ui/ExportNameField.js.map +1 -0
  210. package/lib/download/ui/ExportPictureSection.d.ts +38 -0
  211. package/lib/download/ui/ExportPictureSection.d.ts.map +1 -0
  212. package/lib/download/ui/ExportPictureSection.js +48 -0
  213. package/lib/download/ui/ExportPictureSection.js.map +1 -0
  214. package/lib/download/ui/index.d.ts +10 -0
  215. package/lib/download/ui/index.d.ts.map +1 -1
  216. package/lib/download/ui/index.js +5 -0
  217. package/lib/download/ui/index.js.map +1 -1
  218. package/lib/download/ui/useDrawingBox.d.ts +23 -0
  219. package/lib/download/ui/useDrawingBox.d.ts.map +1 -0
  220. package/lib/download/ui/useDrawingBox.js +21 -0
  221. package/lib/download/ui/useDrawingBox.js.map +1 -0
  222. package/lib/error/core/describeSource.d.ts +17 -0
  223. package/lib/error/core/describeSource.d.ts.map +1 -0
  224. package/lib/error/core/describeSource.js +19 -0
  225. package/lib/error/core/describeSource.js.map +1 -0
  226. package/lib/error/core/index.d.ts +1 -0
  227. package/lib/error/core/index.d.ts.map +1 -1
  228. package/lib/error/core/index.js +1 -0
  229. package/lib/error/core/index.js.map +1 -1
  230. package/lib/help/ui/HelpBody.d.ts +10 -1
  231. package/lib/help/ui/HelpBody.d.ts.map +1 -1
  232. package/lib/help/ui/HelpBody.js +24 -1
  233. package/lib/help/ui/HelpBody.js.map +1 -1
  234. package/lib/help/ui/index.d.ts +1 -1
  235. package/lib/help/ui/index.d.ts.map +1 -1
  236. package/lib/help/ui/index.js.map +1 -1
  237. package/lib/ir/core/analysisSpectra.d.ts +46 -0
  238. package/lib/ir/core/analysisSpectra.d.ts.map +1 -0
  239. package/lib/ir/core/analysisSpectra.js +187 -0
  240. package/lib/ir/core/analysisSpectra.js.map +1 -0
  241. package/lib/ir/core/assignBands.d.ts +83 -0
  242. package/lib/ir/core/assignBands.d.ts.map +1 -0
  243. package/lib/ir/core/assignBands.js +83 -0
  244. package/lib/ir/core/assignBands.js.map +1 -0
  245. package/lib/ir/core/bandAssignments.d.ts +47 -0
  246. package/lib/ir/core/bandAssignments.d.ts.map +1 -0
  247. package/lib/ir/core/bandAssignments.js +305 -0
  248. package/lib/ir/core/bandAssignments.js.map +1 -0
  249. package/lib/ir/core/bandLabelPlan.d.ts +93 -0
  250. package/lib/ir/core/bandLabelPlan.d.ts.map +1 -0
  251. package/lib/ir/core/bandLabelPlan.js +104 -0
  252. package/lib/ir/core/bandLabelPlan.js.map +1 -0
  253. package/lib/ir/core/detectIrFormat.d.ts +23 -0
  254. package/lib/ir/core/detectIrFormat.d.ts.map +1 -0
  255. package/lib/ir/core/detectIrFormat.js +133 -0
  256. package/lib/ir/core/detectIrFormat.js.map +1 -0
  257. package/lib/ir/core/downloadSpectra.d.ts +26 -0
  258. package/lib/ir/core/downloadSpectra.d.ts.map +1 -0
  259. package/lib/ir/core/downloadSpectra.js +37 -0
  260. package/lib/ir/core/downloadSpectra.js.map +1 -0
  261. package/lib/ir/core/fromJcamp.d.ts +35 -0
  262. package/lib/ir/core/fromJcamp.d.ts.map +1 -0
  263. package/lib/ir/core/fromJcamp.js +48 -0
  264. package/lib/ir/core/fromJcamp.js.map +1 -0
  265. package/lib/ir/core/fromSpc.d.ts +30 -0
  266. package/lib/ir/core/fromSpc.d.ts.map +1 -0
  267. package/lib/ir/core/fromSpc.js +40 -0
  268. package/lib/ir/core/fromSpc.js.map +1 -0
  269. package/lib/ir/core/index.d.ts +51 -0
  270. package/lib/ir/core/index.d.ts.map +1 -0
  271. package/lib/ir/core/index.js +35 -0
  272. package/lib/ir/core/index.js.map +1 -0
  273. package/lib/ir/core/irBand.d.ts +45 -0
  274. package/lib/ir/core/irBand.d.ts.map +1 -0
  275. package/lib/ir/core/irBand.js +30 -0
  276. package/lib/ir/core/irBand.js.map +1 -0
  277. package/lib/ir/core/irCommands.d.ts +168 -0
  278. package/lib/ir/core/irCommands.d.ts.map +1 -0
  279. package/lib/ir/core/irCommands.js +94 -0
  280. package/lib/ir/core/irCommands.js.map +1 -0
  281. package/lib/ir/core/irDomain.d.ts +63 -0
  282. package/lib/ir/core/irDomain.d.ts.map +1 -0
  283. package/lib/ir/core/irDomain.js +136 -0
  284. package/lib/ir/core/irDomain.js.map +1 -0
  285. package/lib/ir/core/irEditorApi.d.ts +42 -0
  286. package/lib/ir/core/irEditorApi.d.ts.map +1 -0
  287. package/lib/ir/core/irEditorApi.js +10 -0
  288. package/lib/ir/core/irEditorApi.js.map +1 -0
  289. package/lib/ir/core/irFormat.d.ts +42 -0
  290. package/lib/ir/core/irFormat.d.ts.map +1 -0
  291. package/lib/ir/core/irFormat.js +51 -0
  292. package/lib/ir/core/irFormat.js.map +1 -0
  293. package/lib/ir/core/irMode.d.ts +160 -0
  294. package/lib/ir/core/irMode.d.ts.map +1 -0
  295. package/lib/ir/core/irMode.js +175 -0
  296. package/lib/ir/core/irMode.js.map +1 -0
  297. package/lib/ir/core/irReducer.d.ts +101 -0
  298. package/lib/ir/core/irReducer.d.ts.map +1 -0
  299. package/lib/ir/core/irReducer.js +207 -0
  300. package/lib/ir/core/irReducer.js.map +1 -0
  301. package/lib/ir/core/irSidePanels.d.ts +22 -0
  302. package/lib/ir/core/irSidePanels.d.ts.map +1 -0
  303. package/lib/ir/core/irSidePanels.js +12 -0
  304. package/lib/ir/core/irSidePanels.js.map +1 -0
  305. package/lib/ir/core/irSpectrum.d.ts +140 -0
  306. package/lib/ir/core/irSpectrum.d.ts.map +1 -0
  307. package/lib/ir/core/irSpectrum.js +34 -0
  308. package/lib/ir/core/irSpectrum.js.map +1 -0
  309. package/lib/ir/core/irState.d.ts +119 -0
  310. package/lib/ir/core/irState.d.ts.map +1 -0
  311. package/lib/ir/core/irState.js +92 -0
  312. package/lib/ir/core/irState.js.map +1 -0
  313. package/lib/ir/core/loadIrSpectra.d.ts +36 -0
  314. package/lib/ir/core/loadIrSpectra.d.ts.map +1 -0
  315. package/lib/ir/core/loadIrSpectra.js +44 -0
  316. package/lib/ir/core/loadIrSpectra.js.map +1 -0
  317. package/lib/ir/core/nearestBand.d.ts +35 -0
  318. package/lib/ir/core/nearestBand.d.ts.map +1 -0
  319. package/lib/ir/core/nearestBand.js +47 -0
  320. package/lib/ir/core/nearestBand.js.map +1 -0
  321. package/lib/ir/core/pickBands.d.ts +70 -0
  322. package/lib/ir/core/pickBands.d.ts.map +1 -0
  323. package/lib/ir/core/pickBands.js +125 -0
  324. package/lib/ir/core/pickBands.js.map +1 -0
  325. package/lib/ir/core/spectrumJcamp.d.ts +58 -0
  326. package/lib/ir/core/spectrumJcamp.d.ts.map +1 -0
  327. package/lib/ir/core/spectrumJcamp.js +156 -0
  328. package/lib/ir/core/spectrumJcamp.js.map +1 -0
  329. package/lib/ir/core/toIrSpectrum.d.ts +59 -0
  330. package/lib/ir/core/toIrSpectrum.d.ts.map +1 -0
  331. package/lib/ir/core/toIrSpectrum.js +56 -0
  332. package/lib/ir/core/toIrSpectrum.js.map +1 -0
  333. package/lib/ir/ui/BandMarks.d.ts +52 -0
  334. package/lib/ir/ui/BandMarks.d.ts.map +1 -0
  335. package/lib/ir/ui/BandMarks.js +71 -0
  336. package/lib/ir/ui/BandMarks.js.map +1 -0
  337. package/lib/ir/ui/BandsPanel.d.ts +31 -0
  338. package/lib/ir/ui/BandsPanel.d.ts.map +1 -0
  339. package/lib/ir/ui/BandsPanel.js +94 -0
  340. package/lib/ir/ui/BandsPanel.js.map +1 -0
  341. package/lib/ir/ui/IrAboutDialog.d.ts +18 -0
  342. package/lib/ir/ui/IrAboutDialog.d.ts.map +1 -0
  343. package/lib/ir/ui/IrAboutDialog.js +32 -0
  344. package/lib/ir/ui/IrAboutDialog.js.map +1 -0
  345. package/lib/ir/ui/IrCanvas.d.ts +38 -0
  346. package/lib/ir/ui/IrCanvas.d.ts.map +1 -0
  347. package/lib/ir/ui/IrCanvas.js +41 -0
  348. package/lib/ir/ui/IrCanvas.js.map +1 -0
  349. package/lib/ir/ui/IrChart.d.ts +28 -0
  350. package/lib/ir/ui/IrChart.d.ts.map +1 -0
  351. package/lib/ir/ui/IrChart.js +114 -0
  352. package/lib/ir/ui/IrChart.js.map +1 -0
  353. package/lib/ir/ui/IrCommandProvider.d.ts +15 -0
  354. package/lib/ir/ui/IrCommandProvider.d.ts.map +1 -0
  355. package/lib/ir/ui/IrCommandProvider.js +14 -0
  356. package/lib/ir/ui/IrCommandProvider.js.map +1 -0
  357. package/lib/ir/ui/IrCommandTooltip.d.ts +16 -0
  358. package/lib/ir/ui/IrCommandTooltip.d.ts.map +1 -0
  359. package/lib/ir/ui/IrCommandTooltip.js +22 -0
  360. package/lib/ir/ui/IrCommandTooltip.js.map +1 -0
  361. package/lib/ir/ui/IrDocumentationDialog.d.ts +18 -0
  362. package/lib/ir/ui/IrDocumentationDialog.d.ts.map +1 -0
  363. package/lib/ir/ui/IrDocumentationDialog.js +68 -0
  364. package/lib/ir/ui/IrDocumentationDialog.js.map +1 -0
  365. package/lib/ir/ui/IrEditor.d.ts +60 -0
  366. package/lib/ir/ui/IrEditor.d.ts.map +1 -0
  367. package/lib/ir/ui/IrEditor.js +42 -0
  368. package/lib/ir/ui/IrEditor.js.map +1 -0
  369. package/lib/ir/ui/IrHeader.d.ts +13 -0
  370. package/lib/ir/ui/IrHeader.d.ts.map +1 -0
  371. package/lib/ir/ui/IrHeader.js +21 -0
  372. package/lib/ir/ui/IrHeader.js.map +1 -0
  373. package/lib/ir/ui/IrLogo.d.ts +20 -0
  374. package/lib/ir/ui/IrLogo.d.ts.map +1 -0
  375. package/lib/ir/ui/IrLogo.js +17 -0
  376. package/lib/ir/ui/IrLogo.js.map +1 -0
  377. package/lib/ir/ui/IrPointerTracker.d.ts +29 -0
  378. package/lib/ir/ui/IrPointerTracker.d.ts.map +1 -0
  379. package/lib/ir/ui/IrPointerTracker.js +47 -0
  380. package/lib/ir/ui/IrPointerTracker.js.map +1 -0
  381. package/lib/ir/ui/IrShell.d.ts +25 -0
  382. package/lib/ir/ui/IrShell.d.ts.map +1 -0
  383. package/lib/ir/ui/IrShell.js +178 -0
  384. package/lib/ir/ui/IrShell.js.map +1 -0
  385. package/lib/ir/ui/IrSidePanel.d.ts +26 -0
  386. package/lib/ir/ui/IrSidePanel.d.ts.map +1 -0
  387. package/lib/ir/ui/IrSidePanel.js +39 -0
  388. package/lib/ir/ui/IrSidePanel.js.map +1 -0
  389. package/lib/ir/ui/IrStateProvider.d.ts +19 -0
  390. package/lib/ir/ui/IrStateProvider.d.ts.map +1 -0
  391. package/lib/ir/ui/IrStateProvider.js +16 -0
  392. package/lib/ir/ui/IrStateProvider.js.map +1 -0
  393. package/lib/ir/ui/IrStatusBar.d.ts +14 -0
  394. package/lib/ir/ui/IrStatusBar.d.ts.map +1 -0
  395. package/lib/ir/ui/IrStatusBar.js +48 -0
  396. package/lib/ir/ui/IrStatusBar.js.map +1 -0
  397. package/lib/ir/ui/IrToolbar.d.ts +18 -0
  398. package/lib/ir/ui/IrToolbar.d.ts.map +1 -0
  399. package/lib/ir/ui/IrToolbar.js +32 -0
  400. package/lib/ir/ui/IrToolbar.js.map +1 -0
  401. package/lib/ir/ui/IrTraces.d.ts +63 -0
  402. package/lib/ir/ui/IrTraces.d.ts.map +1 -0
  403. package/lib/ir/ui/IrTraces.js +72 -0
  404. package/lib/ir/ui/IrTraces.js.map +1 -0
  405. package/lib/ir/ui/MetadataPanel.d.ts +15 -0
  406. package/lib/ir/ui/MetadataPanel.d.ts.map +1 -0
  407. package/lib/ir/ui/MetadataPanel.js +49 -0
  408. package/lib/ir/ui/MetadataPanel.js.map +1 -0
  409. package/lib/ir/ui/SpectraPanel.d.ts +20 -0
  410. package/lib/ir/ui/SpectraPanel.d.ts.map +1 -0
  411. package/lib/ir/ui/SpectraPanel.js +42 -0
  412. package/lib/ir/ui/SpectraPanel.js.map +1 -0
  413. package/lib/ir/ui/SpectrumRow.d.ts +26 -0
  414. package/lib/ir/ui/SpectrumRow.d.ts.map +1 -0
  415. package/lib/ir/ui/SpectrumRow.js +41 -0
  416. package/lib/ir/ui/SpectrumRow.js.map +1 -0
  417. package/lib/ir/ui/index.d.ts +56 -0
  418. package/lib/ir/ui/index.d.ts.map +1 -0
  419. package/lib/ir/ui/index.js +36 -0
  420. package/lib/ir/ui/index.js.map +1 -0
  421. package/lib/ir/ui/irActions.d.ts +52 -0
  422. package/lib/ir/ui/irActions.d.ts.map +1 -0
  423. package/lib/ir/ui/irActions.js +62 -0
  424. package/lib/ir/ui/irActions.js.map +1 -0
  425. package/lib/ir/ui/irChartProps.d.ts +116 -0
  426. package/lib/ir/ui/irChartProps.d.ts.map +1 -0
  427. package/lib/ir/ui/irChartProps.js +14 -0
  428. package/lib/ir/ui/irChartProps.js.map +1 -0
  429. package/lib/ir/ui/irCommandContext.d.ts +35 -0
  430. package/lib/ir/ui/irCommandContext.d.ts.map +1 -0
  431. package/lib/ir/ui/irCommandContext.js +44 -0
  432. package/lib/ir/ui/irCommandContext.js.map +1 -0
  433. package/lib/ir/ui/irStateContext.d.ts +26 -0
  434. package/lib/ir/ui/irStateContext.d.ts.map +1 -0
  435. package/lib/ir/ui/irStateContext.js +37 -0
  436. package/lib/ir/ui/irStateContext.js.map +1 -0
  437. package/lib/ir/ui/useIrEditor.d.ts +51 -0
  438. package/lib/ir/ui/useIrEditor.d.ts.map +1 -0
  439. package/lib/ir/ui/useIrEditor.js +88 -0
  440. package/lib/ir/ui/useIrEditor.js.map +1 -0
  441. package/lib/ir/ui/useIrPointer.d.ts +66 -0
  442. package/lib/ir/ui/useIrPointer.d.ts.map +1 -0
  443. package/lib/ir/ui/useIrPointer.js +53 -0
  444. package/lib/ir/ui/useIrPointer.js.map +1 -0
  445. package/lib/ir/ui/useIrShortcuts.d.ts +24 -0
  446. package/lib/ir/ui/useIrShortcuts.d.ts.map +1 -0
  447. package/lib/ir/ui/useIrShortcuts.js +73 -0
  448. package/lib/ir/ui/useIrShortcuts.js.map +1 -0
  449. package/lib/ir/ui/useIrZoom.d.ts +51 -0
  450. package/lib/ir/ui/useIrZoom.d.ts.map +1 -0
  451. package/lib/ir/ui/useIrZoom.js +46 -0
  452. package/lib/ir/ui/useIrZoom.js.map +1 -0
  453. package/lib/ir.d.ts +13 -0
  454. package/lib/ir.d.ts.map +1 -0
  455. package/lib/ir.js +13 -0
  456. package/lib/ir.js.map +1 -0
  457. package/lib/panel/core/dialogStyles.d.ts +13 -0
  458. package/lib/panel/core/dialogStyles.d.ts.map +1 -0
  459. package/lib/panel/core/dialogStyles.js +11 -0
  460. package/lib/panel/core/dialogStyles.js.map +1 -0
  461. package/lib/panel/core/index.d.ts +19 -0
  462. package/lib/panel/core/index.d.ts.map +1 -0
  463. package/lib/panel/core/index.js +18 -0
  464. package/lib/panel/core/index.js.map +1 -0
  465. package/lib/panel/core/isEditingField.d.ts +17 -0
  466. package/lib/panel/core/isEditingField.d.ts.map +1 -0
  467. package/lib/panel/core/isEditingField.js +25 -0
  468. package/lib/panel/core/isEditingField.js.map +1 -0
  469. package/lib/panel/core/panelStyles.d.ts +242 -0
  470. package/lib/panel/core/panelStyles.d.ts.map +1 -0
  471. package/lib/panel/core/panelStyles.js +228 -0
  472. package/lib/panel/core/panelStyles.js.map +1 -0
  473. package/lib/panel/core/rowSpacers.d.ts +38 -0
  474. package/lib/panel/core/rowSpacers.d.ts.map +1 -0
  475. package/lib/panel/core/rowSpacers.js +31 -0
  476. package/lib/panel/core/rowSpacers.js.map +1 -0
  477. package/lib/panel/core/statusBar.d.ts +44 -0
  478. package/lib/panel/core/statusBar.d.ts.map +1 -0
  479. package/lib/panel/core/statusBar.js +40 -0
  480. package/lib/panel/core/statusBar.js.map +1 -0
  481. package/lib/panel/core/textFilter.d.ts +22 -0
  482. package/lib/panel/core/textFilter.d.ts.map +1 -0
  483. package/lib/panel/core/textFilter.js +32 -0
  484. package/lib/panel/core/textFilter.js.map +1 -0
  485. package/lib/panel/core/yieldToPainting.d.ts +17 -0
  486. package/lib/panel/core/yieldToPainting.d.ts.map +1 -0
  487. package/lib/panel/core/yieldToPainting.js +21 -0
  488. package/lib/panel/core/yieldToPainting.js.map +1 -0
  489. package/lib/panel/ui/AboutDialogFrame.d.ts +36 -0
  490. package/lib/panel/ui/AboutDialogFrame.d.ts.map +1 -0
  491. package/lib/panel/ui/AboutDialogFrame.js +43 -0
  492. package/lib/panel/ui/AboutDialogFrame.js.map +1 -0
  493. package/lib/panel/ui/ClearButton.d.ts +28 -0
  494. package/lib/panel/ui/ClearButton.d.ts.map +1 -0
  495. package/lib/panel/ui/ClearButton.js +23 -0
  496. package/lib/panel/ui/ClearButton.js.map +1 -0
  497. package/lib/panel/ui/DocumentationDialogFrame.d.ts +39 -0
  498. package/lib/panel/ui/DocumentationDialogFrame.d.ts.map +1 -0
  499. package/lib/panel/ui/DocumentationDialogFrame.js +29 -0
  500. package/lib/panel/ui/DocumentationDialogFrame.js.map +1 -0
  501. package/lib/panel/ui/FilterInput.d.ts +31 -0
  502. package/lib/panel/ui/FilterInput.d.ts.map +1 -0
  503. package/lib/panel/ui/FilterInput.js +23 -0
  504. package/lib/panel/ui/FilterInput.js.map +1 -0
  505. package/lib/panel/ui/HelpLabel.d.ts +24 -0
  506. package/lib/panel/ui/HelpLabel.d.ts.map +1 -0
  507. package/lib/panel/ui/HelpLabel.js +23 -0
  508. package/lib/panel/ui/HelpLabel.js.map +1 -0
  509. package/lib/panel/ui/PanelMessage.d.ts +41 -0
  510. package/lib/panel/ui/PanelMessage.d.ts.map +1 -0
  511. package/lib/panel/ui/PanelMessage.js +30 -0
  512. package/lib/panel/ui/PanelMessage.js.map +1 -0
  513. package/lib/panel/ui/PanelRail.d.ts +41 -0
  514. package/lib/panel/ui/PanelRail.d.ts.map +1 -0
  515. package/lib/panel/ui/PanelRail.js +12 -0
  516. package/lib/panel/ui/PanelRail.js.map +1 -0
  517. package/lib/panel/ui/Section.d.ts +25 -0
  518. package/lib/panel/ui/Section.d.ts.map +1 -0
  519. package/lib/panel/ui/Section.js +41 -0
  520. package/lib/panel/ui/Section.js.map +1 -0
  521. package/lib/panel/ui/SidePanelStack.d.ts +62 -0
  522. package/lib/panel/ui/SidePanelStack.d.ts.map +1 -0
  523. package/lib/panel/ui/SidePanelStack.js +40 -0
  524. package/lib/panel/ui/SidePanelStack.js.map +1 -0
  525. package/lib/panel/ui/SpectrumColorSwatch.d.ts +33 -0
  526. package/lib/panel/ui/SpectrumColorSwatch.d.ts.map +1 -0
  527. package/lib/panel/ui/SpectrumColorSwatch.js +76 -0
  528. package/lib/panel/ui/SpectrumColorSwatch.js.map +1 -0
  529. package/lib/panel/ui/index.d.ts +37 -0
  530. package/lib/panel/ui/index.d.ts.map +1 -0
  531. package/lib/panel/ui/index.js +24 -0
  532. package/lib/panel/ui/index.js.map +1 -0
  533. package/lib/panel/ui/useConfirmOnEnter.d.ts +19 -0
  534. package/lib/panel/ui/useConfirmOnEnter.d.ts.map +1 -0
  535. package/lib/panel/ui/useConfirmOnEnter.js +64 -0
  536. package/lib/panel/ui/useConfirmOnEnter.js.map +1 -0
  537. package/lib/panel/ui/useFilterBox.d.ts +23 -0
  538. package/lib/panel/ui/useFilterBox.d.ts.map +1 -0
  539. package/lib/panel/ui/useFilterBox.js +22 -0
  540. package/lib/panel/ui/useFilterBox.js.map +1 -0
  541. package/lib/panel/ui/useVirtualRows.d.ts +46 -0
  542. package/lib/panel/ui/useVirtualRows.d.ts.map +1 -0
  543. package/lib/panel/ui/useVirtualRows.js +56 -0
  544. package/lib/panel/ui/useVirtualRows.js.map +1 -0
  545. package/lib/panel/ui/useVirtualWindowRows.d.ts +40 -0
  546. package/lib/panel/ui/useVirtualWindowRows.d.ts.map +1 -0
  547. package/lib/panel/ui/useVirtualWindowRows.js +65 -0
  548. package/lib/panel/ui/useVirtualWindowRows.js.map +1 -0
  549. package/lib/ui.d.ts +1 -0
  550. package/lib/ui.d.ts.map +1 -1
  551. package/lib/ui.js +1 -0
  552. package/lib/ui.js.map +1 -1
  553. package/package.json +8 -1
  554. package/src/chart/core/axisLabels.ts +117 -0
  555. package/src/chart/core/boxLayout.ts +126 -0
  556. package/src/chart/core/chartAxisScale.ts +92 -10
  557. package/src/chart/core/chartDomain.ts +185 -0
  558. package/src/chart/core/chartGeometry.ts +159 -0
  559. package/src/chart/core/chartPane.ts +10 -0
  560. package/src/chart/core/chartScale.ts +7 -4
  561. package/src/chart/core/chartTheme.ts +161 -0
  562. package/src/chart/core/chartViewport.ts +40 -13
  563. package/src/chart/core/guidePlacement.ts +66 -0
  564. package/src/chart/core/index.ts +121 -2
  565. package/src/chart/core/labelStack.ts +72 -0
  566. package/src/chart/core/legendBox.ts +263 -0
  567. package/src/chart/core/selectionGeometry.ts +68 -0
  568. package/src/chart/core/spectrumColor.ts +129 -0
  569. package/src/chart/core/stackCapacity.ts +162 -0
  570. package/src/chart/core/svgPoint.ts +77 -0
  571. package/src/chart/core/tracePath.ts +228 -0
  572. package/src/chart/core/trackerReadout.ts +78 -0
  573. package/src/chart/core/viewTransform.ts +287 -0
  574. package/src/chart/core/zoomDomain.ts +235 -0
  575. package/src/chart/ui/Axes.tsx +361 -0
  576. package/src/chart/ui/AxisGuide.tsx +187 -0
  577. package/src/chart/ui/ChartStack.tsx +130 -0
  578. package/src/chart/ui/ChartTracker.tsx +101 -0
  579. package/src/chart/ui/PlotCaption.tsx +108 -0
  580. package/src/chart/ui/SelectionRect.tsx +52 -0
  581. package/src/chart/ui/TraceLegend.tsx +193 -0
  582. package/src/chart/ui/chartGestures.ts +270 -0
  583. package/src/chart/ui/chartStackLevel.tsx +210 -0
  584. package/src/chart/ui/chartSurface.ts +66 -0
  585. package/src/chart/ui/index.ts +35 -0
  586. package/src/chart/ui/useChartPointer.ts +223 -0
  587. package/src/chart/ui/useChartSize.ts +115 -0
  588. package/src/chart/ui/useChartWindow.ts +240 -0
  589. package/src/chart/ui/useChartZoom.ts +255 -0
  590. package/src/chart/ui/useWheelListener.ts +62 -0
  591. package/src/clipboard/core/copyPng.ts +20 -0
  592. package/src/clipboard/core/index.ts +1 -0
  593. package/src/core.ts +1 -0
  594. package/src/download/core/exportStyles.ts +20 -0
  595. package/src/download/core/imageResolution.ts +118 -0
  596. package/src/download/core/index.ts +34 -0
  597. package/src/download/core/pictureExport.ts +207 -0
  598. package/src/download/core/stackedDrawing.ts +108 -0
  599. package/src/download/core/svgBounds.ts +80 -0
  600. package/src/download/core/svgNamespace.ts +9 -0
  601. package/src/download/core/svgToPng.ts +121 -0
  602. package/src/download/core/svgToString.ts +95 -0
  603. package/src/download/ui/ExportDialogFrame.tsx +86 -0
  604. package/src/download/ui/ExportImageDialog.tsx +91 -0
  605. package/src/download/ui/ExportNameField.tsx +148 -0
  606. package/src/download/ui/ExportPictureSection.tsx +142 -0
  607. package/src/download/ui/index.ts +11 -0
  608. package/src/download/ui/useDrawingBox.ts +37 -0
  609. package/src/error/core/describeSource.ts +18 -0
  610. package/src/error/core/index.ts +1 -0
  611. package/src/help/ui/HelpBody.tsx +41 -2
  612. package/src/help/ui/index.ts +6 -1
  613. package/src/ir/core/analysisSpectra.ts +231 -0
  614. package/src/ir/core/assignBands.ts +144 -0
  615. package/src/ir/core/bandAssignments.ts +329 -0
  616. package/src/ir/core/bandLabelPlan.ts +194 -0
  617. package/src/ir/core/detectIrFormat.ts +139 -0
  618. package/src/ir/core/downloadSpectra.ts +57 -0
  619. package/src/ir/core/fromJcamp.ts +70 -0
  620. package/src/ir/core/fromSpc.ts +61 -0
  621. package/src/ir/core/index.ts +113 -0
  622. package/src/ir/core/irBand.ts +57 -0
  623. package/src/ir/core/irCommands.ts +154 -0
  624. package/src/ir/core/irDomain.ts +163 -0
  625. package/src/ir/core/irEditorApi.ts +44 -0
  626. package/src/ir/core/irFormat.ts +57 -0
  627. package/src/ir/core/irMode.ts +203 -0
  628. package/src/ir/core/irReducer.ts +273 -0
  629. package/src/ir/core/irSidePanels.ts +20 -0
  630. package/src/ir/core/irSpectrum.ts +155 -0
  631. package/src/ir/core/irState.ts +173 -0
  632. package/src/ir/core/loadIrSpectra.ts +79 -0
  633. package/src/ir/core/nearestBand.ts +57 -0
  634. package/src/ir/core/pickBands.ts +181 -0
  635. package/src/ir/core/spectrumJcamp.ts +178 -0
  636. package/src/ir/core/toIrSpectrum.ts +102 -0
  637. package/src/ir/ui/BandMarks.tsx +166 -0
  638. package/src/ir/ui/BandsPanel.tsx +271 -0
  639. package/src/ir/ui/IrAboutDialog.tsx +121 -0
  640. package/src/ir/ui/IrCanvas.tsx +91 -0
  641. package/src/ir/ui/IrChart.tsx +215 -0
  642. package/src/ir/ui/IrCommandProvider.tsx +32 -0
  643. package/src/ir/ui/IrCommandTooltip.tsx +36 -0
  644. package/src/ir/ui/IrDocumentationDialog.tsx +174 -0
  645. package/src/ir/ui/IrEditor.tsx +99 -0
  646. package/src/ir/ui/IrHeader.tsx +39 -0
  647. package/src/ir/ui/IrLogo.tsx +49 -0
  648. package/src/ir/ui/IrPointerTracker.tsx +102 -0
  649. package/src/ir/ui/IrShell.tsx +285 -0
  650. package/src/ir/ui/IrSidePanel.tsx +78 -0
  651. package/src/ir/ui/IrStateProvider.tsx +32 -0
  652. package/src/ir/ui/IrStatusBar.tsx +97 -0
  653. package/src/ir/ui/IrToolbar.tsx +102 -0
  654. package/src/ir/ui/IrTraces.tsx +134 -0
  655. package/src/ir/ui/MetadataPanel.tsx +88 -0
  656. package/src/ir/ui/SpectraPanel.tsx +114 -0
  657. package/src/ir/ui/SpectrumRow.tsx +127 -0
  658. package/src/ir/ui/index.ts +56 -0
  659. package/src/ir/ui/irActions.ts +103 -0
  660. package/src/ir/ui/irChartProps.ts +118 -0
  661. package/src/ir/ui/irCommandContext.tsx +62 -0
  662. package/src/ir/ui/irStateContext.ts +48 -0
  663. package/src/ir/ui/useIrEditor.ts +139 -0
  664. package/src/ir/ui/useIrPointer.ts +109 -0
  665. package/src/ir/ui/useIrShortcuts.ts +95 -0
  666. package/src/ir/ui/useIrZoom.ts +86 -0
  667. package/src/ir.ts +13 -0
  668. package/src/panel/core/dialogStyles.ts +11 -0
  669. package/src/panel/core/index.ts +47 -0
  670. package/src/panel/core/isEditingField.ts +23 -0
  671. package/src/panel/core/panelStyles.ts +248 -0
  672. package/src/panel/core/rowSpacers.ts +50 -0
  673. package/src/panel/core/statusBar.ts +48 -0
  674. package/src/panel/core/textFilter.ts +33 -0
  675. package/src/panel/core/yieldToPainting.ts +20 -0
  676. package/src/panel/ui/AboutDialogFrame.tsx +100 -0
  677. package/src/panel/ui/ClearButton.tsx +42 -0
  678. package/src/panel/ui/DocumentationDialogFrame.tsx +86 -0
  679. package/src/panel/ui/FilterInput.tsx +60 -0
  680. package/src/panel/ui/HelpLabel.tsx +43 -0
  681. package/src/panel/ui/PanelMessage.tsx +64 -0
  682. package/src/panel/ui/PanelRail.tsx +64 -0
  683. package/src/panel/ui/Section.tsx +66 -0
  684. package/src/panel/ui/SidePanelStack.tsx +109 -0
  685. package/src/panel/ui/SpectrumColorSwatch.tsx +119 -0
  686. package/src/panel/ui/index.ts +47 -0
  687. package/src/panel/ui/useConfirmOnEnter.ts +68 -0
  688. package/src/panel/ui/useFilterBox.ts +35 -0
  689. package/src/panel/ui/useVirtualRows.ts +82 -0
  690. package/src/panel/ui/useVirtualWindowRows.ts +86 -0
  691. package/src/ui.ts +1 -0
@@ -0,0 +1,115 @@
1
+ /**
2
+ * One level of a chart stack: the pane drawn at it, and everything under it.
3
+ *
4
+ * `SplitPane` takes exactly two children, so a stack is a recursion rather than
5
+ * a list — the pane at each level is the controlled side and is given a height
6
+ * in pixels, everything below it is the other side and takes what is left. It
7
+ * stands beside `ChartStack.tsx` rather than inside it so that the component is
8
+ * the state and this is the picture drawn from it. Why a height is held above a
9
+ * floor, and why every pane is wrapped in a box of its own, is in that file's
10
+ * header.
11
+ *
12
+ * The pane at the foot has nothing under it and so needs no split at all, and is
13
+ * given one regardless. React rebuilds whatever sits at a position the moment
14
+ * the element there changes type, so a pane drawn as a bare box while it is last
15
+ * and as a split once something is appended under it would be torn down and
16
+ * stood up again by the appending — and a chart stood up again is empty: it has
17
+ * to be measured, fitted and drawn from its twenty thousand points before it is
18
+ * a picture of anything. Every pane is therefore a split, the last one holding
19
+ * nothing on its other side, which is exactly what makes it draw no splitter and
20
+ * answer no drag.
21
+ */
22
+ import type { ReactNode } from 'react';
23
+ import type { SplitPaneSize } from 'react-science/ui';
24
+ /** One pane of the stack, and how tall it stands. */
25
+ export interface ChartStackPane {
26
+ /**
27
+ * Identity, which is what a height is remembered against.
28
+ *
29
+ * A pane leaves the stack whenever what it draws stops existing, and comes
30
+ * back when it exists again. The height is held against this rather than
31
+ * against the pane's place in the array, so a pane that returns returns the
32
+ * size it was left at rather than at its default.
33
+ */
34
+ id: string;
35
+ /** What is drawn in it — a chart, and whatever bar is drawn over it. */
36
+ content: ReactNode;
37
+ /**
38
+ * How tall it stands the first time it is stacked, in pixels.
39
+ *
40
+ * A default rather than a controlled value: the stack holds the live height
41
+ * from then on, so a viewer restoring a layout it saved hands it in here and
42
+ * hears every later change back through `onHeightChange`. A change to this
43
+ * number afterwards is ignored, the way a defaulted prop always is — what is
44
+ * on screen is what a chemist dragged it to.
45
+ * @default 220
46
+ */
47
+ defaultHeight?: number;
48
+ /**
49
+ * The shortest it may be dragged to, in pixels.
50
+ *
51
+ * A hundred and twenty is a plot that still reads: `MARGIN` spends 44 of them
52
+ * on the tick row and the axis title, which leaves the trace the rest of it.
53
+ * @default 120
54
+ */
55
+ minimumHeight?: number;
56
+ }
57
+ /** Everything one level of the nesting needs to draw itself and the rest. */
58
+ export interface StackLevel {
59
+ /** Every pane of the stack, top to bottom. */
60
+ panes: readonly ChartStackPane[];
61
+ /**
62
+ * How tall a pane stands.
63
+ * @param pane - The pane to measure.
64
+ * @returns Its height, in pixels.
65
+ */
66
+ heightOf: (pane: ChartStackPane) => number;
67
+ /**
68
+ * Take what a drag in progress is asking for.
69
+ * @param pane - The pane being resized.
70
+ * @param asked - The size its splitter asked for.
71
+ */
72
+ resize: (pane: ChartStackPane, asked: SplitPaneSize) => void;
73
+ /**
74
+ * Take where a drag came to rest.
75
+ * @param pane - The pane that was resized.
76
+ * @param asked - The size its splitter was let go at.
77
+ */
78
+ rest: (pane: ChartStackPane, asked: SplitPaneSize) => void;
79
+ }
80
+ /**
81
+ * The pane at one level of the stack, and everything under it.
82
+ *
83
+ * The pane at the foot is given the whole of what it is handed rather than a
84
+ * height, since there is nothing under it to leave room for, and it is given
85
+ * neither a close threshold nor anywhere to report a drag: a split with nothing
86
+ * on its other side draws no splitter, so there is no drag to report and nothing
87
+ * to close it against — a threshold there would hide the only pane on a stack
88
+ * squeezed short.
89
+ * @param level - The panes and what is done with a drag on them.
90
+ * @param index - Which pane this level draws.
91
+ * @returns The pane split against the rest below it, the pane alone in a split
92
+ * of its own at the foot of the stack, and nothing at all for a stack of no
93
+ * panes.
94
+ */
95
+ export declare function stackFrom(level: StackLevel, index: number): ReactNode;
96
+ /**
97
+ * How tall a pane stands, given the height it was last left at.
98
+ *
99
+ * The floor is applied to the default as much as to a stored height: a pane
100
+ * asking for 40 pixels against a minimum of 150 would otherwise draw the stub
101
+ * with a full set of axes over it that the header of `ChartStack.tsx` describes,
102
+ * on its first render and until somebody touched a splitter.
103
+ * @param pane - The pane to measure.
104
+ * @param stored - The height it was left at, absent until one is dragged.
105
+ * @returns Its height, in pixels.
106
+ */
107
+ export declare function paneHeight(pane: ChartStackPane, stored: number | undefined): number;
108
+ /**
109
+ * The height to keep, given what a splitter asked for.
110
+ * @param asked - The size the splitter reported, in the pixels it was handed.
111
+ * @param pane - The pane it belongs to, for its minimum.
112
+ * @returns The height to store, `null` for a size that is not a length at all.
113
+ */
114
+ export declare function keptHeight(asked: SplitPaneSize, pane: ChartStackPane): number | null;
115
+ //# sourceMappingURL=chartStackLevel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartStackLevel.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/chartStackLevel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,OAAO,EAAE,SAAS,CAAC;IACnB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACzB,8CAA8C;IAC9C,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IACjC;;;;OAIG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,MAAM,CAAC;IAC3C;;;;OAIG;IACH,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7D;;;;OAIG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC5D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAyBrE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,CAKR;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,cAAc,GACnB,MAAM,GAAG,IAAI,CAIf"}
@@ -0,0 +1,96 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { SplitPane } from 'react-science/ui';
3
+ /**
4
+ * The pane at one level of the stack, and everything under it.
5
+ *
6
+ * The pane at the foot is given the whole of what it is handed rather than a
7
+ * height, since there is nothing under it to leave room for, and it is given
8
+ * neither a close threshold nor anywhere to report a drag: a split with nothing
9
+ * on its other side draws no splitter, so there is no drag to report and nothing
10
+ * to close it against — a threshold there would hide the only pane on a stack
11
+ * squeezed short.
12
+ * @param level - The panes and what is done with a drag on them.
13
+ * @param index - Which pane this level draws.
14
+ * @returns The pane split against the rest below it, the pane alone in a split
15
+ * of its own at the foot of the stack, and nothing at all for a stack of no
16
+ * panes.
17
+ */
18
+ export function stackFrom(level, index) {
19
+ const { panes, heightOf, resize, rest } = level;
20
+ const pane = panes[index];
21
+ if (pane === undefined)
22
+ return null;
23
+ const under = stackFrom(level, index + 1);
24
+ const isLast = under === null;
25
+ return (_jsxs(SplitPane, { direction: "vertical", controlledSide: "start", size: isLast ? WHOLE_STACK : `${heightOf(pane)}px`, onSizeChange: isLast ? undefined : (asked) => resize(pane, asked), onResize: isLast ? undefined : (asked) => rest(pane, asked), closeThreshold: isLast ? undefined : CLOSE_THRESHOLD, unmountChildren: false, children: [_jsx("div", { "data-chart-pane": pane.id, style: paneStyle, children: pane.content }, pane.id), under] }, pane.id));
26
+ }
27
+ /**
28
+ * How tall a pane stands, given the height it was last left at.
29
+ *
30
+ * The floor is applied to the default as much as to a stored height: a pane
31
+ * asking for 40 pixels against a minimum of 150 would otherwise draw the stub
32
+ * with a full set of axes over it that the header of `ChartStack.tsx` describes,
33
+ * on its first render and until somebody touched a splitter.
34
+ * @param pane - The pane to measure.
35
+ * @param stored - The height it was left at, absent until one is dragged.
36
+ * @returns Its height, in pixels.
37
+ */
38
+ export function paneHeight(pane, stored) {
39
+ return Math.max(stored ?? pane.defaultHeight ?? DEFAULT_PANE_HEIGHT, floorOf(pane));
40
+ }
41
+ /**
42
+ * The height to keep, given what a splitter asked for.
43
+ * @param asked - The size the splitter reported, in the pixels it was handed.
44
+ * @param pane - The pane it belongs to, for its minimum.
45
+ * @returns The height to store, `null` for a size that is not a length at all.
46
+ */
47
+ export function keptHeight(asked, pane) {
48
+ const value = Number.parseFloat(asked);
49
+ if (!Number.isFinite(value))
50
+ return null;
51
+ return Math.max(value, floorOf(pane));
52
+ }
53
+ /**
54
+ * The shortest a pane may stand, whether it said so itself or not.
55
+ * @param pane - The pane being held up.
56
+ * @returns Its floor, in pixels.
57
+ */
58
+ function floorOf(pane) {
59
+ return pane.minimumHeight ?? MINIMUM_PANE_HEIGHT;
60
+ }
61
+ /** How tall a pane stands when nobody has said, in pixels. */
62
+ const DEFAULT_PANE_HEIGHT = 220;
63
+ /** The shortest a pane may be dragged to when nobody has said, in pixels. */
64
+ const MINIMUM_PANE_HEIGHT = 120;
65
+ /**
66
+ * What the pane at the foot is given, having nothing under it to leave room for.
67
+ *
68
+ * A share rather than a length: handed a percentage, `SplitPane` lays its
69
+ * controlled side out as a flexible share instead of at a fixed height, so the
70
+ * pane takes whatever the panes above it left rather than standing at some
71
+ * number and leaving a gap under itself.
72
+ */
73
+ const WHOLE_STACK = '100%';
74
+ /**
75
+ * The height below which a split closes its pane rather than squeezing it.
76
+ *
77
+ * A stack squeezed to under ninety pixels has no room for a chart of any kind,
78
+ * and that is under the shortest pane this stack will otherwise keep.
79
+ * `SplitPane` stops doing this the moment a splitter is touched, so it settles
80
+ * what a pane does before anyone has an opinion and nothing after that.
81
+ */
82
+ const CLOSE_THRESHOLD = 90;
83
+ /**
84
+ * The box one pane fills — `minHeight: 0` is the whole reason it exists rather
85
+ * than the pane's content sitting in the split itself; see the header of
86
+ * `ChartStack.tsx`.
87
+ */
88
+ const paneStyle = {
89
+ display: 'flex',
90
+ flexDirection: 'column',
91
+ flex: '1 1 0%',
92
+ minWidth: 0,
93
+ minHeight: 0,
94
+ overflow: 'hidden',
95
+ };
96
+ //# sourceMappingURL=chartStackLevel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartStackLevel.js","sourceRoot":"","sources":["../../../src/chart/ui/chartStackLevel.tsx"],"names":[],"mappings":";AAwBA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AA4D7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,SAAS,CAAC,KAAiB,EAAE,KAAa;IACxD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IAE9B,OAAO,CACL,MAAC,SAAS,IAER,SAAS,EAAC,UAAU,EACpB,cAAc,EAAC,OAAO,EACtB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAClD,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EACjE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAC3D,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,EACpD,eAAe,EAAE,KAAK,aAEtB,iCAAoC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,YAC1D,IAAI,CAAC,OAAO,IADL,IAAI,CAAC,EAAE,CAEX,EACL,KAAK,KAZD,IAAI,CAAC,EAAE,CAaF,CACb,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACxB,IAAoB,EACpB,MAA0B;IAE1B,OAAO,IAAI,CAAC,GAAG,CACb,MAAM,IAAI,IAAI,CAAC,aAAa,IAAI,mBAAmB,EACnD,OAAO,CAAC,IAAI,CAAC,CACd,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,KAAoB,EACpB,IAAoB;IAEpB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,IAAoB;IACnC,OAAO,IAAI,CAAC,aAAa,IAAI,mBAAmB,CAAC;AACnD,CAAC;AAED,8DAA8D;AAC9D,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,6EAA6E;AAC7E,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,WAAW,GAAkB,MAAM,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;GAIG;AACH,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,QAAQ;CACV,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The style the SVG a chart is drawn on carries, and the one thing about it
3
+ * that moves: the cursor.
4
+ *
5
+ * A chart drawing its own crosshair has two pointers on it — the dashed rules
6
+ * that read the axes, and the operating system's arrow beside them — and only
7
+ * one of the two is saying anything. The arrow is also the one in the way: it
8
+ * is drawn down and to the right of its own hot spot, which is exactly where
9
+ * the crosshair meets and exactly the place being read. So the arrow is hidden
10
+ * while the crosshair is up, and it comes back the moment the pointer leaves
11
+ * the plot, where there is no crosshair and the margins are ordinary furniture.
12
+ *
13
+ * `target` is why this is a function rather than a constant. Something under
14
+ * the pointer can be opened — a ring on a peak a survey scan was fragmented at
15
+ * — and a cursor that never changes is a chart with no way of saying so. The
16
+ * hand wins over the hidden arrow, and the crosshair goes on being drawn under
17
+ * it, since where you are is still worth reading while you decide to click.
18
+ *
19
+ * One helper for every chart in this package rather than a `svgStyle` constant
20
+ * in each: a mass spectrum stacked under a chromatogram is two charts a reader
21
+ * takes to be one instrument, and an arrow over one of them and nothing over
22
+ * the other is the sort of difference that reads as a fault.
23
+ */
24
+ import type { CSSProperties } from 'react';
25
+ /**
26
+ * What the SVG a chart is drawn on is styled with.
27
+ * @param tracked - Whether the chart is drawing its crosshair where the pointer
28
+ * is, which is true exactly while the pointer is over the plot.
29
+ * @param target - Whether what is under the pointer can be clicked open.
30
+ * Defaults to `false`, which is every chart offering nothing to click.
31
+ * @returns The style, one of three objects that never change — a fresh one per
32
+ * pointer move would replace the `style` prop on every tremor of a hand.
33
+ */
34
+ export declare function chartSurfaceStyle(tracked: boolean, target?: boolean): CSSProperties;
35
+ //# sourceMappingURL=chartSurface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartSurface.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/chartSurface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,MAAM,UAAQ,GACb,aAAa,CAGf"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * The style the SVG a chart is drawn on carries, and the one thing about it
3
+ * that moves: the cursor.
4
+ *
5
+ * A chart drawing its own crosshair has two pointers on it — the dashed rules
6
+ * that read the axes, and the operating system's arrow beside them — and only
7
+ * one of the two is saying anything. The arrow is also the one in the way: it
8
+ * is drawn down and to the right of its own hot spot, which is exactly where
9
+ * the crosshair meets and exactly the place being read. So the arrow is hidden
10
+ * while the crosshair is up, and it comes back the moment the pointer leaves
11
+ * the plot, where there is no crosshair and the margins are ordinary furniture.
12
+ *
13
+ * `target` is why this is a function rather than a constant. Something under
14
+ * the pointer can be opened — a ring on a peak a survey scan was fragmented at
15
+ * — and a cursor that never changes is a chart with no way of saying so. The
16
+ * hand wins over the hidden arrow, and the crosshair goes on being drawn under
17
+ * it, since where you are is still worth reading while you decide to click.
18
+ *
19
+ * One helper for every chart in this package rather than a `svgStyle` constant
20
+ * in each: a mass spectrum stacked under a chromatogram is two charts a reader
21
+ * takes to be one instrument, and an arrow over one of them and nothing over
22
+ * the other is the sort of difference that reads as a fault.
23
+ */
24
+ /**
25
+ * What the SVG a chart is drawn on is styled with.
26
+ * @param tracked - Whether the chart is drawing its crosshair where the pointer
27
+ * is, which is true exactly while the pointer is over the plot.
28
+ * @param target - Whether what is under the pointer can be clicked open.
29
+ * Defaults to `false`, which is every chart offering nothing to click.
30
+ * @returns The style, one of three objects that never change — a fresh one per
31
+ * pointer move would replace the `style` prop on every tremor of a hand.
32
+ */
33
+ export function chartSurfaceStyle(tracked, target = false) {
34
+ if (!tracked)
35
+ return IDLE_SURFACE;
36
+ return target ? TARGET_SURFACE : TRACKED_SURFACE;
37
+ }
38
+ /**
39
+ * Everything about the surface that is not the cursor.
40
+ *
41
+ * `touchAction` because every gesture is a pointer gesture and a browser that
42
+ * scrolled the page instead would take the drag with it; `userSelect` because a
43
+ * drag across a chart is a gesture and not a selection — without it the tick
44
+ * labels come up highlighted behind the rectangle, and stay highlighted in the
45
+ * picture the chart is exported as.
46
+ */
47
+ const SURFACE = {
48
+ display: 'block',
49
+ touchAction: 'none',
50
+ userSelect: 'none',
51
+ };
52
+ /** The pointer is off the plot: whatever cursor the page would have shown. */
53
+ const IDLE_SURFACE = { ...SURFACE };
54
+ /** The chart is drawing the crosshair, so the arrow beside it is hidden. */
55
+ const TRACKED_SURFACE = { ...SURFACE, cursor: 'none' };
56
+ /** Something under the pointer can be opened. */
57
+ const TARGET_SURFACE = { ...SURFACE, cursor: 'pointer' };
58
+ //# sourceMappingURL=chartSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartSurface.js","sourceRoot":"","sources":["../../../src/chart/ui/chartSurface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAgB,EAChB,MAAM,GAAG,KAAK;IAEd,IAAI,CAAC,OAAO;QAAE,OAAO,YAAY,CAAC;IAClC,OAAO,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC;AACnD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,GAAG;IACd,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,MAAM;CACV,CAAC;AAEX,8EAA8E;AAC9E,MAAM,YAAY,GAAkB,EAAE,GAAG,OAAO,EAAE,CAAC;AAEnD,4EAA4E;AAC5E,MAAM,eAAe,GAAkB,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAEtE,iDAAiD;AACjD,MAAM,cAAc,GAAkB,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC"}
@@ -19,4 +19,28 @@ export { TrackedLineChart } from './TrackedLineChart.tsx';
19
19
  export type { ChartStickSeries } from './stickChartModel.ts';
20
20
  export type { TrackedStickChartProps } from './TrackedStickChart.tsx';
21
21
  export { TrackedStickChart } from './TrackedStickChart.tsx';
22
+ export type { AxesProps } from './Axes.tsx';
23
+ export { Axes } from './Axes.tsx';
24
+ export type { AxisGuideProps } from './AxisGuide.tsx';
25
+ export { AxisGuide } from './AxisGuide.tsx';
26
+ export type { ChartStackPane, ChartStackProps } from './ChartStack.tsx';
27
+ export { ChartStack } from './ChartStack.tsx';
28
+ export type { ChartTrackerProps } from './ChartTracker.tsx';
29
+ export { ChartTracker } from './ChartTracker.tsx';
30
+ export type { PlotCaptionProps } from './PlotCaption.tsx';
31
+ export { PlotCaption } from './PlotCaption.tsx';
32
+ export type { SelectionRectProps } from './SelectionRect.tsx';
33
+ export { SelectionRect } from './SelectionRect.tsx';
34
+ export type { LegendEntry, TraceLegendProps } from './TraceLegend.tsx';
35
+ export { TraceLegend } from './TraceLegend.tsx';
36
+ export type { ChartClickModifiers } from './chartGestures.ts';
37
+ export { NO_MODIFIERS } from './chartGestures.ts';
38
+ export { chartSurfaceStyle } from './chartSurface.ts';
39
+ export type { ChartPointer, ChartPointerOptions } from './useChartPointer.ts';
40
+ export { isInsidePlot, leftChart, nextChartPointer, sameReading, useChartPointer, } from './useChartPointer.ts';
41
+ export type { ChartSizeHandle } from './useChartSize.ts';
42
+ export { nextChartSize, useChartSize } from './useChartSize.ts';
43
+ export type { ChartZoom, ChartZoomHandlers, ChartZoomOptions, } from './useChartZoom.ts';
44
+ export { useChartZoom } from './useChartZoom.ts';
45
+ export { useWheelListener } from './useWheelListener.ts';
22
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EACV,WAAW,EACX,eAAe,EACf,eAAe,EACf,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EACV,WAAW,EACX,eAAe,EACf,eAAe,EACf,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -11,4 +11,17 @@ export { ChartSeriesMarks } from "./ChartSeriesMarks.js";
11
11
  export { ChartTrackingLayer } from "./ChartTrackingLayer.js";
12
12
  export { TrackedLineChart } from "./TrackedLineChart.js";
13
13
  export { TrackedStickChart } from "./TrackedStickChart.js";
14
+ export { Axes } from "./Axes.js";
15
+ export { AxisGuide } from "./AxisGuide.js";
16
+ export { ChartStack } from "./ChartStack.js";
17
+ export { ChartTracker } from "./ChartTracker.js";
18
+ export { PlotCaption } from "./PlotCaption.js";
19
+ export { SelectionRect } from "./SelectionRect.js";
20
+ export { TraceLegend } from "./TraceLegend.js";
21
+ export { NO_MODIFIERS } from "./chartGestures.js";
22
+ export { chartSurfaceStyle } from "./chartSurface.js";
23
+ export { isInsidePlot, leftChart, nextChartPointer, sameReading, useChartPointer, } from "./useChartPointer.js";
24
+ export { nextChartSize, useChartSize } from "./useChartSize.js";
25
+ export { useChartZoom } from "./useChartZoom.js";
26
+ export { useWheelListener } from "./useWheelListener.js";
14
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chart/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAQ5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAC;AAO9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chart/ui/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAQ5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAC;AAO9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAG5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAY,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMhE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Where the pointer is over a chart, and what that place means.
3
+ *
4
+ * What it *means* is the one thing this hook does not decide. A mass spectrum
5
+ * reads an m/z, an intensity and the peak within reach; an infrared spectrum
6
+ * reads a wavenumber, an absorbance and the band it falls in. Both are the same
7
+ * mechanism — place the pointer in user units, refuse the margins, and report
8
+ * only when the answer changed — so the mechanism is here and the reading is
9
+ * handed in.
10
+ *
11
+ * Every value is compared before it is stored or reported. A pointer resting on
12
+ * one feature fires `pointermove` on every sub-pixel tremor of a hand, and a
13
+ * fresh answer each time would re-render the panel beside the chart — and, where
14
+ * that panel is a linked viewer that reports its own hovers back, would
15
+ * ping-pong between the two until the tab stops answering.
16
+ */
17
+ import type { RefObject } from 'react';
18
+ import type { PlotRect } from '../core/chartGeometry.ts';
19
+ import type { ChartPoint } from '../core/svgPoint.ts';
20
+ /** Where the pointer is, and what that place means. */
21
+ export interface ChartPointer<TReadout> {
22
+ /** Its position in user units, `null` whenever it is off the plot. */
23
+ position: ChartPoint | null;
24
+ /** What the chart reads under it, `null` whenever it is off the plot. */
25
+ readout: TReadout | null;
26
+ }
27
+ export interface ChartPointerOptions<TReadout> {
28
+ /** The SVG the chart is drawn on, as it was handed to its `ref`. */
29
+ svgRef: RefObject<SVGSVGElement | null>;
30
+ /**
31
+ * Where the plot sits inside that SVG. The pointer is only followed inside
32
+ * it: the margins carry the axis labels, and a crosshair drawn across them
33
+ * claims to read a value off a place where none is drawn.
34
+ */
35
+ plot: PlotRect;
36
+ /**
37
+ * What the chart reads at a point. Called on every move the pointer makes
38
+ * inside the plot, and read live rather than closed over, so it may capture
39
+ * the scales as they are currently zoomed.
40
+ */
41
+ read: (point: ChartPoint) => TReadout;
42
+ /**
43
+ * Whether two readings say the same thing, which is what suppresses the
44
+ * report of a hand resting still.
45
+ *
46
+ * A viewer normally compares less than the whole reading: the pointer's own
47
+ * position has already been compared by the time this is asked, so what is
48
+ * left is whichever *feature* the reading is about — the peak, the band — and
49
+ * not the fractional value under the crosshair, which changes on every pixel.
50
+ */
51
+ sameReadout: (current: TReadout, next: TReadout) => boolean;
52
+ /**
53
+ * Told what the chart reads under the pointer, and told `null` when it leaves
54
+ * the plot — called only when `sameReadout` says the answer changed, so it is
55
+ * safe to hang a highlight that redraws half the page on it.
56
+ * @default undefined
57
+ */
58
+ onReadout?: (readout: TReadout | null) => void;
59
+ }
60
+ /**
61
+ * Follow the pointer over a chart.
62
+ *
63
+ * The listeners are attached to the element rather than returned as props, so
64
+ * that a chart already spreading another hook's `onPointerMove` onto its SVG
65
+ * does not have to merge two handlers into one — and so that the options are
66
+ * read live, at the moment the pointer moves, rather than closed over when the
67
+ * listener was attached.
68
+ *
69
+ * The pointer leaving is heard as `pointerout` and not as the `pointerleave`
70
+ * that reads so much more naturally, because a chart with a control laid over
71
+ * it — a legend whose rows answer a hover — has two writers of one highlight
72
+ * and they must be sequenced. React synthesises the overlay's `pointerenter`
73
+ * from the *earlier* `pointerout` and dispatches it at the root, so a browser
74
+ * fires `pointerout` on the SVG, then React's `onPointerEnter` on the row, then
75
+ * `pointerleave` on the SVG: listening for the leave puts this hook's "nothing
76
+ * is under the pointer" **after** the row's "this trace is being read", and
77
+ * wipes it. Heard as `pointerout`, the report lands first and the row has the
78
+ * last word. The containment test is what `pointerleave` was giving for free.
79
+ * @param options - The chart, and how to read a point on it.
80
+ * @returns Where the pointer is and what it reads, both `null` while it is
81
+ * anywhere but over the plot.
82
+ */
83
+ export declare function useChartPointer<TReadout>(options: ChartPointerOptions<TReadout>): ChartPointer<TReadout>;
84
+ /**
85
+ * Whether a `pointerout` means the pointer has left the chart.
86
+ *
87
+ * It also fires on the way *into* a child of the SVG — a trace, a label, the
88
+ * rectangle behind a legend — which is not leaving the chart at all, and is the
89
+ * one thing `pointerleave` was giving for free.
90
+ * @param svg - The chart, `null` before it is on screen.
91
+ * @param related - What the pointer moved onto, `null` when it left the window
92
+ * altogether.
93
+ * @returns Whether the chart no longer has the pointer.
94
+ */
95
+ export declare function leftChart(svg: Element | null, related: EventTarget | null): boolean;
96
+ /**
97
+ * Whether two readings — either of which may be absent — say the same thing.
98
+ * @param current - What was last read, `null` while the pointer was away.
99
+ * @param next - What has just been read, `null` when it has left the plot.
100
+ * @param sameReadout - The viewer's own comparison.
101
+ * @returns Whether the report can be skipped.
102
+ */
103
+ export declare function sameReading<TReadout>(current: TReadout | null, next: TReadout | null, sameReadout: (current: TReadout, next: TReadout) => boolean): boolean;
104
+ /**
105
+ * What to hold, given where the pointer has just been seen.
106
+ *
107
+ * The answer already held comes back whenever it still stands, so the whole
108
+ * chart is left alone while a hand rests on a feature — `pointermove` fires on
109
+ * every tremor, and several of those land on the very same user-unit position.
110
+ * @param current - What is held.
111
+ * @param next - What has just been read.
112
+ * @param sameReadout - The viewer's own comparison, asked only once the pointer
113
+ * turns out not to have moved.
114
+ * @returns `current` itself when it already says it, `next` otherwise.
115
+ */
116
+ export declare function nextChartPointer<TReadout>(current: ChartPointer<TReadout>, next: ChartPointer<TReadout>, sameReadout: (current: TReadout, next: TReadout) => boolean): ChartPointer<TReadout>;
117
+ /**
118
+ * Whether a point is over the data rather than over an axis.
119
+ * @param plot - Where the plot sits inside the SVG.
120
+ * @param point - The point to test, in user units.
121
+ * @returns Whether it is inside the plot, edges included.
122
+ */
123
+ export declare function isInsidePlot(plot: PlotRect, point: ChartPoint): boolean;
124
+ //# sourceMappingURL=useChartPointer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChartPointer.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/useChartPointer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,uDAAuD;AACvD,MAAM,WAAW,YAAY,CAAC,QAAQ;IACpC,sEAAsE;IACtE,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5B,yEAAyE;IACzE,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB,CAAC,QAAQ;IAC3C,oEAAoE;IACpE,MAAM,EAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACxC;;;;OAIG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;;OAIG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,QAAQ,CAAC;IACtC;;;;;;;;OAQG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;IAC5D;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;CAChD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EACtC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GACrC,YAAY,CAAC,QAAQ,CAAC,CA6CxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,OAAO,GAAG,IAAI,EACnB,OAAO,EAAE,WAAW,GAAG,IAAI,GAC1B,OAAO,CAGT;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAClC,OAAO,EAAE,QAAQ,GAAG,IAAI,EACxB,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO,GAC1D,OAAO,CAIT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EACvC,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC/B,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC5B,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO,GAC1D,YAAY,CAAC,QAAQ,CAAC,CAcxB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAOvE"}