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,188 @@
1
+ /** Closest and furthest the canvas will go. */
2
+ export const MINIMUM_ZOOM = 0.25;
3
+ export const MAXIMUM_ZOOM = 8;
4
+ /**
5
+ * Biggest a drawing unit is ever drawn at, in pixels, unless a caller says
6
+ * otherwise.
7
+ *
8
+ * Chosen against the glycan canvas, where a symbol is 34 units across and a
9
+ * bond 60 long, so a drawing at this scale reads about the size it does in a
10
+ * paper — which is as big as it is worth drawing. Without the cap a
11
+ * disaccharide on a wide screen is blown up until three residues fill a metre
12
+ * of pixels. A surface with its own idea of how big is big enough passes its
13
+ * own maximum instead.
14
+ */
15
+ export const MAXIMUM_CONTENT_SCALE = 1.5;
16
+ /** The base view, seen as it comes: no zoom, no pan. */
17
+ export const INITIAL_VIEW = { zoom: 1, panX: 0, panY: 0 };
18
+ /**
19
+ * What the canvas shows before it is zoomed or panned.
20
+ *
21
+ * A drawing too big for the canvas is fitted to it, as anything drawn to be
22
+ * looked at whole must be. A drawing smaller than that is *not* stretched to
23
+ * fill it: it is drawn at its own size, up to `maximumScale`, in the middle of
24
+ * a window opened around it — so a disaccharide reads like a disaccharide
25
+ * however wide the screen it is on, and the empty canvas around it is still
26
+ * canvas, there to be clicked and drawn on.
27
+ * @param content - Size of the whole drawing, in canvas units.
28
+ * @param content.width - How wide the drawing is.
29
+ * @param content.height - How tall the drawing is.
30
+ * @param viewport - Size of the canvas on screen, in pixels.
31
+ * @param viewport.width - How wide the canvas is.
32
+ * @param viewport.height - How tall the canvas is.
33
+ * @param maximumScale - Biggest a canvas unit may be drawn, in pixels.
34
+ * @returns The rectangle of the drawing seen at zoom `1`.
35
+ */
36
+ export function baseViewBox(content, viewport, maximumScale = MAXIMUM_CONTENT_SCALE) {
37
+ // Before the canvas has been measured there is nothing to fit the drawing
38
+ // to; showing it whole is what the `viewBox` does on its own anyway.
39
+ if (content.width <= 0 ||
40
+ content.height <= 0 ||
41
+ viewport.width <= 0 ||
42
+ viewport.height <= 0) {
43
+ return { x: 0, y: 0, width: content.width, height: content.height };
44
+ }
45
+ const fitted = Math.min(viewport.width / content.width, viewport.height / content.height);
46
+ const scale = Math.min(fitted, maximumScale);
47
+ const width = viewport.width / scale;
48
+ const height = viewport.height / scale;
49
+ return {
50
+ x: (content.width - width) / 2,
51
+ y: (content.height - height) / 2,
52
+ width,
53
+ height,
54
+ };
55
+ }
56
+ /**
57
+ * The magnification a window factor asks for.
58
+ *
59
+ * There are two ways to say "zoom" and this package uses both, so the
60
+ * conversion is named rather than written as a stray reciprocal. A chart zooms
61
+ * by resizing the **window** it shows — `chartWheelFactor` returns that, and a
62
+ * factor above one means a wider window and therefore less magnification. A
63
+ * drawing surface zooms by scaling the picture, so `zoomAbout` takes a
64
+ * **magnification**, where above one means larger.
65
+ *
66
+ * Feeding one to the other reverses the wheel: the gesture still works, it
67
+ * simply does the opposite of what the hand meant, which is the kind of defect
68
+ * that survives review because nothing throws and the picture still moves.
69
+ * @param windowFactor - How much the window is being multiplied by.
70
+ * @returns The magnification that corresponds to it.
71
+ */
72
+ export function magnificationOf(windowFactor) {
73
+ if (!Number.isFinite(windowFactor) || windowFactor === 0)
74
+ return 1;
75
+ return 1 / windowFactor;
76
+ }
77
+ /**
78
+ * Hold a zoom inside what the surface allows.
79
+ * @param zoom - The wanted zoom.
80
+ * @param bounds - How far in and out this surface goes.
81
+ * @returns The zoom it will actually use.
82
+ */
83
+ export function clampZoom(zoom, bounds = {}) {
84
+ const { minimum = MINIMUM_ZOOM, maximum = MAXIMUM_ZOOM } = bounds;
85
+ // A zoom that is not a number at all is a lost view rather than a small one,
86
+ // so it comes back to the base rather than to the floor — held inside the
87
+ // bounds all the same, since a surface whose floor is the fit has no base
88
+ // below it.
89
+ const wanted = Number.isFinite(zoom) ? zoom : 1;
90
+ return Math.min(maximum, Math.max(minimum, wanted));
91
+ }
92
+ /**
93
+ * Zoom while keeping one point of the drawing under the pointer.
94
+ *
95
+ * Without the anchor the drawing would drift away from the cursor as it grows,
96
+ * which is what makes a wheel zoom feel wrong.
97
+ * @param view - Where the canvas is now.
98
+ * @param base - What the canvas shows at zoom `1`.
99
+ * @param factor - How much to multiply the zoom by.
100
+ * @param anchor - The surface point to keep still, usually the pointer.
101
+ * @param anchor.x - Its horizontal position, in drawing units.
102
+ * @param anchor.y - Its vertical position, in drawing units.
103
+ * @param bounds - How far in and out this surface goes.
104
+ * @returns Where the canvas goes.
105
+ */
106
+ export function zoomAbout(view, base, factor, anchor, bounds = {}) {
107
+ const zoom = clampZoom(view.zoom * factor, bounds);
108
+ if (zoom === view.zoom)
109
+ return view;
110
+ const beforeWidth = base.width / view.zoom;
111
+ const beforeHeight = base.height / view.zoom;
112
+ const afterWidth = base.width / zoom;
113
+ const afterHeight = base.height / zoom;
114
+ // The pan is measured from the base view, so the anchor is read from there
115
+ // too: a window written that way keeps its place over the drawing when the
116
+ // canvas is resized and the base view moves under it.
117
+ const anchorX = anchor.x - base.x;
118
+ const anchorY = anchor.y - base.y;
119
+ const fractionX = beforeWidth === 0 ? 0 : (anchorX - view.panX) / beforeWidth;
120
+ const fractionY = beforeHeight === 0 ? 0 : (anchorY - view.panY) / beforeHeight;
121
+ return {
122
+ zoom,
123
+ panX: anchorX - fractionX * afterWidth,
124
+ panY: anchorY - fractionY * afterHeight,
125
+ };
126
+ }
127
+ /**
128
+ * Slide the window, in canvas units.
129
+ * @param view - Where the canvas is now.
130
+ * @param deltaX - How far to move it horizontally.
131
+ * @param deltaY - How far to move it vertically.
132
+ * @returns Where the canvas goes.
133
+ */
134
+ export function panBy(view, deltaX, deltaY) {
135
+ return {
136
+ zoom: view.zoom,
137
+ panX: view.panX - deltaX,
138
+ panY: view.panY - deltaY,
139
+ };
140
+ }
141
+ /**
142
+ * Set the zoom about the middle of what is on screen, which is what the
143
+ * toolbar buttons want — they have no pointer to zoom around.
144
+ * @param view - Where the canvas is now.
145
+ * @param base - What the canvas shows at zoom `1`.
146
+ * @param zoom - The wanted zoom.
147
+ * @param bounds - How far in and out this surface goes.
148
+ * @returns Where the canvas goes.
149
+ */
150
+ export function zoomToAboutCentre(view, base, zoom, bounds = {}) {
151
+ const centre = {
152
+ x: base.x + view.panX + base.width / view.zoom / 2,
153
+ y: base.y + view.panY + base.height / view.zoom / 2,
154
+ };
155
+ return zoomAbout(view, base, clampZoom(zoom, bounds) / view.zoom, centre, bounds);
156
+ }
157
+ /**
158
+ * The rectangle of the drawing the canvas is showing.
159
+ * @param view - Where the canvas is.
160
+ * @param base - What the canvas shows at zoom `1`.
161
+ * @returns The rectangle.
162
+ */
163
+ export function viewBoxOf(view, base) {
164
+ return {
165
+ x: base.x + view.panX,
166
+ y: base.y + view.panY,
167
+ width: base.width / view.zoom,
168
+ height: base.height / view.zoom,
169
+ };
170
+ }
171
+ /**
172
+ * The rectangle, written the way the `viewBox` attribute wants it.
173
+ * @param box - The rectangle.
174
+ * @returns The attribute.
175
+ */
176
+ export function viewBoxAttribute(box) {
177
+ return `${round(box.x)} ${round(box.y)} ${round(box.width)} ${round(box.height)}`;
178
+ }
179
+ /**
180
+ * A coordinate, short enough not to bloat an attribute rewritten on every
181
+ * frame of a drag.
182
+ * @param value - The coordinate.
183
+ * @returns It, to two decimals.
184
+ */
185
+ function round(value) {
186
+ return Math.round(value * 100) / 100;
187
+ }
188
+ //# sourceMappingURL=viewTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewTransform.js","sourceRoot":"","sources":["../../../src/chart/core/viewTransform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * The window a gesture asks for, where each viewer's own fitting holds the one
3
+ * the data asks for.
4
+ *
5
+ * Nothing here touches React or the DOM: a drag arrives as two corners in the
6
+ * user units of the SVG, a wheel as a factor, and each leaves as a window — so
7
+ * what a gesture does to a chart can be read, and tested, without one being on
8
+ * screen.
9
+ */
10
+ import type { ChartDomain, ZoomRules } from './chartDomain.ts';
11
+ import type { PlotRect } from './chartGeometry.ts';
12
+ import type { ChartScale } from './chartScale.ts';
13
+ /**
14
+ * How far the pointer has to travel before a press counts as a gesture rather
15
+ * than as a click, in user units of the SVG.
16
+ *
17
+ * Across the x axis it is what decides whether there is a window at all: below
18
+ * this the gesture is a click that happened to wobble — which is most clicks
19
+ * made on a trackpad — and zooming to it would leave a window a fraction of a
20
+ * data unit wide, from which the only way back is the double click nobody knows
21
+ * about yet. `chartGestures.ts` asks the same question of the vertical travel
22
+ * before it calls a release a click, since a drag of one pixel across and three
23
+ * hundred down went somewhere.
24
+ */
25
+ export declare const MINIMUM_DRAG = 4;
26
+ /** The two corners of a drag, in the user units of the SVG. */
27
+ export interface DragBox {
28
+ /** Where the press landed, horizontally. */
29
+ fromX: number;
30
+ /** Where it landed vertically. */
31
+ fromY: number;
32
+ /** Where the pointer is now, horizontally. */
33
+ toX: number;
34
+ /** Where it is vertically. */
35
+ toY: number;
36
+ }
37
+ /** The drag as it is being made, for the preview rectangle to be drawn from. */
38
+ export interface ZoomSelection extends DragBox {
39
+ /**
40
+ * Whether letting go here would take the y axis with it, which is what the
41
+ * rectangle changes shape to say.
42
+ */
43
+ zoomsYAxis: boolean;
44
+ }
45
+ /**
46
+ * The drag as the preview rectangle needs it.
47
+ *
48
+ * The answer the rectangle changes shape on is worked out once, here, rather
49
+ * than by the rectangle itself — so what the preview promises and what letting
50
+ * go actually does are the same test rather than two that have to agree.
51
+ *
52
+ * A `select` drag is therefore always a band, however far past the baseline it
53
+ * strays: its answer is two numbers on one axis, so a preview that grew into a
54
+ * rectangle would promise a height nobody is ever told about.
55
+ * @param drag - The drag being made, `null` when none is.
56
+ * @param yScale - The y axis as it is currently zoomed.
57
+ * @param rules - How the y axis behaves and what a drag means, defaulting to a
58
+ * stick spectrum read by dragging its horizontal axis.
59
+ * @returns The selection to draw, `null` when there is no drag.
60
+ */
61
+ export declare function zoomSelection(drag: DragBox | null, yScale: ChartScale, rules?: ZoomRules): ZoomSelection | null;
62
+ /**
63
+ * Whether a drag let go here asks for the y axis as well.
64
+ *
65
+ * The baseline, not the bottom of the plot: on a mirrored chart zero runs across
66
+ * the middle, so a drag that dips into the reflected half has crossed it, and on
67
+ * an ordinary chart the same test means the pointer went below the axis and out
68
+ * into the margin. One rule, two gestures that both read as "and take the height
69
+ * with you".
70
+ *
71
+ * **Which way "past" points depends on which side of the baseline the data is
72
+ * on**, which is what `pointsDown` says. Features that stand up out of a
73
+ * baseline at the foot of the plot — mass sticks, absorbance bands — are passed
74
+ * by going below it. Percent transmittance hangs down from 100, which sits near
75
+ * the top of the plot, so there the gesture is a drag released *above* the
76
+ * baseline; asking the other question would answer yes almost everywhere in the
77
+ * plot and make every ordinary drag take the value axis with it.
78
+ * @param pointerY - Where the pointer is, in user units of the SVG.
79
+ * @param yScale - The y axis as it is currently zoomed.
80
+ * @param baseline - The value the gesture is judged against. Defaults to `0`.
81
+ * @param pointsDown - Whether the data hangs below the baseline. Defaults to
82
+ * `false`.
83
+ * @returns Whether the y axis comes along.
84
+ */
85
+ export declare function releasedBeyondBaseline(pointerY: number, yScale: ChartScale, baseline?: number, pointsDown?: boolean): boolean;
86
+ /**
87
+ * The window a drag asks for, or `null` when it asks for nothing.
88
+ *
89
+ * Both corners are pulled back inside the plot before they are read, so a drag
90
+ * that ran out over the axis labels — which is how the y axis is asked for in
91
+ * the first place — zooms to the edge of the data rather than to whatever lies
92
+ * under the margin.
93
+ *
94
+ * Whether the baseline is kept in the window is the one thing that differs
95
+ * between viewers, and `YAxisRules` is where they say so. A stick spectrum keeps
96
+ * it: sticks are drawn from it, and a window starting at a tenth of the base
97
+ * peak would cut every one of them off at the ankles. A continuous trace does
98
+ * not: a band dragged out between two absorbances is asked about between those
99
+ * two absorbances.
100
+ * @param current - The window in force, kept on the axis that is not asked for.
101
+ * @param drag - The two corners, in user units of the SVG.
102
+ * @param plot - Where the plot sits inside the SVG.
103
+ * @param xScale - The x axis as it is currently zoomed.
104
+ * @param yScale - The y axis as it is currently zoomed.
105
+ * @param rules - How the y axis behaves and what a drag means, defaulting to a
106
+ * stick spectrum read by dragging its horizontal axis.
107
+ * @returns The window to show, `null` when the drag was too short to be one.
108
+ */
109
+ export declare function zoomedDomain(current: ChartDomain, drag: DragBox, plot: PlotRect, xScale: ChartScale, yScale: ChartScale, rules?: ZoomRules): ChartDomain | null;
110
+ /**
111
+ * The window one turn of the wheel asks for.
112
+ *
113
+ * Both bounds are scaled about the baseline rather than about the middle of the
114
+ * window. On a stick spectrum that keeps the foot the sticks are drawn from on
115
+ * the axis, and keeps a mirrored chart symmetric — scaling about the middle
116
+ * would send the two halves apart at different rates, so a peak of one height
117
+ * would mean two different intensities. On an axis running downwards from a
118
+ * baseline, such as percent transmittance from 100, it is what stretches the
119
+ * bands instead of walking the whole trace off the plot.
120
+ * @param current - The window in force.
121
+ * @param factor - What one wheel event is worth, above one to zoom out.
122
+ * @param baseline - The value to scale about. Defaults to `0`.
123
+ * @returns The window to show, `current` itself when the factor is not one a
124
+ * window survives.
125
+ */
126
+ export declare function scaledYAxis(current: ChartDomain, factor: number, baseline?: number): ChartDomain;
127
+ //# sourceMappingURL=zoomDomain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoomDomain.d.ts","sourceRoot":"","sources":["../../../src/chart/core/zoomDomain.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,+DAA+D;AAC/D,MAAM,WAAW,OAAO;IACtB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAc,SAAQ,OAAO;IAC5C;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,OAAO,GAAG,IAAI,EACpB,MAAM,EAAE,UAAU,EAClB,KAAK,GAAE,SAAc,GACpB,aAAa,GAAG,IAAI,CAoBtB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,EAClB,QAAQ,SAAgC,EACxC,UAAU,UAAkC,GAC3C,OAAO,CAIT;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,KAAK,GAAE,SAAc,GACpB,WAAW,GAAG,IAAI,CA8CpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,SAAgC,GACvC,WAAW,CAOb"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * The window a gesture asks for, where each viewer's own fitting holds the one
3
+ * the data asks for.
4
+ *
5
+ * Nothing here touches React or the DOM: a drag arrives as two corners in the
6
+ * user units of the SVG, a wheel as a factor, and each leaves as a window — so
7
+ * what a gesture does to a chart can be read, and tested, without one being on
8
+ * screen.
9
+ */
10
+ import { clamp } from "../../format/core/clamp.js";
11
+ import { DEFAULT_Y_AXIS_RULES } from "./chartDomain.js";
12
+ import { chartPixel, chartValue } from "./chartScale.js";
13
+ /**
14
+ * How far the pointer has to travel before a press counts as a gesture rather
15
+ * than as a click, in user units of the SVG.
16
+ *
17
+ * Across the x axis it is what decides whether there is a window at all: below
18
+ * this the gesture is a click that happened to wobble — which is most clicks
19
+ * made on a trackpad — and zooming to it would leave a window a fraction of a
20
+ * data unit wide, from which the only way back is the double click nobody knows
21
+ * about yet. `chartGestures.ts` asks the same question of the vertical travel
22
+ * before it calls a release a click, since a drag of one pixel across and three
23
+ * hundred down went somewhere.
24
+ */
25
+ export const MINIMUM_DRAG = 4;
26
+ /**
27
+ * The drag as the preview rectangle needs it.
28
+ *
29
+ * The answer the rectangle changes shape on is worked out once, here, rather
30
+ * than by the rectangle itself — so what the preview promises and what letting
31
+ * go actually does are the same test rather than two that have to agree.
32
+ *
33
+ * A `select` drag is therefore always a band, however far past the baseline it
34
+ * strays: its answer is two numbers on one axis, so a preview that grew into a
35
+ * rectangle would promise a height nobody is ever told about.
36
+ * @param drag - The drag being made, `null` when none is.
37
+ * @param yScale - The y axis as it is currently zoomed.
38
+ * @param rules - How the y axis behaves and what a drag means, defaulting to a
39
+ * stick spectrum read by dragging its horizontal axis.
40
+ * @returns The selection to draw, `null` when there is no drag.
41
+ */
42
+ export function zoomSelection(drag, yScale, rules = {}) {
43
+ if (drag === null)
44
+ return null;
45
+ const { baseline = DEFAULT_Y_AXIS_RULES.baseline, pointsDown = DEFAULT_Y_AXIS_RULES.pointsDown, drag: mode = 'xAxis', } = rules;
46
+ return {
47
+ fromX: drag.fromX,
48
+ fromY: drag.fromY,
49
+ toX: drag.toX,
50
+ toY: drag.toY,
51
+ // The box tool takes the height always, so the preview is a rectangle from
52
+ // the first pixel of the gesture rather than a full-height band that
53
+ // suddenly becomes one; a select drag never takes it at all.
54
+ zoomsYAxis: mode === 'box' ||
55
+ (mode !== 'select' &&
56
+ releasedBeyondBaseline(drag.toY, yScale, baseline, pointsDown)),
57
+ };
58
+ }
59
+ /**
60
+ * Whether a drag let go here asks for the y axis as well.
61
+ *
62
+ * The baseline, not the bottom of the plot: on a mirrored chart zero runs across
63
+ * the middle, so a drag that dips into the reflected half has crossed it, and on
64
+ * an ordinary chart the same test means the pointer went below the axis and out
65
+ * into the margin. One rule, two gestures that both read as "and take the height
66
+ * with you".
67
+ *
68
+ * **Which way "past" points depends on which side of the baseline the data is
69
+ * on**, which is what `pointsDown` says. Features that stand up out of a
70
+ * baseline at the foot of the plot — mass sticks, absorbance bands — are passed
71
+ * by going below it. Percent transmittance hangs down from 100, which sits near
72
+ * the top of the plot, so there the gesture is a drag released *above* the
73
+ * baseline; asking the other question would answer yes almost everywhere in the
74
+ * plot and make every ordinary drag take the value axis with it.
75
+ * @param pointerY - Where the pointer is, in user units of the SVG.
76
+ * @param yScale - The y axis as it is currently zoomed.
77
+ * @param baseline - The value the gesture is judged against. Defaults to `0`.
78
+ * @param pointsDown - Whether the data hangs below the baseline. Defaults to
79
+ * `false`.
80
+ * @returns Whether the y axis comes along.
81
+ */
82
+ export function releasedBeyondBaseline(pointerY, yScale, baseline = DEFAULT_Y_AXIS_RULES.baseline, pointsDown = DEFAULT_Y_AXIS_RULES.pointsDown) {
83
+ const atBaseline = chartPixel(yScale, baseline);
84
+ // SVG counts pixels downwards, so "above the baseline" is the smaller pixel.
85
+ return pointsDown ? pointerY < atBaseline : pointerY > atBaseline;
86
+ }
87
+ /**
88
+ * The window a drag asks for, or `null` when it asks for nothing.
89
+ *
90
+ * Both corners are pulled back inside the plot before they are read, so a drag
91
+ * that ran out over the axis labels — which is how the y axis is asked for in
92
+ * the first place — zooms to the edge of the data rather than to whatever lies
93
+ * under the margin.
94
+ *
95
+ * Whether the baseline is kept in the window is the one thing that differs
96
+ * between viewers, and `YAxisRules` is where they say so. A stick spectrum keeps
97
+ * it: sticks are drawn from it, and a window starting at a tenth of the base
98
+ * peak would cut every one of them off at the ankles. A continuous trace does
99
+ * not: a band dragged out between two absorbances is asked about between those
100
+ * two absorbances.
101
+ * @param current - The window in force, kept on the axis that is not asked for.
102
+ * @param drag - The two corners, in user units of the SVG.
103
+ * @param plot - Where the plot sits inside the SVG.
104
+ * @param xScale - The x axis as it is currently zoomed.
105
+ * @param yScale - The y axis as it is currently zoomed.
106
+ * @param rules - How the y axis behaves and what a drag means, defaulting to a
107
+ * stick spectrum read by dragging its horizontal axis.
108
+ * @returns The window to show, `null` when the drag was too short to be one.
109
+ */
110
+ export function zoomedDomain(current, drag, plot, xScale, yScale, rules = {}) {
111
+ const { baseline = DEFAULT_Y_AXIS_RULES.baseline, keepBaseline = DEFAULT_Y_AXIS_RULES.keepBaseline, pointsDown = DEFAULT_Y_AXIS_RULES.pointsDown, drag: mode = 'xAxis', } = rules;
112
+ const fromX = clamp(drag.fromX, plot.left, plot.right);
113
+ const toX = clamp(drag.toX, plot.left, plot.right);
114
+ if (Math.abs(toX - fromX) < MINIMUM_DRAG)
115
+ return null;
116
+ // Sorted after inverting, not before: an axis drawn right to left — an
117
+ // infrared spectrum runs from 4000 down to 400 — maps the leftmost pixel to
118
+ // the *highest* value, so taking the left edge as the lower bound would hand
119
+ // back a window whose ends are the wrong way round, and every scale built
120
+ // from it would draw the trace mirrored.
121
+ const firstX = chartValue(xScale, fromX);
122
+ const secondX = chartValue(xScale, toX);
123
+ const x = [
124
+ Math.min(firstX, secondX),
125
+ Math.max(firstX, secondX),
126
+ ];
127
+ // The box tool is asked for the rectangle it was given, wherever it was let
128
+ // go; the reading gesture takes the height only when it crossed the baseline.
129
+ if (mode !== 'box' &&
130
+ !releasedBeyondBaseline(drag.toY, yScale, baseline, pointsDown)) {
131
+ return { x, y: current.y };
132
+ }
133
+ const fromY = chartValue(yScale, clamp(drag.fromY, plot.top, plot.bottom));
134
+ const toY = chartValue(yScale, clamp(drag.toY, plot.top, plot.bottom));
135
+ // Both ends, so a baseline the data runs *down* from — 100 percent
136
+ // transmittance — is kept as surely as one it stands on. The box tool holds no
137
+ // baseline at all: a rectangle dragged round a feature is a promise about
138
+ // exactly that rectangle, and a viewer whose axis rules keep its baseline
139
+ // would otherwise see the tool quietly return a taller window than the one
140
+ // drawn.
141
+ const holdBaseline = keepBaseline && mode !== 'box';
142
+ const bottom = holdBaseline
143
+ ? Math.min(baseline, fromY, toY)
144
+ : Math.min(fromY, toY);
145
+ const top = holdBaseline
146
+ ? Math.max(baseline, fromY, toY)
147
+ : Math.max(fromY, toY);
148
+ return top > bottom ? { x, y: [bottom, top] } : { x, y: current.y };
149
+ }
150
+ /**
151
+ * The window one turn of the wheel asks for.
152
+ *
153
+ * Both bounds are scaled about the baseline rather than about the middle of the
154
+ * window. On a stick spectrum that keeps the foot the sticks are drawn from on
155
+ * the axis, and keeps a mirrored chart symmetric — scaling about the middle
156
+ * would send the two halves apart at different rates, so a peak of one height
157
+ * would mean two different intensities. On an axis running downwards from a
158
+ * baseline, such as percent transmittance from 100, it is what stretches the
159
+ * bands instead of walking the whole trace off the plot.
160
+ * @param current - The window in force.
161
+ * @param factor - What one wheel event is worth, above one to zoom out.
162
+ * @param baseline - The value to scale about. Defaults to `0`.
163
+ * @returns The window to show, `current` itself when the factor is not one a
164
+ * window survives.
165
+ */
166
+ export function scaledYAxis(current, factor, baseline = DEFAULT_Y_AXIS_RULES.baseline) {
167
+ if (!Number.isFinite(factor) || factor <= 0)
168
+ return current;
169
+ const y = [
170
+ baseline + (current.y[0] - baseline) * factor,
171
+ baseline + (current.y[1] - baseline) * factor,
172
+ ];
173
+ return y[1] > y[0] ? { x: current.x, y } : current;
174
+ }
175
+ //# sourceMappingURL=zoomDomain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoomDomain.js","sourceRoot":"","sources":["../../../src/chart/core/zoomDomain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { PlotRect } from '../core/chartGeometry.ts';
3
+ import type { ChartScale } from '../core/chartScale.ts';
4
+ export interface AxesProps {
5
+ /** Where the plot sits inside the SVG. */
6
+ plot: PlotRect;
7
+ /** The window on screen, which the ticks along the bottom are chosen for. */
8
+ xDomain: readonly [number, number];
9
+ /** The window on screen, which the ticks up the side are chosen for. */
10
+ yDomain: readonly [number, number];
11
+ /**
12
+ * The horizontal axis as it is currently zoomed. A scale built onto a
13
+ * reversed pixel range is drawn reversed with no further ceremony, which is
14
+ * what an infrared spectrum running from 4000 down to 400 needs.
15
+ */
16
+ xScale: ChartScale;
17
+ /** The vertical axis as it is currently zoomed. */
18
+ yScale: ChartScale;
19
+ /**
20
+ * Whether the vertical labels are written by magnitude, so the half below
21
+ * the rule reads `100 50 0 50 100` rather than `-100 -50 0 50 100`. What the
22
+ * lower half of a mirrored pair means is a second spectrum drawn downwards,
23
+ * never a negative value, and a minus sign in front of every one of its
24
+ * labels says otherwise.
25
+ * @default false
26
+ */
27
+ absYTicks?: boolean;
28
+ /**
29
+ * Whether the numbers along the bottom are written.
30
+ *
31
+ * Panes stacked over one window would each repeat `2.5 5.0 7.5` and spend a
32
+ * tick row of height on it, so only the pane at the foot writes them. The
33
+ * grid and the axis line stay — they are what a peak's height is read against.
34
+ * @default true
35
+ */
36
+ showXTicks?: boolean;
37
+ /**
38
+ * Whether the name of the horizontal axis is written under it.
39
+ *
40
+ * Separate from `showXTicks` because the two go at different moments — a pane
41
+ * above the foot of a stack keeps neither, a chart in a narrow panel keeps its
42
+ * numbers. `xTitle` stays required either way: which pane is the foot changes.
43
+ * @default true
44
+ */
45
+ showXTitle?: boolean;
46
+ /**
47
+ * What the horizontal axis is called — `m/z`, `wavenumber (cm⁻¹)`.
48
+ *
49
+ * Required rather than defaulted, because there is no name that is right for
50
+ * every spectrum and a default would be one viewer's units silently drawn
51
+ * under another's data.
52
+ */
53
+ xTitle: string;
54
+ /** What the vertical axis is called — `intensity`, `absorbance`, `%T`. */
55
+ yTitle: string;
56
+ /**
57
+ * How much room one label along the bottom is given, in pixels.
58
+ *
59
+ * The default is the width of the widest number a spectrum axis writes — a
60
+ * mass at four decimals — so that a chart in a narrow panel carries three
61
+ * labels rather than six run together. A chart whose numbers are known to be
62
+ * short says so and gets more of them: a fixed axis over a few hundred mass
63
+ * units writes `400 600 800`, and at the default spacing a column that narrow
64
+ * is given a single tick, which says nothing about the range at all.
65
+ * @default 90
66
+ */
67
+ xTickSpacing?: number;
68
+ /**
69
+ * How much room one label up the side is given, in pixels.
70
+ * @default 44
71
+ */
72
+ yTickSpacing?: number;
73
+ }
74
+ /**
75
+ * The frame the spectra are read against: two axis lines, a grid, and titles.
76
+ *
77
+ * The ticks are rules across the whole plot rather than dashes at its edge. A
78
+ * feature is read for its height against the ones around it — is this the base
79
+ * peak, is that band half of it — and a dash on the far left is a measuring
80
+ * stick nobody can lay across the peak they are looking at. The rules
81
+ * are drawn in the palest colour the theme carries and under the data band, so
82
+ * a grid line is never mistaken for a trace.
83
+ *
84
+ * Every number is written outside the plot, and every line inside it. That is
85
+ * what lets the data band be clipped without a label being cut in half, and it
86
+ * keeps the plot itself free for the only thing it is about.
87
+ *
88
+ * The axis pair is one L rather than a box: the top and the right of a spectrum
89
+ * are open, because a peak that runs out of the top is a peak the zoom has cut
90
+ * off, and a rule along the top would read as a ceiling the measurement stopped
91
+ * at.
92
+ *
93
+ * How many ticks there are follows the room there is for them — a chart in a
94
+ * narrow panel is given fewer, rather than the same six labels overprinting one
95
+ * another — and the precision each is written to comes from the step, so a
96
+ * window two millimass units wide is labelled to four decimals and a full scan
97
+ * to none. The notation is settled once per axis rather than per label, so an
98
+ * intensity axis running to two hundred million reads `5e+7 1e+8 1.5e+8 2e+8`
99
+ * and not a column of nine digits the title has to be read around.
100
+ * @param props - Component props.
101
+ * @returns The axes, as SVG.
102
+ */
103
+ export declare function Axes(props: AxesProps): ReactElement;
104
+ //# sourceMappingURL=Axes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Axes.d.ts","sourceRoot":"","sources":["../../../src/chart/ui/Axes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAM1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIxD,MAAM,WAAW,SAAS;IACxB,0CAA0C;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,6EAA6E;IAC7E,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,wEAAwE;IACxE,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;;OAIG;IACH,MAAM,EAAE,UAAU,CAAC;IACnB,mDAAmD;IACnD,MAAM,EAAE,UAAU,CAAC;IACnB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;OAUG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CA+HnD"}