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,126 @@
1
+ /**
2
+ * Whether a spectrum resolves masses finely enough for their decimals to mean
3
+ * anything.
4
+ *
5
+ * A peak table typed out of a low-resolution instrument report holds whole
6
+ * numbers — `163`, `325`, `487` — and writing them as `163.0000` claims four
7
+ * digits of accuracy nobody measured. A high-resolution measurement is the
8
+ * opposite case: `325.1129` and `325.1503` are different ions, and rounding them
9
+ * together loses the whole point of having measured them. Nothing about a single
10
+ * number says which of the two it is, so the answer is read off the spectrum.
11
+ *
12
+ * Three kinds of evidence are read, and the strongest one present decides —
13
+ * `decideResolution` is where they are weighed:
14
+ *
15
+ * 1. **The peaks themselves.** A profile carries the width of every peak, and
16
+ * the resolving power `m / Δm` at half height is what "high resolution" is
17
+ * defined by. This is a measurement, so it is believed over anything a file
18
+ * says about itself.
19
+ * 2. **What the file says the instrument was.** A Thermo scan filter starting
20
+ * `FTMS` is an Orbitrap, one starting `ITMS` an ion trap, and a JCAMP of the
21
+ * old MS dialect writes `##.INSTRUMENT PARAMETERS= LOW RESOLUTION` outright.
22
+ * 3. **How many decimals the masses were written with**, which is all a bare
23
+ * peak table has to say — `writtenResolution.ts`.
24
+ */
25
+ import { gaussianWidthToFWHM } from 'ml-peak-shape-generator';
26
+ import { xMedian } from 'ml-spectra-processing';
27
+ /**
28
+ * The resolving power from which a spectrum counts as high resolution.
29
+ *
30
+ * Ten thousand at half height is the conventional threshold, and it falls in
31
+ * the gap between the two families of instrument rather than inside either:
32
+ * quadrupoles, ion traps and linear time-of-flights work at a few thousand at
33
+ * most, while reflectron time-of-flights, Orbitraps and FT-ICRs start above it.
34
+ */
35
+ export const HIGH_RESOLVING_POWER = 10_000;
36
+ /** How many of the tallest peaks the resolving power is the median of. */
37
+ export const MEASURED_PEAKS = 20;
38
+ /** How many decimals an m/z is written with, for each kind of spectrum. */
39
+ export const MZ_DECIMALS = {
40
+ high: 4,
41
+ low: 1,
42
+ nominal: 0,
43
+ };
44
+ /**
45
+ * The resolving power measured on the peaks of a profile.
46
+ *
47
+ * The median over the tallest peaks rather than over all of them, because a
48
+ * peak a few counts above the noise has a width the noise decided, and rather
49
+ * than the base peak alone, because one peak sitting on an unresolved shoulder
50
+ * would decide the whole spectrum. The width `ml-gsd` reports is the distance
51
+ * between the inflection points, which is converted to the width at half height
52
+ * as a gaussian's is: what a resolving power is quoted against.
53
+ * @param peaks - The peaks the profile was picked into, each with its width.
54
+ * @returns The verdict, `null` when no peak carries a usable width.
55
+ */
56
+ export function measuredResolution(peaks) {
57
+ const usable = [];
58
+ for (const peak of peaks) {
59
+ if (peak.x > 0 && peak.width > 0 && Number.isFinite(peak.width)) {
60
+ usable.push(peak);
61
+ }
62
+ }
63
+ if (usable.length === 0)
64
+ return null;
65
+ const tallest = usable
66
+ .toSorted((first, second) => second.y - first.y)
67
+ .slice(0, MEASURED_PEAKS);
68
+ const powers = new Float64Array(tallest.length);
69
+ for (let index = 0; index < tallest.length; index++) {
70
+ const peak = tallest[index];
71
+ powers[index] = peak.x / gaussianWidthToFWHM(peak.width);
72
+ }
73
+ const resolvingPower = xMedian(powers);
74
+ const kind = resolvingPower >= HIGH_RESOLVING_POWER ? 'high' : 'low';
75
+ return {
76
+ kind,
77
+ resolvingPower,
78
+ basis: 'peakWidth',
79
+ decimals: MZ_DECIMALS[kind],
80
+ };
81
+ }
82
+ /**
83
+ * The resolution the file says the instrument worked at, when it says so.
84
+ *
85
+ * Only the rows that name an instrument are read, and a high verdict is looked
86
+ * for first: an `LTQ-Orbitrap` names an ion trap and an Orbitrap, and the
87
+ * spectrum came out of the Orbitrap. A time-of-flight is deliberately left
88
+ * undecided — a reflectron one is high resolution and a linear one is not, and
89
+ * the name is the same.
90
+ * @param meta - What the file said about the acquisition.
91
+ * @returns The verdict, `null` when the file names no instrument it can be
92
+ * read off.
93
+ */
94
+ export function statedResolution(meta) {
95
+ if (meta === null)
96
+ return null;
97
+ for (const field of meta.fields) {
98
+ if (!INSTRUMENT_FIELDS.has(field.label))
99
+ continue;
100
+ const kind = HIGH_INSTRUMENT.test(field.value)
101
+ ? 'high'
102
+ : LOW_INSTRUMENT.test(field.value)
103
+ ? 'low'
104
+ : null;
105
+ if (kind !== null) {
106
+ return {
107
+ kind,
108
+ resolvingPower: null,
109
+ basis: 'instrument',
110
+ decimals: MZ_DECIMALS[kind],
111
+ };
112
+ }
113
+ }
114
+ return null;
115
+ }
116
+ /** The acquisition rows that name the instrument, and so its resolution. */
117
+ const INSTRUMENT_FIELDS = new Set([
118
+ 'Analyser',
119
+ 'Instrument',
120
+ 'Instrument parameters',
121
+ ]);
122
+ /** The instruments, and the words, that say high resolution. */
123
+ const HIGH_INSTRUMENT = /\bHIGH[\s-]RESOLUTION\b|\bHRMS\b|\bFTMS\b|ORBITRAP|\bFT-?ICR\b|\bEXACTIVE\b|\bEXPLORIS\b/i;
124
+ /** The instruments, and the words, that say a unit-resolution measurement. */
125
+ const LOW_INSTRUMENT = /\bLOW[\s-]RESOLUTION\b|\bITMS\b|\bION[\s-]TRAP\b|\bTRAP\b|QUADRUPOLE/i;
126
+ //# sourceMappingURL=massResolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massResolution.js","sourceRoot":"","sources":["../../../src/mass/core/massResolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAmChD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE3C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,WAAW,GAAiD;IACvE,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,OAAO,EAAE,CAAC;CACX,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA2B;IAE3B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,OAAO,GAAG,MAAM;SACnB,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;SAC/C,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAc,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,cAAc,IAAI,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACrE,OAAO;QACL,IAAI;QACJ,cAAc;QACd,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAqB;IACpD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,SAAS;QAClD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5C,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gBAChC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO;gBACL,IAAI;gBACJ,cAAc,EAAE,IAAI;gBACpB,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC;aAC5B,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,UAAU;IACV,YAAY;IACZ,uBAAuB;CACxB,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,eAAe,GACnB,2FAA2F,CAAC;AAE9F,8EAA8E;AAC9E,MAAM,cAAc,GAClB,uEAAuE,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The panels the side of the viewer can hold, in the order their icons stack.
3
+ *
4
+ * One frozen list read by both the activity bar and the panel stack, so a panel
5
+ * switched off and on again comes back where it was rather than at the end.
6
+ */
7
+ export declare const massSidePanels: readonly [{
8
+ readonly id: "spectra";
9
+ readonly title: "Spectra";
10
+ readonly icon: "timeline-line-chart";
11
+ }, {
12
+ readonly id: "peaks";
13
+ readonly title: "Peaks";
14
+ readonly icon: "th-list";
15
+ }, {
16
+ readonly id: "metadata";
17
+ readonly title: "Acquisition";
18
+ readonly icon: "properties";
19
+ }];
20
+ /** Identity of one of the panels the viewer offers of its own. */
21
+ export type MassSidePanelId = (typeof massSidePanels)[number]['id'];
22
+ /**
23
+ * Identity of any panel the side can hold: one of the viewer's own, or one a
24
+ * host added to them. Still a union with the viewer's own ids, so those keep
25
+ * autocompleting where a plain `string` would swallow them.
26
+ */
27
+ export type MassPanelId = MassSidePanelId | (string & Record<never, never>);
28
+ //# sourceMappingURL=massSidePanels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massSidePanels.d.ts","sourceRoot":"","sources":["../../../src/mass/core/massSidePanels.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;EAQzB,CAAC;AAEH,kEAAkE;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The panels the side of the viewer can hold, in the order their icons stack.
3
+ *
4
+ * One frozen list read by both the activity bar and the panel stack, so a panel
5
+ * switched off and on again comes back where it was rather than at the end.
6
+ */
7
+ export const massSidePanels = [
8
+ { id: 'spectra', title: 'Spectra', icon: 'timeline-line-chart' },
9
+ { id: 'peaks', title: 'Peaks', icon: 'th-list' },
10
+ { id: 'metadata', title: 'Acquisition', icon: 'properties' },
11
+ ];
12
+ //# sourceMappingURL=massSidePanels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massSidePanels.js","sourceRoot":"","sources":["../../../src/mass/core/massSidePanels.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,qBAAqB,EAAE;IAChE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAChD,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE;CAK5D,CAAC"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * What a mass spectrum is once it has been read, whatever it was read from.
3
+ *
4
+ * A file gives one or more acquisitions; each becomes one `MassSpectrum` with
5
+ * two traces of the same measurement — the continuous `profile` as the
6
+ * instrument recorded it, and the `centroid` the peak picking reduced it to.
7
+ * Both are kept because they answer different questions: the profile is what a
8
+ * chemist recognises as a spectrum, and the centroid is what every number
9
+ * downstream is computed from. A centroided file has no profile, and that is
10
+ * the normal case for a peak table pasted out of an instrument report.
11
+ *
12
+ * The arrays are `Float64Array` throughout and are never converted to
13
+ * `number[]`: a profile scan runs to hundreds of thousands of points, a plain
14
+ * array costs two to three times the memory, and any structural freeze or
15
+ * spread walks it element by element while treating a typed array as atomic.
16
+ * They are replaced on a change, never written into, since every consumer holds
17
+ * the same object by reference.
18
+ *
19
+ * The shape is the one the glycan site's mass viewer holds, field for field
20
+ * where the two overlap, so a spectrum that viewer built can be handed to
21
+ * anything here: whatever it carries beyond these fields is simply not read.
22
+ */
23
+ import type { DataXY } from 'cheminfo-types';
24
+ import type { ChartDomain } from '../../chart/core/chartDomain.ts';
25
+ import type { MassResolution } from './massResolution.ts';
26
+ /**
27
+ * One trace of a measurement: m/z against intensity, x strictly increasing.
28
+ *
29
+ * `DataXY` is the shape every package in this pipeline speaks — `xy-parser`,
30
+ * `ms-spectrum` and `ml-spectra-processing` all take and return it — so
31
+ * declaring a parallel type of our own would buy nothing and cost an adapter at
32
+ * each boundary.
33
+ */
34
+ export type MassTrace = DataXY<Float64Array>;
35
+ /**
36
+ * The picked peaks of a spectrum, with the charge of each.
37
+ *
38
+ * `charge` is a dense column rather than an array of optional numbers so it
39
+ * costs two bytes a peak and needs no per-peak object: `0` means no charge was
40
+ * established, which is an answer rather than a missing value — a peak belongs
41
+ * to no isotopologue cluster and to no charge ladder. A charge is never read
42
+ * off a single peak, only off the series it belongs to.
43
+ */
44
+ export interface MassPeaks extends MassTrace {
45
+ /** Charge of each peak, `0` where none was established. Signed. */
46
+ charge: Int16Array;
47
+ }
48
+ /**
49
+ * The formats a spectrum can have been read from.
50
+ *
51
+ * The two this package reads, and `calculated` for a trace nobody measured. Any
52
+ * other name is accepted as well, because a host that read an mzML with a
53
+ * reader of its own hands the spectrum over still knowing what it was read
54
+ * from, and the acquisition table should say so rather than call it text.
55
+ */
56
+ export type MassFormat = 'jcamp' | 'text' | 'calculated' | (string & Record<never, never>);
57
+ /**
58
+ * Where a spectrum came from, and what the file said about the acquisition.
59
+ *
60
+ * Kept apart from `meta` because these are the facts other code branches on —
61
+ * a calculated trace is never reduced for drawing, an MS2 scan carries a
62
+ * precursor worth showing beside its name — while `meta` is a table to read.
63
+ * The readers of this package leave the acquisition facts out; a host whose
64
+ * reader states them, an mzML's, hands them over here.
65
+ */
66
+ export interface MassOrigin {
67
+ /** The format it was read from. */
68
+ format: MassFormat;
69
+ /**
70
+ * Name of the file it came from, absent for a paste.
71
+ * @default undefined
72
+ */
73
+ fileName?: string;
74
+ /**
75
+ * Which acquisition of that file, counted from zero — the block of a JCAMP,
76
+ * or the page of a GC/MS one — absent when the file held only one.
77
+ * @default undefined
78
+ */
79
+ scanIndex?: number;
80
+ /**
81
+ * MS level: 1 for a survey scan, 2 for a fragmentation scan.
82
+ * @default undefined
83
+ */
84
+ msLevel?: number;
85
+ /**
86
+ * Polarity the scan was acquired in.
87
+ * @default undefined
88
+ */
89
+ polarity?: 'positive' | 'negative';
90
+ /**
91
+ * The m/z that was isolated and fragmented, on an MS2 scan.
92
+ * @default undefined
93
+ */
94
+ precursorMz?: number;
95
+ /**
96
+ * The monoisotopic m/z the instrument named for that precursor, where it
97
+ * named one.
98
+ *
99
+ * Carried beside the precursor rather than instead of it because the two are
100
+ * the same number on nearly every scan that has both, and a different one on
101
+ * a scan whose method offset its isolation window: the precursor is then the
102
+ * centre of the window, since that is what the quadrupole transmitted, and
103
+ * this is the molecule the method was after.
104
+ * @default undefined
105
+ */
106
+ precursorMonoisotopicMz?: number;
107
+ /**
108
+ * Retention time in minutes, on a scan out of a chromatographic run.
109
+ * @default undefined
110
+ */
111
+ retentionTime?: number;
112
+ }
113
+ /** One row of the acquisition table. */
114
+ export interface MassMetaField {
115
+ /** How the row is named, in the display order the table fixes. */
116
+ label: string;
117
+ /** The value as the file states it. */
118
+ value: string;
119
+ }
120
+ /**
121
+ * What the file says about how the spectrum was acquired.
122
+ *
123
+ * Only ever what it actually says: a field the file leaves blank is left out
124
+ * rather than shown empty, so the table is short and every line in it is a
125
+ * fact. A plain two-column paste carries none of this, which is most pastes,
126
+ * and the panel then shows the file name alone.
127
+ */
128
+ export interface MassMeta {
129
+ /** The title record, `null` when the file carries none. */
130
+ title: string | null;
131
+ /** The molecular formula the file claims, `null` when it claims none. */
132
+ molecularFormula: string | null;
133
+ /** The fields that are populated, in display order. */
134
+ fields: MassMetaField[];
135
+ /**
136
+ * The instrument's own scan description, kept verbatim. Real instruments
137
+ * leave the structured records empty and put the answer only here, so it is
138
+ * both the fallback the fields are mined from and worth showing as written.
139
+ */
140
+ conditions: string | null;
141
+ }
142
+ /** One spectrum as the viewer holds it. */
143
+ export interface MassSpectrum {
144
+ /** Identity, stable across edits so a selection survives a rename. */
145
+ id: string;
146
+ /** What the list calls it; editable, and never used as identity. */
147
+ name: string;
148
+ /** The colour both its traces are drawn in. */
149
+ color: string;
150
+ /** The continuous trace, `null` when the file was already centroided. */
151
+ profile: MassTrace | null;
152
+ /** The picked peaks, which every number downstream is computed from. */
153
+ centroid: MassPeaks;
154
+ /** What the file said about the acquisition, `null` when it said nothing. */
155
+ meta: MassMeta | null;
156
+ /** Where it came from. */
157
+ origin: MassOrigin;
158
+ /**
159
+ * Whether the profile is drawn. The viewer draws one trace or the other and
160
+ * never both; `isSpectrumDrawn` is the question to ask about the pair.
161
+ */
162
+ showProfile: boolean;
163
+ /** Whether the centroid sticks are drawn, under the same rule. */
164
+ showCentroid: boolean;
165
+ /**
166
+ * Whether the trace is left out of the automatic domain. A predicted
167
+ * distribution previewed under the pointer must not move the axes, or hovering
168
+ * a candidate would throw away the zoom the user set.
169
+ * @default false
170
+ */
171
+ excludeFromDomain?: boolean;
172
+ /**
173
+ * How finely the spectrum resolves masses, as it was decided when it was read.
174
+ *
175
+ * Left out by a host that built the spectrum itself, and then worked out from
176
+ * the masses as written — see `resolutionOf`.
177
+ * @default undefined
178
+ */
179
+ resolution?: MassResolution;
180
+ }
181
+ /**
182
+ * The window the chart is showing, in data units.
183
+ *
184
+ * `ChartDomain` itself, not a type of our own: the arithmetic that moves a
185
+ * window is the shared chart's and speaks that type, and an alias here that
186
+ * merely renamed it would need converting at every call. `x` is in m/z and `y`
187
+ * in intensity.
188
+ */
189
+ export type MassDomain = ChartDomain;
190
+ /**
191
+ * Whether a spectrum is on the chart at all, by whichever of its traces.
192
+ *
193
+ * A spectrum is drawn as its profile *or* as its sticks and never as both — a
194
+ * centroid standing inside the peak shapes it was picked from reads as a second
195
+ * spectrum laid over the first — so whether it is on screen is a question about
196
+ * the pair and not about either one.
197
+ *
198
+ * This is what everything that *uses* the picked peaks asks: pointing at a peak,
199
+ * labelling one, listing them. All of them read the centroid whether or not the
200
+ * sticks are the trace being drawn, so asking `showCentroid` there would make a
201
+ * spectrum shown as its profile quietly stop answering anything.
202
+ * @param spectrum - The spectrum.
203
+ * @returns Whether either of its traces is drawn.
204
+ */
205
+ export declare function isSpectrumDrawn(spectrum: MassSpectrum): boolean;
206
+ //# sourceMappingURL=massSpectrum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massSpectrum.d.ts","sourceRoot":"","sources":["../../../src/mass/core/massSpectrum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,mEAAmE;IACnE,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GACpB,OAAO,GAAG,MAAM,GAAG,YAAY,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,mCAAmC;IACnC,MAAM,EAAE,UAAU,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;OAUG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,uDAAuD;IACvD,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB;;;;OAIG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1B,wEAAwE;IACxE,QAAQ,EAAE,SAAS,CAAC;IACpB,6EAA6E;IAC7E,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,0BAA0B;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,YAAY,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC;AAErC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE/D"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * What a mass spectrum is once it has been read, whatever it was read from.
3
+ *
4
+ * A file gives one or more acquisitions; each becomes one `MassSpectrum` with
5
+ * two traces of the same measurement — the continuous `profile` as the
6
+ * instrument recorded it, and the `centroid` the peak picking reduced it to.
7
+ * Both are kept because they answer different questions: the profile is what a
8
+ * chemist recognises as a spectrum, and the centroid is what every number
9
+ * downstream is computed from. A centroided file has no profile, and that is
10
+ * the normal case for a peak table pasted out of an instrument report.
11
+ *
12
+ * The arrays are `Float64Array` throughout and are never converted to
13
+ * `number[]`: a profile scan runs to hundreds of thousands of points, a plain
14
+ * array costs two to three times the memory, and any structural freeze or
15
+ * spread walks it element by element while treating a typed array as atomic.
16
+ * They are replaced on a change, never written into, since every consumer holds
17
+ * the same object by reference.
18
+ *
19
+ * The shape is the one the glycan site's mass viewer holds, field for field
20
+ * where the two overlap, so a spectrum that viewer built can be handed to
21
+ * anything here: whatever it carries beyond these fields is simply not read.
22
+ */
23
+ /**
24
+ * Whether a spectrum is on the chart at all, by whichever of its traces.
25
+ *
26
+ * A spectrum is drawn as its profile *or* as its sticks and never as both — a
27
+ * centroid standing inside the peak shapes it was picked from reads as a second
28
+ * spectrum laid over the first — so whether it is on screen is a question about
29
+ * the pair and not about either one.
30
+ *
31
+ * This is what everything that *uses* the picked peaks asks: pointing at a peak,
32
+ * labelling one, listing them. All of them read the centroid whether or not the
33
+ * sticks are the trace being drawn, so asking `showCentroid` there would make a
34
+ * spectrum shown as its profile quietly stop answering anything.
35
+ * @param spectrum - The spectrum.
36
+ * @returns Whether either of its traces is drawn.
37
+ */
38
+ export function isSpectrumDrawn(spectrum) {
39
+ return spectrum.showProfile || spectrum.showCentroid;
40
+ }
41
+ //# sourceMappingURL=massSpectrum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massSpectrum.js","sourceRoot":"","sources":["../../../src/mass/core/massSpectrum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAqLH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAAC,QAAsB;IACpD,OAAO,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,YAAY,CAAC;AACvD,CAAC"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Everything the viewer knows, in the three buckets NMRium splits its own into
3
+ * — the same three the infrared viewer holds, under the same names.
4
+ *
5
+ * The split is the persistence boundary as much as anything: `data` is the
6
+ * document, `view` is where you are in it and lasts as long as the session, and
7
+ * `settings` is the workspace, which is how every spectrum is drawn whichever
8
+ * ones happen to be open.
9
+ *
10
+ * The peaks are in `data`, each spectrum carrying its own centroid: picked once,
11
+ * when the spectrum was read, so nothing about drawing it ever picks again.
12
+ */
13
+ import type { MassPanelId, MassSidePanelId } from './massSidePanels.ts';
14
+ import type { MassDomain, MassSpectrum } from './massSpectrum.ts';
15
+ import type { MzDecimalsSetting } from './mzDecimalsSetting.ts';
16
+ /** The document: what the files held. */
17
+ export interface MassData {
18
+ /** The spectra, in the order they were loaded. */
19
+ spectra: MassSpectrum[];
20
+ }
21
+ /** What a drag across the chart is for while it is chosen. */
22
+ export type MassTool = 'read' | 'box';
23
+ /** Where you are in the viewer. */
24
+ export interface MassView {
25
+ /** Identity of the spectrum the panels act on, `null` for none. */
26
+ selectedId: string | null;
27
+ /**
28
+ * The window being shown, `null` while the chart is showing what fits.
29
+ *
30
+ * Held here so that a toolbar button and a row of the peak table can zoom —
31
+ * the chart is told a window and reports every window it arrives at, and this
32
+ * is where the answer lives between the two.
33
+ */
34
+ domain: MassDomain | null;
35
+ /** Which tool a drag across the chart is running. */
36
+ tool: MassTool;
37
+ /**
38
+ * The side panels that are open: the viewer's own and any a host added. An id
39
+ * no panel on offer answers to opens nothing.
40
+ */
41
+ openPanelIds: MassPanelId[];
42
+ /** Why the last action was refused, `null` as soon as one succeeds. */
43
+ error: string | null;
44
+ }
45
+ /** The workspace: how every spectrum is drawn, whichever ones are open. */
46
+ export interface MassSettings {
47
+ /** Whether the peaks of the selected spectrum are labelled on the chart. */
48
+ showLabels: boolean;
49
+ /** At most how many peaks are labelled at once. */
50
+ labelLimit: number;
51
+ /** Whether a label writes the charge of a peak whose charge was established. */
52
+ showCharges: boolean;
53
+ /**
54
+ * How many decimals the masses on screen are written with: `'auto'` for what
55
+ * the spectra resolve — high-resolution masses or nominal ones — or the
56
+ * number the reader chose.
57
+ */
58
+ mzDecimals: MzDecimalsSetting;
59
+ }
60
+ /** Everything the viewer knows. */
61
+ export interface MassState {
62
+ /** The spectra that are open. */
63
+ data: MassData;
64
+ /** Where you are in the viewer. */
65
+ view: MassView;
66
+ /** How spectra are drawn. */
67
+ settings: MassSettings;
68
+ }
69
+ /** Part of a state, as a host restoring one supplies it. */
70
+ export interface PartialMassState {
71
+ /** The spectra that were open. */
72
+ data?: MassData;
73
+ /** Where the viewer was left. */
74
+ view?: Partial<MassView>;
75
+ /** The workspace they were drawn in. */
76
+ settings?: Partial<MassSettings>;
77
+ }
78
+ /** The panel the splitter brings back when it is dragged open on nothing. */
79
+ export declare const DEFAULT_SIDE_PANEL: MassSidePanelId;
80
+ /**
81
+ * The panels a fresh viewer opens with: the list, and the peaks of whichever
82
+ * spectrum is selected in it, because a spectrum is read through its peaks.
83
+ */
84
+ export declare const DEFAULT_SIDE_PANELS: MassSidePanelId[];
85
+ /** How many peaks are labelled to begin with. */
86
+ export declare const DEFAULT_LABEL_LIMIT = 20;
87
+ /** At most how many peaks a setting may ask to have labelled. */
88
+ export declare const MAXIMUM_LABEL_LIMIT = 500;
89
+ /** The workspace a fresh viewer starts from. */
90
+ export declare const DEFAULT_SETTINGS: MassSettings;
91
+ /** What a viewer opens on. */
92
+ export interface CreateMassStateOptions {
93
+ /**
94
+ * The spectra to open on.
95
+ * @default []
96
+ */
97
+ spectra?: MassSpectrum[];
98
+ /**
99
+ * The workspace to open in.
100
+ * @default DEFAULT_SETTINGS
101
+ */
102
+ settings?: Partial<MassSettings>;
103
+ /**
104
+ * The panels open to begin with, the viewer's own or a host's.
105
+ * @default DEFAULT_SIDE_PANELS
106
+ */
107
+ panelIds?: readonly MassPanelId[];
108
+ }
109
+ /**
110
+ * The state a viewer opens with.
111
+ *
112
+ * The panel list is spread rather than stored by reference: a caller's array is
113
+ * the caller's to mutate, and a viewer holding it would find its open panels
114
+ * changing under it.
115
+ * @param options - What it opens on.
116
+ * @returns The state.
117
+ */
118
+ export declare function createMassState(options?: CreateMassStateOptions): MassState;
119
+ /**
120
+ * Fold a change into the workspace, refusing what no chart survives.
121
+ *
122
+ * A number typed into a field arrives here as `NaN` for every keystroke that is
123
+ * not yet a number — a lone minus sign, an empty box — and a limit of `NaN`
124
+ * silently stops every label being drawn. So the limit is checked, and the
125
+ * current value kept where the new one is unusable rather than the field being
126
+ * fought with while it is being typed in. The decimals are read back the same
127
+ * way, through `readMzDecimalsSetting`, since a stored workspace is no more to
128
+ * be trusted than a half-typed field.
129
+ * @param current - The workspace in force.
130
+ * @param change - What to change about it.
131
+ * @returns The new workspace.
132
+ */
133
+ export declare function mergeMassSettings(current: MassSettings, change?: Partial<MassSettings>): MassSettings;
134
+ /**
135
+ * Whether a window is one a chart can be built on.
136
+ *
137
+ * Both ends finite and the low one below the high one. A window failing either
138
+ * makes every scale built from it infinite, which the DOM refuses outright — so
139
+ * a handle told to frame a peak it worked out wrongly leaves the chart alone
140
+ * instead of blanking it.
141
+ * @param domain - The window to check.
142
+ * @returns Whether it can be shown.
143
+ */
144
+ export declare function isMassWindow(domain: MassDomain): boolean;
145
+ //# sourceMappingURL=massState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massState.d.ts","sourceRoot":"","sources":["../../../src/mass/core/massState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,yCAAyC;AACzC,MAAM,WAAW,QAAQ;IACvB,kDAAkD;IAClD,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,8DAA8D;AAC9D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAEtC,mCAAmC;AACnC,MAAM,WAAW,QAAQ;IACvB,mEAAmE;IACnE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,qDAAqD;IACrD,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;IACH,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,uEAAuE;IACvE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,UAAU,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED,mCAAmC;AACnC,MAAM,WAAW,SAAS;IACxB,iCAAiC;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,mCAAmC;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,6BAA6B;IAC7B,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAClC;AAED,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,EAAE,eAA2B,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAAyB,CAAC;AAE3E,iDAAiD;AACjD,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,EAAE,YAK9B,CAAC;AAEF,8BAA8B;AAC9B,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE,sBAA2B,GACnC,SAAS,CAaX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,GACjC,YAAY,CAUd;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAExD"}