react-cheminfo 0.65.0 → 0.67.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 (466) hide show
  1. package/README.md +33 -17
  2. package/lib/download/ui/FigureDownloadPanel.d.ts +7 -1
  3. package/lib/download/ui/FigureDownloadPanel.d.ts.map +1 -1
  4. package/lib/download/ui/FigureDownloadPanel.js +2 -2
  5. package/lib/download/ui/FigureDownloadPanel.js.map +1 -1
  6. package/lib/ecosystem/core/sites.js +3 -3
  7. package/lib/ecosystem/core/sites.js.map +1 -1
  8. package/lib/ecosystem/core/types.d.ts +1 -1
  9. package/lib/ecosystem/core/types.d.ts.map +1 -1
  10. package/lib/ecosystem/ui/glyphs.js +1 -1
  11. package/lib/ecosystem/ui/glyphs.js.map +1 -1
  12. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  13. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  14. package/lib/i18n/core/messageCatalog.d.ts +2 -2
  15. package/lib/i18n/vite/localeCatalog.d.ts +1 -1
  16. package/lib/ir/core/analysisSpectra.d.ts +23 -6
  17. package/lib/ir/core/analysisSpectra.d.ts.map +1 -1
  18. package/lib/ir/core/analysisSpectra.js.map +1 -1
  19. package/lib/ir/core/bandLabelPlan.d.ts.map +1 -1
  20. package/lib/ir/core/bandLabelPlan.js +11 -6
  21. package/lib/ir/core/bandLabelPlan.js.map +1 -1
  22. package/lib/ir/core/index.d.ts +15 -11
  23. package/lib/ir/core/index.d.ts.map +1 -1
  24. package/lib/ir/core/index.js +9 -6
  25. package/lib/ir/core/index.js.map +1 -1
  26. package/lib/ir/core/irBand.d.ts +45 -14
  27. package/lib/ir/core/irBand.d.ts.map +1 -1
  28. package/lib/ir/core/irBand.js +28 -6
  29. package/lib/ir/core/irBand.js.map +1 -1
  30. package/lib/ir/core/irCommands.d.ts +11 -0
  31. package/lib/ir/core/irCommands.d.ts.map +1 -1
  32. package/lib/ir/core/irCommands.js +11 -1
  33. package/lib/ir/core/irCommands.js.map +1 -1
  34. package/lib/ir/core/irDomain.d.ts +4 -3
  35. package/lib/ir/core/irDomain.d.ts.map +1 -1
  36. package/lib/ir/core/irDomain.js +10 -7
  37. package/lib/ir/core/irDomain.js.map +1 -1
  38. package/lib/ir/core/irEditorApi.d.ts +12 -0
  39. package/lib/ir/core/irEditorApi.d.ts.map +1 -1
  40. package/lib/ir/core/irFormat.d.ts +14 -2
  41. package/lib/ir/core/irFormat.d.ts.map +1 -1
  42. package/lib/ir/core/irFormat.js +33 -4
  43. package/lib/ir/core/irFormat.js.map +1 -1
  44. package/lib/ir/core/irMode.d.ts +35 -8
  45. package/lib/ir/core/irMode.d.ts.map +1 -1
  46. package/lib/ir/core/irMode.js +38 -10
  47. package/lib/ir/core/irMode.js.map +1 -1
  48. package/lib/ir/core/irReducer.d.ts +2 -30
  49. package/lib/ir/core/irReducer.d.ts.map +1 -1
  50. package/lib/ir/core/irReducer.js +1 -24
  51. package/lib/ir/core/irReducer.js.map +1 -1
  52. package/lib/ir/core/irSidePanels.d.ts +7 -1
  53. package/lib/ir/core/irSidePanels.d.ts.map +1 -1
  54. package/lib/ir/core/irSpectrum.d.ts +52 -26
  55. package/lib/ir/core/irSpectrum.d.ts.map +1 -1
  56. package/lib/ir/core/irSpectrum.js +21 -15
  57. package/lib/ir/core/irSpectrum.js.map +1 -1
  58. package/lib/ir/core/irState.d.ts +46 -5
  59. package/lib/ir/core/irState.d.ts.map +1 -1
  60. package/lib/ir/core/irState.js +38 -1
  61. package/lib/ir/core/irState.js.map +1 -1
  62. package/lib/ir/core/irTechnique.d.ts +94 -0
  63. package/lib/ir/core/irTechnique.d.ts.map +1 -0
  64. package/lib/ir/core/irTechnique.js +87 -0
  65. package/lib/ir/core/irTechnique.js.map +1 -0
  66. package/lib/ir/core/irTechniqueCommands.d.ts +26 -0
  67. package/lib/ir/core/irTechniqueCommands.d.ts.map +1 -0
  68. package/lib/ir/core/irTechniqueCommands.js +68 -0
  69. package/lib/ir/core/irTechniqueCommands.js.map +1 -0
  70. package/lib/ir/core/pickBands.d.ts +6 -5
  71. package/lib/ir/core/pickBands.d.ts.map +1 -1
  72. package/lib/ir/core/pickBands.js +49 -26
  73. package/lib/ir/core/pickBands.js.map +1 -1
  74. package/lib/ir/core/ramanBands.d.ts +30 -0
  75. package/lib/ir/core/ramanBands.d.ts.map +1 -0
  76. package/lib/ir/core/ramanBands.js +83 -0
  77. package/lib/ir/core/ramanBands.js.map +1 -0
  78. package/lib/ir/core/spectrumJcamp.d.ts +10 -5
  79. package/lib/ir/core/spectrumJcamp.d.ts.map +1 -1
  80. package/lib/ir/core/spectrumJcamp.js +63 -15
  81. package/lib/ir/core/spectrumJcamp.js.map +1 -1
  82. package/lib/ir/core/toIrSpectrum.d.ts.map +1 -1
  83. package/lib/ir/core/toIrSpectrum.js +17 -2
  84. package/lib/ir/core/toIrSpectrum.js.map +1 -1
  85. package/lib/ir/ui/BandRow.d.ts +30 -0
  86. package/lib/ir/ui/BandRow.d.ts.map +1 -0
  87. package/lib/ir/ui/BandRow.js +42 -0
  88. package/lib/ir/ui/BandRow.js.map +1 -0
  89. package/lib/ir/ui/BandsPanel.d.ts +4 -0
  90. package/lib/ir/ui/BandsPanel.d.ts.map +1 -1
  91. package/lib/ir/ui/BandsPanel.js +14 -59
  92. package/lib/ir/ui/BandsPanel.js.map +1 -1
  93. package/lib/ir/ui/IrAboutDialog.d.ts +7 -0
  94. package/lib/ir/ui/IrAboutDialog.d.ts.map +1 -1
  95. package/lib/ir/ui/IrAboutDialog.js +16 -3
  96. package/lib/ir/ui/IrAboutDialog.js.map +1 -1
  97. package/lib/ir/ui/IrCanvas.d.ts +7 -0
  98. package/lib/ir/ui/IrCanvas.d.ts.map +1 -1
  99. package/lib/ir/ui/IrCanvas.js +9 -4
  100. package/lib/ir/ui/IrCanvas.js.map +1 -1
  101. package/lib/ir/ui/IrChart.d.ts +2 -1
  102. package/lib/ir/ui/IrChart.d.ts.map +1 -1
  103. package/lib/ir/ui/IrChart.js +22 -21
  104. package/lib/ir/ui/IrChart.js.map +1 -1
  105. package/lib/ir/ui/IrCommandProvider.d.ts +7 -0
  106. package/lib/ir/ui/IrCommandProvider.d.ts.map +1 -1
  107. package/lib/ir/ui/IrCommandProvider.js +2 -2
  108. package/lib/ir/ui/IrCommandProvider.js.map +1 -1
  109. package/lib/ir/ui/IrCommandTooltip.d.ts +7 -0
  110. package/lib/ir/ui/IrCommandTooltip.d.ts.map +1 -1
  111. package/lib/ir/ui/IrCommandTooltip.js +3 -2
  112. package/lib/ir/ui/IrCommandTooltip.js.map +1 -1
  113. package/lib/ir/ui/IrDocumentationDialog.d.ts +8 -1
  114. package/lib/ir/ui/IrDocumentationDialog.d.ts.map +1 -1
  115. package/lib/ir/ui/IrDocumentationDialog.js +30 -7
  116. package/lib/ir/ui/IrDocumentationDialog.js.map +1 -1
  117. package/lib/ir/ui/IrEditor.d.ts +25 -5
  118. package/lib/ir/ui/IrEditor.d.ts.map +1 -1
  119. package/lib/ir/ui/IrEditor.js +3 -20
  120. package/lib/ir/ui/IrEditor.js.map +1 -1
  121. package/lib/ir/ui/IrHeader.d.ts.map +1 -1
  122. package/lib/ir/ui/IrHeader.js +5 -1
  123. package/lib/ir/ui/IrHeader.js.map +1 -1
  124. package/lib/ir/ui/IrLogo.d.ts +11 -3
  125. package/lib/ir/ui/IrLogo.d.ts.map +1 -1
  126. package/lib/ir/ui/IrLogo.js +14 -5
  127. package/lib/ir/ui/IrLogo.js.map +1 -1
  128. package/lib/ir/ui/IrShell.d.ts +9 -1
  129. package/lib/ir/ui/IrShell.d.ts.map +1 -1
  130. package/lib/ir/ui/IrShell.js +26 -74
  131. package/lib/ir/ui/IrShell.js.map +1 -1
  132. package/lib/ir/ui/IrSidePanel.d.ts +11 -0
  133. package/lib/ir/ui/IrSidePanel.d.ts.map +1 -1
  134. package/lib/ir/ui/IrSidePanel.js +12 -3
  135. package/lib/ir/ui/IrSidePanel.js.map +1 -1
  136. package/lib/ir/ui/IrStatusBar.d.ts +3 -2
  137. package/lib/ir/ui/IrStatusBar.d.ts.map +1 -1
  138. package/lib/ir/ui/IrStatusBar.js +14 -9
  139. package/lib/ir/ui/IrStatusBar.js.map +1 -1
  140. package/lib/ir/ui/IrToolbar.d.ts +3 -0
  141. package/lib/ir/ui/IrToolbar.d.ts.map +1 -1
  142. package/lib/ir/ui/IrToolbar.js +10 -3
  143. package/lib/ir/ui/IrToolbar.js.map +1 -1
  144. package/lib/ir/ui/IrTraces.d.ts +4 -1
  145. package/lib/ir/ui/IrTraces.d.ts.map +1 -1
  146. package/lib/ir/ui/IrTraces.js +2 -0
  147. package/lib/ir/ui/IrTraces.js.map +1 -1
  148. package/lib/ir/ui/RamanEditor.d.ts +64 -0
  149. package/lib/ir/ui/RamanEditor.d.ts.map +1 -0
  150. package/lib/ir/ui/RamanEditor.js +17 -0
  151. package/lib/ir/ui/RamanEditor.js.map +1 -0
  152. package/lib/ir/ui/SpectraPanel.d.ts.map +1 -1
  153. package/lib/ir/ui/SpectraPanel.js +2 -2
  154. package/lib/ir/ui/SpectraPanel.js.map +1 -1
  155. package/lib/ir/ui/SpectrumRow.d.ts +7 -0
  156. package/lib/ir/ui/SpectrumRow.d.ts.map +1 -1
  157. package/lib/ir/ui/SpectrumRow.js +4 -5
  158. package/lib/ir/ui/SpectrumRow.js.map +1 -1
  159. package/lib/ir/ui/VibrationalEditor.d.ts +62 -0
  160. package/lib/ir/ui/VibrationalEditor.d.ts.map +1 -0
  161. package/lib/ir/ui/VibrationalEditor.js +33 -0
  162. package/lib/ir/ui/VibrationalEditor.js.map +1 -0
  163. package/lib/ir/ui/bandsTsv.d.ts +19 -0
  164. package/lib/ir/ui/bandsTsv.d.ts.map +1 -0
  165. package/lib/ir/ui/bandsTsv.js +38 -0
  166. package/lib/ir/ui/bandsTsv.js.map +1 -0
  167. package/lib/ir/ui/index.d.ts +1 -0
  168. package/lib/ir/ui/index.d.ts.map +1 -1
  169. package/lib/ir/ui/index.js.map +1 -1
  170. package/lib/ir/ui/irActions.d.ts +3 -3
  171. package/lib/ir/ui/irActions.d.ts.map +1 -1
  172. package/lib/ir/ui/irChartProps.d.ts +21 -4
  173. package/lib/ir/ui/irChartProps.d.ts.map +1 -1
  174. package/lib/ir/ui/irChartProps.js +3 -2
  175. package/lib/ir/ui/irChartProps.js.map +1 -1
  176. package/lib/ir/ui/irCommandContext.d.ts +8 -0
  177. package/lib/ir/ui/irCommandContext.d.ts.map +1 -1
  178. package/lib/ir/ui/irCommandContext.js +14 -3
  179. package/lib/ir/ui/irCommandContext.js.map +1 -1
  180. package/lib/ir/ui/irHostPanels.d.ts +53 -0
  181. package/lib/ir/ui/irHostPanels.d.ts.map +1 -0
  182. package/lib/ir/ui/irHostPanels.js +41 -0
  183. package/lib/ir/ui/irHostPanels.js.map +1 -0
  184. package/lib/ir/ui/useIrEditor.d.ts +3 -3
  185. package/lib/ir/ui/useIrEditor.d.ts.map +1 -1
  186. package/lib/ir/ui/useIrEditor.js +13 -4
  187. package/lib/ir/ui/useIrEditor.js.map +1 -1
  188. package/lib/ir/ui/useIrHandle.d.ts +14 -0
  189. package/lib/ir/ui/useIrHandle.d.ts.map +1 -0
  190. package/lib/ir/ui/useIrHandle.js +39 -0
  191. package/lib/ir/ui/useIrHandle.js.map +1 -0
  192. package/lib/ir/ui/useIrSide.d.ts +27 -0
  193. package/lib/ir/ui/useIrSide.d.ts.map +1 -0
  194. package/lib/ir/ui/useIrSide.js +42 -0
  195. package/lib/ir/ui/useIrSide.js.map +1 -0
  196. package/lib/ir/ui/useIrText.d.ts +40 -0
  197. package/lib/ir/ui/useIrText.d.ts.map +1 -0
  198. package/lib/ir/ui/useIrText.js +118 -0
  199. package/lib/ir/ui/useIrText.js.map +1 -0
  200. package/lib/ir/ui/useIrZoom.d.ts +15 -0
  201. package/lib/ir/ui/useIrZoom.d.ts.map +1 -1
  202. package/lib/ir/ui/useIrZoom.js +6 -4
  203. package/lib/ir/ui/useIrZoom.js.map +1 -1
  204. package/lib/ir/ui/useValueAxisZoom.d.ts +20 -0
  205. package/lib/ir/ui/useValueAxisZoom.d.ts.map +1 -0
  206. package/lib/ir/ui/useValueAxisZoom.js +54 -0
  207. package/lib/ir/ui/useValueAxisZoom.js.map +1 -0
  208. package/lib/ir.d.ts +3 -0
  209. package/lib/ir.d.ts.map +1 -1
  210. package/lib/ir.js +3 -0
  211. package/lib/ir.js.map +1 -1
  212. package/lib/locales/de.json +29 -2
  213. package/lib/locales/en.json +29 -2
  214. package/lib/locales/es.json +29 -2
  215. package/lib/locales/fr.json +29 -2
  216. package/lib/locales/it.json +29 -2
  217. package/lib/molecule3d/core/animatedPng.d.ts +25 -0
  218. package/lib/molecule3d/core/animatedPng.d.ts.map +1 -0
  219. package/lib/molecule3d/core/animatedPng.js +59 -0
  220. package/lib/molecule3d/core/animatedPng.js.map +1 -0
  221. package/lib/molecule3d/core/file.d.ts +24 -0
  222. package/lib/molecule3d/core/file.d.ts.map +1 -0
  223. package/lib/molecule3d/core/file.js +2 -0
  224. package/lib/molecule3d/core/file.js.map +1 -0
  225. package/lib/molecule3d/core/index.d.ts +4 -1
  226. package/lib/molecule3d/core/index.d.ts.map +1 -1
  227. package/lib/molecule3d/core/index.js +1 -0
  228. package/lib/molecule3d/core/index.js.map +1 -1
  229. package/lib/molecule3d/core/settings.d.ts +0 -7
  230. package/lib/molecule3d/core/settings.d.ts.map +1 -1
  231. package/lib/molecule3d/core/settings.js.map +1 -1
  232. package/lib/molecule3d/ui/Molecule3DExport.d.ts +10 -2
  233. package/lib/molecule3d/ui/Molecule3DExport.d.ts.map +1 -1
  234. package/lib/molecule3d/ui/Molecule3DExport.js +15 -2
  235. package/lib/molecule3d/ui/Molecule3DExport.js.map +1 -1
  236. package/lib/molecule3d/ui/Molecule3DToolbar.js +9 -2
  237. package/lib/molecule3d/ui/Molecule3DToolbar.js.map +1 -1
  238. package/lib/molecule3d/ui/MoleculeCanvas3D.d.ts.map +1 -1
  239. package/lib/molecule3d/ui/MoleculeCanvas3D.js +23 -41
  240. package/lib/molecule3d/ui/MoleculeCanvas3D.js.map +1 -1
  241. package/lib/molecule3d/ui/drawScene.d.ts +2 -1
  242. package/lib/molecule3d/ui/drawScene.d.ts.map +1 -1
  243. package/lib/molecule3d/ui/drawScene.js.map +1 -1
  244. package/lib/molecule3d/ui/exportMoleculeImage.d.ts +15 -1
  245. package/lib/molecule3d/ui/exportMoleculeImage.d.ts.map +1 -1
  246. package/lib/molecule3d/ui/exportMoleculeImage.js +14 -2
  247. package/lib/molecule3d/ui/exportMoleculeImage.js.map +1 -1
  248. package/lib/molecule3d/ui/moleculeFrames.d.ts +47 -0
  249. package/lib/molecule3d/ui/moleculeFrames.d.ts.map +1 -0
  250. package/lib/molecule3d/ui/moleculeFrames.js +65 -0
  251. package/lib/molecule3d/ui/moleculeFrames.js.map +1 -0
  252. package/lib/molecule3d/ui/moleculeViewer3DProps.d.ts +14 -1
  253. package/lib/molecule3d/ui/moleculeViewer3DProps.d.ts.map +1 -1
  254. package/lib/molecule3d/ui/renderMolecule.d.ts +3 -3
  255. package/lib/molecule3d/ui/renderMolecule.d.ts.map +1 -1
  256. package/lib/molecule3d/ui/renderMolecule.js +2 -1
  257. package/lib/molecule3d/ui/renderMolecule.js.map +1 -1
  258. package/lib/molecule3d/ui/sceneDrawer.d.ts +2 -1
  259. package/lib/molecule3d/ui/sceneDrawer.d.ts.map +1 -1
  260. package/lib/molecule3d/ui/sceneDrawer.js +9 -1
  261. package/lib/molecule3d/ui/sceneDrawer.js.map +1 -1
  262. package/lib/molecule3d/ui/useImageExport.d.ts +8 -3
  263. package/lib/molecule3d/ui/useImageExport.d.ts.map +1 -1
  264. package/lib/molecule3d/ui/useImageExport.js +13 -4
  265. package/lib/molecule3d/ui/useImageExport.js.map +1 -1
  266. package/lib/molecule3d/ui/useMoleculeScene.d.ts +2 -1
  267. package/lib/molecule3d/ui/useMoleculeScene.d.ts.map +1 -1
  268. package/lib/molecule3d/ui/useMoleculeScene.js.map +1 -1
  269. package/lib/molecule3d/ui/useMoleculeViewer.d.ts +16 -0
  270. package/lib/molecule3d/ui/useMoleculeViewer.d.ts.map +1 -0
  271. package/lib/molecule3d/ui/useMoleculeViewer.js +37 -0
  272. package/lib/molecule3d/ui/useMoleculeViewer.js.map +1 -0
  273. package/lib/molecule3d/ui/usePolarSurfaceArea.d.ts +3 -3
  274. package/lib/molecule3d/ui/usePolarSurfaceArea.d.ts.map +1 -1
  275. package/lib/molecule3d/ui/usePolarSurfaceArea.js +4 -3
  276. package/lib/molecule3d/ui/usePolarSurfaceArea.js.map +1 -1
  277. package/lib/molecule3d/ui/viewer.d.ts +4 -1
  278. package/lib/molecule3d/ui/viewer.d.ts.map +1 -1
  279. package/lib/molecule3d/ui/viewer.js +21 -19
  280. package/lib/molecule3d/ui/viewer.js.map +1 -1
  281. package/lib/molecule3d/ui/viewerTypes.d.ts +6 -0
  282. package/lib/molecule3d/ui/viewerTypes.d.ts.map +1 -1
  283. package/lib/molstar/core/captureScene.d.ts +19 -1
  284. package/lib/molstar/core/captureScene.d.ts.map +1 -1
  285. package/lib/molstar/core/captureScene.js +57 -2
  286. package/lib/molstar/core/captureScene.js.map +1 -1
  287. package/lib/molstar/core/index.d.ts +5 -2
  288. package/lib/molstar/core/index.d.ts.map +1 -1
  289. package/lib/molstar/core/index.js +4 -2
  290. package/lib/molstar/core/index.js.map +1 -1
  291. package/lib/molstar/core/trajectory.d.ts +56 -0
  292. package/lib/molstar/core/trajectory.d.ts.map +1 -0
  293. package/lib/molstar/core/trajectory.js +96 -0
  294. package/lib/molstar/core/trajectory.js.map +1 -0
  295. package/lib/panel/ui/PanelRail.d.ts.map +1 -1
  296. package/lib/panel/ui/PanelRail.js +1 -1
  297. package/lib/panel/ui/PanelRail.js.map +1 -1
  298. package/lib/raman.d.ts +17 -0
  299. package/lib/raman.d.ts.map +1 -0
  300. package/lib/raman.js +12 -0
  301. package/lib/raman.js.map +1 -0
  302. package/lib/router/core/basePath.d.ts +2 -2
  303. package/lib/router/core/basePath.js +2 -2
  304. package/lib/router/core/siteAddresses.d.ts +1 -1
  305. package/lib/router/core/siteAddresses.js +1 -1
  306. package/lib/seo/core/siteFiles.js +1 -1
  307. package/lib/seo/core/siteFiles.js.map +1 -1
  308. package/lib/server/answerAddresses.d.ts +3 -3
  309. package/lib/server/answerAddresses.js +3 -3
  310. package/lib/structure/core/index.d.ts +2 -0
  311. package/lib/structure/core/index.d.ts.map +1 -1
  312. package/lib/structure/core/index.js +1 -0
  313. package/lib/structure/core/index.js.map +1 -1
  314. package/lib/structure/core/structureTransfer.d.ts +29 -0
  315. package/lib/structure/core/structureTransfer.d.ts.map +1 -0
  316. package/lib/structure/core/structureTransfer.js +26 -0
  317. package/lib/structure/core/structureTransfer.js.map +1 -0
  318. package/lib/structure/ui/EditorImportButton.d.ts +20 -0
  319. package/lib/structure/ui/EditorImportButton.d.ts.map +1 -0
  320. package/lib/structure/ui/EditorImportButton.js +24 -0
  321. package/lib/structure/ui/EditorImportButton.js.map +1 -0
  322. package/lib/structure/ui/EditorImportProblem.d.ts +17 -0
  323. package/lib/structure/ui/EditorImportProblem.d.ts.map +1 -0
  324. package/lib/structure/ui/EditorImportProblem.js +32 -0
  325. package/lib/structure/ui/EditorImportProblem.js.map +1 -0
  326. package/lib/structure/ui/StructureDrop.d.ts +39 -0
  327. package/lib/structure/ui/StructureDrop.d.ts.map +1 -0
  328. package/lib/structure/ui/StructureDrop.js +19 -0
  329. package/lib/structure/ui/StructureDrop.js.map +1 -0
  330. package/lib/structure/ui/StructureDropOverlay.d.ts +16 -0
  331. package/lib/structure/ui/StructureDropOverlay.d.ts.map +1 -0
  332. package/lib/structure/ui/StructureDropOverlay.js +29 -0
  333. package/lib/structure/ui/StructureDropOverlay.js.map +1 -0
  334. package/lib/structure/ui/StructureEditor.d.ts +3 -80
  335. package/lib/structure/ui/StructureEditor.d.ts.map +1 -1
  336. package/lib/structure/ui/StructureEditor.js +21 -33
  337. package/lib/structure/ui/StructureEditor.js.map +1 -1
  338. package/lib/structure/ui/importedStructure.d.ts +25 -0
  339. package/lib/structure/ui/importedStructure.d.ts.map +1 -0
  340. package/lib/structure/ui/importedStructure.js +74 -0
  341. package/lib/structure/ui/importedStructure.js.map +1 -0
  342. package/lib/structure/ui/index.d.ts +2 -0
  343. package/lib/structure/ui/index.d.ts.map +1 -1
  344. package/lib/structure/ui/index.js +1 -0
  345. package/lib/structure/ui/index.js.map +1 -1
  346. package/lib/structure/ui/structureEditorProps.d.ts +98 -0
  347. package/lib/structure/ui/structureEditorProps.d.ts.map +1 -0
  348. package/lib/structure/ui/structureEditorProps.js +2 -0
  349. package/lib/structure/ui/structureEditorProps.js.map +1 -0
  350. package/lib/structure/ui/useDebouncedChange.d.ts +16 -0
  351. package/lib/structure/ui/useDebouncedChange.d.ts.map +1 -0
  352. package/lib/structure/ui/useDebouncedChange.js +30 -0
  353. package/lib/structure/ui/useDebouncedChange.js.map +1 -0
  354. package/lib/structure/ui/useStructureDrop.d.ts +30 -0
  355. package/lib/structure/ui/useStructureDrop.d.ts.map +1 -0
  356. package/lib/structure/ui/useStructureDrop.js +49 -0
  357. package/lib/structure/ui/useStructureDrop.js.map +1 -0
  358. package/lib/structure/ui/useStructureImport.d.ts +45 -0
  359. package/lib/structure/ui/useStructureImport.d.ts.map +1 -0
  360. package/lib/structure/ui/useStructureImport.js +62 -0
  361. package/lib/structure/ui/useStructureImport.js.map +1 -0
  362. package/package.json +5 -1
  363. package/src/download/ui/FigureDownloadPanel.tsx +9 -2
  364. package/src/ecosystem/core/sites.ts +3 -3
  365. package/src/ecosystem/core/types.ts +1 -1
  366. package/src/ecosystem/ui/glyphs.tsx +1 -1
  367. package/src/i18n/core/messageCatalog.ts +2 -2
  368. package/src/i18n/vite/localeCatalog.ts +1 -1
  369. package/src/ir/core/analysisSpectra.ts +26 -10
  370. package/src/ir/core/bandLabelPlan.ts +21 -10
  371. package/src/ir/core/index.ts +31 -7
  372. package/src/ir/core/irBand.ts +52 -14
  373. package/src/ir/core/irCommands.ts +15 -1
  374. package/src/ir/core/irDomain.ts +9 -7
  375. package/src/ir/core/irEditorApi.ts +13 -0
  376. package/src/ir/core/irFormat.ts +39 -6
  377. package/src/ir/core/irMode.ts +42 -10
  378. package/src/ir/core/irReducer.ts +3 -51
  379. package/src/ir/core/irSidePanels.ts +8 -1
  380. package/src/ir/core/irSpectrum.ts +59 -30
  381. package/src/ir/core/irState.ts +73 -5
  382. package/src/ir/core/irTechnique.ts +115 -0
  383. package/src/ir/core/irTechniqueCommands.ts +82 -0
  384. package/src/ir/core/pickBands.ts +63 -28
  385. package/src/ir/core/ramanBands.ts +105 -0
  386. package/src/ir/core/spectrumJcamp.ts +65 -16
  387. package/src/ir/core/toIrSpectrum.ts +20 -2
  388. package/src/ir/ui/BandRow.tsx +107 -0
  389. package/src/ir/ui/BandsPanel.tsx +32 -125
  390. package/src/ir/ui/IrAboutDialog.tsx +69 -28
  391. package/src/ir/ui/IrCanvas.tsx +29 -3
  392. package/src/ir/ui/IrChart.tsx +31 -24
  393. package/src/ir/ui/IrCommandProvider.tsx +10 -3
  394. package/src/ir/ui/IrCommandTooltip.tsx +11 -2
  395. package/src/ir/ui/IrDocumentationDialog.tsx +99 -55
  396. package/src/ir/ui/IrEditor.tsx +27 -40
  397. package/src/ir/ui/IrHeader.tsx +10 -3
  398. package/src/ir/ui/IrLogo.tsx +28 -9
  399. package/src/ir/ui/IrShell.tsx +47 -96
  400. package/src/ir/ui/IrSidePanel.tsx +36 -10
  401. package/src/ir/ui/IrStatusBar.tsx +17 -12
  402. package/src/ir/ui/IrToolbar.tsx +26 -15
  403. package/src/ir/ui/IrTraces.tsx +5 -1
  404. package/src/ir/ui/RamanEditor.tsx +71 -0
  405. package/src/ir/ui/SpectraPanel.tsx +2 -1
  406. package/src/ir/ui/SpectrumRow.tsx +14 -5
  407. package/src/ir/ui/VibrationalEditor.tsx +113 -0
  408. package/src/ir/ui/bandsTsv.ts +46 -0
  409. package/src/ir/ui/index.ts +1 -0
  410. package/src/ir/ui/irActions.ts +3 -3
  411. package/src/ir/ui/irChartProps.ts +21 -4
  412. package/src/ir/ui/irCommandContext.tsx +18 -3
  413. package/src/ir/ui/irHostPanels.ts +76 -0
  414. package/src/ir/ui/useIrEditor.ts +20 -8
  415. package/src/ir/ui/useIrHandle.ts +51 -0
  416. package/src/ir/ui/useIrSide.ts +60 -0
  417. package/src/ir/ui/useIrText.ts +170 -0
  418. package/src/ir/ui/useIrZoom.ts +22 -3
  419. package/src/ir/ui/useValueAxisZoom.ts +67 -0
  420. package/src/ir.ts +3 -0
  421. package/src/locales/de.json +29 -2
  422. package/src/locales/en.json +29 -2
  423. package/src/locales/es.json +29 -2
  424. package/src/locales/fr.json +29 -2
  425. package/src/locales/it.json +29 -2
  426. package/src/molecule3d/core/animatedPng.ts +79 -0
  427. package/src/molecule3d/core/file.ts +23 -0
  428. package/src/molecule3d/core/index.ts +3 -1
  429. package/src/molecule3d/core/settings.ts +0 -8
  430. package/src/molecule3d/ui/Molecule3DExport.tsx +43 -5
  431. package/src/molecule3d/ui/Molecule3DToolbar.tsx +9 -2
  432. package/src/molecule3d/ui/MoleculeCanvas3D.tsx +24 -38
  433. package/src/molecule3d/ui/drawScene.ts +2 -1
  434. package/src/molecule3d/ui/exportMoleculeImage.ts +28 -3
  435. package/src/molecule3d/ui/moleculeFrames.ts +88 -0
  436. package/src/molecule3d/ui/moleculeViewer3DProps.ts +14 -5
  437. package/src/molecule3d/ui/renderMolecule.ts +5 -3
  438. package/src/molecule3d/ui/sceneDrawer.ts +14 -2
  439. package/src/molecule3d/ui/useImageExport.ts +22 -5
  440. package/src/molecule3d/ui/useMoleculeScene.ts +2 -1
  441. package/src/molecule3d/ui/useMoleculeViewer.ts +46 -0
  442. package/src/molecule3d/ui/usePolarSurfaceArea.ts +6 -4
  443. package/src/molecule3d/ui/viewer.ts +34 -27
  444. package/src/molecule3d/ui/viewerTypes.ts +6 -0
  445. package/src/molstar/core/captureScene.ts +85 -2
  446. package/src/molstar/core/index.ts +13 -2
  447. package/src/molstar/core/trajectory.ts +117 -0
  448. package/src/panel/ui/PanelRail.tsx +3 -0
  449. package/src/raman.ts +20 -0
  450. package/src/router/core/basePath.ts +2 -2
  451. package/src/router/core/siteAddresses.ts +1 -1
  452. package/src/seo/core/siteFiles.ts +1 -1
  453. package/src/server/answerAddresses.ts +3 -3
  454. package/src/structure/core/index.ts +8 -0
  455. package/src/structure/core/structureTransfer.ts +37 -0
  456. package/src/structure/ui/EditorImportButton.tsx +59 -0
  457. package/src/structure/ui/EditorImportProblem.tsx +63 -0
  458. package/src/structure/ui/StructureDrop.tsx +66 -0
  459. package/src/structure/ui/StructureDropOverlay.tsx +50 -0
  460. package/src/structure/ui/StructureEditor.tsx +49 -134
  461. package/src/structure/ui/importedStructure.ts +83 -0
  462. package/src/structure/ui/index.ts +2 -0
  463. package/src/structure/ui/structureEditorProps.ts +103 -0
  464. package/src/structure/ui/useDebouncedChange.ts +41 -0
  465. package/src/structure/ui/useStructureDrop.ts +76 -0
  466. package/src/structure/ui/useStructureImport.ts +122 -0
