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
@@ -0,0 +1,46 @@
1
+ import type { Ref } from 'react';
2
+ import type { IrEditorHandle } from '../core/irEditorApi.ts';
3
+ import type { IrSidePanelId } from '../core/irSidePanels.ts';
4
+ import type { IrSpectrum } from '../core/irSpectrum.ts';
5
+ /** The handle a host drives a Raman viewer through: the infrared one's. */
6
+ export type RamanEditorHandle = IrEditorHandle;
7
+ export interface RamanEditorProps {
8
+ /**
9
+ * The spectra to open on, each carrying its `intensity`. Read when the viewer
10
+ * opens and never again: what is on the chart belongs to the viewer from then
11
+ * on. The `ref` handle is how spectra arrive afterwards.
12
+ * @default []
13
+ */
14
+ data?: IrSpectrum[];
15
+ /**
16
+ * Called whenever the spectra open change — one loaded, one closed, the chart
17
+ * cleared — with the spectra now open. Not called for a zoom, a selection, a
18
+ * rename or a colour.
19
+ * @default undefined
20
+ */
21
+ onChange?: (spectra: IrSpectrum[]) => void;
22
+ /**
23
+ * The side panels open to begin with.
24
+ * @default DEFAULT_SIDE_PANELS
25
+ */
26
+ defaultPanelIds?: IrSidePanelId[];
27
+ /**
28
+ * The handle a host drives the viewer through: take these spectra, frame this
29
+ * Raman shift, select that one.
30
+ * @default undefined
31
+ */
32
+ ref?: Ref<RamanEditorHandle>;
33
+ }
34
+ /**
35
+ * A Raman spectrum viewer: the infrared viewer's shell, panels, gestures and
36
+ * export, changed only where Raman is physically different.
37
+ *
38
+ * The spectra are read as intensity, their one value axis, so there is no mode
39
+ * to choose; the Raman shift runs from low at the left to high at the right;
40
+ * the bands are picked as maxima of intensity; and the infrared correlation
41
+ * table is not asked what a band might be.
42
+ * @param props - Component props.
43
+ * @returns The viewer.
44
+ */
45
+ export declare function RamanEditor(props: RamanEditorProps): import("react").JSX.Element;
46
+ //# 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,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIxD,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;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAClC;;;;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;AAiC5D;;;;;;;;;;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,48 @@
1
+ import type { Ref } from 'react';
2
+ import type { IrEditorHandle } from '../core/irEditorApi.ts';
3
+ import type { IrSidePanelId } from '../core/irSidePanels.ts';
4
+ import type { IrMode, IrSpectrum } from '../core/irSpectrum.ts';
5
+ import type { IrTechnique } from '../core/irTechnique.ts';
6
+ export interface VibrationalEditorProps {
7
+ /**
8
+ * What the spectra were measured with. Read when the viewer opens and fixed
9
+ * from then on: it decides the value axes, the direction and name of the
10
+ * wavenumber axis, and whether the correlation table is asked about a band.
11
+ */
12
+ technique: IrTechnique;
13
+ /**
14
+ * The spectra to open on. Read when the viewer opens and never again.
15
+ * @default []
16
+ */
17
+ data?: IrSpectrum[];
18
+ /**
19
+ * Called whenever the spectra open change, with the spectra now open.
20
+ * @default undefined
21
+ */
22
+ onChange?: (spectra: IrSpectrum[]) => void;
23
+ /**
24
+ * Which value axis to open in; one the technique does not offer opens its
25
+ * first instead.
26
+ * @default the technique's first
27
+ */
28
+ mode?: IrMode;
29
+ /**
30
+ * The side panels open to begin with.
31
+ * @default DEFAULT_SIDE_PANELS
32
+ */
33
+ defaultPanelIds?: IrSidePanelId[];
34
+ /**
35
+ * The handle a host drives the viewer through.
36
+ * @default undefined
37
+ */
38
+ ref?: Ref<IrEditorHandle>;
39
+ }
40
+ /**
41
+ * The viewer `IrEditor` and `RamanEditor` both are: one shell, one set of
42
+ * panels and gestures, with what differs between the techniques read from
43
+ * `IR_TECHNIQUE_RULES` rather than written into either.
44
+ * @param props - Component props.
45
+ * @returns The viewer.
46
+ */
47
+ export declare function VibrationalEditor(props: VibrationalEditorProps): import("react").JSX.Element;
48
+ //# 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,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAM1D,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;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAClC;;;OAGG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,+BA6B9D"}
@@ -0,0 +1,31 @@
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, 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 }) }) }));
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
+ //# 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;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAqC/C;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EACJ,SAAS,EACT,IAAI,GAAG,UAAU,EACjB,QAAQ,EACR,IAAI,EACJ,eAAe,EACf,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,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"}
@@ -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"}
@@ -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
  /**
@@ -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,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"}
@@ -13,9 +13,8 @@
13
13
  * to on every change of a threshold.
14
14
  */
15
15
  import type { AssignedBand } from '../core/assignBands.ts';
16
- import type { CreateIrStateOptions } from '../core/irReducer.ts';
17
16
  import type { IrSpectrum } from '../core/irSpectrum.ts';
18
- import type { IrState } from '../core/irState.ts';
17
+ import type { CreateIrStateOptions, IrState } from '../core/irState.ts';
19
18
  import type { IrEditorActions } from './irActions.ts';
