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,86 @@
1
+ /**
2
+ * The dialog an editor answers "how do I use this" in.
3
+ *
4
+ * Documentation that lives on a website is documentation nobody reads with a
5
+ * structure half drawn, so each viewer ships its own — but only the words are
6
+ * its own. The dialog, the width, the way the sections are stacked and the way
7
+ * out are the same in all of them, and are written here once.
8
+ */
9
+
10
+ import { Button, Dialog, DialogBody, DialogFooter } from '@blueprintjs/core';
11
+ import type { ReactNode } from 'react';
12
+
13
+ import { Section } from './Section.tsx';
14
+ import { useConfirmOnEnter } from './useConfirmOnEnter.ts';
15
+
16
+ /** One part of what a viewer has to say about itself. */
17
+ export interface DocumentationSection {
18
+ /** Stable key, so a section keeps its place as the list grows. */
19
+ id: string;
20
+ /** What the section is called. */
21
+ title: string;
22
+ /** What it says. */
23
+ body: ReactNode;
24
+ }
25
+
26
+ /** What the documentation dialog is given. */
27
+ export interface DocumentationDialogFrameProps {
28
+ /** Whether the dialog is showing. */
29
+ isOpen: boolean;
30
+ /** Called when it is dismissed. */
31
+ onClose: () => void;
32
+ /** The sections, in reading order. */
33
+ sections: readonly DocumentationSection[];
34
+ /**
35
+ * What the title bar reads.
36
+ * @default 'Documentation'
37
+ */
38
+ title?: string;
39
+ }
40
+
41
+ /**
42
+ * Draw the documentation of one viewer.
43
+ * @param props - The sections and how the dialog is opened and closed.
44
+ * @returns The dialog.
45
+ */
46
+ export function DocumentationDialogFrame(
47
+ props: DocumentationDialogFrameProps,
48
+ ): ReactNode {
49
+ const { isOpen, onClose, sections, title = 'Documentation' } = props;
50
+ useConfirmOnEnter(isOpen, onClose);
51
+
52
+ return (
53
+ <Dialog
54
+ isOpen={isOpen}
55
+ title={title}
56
+ icon="help"
57
+ style={dialogStyle}
58
+ onClose={onClose}
59
+ >
60
+ <DialogBody>
61
+ <div style={bodyStyle}>
62
+ {sections.map((section) => (
63
+ <Section key={section.id} title={section.title}>
64
+ {section.body}
65
+ </Section>
66
+ ))}
67
+ </div>
68
+ </DialogBody>
69
+ <DialogFooter
70
+ actions={
71
+ <Button intent="primary" onClick={onClose}>
72
+ Close
73
+ </Button>
74
+ }
75
+ />
76
+ </Dialog>
77
+ );
78
+ }
79
+
80
+ const dialogStyle = { width: 640, maxWidth: '92vw' } as const;
81
+
82
+ const bodyStyle = {
83
+ display: 'flex',
84
+ flexDirection: 'column',
85
+ gap: 20,
86
+ } as const;
@@ -0,0 +1,60 @@
1
+ import { InputGroup } from '@blueprintjs/core';
2
+
3
+ import { ClearButton } from './ClearButton.tsx';
4
+
5
+ export interface FilterInputProps {
6
+ /** What the user typed. */
7
+ value: string;
8
+ /** Called with what the user typed, and with `''` when the cross is clicked. */
9
+ onValueChange: (value: string) => void;
10
+ /** What the box says while it is empty. */
11
+ placeholder: string;
12
+ /**
13
+ * Whether the box takes the caret as it appears, for the times it is revealed
14
+ * by a click on a toolbar item somewhere else.
15
+ * @default false
16
+ */
17
+ autoFocus?: boolean;
18
+ }
19
+
20
+ /**
21
+ * The box a list is filtered through, with a cross to empty it again.
22
+ *
23
+ * A filter left behind hides entries that are still there, and a peak table is
24
+ * exactly where that goes unnoticed — a spectrum with three peaks in it looks
25
+ * like a spectrum with three peaks in it. So every list that offers a filter
26
+ * also offers one click back to the whole of it rather than a held backspace.
27
+ *
28
+ * Every correction the browser offers is turned off: a formula, an m/z and a
29
+ * residue name are neither words nor sentences, and a mobile keyboard
30
+ * capitalising `mNa+` or autocorrecting `Hex` is how a query stops matching
31
+ * anything.
32
+ * @param props - Component props.
33
+ * @returns The box.
34
+ */
35
+ export function FilterInput(props: FilterInputProps) {
36
+ const { value, onValueChange, placeholder, autoFocus = false } = props;
37
+
38
+ return (
39
+ <InputGroup
40
+ autoFocus={autoFocus}
41
+ leftIcon="search"
42
+ size="small"
43
+ value={value}
44
+ placeholder={placeholder}
45
+ spellCheck={false}
46
+ autoCapitalize="off"
47
+ autoCorrect="off"
48
+ autoComplete="off"
49
+ rightElement={
50
+ value.length > 0 ? (
51
+ <ClearButton
52
+ label="Clear the filter"
53
+ onClick={() => onValueChange('')}
54
+ />
55
+ ) : undefined
56
+ }
57
+ onValueChange={onValueChange}
58
+ />
59
+ );
60
+ }
@@ -0,0 +1,43 @@
1
+ import type { HelpText } from '../../help/ui/HelpBody.tsx';
2
+ import { HelpIcon } from '../../help/ui/HelpIcon.tsx';
3
+ import { labelStyle } from '../core/panelStyles.ts';
4
+
5
+ /** What the label names, and what its question mark answers. */
6
+ export interface HelpLabelProps {
7
+ /** What the value is, written small and quiet above it. */
8
+ label: string;
9
+ /** The sentences the question mark carries, one string per paragraph. */
10
+ help: HelpText;
11
+ }
12
+
13
+ /**
14
+ * A panel label with a question mark beside it.
15
+ *
16
+ * The label is the half that has to be read at a glance — it names the field
17
+ * under it — so it stays plain, and everything that would otherwise be a
18
+ * paragraph of instructions under the control hangs off the glyph beside it.
19
+ *
20
+ * The help opens to the side rather than above, and that is not a preference:
21
+ * these glyphs sit in a panel beside the very thing they explain — a picture, a
22
+ * chart, a spectrum — and a tooltip placed over the top of a control covers the
23
+ * subject of its own first sentence.
24
+ * @param props - Component props.
25
+ * @returns The label row.
26
+ */
27
+ export function HelpLabel(props: HelpLabelProps) {
28
+ const { label, help } = props;
29
+
30
+ return (
31
+ <div style={rowStyle}>
32
+ <span style={labelStyle}>{label}</span>
33
+ <HelpIcon
34
+ content={{ body: help }}
35
+ label={`What ${label} means`}
36
+ placement="left"
37
+ size={12}
38
+ />
39
+ </div>
40
+ );
41
+ }
42
+
43
+ const rowStyle = { display: 'flex', alignItems: 'center', gap: 4 } as const;
@@ -0,0 +1,64 @@
1
+ import type { IconName } from '@blueprintjs/core';
2
+ import { Callout } from '@blueprintjs/core';
3
+ import type { ReactNode } from 'react';
4
+
5
+ import { panelEmptyStyle } from '../core/panelStyles.ts';
6
+
7
+ /** What a panel says when it cannot show what it is for. */
8
+ export type PanelMessageIntent = 'none' | 'warning' | 'danger';
9
+
10
+ export interface PanelMessageProps {
11
+ /**
12
+ * How much is in the way: `danger` for something the editor refused,
13
+ * `warning` for something it could only do in part, `none` for a remark.
14
+ * @default 'warning'
15
+ */
16
+ intent?: PanelMessageIntent;
17
+ /**
18
+ * The icon, when the one the intent carries is not the one meant — a lookup
19
+ * that found nothing is a search that came back empty, not a warning.
20
+ * @default the icon of the intent
21
+ */
22
+ icon?: IconName;
23
+ /** What to say, in the terms the drawing is in. */
24
+ children: ReactNode;
25
+ }
26
+
27
+ /**
28
+ * Why a panel is showing this instead of what it is for.
29
+ *
30
+ * A refusal, a limitation and a remark are told apart by colour rather than by
31
+ * wording, and they are told apart the same way in every panel — which is what
32
+ * this is for: eight places said the same thing in three spellings before.
33
+ * @param props - Component props.
34
+ * @returns The callout.
35
+ */
36
+ export function PanelMessage(props: PanelMessageProps) {
37
+ const { intent = 'warning', icon = INTENT_ICONS[intent], children } = props;
38
+
39
+ return (
40
+ <Callout intent={intent} compact icon={icon}>
41
+ {children}
42
+ </Callout>
43
+ );
44
+ }
45
+
46
+ export interface PanelEmptyProps {
47
+ /** What there is instead of the list, in a few words. */
48
+ children: ReactNode;
49
+ }
50
+
51
+ /**
52
+ * The quiet line a panel shows in place of a list it has nothing to fill.
53
+ * @param props - Component props.
54
+ * @returns The line.
55
+ */
56
+ export function PanelEmpty(props: PanelEmptyProps) {
57
+ return <div style={panelEmptyStyle}>{props.children}</div>;
58
+ }
59
+
60
+ const INTENT_ICONS: Record<PanelMessageIntent, IconName> = {
61
+ none: 'info-sign',
62
+ warning: 'warning-sign',
63
+ danger: 'error',
64
+ };
@@ -0,0 +1,64 @@
1
+ /**
2
+ * The column of icons down the right edge, which opens and shuts the panels.
3
+ *
4
+ * Only the bar and its icons: each editor keeps the element it hangs the rail
5
+ * in, because where the rail sits — outside the split, so the icons stay against
6
+ * the edge while the panel beside them is resized — is a decision about that
7
+ * editor's layout rather than about the rail.
8
+ */
9
+
10
+ import type { IconName, MaybeElement } from '@blueprintjs/core';
11
+ import type { ReactNode } from 'react';
12
+ import { ActivityBar } from 'react-science/ui';
13
+
14
+ /**
15
+ * One panel the rail can open.
16
+ *
17
+ * Generic in its own id, because each editor names its panels in a union of its
18
+ * own and hands the rail the very function that opens them — a rail that took
19
+ * plain strings would refuse every one of those functions.
20
+ */
21
+ export interface RailPanel<TId extends string = string> {
22
+ /** Which panel, matching what the editor's state calls it. */
23
+ id: TId;
24
+ /** The Blueprint icon it is known by. */
25
+ icon: IconName | MaybeElement;
26
+ /** What the tooltip reads. */
27
+ title: string;
28
+ }
29
+
30
+ /** What the rail is given. */
31
+ export interface PanelRailProps<TId extends string = string> {
32
+ /** The panels offered, in the order they are shown. */
33
+ panels: ReadonlyArray<RailPanel<TId>>;
34
+ /** Which of them are open. */
35
+ openIds: readonly string[];
36
+ /** Called with the panel an icon was clicked for. */
37
+ onToggle: (id: TId) => void;
38
+ }
39
+
40
+ /**
41
+ * Draw the rail.
42
+ * @param props - The panels, which are open, and what to do about a click.
43
+ * @returns The rail.
44
+ */
45
+ export function PanelRail<TId extends string>(
46
+ props: PanelRailProps<TId>,
47
+ ): ReactNode {
48
+ const { panels, openIds, onToggle } = props;
49
+
50
+ return (
51
+ <ActivityBar>
52
+ {panels.map((panel) => (
53
+ <ActivityBar.Item
54
+ key={panel.id}
55
+ id={panel.id}
56
+ icon={panel.icon}
57
+ tooltip={panel.title}
58
+ active={openIds.includes(panel.id)}
59
+ onClick={() => onToggle(panel.id)}
60
+ />
61
+ ))}
62
+ </ActivityBar>
63
+ );
64
+ }
@@ -0,0 +1,66 @@
1
+ import type { ReactNode } from 'react';
2
+
3
+ export interface SectionProps {
4
+ /** What the block is about, written above it. */
5
+ title: string;
6
+ /** The block. */
7
+ children: ReactNode;
8
+ }
9
+
10
+ /**
11
+ * One titled block of a dialog.
12
+ * @param props - Component props.
13
+ * @returns The section.
14
+ */
15
+ export function Section(props: SectionProps) {
16
+ const { title, children } = props;
17
+ return (
18
+ <div style={sectionStyle}>
19
+ <div style={sectionTitleStyle}>{title}</div>
20
+ {children}
21
+ </div>
22
+ );
23
+ }
24
+
25
+ export interface LinkProps {
26
+ href: string;
27
+ children: ReactNode;
28
+ }
29
+
30
+ /**
31
+ * A link out of a dialog, opened away from the editor so a drawing in progress
32
+ * or a spectrum being read is never lost to a click.
33
+ * @param props - Component props.
34
+ * @returns The link.
35
+ */
36
+ export function Link(props: LinkProps) {
37
+ const { href, children } = props;
38
+ return (
39
+ <a href={href} target="_blank" rel="noopener noreferrer" style={linkStyle}>
40
+ {children}
41
+ </a>
42
+ );
43
+ }
44
+
45
+ const sectionStyle = {
46
+ display: 'flex',
47
+ flexDirection: 'column',
48
+ gap: 6,
49
+ } as const;
50
+
51
+ const sectionTitleStyle = {
52
+ fontSize: 11,
53
+ fontWeight: 600,
54
+ textTransform: 'uppercase',
55
+ letterSpacing: '0.04em',
56
+ opacity: 0.6,
57
+ } as const;
58
+
59
+ // Spelled out rather than left to the page: nothing says a host application
60
+ // styles its anchors, and a credit nobody can tell is a link is not a credit.
61
+ const linkStyle = {
62
+ // The site's own accent, and the inherited ink on a page that declares none —
63
+ // the underline is what makes it a link either way.
64
+ color: 'var(--accent, inherit)',
65
+ textDecoration: 'underline',
66
+ } as const;
@@ -0,0 +1,109 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ActivityBarItemProps } from 'react-science/ui';
3
+ import { Accordion, AccordionProvider, Button } from 'react-science/ui';
4
+
5
+ /** What a rail reads about one panel, wherever that rail is drawn. */
6
+ export interface PanelDescriptor {
7
+ /** Identity, as the activity bar and the list of open panels address it. */
8
+ id: string;
9
+ /** What the header says, and what the icon's tooltip reads. */
10
+ title: string;
11
+ /** The icon stacked in the rail. */
12
+ icon: ActivityBarItemProps['icon'];
13
+ }
14
+
15
+ export interface SidePanelStackProps<TPanel extends PanelDescriptor> {
16
+ /** Every panel on offer, in the order their icons are stacked. */
17
+ panels: readonly TPanel[];
18
+ /** Which of them are open, named as each editor's own view names them. */
19
+ openPanelIds: readonly string[];
20
+ /**
21
+ * Called with the panel whose close cross was pressed. It is the id of one of
22
+ * `panels` rather than any string, so an editor whose panels are a fixed set
23
+ * hands its own `togglePanel` straight in.
24
+ * @param id - Identity of that panel.
25
+ */
26
+ onClose: (id: TPanel['id']) => void;
27
+ /**
28
+ * What to draw inside one panel.
29
+ * @param panel - The panel to draw.
30
+ * @returns Its body.
31
+ */
32
+ children: (panel: TPanel) => ReactNode;
33
+ }
34
+
35
+ /**
36
+ * The panels that are open, stacked one under the other down the side.
37
+ *
38
+ * Every open panel gets a share of the height rather than a turn: the things
39
+ * they hold are read together — which spectrum is selected and what its peaks
40
+ * are, the residues to pick from and what the drawing adds up to — so closing
41
+ * one to see the other would be a step backwards. A header click still folds a
42
+ * single panel away, and shift-click folds every other one.
43
+ *
44
+ * They are drawn in the order the rail stacks their icons rather than the order
45
+ * they were switched on, so a panel always comes back where it was.
46
+ *
47
+ * The header carries the shell's own two gestures and nothing about what the
48
+ * panel holds: the chevron that folds it away and the cross that closes it.
49
+ * What a panel switches on and off is a toolbar at the top of its own body, so
50
+ * it travels with the panel when it is folded, reordered or lent to another
51
+ * editor, and every header in every editor reads the same — which is the reason
52
+ * this is one component rather than one per editor.
53
+ *
54
+ * The chevron is there because nothing else says which panels are folded. The
55
+ * accordion draws every header identically and hides only the body, so a side
56
+ * of four closed panels and a side of four open ones differ by white space, and
57
+ * a reader looking for a panel that is already open reaches for its icon and
58
+ * closes it. It is a real button rather than a glyph because the header's own
59
+ * click never reaches the toolbar — clicks there are stopped so the close cross
60
+ * does not also fold the panel — so a chevron that did nothing when pressed
61
+ * would be an affordance that lies.
62
+ * @param props - Component props.
63
+ * @returns The stack.
64
+ */
65
+ export function SidePanelStack<TPanel extends PanelDescriptor>(
66
+ props: SidePanelStackProps<TPanel>,
67
+ ) {
68
+ const { panels, openPanelIds, onClose, children } = props;
69
+ const open = panels.filter((panel) => openPanelIds.includes(panel.id));
70
+
71
+ return (
72
+ <AccordionProvider>
73
+ <Accordion>
74
+ {open.map((panel) => (
75
+ <Accordion.Item
76
+ key={panel.id}
77
+ id={panel.id}
78
+ title={panel.title}
79
+ defaultOpen
80
+ renderToolbar={({ isOpen, controls }) => (
81
+ <>
82
+ <Button
83
+ variant="minimal"
84
+ icon={isOpen ? 'chevron-down' : 'chevron-right'}
85
+ data-panel-open={isOpen}
86
+ aria-expanded={isOpen}
87
+ aria-label={`${isOpen ? 'Fold' : 'Unfold'} the ${panel.title.toLowerCase()} panel`}
88
+ tooltipProps={{
89
+ content: isOpen ? 'Fold this panel away' : 'Unfold it',
90
+ }}
91
+ onClick={() => controls.toggle()}
92
+ />
93
+ <Button
94
+ variant="minimal"
95
+ icon="cross"
96
+ tooltipProps={{ content: 'Close this panel' }}
97
+ aria-label={`Close the ${panel.title.toLowerCase()} panel`}
98
+ onClick={() => onClose(panel.id)}
99
+ />
100
+ </>
101
+ )}
102
+ >
103
+ {children(panel)}
104
+ </Accordion.Item>
105
+ ))}
106
+ </Accordion>
107
+ </AccordionProvider>
108
+ );
109
+ }
@@ -0,0 +1,119 @@
1
+ import { PopoverNext } from '@blueprintjs/core';
2
+ import { useState } from 'react';
3
+
4
+ import {
5
+ EXTRA_SPECTRUM_COLORS,
6
+ SPECTRUM_COLORS,
7
+ } from '../../chart/core/spectrumColor.ts';
8
+
9
+ export interface SpectrumColorSwatchProps {
10
+ /** The colour the spectrum is drawn in. */
11
+ color: string;
12
+ /** What the list calls it, for the labels a screen reader reads out. */
13
+ name: string;
14
+ /** Called with the colour that was picked. */
15
+ onPick: (color: string) => void;
16
+ }
17
+
18
+ /**
19
+ * The chip that says what colour a spectrum is drawn in, and changes it.
20
+ *
21
+ * The palette is what `spectrumColor.ts` holds and nothing else: a free colour
22
+ * picker would let two spectra be set to the same blue, or to a hue that
23
+ * disappears against the chart, and telling the traces apart is the whole job
24
+ * the colour has.
25
+ *
26
+ * Its two tiers are drawn as two rows, in that order and unlabelled. A row is
27
+ * enough: the top one is what the chart uses by itself, so a reader who never
28
+ * looks below it is already right, and one who does is choosing deliberately —
29
+ * which is the only way a colour that asks more of its reader's eyes should
30
+ * ever be picked. A legend explaining the difference would be read once and be
31
+ * in the way afterwards; `spectrumColor.ts` is where the difference is written
32
+ * down.
33
+ *
34
+ * One component for every viewer rather than one per package: a swatch that
35
+ * opens a picker in the mass panel and walks the palette in the infrared one is
36
+ * two different controls wearing the same chip, and whichever a reader learned
37
+ * first is the wrong one in the other editor.
38
+ * @param props - Component props.
39
+ * @returns The chip.
40
+ */
41
+ export function SpectrumColorSwatch(props: SpectrumColorSwatchProps) {
42
+ const { color, name, onPick } = props;
43
+ const [isOpen, setIsOpen] = useState(false);
44
+
45
+ function offer(offered: string) {
46
+ return (
47
+ <button
48
+ key={offered}
49
+ type="button"
50
+ title={offered}
51
+ aria-label={`Draw ${name} in ${offered}`}
52
+ style={{
53
+ ...(offered === color ? activeSwatchStyle : swatchStyle),
54
+ background: offered,
55
+ }}
56
+ onClick={() => {
57
+ onPick(offered);
58
+ setIsOpen(false);
59
+ }}
60
+ />
61
+ );
62
+ }
63
+
64
+ return (
65
+ <PopoverNext
66
+ // A handful of chips need no arrow pointing back at a chip of the same
67
+ // size.
68
+ arrow={false}
69
+ isOpen={isOpen}
70
+ placement="bottom-start"
71
+ onInteraction={setIsOpen}
72
+ content={
73
+ <div style={paletteStyle}>
74
+ <div style={paletteRowStyle}>{SPECTRUM_COLORS.map(offer)}</div>
75
+ <div style={paletteRowStyle}>{EXTRA_SPECTRUM_COLORS.map(offer)}</div>
76
+ </div>
77
+ }
78
+ >
79
+ <button
80
+ type="button"
81
+ title="Draw this spectrum in another colour"
82
+ aria-label={`Colour of ${name}`}
83
+ style={{ ...swatchStyle, background: color }}
84
+ />
85
+ </PopoverNext>
86
+ );
87
+ }
88
+
89
+ /**
90
+ * A round chip rather than a square one: it is the mark the chart's own
91
+ * tooltip uses for a series, so the row and the chart name the same spectrum
92
+ * the same way.
93
+ */
94
+ const swatchStyle = {
95
+ flex: 'none',
96
+ width: 14,
97
+ height: 14,
98
+ padding: 0,
99
+ borderRadius: '50%',
100
+ border: '1px solid rgba(17, 20, 24, 0.2)',
101
+ cursor: 'pointer',
102
+ } as const;
103
+
104
+ const activeSwatchStyle = {
105
+ ...swatchStyle,
106
+ border: '2px solid rgb(17 20 24)',
107
+ } as const;
108
+
109
+ const paletteStyle = {
110
+ display: 'flex',
111
+ flexDirection: 'column',
112
+ gap: 6,
113
+ padding: 8,
114
+ } as const;
115
+
116
+ const paletteRowStyle = {
117
+ display: 'flex',
118
+ gap: 6,
119
+ } as const;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The parts an editor is assembled from: its panels, its dialogs and the rail
3
+ * they are opened from.
4
+ *
5
+ * Every one of them is handed what it shows and reports what was pressed, so
6
+ * none of them reads a store and none of them knows which editor it is in.
7
+ * That is what lets the same panel stack carry a spectrum, a chromatogram and
8
+ * a drawing.
9
+ */
10
+
11
+ export type { AboutDialogFrameProps } from './AboutDialogFrame.tsx';
12
+ export { AboutDialogFrame } from './AboutDialogFrame.tsx';
13
+ export type { ClearButtonProps } from './ClearButton.tsx';
14
+ export { ClearButton } from './ClearButton.tsx';
15
+ export type {
16
+ DocumentationDialogFrameProps,
17
+ DocumentationSection,
18
+ } from './DocumentationDialogFrame.tsx';
19
+ export { DocumentationDialogFrame } from './DocumentationDialogFrame.tsx';
20
+ export type { FilterInputProps } from './FilterInput.tsx';
21
+ export { FilterInput } from './FilterInput.tsx';
22
+ export type { HelpLabelProps } from './HelpLabel.tsx';
23
+ export { HelpLabel } from './HelpLabel.tsx';
24
+ export type {
25
+ PanelEmptyProps,
26
+ PanelMessageIntent,
27
+ PanelMessageProps,
28
+ } from './PanelMessage.tsx';
29
+ export { PanelEmpty, PanelMessage } from './PanelMessage.tsx';
30
+ export type { PanelRailProps, RailPanel } from './PanelRail.tsx';
31
+ export { PanelRail } from './PanelRail.tsx';
32
+ export type { LinkProps, SectionProps } from './Section.tsx';
33
+ export { Link, Section } from './Section.tsx';
34
+ export type {
35
+ PanelDescriptor,
36
+ SidePanelStackProps,
37
+ } from './SidePanelStack.tsx';
38
+ export { SidePanelStack } from './SidePanelStack.tsx';
39
+ export type { SpectrumColorSwatchProps } from './SpectrumColorSwatch.tsx';
40
+ export { SpectrumColorSwatch } from './SpectrumColorSwatch.tsx';
41
+ export { useConfirmOnEnter } from './useConfirmOnEnter.ts';
42
+ export type { FilterBox } from './useFilterBox.ts';
43
+ export { useFilterBox } from './useFilterBox.ts';
44
+ export type { VirtualRows } from './useVirtualRows.ts';
45
+ export { useVirtualRows } from './useVirtualRows.ts';
46
+ export type { VirtualWindowRows } from './useVirtualWindowRows.ts';
47
+ export { useVirtualWindowRows } from './useVirtualWindowRows.ts';