react-cheminfo 0.27.0 → 0.29.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 (696) hide show
  1. package/README.md +38 -25
  2. package/lib/chart/core/axisLabels.d.ts +82 -0
  3. package/lib/chart/core/axisLabels.d.ts.map +1 -0
  4. package/lib/chart/core/axisLabels.js +111 -0
  5. package/lib/chart/core/axisLabels.js.map +1 -0
  6. package/lib/chart/core/boxLayout.d.ts +53 -0
  7. package/lib/chart/core/boxLayout.d.ts.map +1 -0
  8. package/lib/chart/core/boxLayout.js +112 -0
  9. package/lib/chart/core/boxLayout.js.map +1 -0
  10. package/lib/chart/core/chartAxisScale.d.ts +23 -2
  11. package/lib/chart/core/chartAxisScale.d.ts.map +1 -1
  12. package/lib/chart/core/chartAxisScale.js +64 -13
  13. package/lib/chart/core/chartAxisScale.js.map +1 -1
  14. package/lib/chart/core/chartDomain.d.ts +160 -0
  15. package/lib/chart/core/chartDomain.d.ts.map +1 -0
  16. package/lib/chart/core/chartDomain.js +46 -0
  17. package/lib/chart/core/chartDomain.js.map +1 -0
  18. package/lib/chart/core/chartGeometry.d.ts +131 -0
  19. package/lib/chart/core/chartGeometry.d.ts.map +1 -0
  20. package/lib/chart/core/chartGeometry.js +101 -0
  21. package/lib/chart/core/chartGeometry.js.map +1 -0
  22. package/lib/chart/core/chartPane.d.ts +11 -0
  23. package/lib/chart/core/chartPane.d.ts.map +1 -0
  24. package/lib/chart/core/chartPane.js +11 -0
  25. package/lib/chart/core/chartPane.js.map +1 -0
  26. package/lib/chart/core/chartScale.d.ts +4 -1
  27. package/lib/chart/core/chartScale.d.ts.map +1 -1
  28. package/lib/chart/core/chartScale.js +8 -4
  29. package/lib/chart/core/chartScale.js.map +1 -1
  30. package/lib/chart/core/chartTheme.d.ts +156 -0
  31. package/lib/chart/core/chartTheme.d.ts.map +1 -0
  32. package/lib/chart/core/chartTheme.js +156 -0
  33. package/lib/chart/core/chartTheme.js.map +1 -0
  34. package/lib/chart/core/chartViewport.d.ts +32 -5
  35. package/lib/chart/core/chartViewport.d.ts.map +1 -1
  36. package/lib/chart/core/chartViewport.js +40 -11
  37. package/lib/chart/core/chartViewport.js.map +1 -1
  38. package/lib/chart/core/guidePlacement.d.ts +52 -0
  39. package/lib/chart/core/guidePlacement.d.ts.map +1 -0
  40. package/lib/chart/core/guidePlacement.js +52 -0
  41. package/lib/chart/core/guidePlacement.js.map +1 -0
  42. package/lib/chart/core/index.d.ts +29 -2
  43. package/lib/chart/core/index.d.ts.map +1 -1
  44. package/lib/chart/core/index.js +19 -2
  45. package/lib/chart/core/index.js.map +1 -1
  46. package/lib/chart/core/labelStack.d.ts +27 -0
  47. package/lib/chart/core/labelStack.d.ts.map +1 -0
  48. package/lib/chart/core/labelStack.js +62 -0
  49. package/lib/chart/core/labelStack.js.map +1 -0
  50. package/lib/chart/core/legendBox.d.ts +152 -0
  51. package/lib/chart/core/legendBox.d.ts.map +1 -0
  52. package/lib/chart/core/legendBox.js +169 -0
  53. package/lib/chart/core/legendBox.js.map +1 -0
  54. package/lib/chart/core/selectionGeometry.d.ts +45 -0
  55. package/lib/chart/core/selectionGeometry.d.ts.map +1 -0
  56. package/lib/chart/core/selectionGeometry.js +49 -0
  57. package/lib/chart/core/selectionGeometry.js.map +1 -0
  58. package/lib/chart/core/spectrumColor.d.ts +80 -0
  59. package/lib/chart/core/spectrumColor.d.ts.map +1 -0
  60. package/lib/chart/core/spectrumColor.js +120 -0
  61. package/lib/chart/core/spectrumColor.js.map +1 -0
  62. package/lib/chart/core/stackCapacity.d.ts +136 -0
  63. package/lib/chart/core/stackCapacity.d.ts.map +1 -0
  64. package/lib/chart/core/stackCapacity.js +153 -0
  65. package/lib/chart/core/stackCapacity.js.map +1 -0
  66. package/lib/chart/core/svgPoint.d.ts +62 -0
  67. package/lib/chart/core/svgPoint.d.ts.map +1 -0
  68. package/lib/chart/core/svgPoint.js +43 -0
  69. package/lib/chart/core/svgPoint.js.map +1 -0
  70. package/lib/chart/core/tracePath.d.ts +94 -0
  71. package/lib/chart/core/tracePath.d.ts.map +1 -0
  72. package/lib/chart/core/tracePath.js +191 -0
  73. package/lib/chart/core/tracePath.js.map +1 -0
  74. package/lib/chart/core/trackerReadout.d.ts +55 -0
  75. package/lib/chart/core/trackerReadout.d.ts.map +1 -0
  76. package/lib/chart/core/trackerReadout.js +53 -0
  77. package/lib/chart/core/trackerReadout.js.map +1 -0
  78. package/lib/chart/core/viewTransform.d.ts +167 -0
  79. package/lib/chart/core/viewTransform.d.ts.map +1 -0
  80. package/lib/chart/core/viewTransform.js +188 -0
  81. package/lib/chart/core/viewTransform.js.map +1 -0
  82. package/lib/chart/core/zoomDomain.d.ts +127 -0
  83. package/lib/chart/core/zoomDomain.d.ts.map +1 -0
  84. package/lib/chart/core/zoomDomain.js +175 -0
  85. package/lib/chart/core/zoomDomain.js.map +1 -0
  86. package/lib/chart/ui/Axes.d.ts +104 -0
  87. package/lib/chart/ui/Axes.d.ts.map +1 -0
  88. package/lib/chart/ui/Axes.js +155 -0
  89. package/lib/chart/ui/Axes.js.map +1 -0
  90. package/lib/chart/ui/AxisGuide.d.ts +60 -0
  91. package/lib/chart/ui/AxisGuide.d.ts.map +1 -0
  92. package/lib/chart/ui/AxisGuide.js +111 -0
  93. package/lib/chart/ui/AxisGuide.js.map +1 -0
  94. package/lib/chart/ui/ChartStack.d.ts +81 -0
  95. package/lib/chart/ui/ChartStack.d.ts.map +1 -0
  96. package/lib/chart/ui/ChartStack.js +42 -0
  97. package/lib/chart/ui/ChartStack.js.map +1 -0
  98. package/lib/chart/ui/ChartTracker.d.ts +36 -0
  99. package/lib/chart/ui/ChartTracker.d.ts.map +1 -0
  100. package/lib/chart/ui/ChartTracker.js +27 -0
  101. package/lib/chart/ui/ChartTracker.js.map +1 -0
  102. package/lib/chart/ui/PlotCaption.d.ts +44 -0
  103. package/lib/chart/ui/PlotCaption.d.ts.map +1 -0
  104. package/lib/chart/ui/PlotCaption.js +68 -0
  105. package/lib/chart/ui/PlotCaption.js.map +1 -0
  106. package/lib/chart/ui/SelectionRect.d.ts +27 -0
  107. package/lib/chart/ui/SelectionRect.d.ts.map +1 -0
  108. package/lib/chart/ui/SelectionRect.js +31 -0
  109. package/lib/chart/ui/SelectionRect.js.map +1 -0
  110. package/lib/chart/ui/TraceLegend.d.ts +99 -0
  111. package/lib/chart/ui/TraceLegend.d.ts.map +1 -0
  112. package/lib/chart/ui/TraceLegend.js +45 -0
  113. package/lib/chart/ui/TraceLegend.js.map +1 -0
  114. package/lib/chart/ui/chartGestures.d.ts +158 -0
  115. package/lib/chart/ui/chartGestures.d.ts.map +1 -0
  116. package/lib/chart/ui/chartGestures.js +145 -0
  117. package/lib/chart/ui/chartGestures.js.map +1 -0
  118. package/lib/chart/ui/chartStackLevel.d.ts +115 -0
  119. package/lib/chart/ui/chartStackLevel.d.ts.map +1 -0
  120. package/lib/chart/ui/chartStackLevel.js +96 -0
  121. package/lib/chart/ui/chartStackLevel.js.map +1 -0
  122. package/lib/chart/ui/chartSurface.d.ts +35 -0
  123. package/lib/chart/ui/chartSurface.d.ts.map +1 -0
  124. package/lib/chart/ui/chartSurface.js +58 -0
  125. package/lib/chart/ui/chartSurface.js.map +1 -0
  126. package/lib/chart/ui/index.d.ts +24 -0
  127. package/lib/chart/ui/index.d.ts.map +1 -1
  128. package/lib/chart/ui/index.js +13 -0
  129. package/lib/chart/ui/index.js.map +1 -1
  130. package/lib/chart/ui/useChartPointer.d.ts +124 -0
  131. package/lib/chart/ui/useChartPointer.d.ts.map +1 -0
  132. package/lib/chart/ui/useChartPointer.js +152 -0
  133. package/lib/chart/ui/useChartPointer.js.map +1 -0
  134. package/lib/chart/ui/useChartSize.d.ts +49 -0
  135. package/lib/chart/ui/useChartSize.d.ts.map +1 -0
  136. package/lib/chart/ui/useChartSize.js +91 -0
  137. package/lib/chart/ui/useChartSize.js.map +1 -0
  138. package/lib/chart/ui/useChartWindow.d.ts +147 -0
  139. package/lib/chart/ui/useChartWindow.d.ts.map +1 -0
  140. package/lib/chart/ui/useChartWindow.js +135 -0
  141. package/lib/chart/ui/useChartWindow.js.map +1 -0
  142. package/lib/chart/ui/useChartZoom.d.ts +88 -0
  143. package/lib/chart/ui/useChartZoom.d.ts.map +1 -0
  144. package/lib/chart/ui/useChartZoom.js +142 -0
  145. package/lib/chart/ui/useChartZoom.js.map +1 -0
  146. package/lib/chart/ui/useWheelListener.d.ts +30 -0
  147. package/lib/chart/ui/useWheelListener.d.ts.map +1 -0
  148. package/lib/chart/ui/useWheelListener.js +57 -0
  149. package/lib/chart/ui/useWheelListener.js.map +1 -0
  150. package/lib/clipboard/core/copyPng.d.ts +13 -0
  151. package/lib/clipboard/core/copyPng.d.ts.map +1 -0
  152. package/lib/clipboard/core/copyPng.js +19 -0
  153. package/lib/clipboard/core/copyPng.js.map +1 -0
  154. package/lib/clipboard/core/index.d.ts +1 -0
  155. package/lib/clipboard/core/index.d.ts.map +1 -1
  156. package/lib/clipboard/core/index.js +1 -0
  157. package/lib/clipboard/core/index.js.map +1 -1
  158. package/lib/clipboard/ui/CopyableValue.d.ts +12 -9
  159. package/lib/clipboard/ui/CopyableValue.d.ts.map +1 -1
  160. package/lib/clipboard/ui/CopyableValue.js +11 -15
  161. package/lib/clipboard/ui/CopyableValue.js.map +1 -1
  162. package/lib/core.d.ts +1 -0
  163. package/lib/core.d.ts.map +1 -1
  164. package/lib/core.js +1 -0
  165. package/lib/core.js.map +1 -1
  166. package/lib/download/core/exportStyles.d.ts +22 -0
  167. package/lib/download/core/exportStyles.d.ts.map +1 -0
  168. package/lib/download/core/exportStyles.js +19 -0
  169. package/lib/download/core/exportStyles.js.map +1 -0
  170. package/lib/download/core/imageResolution.d.ts +88 -0
  171. package/lib/download/core/imageResolution.d.ts.map +1 -0
  172. package/lib/download/core/imageResolution.js +77 -0
  173. package/lib/download/core/imageResolution.js.map +1 -0
  174. package/lib/download/core/index.d.ts +13 -0
  175. package/lib/download/core/index.d.ts.map +1 -1
  176. package/lib/download/core/index.js +8 -0
  177. package/lib/download/core/index.js.map +1 -1
  178. package/lib/download/core/pictureExport.d.ts +93 -0
  179. package/lib/download/core/pictureExport.d.ts.map +1 -0
  180. package/lib/download/core/pictureExport.js +116 -0
  181. package/lib/download/core/pictureExport.js.map +1 -0
  182. package/lib/download/core/stackedDrawing.d.ts +36 -0
  183. package/lib/download/core/stackedDrawing.d.ts.map +1 -0
  184. package/lib/download/core/stackedDrawing.js +98 -0
  185. package/lib/download/core/stackedDrawing.js.map +1 -0
  186. package/lib/download/core/svgBounds.d.ts +44 -0
  187. package/lib/download/core/svgBounds.d.ts.map +1 -0
  188. package/lib/download/core/svgBounds.js +69 -0
  189. package/lib/download/core/svgBounds.js.map +1 -0
  190. package/lib/download/core/svgNamespace.d.ts +9 -0
  191. package/lib/download/core/svgNamespace.d.ts.map +1 -0
  192. package/lib/download/core/svgNamespace.js +10 -0
  193. package/lib/download/core/svgNamespace.js.map +1 -0
  194. package/lib/download/core/svgToPng.d.ts +43 -0
  195. package/lib/download/core/svgToPng.d.ts.map +1 -0
  196. package/lib/download/core/svgToPng.js +79 -0
  197. package/lib/download/core/svgToPng.js.map +1 -0
  198. package/lib/download/core/svgToString.d.ts +45 -0
  199. package/lib/download/core/svgToString.d.ts.map +1 -0
  200. package/lib/download/core/svgToString.js +58 -0
  201. package/lib/download/core/svgToString.js.map +1 -0
  202. package/lib/download/ui/ExportDialogFrame.d.ts +46 -0
  203. package/lib/download/ui/ExportDialogFrame.d.ts.map +1 -0
  204. package/lib/download/ui/ExportDialogFrame.js +24 -0
  205. package/lib/download/ui/ExportDialogFrame.js.map +1 -0
  206. package/lib/download/ui/ExportImageDialog.d.ts +47 -0
  207. package/lib/download/ui/ExportImageDialog.d.ts.map +1 -0
  208. package/lib/download/ui/ExportImageDialog.js +25 -0
  209. package/lib/download/ui/ExportImageDialog.js.map +1 -0
  210. package/lib/download/ui/ExportNameField.d.ts +29 -0
  211. package/lib/download/ui/ExportNameField.d.ts.map +1 -0
  212. package/lib/download/ui/ExportNameField.js +99 -0
  213. package/lib/download/ui/ExportNameField.js.map +1 -0
  214. package/lib/download/ui/ExportPictureSection.d.ts +38 -0
  215. package/lib/download/ui/ExportPictureSection.d.ts.map +1 -0
  216. package/lib/download/ui/ExportPictureSection.js +48 -0
  217. package/lib/download/ui/ExportPictureSection.js.map +1 -0
  218. package/lib/download/ui/index.d.ts +10 -0
  219. package/lib/download/ui/index.d.ts.map +1 -1
  220. package/lib/download/ui/index.js +5 -0
  221. package/lib/download/ui/index.js.map +1 -1
  222. package/lib/download/ui/useDrawingBox.d.ts +23 -0
  223. package/lib/download/ui/useDrawingBox.d.ts.map +1 -0
  224. package/lib/download/ui/useDrawingBox.js +21 -0
  225. package/lib/download/ui/useDrawingBox.js.map +1 -0
  226. package/lib/error/core/describeSource.d.ts +17 -0
  227. package/lib/error/core/describeSource.d.ts.map +1 -0
  228. package/lib/error/core/describeSource.js +19 -0
  229. package/lib/error/core/describeSource.js.map +1 -0
  230. package/lib/error/core/index.d.ts +1 -0
  231. package/lib/error/core/index.d.ts.map +1 -1
  232. package/lib/error/core/index.js +1 -0
  233. package/lib/error/core/index.js.map +1 -1
  234. package/lib/help/ui/HelpBody.d.ts +10 -1
  235. package/lib/help/ui/HelpBody.d.ts.map +1 -1
  236. package/lib/help/ui/HelpBody.js +24 -1
  237. package/lib/help/ui/HelpBody.js.map +1 -1
  238. package/lib/help/ui/index.d.ts +1 -1
  239. package/lib/help/ui/index.d.ts.map +1 -1
  240. package/lib/help/ui/index.js.map +1 -1
  241. package/lib/ir/core/analysisSpectra.d.ts +46 -0
  242. package/lib/ir/core/analysisSpectra.d.ts.map +1 -0
  243. package/lib/ir/core/analysisSpectra.js +187 -0
  244. package/lib/ir/core/analysisSpectra.js.map +1 -0
  245. package/lib/ir/core/assignBands.d.ts +83 -0
  246. package/lib/ir/core/assignBands.d.ts.map +1 -0
  247. package/lib/ir/core/assignBands.js +83 -0
  248. package/lib/ir/core/assignBands.js.map +1 -0
  249. package/lib/ir/core/bandAssignments.d.ts +47 -0
  250. package/lib/ir/core/bandAssignments.d.ts.map +1 -0
  251. package/lib/ir/core/bandAssignments.js +305 -0
  252. package/lib/ir/core/bandAssignments.js.map +1 -0
  253. package/lib/ir/core/bandLabelPlan.d.ts +93 -0
  254. package/lib/ir/core/bandLabelPlan.d.ts.map +1 -0
  255. package/lib/ir/core/bandLabelPlan.js +104 -0
  256. package/lib/ir/core/bandLabelPlan.js.map +1 -0
  257. package/lib/ir/core/detectIrFormat.d.ts +23 -0
  258. package/lib/ir/core/detectIrFormat.d.ts.map +1 -0
  259. package/lib/ir/core/detectIrFormat.js +133 -0
  260. package/lib/ir/core/detectIrFormat.js.map +1 -0
  261. package/lib/ir/core/downloadSpectra.d.ts +26 -0
  262. package/lib/ir/core/downloadSpectra.d.ts.map +1 -0
  263. package/lib/ir/core/downloadSpectra.js +37 -0
  264. package/lib/ir/core/downloadSpectra.js.map +1 -0
  265. package/lib/ir/core/fromJcamp.d.ts +35 -0
  266. package/lib/ir/core/fromJcamp.d.ts.map +1 -0
  267. package/lib/ir/core/fromJcamp.js +48 -0
  268. package/lib/ir/core/fromJcamp.js.map +1 -0
  269. package/lib/ir/core/fromSpc.d.ts +30 -0
  270. package/lib/ir/core/fromSpc.d.ts.map +1 -0
  271. package/lib/ir/core/fromSpc.js +40 -0
  272. package/lib/ir/core/fromSpc.js.map +1 -0
  273. package/lib/ir/core/index.d.ts +51 -0
  274. package/lib/ir/core/index.d.ts.map +1 -0
  275. package/lib/ir/core/index.js +35 -0
  276. package/lib/ir/core/index.js.map +1 -0
  277. package/lib/ir/core/irBand.d.ts +45 -0
  278. package/lib/ir/core/irBand.d.ts.map +1 -0
  279. package/lib/ir/core/irBand.js +30 -0
  280. package/lib/ir/core/irBand.js.map +1 -0
  281. package/lib/ir/core/irCommands.d.ts +168 -0
  282. package/lib/ir/core/irCommands.d.ts.map +1 -0
  283. package/lib/ir/core/irCommands.js +94 -0
  284. package/lib/ir/core/irCommands.js.map +1 -0
  285. package/lib/ir/core/irDomain.d.ts +63 -0
  286. package/lib/ir/core/irDomain.d.ts.map +1 -0
  287. package/lib/ir/core/irDomain.js +136 -0
  288. package/lib/ir/core/irDomain.js.map +1 -0
  289. package/lib/ir/core/irEditorApi.d.ts +42 -0
  290. package/lib/ir/core/irEditorApi.d.ts.map +1 -0
  291. package/lib/ir/core/irEditorApi.js +10 -0
  292. package/lib/ir/core/irEditorApi.js.map +1 -0
  293. package/lib/ir/core/irFormat.d.ts +42 -0
  294. package/lib/ir/core/irFormat.d.ts.map +1 -0
  295. package/lib/ir/core/irFormat.js +51 -0
  296. package/lib/ir/core/irFormat.js.map +1 -0
  297. package/lib/ir/core/irMode.d.ts +160 -0
  298. package/lib/ir/core/irMode.d.ts.map +1 -0
  299. package/lib/ir/core/irMode.js +175 -0
  300. package/lib/ir/core/irMode.js.map +1 -0
  301. package/lib/ir/core/irReducer.d.ts +101 -0
  302. package/lib/ir/core/irReducer.d.ts.map +1 -0
  303. package/lib/ir/core/irReducer.js +207 -0
  304. package/lib/ir/core/irReducer.js.map +1 -0
  305. package/lib/ir/core/irSidePanels.d.ts +22 -0
  306. package/lib/ir/core/irSidePanels.d.ts.map +1 -0
  307. package/lib/ir/core/irSidePanels.js +12 -0
  308. package/lib/ir/core/irSidePanels.js.map +1 -0
  309. package/lib/ir/core/irSpectrum.d.ts +140 -0
  310. package/lib/ir/core/irSpectrum.d.ts.map +1 -0
  311. package/lib/ir/core/irSpectrum.js +34 -0
  312. package/lib/ir/core/irSpectrum.js.map +1 -0
  313. package/lib/ir/core/irState.d.ts +119 -0
  314. package/lib/ir/core/irState.d.ts.map +1 -0
  315. package/lib/ir/core/irState.js +92 -0
  316. package/lib/ir/core/irState.js.map +1 -0
  317. package/lib/ir/core/loadIrSpectra.d.ts +36 -0
  318. package/lib/ir/core/loadIrSpectra.d.ts.map +1 -0
  319. package/lib/ir/core/loadIrSpectra.js +44 -0
  320. package/lib/ir/core/loadIrSpectra.js.map +1 -0
  321. package/lib/ir/core/nearestBand.d.ts +35 -0
  322. package/lib/ir/core/nearestBand.d.ts.map +1 -0
  323. package/lib/ir/core/nearestBand.js +47 -0
  324. package/lib/ir/core/nearestBand.js.map +1 -0
  325. package/lib/ir/core/pickBands.d.ts +70 -0
  326. package/lib/ir/core/pickBands.d.ts.map +1 -0
  327. package/lib/ir/core/pickBands.js +125 -0
  328. package/lib/ir/core/pickBands.js.map +1 -0
  329. package/lib/ir/core/spectrumJcamp.d.ts +58 -0
  330. package/lib/ir/core/spectrumJcamp.d.ts.map +1 -0
  331. package/lib/ir/core/spectrumJcamp.js +156 -0
  332. package/lib/ir/core/spectrumJcamp.js.map +1 -0
  333. package/lib/ir/core/toIrSpectrum.d.ts +59 -0
  334. package/lib/ir/core/toIrSpectrum.d.ts.map +1 -0
  335. package/lib/ir/core/toIrSpectrum.js +56 -0
  336. package/lib/ir/core/toIrSpectrum.js.map +1 -0
  337. package/lib/ir/ui/BandMarks.d.ts +52 -0
  338. package/lib/ir/ui/BandMarks.d.ts.map +1 -0
  339. package/lib/ir/ui/BandMarks.js +71 -0
  340. package/lib/ir/ui/BandMarks.js.map +1 -0
  341. package/lib/ir/ui/BandsPanel.d.ts +31 -0
  342. package/lib/ir/ui/BandsPanel.d.ts.map +1 -0
  343. package/lib/ir/ui/BandsPanel.js +94 -0
  344. package/lib/ir/ui/BandsPanel.js.map +1 -0
  345. package/lib/ir/ui/IrAboutDialog.d.ts +18 -0
  346. package/lib/ir/ui/IrAboutDialog.d.ts.map +1 -0
  347. package/lib/ir/ui/IrAboutDialog.js +32 -0
  348. package/lib/ir/ui/IrAboutDialog.js.map +1 -0
  349. package/lib/ir/ui/IrCanvas.d.ts +38 -0
  350. package/lib/ir/ui/IrCanvas.d.ts.map +1 -0
  351. package/lib/ir/ui/IrCanvas.js +41 -0
  352. package/lib/ir/ui/IrCanvas.js.map +1 -0
  353. package/lib/ir/ui/IrChart.d.ts +28 -0
  354. package/lib/ir/ui/IrChart.d.ts.map +1 -0
  355. package/lib/ir/ui/IrChart.js +114 -0
  356. package/lib/ir/ui/IrChart.js.map +1 -0
  357. package/lib/ir/ui/IrCommandProvider.d.ts +15 -0
  358. package/lib/ir/ui/IrCommandProvider.d.ts.map +1 -0
  359. package/lib/ir/ui/IrCommandProvider.js +14 -0
  360. package/lib/ir/ui/IrCommandProvider.js.map +1 -0
  361. package/lib/ir/ui/IrCommandTooltip.d.ts +16 -0
  362. package/lib/ir/ui/IrCommandTooltip.d.ts.map +1 -0
  363. package/lib/ir/ui/IrCommandTooltip.js +22 -0
  364. package/lib/ir/ui/IrCommandTooltip.js.map +1 -0
  365. package/lib/ir/ui/IrDocumentationDialog.d.ts +18 -0
  366. package/lib/ir/ui/IrDocumentationDialog.d.ts.map +1 -0
  367. package/lib/ir/ui/IrDocumentationDialog.js +68 -0
  368. package/lib/ir/ui/IrDocumentationDialog.js.map +1 -0
  369. package/lib/ir/ui/IrEditor.d.ts +60 -0
  370. package/lib/ir/ui/IrEditor.d.ts.map +1 -0
  371. package/lib/ir/ui/IrEditor.js +42 -0
  372. package/lib/ir/ui/IrEditor.js.map +1 -0
  373. package/lib/ir/ui/IrHeader.d.ts +13 -0
  374. package/lib/ir/ui/IrHeader.d.ts.map +1 -0
  375. package/lib/ir/ui/IrHeader.js +21 -0
  376. package/lib/ir/ui/IrHeader.js.map +1 -0
  377. package/lib/ir/ui/IrLogo.d.ts +20 -0
  378. package/lib/ir/ui/IrLogo.d.ts.map +1 -0
  379. package/lib/ir/ui/IrLogo.js +17 -0
  380. package/lib/ir/ui/IrLogo.js.map +1 -0
  381. package/lib/ir/ui/IrPointerTracker.d.ts +29 -0
  382. package/lib/ir/ui/IrPointerTracker.d.ts.map +1 -0
  383. package/lib/ir/ui/IrPointerTracker.js +47 -0
  384. package/lib/ir/ui/IrPointerTracker.js.map +1 -0
  385. package/lib/ir/ui/IrShell.d.ts +25 -0
  386. package/lib/ir/ui/IrShell.d.ts.map +1 -0
  387. package/lib/ir/ui/IrShell.js +178 -0
  388. package/lib/ir/ui/IrShell.js.map +1 -0
  389. package/lib/ir/ui/IrSidePanel.d.ts +26 -0
  390. package/lib/ir/ui/IrSidePanel.d.ts.map +1 -0
  391. package/lib/ir/ui/IrSidePanel.js +39 -0
  392. package/lib/ir/ui/IrSidePanel.js.map +1 -0
  393. package/lib/ir/ui/IrStateProvider.d.ts +19 -0
  394. package/lib/ir/ui/IrStateProvider.d.ts.map +1 -0
  395. package/lib/ir/ui/IrStateProvider.js +16 -0
  396. package/lib/ir/ui/IrStateProvider.js.map +1 -0
  397. package/lib/ir/ui/IrStatusBar.d.ts +14 -0
  398. package/lib/ir/ui/IrStatusBar.d.ts.map +1 -0
  399. package/lib/ir/ui/IrStatusBar.js +48 -0
  400. package/lib/ir/ui/IrStatusBar.js.map +1 -0
  401. package/lib/ir/ui/IrToolbar.d.ts +18 -0
  402. package/lib/ir/ui/IrToolbar.d.ts.map +1 -0
  403. package/lib/ir/ui/IrToolbar.js +32 -0
  404. package/lib/ir/ui/IrToolbar.js.map +1 -0
  405. package/lib/ir/ui/IrTraces.d.ts +63 -0
  406. package/lib/ir/ui/IrTraces.d.ts.map +1 -0
  407. package/lib/ir/ui/IrTraces.js +72 -0
  408. package/lib/ir/ui/IrTraces.js.map +1 -0
  409. package/lib/ir/ui/MetadataPanel.d.ts +15 -0
  410. package/lib/ir/ui/MetadataPanel.d.ts.map +1 -0
  411. package/lib/ir/ui/MetadataPanel.js +49 -0
  412. package/lib/ir/ui/MetadataPanel.js.map +1 -0
  413. package/lib/ir/ui/SpectraPanel.d.ts +20 -0
  414. package/lib/ir/ui/SpectraPanel.d.ts.map +1 -0
  415. package/lib/ir/ui/SpectraPanel.js +42 -0
  416. package/lib/ir/ui/SpectraPanel.js.map +1 -0
  417. package/lib/ir/ui/SpectrumRow.d.ts +26 -0
  418. package/lib/ir/ui/SpectrumRow.d.ts.map +1 -0
  419. package/lib/ir/ui/SpectrumRow.js +41 -0
  420. package/lib/ir/ui/SpectrumRow.js.map +1 -0
  421. package/lib/ir/ui/index.d.ts +56 -0
  422. package/lib/ir/ui/index.d.ts.map +1 -0
  423. package/lib/ir/ui/index.js +36 -0
  424. package/lib/ir/ui/index.js.map +1 -0
  425. package/lib/ir/ui/irActions.d.ts +52 -0
  426. package/lib/ir/ui/irActions.d.ts.map +1 -0
  427. package/lib/ir/ui/irActions.js +62 -0
  428. package/lib/ir/ui/irActions.js.map +1 -0
  429. package/lib/ir/ui/irChartProps.d.ts +116 -0
  430. package/lib/ir/ui/irChartProps.d.ts.map +1 -0
  431. package/lib/ir/ui/irChartProps.js +14 -0
  432. package/lib/ir/ui/irChartProps.js.map +1 -0
  433. package/lib/ir/ui/irCommandContext.d.ts +35 -0
  434. package/lib/ir/ui/irCommandContext.d.ts.map +1 -0
  435. package/lib/ir/ui/irCommandContext.js +44 -0
  436. package/lib/ir/ui/irCommandContext.js.map +1 -0
  437. package/lib/ir/ui/irStateContext.d.ts +26 -0
  438. package/lib/ir/ui/irStateContext.d.ts.map +1 -0
  439. package/lib/ir/ui/irStateContext.js +37 -0
  440. package/lib/ir/ui/irStateContext.js.map +1 -0
  441. package/lib/ir/ui/useIrEditor.d.ts +51 -0
  442. package/lib/ir/ui/useIrEditor.d.ts.map +1 -0
  443. package/lib/ir/ui/useIrEditor.js +88 -0
  444. package/lib/ir/ui/useIrEditor.js.map +1 -0
  445. package/lib/ir/ui/useIrPointer.d.ts +66 -0
  446. package/lib/ir/ui/useIrPointer.d.ts.map +1 -0
  447. package/lib/ir/ui/useIrPointer.js +53 -0
  448. package/lib/ir/ui/useIrPointer.js.map +1 -0
  449. package/lib/ir/ui/useIrShortcuts.d.ts +24 -0
  450. package/lib/ir/ui/useIrShortcuts.d.ts.map +1 -0
  451. package/lib/ir/ui/useIrShortcuts.js +73 -0
  452. package/lib/ir/ui/useIrShortcuts.js.map +1 -0
  453. package/lib/ir/ui/useIrZoom.d.ts +51 -0
  454. package/lib/ir/ui/useIrZoom.d.ts.map +1 -0
  455. package/lib/ir/ui/useIrZoom.js +46 -0
  456. package/lib/ir/ui/useIrZoom.js.map +1 -0
  457. package/lib/ir.d.ts +13 -0
  458. package/lib/ir.d.ts.map +1 -0
  459. package/lib/ir.js +13 -0
  460. package/lib/ir.js.map +1 -0
  461. package/lib/panel/core/dialogStyles.d.ts +13 -0
  462. package/lib/panel/core/dialogStyles.d.ts.map +1 -0
  463. package/lib/panel/core/dialogStyles.js +11 -0
  464. package/lib/panel/core/dialogStyles.js.map +1 -0
  465. package/lib/panel/core/index.d.ts +19 -0
  466. package/lib/panel/core/index.d.ts.map +1 -0
  467. package/lib/panel/core/index.js +18 -0
  468. package/lib/panel/core/index.js.map +1 -0
  469. package/lib/panel/core/isEditingField.d.ts +17 -0
  470. package/lib/panel/core/isEditingField.d.ts.map +1 -0
  471. package/lib/panel/core/isEditingField.js +25 -0
  472. package/lib/panel/core/isEditingField.js.map +1 -0
  473. package/lib/panel/core/panelStyles.d.ts +242 -0
  474. package/lib/panel/core/panelStyles.d.ts.map +1 -0
  475. package/lib/panel/core/panelStyles.js +228 -0
  476. package/lib/panel/core/panelStyles.js.map +1 -0
  477. package/lib/panel/core/rowSpacers.d.ts +38 -0
  478. package/lib/panel/core/rowSpacers.d.ts.map +1 -0
  479. package/lib/panel/core/rowSpacers.js +31 -0
  480. package/lib/panel/core/rowSpacers.js.map +1 -0
  481. package/lib/panel/core/statusBar.d.ts +44 -0
  482. package/lib/panel/core/statusBar.d.ts.map +1 -0
  483. package/lib/panel/core/statusBar.js +40 -0
  484. package/lib/panel/core/statusBar.js.map +1 -0
  485. package/lib/panel/core/textFilter.d.ts +22 -0
  486. package/lib/panel/core/textFilter.d.ts.map +1 -0
  487. package/lib/panel/core/textFilter.js +32 -0
  488. package/lib/panel/core/textFilter.js.map +1 -0
  489. package/lib/panel/core/yieldToPainting.d.ts +17 -0
  490. package/lib/panel/core/yieldToPainting.d.ts.map +1 -0
  491. package/lib/panel/core/yieldToPainting.js +21 -0
  492. package/lib/panel/core/yieldToPainting.js.map +1 -0
  493. package/lib/panel/ui/AboutDialogFrame.d.ts +36 -0
  494. package/lib/panel/ui/AboutDialogFrame.d.ts.map +1 -0
  495. package/lib/panel/ui/AboutDialogFrame.js +43 -0
  496. package/lib/panel/ui/AboutDialogFrame.js.map +1 -0
  497. package/lib/panel/ui/ClearButton.d.ts +28 -0
  498. package/lib/panel/ui/ClearButton.d.ts.map +1 -0
  499. package/lib/panel/ui/ClearButton.js +23 -0
  500. package/lib/panel/ui/ClearButton.js.map +1 -0
  501. package/lib/panel/ui/DocumentationDialogFrame.d.ts +39 -0
  502. package/lib/panel/ui/DocumentationDialogFrame.d.ts.map +1 -0
  503. package/lib/panel/ui/DocumentationDialogFrame.js +29 -0
  504. package/lib/panel/ui/DocumentationDialogFrame.js.map +1 -0
  505. package/lib/panel/ui/FilterInput.d.ts +31 -0
  506. package/lib/panel/ui/FilterInput.d.ts.map +1 -0
  507. package/lib/panel/ui/FilterInput.js +23 -0
  508. package/lib/panel/ui/FilterInput.js.map +1 -0
  509. package/lib/panel/ui/HelpLabel.d.ts +24 -0
  510. package/lib/panel/ui/HelpLabel.d.ts.map +1 -0
  511. package/lib/panel/ui/HelpLabel.js +23 -0
  512. package/lib/panel/ui/HelpLabel.js.map +1 -0
  513. package/lib/panel/ui/PanelMessage.d.ts +41 -0
  514. package/lib/panel/ui/PanelMessage.d.ts.map +1 -0
  515. package/lib/panel/ui/PanelMessage.js +30 -0
  516. package/lib/panel/ui/PanelMessage.js.map +1 -0
  517. package/lib/panel/ui/PanelRail.d.ts +41 -0
  518. package/lib/panel/ui/PanelRail.d.ts.map +1 -0
  519. package/lib/panel/ui/PanelRail.js +12 -0
  520. package/lib/panel/ui/PanelRail.js.map +1 -0
  521. package/lib/panel/ui/Section.d.ts +25 -0
  522. package/lib/panel/ui/Section.d.ts.map +1 -0
  523. package/lib/panel/ui/Section.js +41 -0
  524. package/lib/panel/ui/Section.js.map +1 -0
  525. package/lib/panel/ui/SidePanelStack.d.ts +62 -0
  526. package/lib/panel/ui/SidePanelStack.d.ts.map +1 -0
  527. package/lib/panel/ui/SidePanelStack.js +40 -0
  528. package/lib/panel/ui/SidePanelStack.js.map +1 -0
  529. package/lib/panel/ui/SpectrumColorSwatch.d.ts +33 -0
  530. package/lib/panel/ui/SpectrumColorSwatch.d.ts.map +1 -0
  531. package/lib/panel/ui/SpectrumColorSwatch.js +76 -0
  532. package/lib/panel/ui/SpectrumColorSwatch.js.map +1 -0
  533. package/lib/panel/ui/index.d.ts +37 -0
  534. package/lib/panel/ui/index.d.ts.map +1 -0
  535. package/lib/panel/ui/index.js +24 -0
  536. package/lib/panel/ui/index.js.map +1 -0
  537. package/lib/panel/ui/useConfirmOnEnter.d.ts +19 -0
  538. package/lib/panel/ui/useConfirmOnEnter.d.ts.map +1 -0
  539. package/lib/panel/ui/useConfirmOnEnter.js +64 -0
  540. package/lib/panel/ui/useConfirmOnEnter.js.map +1 -0
  541. package/lib/panel/ui/useFilterBox.d.ts +23 -0
  542. package/lib/panel/ui/useFilterBox.d.ts.map +1 -0
  543. package/lib/panel/ui/useFilterBox.js +22 -0
  544. package/lib/panel/ui/useFilterBox.js.map +1 -0
  545. package/lib/panel/ui/useVirtualRows.d.ts +46 -0
  546. package/lib/panel/ui/useVirtualRows.d.ts.map +1 -0
  547. package/lib/panel/ui/useVirtualRows.js +56 -0
  548. package/lib/panel/ui/useVirtualRows.js.map +1 -0
  549. package/lib/panel/ui/useVirtualWindowRows.d.ts +40 -0
  550. package/lib/panel/ui/useVirtualWindowRows.d.ts.map +1 -0
  551. package/lib/panel/ui/useVirtualWindowRows.js +65 -0
  552. package/lib/panel/ui/useVirtualWindowRows.js.map +1 -0
  553. package/lib/ui.d.ts +1 -0
  554. package/lib/ui.d.ts.map +1 -1
  555. package/lib/ui.js +1 -0
  556. package/lib/ui.js.map +1 -1
  557. package/package.json +8 -1
  558. package/src/chart/core/axisLabels.ts +117 -0
  559. package/src/chart/core/boxLayout.ts +126 -0
  560. package/src/chart/core/chartAxisScale.ts +92 -10
  561. package/src/chart/core/chartDomain.ts +185 -0
  562. package/src/chart/core/chartGeometry.ts +159 -0
  563. package/src/chart/core/chartPane.ts +10 -0
  564. package/src/chart/core/chartScale.ts +7 -4
  565. package/src/chart/core/chartTheme.ts +161 -0
  566. package/src/chart/core/chartViewport.ts +40 -13
  567. package/src/chart/core/guidePlacement.ts +66 -0
  568. package/src/chart/core/index.ts +121 -2
  569. package/src/chart/core/labelStack.ts +72 -0
  570. package/src/chart/core/legendBox.ts +263 -0
  571. package/src/chart/core/selectionGeometry.ts +68 -0
  572. package/src/chart/core/spectrumColor.ts +129 -0
  573. package/src/chart/core/stackCapacity.ts +162 -0
  574. package/src/chart/core/svgPoint.ts +77 -0
  575. package/src/chart/core/tracePath.ts +228 -0
  576. package/src/chart/core/trackerReadout.ts +78 -0
  577. package/src/chart/core/viewTransform.ts +287 -0
  578. package/src/chart/core/zoomDomain.ts +235 -0
  579. package/src/chart/ui/Axes.tsx +361 -0
  580. package/src/chart/ui/AxisGuide.tsx +187 -0
  581. package/src/chart/ui/ChartStack.tsx +130 -0
  582. package/src/chart/ui/ChartTracker.tsx +101 -0
  583. package/src/chart/ui/PlotCaption.tsx +108 -0
  584. package/src/chart/ui/SelectionRect.tsx +52 -0
  585. package/src/chart/ui/TraceLegend.tsx +193 -0
  586. package/src/chart/ui/chartGestures.ts +270 -0
  587. package/src/chart/ui/chartStackLevel.tsx +210 -0
  588. package/src/chart/ui/chartSurface.ts +66 -0
  589. package/src/chart/ui/index.ts +35 -0
  590. package/src/chart/ui/useChartPointer.ts +223 -0
  591. package/src/chart/ui/useChartSize.ts +115 -0
  592. package/src/chart/ui/useChartWindow.ts +240 -0
  593. package/src/chart/ui/useChartZoom.ts +255 -0
  594. package/src/chart/ui/useWheelListener.ts +62 -0
  595. package/src/clipboard/core/copyPng.ts +20 -0
  596. package/src/clipboard/core/index.ts +1 -0
  597. package/src/clipboard/ui/CopyableValue.tsx +22 -35
  598. package/src/core.ts +1 -0
  599. package/src/download/core/exportStyles.ts +20 -0
  600. package/src/download/core/imageResolution.ts +118 -0
  601. package/src/download/core/index.ts +34 -0
  602. package/src/download/core/pictureExport.ts +207 -0
  603. package/src/download/core/stackedDrawing.ts +108 -0
  604. package/src/download/core/svgBounds.ts +80 -0
  605. package/src/download/core/svgNamespace.ts +9 -0
  606. package/src/download/core/svgToPng.ts +121 -0
  607. package/src/download/core/svgToString.ts +95 -0
  608. package/src/download/ui/ExportDialogFrame.tsx +86 -0
  609. package/src/download/ui/ExportImageDialog.tsx +91 -0
  610. package/src/download/ui/ExportNameField.tsx +148 -0
  611. package/src/download/ui/ExportPictureSection.tsx +142 -0
  612. package/src/download/ui/index.ts +11 -0
  613. package/src/download/ui/useDrawingBox.ts +37 -0
  614. package/src/error/core/describeSource.ts +18 -0
  615. package/src/error/core/index.ts +1 -0
  616. package/src/help/ui/HelpBody.tsx +41 -2
  617. package/src/help/ui/index.ts +6 -1
  618. package/src/ir/core/analysisSpectra.ts +231 -0
  619. package/src/ir/core/assignBands.ts +144 -0
  620. package/src/ir/core/bandAssignments.ts +329 -0
  621. package/src/ir/core/bandLabelPlan.ts +194 -0
  622. package/src/ir/core/detectIrFormat.ts +139 -0
  623. package/src/ir/core/downloadSpectra.ts +57 -0
  624. package/src/ir/core/fromJcamp.ts +70 -0
  625. package/src/ir/core/fromSpc.ts +61 -0
  626. package/src/ir/core/index.ts +113 -0
  627. package/src/ir/core/irBand.ts +57 -0
  628. package/src/ir/core/irCommands.ts +154 -0
  629. package/src/ir/core/irDomain.ts +163 -0
  630. package/src/ir/core/irEditorApi.ts +44 -0
  631. package/src/ir/core/irFormat.ts +57 -0
  632. package/src/ir/core/irMode.ts +203 -0
  633. package/src/ir/core/irReducer.ts +273 -0
  634. package/src/ir/core/irSidePanels.ts +20 -0
  635. package/src/ir/core/irSpectrum.ts +155 -0
  636. package/src/ir/core/irState.ts +173 -0
  637. package/src/ir/core/loadIrSpectra.ts +79 -0
  638. package/src/ir/core/nearestBand.ts +57 -0
  639. package/src/ir/core/pickBands.ts +181 -0
  640. package/src/ir/core/spectrumJcamp.ts +178 -0
  641. package/src/ir/core/toIrSpectrum.ts +102 -0
  642. package/src/ir/ui/BandMarks.tsx +166 -0
  643. package/src/ir/ui/BandsPanel.tsx +271 -0
  644. package/src/ir/ui/IrAboutDialog.tsx +121 -0
  645. package/src/ir/ui/IrCanvas.tsx +91 -0
  646. package/src/ir/ui/IrChart.tsx +215 -0
  647. package/src/ir/ui/IrCommandProvider.tsx +32 -0
  648. package/src/ir/ui/IrCommandTooltip.tsx +36 -0
  649. package/src/ir/ui/IrDocumentationDialog.tsx +174 -0
  650. package/src/ir/ui/IrEditor.tsx +99 -0
  651. package/src/ir/ui/IrHeader.tsx +39 -0
  652. package/src/ir/ui/IrLogo.tsx +49 -0
  653. package/src/ir/ui/IrPointerTracker.tsx +102 -0
  654. package/src/ir/ui/IrShell.tsx +285 -0
  655. package/src/ir/ui/IrSidePanel.tsx +78 -0
  656. package/src/ir/ui/IrStateProvider.tsx +32 -0
  657. package/src/ir/ui/IrStatusBar.tsx +97 -0
  658. package/src/ir/ui/IrToolbar.tsx +102 -0
  659. package/src/ir/ui/IrTraces.tsx +134 -0
  660. package/src/ir/ui/MetadataPanel.tsx +88 -0
  661. package/src/ir/ui/SpectraPanel.tsx +114 -0
  662. package/src/ir/ui/SpectrumRow.tsx +127 -0
  663. package/src/ir/ui/index.ts +56 -0
  664. package/src/ir/ui/irActions.ts +103 -0
  665. package/src/ir/ui/irChartProps.ts +118 -0
  666. package/src/ir/ui/irCommandContext.tsx +62 -0
  667. package/src/ir/ui/irStateContext.ts +48 -0
  668. package/src/ir/ui/useIrEditor.ts +139 -0
  669. package/src/ir/ui/useIrPointer.ts +109 -0
  670. package/src/ir/ui/useIrShortcuts.ts +95 -0
  671. package/src/ir/ui/useIrZoom.ts +86 -0
  672. package/src/ir.ts +13 -0
  673. package/src/panel/core/dialogStyles.ts +11 -0
  674. package/src/panel/core/index.ts +47 -0
  675. package/src/panel/core/isEditingField.ts +23 -0
  676. package/src/panel/core/panelStyles.ts +248 -0
  677. package/src/panel/core/rowSpacers.ts +50 -0
  678. package/src/panel/core/statusBar.ts +48 -0
  679. package/src/panel/core/textFilter.ts +33 -0
  680. package/src/panel/core/yieldToPainting.ts +20 -0
  681. package/src/panel/ui/AboutDialogFrame.tsx +100 -0
  682. package/src/panel/ui/ClearButton.tsx +42 -0
  683. package/src/panel/ui/DocumentationDialogFrame.tsx +86 -0
  684. package/src/panel/ui/FilterInput.tsx +60 -0
  685. package/src/panel/ui/HelpLabel.tsx +43 -0
  686. package/src/panel/ui/PanelMessage.tsx +64 -0
  687. package/src/panel/ui/PanelRail.tsx +64 -0
  688. package/src/panel/ui/Section.tsx +66 -0
  689. package/src/panel/ui/SidePanelStack.tsx +109 -0
  690. package/src/panel/ui/SpectrumColorSwatch.tsx +119 -0
  691. package/src/panel/ui/index.ts +47 -0
  692. package/src/panel/ui/useConfirmOnEnter.ts +68 -0
  693. package/src/panel/ui/useFilterBox.ts +35 -0
  694. package/src/panel/ui/useVirtualRows.ts +82 -0
  695. package/src/panel/ui/useVirtualWindowRows.ts +86 -0
  696. package/src/ui.ts +1 -0
