react-cheminfo 0.65.0 → 0.66.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 (237) hide show
  1. package/README.md +11 -6
  2. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  3. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  4. package/lib/ir/core/analysisSpectra.d.ts +23 -6
  5. package/lib/ir/core/analysisSpectra.d.ts.map +1 -1
  6. package/lib/ir/core/analysisSpectra.js.map +1 -1
  7. package/lib/ir/core/bandLabelPlan.d.ts.map +1 -1
  8. package/lib/ir/core/bandLabelPlan.js +11 -6
  9. package/lib/ir/core/bandLabelPlan.js.map +1 -1
  10. package/lib/ir/core/index.d.ts +13 -9
  11. package/lib/ir/core/index.d.ts.map +1 -1
  12. package/lib/ir/core/index.js +9 -6
  13. package/lib/ir/core/index.js.map +1 -1
  14. package/lib/ir/core/irBand.d.ts +45 -14
  15. package/lib/ir/core/irBand.d.ts.map +1 -1
  16. package/lib/ir/core/irBand.js +28 -6
  17. package/lib/ir/core/irBand.js.map +1 -1
  18. package/lib/ir/core/irCommands.d.ts +11 -0
  19. package/lib/ir/core/irCommands.d.ts.map +1 -1
  20. package/lib/ir/core/irCommands.js +11 -1
  21. package/lib/ir/core/irCommands.js.map +1 -1
  22. package/lib/ir/core/irDomain.d.ts +4 -3
  23. package/lib/ir/core/irDomain.d.ts.map +1 -1
  24. package/lib/ir/core/irDomain.js +10 -7
  25. package/lib/ir/core/irDomain.js.map +1 -1
  26. package/lib/ir/core/irFormat.d.ts +14 -2
  27. package/lib/ir/core/irFormat.d.ts.map +1 -1
  28. package/lib/ir/core/irFormat.js +33 -4
  29. package/lib/ir/core/irFormat.js.map +1 -1
  30. package/lib/ir/core/irMode.d.ts +35 -8
  31. package/lib/ir/core/irMode.d.ts.map +1 -1
  32. package/lib/ir/core/irMode.js +38 -10
  33. package/lib/ir/core/irMode.js.map +1 -1
  34. package/lib/ir/core/irReducer.d.ts +0 -28
  35. package/lib/ir/core/irReducer.d.ts.map +1 -1
  36. package/lib/ir/core/irReducer.js +1 -24
  37. package/lib/ir/core/irReducer.js.map +1 -1
  38. package/lib/ir/core/irSpectrum.d.ts +52 -26
  39. package/lib/ir/core/irSpectrum.d.ts.map +1 -1
  40. package/lib/ir/core/irSpectrum.js +21 -15
  41. package/lib/ir/core/irSpectrum.js.map +1 -1
  42. package/lib/ir/core/irState.d.ts +40 -2
  43. package/lib/ir/core/irState.d.ts.map +1 -1
  44. package/lib/ir/core/irState.js +38 -1
  45. package/lib/ir/core/irState.js.map +1 -1
  46. package/lib/ir/core/irTechnique.d.ts +94 -0
  47. package/lib/ir/core/irTechnique.d.ts.map +1 -0
  48. package/lib/ir/core/irTechnique.js +87 -0
  49. package/lib/ir/core/irTechnique.js.map +1 -0
  50. package/lib/ir/core/irTechniqueCommands.d.ts +26 -0
  51. package/lib/ir/core/irTechniqueCommands.d.ts.map +1 -0
  52. package/lib/ir/core/irTechniqueCommands.js +68 -0
  53. package/lib/ir/core/irTechniqueCommands.js.map +1 -0
  54. package/lib/ir/core/pickBands.d.ts +6 -5
  55. package/lib/ir/core/pickBands.d.ts.map +1 -1
  56. package/lib/ir/core/pickBands.js +49 -26
  57. package/lib/ir/core/pickBands.js.map +1 -1
  58. package/lib/ir/core/ramanBands.d.ts +30 -0
  59. package/lib/ir/core/ramanBands.d.ts.map +1 -0
  60. package/lib/ir/core/ramanBands.js +83 -0
  61. package/lib/ir/core/ramanBands.js.map +1 -0
  62. package/lib/ir/core/spectrumJcamp.d.ts +10 -5
  63. package/lib/ir/core/spectrumJcamp.d.ts.map +1 -1
  64. package/lib/ir/core/spectrumJcamp.js +63 -15
  65. package/lib/ir/core/spectrumJcamp.js.map +1 -1
  66. package/lib/ir/core/toIrSpectrum.d.ts.map +1 -1
  67. package/lib/ir/core/toIrSpectrum.js +17 -2
  68. package/lib/ir/core/toIrSpectrum.js.map +1 -1
  69. package/lib/ir/ui/BandRow.d.ts +30 -0
  70. package/lib/ir/ui/BandRow.d.ts.map +1 -0
  71. package/lib/ir/ui/BandRow.js +42 -0
  72. package/lib/ir/ui/BandRow.js.map +1 -0
  73. package/lib/ir/ui/BandsPanel.d.ts +4 -0
  74. package/lib/ir/ui/BandsPanel.d.ts.map +1 -1
  75. package/lib/ir/ui/BandsPanel.js +14 -59
  76. package/lib/ir/ui/BandsPanel.js.map +1 -1
  77. package/lib/ir/ui/IrAboutDialog.d.ts +7 -0
  78. package/lib/ir/ui/IrAboutDialog.d.ts.map +1 -1
  79. package/lib/ir/ui/IrAboutDialog.js +16 -3
  80. package/lib/ir/ui/IrAboutDialog.js.map +1 -1
  81. package/lib/ir/ui/IrCanvas.d.ts.map +1 -1
  82. package/lib/ir/ui/IrCanvas.js +2 -2
  83. package/lib/ir/ui/IrCanvas.js.map +1 -1
  84. package/lib/ir/ui/IrChart.d.ts +2 -1
  85. package/lib/ir/ui/IrChart.d.ts.map +1 -1
  86. package/lib/ir/ui/IrChart.js +18 -21
  87. package/lib/ir/ui/IrChart.js.map +1 -1
  88. package/lib/ir/ui/IrCommandProvider.d.ts +7 -0
  89. package/lib/ir/ui/IrCommandProvider.d.ts.map +1 -1
  90. package/lib/ir/ui/IrCommandProvider.js +2 -2
  91. package/lib/ir/ui/IrCommandProvider.js.map +1 -1
  92. package/lib/ir/ui/IrCommandTooltip.d.ts +7 -0
  93. package/lib/ir/ui/IrCommandTooltip.d.ts.map +1 -1
  94. package/lib/ir/ui/IrCommandTooltip.js +3 -2
  95. package/lib/ir/ui/IrCommandTooltip.js.map +1 -1
  96. package/lib/ir/ui/IrDocumentationDialog.d.ts +8 -1
  97. package/lib/ir/ui/IrDocumentationDialog.d.ts.map +1 -1
  98. package/lib/ir/ui/IrDocumentationDialog.js +30 -7
  99. package/lib/ir/ui/IrDocumentationDialog.js.map +1 -1
  100. package/lib/ir/ui/IrEditor.d.ts +3 -1
  101. package/lib/ir/ui/IrEditor.d.ts.map +1 -1
  102. package/lib/ir/ui/IrEditor.js +3 -20
  103. package/lib/ir/ui/IrEditor.js.map +1 -1
  104. package/lib/ir/ui/IrHeader.d.ts.map +1 -1
  105. package/lib/ir/ui/IrHeader.js +5 -1
  106. package/lib/ir/ui/IrHeader.js.map +1 -1
  107. package/lib/ir/ui/IrLogo.d.ts +11 -3
  108. package/lib/ir/ui/IrLogo.d.ts.map +1 -1
  109. package/lib/ir/ui/IrLogo.js +14 -5
  110. package/lib/ir/ui/IrLogo.js.map +1 -1
  111. package/lib/ir/ui/IrShell.d.ts.map +1 -1
  112. package/lib/ir/ui/IrShell.js +23 -56
  113. package/lib/ir/ui/IrShell.js.map +1 -1
  114. package/lib/ir/ui/IrStatusBar.d.ts +3 -2
  115. package/lib/ir/ui/IrStatusBar.d.ts.map +1 -1
  116. package/lib/ir/ui/IrStatusBar.js +14 -9
  117. package/lib/ir/ui/IrStatusBar.js.map +1 -1
  118. package/lib/ir/ui/IrToolbar.d.ts +3 -0
  119. package/lib/ir/ui/IrToolbar.d.ts.map +1 -1
  120. package/lib/ir/ui/IrToolbar.js +10 -3
  121. package/lib/ir/ui/IrToolbar.js.map +1 -1
  122. package/lib/ir/ui/IrTraces.d.ts +4 -1
  123. package/lib/ir/ui/IrTraces.d.ts.map +1 -1
  124. package/lib/ir/ui/IrTraces.js +2 -0
  125. package/lib/ir/ui/IrTraces.js.map +1 -1
  126. package/lib/ir/ui/RamanEditor.d.ts +46 -0
  127. package/lib/ir/ui/RamanEditor.d.ts.map +1 -0
  128. package/lib/ir/ui/RamanEditor.js +17 -0
  129. package/lib/ir/ui/RamanEditor.js.map +1 -0
  130. package/lib/ir/ui/SpectraPanel.d.ts.map +1 -1
  131. package/lib/ir/ui/SpectraPanel.js +2 -2
  132. package/lib/ir/ui/SpectraPanel.js.map +1 -1
  133. package/lib/ir/ui/SpectrumRow.d.ts +7 -0
  134. package/lib/ir/ui/SpectrumRow.d.ts.map +1 -1
  135. package/lib/ir/ui/SpectrumRow.js +4 -5
  136. package/lib/ir/ui/SpectrumRow.js.map +1 -1
  137. package/lib/ir/ui/VibrationalEditor.d.ts +48 -0
  138. package/lib/ir/ui/VibrationalEditor.d.ts.map +1 -0
  139. package/lib/ir/ui/VibrationalEditor.js +31 -0
  140. package/lib/ir/ui/VibrationalEditor.js.map +1 -0
  141. package/lib/ir/ui/bandsTsv.d.ts +19 -0
  142. package/lib/ir/ui/bandsTsv.d.ts.map +1 -0
  143. package/lib/ir/ui/bandsTsv.js +38 -0
  144. package/lib/ir/ui/bandsTsv.js.map +1 -0
  145. package/lib/ir/ui/irChartProps.d.ts +14 -4
  146. package/lib/ir/ui/irChartProps.d.ts.map +1 -1
  147. package/lib/ir/ui/irChartProps.js +3 -2
  148. package/lib/ir/ui/irChartProps.js.map +1 -1
  149. package/lib/ir/ui/irCommandContext.d.ts +8 -0
  150. package/lib/ir/ui/irCommandContext.d.ts.map +1 -1
  151. package/lib/ir/ui/irCommandContext.js +14 -3
  152. package/lib/ir/ui/irCommandContext.js.map +1 -1
  153. package/lib/ir/ui/useIrEditor.d.ts +3 -3
  154. package/lib/ir/ui/useIrEditor.d.ts.map +1 -1
  155. package/lib/ir/ui/useIrEditor.js +13 -4
  156. package/lib/ir/ui/useIrEditor.js.map +1 -1
  157. package/lib/ir/ui/useIrHandle.d.ts +14 -0
  158. package/lib/ir/ui/useIrHandle.d.ts.map +1 -0
  159. package/lib/ir/ui/useIrHandle.js +39 -0
  160. package/lib/ir/ui/useIrHandle.js.map +1 -0
  161. package/lib/ir/ui/useIrText.d.ts +40 -0
  162. package/lib/ir/ui/useIrText.d.ts.map +1 -0
  163. package/lib/ir/ui/useIrText.js +118 -0
  164. package/lib/ir/ui/useIrText.js.map +1 -0
  165. package/lib/ir/ui/useIrZoom.d.ts +7 -0
  166. package/lib/ir/ui/useIrZoom.d.ts.map +1 -1
  167. package/lib/ir/ui/useIrZoom.js +5 -4
  168. package/lib/ir/ui/useIrZoom.js.map +1 -1
  169. package/lib/ir/ui/useValueAxisZoom.d.ts +20 -0
  170. package/lib/ir/ui/useValueAxisZoom.d.ts.map +1 -0
  171. package/lib/ir/ui/useValueAxisZoom.js +54 -0
  172. package/lib/ir/ui/useValueAxisZoom.js.map +1 -0
  173. package/lib/ir.d.ts +3 -0
  174. package/lib/ir.d.ts.map +1 -1
  175. package/lib/ir.js +3 -0
  176. package/lib/ir.js.map +1 -1
  177. package/lib/locales/de.json +20 -1
  178. package/lib/locales/en.json +20 -1
  179. package/lib/locales/es.json +20 -1
  180. package/lib/locales/fr.json +20 -1
  181. package/lib/locales/it.json +20 -1
  182. package/lib/raman.d.ts +16 -0
  183. package/lib/raman.d.ts.map +1 -0
  184. package/lib/raman.js +12 -0
  185. package/lib/raman.js.map +1 -0
  186. package/package.json +2 -1
  187. package/src/ir/core/analysisSpectra.ts +26 -10
  188. package/src/ir/core/bandLabelPlan.ts +21 -10
  189. package/src/ir/core/index.ts +25 -5
  190. package/src/ir/core/irBand.ts +52 -14
  191. package/src/ir/core/irCommands.ts +15 -1
  192. package/src/ir/core/irDomain.ts +9 -7
  193. package/src/ir/core/irFormat.ts +39 -6
  194. package/src/ir/core/irMode.ts +42 -10
  195. package/src/ir/core/irReducer.ts +1 -49
  196. package/src/ir/core/irSpectrum.ts +59 -30
  197. package/src/ir/core/irState.ts +67 -2
  198. package/src/ir/core/irTechnique.ts +115 -0
  199. package/src/ir/core/irTechniqueCommands.ts +82 -0
  200. package/src/ir/core/pickBands.ts +63 -28
  201. package/src/ir/core/ramanBands.ts +105 -0
  202. package/src/ir/core/spectrumJcamp.ts +65 -16
  203. package/src/ir/core/toIrSpectrum.ts +20 -2
  204. package/src/ir/ui/BandRow.tsx +107 -0
  205. package/src/ir/ui/BandsPanel.tsx +32 -125
  206. package/src/ir/ui/IrAboutDialog.tsx +69 -28
  207. package/src/ir/ui/IrCanvas.tsx +2 -1
  208. package/src/ir/ui/IrChart.tsx +20 -24
  209. package/src/ir/ui/IrCommandProvider.tsx +10 -3
  210. package/src/ir/ui/IrCommandTooltip.tsx +11 -2
  211. package/src/ir/ui/IrDocumentationDialog.tsx +99 -55
  212. package/src/ir/ui/IrEditor.tsx +5 -36
  213. package/src/ir/ui/IrHeader.tsx +10 -3
  214. package/src/ir/ui/IrLogo.tsx +28 -9
  215. package/src/ir/ui/IrShell.tsx +27 -75
  216. package/src/ir/ui/IrStatusBar.tsx +17 -12
  217. package/src/ir/ui/IrToolbar.tsx +26 -15
  218. package/src/ir/ui/IrTraces.tsx +5 -1
  219. package/src/ir/ui/RamanEditor.tsx +53 -0
  220. package/src/ir/ui/SpectraPanel.tsx +2 -1
  221. package/src/ir/ui/SpectrumRow.tsx +14 -5
  222. package/src/ir/ui/VibrationalEditor.tsx +94 -0
  223. package/src/ir/ui/bandsTsv.ts +46 -0
  224. package/src/ir/ui/irChartProps.ts +14 -4
  225. package/src/ir/ui/irCommandContext.tsx +18 -3
  226. package/src/ir/ui/useIrEditor.ts +20 -8
  227. package/src/ir/ui/useIrHandle.ts +51 -0
  228. package/src/ir/ui/useIrText.ts +170 -0
  229. package/src/ir/ui/useIrZoom.ts +12 -3
  230. package/src/ir/ui/useValueAxisZoom.ts +67 -0
  231. package/src/ir.ts +3 -0
  232. package/src/locales/de.json +20 -1
  233. package/src/locales/en.json +20 -1
  234. package/src/locales/es.json +20 -1
  235. package/src/locales/fr.json +20 -1
  236. package/src/locales/it.json +20 -1
  237. package/src/raman.ts +19 -0