@@ -0,0 +1,64 @@
1
+ import type { Ref } from 'react';
2
+ import type { IrEditorHandle, IrPlotClick } from '../core/irEditorApi.ts';
3
+ import type { IrPanelId } from '../core/irSidePanels.ts';
4
+ import type { IrSpectrum } from '../core/irSpectrum.ts';
5
+ import type { IrHostPanel } from './irHostPanels.ts';
6
+ /** The handle a host drives a Raman viewer through: the infrared one's. */
7
+ export type RamanEditorHandle = IrEditorHandle;
8
+ export interface RamanEditorProps {
9
+ /**
10
+ * The spectra to open on, each carrying its `intensity`. Read when the viewer
11
+ * opens and never again: what is on the chart belongs to the viewer from then
12
+ * on. The `ref` handle is how spectra arrive afterwards.
13
+ * @default []
14
+ */
15
+ data?: IrSpectrum[];
16
+ /**
17
+ * Called whenever the spectra open change — one loaded, one closed, the chart
18
+ * cleared — with the spectra now open. Not called for a zoom, a selection, a
19
+ * rename or a colour.
20
+ * @default undefined
21
+ */
22
+ onChange?: (spectra: IrSpectrum[]) => void;
23
+ /**
24
+ * The side panels open to begin with: the viewer's own — `'spectra'`,
25
+ * `'bands'`, `'metadata'` — or the id of one of `panels`. An id no panel
26
+ * answers to is ignored.
27
+ * @default DEFAULT_SIDE_PANELS
28
+ */
29
+ defaultPanelIds?: readonly IrPanelId[];
30
+ /**
31
+ * Panels the host adds to the viewer's own. Their icons come first in the
32
+ * activity bar, in the order given, and each then behaves as a built-in panel
33
+ * does: toggled on its own, stacked in the same column with a share of its
34
+ * height, folded and closed from its header.
35
+ * @default []
36
+ */
37
+ panels?: readonly IrHostPanel[];
38
+ /**
39
+ * The plot was clicked at this Raman shift (a press that did not travel, i.e.
40
+ * not a zoom drag), with the spectrum selected at that moment. The shift is
41
+ * reported as `wavenumber`, the name both techniques share.
42
+ * @default undefined
43
+ */
44
+ onPlotClick?: (click: IrPlotClick) => void;
45
+ /**
46
+ * The handle a host drives the viewer through: take these spectra, frame this
47
+ * Raman shift, select that one.
48
+ * @default undefined
49
+ */
50
+ ref?: Ref<RamanEditorHandle>;
51
+ }
52
+ /**
53
+ * A Raman spectrum viewer: the infrared viewer's shell, panels, gestures and
54
+ * export, changed only where Raman is physically different.
55
+ *
56
+ * The spectra are read as intensity, their one value axis, so there is no mode
57
+ * to choose; the Raman shift runs from low at the left to high at the right;
58
+ * the bands are picked as maxima of intensity; and the infrared correlation
59
+ * table is not asked what a band might be.
60
+ * @param props - Component props.
61
+ * @returns The viewer.
62
+ */
63
+ export declare function RamanEditor(props: RamanEditorProps): import("react").JSX.Element;
64
+ //# sourceMappingURL=RamanEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RamanEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/RamanEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,2EAA2E;AAC3E,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC3C;;;;;OAKG;IACH,eAAe,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BAElD"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { VibrationalEditor } from "./VibrationalEditor.js";
3
+ /**
4
+ * A Raman spectrum viewer: the infrared viewer's shell, panels, gestures and
5
+ * export, changed only where Raman is physically different.
6
+ *
7
+ * The spectra are read as intensity, their one value axis, so there is no mode
8
+ * to choose; the Raman shift runs from low at the left to high at the right;
9
+ * the bands are picked as maxima of intensity; and the infrared correlation
10
+ * table is not asked what a band might be.
11
+ * @param props - Component props.
12
+ * @returns The viewer.
13
+ */
14
+ export function RamanEditor(props) {
15
+ return _jsx(VibrationalEditor, { technique: "raman", ...props });
16
+ }
17
+ //# sourceMappingURL=RamanEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RamanEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/RamanEditor.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAmD5D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,KAAC,iBAAiB,IAAC,SAAS,EAAC,OAAO,KAAK,KAAK,GAAI,CAAC;AAC5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SpectraPanel.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/SpectraPanel.tsx"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,gCA+E3B"}
1
+ {"version":3,"file":"SpectraPanel.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/SpectraPanel.tsx"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,gCAgF3B"}
@@ -27,7 +27,7 @@ export function SpectraPanel() {
27
27
  const actions = useIrActions();
28
28
  const { spectra } = state.data;
29
29
  const { selectedId } = state.view;
30
- const { mode } = state.settings;
30
+ const { mode, technique } = state.settings;
31
31
  const selected = spectra.find((spectrum) => spectrum.id === selectedId);
32
32
  const allDrawn = spectra.every((spectrum) => spectrum.visible);
33
33
  return (_jsxs("div", { style: panelStyle, children: [_jsx("div", { style: panelToolbarStyle, children: _jsxs(Toolbar, { "aria-label": "Spectra", children: [_jsx(Toolbar.Item, { icon: "trash", intent: "danger", tooltip: "Close every spectrum", "aria-label": "Close every spectrum", disabled: spectra.length === 0, onClick: actions.clear }), _jsx(Toolbar.Item, { icon: "cross", intent: "danger", tooltip: "Close the selected spectrum", "aria-label": "Close the selected spectrum", disabled: selected === undefined, onClick: () => {
@@ -37,6 +37,6 @@ export function SpectraPanel() {
37
37
  for (const spectrum of spectra) {
38
38
  actions.setSpectrumVisible(spectrum.id, true);
39
39
  }
40
- } }), _jsx(Toolbar.Item, { icon: "download", tooltip: "Download every spectrum as one JCAMP-DX file", "aria-label": "Download every spectrum", disabled: spectra.length === 0, onClick: () => downloadIrSpectra(spectra, mode) })] }) }), _jsx("div", { style: panelBodyStyle, children: spectra.length === 0 ? (_jsx("p", { style: panelEmptyStyle, children: "No spectrum is open. Open one of the examples, or drop a JCAMP-DX file on the chart." })) : (spectra.map((spectrum) => (_jsx(SpectrumRow, { spectrum: spectrum, selected: spectrum.id === selectedId, onSelect: () => actions.selectSpectrum(spectrum.id), onToggle: () => actions.setSpectrumVisible(spectrum.id, !spectrum.visible), onColor: (color) => actions.setSpectrumColor(spectrum.id, color), onDownload: () => downloadIrSpectrum(spectrum, mode), onRemove: () => actions.removeSpectrum(spectrum.id), onRename: (name) => actions.renameSpectrum(spectrum.id, name) }, spectrum.id)))) })] }));
40
+ } }), _jsx(Toolbar.Item, { icon: "download", tooltip: "Download every spectrum as one JCAMP-DX file", "aria-label": "Download every spectrum", disabled: spectra.length === 0, onClick: () => downloadIrSpectra(spectra, mode) })] }) }), _jsx("div", { style: panelBodyStyle, children: spectra.length === 0 ? (_jsx("p", { style: panelEmptyStyle, children: "No spectrum is open. Open one of the examples, or drop a JCAMP-DX file on the chart." })) : (spectra.map((spectrum) => (_jsx(SpectrumRow, { spectrum: spectrum, technique: technique, selected: spectrum.id === selectedId, onSelect: () => actions.selectSpectrum(spectrum.id), onToggle: () => actions.setSpectrumVisible(spectrum.id, !spectrum.visible), onColor: (color) => actions.setSpectrumColor(spectrum.id, color), onDownload: () => downloadIrSpectrum(spectrum, mode), onRemove: () => actions.removeSpectrum(spectrum.id), onRename: (name) => actions.renameSpectrum(spectrum.id, name) }, spectrum.id)))) })] }));
41
41
  }
