react-cheminfo 0.70.0 → 0.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/README.md +57 -2
  2. package/lib/about/core/providers.d.ts +6 -0
  3. package/lib/about/core/providers.d.ts.map +1 -1
  4. package/lib/about/core/providers.js +7 -0
  5. package/lib/about/core/providers.js.map +1 -1
  6. package/lib/about/ui/AboutProvidedBy.js +34 -0
  7. package/lib/about/ui/AboutProvidedBy.js.map +1 -1
  8. package/lib/download/core/figurePng.d.ts +14 -0
  9. package/lib/download/core/figurePng.d.ts.map +1 -1
  10. package/lib/download/core/figurePng.js +21 -6
  11. package/lib/download/core/figurePng.js.map +1 -1
  12. package/lib/download/core/svgToPng.d.ts.map +1 -1
  13. package/lib/download/core/svgToPng.js +4 -2
  14. package/lib/download/core/svgToPng.js.map +1 -1
  15. package/lib/format/core/relativeTime.d.ts +8 -3
  16. package/lib/format/core/relativeTime.d.ts.map +1 -1
  17. package/lib/format/core/relativeTime.js +19 -7
  18. package/lib/format/core/relativeTime.js.map +1 -1
  19. package/lib/host/core/connectHost.d.ts +25 -34
  20. package/lib/host/core/connectHost.d.ts.map +1 -1
  21. package/lib/host/core/connectHost.js +43 -89
  22. package/lib/host/core/connectHost.js.map +1 -1
  23. package/lib/host/core/hostOutputs.d.ts +58 -0
  24. package/lib/host/core/hostOutputs.d.ts.map +1 -0
  25. package/lib/host/core/hostOutputs.js +151 -0
  26. package/lib/host/core/hostOutputs.js.map +1 -0
  27. package/lib/host/core/index.d.ts +9 -3
  28. package/lib/host/core/index.d.ts.map +1 -1
  29. package/lib/host/core/index.js +4 -1
  30. package/lib/host/core/index.js.map +1 -1
  31. package/lib/host/core/irKinds.d.ts +124 -0
  32. package/lib/host/core/irKinds.d.ts.map +1 -0
  33. package/lib/host/core/irKinds.js +46 -0
  34. package/lib/host/core/irKinds.js.map +1 -0
  35. package/lib/host/core/kinds.d.ts +13 -5
  36. package/lib/host/core/kinds.d.ts.map +1 -1
  37. package/lib/host/core/kinds.js +11 -5
  38. package/lib/host/core/kinds.js.map +1 -1
  39. package/lib/host/core/protocol.d.ts +50 -7
  40. package/lib/host/core/protocol.d.ts.map +1 -1
  41. package/lib/host/core/protocol.js +10 -6
  42. package/lib/host/core/protocol.js.map +1 -1
  43. package/lib/host/core/selectInputs.d.ts +37 -0
  44. package/lib/host/core/selectInputs.d.ts.map +1 -0
  45. package/lib/host/core/selectInputs.js +110 -0
  46. package/lib/host/core/selectInputs.js.map +1 -0
  47. package/lib/host/testing/sciPeaks.d.ts +31 -0
  48. package/lib/host/testing/sciPeaks.d.ts.map +1 -1
  49. package/lib/host/testing/sciPeaks.js +73 -0
  50. package/lib/host/testing/sciPeaks.js.map +1 -1
  51. package/lib/host/testing/standInHost.d.ts +9 -1
  52. package/lib/host/testing/standInHost.d.ts.map +1 -1
  53. package/lib/host/testing/standInHost.js +19 -1
  54. package/lib/host/testing/standInHost.js.map +1 -1
  55. package/lib/host/ui/useHostConnection.d.ts +13 -5
  56. package/lib/host/ui/useHostConnection.d.ts.map +1 -1
  57. package/lib/host/ui/useHostConnection.js +4 -3
  58. package/lib/host/ui/useHostConnection.js.map +1 -1
  59. package/lib/host-testing.d.ts +2 -2
  60. package/lib/host-testing.d.ts.map +1 -1
  61. package/lib/host-testing.js +2 -2
  62. package/lib/host-testing.js.map +1 -1
  63. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  64. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  65. package/lib/ir/core/handPicking.d.ts +58 -0
  66. package/lib/ir/core/handPicking.d.ts.map +1 -0
  67. package/lib/ir/core/handPicking.js +130 -0
  68. package/lib/ir/core/handPicking.js.map +1 -0
  69. package/lib/ir/core/index.d.ts +3 -0
  70. package/lib/ir/core/index.d.ts.map +1 -1
  71. package/lib/ir/core/index.js +3 -0
  72. package/lib/ir/core/index.js.map +1 -1
  73. package/lib/ir/core/irBandState.d.ts +57 -0
  74. package/lib/ir/core/irBandState.d.ts.map +1 -0
  75. package/lib/ir/core/irBandState.js +119 -0
  76. package/lib/ir/core/irBandState.js.map +1 -0
  77. package/lib/ir/core/irCommands.d.ts +11 -0
  78. package/lib/ir/core/irCommands.d.ts.map +1 -1
  79. package/lib/ir/core/irCommands.js +6 -0
  80. package/lib/ir/core/irCommands.js.map +1 -1
  81. package/lib/ir/core/irPeaks.d.ts +28 -0
  82. package/lib/ir/core/irPeaks.d.ts.map +1 -0
  83. package/lib/ir/core/irPeaks.js +66 -0
  84. package/lib/ir/core/irPeaks.js.map +1 -0
  85. package/lib/ir/core/irReducer.d.ts +8 -0
  86. package/lib/ir/core/irReducer.d.ts.map +1 -1
  87. package/lib/ir/core/irReducer.js +15 -32
  88. package/lib/ir/core/irReducer.js.map +1 -1
  89. package/lib/ir/core/irSpectrum.d.ts +15 -0
  90. package/lib/ir/core/irSpectrum.d.ts.map +1 -1
  91. package/lib/ir/core/irSpectrum.js.map +1 -1
  92. package/lib/ir/core/irState.d.ts +9 -6
  93. package/lib/ir/core/irState.d.ts.map +1 -1
  94. package/lib/ir/core/irState.js +10 -6
  95. package/lib/ir/core/irState.js.map +1 -1
  96. package/lib/ir/core/pickBands.d.ts +14 -0
  97. package/lib/ir/core/pickBands.d.ts.map +1 -1
  98. package/lib/ir/core/pickBands.js +39 -33
  99. package/lib/ir/core/pickBands.js.map +1 -1
  100. package/lib/ir/core/ramanBands.d.ts +9 -1
  101. package/lib/ir/core/ramanBands.d.ts.map +1 -1
  102. package/lib/ir/core/ramanBands.js +2 -2
  103. package/lib/ir/core/ramanBands.js.map +1 -1
  104. package/lib/ir/core/spectrumBands.d.ts +46 -0
  105. package/lib/ir/core/spectrumBands.d.ts.map +1 -0
  106. package/lib/ir/core/spectrumBands.js +98 -0
  107. package/lib/ir/core/spectrumBands.js.map +1 -0
  108. package/lib/ir/ui/BandRow.d.ts +5 -0
  109. package/lib/ir/ui/BandRow.d.ts.map +1 -1
  110. package/lib/ir/ui/BandRow.js +4 -3
  111. package/lib/ir/ui/BandRow.js.map +1 -1
  112. package/lib/ir/ui/BandsPanel.d.ts +5 -0
  113. package/lib/ir/ui/BandsPanel.d.ts.map +1 -1
  114. package/lib/ir/ui/BandsPanel.js +36 -16
  115. package/lib/ir/ui/BandsPanel.js.map +1 -1
  116. package/lib/ir/ui/BandsToolbar.d.ts +9 -0
  117. package/lib/ir/ui/BandsToolbar.d.ts.map +1 -0
  118. package/lib/ir/ui/BandsToolbar.js +61 -0
  119. package/lib/ir/ui/BandsToolbar.js.map +1 -0
  120. package/lib/ir/ui/IrCanvas.d.ts +2 -1
  121. package/lib/ir/ui/IrCanvas.d.ts.map +1 -1
  122. package/lib/ir/ui/IrCanvas.js +19 -5
  123. package/lib/ir/ui/IrCanvas.js.map +1 -1
  124. package/lib/ir/ui/IrChart.d.ts.map +1 -1
  125. package/lib/ir/ui/IrChart.js +8 -1
  126. package/lib/ir/ui/IrChart.js.map +1 -1
  127. package/lib/ir/ui/IrDocumentationDialog.js +1 -1
  128. package/lib/ir/ui/IrDocumentationDialog.js.map +1 -1
  129. package/lib/ir/ui/IrEditor.d.ts +4 -2
  130. package/lib/ir/ui/IrEditor.d.ts.map +1 -1
  131. package/lib/ir/ui/IrEditor.js.map +1 -1
  132. package/lib/ir/ui/IrShell.d.ts.map +1 -1
  133. package/lib/ir/ui/IrShell.js +6 -0
  134. package/lib/ir/ui/IrShell.js.map +1 -1
  135. package/lib/ir/ui/IrStatusBar.d.ts.map +1 -1
  136. package/lib/ir/ui/IrStatusBar.js +1 -1
  137. package/lib/ir/ui/IrStatusBar.js.map +1 -1
  138. package/lib/ir/ui/IrToolbar.d.ts +4 -3
  139. package/lib/ir/ui/IrToolbar.d.ts.map +1 -1
  140. package/lib/ir/ui/IrToolbar.js +5 -4
  141. package/lib/ir/ui/IrToolbar.js.map +1 -1
  142. package/lib/ir/ui/VibrationalEditor.d.ts +2 -1
  143. package/lib/ir/ui/VibrationalEditor.d.ts.map +1 -1
  144. package/lib/ir/ui/VibrationalEditor.js.map +1 -1
  145. package/lib/ir/ui/irActions.d.ts +5 -0
  146. package/lib/ir/ui/irActions.d.ts.map +1 -1
  147. package/lib/ir/ui/irActions.js +6 -0
  148. package/lib/ir/ui/irActions.js.map +1 -1
  149. package/lib/ir/ui/irChartProps.d.ts +4 -1
  150. package/lib/ir/ui/irChartProps.d.ts.map +1 -1
  151. package/lib/ir/ui/useIrEditor.d.ts +5 -11
  152. package/lib/ir/ui/useIrEditor.d.ts.map +1 -1
  153. package/lib/ir/ui/useIrEditor.js +17 -18
  154. package/lib/ir/ui/useIrEditor.js.map +1 -1
  155. package/lib/locales/de.json +63 -0
  156. package/lib/locales/en.json +63 -0
  157. package/lib/locales/es.json +63 -0
  158. package/lib/locales/fr.json +63 -0
  159. package/lib/locales/it.json +63 -0
  160. package/lib/slides/ui/slideSanitizeSchema.d.ts +3 -2
  161. package/lib/slides/ui/slideSanitizeSchema.d.ts.map +1 -1
  162. package/lib/slides/ui/slideSanitizeSchema.js +82 -2
  163. package/lib/slides/ui/slideSanitizeSchema.js.map +1 -1
  164. package/package.json +1 -1
  165. package/src/about/core/providers.ts +7 -0
  166. package/src/about/ui/AboutProvidedBy.tsx +49 -0
  167. package/src/download/core/figurePng.ts +21 -8
  168. package/src/download/core/svgToPng.ts +3 -4
  169. package/src/format/core/relativeTime.ts +29 -7
  170. package/src/host/core/connectHost.ts +77 -120
  171. package/src/host/core/hostOutputs.ts +197 -0
  172. package/src/host/core/index.ts +13 -7
  173. package/src/host/core/irKinds.ts +92 -0
  174. package/src/host/core/kinds.ts +16 -6
  175. package/src/host/core/protocol.ts +50 -8
  176. package/src/host/core/selectInputs.ts +145 -0
  177. package/src/host/testing/sciPeaks.ts +140 -0
  178. package/src/host/testing/standInHost.ts +30 -5
  179. package/src/host/ui/useHostConnection.ts +17 -8
  180. package/src/host-testing.ts +4 -0
  181. package/src/ir/core/handPicking.ts +154 -0
  182. package/src/ir/core/index.ts +14 -0
  183. package/src/ir/core/irBandState.ts +155 -0
  184. package/src/ir/core/irCommands.ts +7 -0
  185. package/src/ir/core/irPeaks.ts +79 -0
  186. package/src/ir/core/irReducer.ts +27 -34
  187. package/src/ir/core/irSpectrum.ts +16 -0
  188. package/src/ir/core/irState.ts +15 -8
  189. package/src/ir/core/pickBands.ts +46 -39
  190. package/src/ir/core/ramanBands.ts +2 -2
  191. package/src/ir/core/spectrumBands.ts +113 -0
  192. package/src/ir/ui/BandRow.tsx +20 -2
  193. package/src/ir/ui/BandsPanel.tsx +46 -88
  194. package/src/ir/ui/BandsToolbar.tsx +152 -0
  195. package/src/ir/ui/IrCanvas.tsx +22 -11
  196. package/src/ir/ui/IrChart.tsx +10 -1
  197. package/src/ir/ui/IrDocumentationDialog.tsx +7 -0
  198. package/src/ir/ui/IrEditor.tsx +4 -2
  199. package/src/ir/ui/IrShell.tsx +5 -0
  200. package/src/ir/ui/IrStatusBar.tsx +4 -1
  201. package/src/ir/ui/IrToolbar.tsx +14 -5
  202. package/src/ir/ui/VibrationalEditor.tsx +2 -1
  203. package/src/ir/ui/irActions.ts +11 -0
  204. package/src/ir/ui/irChartProps.ts +4 -1
  205. package/src/ir/ui/useIrEditor.ts +21 -21
  206. package/src/locales/de.json +63 -0
  207. package/src/locales/en.json +63 -0
  208. package/src/locales/es.json +63 -0
  209. package/src/locales/fr.json +63 -0
  210. package/src/locales/it.json +63 -0
  211. package/src/slides/ui/slideSanitizeSchema.ts +86 -2
  212. package/styles/chrome.css +7 -0
  213. package/styles/slides.css +47 -0