20
19
  /** What a viewer opens on, and who to tell when the spectra change. */
21
20
  export interface UseIrEditorOptions extends CreateIrStateOptions {
@@ -36,7 +35,8 @@ export interface IrEditorApi {
36
35
  selectedSpectrum: IrSpectrum | null;
37
36
  /**
38
37
  * The bands of the selected spectrum, with everything each might be. Empty
39
- * while nothing is selected or while picking is switched off.
38
+ * while nothing is selected or while picking is switched off, and every band
39
+ * without a candidate for a technique the correlation table does not cover.
40
40
  */
41
41
  assigned: AssignedBand[];
42
42
  /** Everything to do. */
@@ -1 +1 @@
1
- {"version":3,"file":"useIrEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/useIrEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,uEAAuE;AACvE,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;CAC5C;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,KAAK,EAAE,OAAO,CAAC;IACf,kEAAkE;IAClE,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,qEAAqE;IACrE,gBAAgB,EAAE,UAAU,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,wBAAwB;IACxB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CA0DzE"}
1
+ {"version":3,"file":"useIrEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/useIrEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAK3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAKxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,uEAAuE;AACvE,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;CAC5C;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,KAAK,EAAE,OAAO,CAAC;IACf,kEAAkE;IAClE,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,qEAAqE;IACrE,gBAAgB,EAAE,UAAU,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,wBAAwB;IACxB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CA+DzE"}
@@ -14,7 +14,10 @@
14
14
  */
15
15
  import { useEffect, useMemo, useReducer, useRef } from 'react';
16
16
  import { assignBands } from "../core/assignBands.js";
17
- import { createIrState, irReducer } from "../core/irReducer.js";
17
+ import { BAND_ASSIGNMENTS } from "../core/bandAssignments.js";
18
+ import { irReducer } from "../core/irReducer.js";
19
+ import { createIrState } from "../core/irState.js";
20
+ import { IR_TECHNIQUE_RULES } from "../core/irTechnique.js";
18
21
  import { pickBands } from "../core/pickBands.js";
19
22
  import { createIrActions } from "./irActions.js";
20
23
  /**
@@ -29,7 +32,7 @@ export function useIrEditor(options = {}) {
29
32
  const { spectra } = state.data;
30
33
  const { selectedId } = state.view;
31
34
  const { pickBands: picking, picking: pickingOptions } = state.settings;
32
- const { assignmentTolerance } = state.settings;
35
+ const { assignmentTolerance, technique } = state.settings;
33
36
  const visibleSpectra = useMemo(() => {
34
37
  const visible = [];
35
38
  for (const spectrum of spectra) {
@@ -52,8 +55,12 @@ export function useIrEditor(options = {}) {
52
55
  : pickBands(selectedSpectrum, pickingOptions), [selectedSpectrum, picking, pickingOptions]);
53
56
  // Assigning is a walk of thirty ranges per band, which is nothing beside the
54
57
  // picking — so it is a memo of its own, and moving the tolerance does not
55
- // re-pick.
56
- const assigned = useMemo(() => assignBands(bands, { tolerance: assignmentTolerance }), [bands, assignmentTolerance]);
58
+ // re-pick. A technique the table does not cover is matched against no table.
59
+ const { assignments } = IR_TECHNIQUE_RULES[technique];
60
+ const assigned = useMemo(() => assignBands(bands, {
61
+ tolerance: assignmentTolerance,
62
+ assignments: assignments ? BAND_ASSIGNMENTS : NO_ASSIGNMENTS,
63
+ }), [bands, assignmentTolerance, assignments]);
57
64
  // What was reported last, so a host passing a fresh callback on every render
58
65
  // is not told about spectra that did not change. The identities are compared
59
66
  // rather than the array: every edit replaces it, including the ones that only
@@ -67,6 +74,8 @@ export function useIrEditor(options = {}) {
67
74
  }, [spectra, onChange]);
68
75
  return useMemo(() => ({ state, visibleSpectra, selectedSpectrum, assigned, actions }), [state, visibleSpectra, selectedSpectrum, assigned, actions]);
69
76
  }
77
+ /** The table a technique the correlation table does not cover is matched against. */
78
+ const NO_ASSIGNMENTS = [];
70
79
  /**
71
80
  * Whether two lists hold the same spectra, by identity and in order.
72
81
  * @param current - What was reported last.
@@ -1 +1 @@
1
- {"version":3,"file":"useIrEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/useIrEditor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useIrEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/useIrEditor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The handle a host drives the viewer through, filled in from its state.
3
+ *
4
+ * A hook of its own beside the shell, because every gesture on the handle reads
5
+ * the state the shell already reads — and the shell is long enough without it.
6
+ */
7
+ import type { Ref } from 'react';
8
+ import type { IrEditorHandle } from '../core/irEditorApi.ts';
9
+ /**
10
+ * Fill in a host's handle on the viewer this is called inside.
11
+ * @param handle - The handle to fill in, if the host asked for one.
12
+ */
13
+ export declare function useIrHandle(handle: Ref<IrEditorHandle> | undefined): void;
14
+ //# sourceMappingURL=useIrHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIrHandle.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/useIrHandle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,wBAAwB,CAAC;AAKhF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,IAAI,CA2BzE"}