42
42
  //# sourceMappingURL=SpectraPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpectraPanel.js","sourceRoot":"","sources":["../../../src/ir/ui/SpectraPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpectraPanel.js","sourceRoot":"","sources":["../../../src/ir/ui/SpectraPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,14 @@
1
1
  import type { IrSpectrum } from '../core/irSpectrum.ts';
2
+ import type { IrTechnique } from '../core/irTechnique.ts';
2
3
  export interface SpectrumRowProps {
3
4
  /** The spectrum the row is about. */
4
5
  spectrum: IrSpectrum;
6
+ /**
7
+ * What it was measured with, which decides the order its range is written
8
+ * in: high to low for infrared, low to high for Raman.
9
+ * @default 'infrared'
10
+ */
11
+ technique?: IrTechnique;
5
12
  /** Whether the panels are about it. */
6
13
  selected: boolean;
7
14
  /** Point the panels at it. */
@@ -1 +1 @@
1
- {"version":3,"file":"SpectrumRow.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/SpectrumRow.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,QAAQ,EAAE,UAAU,CAAC;IACrB,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,gDAAgD;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,8BAA8B;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BAoElD"}
1
+ {"version":3,"file":"SpectrumRow.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/SpectrumRow.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,QAAQ,EAAE,UAAU,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,gDAAgD;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,8BAA8B;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BAqElD"}
@@ -1,17 +1,16 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button } from 'react-science/ui';
3
3
  import { SpectrumColorSwatch } from "../../panel/ui/SpectrumColorSwatch.js";
