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 @@
1
+ {"version":3,"file":"MassPointerTracker.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/MassPointerTracker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAI/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5B,uEAAuE;IACvE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,0CAA0C;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,GAC7B,YAAY,GAAG,IAAI,CAqBrB"}
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ChartTracker } from "../../chart/ui/ChartTracker.js";
3
+ import { formatIntensity, formatMz } from "../core/massFormat.js";
4
+ /**
5
+ * The crosshair, and what the axes say where it stands.
6
+ *
7
+ * Two rules rather than one, because both axes are being read: the vertical one
8
+ * answers *what mass is this*, and the horizontal one answers *how tall is that
9
+ * against this*, which is how a peak is judged against its neighbours without
10
+ * counting grid lines. The picked peak within reach is not written here: the
11
+ * guide on its exact m/z and its lit row in the peak table say which it is, and
12
+ * a readout a line longer than the shared chart places would run off the foot
13
+ * of the plot.
14
+ * @param props - Component props.
15
+ * @returns The crosshair, or nothing while the pointer is off the plot.
16
+ */
17
+ export function MassPointerTracker(props) {
18
+ const { position, readout, plot, mzDecimals, intensityScale = 1, suffix = '', } = props;
19
+ // A magnitude: the lower half of a mirrored pair is a second spectrum drawn
20
+ // downwards, never a negative intensity.
21
+ const lines = readout === null
22
+ ? null
23
+ : [
24
+ `m/z ${formatMz(readout.mz, mzDecimals)}`,
25
+ `${formatIntensity(Math.abs(readout.intensity) * intensityScale, mzDecimals)}${suffix}`,
26
+ ];
27
+ return _jsx(ChartTracker, { position: position, plot: plot, lines: lines });
28
+ }
29
+ //# sourceMappingURL=MassPointerTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassPointerTracker.js","sourceRoot":"","sources":["../../../src/mass/ui/MassPointerTracker.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAiC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AA8BlE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA8B;IAE9B,MAAM,EACJ,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,UAAU,EACV,cAAc,GAAG,CAAC,EAClB,MAAM,GAAG,EAAE,GACZ,GAAG,KAAK,CAAC;IAEV,4EAA4E;IAC5E,yCAAyC;IACzC,MAAM,KAAK,GACT,OAAO,KAAK,IAAI;QACd,CAAC,CAAC,IAAI;QACN,CAAC,CAAC;YACE,OAAO,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE;YACzC,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,cAAc,EAAE,UAAU,CAAC,GAAG,MAAM,EAAE;SACxF,CAAC;IAER,OAAO,KAAC,YAAY,IAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;AACxE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { Ref } from 'react';
2
+ import type { MassEditorHandle, MassPlotClick } from '../core/massEditorApi.ts';
3
+ import type { MassHostPanel } from './massHostPanels.ts';
4
+ export interface MassShellProps {
5
+ /**
6
+ * The handle to fill in, once there is a state for it to act on.
7
+ * @default undefined
8
+ */
9
+ handle?: Ref<MassEditorHandle>;
10
+ /** The panels the host adds to the viewer's own, ahead of them. */
11
+ panels: readonly MassHostPanel[];
12
+ /**
13
+ * Told of a click on the plot, with the spectrum selected at that moment.
14
+ * @default undefined
15
+ */
16
+ onPlotClick?: (click: MassPlotClick) => void;
17
+ }
18
+ /**
19
+ * The viewer's screen: a header, the rails, and the split between the chart and
20
+ * the panels.
21
+ *
22
+ * Kept apart from `MassEditor` so that the handle, the commands and the
23
+ * highlight — all of which need the state — sit below the providers rather than
24
+ * beside them, and so the sealed component above is nothing but its props.
25
+ * @param props - Component props.
26
+ * @returns The screen.
27
+ */
28
+ export declare function MassShell(props: MassShellProps): import("react").JSX.Element;
29
+ //# sourceMappingURL=MassShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassShell.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/MassShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,GAAG,EAAE,MAAM,OAAO,CAAC;AAQ9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAUhF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQzD,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/B,mEAAmE;IACnE,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IACjC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BA0I9C"}
@@ -0,0 +1,133 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId, useMemo, useRef, useState } from 'react';
3
+ import { SplitPane, useFullscreen } from 'react-science/ui';
4
+ import { sanitizeFileName } from "../../download/core/sanitizeFileName.js";
5
+ import { useFigureDownload } from "../../download/ui/useFigureDownload.js";
6
+ import { PanelRail } from "../../panel/ui/PanelRail.js";
7
+ import { MassAboutDialog } from "./MassAboutDialog.js";
8
+ import { MassCanvas } from "./MassCanvas.js";
9
+ import { MassCommandProvider } from "./MassCommandProvider.js";
10
+ import { MassDocumentationDialog } from "./MassDocumentationDialog.js";
11
+ import { MassHeader } from "./MassHeader.js";
12
+ import { MassSidePanel } from "./MassSidePanel.js";
13
+ import { MassToolbar } from "./MassToolbar.js";
14
+ import { useMassActions, useMassEditorState } from "./massStateContext.js";
15
+ import { useIntensityZoom } from "./useIntensityZoom.js";
16
+ import { useMassFiles } from "./useMassFiles.js";
17
+ import { useMassHandle } from "./useMassHandle.js";
18
+ import { useMassShortcuts } from "./useMassShortcuts.js";
19
+ import { useMassSide } from "./useMassSide.js";
20
+ /**
21
+ * The viewer's screen: a header, the rails, and the split between the chart and
22
+ * the panels.
23
+ *
24
+ * Kept apart from `MassEditor` so that the handle, the commands and the
25
+ * highlight — all of which need the state — sit below the providers rather than
26
+ * beside them, and so the sealed component above is nothing but its props.
27
+ * @param props - Component props.
28
+ * @returns The screen.
29
+ */
30
+ export function MassShell(props) {
31
+ const { handle, panels, onPlotClick } = props;
32
+ const { state, visibleSpectra, selectedSpectrum } = useMassEditorState();
33
+ const actions = useMassActions();
34
+ const { toggle: toggleFullScreen } = useFullscreen();
35
+ const { openPanelIds, tool } = state.view;
36
+ const { showLabels, showCharges } = state.settings;
37
+ const side = useMassSide(panels);
38
+ const files = useMassFiles();
39
+ const fileInput = useRef(null);
40
+ const { zoomIn, zoomOut } = useIntensityZoom();
41
+ const [isAboutOpen, setIsAboutOpen] = useState(false);
42
+ const [isDocumentationOpen, setIsDocumentationOpen] = useState(false);
43
+ // What the pointer is resting on is not part of the document and changes on
44
+ // every move across the chart, so it is held here rather than in the reducer,
45
+ // where every panel's memo would run sixty times a second.
46
+ const [highlightMz, setHighlightMz] = useState(null);
47
+ // The chart is the picture, so the box it is drawn in is what the figure
48
+ // panel is pointed at: the viewer around it is full of SVG icons.
49
+ const chartId = useId();
50
+ const figure = useFigureDownload({
51
+ targetId: chartId,
52
+ fileName: pictureName(visibleSpectra, selectedSpectrum),
53
+ });
54
+ const { isOpen: isFigureOpen, setOpen: setFigureOpen } = figure;
55
+ const commands = useMemo(() => ({
56
+ about: () => setIsAboutOpen(true),
57
+ documentation: () => setIsDocumentationOpen(true),
58
+ fullScreen: toggleFullScreen,
59
+ openFiles: () => fileInput.current?.click(),
60
+ readTool: () => actions.setTool('read'),
61
+ boxTool: () => actions.setTool(tool === 'box' ? 'read' : 'box'),
62
+ zoomIn,
63
+ zoomOut,
64
+ resetZoom: () => actions.resetDomain(),
65
+ toggleLabels: () => actions.setSettings({ showLabels: !showLabels }),
66
+ toggleCharges: () => actions.setSettings({ showCharges: !showCharges }),
67
+ exportImage: () => setFigureOpen(!isFigureOpen),
68
+ clear: () => actions.clear(),
69
+ }), [
70
+ actions,
71
+ tool,
72
+ showLabels,
73
+ showCharges,
74
+ zoomIn,
75
+ zoomOut,
76
+ toggleFullScreen,
77
+ isFigureOpen,
78
+ setFigureOpen,
79
+ ]);
80
+ // The root is held as state rather than in a ref because the keys are bound to
81
+ // it from an effect: a ref filled in during the commit would leave the effect
82
+ // with nothing to listen on for the first render, and no reason ever to run
83
+ // again.
84
+ const [root, setRoot] = useState(null);
85
+ useMassShortcuts(root, commands);
86
+ useMassHandle(handle, files.readFiles);
87
+ return (_jsxs(MassCommandProvider, { handlers: commands, children: [_jsxs("div", { ref: setRoot, tabIndex: -1, style: rootStyle, children: [_jsx(MassHeader, {}), _jsxs("div", { style: mainStyle, children: [_jsx("div", { style: railStyle, children: _jsx(MassToolbar, { figure: figure }) }), _jsxs(SplitPane, { direction: "horizontal", controlledSide: "end", defaultSize: "360px", open: side.isOpen, onOpenChange: side.setOpen, children: [_jsx(MassCanvas, { highlightMz: highlightMz, onHighlight: setHighlightMz, chartId: chartId, onDropFiles: (dropped) => void files.readFiles(dropped), ...(onPlotClick === undefined ? {} : { onPlotClick }) }), _jsx(MassSidePanel, { panels: panels, highlightMz: highlightMz, onHighlight: setHighlightMz })] }), _jsx("div", { style: railStyle, children: _jsx(PanelRail, { panels: side.panels, openIds: openPanelIds, onToggle: actions.togglePanel }) })] }), _jsx("input", { ref: fileInput, type: "file", multiple: true, accept: ACCEPTED_FILES, style: hiddenStyle, "aria-label": "Open spectra", onChange: (event) => {
88
+ const chosen = [...(event.currentTarget.files ?? [])];
89
+ // Emptied so that choosing the same file again is still a change.
90
+ event.currentTarget.value = '';
91
+ if (chosen.length > 0)
92
+ void files.readFiles(chosen);
93
+ } })] }), _jsx(MassAboutDialog, { isOpen: isAboutOpen, onClose: () => setIsAboutOpen(false) }), _jsx(MassDocumentationDialog, { isOpen: isDocumentationOpen, onClose: () => setIsDocumentationOpen(false) })] }));
94
+ }
95
+ /**
96
+ * What a picture of the chart is called: the spectrum being looked at, since a
97
+ * figure of the chart is a figure of that spectrum, and a chart holding several
98
+ * and pointing at none of them is named after the lot.
99
+ * @param spectra - What is drawn.
100
+ * @param selected - The one being looked at, `null` when none is.
101
+ * @returns The name, without its extension.
102
+ */
103
+ function pictureName(spectra, selected) {
104
+ const named = selected ?? (spectra.length === 1 ? spectra[0] : undefined);
105
+ return named === undefined
106
+ ? 'spectra'
107
+ : sanitizeFileName(named.name, 'spectrum');
108
+ }
109
+ /** What the file dialog offers, which is what the readers understand. */
110
+ const ACCEPTED_FILES = '.jdx,.dx,.jcamp,.txt,.csv,.tsv,.xy,.asc,.dat';
111
+ const rootStyle = {
112
+ display: 'flex',
113
+ flexDirection: 'column',
114
+ flex: '1 1 1px',
115
+ width: '100%',
116
+ height: '100%',
117
+ minHeight: 0,
118
+ outline: 'none',
119
+ };
120
+ const mainStyle = {
121
+ display: 'flex',
122
+ flex: '1 1 1px',
123
+ minWidth: 0,
124
+ minHeight: 0,
125
+ };
126
+ /**
127
+ * The rails are chrome of a fixed width, and a flex child shrinks by default: in
128
+ * a narrow viewer the row would take the width it is short of out of them.
129
+ */
130
+ const railStyle = { flex: 'none' };
131
+ /** The file input is opened by the toolbar, never clicked itself. */
132
+ const hiddenStyle = { display: 'none' };
133
+ //# sourceMappingURL=MassShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassShell.js","sourceRoot":"","sources":["../../../src/mass/ui/MassShell.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { MassHostPanel } from './massHostPanels.ts';
2
+ export interface MassSidePanelProps {
3
+ /**
4
+ * The panels the host adds to the viewer's own, stacked above them in the
5
+ * order given.
6
+ * @default []
7
+ */
8
+ panels?: readonly MassHostPanel[];
9
+ /**
10
+ * The m/z of the peak the pointer is resting on.
11
+ * @default null
12
+ */
13
+ highlightMz?: number | null;
14
+ /**
15
+ * Told when a row of the peak table is hovered.
16
+ * @default undefined
17
+ */
18
+ onHighlight?: (mz: number | null) => void;
19
+ }
20
+ /**
21
+ * The panels that are open, stacked down the right.
22
+ *
23
+ * Every open panel gets a share of the height rather than a turn, because the
24
+ * things they hold are read together: which spectrum is selected and what its
25
+ * peaks are is one question asked of two panels. The header carries the close
26
+ * button and nothing else — a panel's own actions are a toolbar inside its
27
+ * body, so they travel with it.
28
+ * @param props - Component props.
29
+ * @returns The panel stack.
30
+ */
31
+ export declare function MassSidePanel(props: MassSidePanelProps): import("react").JSX.Element;
32
+ //# sourceMappingURL=MassSidePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassSidePanel.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/MassSidePanel.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,+BA8BtD"}
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { panelStyle } from "../../panel/core/panelStyles.js";
4
+ import { SidePanelStack } from "../../panel/ui/SidePanelStack.js";
5
+ import { MetadataPanel } from "./MetadataPanel.js";
6
+ import { PeaksPanel } from "./PeaksPanel.js";
7
+ import { SpectraPanel } from "./SpectraPanel.js";
8
+ import { isMassHostPanel, massStackPanels } from "./massHostPanels.js";
9
+ import { useMassActions, useMassEditorState } from "./massStateContext.js";
10
+ /**
11
+ * The panels that are open, stacked down the right.
12
+ *
13
+ * Every open panel gets a share of the height rather than a turn, because the
14
+ * things they hold are read together: which spectrum is selected and what its
15
+ * peaks are is one question asked of two panels. The header carries the close
16
+ * button and nothing else — a panel's own actions are a toolbar inside its
17
+ * body, so they travel with it.
18
+ * @param props - Component props.
19
+ * @returns The panel stack.
20
+ */
21
+ export function MassSidePanel(props) {
22
+ const { panels: hostPanels = NO_PANELS, highlightMz = null, onHighlight, } = props;
23
+ const { state } = useMassEditorState();
24
+ const actions = useMassActions();
25
+ const { openPanelIds } = state.view;
26
+ const panels = useMemo(() => massStackPanels(hostPanels), [hostPanels]);
27
+ return (_jsx(SidePanelStack, { panels: panels, openPanelIds: openPanelIds, onClose: actions.togglePanel, children: (panel) => isMassHostPanel(panel) ? (_jsx("div", { style: panelStyle, children: panel.content })) : (_jsx(PanelBody, { panelId: panel.id, highlightMz: highlightMz, ...(onHighlight === undefined ? {} : { onHighlight }) })) }));
28
+ }
29
+ /**
30
+ * Which panel a panel id is.
31
+ * @param props - Component props.
32
+ * @returns The panel's body.
33
+ */
34
+ function PanelBody(props) {
35
+ const { panelId, highlightMz, onHighlight } = props;
36
+ if (panelId === 'spectra')
37
+ return _jsx(SpectraPanel, {});
38
+ if (panelId === 'metadata')
39
+ return _jsx(MetadataPanel, {});
40
+ return (_jsx(PeaksPanel, { highlightMz: highlightMz, ...(onHighlight === undefined ? {} : { onHighlight }) }));
41
+ }
42
+ /** What a stack the host adds nothing to holds, kept stable for the memo. */
43
+ const NO_PANELS = [];
44
+ //# sourceMappingURL=MassSidePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassSidePanel.js","sourceRoot":"","sources":["../../../src/mass/ui/MassSidePanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAmC,CAAC;AAGnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAqB3E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EACJ,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,WAAW,GAAG,IAAI,EAClB,WAAW,GACZ,GAAG,KAAK,CAAC;IACV,MAAM,EAAE,KAAK,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAExE,OAAO,CACL,KAAC,cAAc,IACb,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,CAAC,WAAW,YAE3B,CAAC,KAAK,EAAE,EAAE,CACT,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,cAAK,KAAK,EAAE,UAAU,YAAG,KAAK,CAAC,OAAO,GAAO,CAC9C,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IACR,OAAO,EAAE,KAAK,CAAC,EAAE,EACjB,WAAW,EAAE,WAAW,KACpB,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GACtD,CACH,GAEY,CAClB,CAAC;AACJ,CAAC;AAcD;;;;GAIG;AACH,SAAS,SAAS,CAAC,KAAqB;IACtC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEpD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAC,YAAY,KAAG,CAAC;IACnD,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,KAAC,aAAa,KAAG,CAAC;IACrD,OAAO,CACL,KAAC,UAAU,IACT,WAAW,EAAE,WAAW,KACpB,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GACtD,CACH,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,SAAS,GAA6B,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { MassEditorApi } from './useMassEditor.ts';
3
+ export interface MassStateProviderProps {
4
+ /** The viewer's state, as `useMassEditor` holds it. */
5
+ editor: MassEditorApi;
6
+ /** The viewer. */
7
+ children: ReactNode;
8
+ }
9
+ /**
10
+ * Put one viewer's state where its panels can reach it.
11
+ *
12
+ * The state and the actions go into separate contexts on purpose — see
13
+ * `massStateContext.ts` for why — and the actions are handed over as they are,
14
+ * since `useMassEditor` already keeps them stable for the life of the viewer.
15
+ * @param props - Component props.
16
+ * @returns The provider.
17
+ */
18
+ export declare function MassStateProvider(props: MassStateProviderProps): import("react").JSX.Element;
19
+ //# sourceMappingURL=MassStateProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassStateProvider.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/MassStateProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,uDAAuD;IACvD,MAAM,EAAE,aAAa,CAAC;IACtB,kBAAkB;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,+BAU9D"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { massActionsContext, massStateContext } from "./massStateContext.js";
3
+ /**
4
+ * Put one viewer's state where its panels can reach it.
5
+ *
6
+ * The state and the actions go into separate contexts on purpose — see
7
+ * `massStateContext.ts` for why — and the actions are handed over as they are,
8
+ * since `useMassEditor` already keeps them stable for the life of the viewer.
9
+ * @param props - Component props.
10
+ * @returns The provider.
11
+ */
12
+ export function MassStateProvider(props) {
13
+ const { editor, children } = props;
14
+ return (_jsx(massStateContext.Provider, { value: editor, children: _jsx(massActionsContext.Provider, { value: editor.actions, children: children }) }));
15
+ }
16
+ //# sourceMappingURL=MassStateProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassStateProvider.js","sourceRoot":"","sources":["../../../src/mass/ui/MassStateProvider.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAU7E;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEnC,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YACtC,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YAC/C,QAAQ,GACmB,GACJ,CAC7B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The one line under the chart: what is drawn, what it resolves, what went
3
+ * wrong.
4
+ *
5
+ * Everything in it is derived, so it is the cheapest place in the viewer to
6
+ * answer "did that work" — how many spectra are drawn of those open, how many
7
+ * peaks the selected one holds and between which masses, and whether it is a
8
+ * high-resolution spectrum, with the resolving power where one was measured.
9
+ *
10
+ * The refusal is last and is the only red in the shell, so the eye that has just
11
+ * dropped something and seen nothing happen lands on the reason.
12
+ * @returns The status bar.
13
+ */
14
+ export declare function MassStatusBar(): import("react").JSX.Element;
15
+ //# sourceMappingURL=MassStatusBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassStatusBar.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/MassStatusBar.tsx"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,gCA0D5B"}
@@ -0,0 +1,50 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Icon } from '@blueprintjs/core';
3
+ import { countLabel, statusBarStyle as barStyle, statusItemStyle as itemStyle, statusMutedStyle as mutedStyle, statusSpacerStyle as spacerStyle, } from "../../panel/core/statusBar.js";
4
+ import { formatMzRange, resolutionLabel, resolvingPowerLabel, } from "../core/massFormat.js";
5
+ import { resolutionOf } from "../core/resolutionOf.js";
6
+ import { useMassEditorState } from "./massStateContext.js";
7
+ /**
8
+ * The one line under the chart: what is drawn, what it resolves, what went
9
+ * wrong.
10
+ *
11
+ * Everything in it is derived, so it is the cheapest place in the viewer to
12
+ * answer "did that work" — how many spectra are drawn of those open, how many
13
+ * peaks the selected one holds and between which masses, and whether it is a
14
+ * high-resolution spectrum, with the resolving power where one was measured.
15
+ *
16
+ * The refusal is last and is the only red in the shell, so the eye that has just
17
+ * dropped something and seen nothing happen lands on the reason.
18
+ * @returns The status bar.
19
+ */
20
+ export function MassStatusBar() {
21
+ const { state, visibleSpectra, selectedSpectrum, mzDecimals } = useMassEditorState();
22
+ const { spectra } = state.data;
23
+ const { error, tool } = state.view;
24
+ const resolution = selectedSpectrum === null ? null : resolutionOf(selectedSpectrum);
25
+ const range = selectedSpectrum === null
26
+ ? ''
27
+ : formatMzRange(selectedSpectrum.centroid.x, mzDecimals);
28
+ return (_jsxs("div", { style: barStyle, children: [_jsx("span", { style: itemStyle, children: spectra.length === 0
29
+ ? 'no spectrum open — drop a JCAMP-DX or a text file on the chart'
30
+ : `${countLabel(visibleSpectra.length, 'spectrum', 'spectra')} drawn of ${spectra.length}` }), selectedSpectrum === null ? null : (_jsx("span", { style: nameStyle, title: selectedSpectrum.name, children: selectedSpectrum.name })), resolution === null ? null : (_jsxs("span", { style: itemStyle, children: [resolutionLabel(resolution), resolution.resolvingPower === null
31
+ ? null
32
+ : ` (${resolvingPowerLabel(resolution.resolvingPower)})`] })), selectedSpectrum === null ? null : (_jsx("span", { style: itemStyle, children: countLabel(selectedSpectrum.centroid.x.length, 'peak', 'peaks') })), range === '' ? null : _jsxs("span", { style: mutedStyle, children: ["m/z ", range] }), tool === 'box' ? (_jsx("span", { style: mutedStyle, children: "square zoom: drag a rectangle" })) : null, _jsx("span", { style: spacerStyle }), error === null ? null : (_jsxs("span", { style: errorStyle, title: error, children: [_jsx(Icon, { icon: "warning-sign", size: 12 }), error] }))] }));
33
+ }
34
+ const nameStyle = {
35
+ ...itemStyle,
36
+ overflow: 'hidden',
37
+ textOverflow: 'ellipsis',
38
+ maxWidth: '32%',
39
+ fontWeight: 600,
40
+ };
41
+ /** The one red in the shell: a refusal, and nothing else, is written in it. */
42
+ const errorStyle = {
43
+ ...itemStyle,
44
+ gap: 4,
45
+ color: '#C0392B',
46
+ overflow: 'hidden',
47
+ textOverflow: 'ellipsis',
48
+ maxWidth: '60%',
49
+ };
50
+ //# sourceMappingURL=MassStatusBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassStatusBar.js","sourceRoot":"","sources":["../../../src/mass/ui/MassStatusBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EACL,UAAU,EACV,cAAc,IAAI,QAAQ,EAC1B,eAAe,IAAI,SAAS,EAC5B,gBAAgB,IAAI,UAAU,EAC9B,iBAAiB,IAAI,WAAW,GACjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,aAAa,EACb,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAC3D,kBAAkB,EAAE,CAAC;IACvB,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAEnC,MAAM,UAAU,GACd,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACpE,MAAM,KAAK,GACT,gBAAgB,KAAK,IAAI;QACvB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAE7D,OAAO,CACL,eAAK,KAAK,EAAE,QAAQ,aAClB,eAAM,KAAK,EAAE,SAAS,YACnB,OAAO,CAAC,MAAM,KAAK,CAAC;oBACnB,CAAC,CAAC,gEAAgE;oBAClE,CAAC,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,aAAa,OAAO,CAAC,MAAM,EAAE,GACvF,EAEN,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClC,eAAM,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,YACjD,gBAAgB,CAAC,IAAI,GACjB,CACR,EAEA,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,gBAAM,KAAK,EAAE,SAAS,aACnB,eAAe,CAAC,UAAU,CAAC,EAC3B,UAAU,CAAC,cAAc,KAAK,IAAI;wBACjC,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,KAAK,mBAAmB,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,IACrD,CACR,EAEA,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClC,eAAM,KAAK,EAAE,SAAS,YACnB,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,GAC3D,CACR,EAEA,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAM,KAAK,EAAE,UAAU,qBAAO,KAAK,IAAQ,EAEjE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAChB,eAAM,KAAK,EAAE,UAAU,8CAAsC,CAC9D,CAAC,CAAC,CAAC,IAAI,EAER,eAAM,KAAK,EAAE,WAAW,GAAI,EAE3B,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACvB,gBAAM,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,aACnC,KAAC,IAAI,IAAC,IAAI,EAAC,cAAc,EAAC,IAAI,EAAE,EAAE,GAAI,EACrC,KAAK,IACD,CACR,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAG;IAChB,GAAG,SAAS;IACZ,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,UAAU;IACxB,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,GAAG;CACP,CAAC;AAEX,+EAA+E;AAC/E,MAAM,UAAU,GAAG;IACjB,GAAG,SAAS;IACZ,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,UAAU;IACxB,QAAQ,EAAE,KAAK;CACP,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { FigureDownloadState } from '../../download/ui/useFigureDownload.tsx';
2
+ /** What {@link MassToolbar} needs. */
3
+ export interface MassToolbarProps {
4
+ /**
5
+ * The "Save figure" panel the picture button opens.
6
+ * @default undefined — the button only runs the `exportImage` command
7
+ */
8
+ figure?: FigureDownloadState;
9
+ }
10
+ /**
11
+ * The tools, down the left of the chart.
12
+ *
13
+ * Only what is done to the spectra: what is asked of the viewer itself — the
14
+ * mark, help, full screen — is in the header. Opening files comes first,
15
+ * because nothing else does anything until a spectrum is open; then the
16
+ * **tools**, read and square zoom, which say what a drag is running; then the
17
+ * zoom commands that act at once; then what the chart writes over the peaks.
18
+ * Closing every spectrum is last and alone, being the only one that throws
19
+ * something away.
20
+ * @param props - Component props.
21
+ * @returns The toolbar.
22
+ */
23
+ export declare function MassToolbar(props: MassToolbarProps): import("react").JSX.Element;
24
+ //# sourceMappingURL=MassToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassToolbar.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/MassToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAKnF,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA0FlD"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Toolbar } from 'react-science/ui';
3
+ import { useMassCommandProps } from "./massCommandContext.js";
4
+ import { useMassEditorState } from "./massStateContext.js";
5
+ /**
6
+ * The tools, down the left of the chart.
7
+ *
8
+ * Only what is done to the spectra: what is asked of the viewer itself — the
9
+ * mark, help, full screen — is in the header. Opening files comes first,
10
+ * because nothing else does anything until a spectrum is open; then the
11
+ * **tools**, read and square zoom, which say what a drag is running; then the
12
+ * zoom commands that act at once; then what the chart writes over the peaks.
13
+ * Closing every spectrum is last and alone, being the only one that throws
14
+ * something away.
15
+ * @param props - Component props.
16
+ * @returns The toolbar.
17
+ */
18
+ export function MassToolbar(props) {
19
+ const { figure } = props;
20
+ const { state, selectedSpectrum } = useMassEditorState();
21
+ const command = useMassCommandProps();
22
+ const { spectra } = state.data;
23
+ const { domain, tool } = state.view;
24
+ const { showLabels, showCharges } = state.settings;
25
+ const isEmpty = spectra.length === 0;
26
+ // The popover opens the panel itself, so the command's own click is left out.
27
+ const exportCommand = command('exportImage');
28
+ return (_jsxs(Toolbar, { vertical: true, overflow: "collapse", "aria-label": "Mass spectrum tools", children: [_jsx(Toolbar.Item, { icon: "folder-open", ...command('openFiles') }), _jsx(Toolbar.Item, { icon: "arrows-horizontal", active: tool === 'read', ...command('readTool'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "select", active: tool === 'box', ...command('boxTool'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "zoom-in", ...command('zoomIn'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "zoom-out", ...command('zoomOut'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "zoom-to-fit", ...command('resetZoom'), disabled: domain === null }), _jsx(Toolbar.Item, { icon: "label", active: showLabels, ...command('toggleLabels'), disabled: selectedSpectrum === null }), _jsx(Toolbar.Item, { icon: "numerical", active: showCharges, ...command('toggleCharges'), disabled: !showLabels || selectedSpectrum === null }), figure === undefined ? (_jsx(Toolbar.Item, { icon: "media", ...command('exportImage'), disabled: isEmpty })) : (_jsx(Toolbar.PopoverItem, { isOpen: figure.isOpen, onInteraction: figure.setOpen, content: figure.panel, disabled: isEmpty, itemProps: {
29
+ icon: 'media',
30
+ tooltip: exportCommand.tooltip,
31
+ 'aria-label': exportCommand['aria-label'],
32
+ active: figure.isOpen,
33
+ disabled: isEmpty,
34
+ } })), _jsx(Toolbar.Item, { icon: "trash", intent: "danger", ...command('clear'), disabled: isEmpty })] }));
35
+ }
36
+ //# sourceMappingURL=MassToolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassToolbar.js","sourceRoot":"","sources":["../../../src/mass/ui/MassToolbar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { MassSpectrum } from '../core/massSpectrum.ts';
2
+ /**
3
+ * The acquisition panel of the viewer, about whichever spectrum is selected.
4
+ * @returns The panel.
5
+ */
6
+ export declare function MetadataPanel(): import("react").JSX.Element;
7
+ export interface MassMetadataProps {
8
+ /** The spectrum the panel is about, `null` when none is selected. */
9
+ spectrum: MassSpectrum | null;
10
+ /**
11
+ * How many decimals its masses are written with.
12
+ * @default 4
13
+ */
14
+ mzDecimals?: number;
15
+ }
16
+ /**
17
+ * How a spectrum was acquired, as the file stated it, and what the viewer
18
+ * found out about it — for any viewer, whatever state it keeps the spectrum in.
19
+ *
20
+ * Every row the file wrote is a fact it actually wrote: the reader leaves out
21
+ * whatever was blank rather than showing it as a dash, so a short table means a
22
+ * terse file and not a bug. The order is the reader's — source, instrument,
23
+ * analyser, ionization, polarity, energy, and on down to who ran it — because
24
+ * that is the order a method is read in. A file that wrote nothing gets the
25
+ * facts true of every spectrum instead, a pasted one included: which file and
26
+ * format it came from, how many peaks it holds and between which masses.
27
+ *
28
+ * Under either comes whether it is a high-resolution measurement, with how that
29
+ * was decided, since a verdict read off the decimals of a peak table is a
30
+ * weaker claim than one measured on the widths of its peaks.
31
+ * @param props - Component props.
32
+ * @returns The panel.
33
+ */
34
+ export declare function MassMetadata(props: MassMetadataProps): import("react").JSX.Element;
35
+ //# sourceMappingURL=MetadataPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetadataPanel.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/MetadataPanel.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAQ5D;;;GAGG;AACH,wBAAgB,aAAa,gCAG5B;AAED,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BA4FpD"}