@@ -1 +1 @@
1
- {"version":3,"file":"IrDocumentationDialog.js","sourceRoot":"","sources":["../../../src/ir/ui/IrDocumentationDialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrDocumentationDialog.js","sourceRoot":"","sources":["../../../src/ir/ui/IrDocumentationDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAyB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAe3C;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACrE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAkB,CAAC;IAEnE,OAAO,CACL,KAAC,MAAM,IACL,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,IAAI,CAAC,aAAa,EACzB,IAAI,EAAE,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,GAAI,EAChD,KAAK,EAAE,WAAW,YAElB,MAAC,UAAU,eACR,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,KAAC,UAAU,KAAG,CAAC,CAAC,CAAC,KAAC,aAAa,KAAG,EAE3D,aAAI,KAAK,EAAE,YAAY,kCAAwB,EAC/C,gBAAO,KAAK,EAAE,UAAU,YACtB,0BACG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;4BACd,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;4BAC/B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClC,KAAC,UAAU,IAAU,KAAK,EAAE,KAAK,IAAhB,EAAE,CAAkB,CACtC,CAAC;wBACJ,CAAC,CAAC,GACI,GACF,IACG,GACN,CACV,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa;IACpB,OAAO,CACL,8BACE,aAAI,KAAK,EAAE,YAAY,mCAAyB,EAChD,aAAG,KAAK,EAAE,cAAc,2BACZ,kCAAiB,QAAE,iCAAgB,iCAC7C,kCAAiB,oQAIf,EAEJ,aAAI,KAAK,EAAE,YAAY,wCAA8B,EACrD,YAAG,KAAK,EAAE,cAAc,6NAIpB,EAEJ,aAAI,KAAK,EAAE,YAAY,4CAAkC,EACzD,aAAG,KAAK,EAAE,cAAc,0HAEU,GAAG,EACnC,2BAAS,aAAa,CAAC,aAAa,CAAC,KAAK,GAAU,uDACvB,GAAG,EAChC,2BAAS,aAAa,CAAC,UAAU,CAAC,KAAK,GAAU,iHAG/C,EAEJ,aAAI,KAAK,EAAE,YAAY,kCAAwB,EAC/C,aAAG,KAAK,EAAE,cAAc,kCACL,oCAAiB,mFACQ,GAAG,EAC7C,yEAA0D,qUAMxD,EACJ,YAAG,KAAK,EAAE,cAAc,kNAIpB,IACH,CACJ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU;IACjB,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,OAAO,CACL,8BACE,aAAI,KAAK,EAAE,YAAY,kCAAwB,EAC/C,YAAG,KAAK,EAAE,cAAc,YACtB,KAAC,KAAK,IAAC,IAAI,EAAE,CAAC,CAAC,oBAAoB,CAAC,GAAI,GACtC,EACJ,YAAG,KAAK,EAAE,cAAc,YAAG,CAAC,CAAC,sBAAsB,CAAC,GAAK,IACxD,CACJ,CAAC;AACJ,CAAC;AAOD;;;;GAIG;AACH,SAAS,UAAU,CAAC,KAAsB;IACxC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;IAE3D,OAAO,CACL,yBACE,aAAI,KAAK,EAAE,gBAAgB,YAAG,KAAK,CAAC,KAAK,GAAM,EAC/C,cAAI,KAAK,EAAE,YAAY,aACpB,IAAI,KAAK,SAAS;wBACjB,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAChB,cAAe,KAAK,EAAE,QAAQ,YAC3B,GAAG,IADI,GAAG,CAEP,CACP,CAAC,EACL,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAChC,eAA0B,KAAK,EAAE,YAAY,YAC1C,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IADpB,OAAO,CAAC,KAAK,CAEjB,CACR,CAAC,IACC,EACL,aAAI,KAAK,EAAE,oBAAoB,YAAG,KAAK,CAAC,WAAW,GAAM,IACtD,CACN,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAW,CAAC;AAE3D,MAAM,YAAY,GAAG,EAAE,MAAM,EAAE,YAAY,EAAW,CAAC;AAEvD,MAAM,cAAc,GAAG,EAAE,MAAM,EAAE,SAAS,EAAW,CAAC;AAEtD,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,MAAM;IACb,cAAc,EAAE,UAAU;IAC1B,QAAQ,EAAE,EAAE;CACJ,CAAC;AAEX,MAAM,gBAAgB,GAAG;IACvB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,GAAG;IACf,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,eAAe;IACxB,UAAU,EAAE,QAAQ;CACZ,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,eAAe;IACxB,UAAU,EAAE,QAAQ;CACZ,CAAC;AAEX,MAAM,oBAAoB,GAAG;IAC3B,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,OAAO;CACR,CAAC;AAEX,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,aAAa,KAAK,CAAC,MAAM,EAAE;IACnC,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,KAAK,CAAC,aAAa;IAC/B,QAAQ,EAAE,EAAE;CACJ,CAAC;AAEX,MAAM,YAAY,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAW,CAAC"}
@@ -22,7 +22,8 @@ export interface IrEditorProps {
22
22
  */
23
23
  onChange?: (spectra: IrSpectrum[]) => void;
24
24
  /**
25
- * Which value axis to open in.
25
+ * Which value axis to open in: transmittance or absorbance. Intensity, which
26
+ * infrared does not offer, opens transmittance instead.
26
27
  * @default 'transmittance'
27
28
  */
28
29
  mode?: IrMode;
@@ -41,6 +42,7 @@ export interface IrEditorProps {
41
42
  /**
42
43
  * An infrared spectrum viewer: a header across the top, the chart in the middle,
43
44
  * the tools down the left, and the panels that interrogate it down the right.
45
+ * `RamanEditor`, from `react-cheminfo/raman`, is the same viewer for Raman.
44
46
  *
45
47
  * The same shape as the mass viewer, deliberately — a page may well hold both,
46
48
  * and a chemist who has learned one should not have to learn the other. The chart
@@ -1 +1 @@
1
- {"version":3,"file":"IrEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMhE,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC3C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAClC;;;;OAIG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAsB5C"}
1
+ {"version":3,"file":"IrEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIhE,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAClC;;;;OAIG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAE5C"}
@@ -1,11 +1,9 @@
1
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";
2
+ import { VibrationalEditor } from "./VibrationalEditor.js";
6
3
  /**
7
4
  * An infrared spectrum viewer: a header across the top, the chart in the middle,
8
5
  * the tools down the left, and the panels that interrogate it down the right.
6
+ * `RamanEditor`, from `react-cheminfo/raman`, is the same viewer for Raman.
9
7
  *
10
8
  * The same shape as the mass viewer, deliberately — a page may well hold both,
11
9
  * and a chemist who has learned one should not have to learn the other. The chart
@@ -22,21 +20,6 @@ import { useIrEditor } from "./useIrEditor.js";
22
20
  * @returns The viewer.
23
21
  */
24
22
  export function IrEditor(props) {
25
- const { data = NO_SPECTRA, onChange, mode, defaultPanelIds, ref } = props;
26
- const editor = useIrEditor({
27
- spectra: data,
28
- settings: mode === undefined ? undefined : { mode },
29
- panelIds: defaultPanelIds,
30
- onChange,
31
- });
32
- return (_jsx(IrStateProvider, { editor: editor, children: _jsx(RootLayout, { style: rootLayoutStyle, children: _jsx(IrShell, { handle: ref }) }) }));
23
+ return _jsx(VibrationalEditor, { technique: "infrared", ...props });
33
24
  }
34
- /**
35
- * The viewer fills what it is given, and its own children scroll rather than
36
- * push: `react-science` lays its root out as a column of full width and height,
37
- * and a flex column with no `minHeight` grows past its parent instead.
38
- */
39
- const rootLayoutStyle = { minHeight: 0 };
40
- /** What a viewer opens on when it is handed nothing, kept stable for the memo. */
41
- const NO_SPECTRA = [];
42
25
  //# sourceMappingURL=IrEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IrEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/IrEditor.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuC/C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,IAAI,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IAE1E,MAAM,MAAM,GAAG,WAAW,CAAC;QACzB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;QACnD,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,GAAI,GACb,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"}
1
+ {"version":3,"file":"IrEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/IrEditor.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAwC5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,OAAO,KAAC,iBAAiB,IAAC,SAAS,EAAC,UAAU,KAAK,KAAK,GAAI,CAAC;AAC/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrHeader.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrHeader.tsx"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,gCAsBvB"}
1
+ {"version":3,"file":"IrHeader.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrHeader.tsx"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,gCA2BvB"}
@@ -2,6 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Header, Toolbar, useFullscreen } from 'react-science/ui';
3
3
  import { IrLogo } from "./IrLogo.js";
4
4
  import { useIrCommandProps } from "./irCommandContext.js";
5
+ import { useIrEditorState } from "./irStateContext.js";
6
+ import { useIrText } from "./useIrText.js";
5
7
  /**
6
8
  * The bar across the top: the mark on the left, the viewer on the right.
7
9
  *
@@ -16,6 +18,8 @@ import { useIrCommandProps } from "./irCommandContext.js";
16
18
  export function IrHeader() {
17
19
  const command = useIrCommandProps();
18
20
  const { isFullScreen } = useFullscreen();
19
- return (_jsxs(Header, { children: [_jsx(Toolbar, { "aria-label": "Infrared spectrum viewer", children: _jsx(Toolbar.Item, { icon: _jsx(IrLogo, { size: 16 }), ...command('about') }) }), _jsxs(Toolbar, { "aria-label": "Infrared spectrum viewer help", children: [_jsx(Toolbar.Item, { icon: "help", ...command('documentation') }), _jsx(Toolbar.Item, { icon: "fullscreen", active: isFullScreen, ...command('fullScreen') })] })] }));
21
+ const { technique } = useIrEditorState().state.settings;
22
+ const text = useIrText(technique);
23
+ return (_jsxs(Header, { children: [_jsx(Toolbar, { "aria-label": text.viewer, children: _jsx(Toolbar.Item, { icon: _jsx(IrLogo, { size: 16, technique: technique }), ...command('about') }) }), _jsxs(Toolbar, { "aria-label": text.viewerHelp, children: [_jsx(Toolbar.Item, { icon: "help", ...command('documentation') }), _jsx(Toolbar.Item, { icon: "fullscreen", active: isFullScreen, ...command('fullScreen') })] })] }));
20
24
  }
21
25
  //# sourceMappingURL=IrHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IrHeader.js","sourceRoot":"","sources":["../../../src/ir/ui/IrHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAc,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAwB,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC;IAEzC,OAAO,CACL,MAAC,MAAM,eACL,KAAC,OAAO,kBAAY,0BAA0B,YAC5C,KAAC,OAAO,CAAC,IAAI,IAAC,IAAI,EAAE,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,KAAM,OAAO,CAAC,OAAO,CAAC,GAAI,GAC1D,EACV,MAAC,OAAO,kBAAY,+BAA+B,aACjD,KAAC,OAAO,CAAC,IAAI,IAAC,IAAI,EAAC,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,GAAI,EAI1D,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,YAAY,EACjB,MAAM,EAAE,YAAY,KAChB,OAAO,CAAC,YAAY,CAAC,GACzB,IACM,IACH,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"IrHeader.js","sourceRoot":"","sources":["../../../src/ir/ui/IrHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAc,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC;IACzC,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;IACxD,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAElC,OAAO,CACL,MAAC,MAAM,eACL,KAAC,OAAO,kBAAa,IAAI,CAAC,MAAM,YAC9B,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAE,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,GAAI,KAC5C,OAAO,CAAC,OAAO,CAAC,GACpB,GACM,EACV,MAAC,OAAO,kBAAa,IAAI,CAAC,UAAU,aAClC,KAAC,OAAO,CAAC,IAAI,IAAC,IAAI,EAAC,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,GAAI,EAI1D,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,YAAY,EACjB,MAAM,EAAE,YAAY,KAChB,OAAO,CAAC,YAAY,CAAC,GACzB,IACM,IACH,CACV,CAAC;AACJ,CAAC"}
@@ -1,18 +1,26 @@
1
+ import type { IrTechnique } from '../core/irTechnique.ts';
1
2
  export interface IrLogoProps {
2
3
  /**
3
4
  * How big to draw it, in pixels.
4
5
  * @default 16
5
6
  */
6
7
  size?: number;
8
+ /**
9
+ * What the spectra were measured with, which decides which way the bands
10
+ * point.
11
+ * @default 'infrared'
12
+ */
13
+ technique?: IrTechnique;
7
14
  }
8
15
  /**
9
- * The viewer's mark: three bands hanging from a baseline.
16
+ * The viewer's mark: three bands meeting a baseline.
10
17
  *
11
18
  * Drawn from the domain's own primitives rather than being a picture of a chart —
12
19
  * a transmittance baseline near the top with a strong band, a medium one and a
13
20
  * weak one dropping out of it, which is what an infrared spectrum looks like at a
14
- * glance and what nothing else looks like. Three elements, because that is what
15
- * survives 16 pixels.
21
+ * glance and what nothing else looks like. A Raman spectrum's bands stand up from
22
+ * a baseline near the foot instead, so its mark is the same three bands rising.
23
+ * Three elements, because that is what survives 16 pixels.
16
24
  * @param props - Component props.
17
25
  * @returns The mark, as SVG.
18
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"IrLogo.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrLogo.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,+BA6BxC"}
1
+ {"version":3,"file":"IrLogo.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrLogo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAI1D,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,+BA+BxC"}
@@ -1,17 +1,26 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useIrText } from "./useIrText.js";
2
3
  /**
3
- * The viewer's mark: three bands hanging from a baseline.
4
+ * The viewer's mark: three bands meeting a baseline.
4
5
  *
5
6
  * Drawn from the domain's own primitives rather than being a picture of a chart —
6
7
  * a transmittance baseline near the top with a strong band, a medium one and a
7
8
  * weak one dropping out of it, which is what an infrared spectrum looks like at a
8
- * glance and what nothing else looks like. Three elements, because that is what
9
- * survives 16 pixels.
9
+ * glance and what nothing else looks like. A Raman spectrum's bands stand up from
10
+ * a baseline near the foot instead, so its mark is the same three bands rising.
11
+ * Three elements, because that is what survives 16 pixels.
10
12
  * @param props - Component props.
11
13
  * @returns The mark, as SVG.
12
14
  */
13
15
  export function IrLogo(props) {
14
- const { size = 16 } = props;
15
- return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 16 16", role: "img", "aria-label": "Infrared viewer", children: [_jsx("path", { d: "M1 3H15", fill: "none", stroke: "#94a3b8", strokeWidth: 1, strokeLinecap: "round" }), _jsx("path", { d: "M3 3V13M8 3V8.5M12.5 3V6", fill: "none", stroke: "#0072b2", strokeWidth: 2, strokeLinecap: "round" })] }));
16
+ const { size = 16, technique = 'infrared' } = props;
17
+ const { mark } = useIrText(technique);
18
+ const { baseline, bands } = MARKS[technique];
19
+ return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 16 16", role: "img", "aria-label": mark, children: [_jsx("path", { d: baseline, fill: "none", stroke: "#94a3b8", strokeWidth: 1, strokeLinecap: "round" }), _jsx("path", { d: bands, fill: "none", stroke: "#0072b2", strokeWidth: 2, strokeLinecap: "round" })] }));
16
20
  }
21
+ /** The two strokes of each technique's mark. */
22
+ const MARKS = {
23
+ infrared: { baseline: 'M1 3H15', bands: 'M3 3V13M8 3V8.5M12.5 3V6' },
24
+ raman: { baseline: 'M1 13H15', bands: 'M3 13V3M8 13V7.5M12.5 13V10' },
25
+ };
17
26
  //# sourceMappingURL=IrLogo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IrLogo.js","sourceRoot":"","sources":["../../../src/ir/ui/IrLogo.tsx"],"names":[],"mappings":";AAQA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;IAE5B,OAAO,CACL,eACE,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,KAAK,gBACC,iBAAiB,aAG5B,eACE,CAAC,EAAC,SAAS,EACX,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,SAAS,EAChB,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,GACrB,EAEF,eACE,CAAC,EAAC,0BAA0B,EAC5B,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,SAAS,EAChB,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,GACrB,IACE,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"IrLogo.js","sourceRoot":"","sources":["../../../src/ir/ui/IrLogo.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAgB3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACpD,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAE7C,OAAO,CACL,eACE,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,KAAK,gBACE,IAAI,aAGhB,eACE,CAAC,EAAE,QAAQ,EACX,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,SAAS,EAChB,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,GACrB,EAEF,eACE,CAAC,EAAE,KAAK,EACR,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,SAAS,EAChB,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,GACrB,IACE,CACP,CAAC;AACJ,CAAC;AAED,gDAAgD;AAChD,MAAM,KAAK,GAA6D;IACtE,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACpE,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,6BAA6B,EAAE;CACtE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrShell.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAgBjC,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,wBAAwB,CAAC;AAgBhF,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,+BAgL1C"}
1
+ {"version":3,"file":"IrShell.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AASjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAmB7D,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,+BAgJ1C"}
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useId, useImperativeHandle, useMemo, useState, } from 'react';
2
+ import { useId, useMemo, useState } from 'react';
3
3
  import { SplitPane, useFullscreen } from 'react-science/ui';
4
4
  import { sanitizeFileName } from "../../download/core/sanitizeFileName.js";
5
5
  import { useFigureDownload } from "../../download/ui/useFigureDownload.js";
6
6
  import { PanelRail } from "../../panel/ui/PanelRail.js";
7
- import { fullDomain } from "../core/irDomain.js";
8
- import { otherIrMode, yAxisRules } from "../core/irMode.js";
7
+ import { otherIrMode } from "../core/irMode.js";
9
8
  import { irSidePanels } from "../core/irSidePanels.js";
10
9
  import { DEFAULT_SIDE_PANEL } from "../core/irState.js";
10
+ import { irCommandOffered } from "../core/irTechniqueCommands.js";
11
11
  import { IrAboutDialog } from "./IrAboutDialog.js";
12
12
  import { IrCanvas } from "./IrCanvas.js";
13
13
  import { IrCommandProvider } from "./IrCommandProvider.js";
@@ -16,7 +16,9 @@ import { IrHeader } from "./IrHeader.js";
16
16
  import { IrSidePanel } from "./IrSidePanel.js";
17
17
  import { IrToolbar } from "./IrToolbar.js";
18
18
  import { useIrActions, useIrEditorState } from "./irStateContext.js";
19
+ import { useIrHandle } from "./useIrHandle.js";
19
20
  import { useIrShortcuts } from "./useIrShortcuts.js";
21
+ import { useValueAxisZoom } from "./useValueAxisZoom.js";
20
22
  /**
21
23
  * The viewer's screen: a header, the rails, and the split between the chart and
22
24
  * the panels.
@@ -36,8 +38,8 @@ export function IrShell(props) {
36
38
  const { state, visibleSpectra, selectedSpectrum } = useIrEditorState();
37
39
  const actions = useIrActions();
38
40
  const { toggle: toggleFullScreen } = useFullscreen();
39
- const { openPanelIds, tool, domain } = state.view;
40
- const { mode, pickBands, showAssignments } = state.settings;
41
+ const { openPanelIds, tool } = state.view;
42
+ const { mode, pickBands, showAssignments, technique } = state.settings;
41
43
  const [isAboutOpen, setIsAboutOpen] = useState(false);
42
44
  const [isDocumentationOpen, setIsDocumentationOpen] = useState(false);
43
45
  // The chart is the picture, so the box it is drawn in is what the figure
@@ -54,45 +56,36 @@ export function IrShell(props) {
54
56
  // chart, so putting it through the reducer would run every panel's memo sixty
55
57
  // times a second.
56
58
  const [highlight, setHighlight] = useState(null);
57
- /**
58
- * ChartScale the value axis by a factor, about the baseline the mode hangs from.
59
- * @param factor - Above one to zoom out.
60
- */
61
- const scaleValueAxis = useCallback((factor) => {
62
- const shown = domain ?? fullDomain(visibleSpectra, mode);
63
- // Asked of the mode rather than written out again here: the baseline a
64
- // value axis is scaled about is `irMode`'s to know, and a second copy of
65
- // it is a second thing to get wrong.
66
- const { baseline = 0 } = yAxisRules(mode);
67
- actions.setDomain({
68
- x: shown.x,
69
- y: [
70
- baseline + (shown.y[0] - baseline) * factor,
71
- baseline + (shown.y[1] - baseline) * factor,
72
- ],
73
- });
74
- }, [actions, domain, visibleSpectra, mode]);
59
+ const { zoomIn, zoomOut } = useValueAxisZoom();
75
60
  const commands = useMemo(() => ({
76
61
  about: () => setIsAboutOpen(true),
77
62
  documentation: () => setIsDocumentationOpen(true),
78
63
  fullScreen: toggleFullScreen,
79
64
  readTool: () => actions.setTool('read'),
80
65
  boxTool: () => actions.setTool(tool === 'box' ? 'read' : 'box'),
81
- zoomIn: () => scaleValueAxis(1 / ZOOM_STEP),
82
- zoomOut: () => scaleValueAxis(ZOOM_STEP),
66
+ zoomIn,
67
+ zoomOut,
83
68
  resetZoom: () => actions.resetDomain(),
84
- toggleMode: () => actions.setSettings({ mode: otherIrMode(mode) }),
69
+ // A command the technique does not offer has no handler, so its key
70
+ // stays with the page.
71
+ toggleMode: irCommandOffered(technique, 'toggleMode')
72
+ ? () => actions.setSettings({ mode: otherIrMode(mode, technique) })
73
+ : undefined,
85
74
  togglePicking: () => actions.setSettings({ pickBands: !pickBands }),
86
- toggleAssignments: () => actions.setSettings({ showAssignments: !showAssignments }),
75
+ toggleAssignments: irCommandOffered(technique, 'toggleAssignments')
76
+ ? () => actions.setSettings({ showAssignments: !showAssignments })
77
+ : undefined,
87
78
  exportImage: () => setFigureOpen(!isFigureOpen),
88
79
  clear: () => actions.clear(),
89
80
  }), [
90
81
  actions,
91
82
  tool,
92
83
  mode,
84
+ technique,
93
85
  pickBands,
94
86
  showAssignments,
95
- scaleValueAxis,
87
+ zoomIn,
88
+ zoomOut,
96
89
  toggleFullScreen,
97
90
  isFigureOpen,
98
91
  setFigureOpen,
@@ -103,23 +96,7 @@ export function IrShell(props) {
103
96
  // again.
104
97
  const [root, setRoot] = useState(null);
105
98
  useIrShortcuts(root, commands);
106
- useImperativeHandle(handle, () => ({
107
- getSpectra: () => state.data.spectra,
108
- setSpectra: (spectra) => actions.setSpectra(spectra),
109
- addSpectra: (spectra) => actions.addSpectra(spectra),
110
- clear: () => actions.clear(),
111
- setDomain: (next) => actions.setDomain(next),
112
- resetDomain: () => actions.resetDomain(),
113
- zoomToWavenumber: (wavenumber, options = {}) => {
114
- const { width = DEFAULT_FRAME_WIDTH } = options;
115
- const shown = domain ?? fullDomain(visibleSpectra, mode);
116
- actions.setDomain({
117
- x: [wavenumber - width / 2, wavenumber + width / 2],
118
- y: shown.y,
119
- });
120
- },
121
- selectSpectrum: (id) => actions.selectSpectrum(id),
122
- }), [state.data.spectra, actions, domain, visibleSpectra, mode]);
99
+ useIrHandle(handle);
123
100
  /**
124
101
  * Open or close the side, as the splitter is dragged shut and back open.
125
102
  * @param open - Whether the side is now open.
@@ -135,18 +112,8 @@ export function IrShell(props) {
135
112
  if (openPanelIds.length === 0)
136
113
  actions.togglePanel(DEFAULT_SIDE_PANEL);
137
114
  }
138
- return (_jsxs(IrCommandProvider, { handlers: commands, children: [_jsxs("div", { ref: setRoot, tabIndex: -1, style: rootStyle, children: [_jsx(IrHeader, {}), _jsxs("div", { style: mainStyle, children: [_jsx("div", { style: railStyle, children: _jsx(IrToolbar, { figure: figure }) }), _jsxs(SplitPane, { direction: "horizontal", controlledSide: "end", defaultSize: "360px", open: openPanelIds.length > 0, onOpenChange: setSideOpen, children: [_jsx(IrCanvas, { highlight: highlight, onHighlight: setHighlight, chartId: chartId }), _jsx(IrSidePanel, { highlight: highlight, onHighlight: setHighlight })] }), _jsx("div", { style: railStyle, children: _jsx(PanelRail, { panels: irSidePanels, openIds: openPanelIds, onToggle: actions.togglePanel }) })] })] }), _jsx(IrAboutDialog, { isOpen: isAboutOpen, onClose: () => setIsAboutOpen(false) }), _jsx(IrDocumentationDialog, { isOpen: isDocumentationOpen, onClose: () => setIsDocumentationOpen(false) })] }));
115
+ return (_jsxs(IrCommandProvider, { handlers: commands, technique: technique, children: [_jsxs("div", { ref: setRoot, tabIndex: -1, style: rootStyle, children: [_jsx(IrHeader, {}), _jsxs("div", { style: mainStyle, children: [_jsx("div", { style: railStyle, children: _jsx(IrToolbar, { figure: figure }) }), _jsxs(SplitPane, { direction: "horizontal", controlledSide: "end", defaultSize: "360px", open: openPanelIds.length > 0, onOpenChange: setSideOpen, children: [_jsx(IrCanvas, { highlight: highlight, onHighlight: setHighlight, chartId: chartId }), _jsx(IrSidePanel, { highlight: highlight, onHighlight: setHighlight })] }), _jsx("div", { style: railStyle, children: _jsx(PanelRail, { panels: irSidePanels, openIds: openPanelIds, onToggle: actions.togglePanel }) })] })] }), _jsx(IrAboutDialog, { isOpen: isAboutOpen, onClose: () => setIsAboutOpen(false), technique: technique }), _jsx(IrDocumentationDialog, { isOpen: isDocumentationOpen, onClose: () => setIsDocumentationOpen(false), technique: technique })] }));
139
116
  }
140
- /**
141
- * What one press of zoom in or out is worth.
142
- *
143
- * A fifth, which is about what one notch of a mouse wheel does — so the button
144
- * and the wheel feel like the same gesture at two speeds rather than two
145
- * different ones.
146
- */
147
- const ZOOM_STEP = 1.2;
148
- /** How wide a window a host gets when it asks to frame a band without saying. */
149
- const DEFAULT_FRAME_WIDTH = 200;
150
117
  /**
151
118
  * What a picture of the chart is called.
152
119
  *
@@ -1 +1 @@
1
- {"version":3,"file":"IrShell.js","sourceRoot":"","sources":["../../../src/ir/ui/IrShell.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrShell.js","sourceRoot":"","sources":["../../../src/ir/ui/IrShell.tsx"],"names":[],"mappings":"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"}
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * Everything in it is derived, so it is the cheapest place in the viewer to
5
5
  * answer "did that work" — how many spectra are drawn of those open, how many
6
- * bands the picking found and how many the table had something to say about, and
7
- * the range the selected spectrum covers.
6
+ * bands the picking found and how many the table had something to say about
7
+ * (where the table covers the technique), and the range the selected spectrum
8
+ * covers, in the order its axis is read.
8
9
  *
9
10
  * The refusal is last and is the only red in the shell, so the eye that has just
10
11
  * pressed something and seen nothing happen lands on the reason.
@@ -1 +1 @@
1
- {"version":3,"file":"IrStatusBar.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrStatusBar.tsx"],"names":[],"mappings":"AAeA;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,gCAmD1B"}
1
+ {"version":3,"file":"IrStatusBar.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrStatusBar.tsx"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,gCAqD1B"}
@@ -2,16 +2,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Icon } from '@blueprintjs/core';
3
3
  import { countLabel, statusBarStyle as barStyle, statusItemStyle as itemStyle, statusMutedStyle as mutedStyle, statusSpacerStyle as spacerStyle, } from "../../panel/core/statusBar.js";
4
4
  import { countAssigned } from "../core/assignBands.js";
5
- import { formatWavenumber } from "../core/irFormat.js";
6
- import { boxZoomOnly, yAxisTitle } from "../core/irMode.js";
5
+ import { formatWavenumberRange } from "../core/irFormat.js";
6
+ import { boxZoomOnly } from "../core/irMode.js";
7
+ import { IR_TECHNIQUE_RULES } from "../core/irTechnique.js";
7
8
  import { useIrEditorState } from "./irStateContext.js";
9
+ import { useIrText } from "./useIrText.js";
8
10
  /**
9
11
  * The one line under the chart: what is drawn, what was found, what went wrong.
10
12
  *
11
13
  * Everything in it is derived, so it is the cheapest place in the viewer to
12
14
  * answer "did that work" — how many spectra are drawn of those open, how many
13
- * bands the picking found and how many the table had something to say about, and
14
- * the range the selected spectrum covers.
15
+ * bands the picking found and how many the table had something to say about
16
+ * (where the table covers the technique), and the range the selected spectrum
17
+ * covers, in the order its axis is read.
15
18
  *
16
19
  * The refusal is last and is the only red in the shell, so the eye that has just
17
20
  * pressed something and seen nothing happen lands on the reason.
@@ -21,13 +24,15 @@ export function IrStatusBar() {
21
24
  const { state, visibleSpectra, selectedSpectrum, assigned } = useIrEditorState();
22
25
  const { spectra } = state.data;
23
26
  const { error, tool } = state.view;
24
- const { mode, pickBands } = state.settings;
25
- const range = selectedSpectrum === null || selectedSpectrum.wavenumber.length === 0
26
- ? null
27
- : `${formatWavenumber(selectedSpectrum.wavenumber.at(-1))}–${formatWavenumber(selectedSpectrum.wavenumber[0])} cm⁻¹`;
27
+ const { mode, pickBands, technique } = state.settings;
28
+ const { reverseX, assignments } = IR_TECHNIQUE_RULES[technique];
29
+ const text = useIrText(technique);
30
+ const range = selectedSpectrum === null
31
+ ? ''
32
+ : formatWavenumberRange(selectedSpectrum.wavenumber, reverseX);
28
33
  return (_jsxs("div", { style: barStyle, children: [_jsx("span", { style: itemStyle, children: spectra.length === 0
29
34
  ? 'no spectrum open'
30
- : `${countLabel(visibleSpectra.length, 'spectrum', 'spectra')} drawn of ${spectra.length}` }), _jsx("span", { style: itemStyle, children: yAxisTitle(mode) }), selectedSpectrum === null ? null : (_jsx("span", { style: nameStyle, title: selectedSpectrum.name, children: selectedSpectrum.name })), range === null ? null : _jsx("span", { style: mutedStyle, children: range }), pickBands && assigned.length > 0 ? (_jsxs("span", { style: itemStyle, children: [countLabel(assigned.length, 'band', 'bands'), ",", ' ', countAssigned(assigned), " assigned"] })) : null, boxZoomOnly(mode) || tool === 'box' ? (_jsx("span", { style: mutedStyle, children: "square zoom: drag a rectangle" })) : null, _jsx("span", { style: spacerStyle }), error === null ? null : (_jsxs("span", { style: errorStyle, title: error, children: [_jsx(Icon, { icon: "warning-sign", size: 12 }), error] }))] }));
35
+ : `${countLabel(visibleSpectra.length, 'spectrum', 'spectra')} drawn of ${spectra.length}` }), _jsx("span", { style: itemStyle, children: text.yTitle(mode) }), selectedSpectrum === null ? null : (_jsx("span", { style: nameStyle, title: selectedSpectrum.name, children: selectedSpectrum.name })), range === '' ? null : _jsx("span", { style: mutedStyle, children: range }), pickBands && assigned.length > 0 ? (_jsxs("span", { style: itemStyle, children: [countLabel(assigned.length, 'band', 'bands'), assignments ? `, ${countAssigned(assigned)} assigned` : null] })) : null, boxZoomOnly(mode) || tool === 'box' ? (_jsx("span", { style: mutedStyle, children: "square zoom: drag a rectangle" })) : null, _jsx("span", { style: spacerStyle }), error === null ? null : (_jsxs("span", { style: errorStyle, title: error, children: [_jsx(Icon, { icon: "warning-sign", size: 12 }), error] }))] }));
31
36
  }
32
37
  const nameStyle = {
33
38
  ...itemStyle,
@@ -1 +1 @@
1
- {"version":3,"file":"IrStatusBar.js","sourceRoot":"","sources":["../../../src/ir/ui/IrStatusBar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrStatusBar.js","sourceRoot":"","sources":["../../../src/ir/ui/IrStatusBar.tsx"],"names":[],"mappings":"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"}
@@ -21,6 +21,9 @@ export interface IrToolbarProps {
21
21
  * drag on that axis is a rectangle, so both buttons go dead with the square zoom
22
22
  * lit. Showing `read` as available there would offer a gesture the chart does not
23
23
  * make, and showing it as *active* would name the wrong one.
24
+ *
25
+ * A button whose command the technique does not offer is not drawn: a Raman
26
+ * spectrum has a single value axis and no assignment to name.
24
27
  * @param props - Component props.
25
28
  * @returns The toolbar.
26
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"IrToolbar.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAMnF,oCAAoC;AACpC,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAiG9C"}
1
+ {"version":3,"file":"IrToolbar.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AASnF,oCAAoC;AACpC,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAsG9C"}
@@ -1,8 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Toolbar } from 'react-science/ui';
3
- import { boxZoomOnly } from "../core/irMode.js";
3
+ import { bandsPointDown, boxZoomOnly } from "../core/irMode.js";
4
+ import { defaultIrMode } from "../core/irTechnique.js";
5
+ import { irCommandOffered } from "../core/irTechniqueCommands.js";
4
6
  import { useIrCommandProps } from "./irCommandContext.js";
5
7
  import { useIrEditorState } from "./irStateContext.js";
8
+ import { useIrText } from "./useIrText.js";
6
9
  /**
7
10
  * The tools, down the left of the chart.
8
11
  *
@@ -17,6 +20,9 @@ import { useIrEditorState } from "./irStateContext.js";
17
20
  * drag on that axis is a rectangle, so both buttons go dead with the square zoom
18
21
  * lit. Showing `read` as available there would offer a gesture the chart does not
19
22
  * make, and showing it as *active* would name the wrong one.
23
+ *
24
+ * A button whose command the technique does not offer is not drawn: a Raman
25
+ * spectrum has a single value axis and no assignment to name.
20
26
  * @param props - Component props.
21
27
  * @returns The toolbar.
22
28
  */
@@ -26,12 +32,13 @@ export function IrToolbar(props) {
26
32
  const command = useIrCommandProps();
27
33
  const { spectra } = state.data;
28
34
  const { domain, tool } = state.view;
29
- const { mode, pickBands, showAssignments } = state.settings;
35
+ const { mode, pickBands, showAssignments, technique } = state.settings;
36
+ const text = useIrText(technique);
30
37
  const isEmpty = spectra.length === 0;
31
38
  // The popover opens the panel itself, so the command's own click is left out.
32
39
  const exportCommand = command('exportImage');
33
40
  const settled = boxZoomOnly(mode);
34
- return (_jsxs(Toolbar, { vertical: true, overflow: "collapse", "aria-label": "Infrared spectrum tools", children: [_jsx(Toolbar.Item, { icon: "trash", intent: "danger", ...command('clear'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "arrows-horizontal", active: !settled && tool === 'read', ...command('readTool'), disabled: isEmpty || settled }), _jsx(Toolbar.Item, { icon: "select", active: settled || tool === 'box', ...command('boxTool'), disabled: isEmpty || settled }), _jsx(Toolbar.Item, { icon: "zoom-in", ...command('zoomIn'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "zoom-out", ...command('zoomOut'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "zoom-to-fit", ...command('resetZoom'), disabled: domain === null }), _jsx(Toolbar.Item, { icon: mode === 'absorbance' ? 'arrow-up' : 'arrow-down', active: mode === 'absorbance', ...command('toggleMode'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "locate", active: pickBands, ...command('togglePicking'), disabled: selectedSpectrum === null }), _jsx(Toolbar.Item, { icon: "label", active: showAssignments, ...command('toggleAssignments'), disabled: !pickBands || selectedSpectrum === null }), figure === undefined ? (_jsx(Toolbar.Item, { icon: "media", ...command('exportImage'), disabled: isEmpty })) : (_jsx(Toolbar.PopoverItem, { isOpen: figure.isOpen, onInteraction: figure.setOpen, content: figure.panel, disabled: isEmpty, itemProps: {
41
+ return (_jsxs(Toolbar, { vertical: true, overflow: "collapse", "aria-label": text.tools, children: [_jsx(Toolbar.Item, { icon: "trash", intent: "danger", ...command('clear'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "arrows-horizontal", active: !settled && tool === 'read', ...command('readTool'), disabled: isEmpty || settled }), _jsx(Toolbar.Item, { icon: "select", active: settled || tool === 'box', ...command('boxTool'), disabled: isEmpty || settled }), _jsx(Toolbar.Item, { icon: "zoom-in", ...command('zoomIn'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "zoom-out", ...command('zoomOut'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "zoom-to-fit", ...command('resetZoom'), disabled: domain === null }), irCommandOffered(technique, 'toggleMode') ? (_jsx(Toolbar.Item, { icon: bandsPointDown(mode) ? 'arrow-down' : 'arrow-up', active: mode !== defaultIrMode(technique), ...command('toggleMode'), disabled: isEmpty })) : null, _jsx(Toolbar.Item, { icon: "locate", active: pickBands, ...command('togglePicking'), disabled: selectedSpectrum === null }), irCommandOffered(technique, 'toggleAssignments') ? (_jsx(Toolbar.Item, { icon: "label", active: showAssignments, ...command('toggleAssignments'), disabled: !pickBands || selectedSpectrum === null })) : null, figure === undefined ? (_jsx(Toolbar.Item, { icon: "media", ...command('exportImage'), disabled: isEmpty })) : (_jsx(Toolbar.PopoverItem, { isOpen: figure.isOpen, onInteraction: figure.setOpen, content: figure.panel, disabled: isEmpty, itemProps: {
35
42
  icon: 'media',
36
43
  tooltip: exportCommand.tooltip,
37
44
  'aria-label': exportCommand['aria-label'],
@@ -1 +1 @@
1
- {"version":3,"file":"IrToolbar.js","sourceRoot":"","sources":["../../../src/ir/ui/IrToolbar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAWvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACvD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IACpC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IAE5D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;IACrC,8EAA8E;IAC9E,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAElC,OAAO,CAIL,MAAC,OAAO,IAAC,QAAQ,QAAC,QAAQ,EAAC,UAAU,gBAAY,yBAAyB,aACxE,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,OAAO,EACZ,MAAM,EAAC,QAAQ,KACX,OAAO,CAAC,OAAO,CAAC,EACpB,QAAQ,EAAE,OAAO,GACjB,EAGF,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,mBAAmB,EACxB,MAAM,EAAE,CAAC,OAAO,IAAI,IAAI,KAAK,MAAM,KAC/B,OAAO,CAAC,UAAU,CAAC,EACvB,QAAQ,EAAE,OAAO,IAAI,OAAO,GAC5B,EACF,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,QAAQ,EACb,MAAM,EAAE,OAAO,IAAI,IAAI,KAAK,KAAK,KAC7B,OAAO,CAAC,SAAS,CAAC,EACtB,QAAQ,EAAE,OAAO,IAAI,OAAO,GAC5B,EAEF,KAAC,OAAO,CAAC,IAAI,IAAC,IAAI,EAAC,SAAS,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAI,EACzE,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,UAAU,KACX,OAAO,CAAC,SAAS,CAAC,EACtB,QAAQ,EAAE,OAAO,GACjB,EACF,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,aAAa,KACd,OAAO,CAAC,WAAW,CAAC,EACxB,QAAQ,EAAE,MAAM,KAAK,IAAI,GACzB,EAEF,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EACvD,MAAM,EAAE,IAAI,KAAK,YAAY,KACzB,OAAO,CAAC,YAAY,CAAC,EACzB,QAAQ,EAAE,OAAO,GACjB,EACF,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,QAAQ,EACb,MAAM,EAAE,SAAS,KACb,OAAO,CAAC,eAAe,CAAC,EAC5B,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GACnC,EACF,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,OAAO,EACZ,MAAM,EAAE,eAAe,KACnB,OAAO,CAAC,mBAAmB,CAAC,EAChC,QAAQ,EAAE,CAAC,SAAS,IAAI,gBAAgB,KAAK,IAAI,GACjD,EAMD,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CACtB,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,OAAO,KACR,OAAO,CAAC,aAAa,CAAC,EAC1B,QAAQ,EAAE,OAAO,GACjB,CACH,CAAC,CAAC,CAAC,CACF,KAAC,OAAO,CAAC,WAAW,IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EACrB,aAAa,EAAE,MAAM,CAAC,OAAO,EAC7B,OAAO,EAAE,MAAM,CAAC,KAAK,EACrB,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE;oBACT,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,aAAa,CAAC,OAAO;oBAC9B,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC;oBACzC,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,QAAQ,EAAE,OAAO;iBAClB,GACD,CACH,IACO,CACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"IrToolbar.js","sourceRoot":"","sources":["../../../src/ir/ui/IrToolbar.tsx"],"names":[],"mappings":"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"}
@@ -20,7 +20,10 @@ export interface IrTracesProps {
20
20
  * the *high* end, the opposite of what every other chart's does.
21
21
  */
22
22
  xDomain: readonly [number, number];
23
- /** The wavenumber axis as it is currently zoomed, running right to left. */
23
+ /**
24
+ * The wavenumber axis as it is currently zoomed, running right to left for
25
+ * infrared.
26
+ */
24
27
  xScale: ChartScale;
25
28
  /** The value axis as it is currently zoomed. */
26
29
  yScale: ChartScale;
@@ -1 +1 @@
1
- {"version":3,"file":"IrTraces.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrTraces.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGhE,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;;;OAKG;IACH,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,4EAA4E;IAC5E,MAAM,EAAE,UAAU,CAAC;IACnB,gDAAgD;IAChD,MAAM,EAAE,UAAU,CAAC;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CA0C3D"}
1
+ {"version":3,"file":"IrTraces.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrTraces.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGhE,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;;;OAKG;IACH,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,MAAM,EAAE,UAAU,CAAC;IACnB,gDAAgD;IAChD,MAAM,EAAE,UAAU,CAAC;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CA2C3D"}
@@ -40,6 +40,8 @@ export function IrTraces(props) {
40
40
  if (!spectrum.visible)
41
41
  continue;
42
42
  const trace = traceOf(spectrum, mode);
43
+ if (trace === undefined)
44
+ continue;
43
45
  const { x, y } = xyReduce(trace, { from, to, nbPoints: wanted });
44
46
  const d = profilePath(x, y, xScale, yScale);
45
47
  if (d !== '')
@@ -1 +1 @@
1
- {"version":3,"file":"IrTraces.js","sourceRoot":"","sources":["../../../src/ir/ui/IrTraces.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAiChD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EACJ,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,MAAM,EACN,MAAM,EACN,YAAY,GAAG,IAAI,GACpB,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,iBAAiB,CAAC;IAEvE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,KAAK,GAAoD,EAAE,CAAC;QAClE,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,SAAS;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAEtD,OAAO,CACL,YAAG,aAAa,EAAC,MAAM,YACpB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,eAEE,CAAC,EAAE,IAAI,CAAC,CAAC,EACT,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,IAAI,CAAC,KAAK,EAClB,WAAW,EACT,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAE3D,cAAc,EAAC,OAAO,IAPjB,IAAI,CAAC,EAAE,CAQZ,CACH,CAAC,GACA,CACL,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,kCAAkC;AAClC,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"IrTraces.js","sourceRoot":"","sources":["../../../src/ir/ui/IrTraces.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAoChD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EACJ,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,MAAM,EACN,MAAM,EACN,YAAY,GAAG,IAAI,GACpB,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,iBAAiB,CAAC;IAEvE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,KAAK,GAAoD,EAAE,CAAC;QAClE,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,SAAS;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtC,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAEtD,OAAO,CACL,YAAG,aAAa,EAAC,MAAM,YACpB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,eAEE,CAAC,EAAE,IAAI,CAAC,CAAC,EACT,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,IAAI,CAAC,KAAK,EAClB,WAAW,EACT,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAE3D,cAAc,EAAC,OAAO,IAPjB,IAAI,CAAC,EAAE,CAQZ,CACH,CAAC,GACA,CACL,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,kCAAkC;AAClC,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC"}