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
@@ -24,7 +24,10 @@ export interface ChartScale {
24
24
  * @param rangeMax - The pixel `domainMax` maps to.
25
25
  * @returns The mapping. A zero-width or non-finite domain gives a `factor` of
26
26
  * zero, which pins every value to the middle of the range so that a constant
27
- * column still draws instead of vanishing.
27
+ * column still draws instead of vanishing. A range that is not a range — a
28
+ * plot measured before it was laid out — gives an `offset` of `NaN` instead,
29
+ * because there is no pixel a value could honestly be put at, and every mark
30
+ * already declines to draw what does not map.
28
31
  */
29
32
  export declare function chartScale(domainMin: number, domainMax: number, rangeMin: number, rangeMax: number): ChartScale;
30
33
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"chartScale.d.ts","sourceRoot":"","sources":["../../../src/chart/core/chartScale.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,UAAU,CASZ;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAInE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,CAAC,GAAG,CAAK,GAAG,MAAM,CAE1E"}
1
+ {"version":3,"file":"chartScale.d.ts","sourceRoot":"","sources":["../../../src/chart/core/chartScale.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,UAAU,CASZ;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAInE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,CAAC,GAAG,CAAK,GAAG,MAAM,CAE1E"}
@@ -11,14 +11,18 @@ import { roundTo } from "../../format/core/roundTo.js";
11
11
  * @param rangeMax - The pixel `domainMax` maps to.
12
12
  * @returns The mapping. A zero-width or non-finite domain gives a `factor` of
13
13
  * zero, which pins every value to the middle of the range so that a constant
14
- * column still draws instead of vanishing.
14
+ * column still draws instead of vanishing. A range that is not a range — a
15
+ * plot measured before it was laid out — gives an `offset` of `NaN` instead,
16
+ * because there is no pixel a value could honestly be put at, and every mark
17
+ * already declines to draw what does not map.
15
18
  */
16
19
  export function chartScale(domainMin, domainMax, rangeMin, rangeMax) {
17
20
  const span = domainMax - domainMin;
18
21
  const reach = rangeMax - rangeMin;
19
- if (span === 0 || !Number.isFinite(span) || !Number.isFinite(reach)) {
20
- const middle = (rangeMin + rangeMax) / 2;
21
- return { offset: Number.isFinite(middle) ? middle : 0, factor: 0 };
22
+ if (!Number.isFinite(reach))
23
+ return { offset: Number.NaN, factor: 0 };
24
+ if (span === 0 || !Number.isFinite(span)) {
25
+ return { offset: (rangeMin + rangeMax) / 2, factor: 0 };
22
26
  }
23
27
  const factor = reach / span;
24
28
  return { offset: rangeMin - domainMin * factor, factor };
@@ -1 +1 @@
1
- {"version":3,"file":"chartScale.js","sourceRoot":"","sources":["../../../src/chart/core/chartScale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAiBvD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,UAAU,CACxB,SAAiB,EACjB,SAAiB,EACjB,QAAgB,EAChB,QAAgB;IAEhB,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,KAAiB,EAAE,KAAa;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAC5C,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,KAAiB,EAAE,KAAa;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAC5C,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACpD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,WAAkB,CAAC;IAChE,OAAO,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"chartScale.js","sourceRoot":"","sources":["../../../src/chart/core/chartScale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAiBvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,UAAU,CACxB,SAAiB,EACjB,SAAiB,EACjB,QAAgB,EAChB,QAAgB;IAEhB,MAAM,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACtE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,KAAiB,EAAE,KAAa;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAC5C,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,KAAiB,EAAE,KAAa;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAC5C,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACpD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,WAAkB,CAAC;IAChE,OAAO,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Every colour and every measurement the chart is drawn with.
3
+ *
4
+ * Each colour is a custom property with a literal fallback baked in, and is
5
+ * applied through the `style` prop rather than through the matching SVG
6
+ * attribute — `fill="var(--spectrum-axis, #64748b)"` is not a colour any browser
7
+ * resolves, because `var()` is a CSS value and a presentation attribute is not
8
+ * parsed as one. `style={{ fill: CHART_COLORS.axis }}` is.
9
+ *
10
+ * One set of tokens for every viewer built on this package, rather than one per
11
+ * viewer: a page showing a mass spectrum beside an infrared one is showing two
12
+ * charts that have to look like the same instrument, and two token families
13
+ * would let them drift apart at the first theme change.
14
+ *
15
+ * The fallbacks are what make the package usable on its own: a host that sets
16
+ * none of these tokens still gets a chart that reads correctly, and a host with
17
+ * a dark theme or a house palette overrides whichever it cares about by setting
18
+ * the properties on any ancestor. Nothing here is a prop, because a colour
19
+ * threaded through props is a colour that ends up hard-coded in one component
20
+ * that forgot to accept it.
21
+ */
22
+ /** The colours of everything the chart draws that is not a spectrum. */
23
+ export declare const CHART_COLORS: {
24
+ /** The two axis lines and their ticks. */
25
+ readonly axis: "var(--spectrum-axis, #64748b)";
26
+ /** The numbers along both axes. */
27
+ readonly tick: "var(--spectrum-tick, #475569)";
28
+ /** The axis titles, whatever the viewer calls its two axes. */
29
+ readonly title: "var(--spectrum-title, #334155)";
30
+ /** The rules across the plot, behind the data. */
31
+ readonly grid: "var(--spectrum-grid, #e2e8f0)";
32
+ /** The rule at zero, which a mirrored pair is reflected in. */
33
+ readonly zeroRule: "var(--spectrum-zero-rule, #cbd5e1)";
34
+ /** A mark on a feature an annotation explained. */
35
+ readonly annotation: "var(--spectrum-annotation, #2563eb)";
36
+ /**
37
+ * A mark where an annotation nothing answered would fall, drawn dashed. Grey
38
+ * rather than red: a fragment the spectrum does not carry is an answer, and
39
+ * colouring it as a failure would say the opposite.
40
+ */
41
+ readonly annotationUnmatched: "var(--spectrum-annotation-unmatched, #cbd5e1)";
42
+ /**
43
+ * A mark on a place the measurement drawn below was cut from — the peaks a
44
+ * survey scan was fragmented at.
45
+ *
46
+ * Its own token rather than the annotation blue, because the two are claims
47
+ * of different kinds laid over the same peaks: an annotation says *this is
48
+ * what I think that peak is*, and a precursor mark says *this is what the
49
+ * instrument did with it*. A spectrum can carry both at once, and a reader
50
+ * has to be able to tell one row of marks from the other.
51
+ */
52
+ readonly precursor: "var(--spectrum-precursor, #7c3aed)";
53
+ /** The line from a label back down to the peak it belongs to. */
54
+ readonly leader: "var(--spectrum-leader, #94a3b8)";
55
+ /** The fill of a label box, opaque enough to read over a dense trace. */
56
+ readonly labelBackground: "var(--spectrum-label-background, rgba(255, 255, 255, 0.88))";
57
+ /** Its border. */
58
+ readonly labelBorder: "var(--spectrum-label-border, #cbd5e1)";
59
+ /** The text inside it. */
60
+ readonly labelText: "var(--spectrum-label-text, #1e293b)";
61
+ /**
62
+ * The paper a label written straight onto the plot is set on, laid behind its
63
+ * glyphs rather than in a box around them — the colour of the chart itself,
64
+ * which is why a host with a dark theme has to override it along with the rest.
65
+ */
66
+ readonly labelHalo: "var(--spectrum-label-halo, #ffffff)";
67
+ /** Whatever the pointer has come to rest on, wherever it was hovered. */
68
+ readonly highlight: "var(--spectrum-highlight, #f97316)";
69
+ /** The rectangle a drag is sweeping out. */
70
+ readonly selection: "var(--spectrum-selection, rgba(37, 99, 235, 0.12))";
71
+ /** Its edge. */
72
+ readonly selectionBorder: "var(--spectrum-selection-border, #2563eb)";
73
+ /** The crosshair following the pointer. */
74
+ readonly tracker: "var(--spectrum-tracker, #94a3b8)";
75
+ /** What it reads out. */
76
+ readonly trackerText: "var(--spectrum-tracker-text, #0f172a)";
77
+ };
78
+ /**
79
+ * The type sizes, in pixels.
80
+ *
81
+ * Small and fixed rather than inherited: the chart is a drawing, and a host
82
+ * whose base font is 18px would push its tick labels into one another. The
83
+ * family is deliberately not set here, so the chart still looks like the
84
+ * application it is embedded in.
85
+ */
86
+ export declare const CHART_FONT: {
87
+ /** The numbers along both axes. */
88
+ readonly tick: 10;
89
+ /** The axis titles. */
90
+ readonly title: 12;
91
+ /** The labels pinned above the peaks. */
92
+ readonly label: 11;
93
+ /** The readout the crosshair carries. */
94
+ readonly readout: 11;
95
+ };
96
+ /**
97
+ * The geometry of a label pinned above a feature.
98
+ *
99
+ * A label is two lines often enough — an m/z over a formula, a wavenumber over
100
+ * the group it is assigned to — that the spacing has to be a constant both the
101
+ * drawing and the declutter sweep agree on, or the boxes are spaced for one
102
+ * height and drawn at another.
103
+ */
104
+ export declare const PEAK_LABEL: {
105
+ /** The baseline-to-baseline distance between two stacked lines. */
106
+ readonly lineHeight: 11;
107
+ /** The clear space between the top of a stick and its first line. */
108
+ readonly topPad: 10;
109
+ /**
110
+ * How far the mark on a named peak reaches from the tip of its stick.
111
+ *
112
+ * It reaches *away* from the stack, down into the peak, because the clear
113
+ * space above the tip is where the numbers are written and the mark is there
114
+ * to say which peak they are about. Short on purpose: what is drawn is the
115
+ * **top of the centroid stick**, enough to put a picked peak exactly on the
116
+ * profile it was picked from — a rule carried all the way to the baseline is
117
+ * the centroid trace itself, which is the other thing the row toggles.
118
+ */
119
+ readonly topMark: 10;
120
+ /**
121
+ * Half the width a label claims while the pointer is on it, which is what the
122
+ * declutter sweep keeps its neighbours out of.
123
+ */
124
+ readonly hoverHalfWidth: 26;
125
+ };
126
+ /**
127
+ * The halo a label written straight onto the plot carries.
128
+ *
129
+ * A number over a peak is written over whatever the plot has there — a grid
130
+ * line, a dense trace, the crosshair following the pointer, the tail of the
131
+ * label beside it — and a glyph crossed by a line is a glyph read twice before
132
+ * it is read at all. So the glyphs are stroked in the colour of the paper and
133
+ * that stroke is painted *first*, which clears a hairline of chart from around
134
+ * every letter without a box, a border or a fill hiding the data underneath.
135
+ *
136
+ * `paintOrder` is the whole of it and is easy to leave out: the default order
137
+ * paints the stroke over the fill, so the same three properties without it draw
138
+ * every label in white on white.
139
+ */
140
+ export declare const LABEL_HALO: {
141
+ readonly paintOrder: "stroke";
142
+ readonly stroke: "var(--spectrum-label-halo, #ffffff)";
143
+ readonly strokeWidth: 3;
144
+ readonly strokeLinejoin: "round";
145
+ };
146
+ /**
147
+ * How far the supporting line of a label is let back towards the paper.
148
+ *
149
+ * A label is rarely one thing: a mass peak carries what it is *and* how tall it
150
+ * stood, and the crosshair reads a place on both axes at once. Written in one
151
+ * ink they are read together, which means the line somebody wants has to be
152
+ * found among the ones they do not. Six tenths is enough to grade them apart at
153
+ * eleven pixels and not so far as to make the quiet line look disabled.
154
+ */
155
+ export declare const LABEL_QUIET = 0.6;
156
+ //# sourceMappingURL=chartTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartTheme.d.ts","sourceRoot":"","sources":["../../../src/chart/core/chartTheme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,wEAAwE;AACxE,eAAO,MAAM,YAAY;IACvB,0CAA0C;;IAE1C,mCAAmC;;IAEnC,+DAA+D;;IAE/D,kDAAkD;;IAElD,+DAA+D;;IAE/D,mDAAmD;;IAEnD;;;;OAIG;;IAEH;;;;;;;;;OASG;;IAEH,iEAAiE;;IAEjE,yEAAyE;;IAGzE,kBAAkB;;IAElB,0BAA0B;;IAE1B;;;;OAIG;;IAEH,yEAAyE;;IAEzE,4CAA4C;;IAE5C,gBAAgB;;IAEhB,2CAA2C;;IAE3C,yBAAyB;;CAEjB,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU;IACrB,mCAAmC;;IAEnC,uBAAuB;;IAEvB,yCAAyC;;IAEzC,yCAAyC;;CAEjC,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU;IACrB,mEAAmE;;IAEnE,qEAAqE;;IAErE;;;;;;;;;OASG;;IAEH;;;OAGG;;CAEK,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,MAAM,CAAC"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Every colour and every measurement the chart is drawn with.
3
+ *
4
+ * Each colour is a custom property with a literal fallback baked in, and is
5
+ * applied through the `style` prop rather than through the matching SVG
6
+ * attribute — `fill="var(--spectrum-axis, #64748b)"` is not a colour any browser
7
+ * resolves, because `var()` is a CSS value and a presentation attribute is not
8
+ * parsed as one. `style={{ fill: CHART_COLORS.axis }}` is.
9
+ *
10
+ * One set of tokens for every viewer built on this package, rather than one per
11
+ * viewer: a page showing a mass spectrum beside an infrared one is showing two
12
+ * charts that have to look like the same instrument, and two token families
13
+ * would let them drift apart at the first theme change.
14
+ *
15
+ * The fallbacks are what make the package usable on its own: a host that sets
16
+ * none of these tokens still gets a chart that reads correctly, and a host with
17
+ * a dark theme or a house palette overrides whichever it cares about by setting
18
+ * the properties on any ancestor. Nothing here is a prop, because a colour
19
+ * threaded through props is a colour that ends up hard-coded in one component
20
+ * that forgot to accept it.
21
+ */
22
+ /** The colours of everything the chart draws that is not a spectrum. */
23
+ export const CHART_COLORS = {
24
+ /** The two axis lines and their ticks. */
25
+ axis: 'var(--spectrum-axis, #64748b)',
26
+ /** The numbers along both axes. */
27
+ tick: 'var(--spectrum-tick, #475569)',
28
+ /** The axis titles, whatever the viewer calls its two axes. */
29
+ title: 'var(--spectrum-title, #334155)',
30
+ /** The rules across the plot, behind the data. */
31
+ grid: 'var(--spectrum-grid, #e2e8f0)',
32
+ /** The rule at zero, which a mirrored pair is reflected in. */
33
+ zeroRule: 'var(--spectrum-zero-rule, #cbd5e1)',
34
+ /** A mark on a feature an annotation explained. */
35
+ annotation: 'var(--spectrum-annotation, #2563eb)',
36
+ /**
37
+ * A mark where an annotation nothing answered would fall, drawn dashed. Grey
38
+ * rather than red: a fragment the spectrum does not carry is an answer, and
39
+ * colouring it as a failure would say the opposite.
40
+ */
41
+ annotationUnmatched: 'var(--spectrum-annotation-unmatched, #cbd5e1)',
42
+ /**
43
+ * A mark on a place the measurement drawn below was cut from — the peaks a
44
+ * survey scan was fragmented at.
45
+ *
46
+ * Its own token rather than the annotation blue, because the two are claims
47
+ * of different kinds laid over the same peaks: an annotation says *this is
48
+ * what I think that peak is*, and a precursor mark says *this is what the
49
+ * instrument did with it*. A spectrum can carry both at once, and a reader
50
+ * has to be able to tell one row of marks from the other.
51
+ */
52
+ precursor: 'var(--spectrum-precursor, #7c3aed)',
53
+ /** The line from a label back down to the peak it belongs to. */
54
+ leader: 'var(--spectrum-leader, #94a3b8)',
55
+ /** The fill of a label box, opaque enough to read over a dense trace. */
56
+ labelBackground: 'var(--spectrum-label-background, rgba(255, 255, 255, 0.88))',
57
+ /** Its border. */
58
+ labelBorder: 'var(--spectrum-label-border, #cbd5e1)',
59
+ /** The text inside it. */
60
+ labelText: 'var(--spectrum-label-text, #1e293b)',
61
+ /**
62
+ * The paper a label written straight onto the plot is set on, laid behind its
63
+ * glyphs rather than in a box around them — the colour of the chart itself,
64
+ * which is why a host with a dark theme has to override it along with the rest.
65
+ */
66
+ labelHalo: 'var(--spectrum-label-halo, #ffffff)',
67
+ /** Whatever the pointer has come to rest on, wherever it was hovered. */
68
+ highlight: 'var(--spectrum-highlight, #f97316)',
69
+ /** The rectangle a drag is sweeping out. */
70
+ selection: 'var(--spectrum-selection, rgba(37, 99, 235, 0.12))',
71
+ /** Its edge. */
72
+ selectionBorder: 'var(--spectrum-selection-border, #2563eb)',
73
+ /** The crosshair following the pointer. */
74
+ tracker: 'var(--spectrum-tracker, #94a3b8)',
75
+ /** What it reads out. */
76
+ trackerText: 'var(--spectrum-tracker-text, #0f172a)',
77
+ };
78
+ /**
79
+ * The type sizes, in pixels.
80
+ *
81
+ * Small and fixed rather than inherited: the chart is a drawing, and a host
82
+ * whose base font is 18px would push its tick labels into one another. The
83
+ * family is deliberately not set here, so the chart still looks like the
84
+ * application it is embedded in.
85
+ */
86
+ export const CHART_FONT = {
87
+ /** The numbers along both axes. */
88
+ tick: 10,
89
+ /** The axis titles. */
90
+ title: 12,
91
+ /** The labels pinned above the peaks. */
92
+ label: 11,
93
+ /** The readout the crosshair carries. */
94
+ readout: 11,
95
+ };
96
+ /**
97
+ * The geometry of a label pinned above a feature.
98
+ *
99
+ * A label is two lines often enough — an m/z over a formula, a wavenumber over
100
+ * the group it is assigned to — that the spacing has to be a constant both the
101
+ * drawing and the declutter sweep agree on, or the boxes are spaced for one
102
+ * height and drawn at another.
103
+ */
104
+ export const PEAK_LABEL = {
105
+ /** The baseline-to-baseline distance between two stacked lines. */
106
+ lineHeight: 11,
107
+ /** The clear space between the top of a stick and its first line. */
108
+ topPad: 10,
109
+ /**
110
+ * How far the mark on a named peak reaches from the tip of its stick.
111
+ *
112
+ * It reaches *away* from the stack, down into the peak, because the clear
113
+ * space above the tip is where the numbers are written and the mark is there
114
+ * to say which peak they are about. Short on purpose: what is drawn is the
115
+ * **top of the centroid stick**, enough to put a picked peak exactly on the
116
+ * profile it was picked from — a rule carried all the way to the baseline is
117
+ * the centroid trace itself, which is the other thing the row toggles.
118
+ */
119
+ topMark: 10,
120
+ /**
121
+ * Half the width a label claims while the pointer is on it, which is what the
122
+ * declutter sweep keeps its neighbours out of.
123
+ */
124
+ hoverHalfWidth: 26,
125
+ };
126
+ /**
127
+ * The halo a label written straight onto the plot carries.
128
+ *
129
+ * A number over a peak is written over whatever the plot has there — a grid
130
+ * line, a dense trace, the crosshair following the pointer, the tail of the
131
+ * label beside it — and a glyph crossed by a line is a glyph read twice before
132
+ * it is read at all. So the glyphs are stroked in the colour of the paper and
133
+ * that stroke is painted *first*, which clears a hairline of chart from around
134
+ * every letter without a box, a border or a fill hiding the data underneath.
135
+ *
136
+ * `paintOrder` is the whole of it and is easy to leave out: the default order
137
+ * paints the stroke over the fill, so the same three properties without it draw
138
+ * every label in white on white.
139
+ */
140
+ export const LABEL_HALO = {
141
+ paintOrder: 'stroke',
142
+ stroke: CHART_COLORS.labelHalo,
143
+ strokeWidth: 3,
144
+ strokeLinejoin: 'round',
145
+ };
146
+ /**
147
+ * How far the supporting line of a label is let back towards the paper.
148
+ *
149
+ * A label is rarely one thing: a mass peak carries what it is *and* how tall it
150
+ * stood, and the crosshair reads a place on both axes at once. Written in one
151
+ * ink they are read together, which means the line somebody wants has to be
152
+ * found among the ones they do not. Six tenths is enough to grade them apart at
153
+ * eleven pixels and not so far as to make the quiet line look disabled.
154
+ */
155
+ export const LABEL_QUIET = 0.6;
156
+ //# sourceMappingURL=chartTheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartTheme.js","sourceRoot":"","sources":["../../../src/chart/core/chartTheme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,0CAA0C;IAC1C,IAAI,EAAE,+BAA+B;IACrC,mCAAmC;IACnC,IAAI,EAAE,+BAA+B;IACrC,+DAA+D;IAC/D,KAAK,EAAE,gCAAgC;IACvC,kDAAkD;IAClD,IAAI,EAAE,+BAA+B;IACrC,+DAA+D;IAC/D,QAAQ,EAAE,oCAAoC;IAC9C,mDAAmD;IACnD,UAAU,EAAE,qCAAqC;IACjD;;;;OAIG;IACH,mBAAmB,EAAE,+CAA+C;IACpE;;;;;;;;;OASG;IACH,SAAS,EAAE,oCAAoC;IAC/C,iEAAiE;IACjE,MAAM,EAAE,iCAAiC;IACzC,yEAAyE;IACzE,eAAe,EACb,6DAA6D;IAC/D,kBAAkB;IAClB,WAAW,EAAE,uCAAuC;IACpD,0BAA0B;IAC1B,SAAS,EAAE,qCAAqC;IAChD;;;;OAIG;IACH,SAAS,EAAE,qCAAqC;IAChD,yEAAyE;IACzE,SAAS,EAAE,oCAAoC;IAC/C,4CAA4C;IAC5C,SAAS,EAAE,oDAAoD;IAC/D,gBAAgB;IAChB,eAAe,EAAE,2CAA2C;IAC5D,2CAA2C;IAC3C,OAAO,EAAE,kCAAkC;IAC3C,yBAAyB;IACzB,WAAW,EAAE,uCAAuC;CAC5C,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,mCAAmC;IACnC,IAAI,EAAE,EAAE;IACR,uBAAuB;IACvB,KAAK,EAAE,EAAE;IACT,yCAAyC;IACzC,KAAK,EAAE,EAAE;IACT,yCAAyC;IACzC,OAAO,EAAE,EAAE;CACH,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,mEAAmE;IACnE,UAAU,EAAE,EAAE;IACd,qEAAqE;IACrE,MAAM,EAAE,EAAE;IACV;;;;;;;;;OASG;IACH,OAAO,EAAE,EAAE;IACX;;;OAGG;IACH,cAAc,EAAE,EAAE;CACV,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,EAAE,QAAQ;IACpB,MAAM,EAAE,YAAY,CAAC,SAAS;IAC9B,WAAW,EAAE,CAAC;IACd,cAAc,EAAE,OAAO;CACf,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC"}
@@ -27,8 +27,20 @@ export declare const CHART_WHEEL_SPEED = 0.0015;
27
27
  export declare const CHART_WHEEL_LINE = 16;
28
28
  /** Pixels it is worth where the browser reports pages. */
29
29
  export declare const CHART_WHEEL_PAGE = 400;
30
- /** The most one wheel event may zoom by, so a stray burst cannot jump. */
31
- export declare const CHART_WHEEL_LARGEST = 4;
30
+ /**
31
+ * The most travel one wheel event is read as, in pixels.
32
+ *
33
+ * A trackpad flick arrives as a handful of events carrying several hundred
34
+ * pixels each, and an inertial one keeps arriving after the fingers have left
35
+ * the glass. Uncapped, a single flick takes an axis through several orders of
36
+ * magnitude and the data is gone; capped, the gesture stays fast and is always
37
+ * recoverable by flicking the other way.
38
+ *
39
+ * The cap is written in travel rather than as a largest factor because travel
40
+ * is what the browser reports and what varies between them — so a chart that
41
+ * zooms at its own pace is held to the same burst as every other.
42
+ */
43
+ export declare const CHART_WHEEL_TRAVEL = 240;
32
44
  /**
33
45
  * The viewport a zoom about one point leaves behind.
34
46
  *
@@ -76,13 +88,28 @@ export declare function chartZoomDomain(full: readonly [number, number], current
76
88
  * The travel is normalised first, because the same notch of the same wheel
77
89
  * arrives as pixels in one browser and as lines in another, and a zoom that
78
90
  * moves three times as fast in Firefox is a fault the reader blames on the
79
- * figure. One event is capped: a trackpad flick can deliver a whole page of
80
- * travel at once, and landing four hundred times out is not recoverable by
81
- * feel.
91
+ * figure. Then it is capped at {@link CHART_WHEEL_TRAVEL}, so one burst can
92
+ * only ever be worth one flick.
93
+ *
94
+ * The factor is `exp(pixels x rate)`, so the gesture is multiplicative: two
95
+ * notches in and two notches out land back where they started, whichever way
96
+ * round they were made, and a zoom deep into one small feature comes back out
97
+ * at the pace it went in.
82
98
  * @param delta - The event's `deltaY`; positive scrolls away and zooms out.
83
99
  * @param mode - Its `deltaMode`: 0 pixels, 1 lines, 2 pages. Defaults to `0`.
84
100
  * @param speed - Share zoomed per pixel of travel. Defaults to {@link CHART_WHEEL_SPEED}.
85
101
  * @returns The factor to hand {@link chartZoomViewport}; `1` for an event that says nothing.
86
102
  */
87
103
  export declare function chartWheelFactor(delta: number, mode?: number, speed?: number): number;
104
+ /**
105
+ * The travel one wheel event carries, in pixels, capped.
106
+ *
107
+ * Separate from the factor because a gesture that is not a zoom — a wheel that
108
+ * scales a value axis about its baseline — needs the same normalisation and
109
+ * the same cap while computing something else entirely.
110
+ * @param delta - The event's `deltaY`.
111
+ * @param mode - Its `deltaMode`: 0 pixels, 1 lines, 2 pages. Defaults to `0`.
112
+ * @returns The travel, `0` for an event that says nothing.
113
+ */
114
+ export declare function chartWheelTravel(delta: number, mode?: number): number;
88
115
  //# sourceMappingURL=chartViewport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chartViewport.d.ts","sourceRoot":"","sources":["../../../src/chart/core/chartViewport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,qCAAqC;IACrC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,aAAa,GAAG,IAAI,CAMtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,aAAa,GACpB,aAAa,GAAG,IAAI,CAQtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,SAAI,EACR,KAAK,SAAoB,GACxB,MAAM,CAUR"}
1
+ {"version":3,"file":"chartViewport.d.ts","sourceRoot":"","sources":["../../../src/chart/core/chartViewport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,qCAAqC;IACrC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,aAAa,GAAG,IAAI,CAMtB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,aAAa,GACpB,aAAa,GAAG,IAAI,CAQtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,SAAI,EACR,KAAK,SAAoB,GACxB,MAAM,CAKR;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,MAAM,CAIhE"}
@@ -20,8 +20,20 @@ export const CHART_WHEEL_SPEED = 0.0015;
20
20
  export const CHART_WHEEL_LINE = 16;
21
21
  /** Pixels it is worth where the browser reports pages. */
22
22
  export const CHART_WHEEL_PAGE = 400;
23
- /** The most one wheel event may zoom by, so a stray burst cannot jump. */
24
- export const CHART_WHEEL_LARGEST = 4;
23
+ /**
24
+ * The most travel one wheel event is read as, in pixels.
25
+ *
26
+ * A trackpad flick arrives as a handful of events carrying several hundred
27
+ * pixels each, and an inertial one keeps arriving after the fingers have left
28
+ * the glass. Uncapped, a single flick takes an axis through several orders of
29
+ * magnitude and the data is gone; capped, the gesture stays fast and is always
30
+ * recoverable by flicking the other way.
31
+ *
32
+ * The cap is written in travel rather than as a largest factor because travel
33
+ * is what the browser reports and what varies between them — so a chart that
34
+ * zooms at its own pace is held to the same burst as every other.
35
+ */
36
+ export const CHART_WHEEL_TRAVEL = 240;
25
37
  /**
26
38
  * The viewport a zoom about one point leaves behind.
27
39
  *
@@ -91,23 +103,40 @@ export function chartZoomDomain(full, current, anchor, factor) {
91
103
  * The travel is normalised first, because the same notch of the same wheel
92
104
  * arrives as pixels in one browser and as lines in another, and a zoom that
93
105
  * moves three times as fast in Firefox is a fault the reader blames on the
94
- * figure. One event is capped: a trackpad flick can deliver a whole page of
95
- * travel at once, and landing four hundred times out is not recoverable by
96
- * feel.
106
+ * figure. Then it is capped at {@link CHART_WHEEL_TRAVEL}, so one burst can
107
+ * only ever be worth one flick.
108
+ *
109
+ * The factor is `exp(pixels x rate)`, so the gesture is multiplicative: two
110
+ * notches in and two notches out land back where they started, whichever way
111
+ * round they were made, and a zoom deep into one small feature comes back out
112
+ * at the pace it went in.
97
113
  * @param delta - The event's `deltaY`; positive scrolls away and zooms out.
98
114
  * @param mode - Its `deltaMode`: 0 pixels, 1 lines, 2 pages. Defaults to `0`.
99
115
  * @param speed - Share zoomed per pixel of travel. Defaults to {@link CHART_WHEEL_SPEED}.
100
116
  * @returns The factor to hand {@link chartZoomViewport}; `1` for an event that says nothing.
101
117
  */
102
118
  export function chartWheelFactor(delta, mode = 0, speed = CHART_WHEEL_SPEED) {
103
- if (!Number.isFinite(delta) || delta === 0)
119
+ const travel = chartWheelTravel(delta, mode);
120
+ if (travel === 0)
104
121
  return 1;
105
- const pixels = delta * wheelPixels(mode);
106
122
  const rate = Number.isFinite(speed) && speed > 0 ? speed : CHART_WHEEL_SPEED;
107
- const factor = Math.exp(pixels * rate);
108
- if (!Number.isFinite(factor))
109
- return delta > 0 ? CHART_WHEEL_LARGEST : 1;
110
- return Math.min(CHART_WHEEL_LARGEST, Math.max(1 / CHART_WHEEL_LARGEST, factor));
123
+ return Math.exp(travel * rate);
124
+ }
125
+ /**
126
+ * The travel one wheel event carries, in pixels, capped.
127
+ *
128
+ * Separate from the factor because a gesture that is not a zoom — a wheel that
129
+ * scales a value axis about its baseline — needs the same normalisation and
130
+ * the same cap while computing something else entirely.
131
+ * @param delta - The event's `deltaY`.
132
+ * @param mode - Its `deltaMode`: 0 pixels, 1 lines, 2 pages. Defaults to `0`.
133
+ * @returns The travel, `0` for an event that says nothing.
134
+ */
135
+ export function chartWheelTravel(delta, mode = 0) {
136
+ if (!Number.isFinite(delta) || delta === 0)
137
+ return 0;
138
+ const pixels = delta * wheelPixels(mode);
139
+ return Math.min(CHART_WHEEL_TRAVEL, Math.max(-CHART_WHEEL_TRAVEL, pixels));
111
140
  }
112
141
  function wheelPixels(mode) {
113
142
  if (mode === 1)
@@ -1 +1 @@
1
- {"version":3,"file":"chartViewport.js","sourceRoot":"","sources":["../../../src/chart/core/chartViewport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chartViewport.js","sourceRoot":"","sources":["../../../src/chart/core/chartViewport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Where the guide for one value is drawn when that value is not on screen.
3
+ *
4
+ * A chart zoomed onto a single feature is the normal way of reading a spectrum
5
+ * — one isotopologue cluster two millimass units wide, one chromatographic peak
6
+ * four seconds wide — and most of what a panel beside it can point at then lies
7
+ * outside the window. Drawing nothing in that case answers the only question
8
+ * the guide exists for — where is it? — with silence, and the reader is left
9
+ * unable to tell a fragment the spectrum does not carry from one that is simply
10
+ * off to the left. So the guide is parked on the edge it went out of instead,
11
+ * dashed and carrying an arrow, which says both that it is elsewhere and which
12
+ * way.
13
+ *
14
+ * Nothing here reads the domain: the value is put through the scale, and the
15
+ * pixel that comes back is compared against the two pixel edges of the plot.
16
+ * That is what lets `left` and `right` mean what they say on an axis that runs
17
+ * backwards, as an infrared chart's wavenumbers do — they are the edges of the
18
+ * screen, not the ends of the window, and a descending axis parks a value below
19
+ * its window on the right, which is exactly where the reader must look for it.
20
+ */
21
+ import type { PlotRect } from './chartGeometry.ts';
22
+ import type { ChartScale } from './chartScale.ts';
23
+ /** Where a guide ended up, and whether that is where its value actually is. */
24
+ export interface GuidePlacement {
25
+ /** Where the guide is drawn, in pixels. */
26
+ x: number;
27
+ /**
28
+ * Which side of the window the value lies on, `null` when it is inside it and
29
+ * the guide is therefore standing on the value itself.
30
+ */
31
+ direction: 'left' | 'right' | null;
32
+ }
33
+ /**
34
+ * Work out where the guide for a value goes.
35
+ *
36
+ * The test is made in pixels rather than against the domain, so the guide can
37
+ * never disagree with the axis it is drawn over: both are read off the same
38
+ * scale, and a rounding that puts a value a hundredth of a unit inside the
39
+ * window puts the guide a hundredth of a pixel inside the plot rather than
40
+ * parking it on an edge it is standing beside.
41
+ * @param value - The place on the horizontal axis being pointed at, in whatever
42
+ * that axis measures — an m/z, a retention time, a wavenumber.
43
+ * @param plot - The plotting area the guide is confined to.
44
+ * @param xScale - The horizontal axis as it is currently zoomed.
45
+ * The pixel is rounded for the markup, to the hundredth: that is under a tenth
46
+ * of a device pixel at any zoom a browser offers, and it keeps the last digits
47
+ * of a multiply-add out of the `d` a reader has to look at in a failing test.
48
+ * @returns Where to draw it, or `null` for a value no scale maps anywhere — an
49
+ * empty chart's degenerate axis, or a `NaN` out of an unparsed field.
50
+ */
51
+ export declare function guidePlacement(value: number, plot: PlotRect, xScale: ChartScale): GuidePlacement | null;
52
+ //# sourceMappingURL=guidePlacement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guidePlacement.d.ts","sourceRoot":"","sources":["../../../src/chart/core/guidePlacement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,CAAC,EAAE,MAAM,CAAC;IACV;;;OAGG;IACH,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,UAAU,GACjB,cAAc,GAAG,IAAI,CAOvB"}