4
- import { formatWavenumber } from "../core/irFormat.js";
4
+ import { formatWavenumberRange } from "../core/irFormat.js";
5
+ import { IR_TECHNIQUE_RULES } from "../core/irTechnique.js";
5
6
  /**
6
7
  * One spectrum: its colour, its name, where it runs, and what can be done to it.
7
8
  * @param props - Component props.
8
9
  * @returns The row.
9
10
  */
10
11
  export function SpectrumRow(props) {
11
- const { spectrum, selected, onSelect, onToggle, onColor, onDownload, onRemove, onRename, } = props;
12
- const range = spectrum.wavenumber.length === 0
13
- ? ''
14
- : `${formatWavenumber(spectrum.wavenumber.at(-1))}–${formatWavenumber(spectrum.wavenumber[0])} cm⁻¹`;
12
+ const { spectrum, technique = 'infrared', selected, onSelect, onToggle, onColor, onDownload, onRemove, onRename, } = props;
13
+ const range = formatWavenumberRange(spectrum.wavenumber, IR_TECHNIQUE_RULES[technique].reverseX);
15
14
  return (_jsxs("div", { style: selected ? selectedRowStyle : rowStyle, "data-selected": selected ? 'true' : undefined, children: [_jsx(Button, { variant: "minimal", icon: spectrum.visible ? 'eye-open' : 'eye-off', tooltipProps: { content: spectrum.visible ? 'Hide' : 'Draw' }, "aria-label": spectrum.visible ? 'Hide this spectrum' : 'Draw it', onClick: onToggle }), _jsx(SpectrumColorSwatch, { color: spectrum.color, name: spectrum.name, onPick: onColor }), _jsx("input", { style: nameStyle, value: spectrum.name, spellCheck: false, autoComplete: "off", "aria-label": "What this spectrum is called", onFocus: onSelect, onChange: (event) => onRename(event.target.value) }), _jsx("span", { style: rangeStyle, children: range }), _jsx(Button, { variant: "minimal", icon: "download", tooltipProps: { content: 'Download this spectrum as a JCAMP-DX file' }, "aria-label": "Download this spectrum", onClick: onDownload }), _jsx(Button, { variant: "minimal", icon: "cross", intent: "danger", tooltipProps: { content: 'Close this spectrum' }, "aria-label": "Close this spectrum", onClick: onRemove })] }));
16
15
  }
