react-cheminfo 0.69.0 → 0.71.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 (616) hide show
  1. package/README.md +70 -2
  2. package/lib/about/core/providers.d.ts +6 -0
  3. package/lib/about/core/providers.d.ts.map +1 -1
  4. package/lib/about/core/providers.js +7 -0
  5. package/lib/about/core/providers.js.map +1 -1
  6. package/lib/about/ui/AboutProvidedBy.js +34 -0
  7. package/lib/about/ui/AboutProvidedBy.js.map +1 -1
  8. package/lib/chart/ui/useChartPointer.d.ts +9 -1
  9. package/lib/chart/ui/useChartPointer.d.ts.map +1 -1
  10. package/lib/chart/ui/useChartPointer.js +11 -3
  11. package/lib/chart/ui/useChartPointer.js.map +1 -1
  12. package/lib/credits/core/credits.d.ts +41 -0
  13. package/lib/credits/core/credits.d.ts.map +1 -1
  14. package/lib/credits/core/credits.js +50 -0
  15. package/lib/credits/core/credits.js.map +1 -1
  16. package/lib/download/core/drawingMarkup.d.ts +8 -1
  17. package/lib/download/core/drawingMarkup.d.ts.map +1 -1
  18. package/lib/download/core/drawingMarkup.js +13 -1
  19. package/lib/download/core/drawingMarkup.js.map +1 -1
  20. package/lib/download/core/figurePng.d.ts +14 -0
  21. package/lib/download/core/figurePng.d.ts.map +1 -1
  22. package/lib/download/core/figurePng.js +21 -6
  23. package/lib/download/core/figurePng.js.map +1 -1
  24. package/lib/download/core/figureSvg.d.ts.map +1 -1
  25. package/lib/download/core/figureSvg.js +5 -3
  26. package/lib/download/core/figureSvg.js.map +1 -1
  27. package/lib/download/core/figureTarget.d.ts +13 -0
  28. package/lib/download/core/figureTarget.d.ts.map +1 -1
  29. package/lib/download/core/figureTarget.js +25 -5
  30. package/lib/download/core/figureTarget.js.map +1 -1
  31. package/lib/download/core/svgBounds.d.ts +15 -0
  32. package/lib/download/core/svgBounds.d.ts.map +1 -1
  33. package/lib/download/core/svgBounds.js +20 -0
  34. package/lib/download/core/svgBounds.js.map +1 -1
  35. package/lib/download/core/svgToPng.d.ts.map +1 -1
  36. package/lib/download/core/svgToPng.js +4 -2
  37. package/lib/download/core/svgToPng.js.map +1 -1
  38. package/lib/format/core/relativeTime.d.ts +8 -3
  39. package/lib/format/core/relativeTime.d.ts.map +1 -1
  40. package/lib/format/core/relativeTime.js +19 -7
  41. package/lib/format/core/relativeTime.js.map +1 -1
  42. package/lib/host/core/connectHost.d.ts +25 -34
  43. package/lib/host/core/connectHost.d.ts.map +1 -1
  44. package/lib/host/core/connectHost.js +43 -89
  45. package/lib/host/core/connectHost.js.map +1 -1
  46. package/lib/host/core/hostOutputs.d.ts +58 -0
  47. package/lib/host/core/hostOutputs.d.ts.map +1 -0
  48. package/lib/host/core/hostOutputs.js +151 -0
  49. package/lib/host/core/hostOutputs.js.map +1 -0
  50. package/lib/host/core/index.d.ts +9 -3
  51. package/lib/host/core/index.d.ts.map +1 -1
  52. package/lib/host/core/index.js +4 -1
  53. package/lib/host/core/index.js.map +1 -1
  54. package/lib/host/core/irKinds.d.ts +124 -0
  55. package/lib/host/core/irKinds.d.ts.map +1 -0
  56. package/lib/host/core/irKinds.js +46 -0
  57. package/lib/host/core/irKinds.js.map +1 -0
  58. package/lib/host/core/kinds.d.ts +13 -5
  59. package/lib/host/core/kinds.d.ts.map +1 -1
  60. package/lib/host/core/kinds.js +11 -5
  61. package/lib/host/core/kinds.js.map +1 -1
  62. package/lib/host/core/protocol.d.ts +50 -7
  63. package/lib/host/core/protocol.d.ts.map +1 -1
  64. package/lib/host/core/protocol.js +10 -6
  65. package/lib/host/core/protocol.js.map +1 -1
  66. package/lib/host/core/selectInputs.d.ts +37 -0
  67. package/lib/host/core/selectInputs.d.ts.map +1 -0
  68. package/lib/host/core/selectInputs.js +110 -0
  69. package/lib/host/core/selectInputs.js.map +1 -0
  70. package/lib/host/testing/sciPeaks.d.ts +31 -0
  71. package/lib/host/testing/sciPeaks.d.ts.map +1 -1
  72. package/lib/host/testing/sciPeaks.js +73 -0
  73. package/lib/host/testing/sciPeaks.js.map +1 -1
  74. package/lib/host/testing/standInHost.d.ts +9 -1
  75. package/lib/host/testing/standInHost.d.ts.map +1 -1
  76. package/lib/host/testing/standInHost.js +19 -1
  77. package/lib/host/testing/standInHost.js.map +1 -1
  78. package/lib/host/ui/useHostConnection.d.ts +13 -5
  79. package/lib/host/ui/useHostConnection.d.ts.map +1 -1
  80. package/lib/host/ui/useHostConnection.js +4 -3
  81. package/lib/host/ui/useHostConnection.js.map +1 -1
  82. package/lib/host-testing.d.ts +2 -2
  83. package/lib/host-testing.d.ts.map +1 -1
  84. package/lib/host-testing.js +2 -2
  85. package/lib/host-testing.js.map +1 -1
  86. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  87. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  88. package/lib/ir/core/handPicking.d.ts +58 -0
  89. package/lib/ir/core/handPicking.d.ts.map +1 -0
  90. package/lib/ir/core/handPicking.js +130 -0
  91. package/lib/ir/core/handPicking.js.map +1 -0
  92. package/lib/ir/core/index.d.ts +3 -0
  93. package/lib/ir/core/index.d.ts.map +1 -1
  94. package/lib/ir/core/index.js +3 -0
  95. package/lib/ir/core/index.js.map +1 -1
  96. package/lib/ir/core/irBandState.d.ts +57 -0
  97. package/lib/ir/core/irBandState.d.ts.map +1 -0
  98. package/lib/ir/core/irBandState.js +119 -0
  99. package/lib/ir/core/irBandState.js.map +1 -0
  100. package/lib/ir/core/irCommands.d.ts +11 -0
  101. package/lib/ir/core/irCommands.d.ts.map +1 -1
  102. package/lib/ir/core/irCommands.js +6 -0
  103. package/lib/ir/core/irCommands.js.map +1 -1
  104. package/lib/ir/core/irPeaks.d.ts +28 -0
  105. package/lib/ir/core/irPeaks.d.ts.map +1 -0
  106. package/lib/ir/core/irPeaks.js +66 -0
  107. package/lib/ir/core/irPeaks.js.map +1 -0
  108. package/lib/ir/core/irReducer.d.ts +8 -0
  109. package/lib/ir/core/irReducer.d.ts.map +1 -1
  110. package/lib/ir/core/irReducer.js +15 -32
  111. package/lib/ir/core/irReducer.js.map +1 -1
  112. package/lib/ir/core/irSpectrum.d.ts +15 -0
  113. package/lib/ir/core/irSpectrum.d.ts.map +1 -1
  114. package/lib/ir/core/irSpectrum.js.map +1 -1
  115. package/lib/ir/core/irState.d.ts +9 -6
  116. package/lib/ir/core/irState.d.ts.map +1 -1
  117. package/lib/ir/core/irState.js +10 -6
  118. package/lib/ir/core/irState.js.map +1 -1
  119. package/lib/ir/core/pickBands.d.ts +14 -0
  120. package/lib/ir/core/pickBands.d.ts.map +1 -1
  121. package/lib/ir/core/pickBands.js +39 -33
  122. package/lib/ir/core/pickBands.js.map +1 -1
  123. package/lib/ir/core/ramanBands.d.ts +9 -1
  124. package/lib/ir/core/ramanBands.d.ts.map +1 -1
  125. package/lib/ir/core/ramanBands.js +2 -2
  126. package/lib/ir/core/ramanBands.js.map +1 -1
  127. package/lib/ir/core/spectrumBands.d.ts +46 -0
  128. package/lib/ir/core/spectrumBands.d.ts.map +1 -0
  129. package/lib/ir/core/spectrumBands.js +98 -0
  130. package/lib/ir/core/spectrumBands.js.map +1 -0
  131. package/lib/ir/ui/BandRow.d.ts +5 -0
  132. package/lib/ir/ui/BandRow.d.ts.map +1 -1
  133. package/lib/ir/ui/BandRow.js +4 -3
  134. package/lib/ir/ui/BandRow.js.map +1 -1
  135. package/lib/ir/ui/BandsPanel.d.ts +5 -0
  136. package/lib/ir/ui/BandsPanel.d.ts.map +1 -1
  137. package/lib/ir/ui/BandsPanel.js +36 -16
  138. package/lib/ir/ui/BandsPanel.js.map +1 -1
  139. package/lib/ir/ui/BandsToolbar.d.ts +9 -0
  140. package/lib/ir/ui/BandsToolbar.d.ts.map +1 -0
  141. package/lib/ir/ui/BandsToolbar.js +61 -0
  142. package/lib/ir/ui/BandsToolbar.js.map +1 -0
  143. package/lib/ir/ui/IrCanvas.d.ts +2 -1
  144. package/lib/ir/ui/IrCanvas.d.ts.map +1 -1
  145. package/lib/ir/ui/IrCanvas.js +19 -5
  146. package/lib/ir/ui/IrCanvas.js.map +1 -1
  147. package/lib/ir/ui/IrChart.d.ts.map +1 -1
  148. package/lib/ir/ui/IrChart.js +8 -1
  149. package/lib/ir/ui/IrChart.js.map +1 -1
  150. package/lib/ir/ui/IrDocumentationDialog.js +1 -1
  151. package/lib/ir/ui/IrDocumentationDialog.js.map +1 -1
  152. package/lib/ir/ui/IrEditor.d.ts +4 -2
  153. package/lib/ir/ui/IrEditor.d.ts.map +1 -1
  154. package/lib/ir/ui/IrEditor.js.map +1 -1
  155. package/lib/ir/ui/IrShell.d.ts.map +1 -1
  156. package/lib/ir/ui/IrShell.js +6 -0
  157. package/lib/ir/ui/IrShell.js.map +1 -1
  158. package/lib/ir/ui/IrStatusBar.d.ts.map +1 -1
  159. package/lib/ir/ui/IrStatusBar.js +1 -1
  160. package/lib/ir/ui/IrStatusBar.js.map +1 -1
  161. package/lib/ir/ui/IrToolbar.d.ts +4 -3
  162. package/lib/ir/ui/IrToolbar.d.ts.map +1 -1
  163. package/lib/ir/ui/IrToolbar.js +5 -4
  164. package/lib/ir/ui/IrToolbar.js.map +1 -1
  165. package/lib/ir/ui/VibrationalEditor.d.ts +2 -1
  166. package/lib/ir/ui/VibrationalEditor.d.ts.map +1 -1
  167. package/lib/ir/ui/VibrationalEditor.js.map +1 -1
  168. package/lib/ir/ui/irActions.d.ts +5 -0
  169. package/lib/ir/ui/irActions.d.ts.map +1 -1
  170. package/lib/ir/ui/irActions.js +6 -0
  171. package/lib/ir/ui/irActions.js.map +1 -1
  172. package/lib/ir/ui/irChartProps.d.ts +4 -1
  173. package/lib/ir/ui/irChartProps.d.ts.map +1 -1
  174. package/lib/ir/ui/useIrEditor.d.ts +5 -11
  175. package/lib/ir/ui/useIrEditor.d.ts.map +1 -1
  176. package/lib/ir/ui/useIrEditor.js +17 -18
  177. package/lib/ir/ui/useIrEditor.js.map +1 -1
  178. package/lib/locales/de.json +63 -0
  179. package/lib/locales/en.json +63 -0
  180. package/lib/locales/es.json +63 -0
  181. package/lib/locales/fr.json +63 -0
  182. package/lib/locales/it.json +63 -0
  183. package/lib/mass/core/analyseSpectrum.d.ts +85 -0
  184. package/lib/mass/core/analyseSpectrum.d.ts.map +1 -0
  185. package/lib/mass/core/analyseSpectrum.js +101 -0
  186. package/lib/mass/core/analyseSpectrum.js.map +1 -0
  187. package/lib/mass/core/ascendingTrace.d.ts +24 -0
  188. package/lib/mass/core/ascendingTrace.d.ts.map +1 -0
  189. package/lib/mass/core/ascendingTrace.js +57 -0
  190. package/lib/mass/core/ascendingTrace.js.map +1 -0
  191. package/lib/mass/core/centroidPeaks.d.ts +77 -0
  192. package/lib/mass/core/centroidPeaks.d.ts.map +1 -0
  193. package/lib/mass/core/centroidPeaks.js +62 -0
  194. package/lib/mass/core/centroidPeaks.js.map +1 -0
  195. package/lib/mass/core/detectMassFormat.d.ts +24 -0
  196. package/lib/mass/core/detectMassFormat.d.ts.map +1 -0
  197. package/lib/mass/core/detectMassFormat.js +105 -0
  198. package/lib/mass/core/detectMassFormat.js.map +1 -0
  199. package/lib/mass/core/downloadSpectra.d.ts +24 -0
  200. package/lib/mass/core/downloadSpectra.d.ts.map +1 -0
  201. package/lib/mass/core/downloadSpectra.js +35 -0
  202. package/lib/mass/core/downloadSpectra.js.map +1 -0
  203. package/lib/mass/core/fromJcamp.d.ts +46 -0
  204. package/lib/mass/core/fromJcamp.d.ts.map +1 -0
  205. package/lib/mass/core/fromJcamp.js +123 -0
  206. package/lib/mass/core/fromJcamp.js.map +1 -0
  207. package/lib/mass/core/fromText.d.ts +30 -0
  208. package/lib/mass/core/fromText.d.ts.map +1 -0
  209. package/lib/mass/core/fromText.js +39 -0
  210. package/lib/mass/core/fromText.js.map +1 -0
  211. package/lib/mass/core/index.d.ts +70 -0
  212. package/lib/mass/core/index.d.ts.map +1 -0
  213. package/lib/mass/core/index.js +42 -0
  214. package/lib/mass/core/index.js.map +1 -0
  215. package/lib/mass/core/jcampTechnique.d.ts +38 -0
  216. package/lib/mass/core/jcampTechnique.d.ts.map +1 -0
  217. package/lib/mass/core/jcampTechnique.js +70 -0
  218. package/lib/mass/core/jcampTechnique.js.map +1 -0
  219. package/lib/mass/core/labelStackBox.d.ts +49 -0
  220. package/lib/mass/core/labelStackBox.d.ts.map +1 -0
  221. package/lib/mass/core/labelStackBox.js +44 -0
  222. package/lib/mass/core/labelStackBox.js.map +1 -0
  223. package/lib/mass/core/labelledPeaks.d.ts +79 -0
  224. package/lib/mass/core/labelledPeaks.d.ts.map +1 -0
  225. package/lib/mass/core/labelledPeaks.js +74 -0
  226. package/lib/mass/core/labelledPeaks.js.map +1 -0
  227. package/lib/mass/core/loadMassSpectra.d.ts +57 -0
  228. package/lib/mass/core/loadMassSpectra.d.ts.map +1 -0
  229. package/lib/mass/core/loadMassSpectra.js +45 -0
  230. package/lib/mass/core/loadMassSpectra.js.map +1 -0
  231. package/lib/mass/core/loadedMassSpectrum.d.ts +42 -0
  232. package/lib/mass/core/loadedMassSpectrum.d.ts.map +1 -0
  233. package/lib/mass/core/loadedMassSpectrum.js +15 -0
  234. package/lib/mass/core/loadedMassSpectrum.js.map +1 -0
  235. package/lib/mass/core/massCommands.d.ts +170 -0
  236. package/lib/mass/core/massCommands.d.ts.map +1 -0
  237. package/lib/mass/core/massCommands.js +95 -0
  238. package/lib/mass/core/massCommands.js.map +1 -0
  239. package/lib/mass/core/massDomain.d.ts +121 -0
  240. package/lib/mass/core/massDomain.d.ts.map +1 -0
  241. package/lib/mass/core/massDomain.js +179 -0
  242. package/lib/mass/core/massDomain.js.map +1 -0
  243. package/lib/mass/core/massEditorApi.d.ts +65 -0
  244. package/lib/mass/core/massEditorApi.d.ts.map +1 -0
  245. package/lib/mass/core/massEditorApi.js +10 -0
  246. package/lib/mass/core/massEditorApi.js.map +1 -0
  247. package/lib/mass/core/massFormat.d.ts +78 -0
  248. package/lib/mass/core/massFormat.d.ts.map +1 -0
  249. package/lib/mass/core/massFormat.js +168 -0
  250. package/lib/mass/core/massFormat.js.map +1 -0
  251. package/lib/mass/core/massMeta.d.ts +85 -0
  252. package/lib/mass/core/massMeta.d.ts.map +1 -0
  253. package/lib/mass/core/massMeta.js +182 -0
  254. package/lib/mass/core/massMeta.js.map +1 -0
  255. package/lib/mass/core/massReducer.d.ts +82 -0
  256. package/lib/mass/core/massReducer.d.ts.map +1 -0
  257. package/lib/mass/core/massReducer.js +163 -0
  258. package/lib/mass/core/massReducer.js.map +1 -0
  259. package/lib/mass/core/massResolution.d.ts +92 -0
  260. package/lib/mass/core/massResolution.d.ts.map +1 -0
  261. package/lib/mass/core/massResolution.js +126 -0
  262. package/lib/mass/core/massResolution.js.map +1 -0
  263. package/lib/mass/core/massSidePanels.d.ts +28 -0
  264. package/lib/mass/core/massSidePanels.d.ts.map +1 -0
  265. package/lib/mass/core/massSidePanels.js +12 -0
  266. package/lib/mass/core/massSidePanels.js.map +1 -0
  267. package/lib/mass/core/massSpectrum.d.ts +206 -0
  268. package/lib/mass/core/massSpectrum.d.ts.map +1 -0
  269. package/lib/mass/core/massSpectrum.js +41 -0
  270. package/lib/mass/core/massSpectrum.js.map +1 -0
  271. package/lib/mass/core/massState.d.ts +145 -0
  272. package/lib/mass/core/massState.d.ts.map +1 -0
  273. package/lib/mass/core/massState.js +102 -0
  274. package/lib/mass/core/massState.js.map +1 -0
  275. package/lib/mass/core/massStateEdits.d.ts +51 -0
  276. package/lib/mass/core/massStateEdits.d.ts.map +1 -0
  277. package/lib/mass/core/massStateEdits.js +90 -0
  278. package/lib/mass/core/massStateEdits.js.map +1 -0
  279. package/lib/mass/core/massSummary.d.ts +77 -0
  280. package/lib/mass/core/massSummary.d.ts.map +1 -0
  281. package/lib/mass/core/massSummary.js +174 -0
  282. package/lib/mass/core/massSummary.js.map +1 -0
  283. package/lib/mass/core/mzDecimalsSetting.d.ts +36 -0
  284. package/lib/mass/core/mzDecimalsSetting.d.ts.map +1 -0
  285. package/lib/mass/core/mzDecimalsSetting.js +42 -0
  286. package/lib/mass/core/mzDecimalsSetting.js.map +1 -0
  287. package/lib/mass/core/nearestPeak.d.ts +75 -0
  288. package/lib/mass/core/nearestPeak.d.ts.map +1 -0
  289. package/lib/mass/core/nearestPeak.js +99 -0
  290. package/lib/mass/core/nearestPeak.js.map +1 -0
  291. package/lib/mass/core/peakLabelLines.d.ts +77 -0
  292. package/lib/mass/core/peakLabelLines.d.ts.map +1 -0
  293. package/lib/mass/core/peakLabelLines.js +54 -0
  294. package/lib/mass/core/peakLabelLines.js.map +1 -0
  295. package/lib/mass/core/peakLabelPlan.d.ts +109 -0
  296. package/lib/mass/core/peakLabelPlan.d.ts.map +1 -0
  297. package/lib/mass/core/peakLabelPlan.js +143 -0
  298. package/lib/mass/core/peakLabelPlan.js.map +1 -0
  299. package/lib/mass/core/peakTable.d.ts +54 -0
  300. package/lib/mass/core/peakTable.d.ts.map +1 -0
  301. package/lib/mass/core/peakTable.js +53 -0
  302. package/lib/mass/core/peakTable.js.map +1 -0
  303. package/lib/mass/core/resolutionOf.d.ts +60 -0
  304. package/lib/mass/core/resolutionOf.d.ts.map +1 -0
  305. package/lib/mass/core/resolutionOf.js +84 -0
  306. package/lib/mass/core/resolutionOf.js.map +1 -0
  307. package/lib/mass/core/scanFilter.d.ts +25 -0
  308. package/lib/mass/core/scanFilter.d.ts.map +1 -0
  309. package/lib/mass/core/scanFilter.js +107 -0
  310. package/lib/mass/core/scanFilter.js.map +1 -0
  311. package/lib/mass/core/spectrumJcamp.d.ts +47 -0
  312. package/lib/mass/core/spectrumJcamp.d.ts.map +1 -0
  313. package/lib/mass/core/spectrumJcamp.js +167 -0
  314. package/lib/mass/core/spectrumJcamp.js.map +1 -0
  315. package/lib/mass/core/toMassSpectrum.d.ts +67 -0
  316. package/lib/mass/core/toMassSpectrum.d.ts.map +1 -0
  317. package/lib/mass/core/toMassSpectrum.js +78 -0
  318. package/lib/mass/core/toMassSpectrum.js.map +1 -0
  319. package/lib/mass/core/traceIcon.d.ts +82 -0
  320. package/lib/mass/core/traceIcon.d.ts.map +1 -0
  321. package/lib/mass/core/traceIcon.js +66 -0
  322. package/lib/mass/core/traceIcon.js.map +1 -0
  323. package/lib/mass/core/writtenResolution.d.ts +40 -0
  324. package/lib/mass/core/writtenResolution.d.ts.map +1 -0
  325. package/lib/mass/core/writtenResolution.js +77 -0
  326. package/lib/mass/core/writtenResolution.js.map +1 -0
  327. package/lib/mass/ui/MassAboutDialog.d.ts +16 -0
  328. package/lib/mass/ui/MassAboutDialog.d.ts.map +1 -0
  329. package/lib/mass/ui/MassAboutDialog.js +44 -0
  330. package/lib/mass/ui/MassAboutDialog.js.map +1 -0
  331. package/lib/mass/ui/MassCanvas.d.ts +46 -0
  332. package/lib/mass/ui/MassCanvas.d.ts.map +1 -0
  333. package/lib/mass/ui/MassCanvas.js +84 -0
  334. package/lib/mass/ui/MassCanvas.js.map +1 -0
  335. package/lib/mass/ui/MassChart.d.ts +21 -0
  336. package/lib/mass/ui/MassChart.d.ts.map +1 -0
  337. package/lib/mass/ui/MassChart.js +139 -0
  338. package/lib/mass/ui/MassChart.js.map +1 -0
  339. package/lib/mass/ui/MassCommandProvider.d.ts +15 -0
  340. package/lib/mass/ui/MassCommandProvider.d.ts.map +1 -0
  341. package/lib/mass/ui/MassCommandProvider.js +14 -0
  342. package/lib/mass/ui/MassCommandProvider.js.map +1 -0
  343. package/lib/mass/ui/MassCommandTooltip.d.ts +16 -0
  344. package/lib/mass/ui/MassCommandTooltip.d.ts.map +1 -0
  345. package/lib/mass/ui/MassCommandTooltip.js +22 -0
  346. package/lib/mass/ui/MassCommandTooltip.js.map +1 -0
  347. package/lib/mass/ui/MassDocumentationDialog.d.ts +18 -0
  348. package/lib/mass/ui/MassDocumentationDialog.d.ts.map +1 -0
  349. package/lib/mass/ui/MassDocumentationDialog.js +70 -0
  350. package/lib/mass/ui/MassDocumentationDialog.js.map +1 -0
  351. package/lib/mass/ui/MassEditor.d.ts +78 -0
  352. package/lib/mass/ui/MassEditor.d.ts.map +1 -0
  353. package/lib/mass/ui/MassEditor.js +42 -0
  354. package/lib/mass/ui/MassEditor.js.map +1 -0
  355. package/lib/mass/ui/MassHeader.d.ts +12 -0
  356. package/lib/mass/ui/MassHeader.d.ts.map +1 -0
  357. package/lib/mass/ui/MassHeader.js +20 -0
  358. package/lib/mass/ui/MassHeader.js.map +1 -0
  359. package/lib/mass/ui/MassLogo.d.ts +21 -0
  360. package/lib/mass/ui/MassLogo.d.ts.map +1 -0
  361. package/lib/mass/ui/MassLogo.js +36 -0
  362. package/lib/mass/ui/MassLogo.js.map +1 -0
  363. package/lib/mass/ui/MassPointerTracker.d.ts +44 -0
  364. package/lib/mass/ui/MassPointerTracker.d.ts.map +1 -0
  365. package/lib/mass/ui/MassPointerTracker.js +29 -0
  366. package/lib/mass/ui/MassPointerTracker.js.map +1 -0
  367. package/lib/mass/ui/MassShell.d.ts +29 -0
  368. package/lib/mass/ui/MassShell.d.ts.map +1 -0
  369. package/lib/mass/ui/MassShell.js +133 -0
  370. package/lib/mass/ui/MassShell.js.map +1 -0
  371. package/lib/mass/ui/MassSidePanel.d.ts +32 -0
  372. package/lib/mass/ui/MassSidePanel.d.ts.map +1 -0
  373. package/lib/mass/ui/MassSidePanel.js +44 -0
  374. package/lib/mass/ui/MassSidePanel.js.map +1 -0
  375. package/lib/mass/ui/MassStateProvider.d.ts +19 -0
  376. package/lib/mass/ui/MassStateProvider.d.ts.map +1 -0
  377. package/lib/mass/ui/MassStateProvider.js +16 -0
  378. package/lib/mass/ui/MassStateProvider.js.map +1 -0
  379. package/lib/mass/ui/MassStatusBar.d.ts +15 -0
  380. package/lib/mass/ui/MassStatusBar.d.ts.map +1 -0
  381. package/lib/mass/ui/MassStatusBar.js +50 -0
  382. package/lib/mass/ui/MassStatusBar.js.map +1 -0
  383. package/lib/mass/ui/MassToolbar.d.ts +24 -0
  384. package/lib/mass/ui/MassToolbar.d.ts.map +1 -0
  385. package/lib/mass/ui/MassToolbar.js +36 -0
  386. package/lib/mass/ui/MassToolbar.js.map +1 -0
  387. package/lib/mass/ui/MetadataPanel.d.ts +35 -0
  388. package/lib/mass/ui/MetadataPanel.d.ts.map +1 -0
  389. package/lib/mass/ui/MetadataPanel.js +100 -0
  390. package/lib/mass/ui/MetadataPanel.js.map +1 -0
  391. package/lib/mass/ui/MzDecimalsMenu.d.ts +28 -0
  392. package/lib/mass/ui/MzDecimalsMenu.d.ts.map +1 -0
  393. package/lib/mass/ui/MzDecimalsMenu.js +40 -0
  394. package/lib/mass/ui/MzDecimalsMenu.js.map +1 -0
  395. package/lib/mass/ui/PeakLabels.d.ts +93 -0
  396. package/lib/mass/ui/PeakLabels.d.ts.map +1 -0
  397. package/lib/mass/ui/PeakLabels.js +91 -0
  398. package/lib/mass/ui/PeakLabels.js.map +1 -0
  399. package/lib/mass/ui/PeakTable.d.ts +34 -0
  400. package/lib/mass/ui/PeakTable.d.ts.map +1 -0
  401. package/lib/mass/ui/PeakTable.js +49 -0
  402. package/lib/mass/ui/PeakTable.js.map +1 -0
  403. package/lib/mass/ui/PeaksPanel.d.ts +31 -0
  404. package/lib/mass/ui/PeaksPanel.d.ts.map +1 -0
  405. package/lib/mass/ui/PeaksPanel.js +53 -0
  406. package/lib/mass/ui/PeaksPanel.js.map +1 -0
  407. package/lib/mass/ui/SpectraPanel.d.ts +17 -0
  408. package/lib/mass/ui/SpectraPanel.d.ts.map +1 -0
  409. package/lib/mass/ui/SpectraPanel.js +76 -0
  410. package/lib/mass/ui/SpectraPanel.js.map +1 -0
  411. package/lib/mass/ui/SpectrumRow.d.ts +26 -0
  412. package/lib/mass/ui/SpectrumRow.d.ts.map +1 -0
  413. package/lib/mass/ui/SpectrumRow.js +141 -0
  414. package/lib/mass/ui/SpectrumRow.js.map +1 -0
  415. package/lib/mass/ui/SpectrumTrace.d.ts +46 -0
  416. package/lib/mass/ui/SpectrumTrace.d.ts.map +1 -0
  417. package/lib/mass/ui/SpectrumTrace.js +68 -0
  418. package/lib/mass/ui/SpectrumTrace.js.map +1 -0
  419. package/lib/mass/ui/index.d.ts +69 -0
  420. package/lib/mass/ui/index.d.ts.map +1 -0
  421. package/lib/mass/ui/index.js +42 -0
  422. package/lib/mass/ui/index.js.map +1 -0
  423. package/lib/mass/ui/massActions.d.ts +52 -0
  424. package/lib/mass/ui/massActions.d.ts.map +1 -0
  425. package/lib/mass/ui/massActions.js +62 -0
  426. package/lib/mass/ui/massActions.js.map +1 -0
  427. package/lib/mass/ui/massChartProps.d.ts +128 -0
  428. package/lib/mass/ui/massChartProps.d.ts.map +1 -0
  429. package/lib/mass/ui/massChartProps.js +14 -0
  430. package/lib/mass/ui/massChartProps.js.map +1 -0
  431. package/lib/mass/ui/massCommandContext.d.ts +36 -0
  432. package/lib/mass/ui/massCommandContext.d.ts.map +1 -0
  433. package/lib/mass/ui/massCommandContext.js +45 -0
  434. package/lib/mass/ui/massCommandContext.js.map +1 -0
  435. package/lib/mass/ui/massHostPanels.d.ts +48 -0
  436. package/lib/mass/ui/massHostPanels.d.ts.map +1 -0
  437. package/lib/mass/ui/massHostPanels.js +41 -0
  438. package/lib/mass/ui/massHostPanels.js.map +1 -0
  439. package/lib/mass/ui/massStateContext.d.ts +26 -0
  440. package/lib/mass/ui/massStateContext.d.ts.map +1 -0
  441. package/lib/mass/ui/massStateContext.js +37 -0
  442. package/lib/mass/ui/massStateContext.js.map +1 -0
  443. package/lib/mass/ui/useIntensityZoom.d.ts +20 -0
  444. package/lib/mass/ui/useIntensityZoom.d.ts.map +1 -0
  445. package/lib/mass/ui/useIntensityZoom.js +42 -0
  446. package/lib/mass/ui/useIntensityZoom.js.map +1 -0
  447. package/lib/mass/ui/useMassEditor.d.ts +52 -0
  448. package/lib/mass/ui/useMassEditor.d.ts.map +1 -0
  449. package/lib/mass/ui/useMassEditor.js +93 -0
  450. package/lib/mass/ui/useMassEditor.js.map +1 -0
  451. package/lib/mass/ui/useMassFiles.d.ts +22 -0
  452. package/lib/mass/ui/useMassFiles.d.ts.map +1 -0
  453. package/lib/mass/ui/useMassFiles.js +71 -0
  454. package/lib/mass/ui/useMassFiles.js.map +1 -0
  455. package/lib/mass/ui/useMassHandle.d.ts +15 -0
  456. package/lib/mass/ui/useMassHandle.d.ts.map +1 -0
  457. package/lib/mass/ui/useMassHandle.js +35 -0
  458. package/lib/mass/ui/useMassHandle.js.map +1 -0
  459. package/lib/mass/ui/useMassPointer.d.ts +70 -0
  460. package/lib/mass/ui/useMassPointer.d.ts.map +1 -0
  461. package/lib/mass/ui/useMassPointer.js +57 -0
  462. package/lib/mass/ui/useMassPointer.js.map +1 -0
  463. package/lib/mass/ui/useMassShortcuts.d.ts +21 -0
  464. package/lib/mass/ui/useMassShortcuts.d.ts.map +1 -0
  465. package/lib/mass/ui/useMassShortcuts.js +66 -0
  466. package/lib/mass/ui/useMassShortcuts.js.map +1 -0
  467. package/lib/mass/ui/useMassSide.d.ts +27 -0
  468. package/lib/mass/ui/useMassSide.d.ts.map +1 -0
  469. package/lib/mass/ui/useMassSide.js +45 -0
  470. package/lib/mass/ui/useMassSide.js.map +1 -0
  471. package/lib/mass/ui/useMassZoom.d.ts +92 -0
  472. package/lib/mass/ui/useMassZoom.d.ts.map +1 -0
  473. package/lib/mass/ui/useMassZoom.js +65 -0
  474. package/lib/mass/ui/useMassZoom.js.map +1 -0
  475. package/lib/mass.d.ts +16 -0
  476. package/lib/mass.d.ts.map +1 -0
  477. package/lib/mass.js +16 -0
  478. package/lib/mass.js.map +1 -0
  479. package/lib/panel/ui/PanelRail.d.ts.map +1 -1
  480. package/lib/panel/ui/PanelRail.js +6 -1
  481. package/lib/panel/ui/PanelRail.js.map +1 -1
  482. package/lib/slides/ui/slideSanitizeSchema.d.ts +3 -2
  483. package/lib/slides/ui/slideSanitizeSchema.d.ts.map +1 -1
  484. package/lib/slides/ui/slideSanitizeSchema.js +82 -2
  485. package/lib/slides/ui/slideSanitizeSchema.js.map +1 -1
  486. package/package.json +6 -1
  487. package/src/about/core/providers.ts +7 -0
  488. package/src/about/ui/AboutProvidedBy.tsx +49 -0
  489. package/src/chart/ui/useChartPointer.ts +18 -4
  490. package/src/credits/core/credits.ts +53 -0
  491. package/src/download/core/drawingMarkup.ts +18 -1
  492. package/src/download/core/figurePng.ts +21 -8
  493. package/src/download/core/figureSvg.ts +5 -2
  494. package/src/download/core/figureTarget.ts +28 -3
  495. package/src/download/core/svgBounds.ts +21 -0
  496. package/src/download/core/svgToPng.ts +3 -4
  497. package/src/format/core/relativeTime.ts +29 -7
  498. package/src/host/core/connectHost.ts +77 -120
  499. package/src/host/core/hostOutputs.ts +197 -0
  500. package/src/host/core/index.ts +13 -7
  501. package/src/host/core/irKinds.ts +92 -0
  502. package/src/host/core/kinds.ts +16 -6
  503. package/src/host/core/protocol.ts +50 -8
  504. package/src/host/core/selectInputs.ts +145 -0
  505. package/src/host/testing/sciPeaks.ts +140 -0
  506. package/src/host/testing/standInHost.ts +30 -5
  507. package/src/host/ui/useHostConnection.ts +17 -8
  508. package/src/host-testing.ts +4 -0
  509. package/src/ir/core/handPicking.ts +154 -0
  510. package/src/ir/core/index.ts +14 -0
  511. package/src/ir/core/irBandState.ts +155 -0
  512. package/src/ir/core/irCommands.ts +7 -0
  513. package/src/ir/core/irPeaks.ts +79 -0
  514. package/src/ir/core/irReducer.ts +27 -34
  515. package/src/ir/core/irSpectrum.ts +16 -0
  516. package/src/ir/core/irState.ts +15 -8
  517. package/src/ir/core/pickBands.ts +46 -39
  518. package/src/ir/core/ramanBands.ts +2 -2
  519. package/src/ir/core/spectrumBands.ts +113 -0
  520. package/src/ir/ui/BandRow.tsx +20 -2
  521. package/src/ir/ui/BandsPanel.tsx +46 -88
  522. package/src/ir/ui/BandsToolbar.tsx +152 -0
  523. package/src/ir/ui/IrCanvas.tsx +22 -11
  524. package/src/ir/ui/IrChart.tsx +10 -1
  525. package/src/ir/ui/IrDocumentationDialog.tsx +7 -0
  526. package/src/ir/ui/IrEditor.tsx +4 -2
  527. package/src/ir/ui/IrShell.tsx +5 -0
  528. package/src/ir/ui/IrStatusBar.tsx +4 -1
  529. package/src/ir/ui/IrToolbar.tsx +14 -5
  530. package/src/ir/ui/VibrationalEditor.tsx +2 -1
  531. package/src/ir/ui/irActions.ts +11 -0
  532. package/src/ir/ui/irChartProps.ts +4 -1
  533. package/src/ir/ui/useIrEditor.ts +21 -21
  534. package/src/locales/de.json +63 -0
  535. package/src/locales/en.json +63 -0
  536. package/src/locales/es.json +63 -0
  537. package/src/locales/fr.json +63 -0
  538. package/src/locales/it.json +63 -0
  539. package/src/mass/core/analyseSpectrum.ts +191 -0
  540. package/src/mass/core/ascendingTrace.ts +62 -0
  541. package/src/mass/core/centroidPeaks.ts +114 -0
  542. package/src/mass/core/detectMassFormat.ts +113 -0
  543. package/src/mass/core/downloadSpectra.ts +52 -0
  544. package/src/mass/core/fromJcamp.ts +151 -0
  545. package/src/mass/core/fromText.ts +58 -0
  546. package/src/mass/core/index.ts +194 -0
  547. package/src/mass/core/jcampTechnique.ts +87 -0
  548. package/src/mass/core/labelStackBox.ts +75 -0
  549. package/src/mass/core/labelledPeaks.ts +135 -0
  550. package/src/mass/core/loadMassSpectra.ts +86 -0
  551. package/src/mass/core/loadedMassSpectrum.ts +43 -0
  552. package/src/mass/core/massCommands.ts +156 -0
  553. package/src/mass/core/massDomain.ts +229 -0
  554. package/src/mass/core/massEditorApi.ts +68 -0
  555. package/src/mass/core/massFormat.ts +187 -0
  556. package/src/mass/core/massMeta.ts +239 -0
  557. package/src/mass/core/massReducer.ts +232 -0
  558. package/src/mass/core/massResolution.ts +169 -0
  559. package/src/mass/core/massSidePanels.ts +27 -0
  560. package/src/mass/core/massSpectrum.ts +220 -0
  561. package/src/mass/core/massState.ts +206 -0
  562. package/src/mass/core/massStateEdits.ts +104 -0
  563. package/src/mass/core/massSummary.ts +213 -0
  564. package/src/mass/core/mzDecimalsSetting.ts +52 -0
  565. package/src/mass/core/nearestPeak.ts +130 -0
  566. package/src/mass/core/peakLabelLines.ts +112 -0
  567. package/src/mass/core/peakLabelPlan.ts +246 -0
  568. package/src/mass/core/peakTable.ts +82 -0
  569. package/src/mass/core/resolutionOf.ts +100 -0
  570. package/src/mass/core/scanFilter.ts +119 -0
  571. package/src/mass/core/spectrumJcamp.ts +186 -0
  572. package/src/mass/core/toMassSpectrum.ts +126 -0
  573. package/src/mass/core/traceIcon.ts +105 -0
  574. package/src/mass/core/writtenResolution.ts +81 -0
  575. package/src/mass/ui/MassAboutDialog.tsx +89 -0
  576. package/src/mass/ui/MassCanvas.tsx +170 -0
  577. package/src/mass/ui/MassChart.tsx +266 -0
  578. package/src/mass/ui/MassCommandProvider.tsx +34 -0
  579. package/src/mass/ui/MassCommandTooltip.tsx +36 -0
  580. package/src/mass/ui/MassDocumentationDialog.tsx +136 -0
  581. package/src/mass/ui/MassEditor.tsx +130 -0
  582. package/src/mass/ui/MassHeader.tsx +38 -0
  583. package/src/mass/ui/MassLogo.tsx +84 -0
  584. package/src/mass/ui/MassPointerTracker.tsx +72 -0
  585. package/src/mass/ui/MassShell.tsx +237 -0
  586. package/src/mass/ui/MassSidePanel.tsx +107 -0
  587. package/src/mass/ui/MassStateProvider.tsx +32 -0
  588. package/src/mass/ui/MassStatusBar.tsx +108 -0
  589. package/src/mass/ui/MassToolbar.tsx +120 -0
  590. package/src/mass/ui/MetadataPanel.tsx +201 -0
  591. package/src/mass/ui/MzDecimalsMenu.tsx +86 -0
  592. package/src/mass/ui/PeakLabels.tsx +242 -0
  593. package/src/mass/ui/PeakTable.tsx +199 -0
  594. package/src/mass/ui/PeaksPanel.tsx +182 -0
  595. package/src/mass/ui/SpectraPanel.tsx +153 -0
  596. package/src/mass/ui/SpectrumRow.tsx +246 -0
  597. package/src/mass/ui/SpectrumTrace.tsx +119 -0
  598. package/src/mass/ui/index.ts +69 -0
  599. package/src/mass/ui/massActions.ts +109 -0
  600. package/src/mass/ui/massChartProps.ts +130 -0
  601. package/src/mass/ui/massCommandContext.tsx +65 -0
  602. package/src/mass/ui/massHostPanels.ts +71 -0
  603. package/src/mass/ui/massStateContext.ts +48 -0
  604. package/src/mass/ui/useIntensityZoom.ts +55 -0
  605. package/src/mass/ui/useMassEditor.ts +156 -0
  606. package/src/mass/ui/useMassFiles.ts +91 -0
  607. package/src/mass/ui/useMassHandle.ts +58 -0
  608. package/src/mass/ui/useMassPointer.ts +120 -0
  609. package/src/mass/ui/useMassShortcuts.ts +85 -0
  610. package/src/mass/ui/useMassSide.ts +63 -0
  611. package/src/mass/ui/useMassZoom.ts +157 -0
  612. package/src/mass.ts +16 -0
  613. package/src/panel/ui/PanelRail.tsx +5 -1
  614. package/src/slides/ui/slideSanitizeSchema.ts +86 -2
  615. package/styles/chrome.css +7 -0
  616. package/styles/slides.css +47 -0