@@ -0,0 +1,119 @@
1
+ /**
2
+ * The changes of the viewer's state that are about bands: spectra arriving
3
+ * with theirs or without, a list picked by hand, a list found automatically
4
+ * again, and new picking settings, which pick again every list that was found
5
+ * automatically.
6
+ *
7
+ * Apart from the reducer, which routes these actions here; like it, each
8
+ * returns the state itself when it has nothing to do.
9
+ */
10
+ import { mergeIrSettings } from "./irState.js";
11
+ import { orderedBands, repickBands, samePicking, withBands, } from "./spectrumBands.js";
12
+ /**
13
+ * Spectra arriving, each carrying its bands: its own, or picked now.
14
+ * @param state - The state they arrive in.
15
+ * @param spectra - The spectra.
16
+ * @returns A new list.
17
+ */
18
+ export function arriving(state, spectra) {
19
+ const { picking } = state.settings;
20
+ return spectra.map((spectrum) => withBands(spectrum, picking));
21
+ }
22
+ /**
23
+ * Give one spectrum bands picked by hand.
24
+ * @param state - The state in force.
25
+ * @param id - Which spectrum.
26
+ * @param bands - Its bands, in any order.
27
+ * @returns The new state, or the old one when they were its own already.
28
+ */
29
+ export function setSpectrumBands(state, id, bands) {
30
+ return mapSpectrum(state, id, (spectrum) => {
31
+ const ordered = orderedBands(spectrum.id, bands);
32
+ return ordered === spectrum.bands && spectrum.bandsByHand === true
33
+ ? spectrum
34
+ : { ...spectrum, bands: ordered, bandsByHand: true };
35
+ });
36
+ }
37
+ /**
38
+ * Have one spectrum's bands found automatically again.
39
+ * @param state - The state in force.
40
+ * @param id - Which spectrum.
41
+ * @returns The new state, or the old one when they already were.
42
+ */
43
+ export function resetSpectrumBands(state, id) {
44
+ const { picking } = state.settings;
45
+ return mapSpectrum(state, id, (spectrum) => spectrum.bandsByHand
46
+ ? repickBands({ ...spectrum, bandsByHand: false }, picking)
47
+ : spectrum);
48
+ }
49
+ /**
50
+ * Fold a change into the workspace, and pick again what it changes.
51
+ * @param state - The state in force.
52
+ * @param change - What to change about the workspace.
53
+ * @returns The new state.
54
+ */
55
+ export function changeSettings(state, change) {
56
+ const settings = mergeIrSettings(state.settings, change);
57
+ const { spectra } = state.data;
58
+ const picked = pickedAgain(spectra, state.settings.picking, settings.picking);
59
+ return {
60
+ ...state,
61
+ data: picked === spectra ? state.data : { spectra: picked },
62
+ settings,
63
+ };
64
+ }
65
+ /**
66
+ * Take a whole state, as a host restoring one supplies it.
67
+ * @param state - The state in force.
68
+ * @param restored - The parts the host supplies.
69
+ * @returns The new state.
70
+ */
71
+ export function restoreState(state, restored) {
72
+ const { data, view, settings } = restored;
73
+ const merged = mergeIrSettings(state.settings, settings);
74
+ const spectra = data === undefined
75
+ ? state.data.spectra
76
+ : arriving({ ...state, settings: merged }, data.spectra);
77
+ return {
78
+ data: {
79
+ spectra: pickedAgain(spectra, state.settings.picking, merged.picking),
80
+ },
81
+ view: { ...state.view, ...view },
82
+ settings: merged,
83
+ };
84
+ }
85
+ /**
86
+ * Change one spectrum, leaving the state alone when it did not change.
87
+ * @param state - The state in force.
88
+ * @param id - Which spectrum.
89
+ * @param change - What to make of it; return it unchanged for no change.
90
+ * @returns The new state, or the old one.
91
+ */
92
+ export function mapSpectrum(state, id, change) {
93
+ let changed = false;
94
+ const spectra = state.data.spectra.map((spectrum) => {
95
+ if (spectrum.id !== id)
96
+ return spectrum;
97
+ const next = change(spectrum);
98
+ if (next !== spectrum)
99
+ changed = true;
100
+ return next;
101
+ });
102
+ if (!changed)
103
+ return state;
104
+ return { ...state, data: { spectra }, view: { ...state.view, error: null } };
105
+ }
106
+ /**
107
+ * The spectra under new picking settings: those found automatically picked
108
+ * again.
109
+ * @param spectra - The spectra.
110
+ * @param before - The settings they were picked with.
111
+ * @param after - The settings now in force.
112
+ * @returns The same list when the settings pick as before.
113
+ */
114
+ function pickedAgain(spectra, before, after) {
115
+ if (samePicking(before, after))
116
+ return spectra;
117
+ return spectra.map((spectrum) => repickBands(spectrum, after));
118
+ }
119
+ //# sourceMappingURL=irBandState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"irBandState.js","sourceRoot":"","sources":["../../../src/ir/core/irBandState.ts"],"names":[],"mappings":"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"}
@@ -90,6 +90,17 @@ export declare const irCommands: {
90
90
  readonly shortcuts: readonly ["Drag a rectangle"];
91
91
  }];