17
16
  const rowStyle = {
@@ -1 +1 @@
1
- {"version":3,"file":"SpectrumRow.js","sourceRoot":"","sources":["../../../src/ir/ui/SpectrumRow.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpectrumRow.js","sourceRoot":"","sources":["../../../src/ir/ui/SpectrumRow.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { Ref } from 'react';
2
+ import type { IrEditorHandle, IrPlotClick } from '../core/irEditorApi.ts';
3
+ import type { IrPanelId } from '../core/irSidePanels.ts';
4
+ import type { IrMode, IrSpectrum } from '../core/irSpectrum.ts';
5
+ import type { IrTechnique } from '../core/irTechnique.ts';
6
+ import type { IrHostPanel } from './irHostPanels.ts';
7
+ export interface VibrationalEditorProps {
8
+ /**
9
+ * What the spectra were measured with. Read when the viewer opens and fixed
10
+ * from then on: it decides the value axes, the direction and name of the
11
+ * wavenumber axis, and whether the correlation table is asked about a band.
12
+ */
13
+ technique: IrTechnique;
14
+ /**
15
+ * The spectra to open on. Read when the viewer opens and never again.
16
+ * @default []
17
+ */
18
+ data?: IrSpectrum[];
19
+ /**
20
+ * Called whenever the spectra open change, with the spectra now open.
21
+ * @default undefined
22
+ */
23
+ onChange?: (spectra: IrSpectrum[]) => void;
24
+ /**
25
+ * Which value axis to open in; one the technique does not offer opens its
26
+ * first instead.
27
+ * @default the technique's first
28
+ */
29
+ mode?: IrMode;
30
+ /**
31
+ * The side panels open to begin with, the viewer's own or the host's. An id
32
+ * no panel answers to is ignored.
33
+ * @default DEFAULT_SIDE_PANELS
34
+ */
35
+ defaultPanelIds?: readonly IrPanelId[];
36
+ /**
37
+ * Panels the host adds to the viewer's own: their icons come first in the
38
+ * activity bar, in the order given, and each behaves as a built-in panel does.
39
+ * @default []
40
+ */
41
+ panels?: readonly IrHostPanel[];
42
+ /**
43
+ * The plot was clicked at this wavenumber (a press that did not travel, i.e.
44
+ * not a zoom drag), with the spectrum selected at that moment.
45
+ * @default undefined
46
+ */
47
+ onPlotClick?: (click: IrPlotClick) => void;
48
+ /**
49
+ * The handle a host drives the viewer through.
50
+ * @default undefined
51
+ */
52
+ ref?: Ref<IrEditorHandle>;
53
+ }
54
+ /**
55
+ * The viewer `IrEditor` and `RamanEditor` both are: one shell, one set of
56
+ * panels and gestures, with what differs between the techniques read from
57
+ * `IR_TECHNIQUE_RULES` rather than written into either.
58
+ * @param props - Component props.
59
+ * @returns The viewer.
60
+ */
61
+ export declare function VibrationalEditor(props: VibrationalEditorProps): import("react").JSX.Element;
62
+ //# sourceMappingURL=VibrationalEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VibrationalEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/VibrationalEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAI1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,SAAS,EAAE,WAAW,CAAC;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,eAAe,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C;;;OAGG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,+BA+B9D"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { RootLayout } from 'react-science/ui';
3
+ import { IrShell } from "./IrShell.js";
4
+ import { IrStateProvider } from "./IrStateProvider.js";
5
+ import { useIrEditor } from "./useIrEditor.js";
6
+ /**
7
+ * The viewer `IrEditor` and `RamanEditor` both are: one shell, one set of
8
+ * panels and gestures, with what differs between the techniques read from
9
+ * `IR_TECHNIQUE_RULES` rather than written into either.
10
+ * @param props - Component props.
11
+ * @returns The viewer.
12
+ */
13
+ export function VibrationalEditor(props) {
14
+ const { technique, data = NO_SPECTRA, onChange, mode, defaultPanelIds, panels = NO_PANELS, onPlotClick, ref, } = props;
15
+ const editor = useIrEditor({
16
+ spectra: data,
17
+ settings: { technique, ...(mode === undefined ? {} : { mode }) },
18
+ panelIds: defaultPanelIds,
19
+ onChange,
20
+ });
21
+ return (_jsx(IrStateProvider, { editor: editor, children: _jsx(RootLayout, { style: rootLayoutStyle, children: _jsx(IrShell, { handle: ref, panels: panels, onPlotClick: onPlotClick }) }) }));
22
+ }
23
+ /**
24
+ * The viewer fills what it is given, and its own children scroll rather than
25
+ * push: `react-science` lays its root out as a column of full width and height,
26
+ * and a flex column with no `minHeight` grows past its parent instead.
27
+ */
28
+ const rootLayoutStyle = { minHeight: 0 };
29
+ /** What a viewer opens on when it is handed nothing, kept stable for the memo. */
30
+ const NO_SPECTRA = [];
31
+ /** What a viewer the host adds no panel to offers, kept stable for the memo. */
32
+ const NO_PANELS = [];
33
+ //# sourceMappingURL=VibrationalEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VibrationalEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/VibrationalEditor.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAO9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAkD/C;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EACJ,SAAS,EACT,IAAI,GAAG,UAAU,EACjB,QAAQ,EACR,IAAI,EACJ,eAAe,EACf,MAAM,GAAG,SAAS,EAClB,WAAW,EACX,GAAG,GACJ,GAAG,KAAK,CAAC;IAEV,MAAM,MAAM,GAAG,WAAW,CAAC;QACzB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;QAChE,QAAQ,EAAE,eAAe;QACzB,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,eAAe,IAAC,MAAM,EAAE,MAAM,YAM7B,KAAC,UAAU,IAAC,KAAK,EAAE,eAAe,YAChC,KAAC,OAAO,IAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAI,GACvD,GACG,CACnB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,eAAe,GAAG,EAAE,SAAS,EAAE,CAAC,EAAW,CAAC;AAElD,kFAAkF;AAClF,MAAM,UAAU,GAAiB,EAAE,CAAC;AAEpC,gFAAgF;AAChF,MAAM,SAAS,GAA2B,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The band table as text, for pasting into a notebook.
3
+ */
4
+ import type { AssignedBand } from '../core/assignBands.ts';
5
+ import type { IrMode } from '../core/irSpectrum.ts';
6
+ /**
7
+ * The table as tab separated text.
8
+ *
9
+ * Every candidate is on its band's row, because the reason to copy a band table
10
+ * is to put it beside a structure and argue about it — and the argument is over
11
+ * the candidates rather than over the wavenumbers. A technique the correlation
12
+ * table does not cover has no such column.
13
+ * @param rows - The bands, as they are shown.
14
+ * @param mode - Which value axis is being read.
15
+ * @param assignments - Whether the table has a column for the candidates.
16
+ * @returns The table, one line per band, with a heading.
17
+ */
18
+ export declare function bandsToTsv(rows: readonly AssignedBand[], mode: IrMode, assignments: boolean): string;
19
+ //# sourceMappingURL=bandsTsv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bandsTsv.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/bandsTsv.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,SAAS,YAAY,EAAE,EAC7B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,GACnB,MAAM,CAoBR"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * The band table as text, for pasting into a notebook.
3
+ */
4
+ import { bandValue } from "../core/irBand.js";
5
+ import { formatIrValue, formatWavenumber } from "../core/irFormat.js";
6
+ /**
7
+ * The table as tab separated text.
8
+ *
9
+ * Every candidate is on its band's row, because the reason to copy a band table
10
+ * is to put it beside a structure and argue about it — and the argument is over
11
+ * the candidates rather than over the wavenumbers. A technique the correlation
12
+ * table does not cover has no such column.
13
+ * @param rows - The bands, as they are shown.
14
+ * @param mode - Which value axis is being read.
15
+ * @param assignments - Whether the table has a column for the candidates.
16
+ * @returns The table, one line per band, with a heading.
17
+ */
18
+ export function bandsToTsv(rows, mode, assignments) {
19
+ const heading = ['wavenumber', 'strength', mode];
20
+ if (assignments)
21
+ heading.push('could be');
22
+ const lines = [heading.join('\t')];
23
+ for (const { band, candidates } of rows) {
24
+ const cells = [
25
+ formatWavenumber(band.wavenumber),
26
+ band.strength,
27
+ formatIrValue(bandValue(band, mode) ?? Number.NaN, mode),
28
+ ];
29
+ if (assignments) {
30
+ cells.push(candidates
31
+ .map((candidate) => `${candidate.group} ${candidate.vibration}`)
32
+ .join('; '));
33
+ }
34
+ lines.push(cells.join('\t'));
35
+ }
36
+ return lines.join('\n');
37
+ }
38
+ //# sourceMappingURL=bandsTsv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bandsTsv.js","sourceRoot":"","sources":["../../../src/ir/ui/bandsTsv.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGtE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CACxB,IAA6B,EAC7B,IAAY,EACZ,WAAoB;IAEpB,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,WAAW;QAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,KAAK,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG;YACZ,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;YACjC,IAAI,CAAC,QAAQ;YACb,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC;SACzD,CAAC;QACF,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CACR,UAAU;iBACP,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;iBAC/D,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -46,6 +46,7 @@ export { createIrActions } from './irActions.ts';
46
46
  export type { IrChartProps } from './irChartProps.ts';
47
47
  export type { IrCommandContextValue } from './irCommandContext.tsx';
48
48
  export { useIrCommand, useIrCommandProps } from './irCommandContext.tsx';
49
+ export type { IrHostPanel } from './irHostPanels.ts';
49
50
  export { useIrActions, useIrEditorState } from './irStateContext.ts';
50
51
  export type { IrEditorApi, UseIrEditorOptions } from './useIrEditor.ts';
51
52
  export { useIrEditor } from './useIrEditor.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ir/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAe,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA6B,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAc,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAwB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ir/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAe,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA6B,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAc,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAwB,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import type { Dispatch } from 'react';
9
9
  import type { IrAction } from '../core/irReducer.ts';
10
- import type { IrSidePanelId } from '../core/irSidePanels.ts';
10
+ import type { IrPanelId } from '../core/irSidePanels.ts';
11
11
  import type { IrDomain, IrSpectrum } from '../core/irSpectrum.ts';
12
12
  import type { IrSettings, IrTool, PartialIrState } from '../core/irState.ts';
13
13
  /** Everything the viewer can be asked to do. */
@@ -32,8 +32,8 @@ export interface IrEditorActions {
32
32
  resetDomain: () => void;
33
33
  /** Run this tool on the next drag. */
34
34
  setTool: (tool: IrTool) => void;
35
- /** Open or close a side panel. */
36
- togglePanel: (panelId: IrSidePanelId) => void;
35
+ /** Open or close a side panel, the viewer's own or one a host added. */
36
+ togglePanel: (panelId: IrPanelId) => void;
37
37
  /** Say why something was refused, or that nothing is wrong any more. */
38
38
  setError: (error: string | null) => void;
39
39
  /** Change how the spectra are drawn and read. */
@@ -1 +1 @@
1
- {"version":3,"file":"irActions.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/irActions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7E,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,UAAU,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC5C,wEAAwE;IACxE,UAAU,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC5C,iBAAiB;IACjB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,+BAA+B;IAC/B,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,kCAAkC;IAClC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,oCAAoC;IACpC,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,2CAA2C;IAC3C,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,wBAAwB;IACxB,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;IACtC,4BAA4B;IAC5B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,sCAAsC;IACtC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,kCAAkC;IAClC,WAAW,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,wEAAwE;IACxE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,iDAAiD;IACjD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACrD,+DAA+D;IAC/D,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,gEAAgE;IAChE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,eAAe,CAgD7E"}
1
+ {"version":3,"file":"irActions.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/irActions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7E,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,UAAU,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC5C,wEAAwE;IACxE,UAAU,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC5C,iBAAiB;IACjB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,+BAA+B;IAC/B,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,kCAAkC;IAClC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,oCAAoC;IACpC,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,2CAA2C;IAC3C,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,wBAAwB;IACxB,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;IACtC,4BAA4B;IAC5B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,sCAAsC;IACtC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,wEAAwE;IACxE,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,wEAAwE;IACxE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,iDAAiD;IACjD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACrD,+DAA+D;IAC/D,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,gEAAgE;IAChE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,eAAe,CAgD7E"}
@@ -7,24 +7,34 @@
7
7
  * of half a dozen layers nobody needs to read in order to mount one.
8
8
  *
9
9
  * Everything arrives as a prop and nothing is reached for: the chart reads no
10
- * context and no store, so the same component serves an editor, a report page
11
- * that only ever draws one spectrum, and a test.
10
+ * store and no context but the language the page is written in, so the same
11
+ * component serves an editor, a report page that only ever draws one spectrum,
12
+ * and a test.
12
13
  */
13
14
  import type { ReactNode } from 'react';
14
15
  import type { ZoomDragMode } from '../../chart/core/chartDomain.ts';
15
16
  import type { AssignedBand } from '../core/assignBands.ts';
16
17
  import type { IrBand } from '../core/irBand.ts';
17
18
  import type { IrDomain, IrMode, IrSpectrum } from '../core/irSpectrum.ts';
19
+ import type { IrTechnique } from '../core/irTechnique.ts';
18
20
  export interface IrChartProps {
19
21
  /** The spectra to draw, each saying in itself whether it is drawn. */
20
22
  spectra: readonly IrSpectrum[];
21
23
  /**
22
- * Which value axis to draw them in.
24
+ * What the spectra were measured with, which names the wavenumber axis and
25
+ * decides which way it runs: high to low for infrared, low to high for Raman.
26
+ * @default 'infrared'
27
+ */
28
+ technique?: IrTechnique;
29
+ /**
30
+ * Which value axis to draw them in. One the technique does not offer draws
31
+ * its first instead.
23
32
  *
24
33
  * A prop rather than state, so the switch lives with whoever owns the toolbar
25
34
  * that flips it — and so two charts of the same spectra can be shown side by
26
35
  * side, one in each, which is the clearest way to see what the pair means.
27
- * @default 'transmittance'
36
+ * @default the technique's first: `'transmittance'` for infrared,
37
+ * `'intensity'` for Raman
28
38
  */
29
39
  mode?: IrMode;
30
40
  /**
@@ -81,6 +91,13 @@ export interface IrChartProps {
81
91
  * @default undefined
82
92
  */
83
93
  onDomainChange?: (domain: IrDomain) => void;
94
+ /**
95
+ * Told the wavenumber a click on the plot landed at: a press let go over the
96
+ * plot without travelling. The end of a drag is never one, nor is a press let
97
+ * go over the axis labels, which inverts to a value the chart is not drawing.
98
+ * @default undefined
99
+ */
100
+ onPlotClick?: (wavenumber: number) => void;
84
101
  /**
85
102
  * What a drag across the plot asks for: the wavenumber axis alone, or exactly
86
103
  * the rectangle it sweeps out. A viewer offering a square-zoom tool switches
@@ -1 +1 @@
1
- {"version":3,"file":"irChartProps.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/irChartProps.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,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE1E,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5C;;;;;OAKG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
1
+ {"version":3,"file":"irChartProps.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/irChartProps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C;;;;;OAKG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
@@ -7,8 +7,9 @@
7
7
  * of half a dozen layers nobody needs to read in order to mount one.
8
8
  *
9
9
  * Everything arrives as a prop and nothing is reached for: the chart reads no
10
- * context and no store, so the same component serves an editor, a report page
11
- * that only ever draws one spectrum, and a test.
10
+ * store and no context but the language the page is written in, so the same
11
+ * component serves an editor, a report page that only ever draws one spectrum,
12
+ * and a test.
12
13
  */
13
14
  export {};
14
15
  //# sourceMappingURL=irChartProps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"irChartProps.js","sourceRoot":"","sources":["../../../src/ir/ui/irChartProps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
1
+ {"version":3,"file":"irChartProps.js","sourceRoot":"","sources":["../../../src/ir/ui/irChartProps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -5,10 +5,13 @@
5
5
  * `irCommands.ts` for why the four files are split the way they are.
6
6
  */
7
7
  import type { IrCommandHandlers, IrCommandId, RunIrCommand } from '../core/irCommands.ts';
8
+ import type { IrTechnique } from '../core/irTechnique.ts';
8
9
  /** What the provider holds. */
9
10
  export interface IrCommandContextValue {
10
11
  /** What each command does. */
11
12
  handlers: IrCommandHandlers;
13
+ /** What the spectra were measured with, which words the commands. */
14
+ technique: IrTechnique;
12
15
  /** Run one. */
13
16
  run: RunIrCommand;
14
17
  }
@@ -19,6 +22,11 @@ export declare const commandContext: import("react").Context<IrCommandContextVal
19
22
  * @returns The runner; a command nothing handles does nothing.
20
23
  */
21
24
  export declare function useIrCommand(): RunIrCommand;
25
+ /**
26
+ * What the spectra were measured with, from anywhere inside the viewer.
27
+ * @returns The technique; infrared outside a provider.
28
+ */
29
+ export declare function useIrCommandTechnique(): IrTechnique;
22
30
  /**
23
31
  * Everything a toolbar item needs to be one command, in one spread.
24
32
  *
@@ -1 +1 @@
1
- {"version":3,"file":"irCommandContext.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/irCommandContext.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACb,MAAM,uBAAuB,CAAC;AAK/B,+BAA+B;AAC/B,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,eAAe;IACf,GAAG,EAAE,YAAY,CAAC;CACnB;AAED,kCAAkC;AAClC,eAAO,MAAM,cAAc,uDAAoD,CAAC;AAEhF;;;GAGG;AACH,wBAAgB,YAAY,IAAI,YAAY,CAG3C;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,KAEP,IAAI,WAAW;;;;EAOxC"}
1
+ {"version":3,"file":"irCommandContext.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/irCommandContext.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAK1D,+BAA+B;AAC/B,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,qEAAqE;IACrE,SAAS,EAAE,WAAW,CAAC;IACvB,eAAe;IACf,GAAG,EAAE,YAAY,CAAC;CACnB;AAED,kCAAkC;AAClC,eAAO,MAAM,cAAc,uDAAoD,CAAC;AAEhF;;;GAGG;AACH,wBAAgB,YAAY,IAAI,YAAY,CAG3C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CAEnD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,KAIP,IAAI,WAAW;;;;EAQxC"}
@@ -6,8 +6,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
6
6
  * `irCommands.ts` for why the four files are split the way they are.
7
7
  */
8
8
  import { createContext, useContext } from 'react';
9
- import { irCommandLabel } from "../core/irCommands.js";
9
+ import { irCommandEntryLabel, irCommands } from "../core/irCommands.js";
10
10
  import { IrCommandTooltip } from "./IrCommandTooltip.js";
11
+ import { useIrText } from "./useIrText.js";
11
12
  /** Where the provider puts it. */
12
13
  export const commandContext = createContext(null);
13
14
  /**
@@ -18,6 +19,13 @@ export function useIrCommand() {
18
19
  const value = useContext(commandContext);
19
20
  return value?.run ?? noRun;
20
21
  }
22
+ /**
23
+ * What the spectra were measured with, from anywhere inside the viewer.
24
+ * @returns The technique; infrared outside a provider.
25
+ */
26
+ export function useIrCommandTechnique() {
27
+ return useContext(commandContext)?.technique ?? 'infrared';
28
+ }
21
29
  /**
22
30
  * Everything a toolbar item needs to be one command, in one spread.
23
31
  *
@@ -28,10 +36,13 @@ export function useIrCommand() {
28
36
  */
29
37
  export function useIrCommandProps() {
30
38
  const run = useIrCommand();
39
+ const technique = useIrCommandTechnique();
40
+ const text = useIrText(technique);
31
41
  return function command(id) {
42
+ const entry = text.command(id) ?? irCommands[id];
32
43
  return {
33
- tooltip: _jsx(IrCommandTooltip, { id: id }),
34
- 'aria-label': irCommandLabel(id),
44
+ tooltip: _jsx(IrCommandTooltip, { id: id, technique: technique }),
45
+ 'aria-label': irCommandEntryLabel(entry),
35
46
  onClick: () => run(id),
36
47
  };
37
48
  };
@@ -1 +1 @@
1
- {"version":3,"file":"irCommandContext.js","sourceRoot":"","sources":["../../../src/ir/ui/irCommandContext.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAOlD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAU1D,kCAAkC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAA+B,IAAI,CAAC,CAAC;AAEhF;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACzC,OAAO,KAAK,EAAE,GAAG,IAAI,KAAK,CAAC;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,OAAO,SAAS,OAAO,CAAC,EAAe;QACrC,OAAO;YACL,OAAO,EAAE,KAAC,gBAAgB,IAAC,EAAE,EAAE,EAAE,GAAI;YACrC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;YAChC,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"}
1
+ {"version":3,"file":"irCommandContext.js","sourceRoot":"","sources":["../../../src/ir/ui/irCommandContext.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAOlD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAY3C,kCAAkC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAA+B,IAAI,CAAC,CAAC;AAEhF;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACzC,OAAO,KAAK,EAAE,GAAG,IAAI,KAAK,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,UAAU,CAAC,cAAc,CAAC,EAAE,SAAS,IAAI,UAAU,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,OAAO,SAAS,OAAO,CAAC,EAAe;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,KAAC,gBAAgB,IAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,GAAI;YAC3D,YAAY,EAAE,mBAAmB,CAAC,KAAK,CAAC;YACxC,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"}