@@ -0,0 +1,134 @@
1
+ import { xyReduce } from 'ml-spectra-processing';
2
+ import type { ReactElement } from 'react';
3
+ import { useMemo } from 'react';
4
+
5
+ import type { PlotRect } from '../../chart/core/chartGeometry.ts';
6
+ import type { ChartScale } from '../../chart/core/chartScale.ts';
7
+ import { profilePath } from '../../chart/core/tracePath.ts';
8
+ import type { IrMode, IrSpectrum } from '../core/irSpectrum.ts';
9
+ import { traceOf } from '../core/irSpectrum.ts';
10
+
11
+ export interface IrTracesProps {
12
+ /** The spectra to draw, each saying in itself whether it is drawn. */
13
+ spectra: readonly IrSpectrum[];
14
+ /** Which value axis is being drawn. */
15
+ mode: IrMode;
16
+ /**
17
+ * Where the plot sits, whose width is how many points are worth drawing. A
18
+ * trace is reduced to the pixel columns it will occupy, so the width is what
19
+ * says how much of a spectrum the chart can actually show.
20
+ */
21
+ plot: PlotRect;
22
+ /**
23
+ * The window being shown, low end first — which is what the reduction is cut
24
+ * to. Read from the window rather than inverted back out of `xScale`, because
25
+ * the wavenumber axis runs right to left and inverting its left edge gives
26
+ * the *high* end, the opposite of what every other chart's does.
27
+ */
28
+ xDomain: readonly [number, number];
29
+ /** The wavenumber axis as it is currently zoomed, running right to left. */
30
+ xScale: ChartScale;
31
+ /** The value axis as it is currently zoomed. */
32
+ yScale: ChartScale;
33
+ /**
34
+ * Identity of the spectrum drawn thicker than the rest, `null` for none. The
35
+ * one every panel beside the chart is about, so that which trace the numbers
36
+ * belong to can be seen rather than inferred from a colour swatch.
37
+ * @default null
38
+ */
39
+ emphasisedId?: string | null;
40
+ }
41
+
42
+ /**
43
+ * Every visible spectrum, one `<path>` each.
44
+ *
45
+ * One path per spectrum and never one element per point: an infrared spectrum is
46
+ * a few thousand samples, and drawn as a line each the browser holds thousands of
47
+ * nodes for a picture that is a single stroke — and every pointer move across the
48
+ * chart then costs a walk of all of them.
49
+ *
50
+ * Nor every sample: a spectrum is reduced to the pixel columns it will occupy
51
+ * before it becomes a path. A bench instrument's 1 cm⁻¹ grid over 4000–400 is
52
+ * some eight thousand samples against a plot around thirteen hundred pixels
53
+ * wide, and a chart holding the four infrared blocks of one JCAMP file writes
54
+ * a fifth of a megabyte of `d` for a picture no denser than the one it would
55
+ * have drawn from a tenth of that. `xyReduce` keeps the lowest and the highest
56
+ * sample of every slot, so a band still reaches its true depth rather than the
57
+ * depth of whichever sample a slot boundary happened to land on — and it cuts
58
+ * by wavenumber rather than by index, which is what makes it safe on the
59
+ * uneven grids a converted or interpolated file arrives on.
60
+ *
61
+ * There is no stick trace here and no mirror mode, which is the visible
62
+ * difference from a mass chart: infrared is a continuous absorption profile, the
63
+ * bands are features *of* that curve rather than a second representation of it,
64
+ * and two spectra are compared by drawing them over one another rather than head
65
+ * to head — the baselines have to line up for the comparison to mean anything.
66
+ * @param props - Component props.
67
+ * @returns The traces, as SVG.
68
+ */
69
+ export function IrTraces(props: IrTracesProps): ReactElement {
70
+ const {
71
+ spectra,
72
+ mode,
73
+ plot,
74
+ xDomain,
75
+ xScale,
76
+ yScale,
77
+ emphasisedId = null,
78
+ } = props;
79
+
80
+ const [from, to] = xDomain;
81
+ const wanted = Math.max(2, Math.round(plot.width)) * POINTS_PER_COLUMN;
82
+
83
+ const paths = useMemo(() => {
84
+ const drawn: Array<{ id: string; color: string; d: string }> = [];
85
+ for (const spectrum of spectra) {
86
+ if (!spectrum.visible) continue;
87
+ const trace = traceOf(spectrum, mode);
88
+ const { x, y } = xyReduce(trace, { from, to, nbPoints: wanted });
89
+ const d = profilePath(x, y, xScale, yScale);
90
+ if (d !== '') drawn.push({ id: spectrum.id, color: spectrum.color, d });
91
+ }
92
+ return drawn;
93
+ }, [spectra, mode, from, to, wanted, xScale, yScale]);
94
+
95
+ return (
96
+ <g pointerEvents="none">
97
+ {paths.map((path) => (
98
+ <path
99
+ key={path.id}
100
+ d={path.d}
101
+ fill="none"
102
+ stroke={path.color}
103
+ strokeWidth={
104
+ path.id === emphasisedId ? EMPHASISED_WIDTH : TRACE_WIDTH
105
+ }
106
+ strokeLinejoin="round"
107
+ />
108
+ ))}
109
+ </g>
110
+ );
111
+ }
112
+
113
+ /**
114
+ * How many reduced samples each pixel column is given.
115
+ *
116
+ * The reduction keeps the lowest and the highest sample of every slot, so two
117
+ * per column is the least that draws a column at all — and `xyReduce` asks for
118
+ * about four times what is displayed before a narrow band survives at its true
119
+ * depth rather than at the depth of whichever sample the slot boundary happened
120
+ * to land on.
121
+ */
122
+ const POINTS_PER_COLUMN = 4;
123
+
124
+ /** How thick a trace is drawn. */
125
+ const TRACE_WIDTH = 1;
126
+
127
+ /**
128
+ * How thick the one every panel is about is drawn.
129
+ *
130
+ * Barely thicker, because the difference has to be visible without reading as a
131
+ * different kind of thing: at two pixels a trace still looks like the others,
132
+ * where at three it looks like a fit or an envelope drawn over them.
133
+ */
134
+ const EMPHASISED_WIDTH = 2;
@@ -0,0 +1,88 @@
1
+ import {
2
+ panelBodyStyle,
3
+ panelCellStyle,
4
+ panelEmptyStyle,
5
+ panelStyle,
6
+ panelTableStyle,
7
+ } from '../../panel/core/panelStyles.ts';
8
+
9
+ import { useIrEditorState } from './irStateContext.ts';
10
+
11
+ /**
12
+ * What the file said about the selected spectrum's acquisition.
13
+ *
14
+ * Only what it actually said. A field the file left blank is left out rather than
15
+ * shown empty, so every line in the table is a fact — which is what makes the
16
+ * table worth reading at all on a format where instruments write whatever they
17
+ * like.
18
+ *
19
+ * Where the spectrum came from is shown even when the file said nothing: the
20
+ * format and the file name are the two things a reader asks first when a trace
21
+ * looks wrong.
22
+ * @returns The panel.
23
+ */
24
+ export function MetadataPanel() {
25
+ const { selectedSpectrum } = useIrEditorState();
26
+
27
+ if (selectedSpectrum === null) {
28
+ return (
29
+ <div style={panelStyle}>
30
+ <div style={panelBodyStyle}>
31
+ <p style={panelEmptyStyle}>No spectrum is selected.</p>
32
+ </div>
33
+ </div>
34
+ );
35
+ }
36
+
37
+ const { meta, origin, wavenumber } = selectedSpectrum;
38
+ const rows: Array<[string, string]> = [
39
+ ['Format', origin.format],
40
+ ...(origin.fileName === undefined
41
+ ? []
42
+ : ([['File', origin.fileName]] as Array<[string, string]>)),
43
+ ...(origin.blockIndex === undefined
44
+ ? []
45
+ : ([['Block', String(origin.blockIndex)]] as Array<[string, string]>)),
46
+ ...(origin.recorded === undefined
47
+ ? []
48
+ : ([['Recorded as', origin.recorded]] as Array<[string, string]>)),
49
+ ['Points', String(wavenumber.length)],
50
+ ...(meta === null
51
+ ? []
52
+ : meta.fields.map(
53
+ (field) => [field.label, field.value] as [string, string],
54
+ )),
55
+ ];
56
+
57
+ return (
58
+ <div style={panelStyle}>
59
+ <div style={panelBodyStyle}>
60
+ {meta?.title === null || meta?.title === undefined ? null : (
61
+ <p style={titleStyle}>{meta.title}</p>
62
+ )}
63
+ <table style={panelTableStyle}>
64
+ <tbody>
65
+ {rows.map(([label, value]) => (
66
+ <tr key={label}>
67
+ <th style={labelCellStyle}>{label}</th>
68
+ <td style={{ ...panelCellStyle, whiteSpace: 'normal' }}>
69
+ {value}
70
+ </td>
71
+ </tr>
72
+ ))}
73
+ </tbody>
74
+ </table>
75
+ </div>
76
+ </div>
77
+ );
78
+ }
79
+
80
+ const titleStyle = { margin: 0, fontWeight: 600 } as const;
81
+
82
+ const labelCellStyle = {
83
+ ...panelCellStyle,
84
+ textAlign: 'left',
85
+ fontWeight: 400,
86
+ opacity: 0.7,
87
+ width: '40%',
88
+ } as const;
@@ -0,0 +1,114 @@
1
+ import { Toolbar } from 'react-science/ui';
2
+
3
+ import {
4
+ panelBodyStyle,
5
+ panelEmptyStyle,
6
+ panelStyle,
7
+ panelToolbarStyle,
8
+ } from '../../panel/core/panelStyles.ts';
9
+ import {
10
+ downloadIrSpectra,
11
+ downloadIrSpectrum,
12
+ } from '../core/downloadSpectra.ts';
13
+
14
+ import { SpectrumRow } from './SpectrumRow.tsx';
15
+ import { useIrActions, useIrEditorState } from './irStateContext.ts';
16
+
17
+ /**
18
+ * The spectra that are open: which is drawn, which the panels are about, and
19
+ * what each is called.
20
+ *
21
+ * One row per spectrum, and the row is the selection: the panels and the picking
22
+ * are about one spectrum at a time, so which one that is has to be visible and
23
+ * one click away. Drawing is separate from selecting — a reference can be kept on
24
+ * the chart while the bands of the sample are read — which is why the eye and the
25
+ * row are two different targets.
26
+ *
27
+ * What acts on the list rather than on one row — drawing them all again, handing
28
+ * the whole list over as a file, closing the selected one, closing every one — is
29
+ * a toolbar under the header, where a panel's own actions belong. Closing the
30
+ * selected spectrum is offered there as well as on its row because the row's
31
+ * cross is a small target in a list of twenty, and the selected spectrum is the
32
+ * one being worked on.
33
+ * @returns The panel.
34
+ */
35
+ export function SpectraPanel() {
36
+ const { state } = useIrEditorState();
37
+ const actions = useIrActions();
38
+ const { spectra } = state.data;
39
+ const { selectedId } = state.view;
40
+ const { mode } = state.settings;
41
+
42
+ const selected = spectra.find((spectrum) => spectrum.id === selectedId);
43
+ const allDrawn = spectra.every((spectrum) => spectrum.visible);
44
+
45
+ return (
46
+ <div style={panelStyle}>
47
+ <div style={panelToolbarStyle}>
48
+ <Toolbar aria-label="Spectra">
49
+ <Toolbar.Item
50
+ icon="trash"
51
+ intent="danger"
52
+ tooltip="Close every spectrum"
53
+ aria-label="Close every spectrum"
54
+ disabled={spectra.length === 0}
55
+ onClick={actions.clear}
56
+ />
57
+ <Toolbar.Item
58
+ icon="cross"
59
+ intent="danger"
60
+ tooltip="Close the selected spectrum"
61
+ aria-label="Close the selected spectrum"
62
+ disabled={selected === undefined}
63
+ onClick={() => {
64
+ if (selected !== undefined) actions.removeSpectrum(selected.id);
65
+ }}
66
+ />
67
+ <Toolbar.Item
68
+ icon="eye-open"
69
+ tooltip="Draw every spectrum again"
70
+ aria-label="Draw every spectrum again"
71
+ disabled={spectra.length === 0 || allDrawn}
72
+ onClick={() => {
73
+ for (const spectrum of spectra) {
74
+ actions.setSpectrumVisible(spectrum.id, true);
75
+ }
76
+ }}
77
+ />
78
+ <Toolbar.Item
79
+ icon="download"
80
+ tooltip="Download every spectrum as one JCAMP-DX file"
81
+ aria-label="Download every spectrum"
82
+ disabled={spectra.length === 0}
83
+ onClick={() => downloadIrSpectra(spectra, mode)}
84
+ />
85
+ </Toolbar>
86
+ </div>
87
+
88
+ <div style={panelBodyStyle}>
89
+ {spectra.length === 0 ? (
90
+ <p style={panelEmptyStyle}>
91
+ No spectrum is open. Open one of the examples, or drop a JCAMP-DX
92
+ file on the chart.
93
+ </p>
94
+ ) : (
95
+ spectra.map((spectrum) => (
96
+ <SpectrumRow
97
+ key={spectrum.id}
98
+ spectrum={spectrum}
99
+ selected={spectrum.id === selectedId}
100
+ onSelect={() => actions.selectSpectrum(spectrum.id)}
101
+ onToggle={() =>
102
+ actions.setSpectrumVisible(spectrum.id, !spectrum.visible)
103
+ }
104
+ onColor={(color) => actions.setSpectrumColor(spectrum.id, color)}
105
+ onDownload={() => downloadIrSpectrum(spectrum, mode)}
106
+ onRemove={() => actions.removeSpectrum(spectrum.id)}
107
+ onRename={(name) => actions.renameSpectrum(spectrum.id, name)}
108
+ />
109
+ ))
110
+ )}
111
+ </div>
112
+ </div>
113
+ );
114
+ }
@@ -0,0 +1,127 @@
1
+ import { Button } from 'react-science/ui';
2
+
3
+ import { SpectrumColorSwatch } from '../../panel/ui/SpectrumColorSwatch.tsx';
4
+ import { formatWavenumber } from '../core/irFormat.ts';
5
+ import type { IrSpectrum } from '../core/irSpectrum.ts';
6
+
7
+ export interface SpectrumRowProps {
8
+ /** The spectrum the row is about. */
9
+ spectrum: IrSpectrum;
10
+ /** Whether the panels are about it. */
11
+ selected: boolean;
12
+ /** Point the panels at it. */
13
+ onSelect: () => void;
14
+ /** Draw it, or stop drawing it. */
15
+ onToggle: () => void;
16
+ /** Draw it in another colour of the palette. */
17
+ onColor: (color: string) => void;
18
+ /** Hand it over as a file. */
19
+ onDownload: () => void;
20
+ /** Close it. */
21
+ onRemove: () => void;
22
+ /** Call it something else. */
23
+ onRename: (name: string) => void;
24
+ }
25
+
26
+ /**
27
+ * One spectrum: its colour, its name, where it runs, and what can be done to it.
28
+ * @param props - Component props.
29
+ * @returns The row.
30
+ */
31
+ export function SpectrumRow(props: SpectrumRowProps) {
32
+ const {
33
+ spectrum,
34
+ selected,
35
+ onSelect,
36
+ onToggle,
37
+ onColor,
38
+ onDownload,
39
+ onRemove,
40
+ onRename,
41
+ } = props;
42
+
43
+ const range =
44
+ spectrum.wavenumber.length === 0
45
+ ? ''
46
+ : `${formatWavenumber(spectrum.wavenumber.at(-1) as number)}–${formatWavenumber(spectrum.wavenumber[0] as number)} cm⁻¹`;
47
+
48
+ return (
49
+ <div
50
+ style={selected ? selectedRowStyle : rowStyle}
51
+ data-selected={selected ? 'true' : undefined}
52
+ >
53
+ <Button
54
+ variant="minimal"
55
+ icon={spectrum.visible ? 'eye-open' : 'eye-off'}
56
+ tooltipProps={{ content: spectrum.visible ? 'Hide' : 'Draw' }}
57
+ aria-label={spectrum.visible ? 'Hide this spectrum' : 'Draw it'}
58
+ onClick={onToggle}
59
+ />
60
+
61
+ {/* The swatch is the colour control: a spectrum is told from the others by
62
+ its colour, so the colour is where a reader reaches to change it. */}
63
+ <SpectrumColorSwatch
64
+ color={spectrum.color}
65
+ name={spectrum.name}
66
+ onPick={onColor}
67
+ />
68
+
69
+ <input
70
+ style={nameStyle}
71
+ value={spectrum.name}
72
+ spellCheck={false}
73
+ autoComplete="off"
74
+ aria-label="What this spectrum is called"
75
+ onFocus={onSelect}
76
+ onChange={(event) => onRename(event.target.value)}
77
+ />
78
+
79
+ <span style={rangeStyle}>{range}</span>
80
+
81
+ <Button
82
+ variant="minimal"
83
+ icon="download"
84
+ tooltipProps={{ content: 'Download this spectrum as a JCAMP-DX file' }}
85
+ aria-label="Download this spectrum"
86
+ onClick={onDownload}
87
+ />
88
+
89
+ <Button
90
+ variant="minimal"
91
+ icon="cross"
92
+ intent="danger"
93
+ tooltipProps={{ content: 'Close this spectrum' }}
94
+ aria-label="Close this spectrum"
95
+ onClick={onRemove}
96
+ />
97
+ </div>
98
+ );
99
+ }
100
+
101
+ const rowStyle = {
102
+ display: 'flex',
103
+ alignItems: 'center',
104
+ gap: 4,
105
+ padding: '1px 2px',
106
+ borderRadius: 3,
107
+ } as const;
108
+
109
+ const selectedRowStyle = { ...rowStyle, background: '#e8f1fb' } as const;
110
+
111
+ const nameStyle = {
112
+ flex: '1 1 1px',
113
+ minWidth: 0,
114
+ border: '1px solid transparent',
115
+ borderRadius: 2,
116
+ background: 'transparent',
117
+ font: 'inherit',
118
+ fontSize: 12,
119
+ padding: '1px 3px',
120
+ } as const;
121
+
122
+ const rangeStyle = {
123
+ flex: 'none',
124
+ fontSize: 11,
125
+ opacity: 0.6,
126
+ fontVariantNumeric: 'tabular-nums',
127
+ } as const;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * The infrared chart, the panels beside it and the editor they sit in.
3
+ *
4
+ * `IrChart` is the drawing and holds nothing: it takes spectra, bands, a mode
5
+ * and a window as props and hands every gesture back, so it fits a report page
6
+ * or a test as readily as an editor. The chart's own drawing — scales, ticks,
7
+ * plot geometry, the zoom gestures and the label placement — is the shared
8
+ * chart layer, which every viewer of the family draws with.
9
+ */
10
+
11
+ export type { BandMarksProps } from './BandMarks.tsx';
12
+ export { BandMarks } from './BandMarks.tsx';
13
+ export type { BandsPanelProps } from './BandsPanel.tsx';
14
+ export { BandsPanel } from './BandsPanel.tsx';
15
+ export type { IrAboutDialogProps } from './IrAboutDialog.tsx';
16
+ export { IrAboutDialog } from './IrAboutDialog.tsx';
17
+ export type { IrCanvasProps } from './IrCanvas.tsx';
18
+ export { IrCanvas } from './IrCanvas.tsx';
19
+ export { IrChart } from './IrChart.tsx';
20
+ export type { IrCommandProviderProps } from './IrCommandProvider.tsx';
21
+ export { IrCommandProvider } from './IrCommandProvider.tsx';
22
+ export type { IrCommandTooltipProps } from './IrCommandTooltip.tsx';
23
+ export { IrCommandTooltip } from './IrCommandTooltip.tsx';
24
+ export type { IrDocumentationDialogProps } from './IrDocumentationDialog.tsx';
25
+ export { IrDocumentationDialog } from './IrDocumentationDialog.tsx';
26
+ export type { IrEditorProps } from './IrEditor.tsx';
27
+ export { IrEditor } from './IrEditor.tsx';
28
+ export type { IrLogoProps } from './IrLogo.tsx';
29
+ export { IrLogo } from './IrLogo.tsx';
30
+ export type { IrPointerTrackerProps } from './IrPointerTracker.tsx';
31
+ export { IrPointerTracker } from './IrPointerTracker.tsx';
32
+ export type { IrSidePanelProps } from './IrSidePanel.tsx';
33
+ export { IrSidePanel } from './IrSidePanel.tsx';
34
+ export type { IrStateProviderProps } from './IrStateProvider.tsx';
35
+ export { IrStateProvider } from './IrStateProvider.tsx';
36
+ export { IrStatusBar } from './IrStatusBar.tsx';
37
+ export { IrToolbar } from './IrToolbar.tsx';
38
+ export type { IrTracesProps } from './IrTraces.tsx';
39
+ export { IrTraces } from './IrTraces.tsx';
40
+ export { MetadataPanel } from './MetadataPanel.tsx';
41
+ export { SpectraPanel } from './SpectraPanel.tsx';
42
+ export type { SpectrumRowProps } from './SpectrumRow.tsx';
43
+ export { SpectrumRow } from './SpectrumRow.tsx';
44
+ export type { IrEditorActions } from './irActions.ts';
45
+ export { createIrActions } from './irActions.ts';
46
+ export type { IrChartProps } from './irChartProps.ts';
47
+ export type { IrCommandContextValue } from './irCommandContext.tsx';
48
+ export { useIrCommand, useIrCommandProps } from './irCommandContext.tsx';
49
+ export { useIrActions, useIrEditorState } from './irStateContext.ts';
50
+ export type { IrEditorApi, UseIrEditorOptions } from './useIrEditor.ts';
51
+ export { useIrEditor } from './useIrEditor.ts';
52
+ export type { IrPointerOptions, IrReadout } from './useIrPointer.ts';
53
+ export { sameIrReadout, useIrPointer } from './useIrPointer.ts';
54
+ export { useIrShortcuts } from './useIrShortcuts.ts';
55
+ export type { IrZoomOptions } from './useIrZoom.ts';
56
+ export { useIrZoom } from './useIrZoom.ts';
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Everything the viewer can be asked to do, as functions rather than actions.
3
+ *
4
+ * A component that dispatched action objects would have the shape of the reducer
5
+ * spread across every panel; one that calls `actions.selectSpectrum(id)` does
6
+ * not, and the reducer stays free to change how it holds things.
7
+ */
8
+
9
+ import type { Dispatch } from 'react';
10
+
11
+ import type { IrAction } from '../core/irReducer.ts';
12
+ import type { IrSidePanelId } from '../core/irSidePanels.ts';
13
+ import type { IrDomain, IrSpectrum } from '../core/irSpectrum.ts';
14
+ import type { IrSettings, IrTool, PartialIrState } from '../core/irState.ts';
15
+
16
+ /** Everything the viewer can be asked to do. */
17
+ export interface IrEditorActions {
18
+ /** Draw these as well as what is already open. */
19
+ addSpectra: (spectra: IrSpectrum[]) => void;
20
+ /** Draw these instead of what is open, and refit the window to them. */
21
+ setSpectra: (spectra: IrSpectrum[]) => void;
22
+ /** Close one. */
23
+ removeSpectrum: (id: string) => void;
24
+ /** Call one something else. */
25
+ renameSpectrum: (id: string, name: string) => void;
26
+ /** Draw one in another colour. */
27
+ setSpectrumColor: (id: string, color: string) => void;
28
+ /** Draw one, or stop drawing it. */
29
+ setSpectrumVisible: (id: string, visible: boolean) => void;
30
+ /** Point the panels at one, or at none. */
31
+ selectSpectrum: (id: string | null) => void;
32
+ /** Show this window. */
33
+ setDomain: (domain: IrDomain) => void;
34
+ /** Show what fits again. */
35
+ resetDomain: () => void;
36
+ /** Run this tool on the next drag. */
37
+ setTool: (tool: IrTool) => void;
38
+ /** Open or close a side panel. */
39
+ togglePanel: (panelId: IrSidePanelId) => void;
40
+ /** Say why something was refused, or that nothing is wrong any more. */
41
+ setError: (error: string | null) => void;
42
+ /** Change how the spectra are drawn and read. */
43
+ setSettings: (settings: Partial<IrSettings>) => void;
44
+ /** Take a whole state, as a host restoring one supplies it. */
45
+ loadState: (state: PartialIrState) => void;
46
+ /** Close every spectrum and start again from an empty chart. */
47
+ clear: () => void;
48
+ }
49
+
50
+ /**
51
+ * Bind every action to a dispatch.
52
+ * @param dispatch - The reducer's dispatch.
53
+ * @returns The actions, stable for as long as the dispatch is.
54
+ */
55
+ export function createIrActions(dispatch: Dispatch<IrAction>): IrEditorActions {
56
+ return {
57
+ addSpectra(spectra) {
58
+ dispatch({ type: 'addSpectra', spectra });
59
+ },
60
+ setSpectra(spectra) {
61
+ dispatch({ type: 'setSpectra', spectra });
62
+ },
63
+ removeSpectrum(id) {
64
+ dispatch({ type: 'removeSpectrum', id });
65
+ },
66
+ renameSpectrum(id, name) {
67
+ dispatch({ type: 'renameSpectrum', id, name });
68
+ },
69
+ setSpectrumColor(id, color) {
70
+ dispatch({ type: 'setSpectrumColor', id, color });
71
+ },
72
+ setSpectrumVisible(id, visible) {
73
+ dispatch({ type: 'setSpectrumVisible', id, visible });
74
+ },
75
+ selectSpectrum(id) {
76
+ dispatch({ type: 'selectSpectrum', id });
77
+ },
78
+ setDomain(domain) {
79
+ dispatch({ type: 'setDomain', domain });
80
+ },
81
+ resetDomain() {
82
+ dispatch({ type: 'resetDomain' });
83
+ },
84
+ setTool(tool) {
85
+ dispatch({ type: 'setTool', tool });
86
+ },
87
+ togglePanel(panelId) {
88
+ dispatch({ type: 'togglePanel', panelId });
89
+ },
90
+ setError(error) {
91
+ dispatch({ type: 'setError', error });
92
+ },
93
+ setSettings(settings) {
94
+ dispatch({ type: 'setSettings', settings });
95
+ },
96
+ loadState(state) {
97
+ dispatch({ type: 'loadState', state });
98
+ },
99
+ clear() {
100
+ dispatch({ type: 'clear' });
101
+ },
102
+ };
103
+ }