@@ -0,0 +1,45 @@
1
+ /**
2
+ * One entry point for whatever was dropped, opened or pasted.
3
+ *
4
+ * The format is decided from the bytes and the right reader is called, so a
5
+ * caller hands over a file and gets spectra back without knowing what it turned
6
+ * out to be. Each reader is imported only once the bytes turn out to need it, so
7
+ * a page that never opens a JCAMP never downloads its converter.
8
+ */
9
+ import { describeSource } from "../../error/core/index.js";
10
+ import { detectMassFormat } from "./detectMassFormat.js";
11
+ /**
12
+ * How many spectra one file is read for at most.
13
+ *
14
+ * A JCAMP of a GC/MS run writes a page per scan, thousands of them, and a list
15
+ * of thousands of rows is a list nobody can find anything in. A hundred keeps
16
+ * every file somebody exported deliberately and stops a whole run at its start,
17
+ * where saying so is better than hanging the page.
18
+ */
19
+ export const DEFAULT_MAX_SPECTRA = 100;
20
+ /**
21
+ * Read every mass spectrum a file holds.
22
+ * @param data - The file, as bytes, or the pasted text.
23
+ * @param options - The file's name, and how many spectra to read at most.
24
+ * @returns The spectra, the format they were read from and how many were left
25
+ * unread.
26
+ * @throws {Error} When nothing in the file names a format this can read, or when
27
+ * the reader for that format gave up on it — always with a sentence naming the
28
+ * file.
29
+ */
30
+ export async function loadMassSpectra(data, options = {}) {
31
+ const { fileName, maxSpectra = DEFAULT_MAX_SPECTRA } = options;
32
+ const content = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
33
+ const format = detectMassFormat(content, fileName);
34
+ const named = fileName === undefined ? {} : { fileName };
35
+ if (format === 'jcamp') {
36
+ const { fromJcamp } = await import("./fromJcamp.js");
37
+ return { ...fromJcamp(content, { ...named, maxSpectra }), format };
38
+ }
39
+ if (format === 'text') {
40
+ const { fromText } = await import("./fromText.js");
41
+ return { spectra: fromText(content, named), format, dropped: 0 };
42
+ }
43
+ throw new Error(`${describeSource(fileName)} is not a spectrum this viewer can read — JCAMP-DX files (.jdx, .dx) and two columns of m/z and intensity (.txt, .csv, .xy) are understood.`);
44
+ }
45
+ //# sourceMappingURL=loadMassSpectra.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadMassSpectra.js","sourceRoot":"","sources":["../../../src/mass/core/loadMassSpectra.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AA+BvC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAuC,EACvC,UAAkC,EAAE;IAEpC,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAI,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;IAEzD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACrD,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACrE,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,IAAI,KAAK,CACb,GAAG,cAAc,CAAC,QAAQ,CAAC,6IAA6I,CACzK,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * What a reader hands back, before the peaks are picked.
3
+ *
4
+ * A JCAMP holds a title and twenty instrument records, a pasted peak table two
5
+ * columns and nothing else — and both end up here, so `toMassSpectrum` has one
6
+ * shape to turn into a `MassSpectrum`. A reader does not pick peaks, choose a
7
+ * colour or mint an identity, because those are decisions about the session
8
+ * rather than about the file.
9
+ *
10
+ * One spectrum is one acquisition. A file holding twelve gives twelve and never
11
+ * a merged one — an averaged spectrum is something the chemist asks for, not
12
+ * something a reader quietly does on the way in.
13
+ */
14
+ import type { MassMeta, MassOrigin, MassTrace } from './massSpectrum.ts';
15
+ /** One acquisition, as the file gave it up. */
16
+ export interface LoadedMassSpectrum {
17
+ /**
18
+ * The points, m/z ascending, the intensities as the file wrote them — counts
19
+ * on one instrument and relative abundance on the next. They are put on one
20
+ * scale when the peaks are picked.
21
+ */
22
+ trace: MassTrace;
23
+ /** What the file said about the acquisition, `null` when it said nothing. */
24
+ meta: MassMeta | null;
25
+ /** Where it came from. */
26
+ origin: MassOrigin;
27
+ /**
28
+ * What the file calls it, absent when the file names nothing, so the caller
29
+ * can fall back to the file name without having to recognise a placeholder
30
+ * it invented itself.
31
+ * @default undefined
32
+ */
33
+ name?: string;
34
+ /**
35
+ * Whether the file said outright that this is a continuous profile rather
36
+ * than a peak table, absent when it did not — which is what the spacing of
37
+ * the points is then asked.
38
+ * @default undefined
39
+ */
40
+ continuous?: boolean;
41
+ }
42
+ //# sourceMappingURL=loadedMassSpectrum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadedMassSpectrum.d.ts","sourceRoot":"","sources":["../../../src/mass/core/loadedMassSpectrum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEzE,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB,6EAA6E;IAC7E,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,0BAA0B;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * What a reader hands back, before the peaks are picked.
3
+ *
4
+ * A JCAMP holds a title and twenty instrument records, a pasted peak table two
5
+ * columns and nothing else — and both end up here, so `toMassSpectrum` has one
6
+ * shape to turn into a `MassSpectrum`. A reader does not pick peaks, choose a
7
+ * colour or mint an identity, because those are decisions about the session
8
+ * rather than about the file.
9
+ *
10
+ * One spectrum is one acquisition. A file holding twelve gives twelve and never
11
+ * a merged one — an averaged spectrum is something the chemist asks for, not
12
+ * something a reader quietly does on the way in.
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=loadedMassSpectrum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadedMassSpectrum.js","sourceRoot":"","sources":["../../../src/mass/core/loadedMassSpectrum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Everything the viewer offers, what each is called, and the key it answers to.
3
+ *
4
+ * One table, read by three things that must agree: the toolbar draws it, the
5
+ * tooltip explains it, and the key handler fires it. Written apart from all
6
+ * three so a command cannot be added to the toolbar without a name, or bound to
7
+ * a key nothing tells the reader about.
8
+ *
9
+ * The keys are the infrared viewer's wherever the two viewers share a command,
10
+ * so a chemist who has learned one has learned the other.
11
+ */
12
+ /** The key a command answers to. */
13
+ export interface MassShortcut {
14
+ /** The `event.key` values it fires on, the first being the one shown. */
15
+ keys: readonly string[];
16
+ /**
17
+ * How to write the key in a tooltip, where the raw value would read badly.
18
+ * @default the first of `keys`
19
+ */
20
+ label?: readonly string[];
21
+ }
22
+ /** A gesture that does the same thing, listed under the tooltip's title. */
23
+ export interface MassGesture {
24
+ /** Where the gesture is made, or what it is made with. */
25
+ title: string;
26
+ /** The buttons, keys or wheel that make it. */
27
+ shortcuts: readonly string[];
28
+ }
29
+ /** One thing the viewer can be asked to do. */
30
+ export interface MassCommand {
31
+ /** What it is called, which is what the tooltip is titled. */
32
+ title: string;
33
+ /**
34
+ * The key it answers to, absent for a command with none.
35
+ * @default undefined
36
+ */
37
+ shortcut?: MassShortcut;
38
+ /**
39
+ * What it does, in a sentence, under the title in the tooltip.
40
+ * @default undefined
41
+ */
42
+ description?: string;
43
+ /**
44
+ * The gestures that do the same thing, for the ones a key cannot describe.
45
+ * @default undefined
46
+ */
47
+ gestures?: readonly MassGesture[];
48
+ }
49
+ /** Everything the viewer offers, in the order it is reached for. */
50
+ export declare const massCommands: {
51
+ readonly about: {
52
+ readonly title: "About the mass spectrum viewer";
53
+ readonly description: "What it reads, what it is built on, and what it credits.";
54
+ };
55
+ readonly documentation: {
56
+ readonly title: "Documentation";
57
+ readonly shortcut: {
58
+ readonly keys: readonly ["h"];
59
+ };
60
+ readonly description: "How to open a spectrum, what the panels hold, and every gesture.";
61
+ };
62
+ readonly fullScreen: {
63
+ readonly title: "Full screen";
64
+ readonly description: "The viewer takes the whole screen rather than its corner of the page. Esc gives it back.";
65
+ };
66
+ readonly openFiles: {
67
+ readonly title: "Open spectra…";
68
+ readonly shortcut: {
69
+ readonly keys: readonly ["o"];
70
+ };
71
+ readonly description: "Reads JCAMP-DX files and two-column text files of m/z and intensity, and adds what they hold to the chart.";
72
+ readonly gestures: readonly [{
73
+ readonly title: "Over the chart";
74
+ readonly shortcuts: readonly ["Drop files"];
75
+ }];
76
+ };
77
+ readonly readTool: {
78
+ readonly title: "Read";
79
+ readonly shortcut: {
80
+ readonly keys: readonly ["r"];
81
+ };
82
+ readonly description: "A drag narrows the m/z axis, which is the question a spectrum is nearly always asked. Released below the baseline, it takes the intensity axis with it.";
83
+ readonly gestures: readonly [{
84
+ readonly title: "Over the chart";
85
+ readonly shortcuts: readonly ["Drag"];
86
+ }];
87
+ };
88
+ readonly boxTool: {
89
+ readonly title: "Square zoom";
90
+ readonly shortcut: {
91
+ readonly keys: readonly ["b"];
92
+ };
93
+ readonly description: "A drag zooms to exactly the rectangle it sweeps out, both axes at once — for looking into the baseline under a cluster rather than across the spectrum.";
94
+ readonly gestures: readonly [{
95
+ readonly title: "Over the chart";
96
+ readonly shortcuts: readonly ["Drag a rectangle"];
97
+ }];
98
+ };
99
+ readonly zoomIn: {
100
+ readonly title: "Zoom in";
101
+ readonly shortcut: {
102
+ readonly keys: readonly ["+", "="];
103
+ };
104
+ readonly description: "Brings the small peaks up, scaling the intensity about zero.";
105
+ readonly gestures: readonly [{
106
+ readonly title: "Over the chart";
107
+ readonly shortcuts: readonly ["Scroll wheel"];
108
+ }];
109
+ };
110
+ readonly zoomOut: {
111
+ readonly title: "Zoom out";
112
+ readonly shortcut: {
113
+ readonly keys: readonly ["-"];
114
+ };
115
+ readonly description: "Puts the intensity axis back out again.";
116
+ readonly gestures: readonly [{
117
+ readonly title: "Over the chart";
118
+ readonly shortcuts: readonly ["Scroll wheel"];
119
+ }];
120
+ };
121
+ readonly resetZoom: {
122
+ readonly title: "Zoom to fit";
123
+ readonly shortcut: {
124
+ readonly keys: readonly ["f"];
125
+ };
126
+ readonly description: "Shows every spectrum that is drawn, whole.";
127
+ readonly gestures: readonly [{
128
+ readonly title: "Over the chart";
129
+ readonly shortcuts: readonly ["Double click"];
130
+ }];
131
+ };
132
+ readonly toggleLabels: {
133
+ readonly title: "Label the peaks";
134
+ readonly shortcut: {
135
+ readonly keys: readonly ["l"];
136
+ };
137
+ readonly description: "Writes the m/z and the intensity over the tallest peaks of the selected spectrum. Which peaks follows the zoom: zoom onto a cluster and every line of it is labelled.";
138
+ };
139
+ readonly toggleCharges: {
140
+ readonly title: "Write the charges";
141
+ readonly shortcut: {
142
+ readonly keys: readonly ["z"];
143
+ };
144
+ readonly description: "Adds the charge to the label of every peak whose isotopologue spacing, or charge ladder, established one.";
145
+ };
146
+ readonly exportImage: {
147
+ readonly title: "Save figure…";
148
+ readonly shortcut: {
149
+ readonly keys: readonly ["x"];
150
+ };
151
+ readonly description: "The chart as it stands, saved as a PNG or an SVG at a chosen resolution, or copied as a PNG.";
152
+ };
153
+ readonly clear: {
154
+ readonly title: "Close every spectrum";
155
+ readonly description: "Empties the chart and starts again.";
156
+ };
157
+ };
158
+ /** Identity of one of the commands the viewer offers. */
159
+ export type MassCommandId = keyof typeof massCommands;
160
+ /** What to do when each command is run, as the shell wires them. */
161
+ export type MassCommandHandlers = Partial<Record<MassCommandId, (() => void) | undefined>>;
162
+ /** How a component runs a command. */
163
+ export type RunMassCommand = (id: MassCommandId) => void;
164
+ /**
165
+ * What a command is called, with its key, for a label and an `aria-label`.
166
+ * @param id - Which command.
167
+ * @returns The title, and the key in parentheses when it has one.
168
+ */
169
+ export declare function massCommandLabel(id: MassCommandId): string;
170
+ //# sourceMappingURL=massCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massCommands.d.ts","sourceRoot":"","sources":["../../../src/mass/core/massCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oCAAoC;AACpC,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CACnC;AAKD,oEAAoE;AACpE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6EuB,CAAC;AAEjD,yDAAyD;AACzD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,YAAY,CAAC;AAEtD,oEAAoE;AACpE,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAChD,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,CAI1D"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Everything the viewer offers, what each is called, and the key it answers to.
3
+ *
4
+ * One table, read by three things that must agree: the toolbar draws it, the
5
+ * tooltip explains it, and the key handler fires it. Written apart from all
6
+ * three so a command cannot be added to the toolbar without a name, or bound to
7
+ * a key nothing tells the reader about.
8
+ *
9
+ * The keys are the infrared viewer's wherever the two viewers share a command,
10
+ * so a chemist who has learned one has learned the other.
11
+ */
12
+ /** Where the chart is, for a gesture made anywhere on it. */
13
+ const OVER_THE_CHART = 'Over the chart';
14
+ /** Everything the viewer offers, in the order it is reached for. */
15
+ export const massCommands = {
16
+ about: {
17
+ title: 'About the mass spectrum viewer',
18
+ description: 'What it reads, what it is built on, and what it credits.',
19
+ },
20
+ documentation: {
21
+ title: 'Documentation',
22
+ shortcut: { keys: ['h'] },
23
+ description: 'How to open a spectrum, what the panels hold, and every gesture.',
24
+ },
25
+ fullScreen: {
26
+ title: 'Full screen',
27
+ description: 'The viewer takes the whole screen rather than its corner of the page. Esc gives it back.',
28
+ },
29
+ openFiles: {
30
+ title: 'Open spectra…',
31
+ shortcut: { keys: ['o'] },
32
+ description: 'Reads JCAMP-DX files and two-column text files of m/z and intensity, and adds what they hold to the chart.',
33
+ gestures: [{ title: OVER_THE_CHART, shortcuts: ['Drop files'] }],
34
+ },
35
+ readTool: {
36
+ title: 'Read',
37
+ shortcut: { keys: ['r'] },
38
+ description: 'A drag narrows the m/z axis, which is the question a spectrum is nearly always asked. Released below the baseline, it takes the intensity axis with it.',
39
+ gestures: [{ title: OVER_THE_CHART, shortcuts: ['Drag'] }],
40
+ },
41
+ boxTool: {
42
+ title: 'Square zoom',
43
+ shortcut: { keys: ['b'] },
44
+ description: 'A drag zooms to exactly the rectangle it sweeps out, both axes at once — for looking into the baseline under a cluster rather than across the spectrum.',
45
+ gestures: [{ title: OVER_THE_CHART, shortcuts: ['Drag a rectangle'] }],
46
+ },
47
+ zoomIn: {
48
+ title: 'Zoom in',
49
+ shortcut: { keys: ['+', '='] },
50
+ description: 'Brings the small peaks up, scaling the intensity about zero.',
51
+ gestures: [{ title: OVER_THE_CHART, shortcuts: ['Scroll wheel'] }],
52
+ },
53
+ zoomOut: {
54
+ title: 'Zoom out',
55
+ shortcut: { keys: ['-'] },
56
+ description: 'Puts the intensity axis back out again.',
57
+ gestures: [{ title: OVER_THE_CHART, shortcuts: ['Scroll wheel'] }],
58
+ },
59
+ resetZoom: {
60
+ title: 'Zoom to fit',
61
+ shortcut: { keys: ['f'] },
62
+ description: 'Shows every spectrum that is drawn, whole.',
63
+ gestures: [{ title: OVER_THE_CHART, shortcuts: ['Double click'] }],
64
+ },
65
+ toggleLabels: {
66
+ title: 'Label the peaks',
67
+ shortcut: { keys: ['l'] },
68
+ description: 'Writes the m/z and the intensity over the tallest peaks of the selected spectrum. Which peaks follows the zoom: zoom onto a cluster and every line of it is labelled.',
69
+ },
70
+ toggleCharges: {
71
+ title: 'Write the charges',
72
+ shortcut: { keys: ['z'] },
73
+ description: 'Adds the charge to the label of every peak whose isotopologue spacing, or charge ladder, established one.',
74
+ },
75
+ exportImage: {
76
+ title: 'Save figure…',
77
+ shortcut: { keys: ['x'] },
78
+ description: 'The chart as it stands, saved as a PNG or an SVG at a chosen resolution, or copied as a PNG.',
79
+ },
80
+ clear: {
81
+ title: 'Close every spectrum',
82
+ description: 'Empties the chart and starts again.',
83
+ },
84
+ };
85
+ /**
86
+ * What a command is called, with its key, for a label and an `aria-label`.
87
+ * @param id - Which command.
88
+ * @returns The title, and the key in parentheses when it has one.
89
+ */
90
+ export function massCommandLabel(id) {
91
+ const entry = massCommands[id];
92
+ const key = entry.shortcut?.label?.[0] ?? entry.shortcut?.keys[0];
93
+ return key === undefined ? entry.title : `${entry.title} (${key})`;
94
+ }
95
+ //# sourceMappingURL=massCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massCommands.js","sourceRoot":"","sources":["../../../src/mass/core/massCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA0CH,6DAA6D;AAC7D,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAExC,oEAAoE;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE;QACL,KAAK,EAAE,gCAAgC;QACvC,WAAW,EAAE,0DAA0D;KACxE;IACD,aAAa,EAAE;QACb,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QACzB,WAAW,EACT,kEAAkE;KACrE;IACD,UAAU,EAAE;QACV,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,0FAA0F;KAC7F;IACD,SAAS,EAAE;QACT,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QACzB,WAAW,EACT,4GAA4G;QAC9G,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;KACjE;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QACzB,WAAW,EACT,yJAAyJ;QAC3J,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;KAC3D;IACD,OAAO,EAAE;QACP,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QACzB,WAAW,EACT,yJAAyJ;QAC3J,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;KACvE;IACD,MAAM,EAAE;QACN,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;QAC9B,WAAW,EAAE,8DAA8D;QAC3E,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;KACnE;IACD,OAAO,EAAE;QACP,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QACzB,WAAW,EAAE,yCAAyC;QACtD,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;KACnE;IACD,SAAS,EAAE;QACT,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QACzB,WAAW,EAAE,4CAA4C;QACzD,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;KACnE;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QACzB,WAAW,EACT,uKAAuK;KAC1K;IACD,aAAa,EAAE;QACb,KAAK,EAAE,mBAAmB;QAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QACzB,WAAW,EACT,2GAA2G;KAC9G;IACD,WAAW,EAAE;QACX,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QACzB,WAAW,EACT,8FAA8F;KACjG;IACD,KAAK,EAAE;QACL,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,qCAAqC;KACnD;CAC6C,CAAC;AAajD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAiB;IAChD,MAAM,KAAK,GAAgB,YAAY,CAAC,EAAE,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,GAAG,GAAG,CAAC;AACrE,CAAC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * The window a chart opens on, worked out from the spectra it was handed.
3
+ *
4
+ * This is what "zoom to fit" and the first render both call, so it has to be
5
+ * right for a peak table of four rows and for a profile scan of half a million
6
+ * points alike, and it has to answer something usable when it is handed nothing
7
+ * at all — a chart with no data is still mounted, still measured, and still
8
+ * builds its scales.
9
+ */
10
+ import type { MassDomain, MassSpectrum } from './massSpectrum.ts';
11
+ /**
12
+ * How much air is left either side of the outermost peak, as a fraction.
13
+ *
14
+ * A stick drawn exactly on the axis reads as a spectrum that was cut off there;
15
+ * two percent is enough to show that it was not.
16
+ */
17
+ export declare const X_DOMAIN_PADDING = 0.02;
18
+ /**
19
+ * How far above the tallest peak the intensity axis runs.
20
+ *
21
+ * The base peak carries the label nobody wants to lose — its m/z and its
22
+ * intensity, on two lines — and it is drawn above the stick. Twenty percent is
23
+ * the room those lines take at the top of a chart of any usual height.
24
+ */
25
+ export declare const Y_DOMAIN_HEADROOM = 1.2;
26
+ /**
27
+ * The window that shows everything currently drawn.
28
+ *
29
+ * A spectrum marked `excludeFromDomain` is left out of the extents, because it
30
+ * is a preview rather than data: a predicted pattern that appears and
31
+ * disappears with the pointer would throw away the zoom the user set every
32
+ * time it moved the axes. The exclusion is dropped when it would leave nothing
33
+ * at all — previewing into an empty chart has to show the preview, not an empty
34
+ * axis from 0 to 1.
35
+ *
36
+ * In mirror mode the negative half is the reflection of the positive one rather
37
+ * than its own extent. Two spectra compared head-to-head are only comparable if
38
+ * a peak of the same height means the same intensity in both halves; giving each
39
+ * half its own scale makes the weaker spectrum look as intense as the stronger,
40
+ * which is precisely the comparison the view exists to make.
41
+ * @param spectra - What the chart draws.
42
+ * @param mirror - Whether the chart reflects its spectra about zero. Defaults
43
+ * to `false`.
44
+ * @returns The window, in m/z and in intensity.
45
+ */
46
+ export declare function fullDomain(spectra: readonly MassSpectrum[], mirror?: boolean): MassDomain;
47
+ /**
48
+ * What a fitted window was fitted *to*, as one string two renders can compare.
49
+ *
50
+ * The chart puts its window back to `fullDomain` when it is handed different
51
+ * data, and must not when the same data is merely drawn differently — so
52
+ * something has to tell the two apart. It is the identities that are compared
53
+ * and never the extents: a spectrum switched from its profile to its sticks
54
+ * moves the fitted window by a hair, and refitting on a hair throws away the
55
+ * zoom somebody set, which is the whole reason this exists. Loading a spectrum,
56
+ * closing one and reflecting the chart about zero are the changes that have to
57
+ * be shown, and every one of them shows up here.
58
+ *
59
+ * A spectrum kept out of the automatic domain is kept out of this too, for the
60
+ * reason it is kept out of the extents: a predicted pattern previewed under the
61
+ * pointer comes and goes with the pointer, and refitting on it would throw the
62
+ * zoom away every time a search result is read. The identities are joined by a
63
+ * character no identity holds, so `a b` and `a` then `b` are two fits.
64
+ * @param spectra - What the chart draws.
65
+ * @param mirror - Whether the chart reflects its spectra about zero. Defaults
66
+ * to `false`.
67
+ * @returns A string equal to itself exactly when a fit would be made to the
68
+ * same thing.
69
+ */
70
+ export declare function fittedTo(spectra: readonly MassSpectrum[], mirror?: boolean): string;
71
+ /**
72
+ * The tallest intensity among the traces a set of spectra currently draws.
73
+ *
74
+ * What "how tall is this chart" comes to, in the units the spectra are in, with
75
+ * the headroom `fullDomain` adds left off — so it answers a question about the
76
+ * measurement rather than about the plot. A preview kept out of the extents is
77
+ * kept out of this too, and a chart holding nothing but a preview is measured
78
+ * by it rather than answering zero.
79
+ * @param spectra - The spectra to measure, drawn or not.
80
+ * @returns The tallest intensity drawn, or `0` when nothing is.
81
+ */
82
+ export declare function basePeakOf(spectra: readonly MassSpectrum[]): number;
83
+ /**
84
+ * How much of the axis framing a peak shows, either side of its mass.
85
+ *
86
+ * Wide enough to hold the isotopologue cluster of a singly charged ion, because
87
+ * a peak is read in its cluster and not alone: the M+1 says how much carbon it
88
+ * holds and the spacing says what charge it carries.
89
+ */
90
+ export declare const MZ_FRAME_HALF_WIDTH = 2.5;
91
+ /** How a mass is framed. */
92
+ export interface MzFrameOptions {
93
+ /**
94
+ * How much of the axis to show either side of the mass.
95
+ * @default MZ_FRAME_HALF_WIDTH
96
+ */
97
+ halfWidth?: number;
98
+ /**
99
+ * Whether the chart reflects its spectra about zero, which decides the height
100
+ * it opens on when it has no window of its own.
101
+ * @default false
102
+ */
103
+ mirror?: boolean;
104
+ }
105
+ /**
106
+ * The window that frames one mass, keeping the intensity axis where it was.
107
+ *
108
+ * The vertical extent is deliberately not recomputed from what falls inside the
109
+ * new window: a click is a request to look somewhere else along the m/z axis,
110
+ * and rescaling the height at the same time makes whatever was just clicked fill
111
+ * the plot, so every peak looks like the base peak and the one number the eye
112
+ * reads off a spectrum stops meaning anything. It is only worked out from the
113
+ * spectra when the chart has no window of its own to keep.
114
+ * @param mz - The mass to frame.
115
+ * @param spectra - What the chart is drawing, for the height it opens on.
116
+ * @param domain - The window the chart is showing, `null` when it is fitting.
117
+ * @param options - How wide a window, and whether the chart is mirrored.
118
+ * @returns The window to show.
119
+ */
120
+ export declare function mzFrame(mz: number, spectra: readonly MassSpectrum[], domain: MassDomain | null, options?: MzFrameOptions): MassDomain;
121
+ //# sourceMappingURL=massDomain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massDomain.d.ts","sourceRoot":"","sources":["../../../src/mass/core/massDomain.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAa,MAAM,mBAAmB,CAAC;AAE7E;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,MAAM,UAAQ,GACb,UAAU,CAaZ;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,MAAM,UAAQ,GACb,MAAM,CAOR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAGnE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,4BAA4B;AAC5B,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CACrB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,MAAM,EAAE,UAAU,GAAG,IAAI,EACzB,OAAO,GAAE,cAAmB,GAC3B,UAAU,CAIZ"}