92
92
  };
93
+ readonly pickTool: {
94
+ readonly title: "Pick bands by hand";
95
+ readonly shortcut: {
96
+ readonly keys: readonly ["k"];
97
+ };
98
+ readonly description: "A click adds the band under it to the selected spectrum, at its top; a click on a marked band takes it away. A drag still zooms, and bands picked by hand stay put when the threshold moves.";
99
+ readonly gestures: readonly [{
100
+ readonly title: "Over the chart";
101
+ readonly shortcuts: readonly ["Click"];
102
+ }];
103
+ };
93
104
  readonly zoomIn: {
94
105
  readonly title: "Zoom in";
95
106
  readonly shortcut: {
@@ -1 +1 @@
1
- {"version":3,"file":"irCommands.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,oCAAoC;AACpC,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED,4EAA4E;AAC5E,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACjC;AAED,oEAAoE;AACpE,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4EuB,CAAC;AAE/C,yDAAyD;AACzD,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC;AAElD,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAE/E,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAC9C,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAG5D"}
1
+ {"version":3,"file":"irCommands.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,oCAAoC;AACpC,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED,4EAA4E;AAC5E,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CACjC;AAED,oEAAoE;AACpE,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFuB,CAAC;AAE/C,yDAAyD;AACzD,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC;AAElD,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAE/E,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,CAC9C,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAG5D"}
@@ -41,6 +41,12 @@ export const irCommands = {
41
41
  description: 'A drag zooms to exactly the rectangle it sweeps out, both axes at once — for looking into a baseline or a shoulder rather than across the spectrum. It is the only drag on percent transmittance.',
42
42
  gestures: [{ title: 'Over the chart', shortcuts: ['Drag a rectangle'] }],
43
43
  },
44
+ pickTool: {
45
+ title: 'Pick bands by hand',
46
+ shortcut: { keys: ['k'] },
47
+ description: 'A click adds the band under it to the selected spectrum, at its top; a click on a marked band takes it away. A drag still zooms, and bands picked by hand stay put when the threshold moves.',
48
+ gestures: [{ title: 'Over the chart', shortcuts: ['Click'] }],
49
+ },
44
50
  zoomIn: {
45
51
  title: 'Zoom in',
46
52
  shortcut: { keys: ['+', '='] },
@@ -1 +1 @@
1
- {"version":3,"file":"irCommands.js","sourceRoot":"","sources":["../../../src/ir/core/irCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"irCommands.js","sourceRoot":"","sources":["../../../src/ir/core/irCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The bands of an infrared spectrum as a notebook writes them, and back: the
3
+ * peaks of the host protocol's `spectra.ir.jdx` and `spectra.ir.peaks`.
4
+ *
5
+ * The two differ in two ways only: a notebook's transmittance is a fraction
6
+ * where the viewer holds a percentage, and it calls a band's strength `kind`.
7
+ */
8
+ import type { IrPeakValue } from '../../host/core/irKinds.ts';
9
+ import type { IrBand } from './irBand.ts';
10
+ import type { IrSpectrum } from './irSpectrum.ts';
11
+ /**
12
+ * The bands a notebook handed over with a spectrum.
13
+ *
14
+ * Each stays where the notebook put it, with the values it gave; a value it
15
+ * left out is read off the spectrum at the nearest sample, and a strength
16
+ * letter that is not one of `w`, `m` and `S` is worked out again.
17
+ * @param spectrum - The spectrum they were picked on.
18
+ * @param peaks - The peaks, in any order.
19
+ * @returns The bands, ascending, one per wavenumber.
20
+ */
21
+ export declare function bandsFromPeaks(spectrum: IrSpectrum, peaks: readonly IrPeakValue[]): IrBand[];
22
+ /**
23
+ * Bands as a notebook keeps them.
24
+ * @param bands - The bands, as the viewer holds them.
25
+ * @returns The peaks, in the same order.
26
+ */
27
+ export declare function peaksFromBands(bands: readonly IrBand[]): IrPeakValue[];
28
+ //# sourceMappingURL=irPeaks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"irPeaks.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irPeaks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,SAAS,WAAW,EAAE,GAC5B,MAAM,EAAE,CAqBV;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,EAAE,CActE"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * The bands of an infrared spectrum as a notebook writes them, and back: the
3
+ * peaks of the host protocol's `spectra.ir.jdx` and `spectra.ir.peaks`.
4
+ *
5
+ * The two differ in two ways only: a notebook's transmittance is a fraction
6
+ * where the viewer holds a percentage, and it calls a band's strength `kind`.
7
+ */
8
+ import { xFindClosestIndex } from 'ml-spectra-processing';
9
+ import { bandAtIndex } from "./handPicking.js";
10
+ import { orderedBands } from "./spectrumBands.js";
11
+ /**
12
+ * The bands a notebook handed over with a spectrum.
13
+ *
14
+ * Each stays where the notebook put it, with the values it gave; a value it
15
+ * left out is read off the spectrum at the nearest sample, and a strength
16
+ * letter that is not one of `w`, `m` and `S` is worked out again.
17
+ * @param spectrum - The spectrum they were picked on.
18
+ * @param peaks - The peaks, in any order.
19
+ * @returns The bands, ascending, one per wavenumber.
20
+ */
21
+ export function bandsFromPeaks(spectrum, peaks) {
22
+ const bands = [];
23
+ for (const peak of peaks) {
24
+ const { wavenumber, absorbance, transmittance, kind } = peak;
25
+ if (!Number.isFinite(wavenumber))
26
+ continue;
27
+ const read = bandAtIndex(spectrum, xFindClosestIndex(spectrum.wavenumber, wavenumber));
28
+ if (read === null)
29
+ continue;
30
+ bands.push({
31
+ ...read,
32
+ wavenumber,
33
+ ...(absorbance === undefined ? {} : { absorbance }),
34
+ ...(transmittance === undefined
35
+ ? {}
36
+ : { transmittance: transmittance * 100 }),
37
+ strength: isStrength(kind) ? kind : read.strength,
38
+ });
39
+ }
40
+ return orderedBands(spectrum.id, bands);
41
+ }
42
+ /**
43
+ * Bands as a notebook keeps them.
44
+ * @param bands - The bands, as the viewer holds them.
45
+ * @returns The peaks, in the same order.
46
+ */
47
+ export function peaksFromBands(bands) {
48
+ const peaks = [];
49
+ for (const band of bands) {
50
+ const { wavenumber, absorbance, transmittance, strength } = band;
51
+ peaks.push({
52
+ wavenumber,
53
+ ...(absorbance === undefined ? {} : { absorbance }),
54
+ ...(transmittance === undefined
55
+ ? {}
56
+ : { transmittance: transmittance / 100 }),
57
+ kind: strength,
58
+ });
59
+ }
60
+ return peaks;
61
+ }
62
+ function isStrength(kind) {
63
+ return kind !== undefined && STRENGTHS.includes(kind);
64
+ }
65
+ const STRENGTHS = ['w', 'm', 'S'];
66
+ //# sourceMappingURL=irPeaks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"irPeaks.js","sourceRoot":"","sources":["../../../src/ir/core/irPeaks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAoB,EACpB,KAA6B;IAE7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,SAAS;QAC3C,MAAM,IAAI,GAAG,WAAW,CACtB,QAAQ,EACR,iBAAiB,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CACnD,CAAC;QACF,IAAI,IAAI,KAAK,IAAI;YAAE,SAAS;QAC5B,KAAK,CAAC,IAAI,CAAC;YACT,GAAG,IAAI;YACP,UAAU;YACV,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;YACnD,GAAG,CAAC,aAAa,KAAK,SAAS;gBAC7B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,GAAG,GAAG,EAAE,CAAC;YAC3C,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;SAClD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAwB;IACrD,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC;YACT,UAAU;YACV,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;YACnD,GAAG,CAAC,aAAa,KAAK,SAAS;gBAC7B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,GAAG,GAAG,EAAE,CAAC;YAC3C,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,IAAwB;IAC1C,OAAO,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,SAAS,GAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAA4B,CAAC"}
@@ -12,6 +12,7 @@
12
12
  * selecting the spectrum already selected, closing an error that is already
13
13
  * closed.
14
14
  */
15
+ import type { IrBand } from './irBand.ts';
15
16
  import type { IrPanelId } from './irSidePanels.ts';
16
17
  import type { IrDomain, IrSpectrum } from './irSpectrum.ts';
17
18
  import type { IrSettings, IrState, IrTool, PartialIrState } from './irState.ts';
@@ -37,6 +38,13 @@ export type IrAction = {
37
38
  type: 'setSpectrumVisible';
38
39
  id: string;
39
40
  visible: boolean;
41
+ } | {
42
+ type: 'setBands';
43
+ id: string;
44
+ bands: IrBand[];
45
+ } | {
46
+ type: 'resetBands';
47
+ id: string;
40
48
  } | {
41
49
  type: 'selectSpectrum';
42
50
  id: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"irReducer.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irReducer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGhF,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,SAAS,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtB;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAmJnE"}
1
+ {"version":3,"file":"irReducer.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irReducer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAS1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGhF,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,SAAS,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtB;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAwJnE"}
@@ -12,7 +12,8 @@
12
12
  * selecting the spectrum already selected, closing an error that is already
13
13
  * closed.
14
14
  */
15
- import { isIrWindow, mergeIrSettings } from "./irState.js";
15
+ import { arriving, changeSettings, mapSpectrum, resetSpectrumBands, restoreState, setSpectrumBands, } from "./irBandState.js";
16
+ import { isIrWindow } from "./irState.js";
16
17
  /**
17
18
  * Fold one action into the state.
18
19
  * @param state - The state in force.
@@ -24,7 +25,10 @@ export function irReducer(state, action) {
24
25
  case 'addSpectra': {
25
26
  if (action.spectra.length === 0)
26
27
  return state;
27
- const spectra = [...state.data.spectra, ...action.spectra];
28
+ const spectra = [
29
+ ...state.data.spectra,
30
+ ...arriving(state, action.spectra),
31
+ ];
28
32
  return {
29
33
  ...state,
30
34
  data: { spectra },
@@ -42,7 +46,7 @@ export function irReducer(state, action) {
42
46
  case 'setSpectra': {
43
47
  return {
44
48
  ...state,
45
- data: { spectra: [...action.spectra] },
49
+ data: { spectra: arriving(state, action.spectra) },
46
50
  view: {
47
51
  ...state.view,
48
52
  selectedId: action.spectra[0]?.id ?? null,
@@ -86,6 +90,12 @@ export function irReducer(state, action) {
86
90
  ? spectrum
87
91
  : { ...spectrum, visible: action.visible });
88
92
  }
93
+ case 'setBands': {
94
+ return setSpectrumBands(state, action.id, action.bands);
95
+ }
96
+ case 'resetBands': {
97
+ return resetSpectrumBands(state, action.id);
98
+ }
89
99
  case 'selectSpectrum': {
90
100
  if (state.view.selectedId === action.id)
91
101
  return state;
@@ -125,16 +135,10 @@ export function irReducer(state, action) {
125
135
  return { ...state, view: { ...state.view, error: action.error } };
126
136
  }
127
137
  case 'setSettings': {
128
- const settings = mergeIrSettings(state.settings, action.settings);
129
- return { ...state, settings };
138
+ return changeSettings(state, action.settings);
130
139
  }
131
140
  case 'loadState': {
132
- const { data, view, settings } = action.state;
133
- return {
134
- data: data === undefined ? state.data : { spectra: [...data.spectra] },
135
- view: { ...state.view, ...view },
136
- settings: mergeIrSettings(state.settings, settings),
137
- };
141
+ return restoreState(state, action.state);
138
142
  }
139
143
  case 'clear': {
140
144
  if (state.data.spectra.length === 0 && state.view.error === null) {
@@ -151,27 +155,6 @@ export function irReducer(state, action) {
151
155
  // no default
152
156
  }
153
157
  }
154
- /**
155
- * Change one spectrum, leaving the state alone when it did not change.
156
- * @param state - The state in force.
157
- * @param id - Which spectrum.
158
- * @param change - What to make of it; return it unchanged for no change.
159
- * @returns The new state, or the old one.
160
- */
161
- function mapSpectrum(state, id, change) {
162
- let changed = false;
163
- const spectra = state.data.spectra.map((spectrum) => {
164
- if (spectrum.id !== id)
165
- return spectrum;
166
- const next = change(spectrum);
167
- if (next !== spectrum)
168
- changed = true;
169
- return next;
170
- });
171
- if (!changed)
172
- return state;
173
- return { ...state, data: { spectra }, view: { ...state.view, error: null } };
174
- }
175
158
  /**
176
159
  * Refuse an action, saying why.
177
160
  * @param state - The state in force.
@@ -1 +1 @@
1
- {"version":3,"file":"irReducer.js","sourceRoot":"","sources":["../../../src/ir/core/irReducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"irReducer.js","sourceRoot":"","sources":["../../../src/ir/core/irReducer.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@
22
22
  */
23
23
  import type { DataXY } from 'cheminfo-types';
24
24
  import type { ChartDomain } from '../../chart/core/chartDomain.ts';
25
+ import type { IrBand } from './irBand.ts';
25
26
  /**
26
27
  * One trace of a measurement: wavenumber against whichever value axis is drawn.
27
28
  *
@@ -141,6 +142,20 @@ export interface IrSpectrum {
141
142
  * @default false
142
143
  */
143
144
  excludeFromDomain?: boolean;
145
+ /**
146
+ * The bands picked on it, ascending by wavenumber. The viewer picks them
147
+ * when a spectrum arrives without any; a host may hand them over with it, as
148
+ * a notebook that keeps them does.
149
+ * @default undefined
150
+ */
151
+ bands?: IrBand[];
152
+ /**
153
+ * Whether `bands` were picked by hand — edited in the viewer, or handed over
154
+ * — rather than found with the picking settings, which re-pick only a list
155
+ * that was not.
156
+ * @default false
157
+ */
158
+ bandsByHand?: boolean;
144
159
  }
145
160
  /**
146
161
  * The window the chart is showing, in data units.
@@ -1 +1 @@
1
- {"version":3,"file":"irSpectrum.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irSpectrum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAE3C;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,mCAAmC;IACnC,MAAM,EAAE,QAAQ,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,MAAM;IACrB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,uDAAuD;IACvD,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,YAAY,GAAG,eAAe,GAAG,WAAW,CAAC;AAElE,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;OASG;IACH,UAAU,EAAE,YAAY,CAAC;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,0BAA0B;IAC1B,MAAM,EAAE,QAAQ,CAAC;IACjB,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CACrB,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,GAAG,SAAS,CAKrB"}
1
+ {"version":3,"file":"irSpectrum.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irSpectrum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAE3C;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,mCAAmC;IACnC,MAAM,EAAE,QAAQ,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,MAAM;IACrB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,uDAAuD;IACvD,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,YAAY,GAAG,eAAe,GAAG,WAAW,CAAC;AAElE,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;OASG;IACH,UAAU,EAAE,YAAY,CAAC;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,0BAA0B;IAC1B,MAAM,EAAE,QAAQ,CAAC;IACjB,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CACrB,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,GAAG,SAAS,CAKrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"irSpectrum.js","sourceRoot":"","sources":["../../../src/ir/core/irSpectrum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA+IH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CACrB,QAAoB,EACpB,IAAY;IAEZ,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,MAAM,KAAK,SAAS;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"irSpectrum.js","sourceRoot":"","sources":["../../../src/ir/core/irSpectrum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA+JH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CACrB,QAAoB,EACpB,IAAY;IAEZ,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,MAAM,KAAK,SAAS;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC"}
@@ -7,10 +7,10 @@
7
7
  * `settings` is the workspace, which is how every spectrum is drawn whichever
8
8
  * ones happen to be open.
9
9
  *
10
- * The bands are **not** in here. They are derived from the spectra and the
11
- * picking settings, so holding them would mean holding an answer that has to be
12
- * kept in step with its own inputs — `useIrEditor` recomputes them instead, and
13
- * a stale band is then impossible rather than merely unlikely.
10
+ * The bands are in `data`, each spectrum carrying its own: picked when it
11
+ * arrives, picked again by the reducer when the settings change while they were
12
+ * found automatically, and left alone once picked by hand. That is what lets a
13
+ * band be added or taken away, and a list be handed to a host and back.
14
14
  */
15
15
  import type { IrPanelId, IrSidePanelId } from './irSidePanels.ts';
16
16
  import type { IrDomain, IrMode, IrSpectrum } from './irSpectrum.ts';
@@ -21,8 +21,11 @@ export interface IrData {
21
21
  /** The spectra, in the order they were loaded. */
22
22
  spectra: IrSpectrum[];
23
23
  }
24
- /** What a drag across the chart is for while it is chosen. */
25
- export type IrTool = 'read' | 'box';
24
+ /**
25
+ * What a drag across the chart is for while it is chosen, and for `pick`, what
26
+ * a click is: a band added where it lands, or taken away.
27
+ */
28
+ export type IrTool = 'read' | 'box' | 'pick';
26
29
  /** Where you are in the viewer. */
27
30
  export interface IrView {
28
31
  /** Identity of the spectrum the panels act on, `null` for none. */
@@ -1 +1 @@
1
- {"version":3,"file":"irState.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"irState.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irState.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,13 @@
7
7
  * `settings` is the workspace, which is how every spectrum is drawn whichever
8
8
  * ones happen to be open.
9
9
  *
10
- * The bands are **not** in here. They are derived from the spectra and the
11
- * picking settings, so holding them would mean holding an answer that has to be
12
- * kept in step with its own inputs — `useIrEditor` recomputes them instead, and
13
- * a stale band is then impossible rather than merely unlikely.
10
+ * The bands are in `data`, each spectrum carrying its own: picked when it
11
+ * arrives, picked again by the reducer when the settings change while they were
12
+ * found automatically, and left alone once picked by hand. That is what lets a
13
+ * band be added or taken away, and a list be handed to a host and back.
14
14
  */
15
15
  import { defaultIrMode, irModeFor, offersIrMode } from "./irTechnique.js";
16
+ import { withBands } from "./spectrumBands.js";
16
17
  /** The panel the splitter brings back when it is dragged open on nothing. */
17
18
  export const DEFAULT_SIDE_PANEL = 'spectra';
18
19
  /**
@@ -59,8 +60,11 @@ export function createIrState(options = {}) {
59
60
  technique,
60
61
  mode: defaultIrMode(technique),
61
62
  };
63
+ const merged = mergeIrSettings(opened, settings);
62
64
  return {
63
- data: { spectra: [...spectra] },
65
+ data: {
66
+ spectra: spectra.map((spectrum) => withBands(spectrum, merged.picking)),
67
+ },
64
68
  view: {
65
69
  selectedId: spectra[0]?.id ?? null,
66
70
  domain: null,
@@ -68,7 +72,7 @@ export function createIrState(options = {}) {
68
72
  openPanelIds: [...(panelIds ?? DEFAULT_SIDE_PANELS)],
69
73
  error: null,
70
74
  },
71
- settings: mergeIrSettings(opened, settings),
75
+ settings: merged,
72
76
  };
73
77
  }
74
78
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"irState.js","sourceRoot":"","sources":["../../../src/ir/core/irState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"irState.js","sourceRoot":"","sources":["../../../src/ir/core/irState.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  * between the bands and miss every band there is. A Raman spectrum is picked on
11
11
  * its intensity, by `ramanBands`, with the same picker.
12
12
  */
13
+ import type { MeasurementXY } from 'cheminfo-types';
13
14
  import type { IrBand } from './irBand.ts';
14
15
  import type { IrSpectrum } from './irSpectrum.ts';
15
16
  /** How the bands are picked. */
@@ -68,4 +69,17 @@ export interface PickBandsOptions {
68
69
  * @returns The bands, ascending by wavenumber.
69
70
  */
70
71
  export declare function pickBands(spectrum: IrSpectrum, options?: PickBandsOptions): IrBand[];
72
+ /**
73
+ * The spectrum as `ir-spectrum` wants it.
74
+ *
75
+ * The `t` variable is given its extremes, because that is what the strength
76
+ * letter is worked out from: without them the conversion assumes a spectrum
77
+ * running the full 0 to 100 percent, and every band of a shallow ATR trace that
78
+ * never leaves the eighties comes back weak.
79
+ * @param wavenumber - The wavenumbers, ascending.
80
+ * @param absorbance - Absorbance at each.
81
+ * @param transmittance - Percent transmittance at each.
82
+ * @returns A measurement carrying all three variables.
83
+ */
84
+ export declare function infraredMeasurement(wavenumber: Float64Array, absorbance: Float64Array, transmittance: Float64Array): MeasurementXY;
71
85
  //# sourceMappingURL=pickBands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pickBands.d.ts","sourceRoot":"","sources":["../../../src/ir/core/pickBands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,aAAa,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,UAAU,EACpB,OAAO,GAAE,gBAAqB,GAC7B,MAAM,EAAE,CA2BV"}
1
+ {"version":3,"file":"pickBands.d.ts","sourceRoot":"","sources":["../../../src/ir/core/pickBands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,aAAa,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAWlD,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,UAAU,EACpB,OAAO,GAAE,gBAAqB,GAC7B,MAAM,EAAE,CA2BV;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,YAAY,EACxB,UAAU,EAAE,YAAY,EACxB,aAAa,EAAE,YAAY,GAC1B,aAAa,CA+Bf"}