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,62 @@
1
+ /**
2
+ * Everything the viewer can be asked to do, as functions rather than actions.
3
+ *
4
+ * A component that dispatched action objects would have the shape of the reducer
5
+ * spread across every panel; one that calls `actions.selectSpectrum(id)` does
6
+ * not, and the reducer stays free to change how it holds things.
7
+ */
8
+ /**
9
+ * Bind every action to a dispatch.
10
+ * @param dispatch - The reducer's dispatch.
11
+ * @returns The actions, stable for as long as the dispatch is.
12
+ */
13
+ export function createMassActions(dispatch) {
14
+ return {
15
+ addSpectra(spectra) {
16
+ dispatch({ type: 'addSpectra', spectra });
17
+ },
18
+ setSpectra(spectra) {
19
+ dispatch({ type: 'setSpectra', spectra });
20
+ },
21
+ removeSpectrum(id) {
22
+ dispatch({ type: 'removeSpectrum', id });
23
+ },
24
+ renameSpectrum(id, name) {
25
+ dispatch({ type: 'renameSpectrum', id, name });
26
+ },
27
+ setSpectrumColor(id, color) {
28
+ dispatch({ type: 'setSpectrumColor', id, color });
29
+ },
30
+ setSpectrumVisibility(id, visibility) {
31
+ dispatch({ type: 'setSpectrumVisibility', id, visibility });
32
+ },
33
+ selectSpectrum(id) {
34
+ dispatch({ type: 'selectSpectrum', id });
35
+ },
36
+ setDomain(domain) {
37
+ dispatch({ type: 'setDomain', domain });
38
+ },
39
+ resetDomain() {
40
+ dispatch({ type: 'resetDomain' });
41
+ },
42
+ setTool(tool) {
43
+ dispatch({ type: 'setTool', tool });
44
+ },
45
+ togglePanel(panelId) {
46
+ dispatch({ type: 'togglePanel', panelId });
47
+ },
48
+ setError(error) {
49
+ dispatch({ type: 'setError', error });
50
+ },
51
+ setSettings(settings) {
52
+ dispatch({ type: 'setSettings', settings });
53
+ },
54
+ loadState(state) {
55
+ dispatch({ type: 'loadState', state });
56
+ },
57
+ clear() {
58
+ dispatch({ type: 'clear' });
59
+ },
60
+ };
61
+ }
62
+ //# sourceMappingURL=massActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massActions.js","sourceRoot":"","sources":["../../../src/mass/ui/massActions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+CH;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAA8B;IAE9B,OAAO;QACL,UAAU,CAAC,OAAO;YAChB,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,UAAU,CAAC,OAAO;YAChB,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,cAAc,CAAC,EAAE;YACf,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,cAAc,CAAC,EAAE,EAAE,IAAI;YACrB,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,gBAAgB,CAAC,EAAE,EAAE,KAAK;YACxB,QAAQ,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,qBAAqB,CAAC,EAAE,EAAE,UAAU;YAClC,QAAQ,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,cAAc,CAAC,EAAE;YACf,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,SAAS,CAAC,MAAM;YACd,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,WAAW;YACT,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,IAAI;YACV,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,WAAW,CAAC,OAAO;YACjB,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,QAAQ,CAAC,KAAK;YACZ,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,WAAW,CAAC,QAAQ;YAClB,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,SAAS,CAAC,KAAK;YACb,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,KAAK;YACH,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * What a consumer hands the chart, and what the chart tells it back.
3
+ *
4
+ * Held apart from the component because it is the whole of the chart's public
5
+ * API — every spectrum drawn, every peak labelled on it and every gesture that
6
+ * comes back out is one of these — while the component behind it is an assembly
7
+ * of half a dozen layers nobody needs to read in order to mount one.
8
+ *
9
+ * Everything arrives as a prop and nothing is reached for: the chart reads no
10
+ * store and no context, so the same component serves an editor, a report page
11
+ * that only ever draws one spectrum, and a test.
12
+ */
13
+ import type { ReactNode } from 'react';
14
+ import type { ZoomDragMode } from '../../chart/core/chartDomain.ts';
15
+ import type { MassDomain, MassSpectrum } from '../core/massSpectrum.ts';
16
+ import type { NearestPeak } from '../core/nearestPeak.ts';
17
+ export interface MassChartProps {
18
+ /** The spectra to draw, each saying in itself which of its traces is drawn. */
19
+ spectra: readonly MassSpectrum[];
20
+ /**
21
+ * Identity of the spectrum whose peaks are labelled, `null` for none. One
22
+ * spectrum and never all of them: two stacks over every shared peak are the
23
+ * same m/z written twice, a pixel apart, in two colours.
24
+ * @default the first spectrum drawn
25
+ */
26
+ labelledId?: string | null;
27
+ /**
28
+ * Whether that spectrum's peaks are labelled at all.
29
+ * @default true
30
+ */
31
+ showLabels?: boolean;
32
+ /**
33
+ * At most how many peaks are labelled; every labelled one is still marked.
34
+ * @default DEFAULT_LABEL_LIMIT
35
+ */
36
+ labelLimit?: number;
37
+ /**
38
+ * Whether a label writes the charge of a peak whose charge was established.
39
+ * @default false
40
+ */
41
+ showCharges?: boolean;
42
+ /**
43
+ * How many decimals every mass is written with, overriding what the spectra
44
+ * resolve — where the labels follow the labelled spectrum's own resolution,
45
+ * and the crosshair what the drawn spectra resolve together.
46
+ * @default what the spectra resolve, as `mzDecimalsOf` decides
47
+ */
48
+ mzDecimals?: number;
49
+ /**
50
+ * What explains a peak, keyed as `peakKey` keys it — the name written on top
51
+ * of its label. This is how a host annotates peaks without the chart having
52
+ * to know where the names came from.
53
+ * @default undefined
54
+ */
55
+ annotationLabels?: ReadonlyMap<string, string>;
56
+ /**
57
+ * The m/z a guide is drawn at, `null` for none — the peak a row of a table
58
+ * beside the chart is resting on.
59
+ * @default null
60
+ */
61
+ highlightMz?: number | null;
62
+ /**
63
+ * Told which picked peak the pointer has come to rest on, and told `null` when
64
+ * it leaves one — called only when the answer changes.
65
+ * @default undefined
66
+ */
67
+ onPeakHover?: (peak: NearestPeak | null) => void;
68
+ /**
69
+ * The window to show, `null` to let the chart show what fits.
70
+ *
71
+ * The chart holds a window of its own, so this is an override rather than the
72
+ * chart's state: every window a gesture arrives at is reported through
73
+ * `onDomainChange`, and a host that keeps one is expected to hand back what it
74
+ * is told. Handing back `null` where a window was is how a host asks for the
75
+ * fit again.
76
+ * @default null
77
+ */
78
+ domain?: MassDomain | null;
79
+ /**
80
+ * Told the window the chart has come to show, whenever it changes — a drag, a
81
+ * turn of the wheel, the double click that fits everything again, or a refit
82
+ * after what is drawn changed.
83
+ * @default undefined
84
+ */
85
+ onDomainChange?: (domain: MassDomain) => void;
86
+ /**
87
+ * Told where a click on the plot landed, in m/z, and the picked peak within
88
+ * reach of it — `null` when it landed on none. The end of a drag is never a
89
+ * click.
90
+ * @default undefined
91
+ */
92
+ onPlotClick?: (mz: number, peak: NearestPeak | null) => void;
93
+ /**
94
+ * What a drag across the plot asks for: the m/z axis alone, or exactly the
95
+ * rectangle it sweeps out.
96
+ * @default 'xAxis'
97
+ */
98
+ drag?: ZoomDragMode;
99
+ /**
100
+ * Whether the chart answers `f` with the fit itself. A viewer around it that
101
+ * runs its keys through a command table turns this off.
102
+ * @default true
103
+ */
104
+ answersKeys?: boolean;
105
+ /**
106
+ * Identity of the spectrum drawn thicker than the rest, `null` for none.
107
+ * @default null
108
+ */
109
+ emphasisedId?: string | null;
110
+ /**
111
+ * How wide the chart is drawn, in pixels.
112
+ * @default the width of its container
113
+ */
114
+ width?: number;
115
+ /**
116
+ * How tall it is drawn, in pixels.
117
+ * @default the height of its container
118
+ */
119
+ height?: number;
120
+ /**
121
+ * Anything else to draw over the spectra, in the same pixels and under the
122
+ * same clip. Rendered last inside the plot, so a host adds to the chart
123
+ * instead of forking it.
124
+ * @default undefined
125
+ */
126
+ children?: ReactNode;
127
+ }
128
+ //# sourceMappingURL=massChartProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massChartProps.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/massChartProps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7D;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * What a consumer hands the chart, and what the chart tells it back.
3
+ *
4
+ * Held apart from the component because it is the whole of the chart's public
5
+ * API — every spectrum drawn, every peak labelled on it and every gesture that
6
+ * comes back out is one of these — while the component behind it is an assembly
7
+ * of half a dozen layers nobody needs to read in order to mount one.
8
+ *
9
+ * Everything arrives as a prop and nothing is reached for: the chart reads no
10
+ * store and no context, so the same component serves an editor, a report page
11
+ * that only ever draws one spectrum, and a test.
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=massChartProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massChartProps.js","sourceRoot":"","sources":["../../../src/mass/ui/massChartProps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * How a component reaches the commands, and what a toolbar item needs to be one.
3
+ *
4
+ * The hooks and the context object, with no component of its own: a module that
5
+ * exports a component and a constant together cannot be hot reloaded, which is
6
+ * why the provider and the tooltip are files of their own beside this one.
7
+ */
8
+ import type { MassCommandHandlers, MassCommandId, RunMassCommand } from '../core/massCommands.ts';
9
+ /** What the provider holds. */
10
+ export interface MassCommandContextValue {
11
+ /** What each command does. */
12
+ handlers: MassCommandHandlers;
13
+ /** Run one. */
14
+ run: RunMassCommand;
15
+ }
16
+ /** Where the provider puts it. */
17
+ export declare const massCommandContext: import("react").Context<MassCommandContextValue | null>;
18
+ /**
19
+ * Run a command from anywhere inside the viewer.
20
+ * @returns The runner; a command nothing handles does nothing.
21
+ */
22
+ export declare function useMassCommand(): RunMassCommand;
23
+ /**
24
+ * Everything a toolbar item needs to be one command, in one spread.
25
+ *
26
+ * The tooltip, the label a screen reader is given and the click handler all come
27
+ * from the same table entry, so a button cannot end up titled one thing and
28
+ * doing another.
29
+ * @returns A function from a command's identity to the props for its button.
30
+ */
31
+ export declare function useMassCommandProps(): (id: MassCommandId) => {
32
+ tooltip: import("react").JSX.Element;
33
+ 'aria-label': string;
34
+ onClick: () => void;
35
+ };
36
+ //# sourceMappingURL=massCommandContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massCommandContext.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/massCommandContext.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,cAAc,EACf,MAAM,yBAAyB,CAAC;AAKjC,+BAA+B;AAC/B,MAAM,WAAW,uBAAuB;IACtC,8BAA8B;IAC9B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,eAAe;IACf,GAAG,EAAE,cAAc,CAAC;CACrB;AAED,kCAAkC;AAClC,eAAO,MAAM,kBAAkB,yDAE9B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,IAAI,cAAc,CAG/C;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,KAET,IAAI,aAAa;;;;EAO1C"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * How a component reaches the commands, and what a toolbar item needs to be one.
4
+ *
5
+ * The hooks and the context object, with no component of its own: a module that
6
+ * exports a component and a constant together cannot be hot reloaded, which is
7
+ * why the provider and the tooltip are files of their own beside this one.
8
+ */
9
+ import { createContext, useContext } from 'react';
10
+ import { massCommandLabel } from "../core/massCommands.js";
11
+ import { MassCommandTooltip } from "./MassCommandTooltip.js";
12
+ /** Where the provider puts it. */
13
+ export const massCommandContext = createContext(null);
14
+ /**
15
+ * Run a command from anywhere inside the viewer.
16
+ * @returns The runner; a command nothing handles does nothing.
17
+ */
18
+ export function useMassCommand() {
19
+ const value = useContext(massCommandContext);
20
+ return value?.run ?? noRun;
21
+ }
22
+ /**
23
+ * Everything a toolbar item needs to be one command, in one spread.
24
+ *
25
+ * The tooltip, the label a screen reader is given and the click handler all come
26
+ * from the same table entry, so a button cannot end up titled one thing and
27
+ * doing another.
28
+ * @returns A function from a command's identity to the props for its button.
29
+ */
30
+ export function useMassCommandProps() {
31
+ const run = useMassCommand();
32
+ return function command(id) {
33
+ return {
34
+ tooltip: _jsx(MassCommandTooltip, { id: id }),
35
+ 'aria-label': massCommandLabel(id),
36
+ onClick: () => run(id),
37
+ };
38
+ };
39
+ }
40
+ /** What running a command comes to outside a provider: nothing at all. */
41
+ function noRun() {
42
+ // Deliberately empty: a chart mounted without the shell has no commands, and
43
+ // a missing provider is not a reason to throw at a button press.
44
+ }
45
+ //# sourceMappingURL=massCommandContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massCommandContext.js","sourceRoot":"","sources":["../../../src/mass/ui/massCommandContext.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAOlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAC;AAU9D,kCAAkC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAC7C,IAAI,CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC7C,OAAO,KAAK,EAAE,GAAG,IAAI,KAAK,CAAC;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,OAAO,SAAS,OAAO,CAAC,EAAiB;QACvC,OAAO;YACL,OAAO,EAAE,KAAC,kBAAkB,IAAC,EAAE,EAAE,EAAE,GAAI;YACvC,YAAY,EAAE,gBAAgB,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;SACvB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,SAAS,KAAK;IACZ,6EAA6E;IAC7E,iEAAiE;AACnE,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The panels a host adds to the viewer's own, and the one list both make.
3
+ *
4
+ * A host panel is a panel like any other once it is in the list: the activity
5
+ * bar and the stack read the same list, so it toggles, folds and closes exactly
6
+ * as the spectra or the peaks do. The host brings the body and nothing else —
7
+ * the header, its close button and the place in the column are the viewer's,
8
+ * which is what keeps every header reading the same.
9
+ */
10
+ import type { IconName } from '@blueprintjs/core';
11
+ import type { ReactNode } from 'react';
12
+ import { massSidePanels } from '../core/massSidePanels.ts';
13
+ /** A panel the host adds to the editor's own stack. */
14
+ export interface MassHostPanel {
15
+ /**
16
+ * Its identity in the activity bar and in `defaultPanelIds`; never a built-in
17
+ * id. One that is, or that an earlier host panel already took, is left out:
18
+ * one icon cannot open two panels.
19
+ */
20
+ id: string;
21
+ /** What its header and its activity-bar item say. */
22
+ title: string;
23
+ /** Its glyph in the activity bar (a Blueprint IconName). */
24
+ icon: IconName;
25
+ /**
26
+ * Its body. It brings its own toolbar as first row: the header carries the
27
+ * close button only. It is rendered inside the viewer, so a component in it
28
+ * reaches the viewer it stands in through `useMassEditorState` and
29
+ * `useMassActions` — to overlay a predicted isotopic pattern, say.
30
+ */
31
+ content: ReactNode;
32
+ }
33
+ /** One panel of the side: one of the viewer's own, or one a host added. */
34
+ export type MassStackPanel = (typeof massSidePanels)[number] | MassHostPanel;
35
+ /**
36
+ * Every panel the side offers, in the order the activity bar stacks them: the
37
+ * host's first, in the order given, then the viewer's own.
38
+ * @param hostPanels - What the host adds.
39
+ * @returns The panels; the viewer's own list itself when the host adds none.
40
+ */
41
+ export declare function massStackPanels(hostPanels: readonly MassHostPanel[]): readonly MassStackPanel[];
42
+ /**
43
+ * Whether a panel of the side is one a host added, whose body it brings.
44
+ * @param panel - The panel.
45
+ * @returns True for a host's panel.
46
+ */
47
+ export declare function isMassHostPanel(panel: MassStackPanel): panel is MassHostPanel;
48
+ //# sourceMappingURL=massHostPanels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massHostPanels.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/massHostPanels.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,EAAE,QAAQ,CAAC;IACf;;;;;OAKG;IACH,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;AAE7E;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,SAAS,aAAa,EAAE,GACnC,SAAS,cAAc,EAAE,CAW3B;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,IAAI,aAAa,CAE7E"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * The panels a host adds to the viewer's own, and the one list both make.
3
+ *
4
+ * A host panel is a panel like any other once it is in the list: the activity
5
+ * bar and the stack read the same list, so it toggles, folds and closes exactly
6
+ * as the spectra or the peaks do. The host brings the body and nothing else —
7
+ * the header, its close button and the place in the column are the viewer's,
8
+ * which is what keeps every header reading the same.
9
+ */
10
+ import { massSidePanels } from "../core/massSidePanels.js";
11
+ /**
12
+ * Every panel the side offers, in the order the activity bar stacks them: the
13
+ * host's first, in the order given, then the viewer's own.
14
+ * @param hostPanels - What the host adds.
15
+ * @returns The panels; the viewer's own list itself when the host adds none.
16
+ */
17
+ export function massStackPanels(hostPanels) {
18
+ if (hostPanels.length === 0)
19
+ return massSidePanels;
20
+ const taken = new Set(BUILT_IN_IDS);
21
+ const panels = [];
22
+ for (const panel of hostPanels) {
23
+ if (taken.has(panel.id))
24
+ continue;
25
+ taken.add(panel.id);
26
+ panels.push(panel);
27
+ }
28
+ panels.push(...massSidePanels);
29
+ return panels;
30
+ }
31
+ /**
32
+ * Whether a panel of the side is one a host added, whose body it brings.
33
+ * @param panel - The panel.
34
+ * @returns True for a host's panel.
35
+ */
36
+ export function isMassHostPanel(panel) {
37
+ return 'content' in panel;
38
+ }
39
+ /** The ids no host panel may take. */
40
+ const BUILT_IN_IDS = massSidePanels.map((panel) => panel.id);
41
+ //# sourceMappingURL=massHostPanels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massHostPanels.js","sourceRoot":"","sources":["../../../src/mass/ui/massHostPanels.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AA0B3D;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAoC;IAEpC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,YAAY,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,SAAS;QAClC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,OAAO,SAAS,IAAI,KAAK,CAAC;AAC5B,CAAC;AAED,sCAAsC;AACtC,MAAM,YAAY,GAAsB,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * How a panel reaches the viewer it is inside.
3
+ *
4
+ * Two contexts rather than one, because the actions never change while the state
5
+ * changes on every drag of the chart: a panel that only ever acts — a toolbar
6
+ * button — reads the second and is not re-rendered by the first.
7
+ */
8
+ import type { MassEditorActions } from './massActions.ts';
9
+ import type { MassEditorApi } from './useMassEditor.ts';
10
+ /** Everything one viewer knows, as the provider holds it. */
11
+ export declare const massStateContext: import("react").Context<MassEditorApi | null>;
12
+ /** Everything that changes it, as the provider holds it. */
13
+ export declare const massActionsContext: import("react").Context<MassEditorActions | null>;
14
+ /**
15
+ * Everything the viewer knows, from inside it.
16
+ * @returns The state and what follows from it.
17
+ * @throws {Error} When read outside a `MassStateProvider`.
18
+ */
19
+ export declare function useMassEditorState(): MassEditorApi;
20
+ /**
21
+ * Everything to do, from inside the viewer.
22
+ * @returns The actions.
23
+ * @throws {Error} When read outside a `MassStateProvider`.
24
+ */
25
+ export declare function useMassActions(): MassEditorActions;
26
+ //# sourceMappingURL=massStateContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massStateContext.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/massStateContext.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,+CAA4C,CAAC;AAE1E,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,mDAAgD,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAQlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,iBAAiB,CAQlD"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * How a panel reaches the viewer it is inside.
3
+ *
4
+ * Two contexts rather than one, because the actions never change while the state
5
+ * changes on every drag of the chart: a panel that only ever acts — a toolbar
6
+ * button — reads the second and is not re-rendered by the first.
7
+ */
8
+ import { createContext, useContext } from 'react';
9
+ /** Everything one viewer knows, as the provider holds it. */
10
+ export const massStateContext = createContext(null);
11
+ /** Everything that changes it, as the provider holds it. */
12
+ export const massActionsContext = createContext(null);
13
+ /**
14
+ * Everything the viewer knows, from inside it.
15
+ * @returns The state and what follows from it.
16
+ * @throws {Error} When read outside a `MassStateProvider`.
17
+ */
18
+ export function useMassEditorState() {
19
+ const editor = useContext(massStateContext);
20
+ if (editor === null) {
21
+ throw new Error('The mass spectrum viewer state was read outside a MassStateProvider');
22
+ }
23
+ return editor;
24
+ }
25
+ /**
26
+ * Everything to do, from inside the viewer.
27
+ * @returns The actions.
28
+ * @throws {Error} When read outside a `MassStateProvider`.
29
+ */
30
+ export function useMassActions() {
31
+ const actions = useContext(massActionsContext);
32
+ if (actions === null) {
33
+ throw new Error('The mass spectrum viewer actions were read outside a MassStateProvider');
34
+ }
35
+ return actions;
36
+ }
37
+ //# sourceMappingURL=massStateContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"massStateContext.js","sourceRoot":"","sources":["../../../src/mass/ui/massStateContext.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAKlD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAuB,IAAI,CAAC,CAAC;AAE1E,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAEhF;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC5C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC/C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * The zoom in and zoom out commands, which scale the intensity axis alone.
3
+ *
4
+ * They scale it about zero, the baseline every stick stands on, so a small peak
5
+ * comes up out of the baseline rather than the whole spectrum drifting off the
6
+ * plot — what a turn of the wheel does, at the speed of a key press.
7
+ */
8
+ /** The two commands, ready to hand to a button or a key. */
9
+ export interface IntensityZoom {
10
+ /** Bring the peaks up by one step. */
11
+ zoomIn: () => void;
12
+ /** Put the axis back out by one step. */
13
+ zoomOut: () => void;
14
+ }
15
+ /**
16
+ * Zoom the intensity axis of the viewer this is called inside.
17
+ * @returns The two commands.
18
+ */
19
+ export declare function useIntensityZoom(): IntensityZoom;
20
+ //# sourceMappingURL=useIntensityZoom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIntensityZoom.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/useIntensityZoom.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,yCAAyC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAsBhD"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The zoom in and zoom out commands, which scale the intensity axis alone.
3
+ *
4
+ * They scale it about zero, the baseline every stick stands on, so a small peak
5
+ * comes up out of the baseline rather than the whole spectrum drifting off the
6
+ * plot — what a turn of the wheel does, at the speed of a key press.
7
+ */
8
+ import { useMemo } from 'react';
9
+ import { fullDomain } from "../core/massDomain.js";
10
+ import { useMassActions, useMassEditorState } from "./massStateContext.js";
11
+ /**
12
+ * Zoom the intensity axis of the viewer this is called inside.
13
+ * @returns The two commands.
14
+ */
15
+ export function useIntensityZoom() {
16
+ const { state, visibleSpectra } = useMassEditorState();
17
+ const actions = useMassActions();
18
+ const { domain } = state.view;
19
+ return useMemo(() => {
20
+ /**
21
+ * Scale the intensity axis by a factor, about zero.
22
+ * @param factor - Above one to zoom out.
23
+ */
24
+ function scale(factor) {
25
+ const shown = domain ?? fullDomain(visibleSpectra);
26
+ actions.setDomain({
27
+ x: shown.x,
28
+ y: [shown.y[0] * factor, shown.y[1] * factor],
29
+ });
30
+ }
31
+ return {
32
+ zoomIn: () => scale(1 / ZOOM_STEP),
33
+ zoomOut: () => scale(ZOOM_STEP),
34
+ };
35
+ }, [actions, domain, visibleSpectra]);
36
+ }
37
+ /**
38
+ * What one press of zoom in or out is worth: about what one notch of a mouse
39
+ * wheel does, so the button and the wheel feel like one gesture at two speeds.
40
+ */
41
+ const ZOOM_STEP = 1.2;
42
+ //# sourceMappingURL=useIntensityZoom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIntensityZoom.js","sourceRoot":"","sources":["../../../src/mass/ui/useIntensityZoom.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAU3E;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACvD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAE9B,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB;;;WAGG;QACH,SAAS,KAAK,CAAC,MAAc;YAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC;YACnD,OAAO,CAAC,SAAS,CAAC;gBAChB,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;aAC9C,CAAC,CAAC;QACL,CAAC;QACD,OAAO;YACL,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC;YAClC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;SAChC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,SAAS,GAAG,GAAG,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * One viewer's state, and everything derived from it.
3
+ *
4
+ * What is derived here is what three panels and the chart read alike — which
5
+ * spectra are drawn, which one is selected, and how many decimals every mass on
6
+ * screen is written with — so it is worked out once per change rather than once
7
+ * per reader.
8
+ */
9
+ import type { MassSpectrum } from '../core/massSpectrum.ts';
10
+ import type { CreateMassStateOptions, MassState } from '../core/massState.ts';
11
+ import type { MassEditorActions } from './massActions.ts';
12
+ /** What a viewer opens on, and who to tell when the spectra change. */
13
+ export interface UseMassEditorOptions extends CreateMassStateOptions {
14
+ /**
15
+ * Called whenever the spectra open change — one loaded, one closed, the chart
16
+ * cleared — with the spectra now open.
17
+ * @default undefined
18
+ */
19
+ onChange?: (spectra: MassSpectrum[]) => void;
20
+ }
21
+ /** What a component drives the viewer through. */
22
+ export interface MassEditorApi {
23
+ /** Everything the viewer knows, in its three buckets. */
24
+ state: MassState;
25
+ /** The spectra currently drawn, by either trace, in the order they were loaded. */
26
+ visibleSpectra: MassSpectrum[];
27
+ /** The spectrum the panels act on, `null` while none is selected. */
28
+ selectedSpectrum: MassSpectrum | null;
29
+ /**
30
+ * How many decimals the masses the panels write are written with: the number
31
+ * chosen in the settings, or else the selected spectrum's own, since the peak
32
+ * table, the acquisition table and the labels are all about it alone — a
33
+ * nominal-mass table is written in whole numbers even beside an Orbitrap
34
+ * scan. With nothing selected, what the drawn spectra resolve together — see
35
+ * `mzDecimalsOf`.
36
+ */
37
+ mzDecimals: number;
38
+ /**
39
+ * What `mzDecimals` comes to when nothing is chosen, for a control that says
40
+ * what choosing nothing would mean.
41
+ */
42
+ autoMzDecimals: number;
43
+ /** Everything to do. */
44
+ actions: MassEditorActions;
45
+ }
46
+ /**
47
+ * Hold one viewer's state.
48
+ * @param options - What it opens on.
49
+ * @returns The state, what follows from it, and everything to do.
50
+ */
51
+ export declare function useMassEditor(options?: UseMassEditorOptions): MassEditorApi;
52
+ //# sourceMappingURL=useMassEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMassEditor.d.ts","sourceRoot":"","sources":["../../../src/mass/ui/useMassEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAK9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,uEAAuE;AACvE,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;IAClE;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;CAC9C;AAED,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,KAAK,EAAE,SAAS,CAAC;IACjB,mFAAmF;IACnF,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,qEAAqE;IACrE,gBAAgB,EAAE,YAAY,GAAG,IAAI,CAAC;IACtC;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAoEf"}