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,99 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useLayoutEffect, useRef } from 'react';
3
+ import { TOKEN } from "../../tokens/core/familyTokens.js";
4
+ /**
5
+ * What the file about to be written out is called.
6
+ *
7
+ * It sits at the right of the row of buttons, against the one that writes the
8
+ * file, because that is what it is about — copying takes no name, and puts
9
+ * itself at the other end of the row. The name the editor came in with is
10
+ * offered, since that is what a glycan is usually saved under, but a picture
11
+ * for a slide and a molfile for a docking run are rarely wanted under it.
12
+ *
13
+ * The box grows with what is typed, so the extension sits directly against the
14
+ * name and the two read as the one filename they are about to become. Held to a
15
+ * fixed width instead, the extension hangs at the far edge with the gap between
16
+ * them reading as part of neither.
17
+ * @param props - Component props.
18
+ * @returns The field.
19
+ */
20
+ export function ExportNameField(props) {
21
+ const { name, extension = '', onChange } = props;
22
+ const input = useRef(null);
23
+ const mirror = useRef(null);
24
+ const ruler = useRef(null);
25
+ // Measured off a copy of the text in the same font rather than counted in
26
+ // characters, which only holds for a monospace one. The width is set on the
27
+ // element instead of kept in state: it is what the browser has just measured,
28
+ // so rendering again to store it would measure the same thing twice.
29
+ useLayoutEffect(() => {
30
+ if (!input.current || !mirror.current || !ruler.current)
31
+ return;
32
+ const measured = mirror.current.offsetWidth + CARET;
33
+ const floor = ruler.current.offsetWidth;
34
+ input.current.style.width = `${Math.min(Math.max(measured, floor), MAXIMUM)}px`;
35
+ });
36
+ return (_jsx("div", { style: fieldStyle, children: _jsxs("div", { className: "bp6-input", style: boxStyle, children: [_jsx("input", { ref: input, value: name, "aria-label": "File name", placeholder: PLACEHOLDER, spellCheck: false, autoComplete: "off", style: inputStyle, onChange: (event) => onChange(event.target.value),
37
+ // The name is in force as it is typed, so Enter has nothing left to
38
+ // confirm — and is kept off the dialog, whose answer is to close.
39
+ onKeyDown: (event) => {
40
+ if (event.key === 'Enter')
41
+ event.stopPropagation();
42
+ } }), extension === '' ? null : (_jsx("span", { style: extensionStyle, children: extension })), _jsx("span", { ref: mirror, style: mirrorStyle, "aria-hidden": "true", children: name === '' ? PLACEHOLDER : name }), _jsx("span", { ref: ruler, style: mirrorStyle, "aria-hidden": "true", children: FLOOR_SAMPLE })] }) }));
43
+ }
44
+ /** What the box says when nothing has been typed into it. */
45
+ const PLACEHOLDER = 'File name';
46
+ /** Room for the caret past the last character, so it is never clipped. */
47
+ const CARET = 2;
48
+ /**
49
+ * Twenty characters, which the box is never narrower than.
50
+ *
51
+ * A name is typed into this box as often as it is read out of it, and a box cut
52
+ * to `glycan` leaves no room to do that in — so the floor is a name of the
53
+ * length one usually is, measured in the box's own font rather than counted at
54
+ * some assumed character width. `n` is about the average width of a lowercase
55
+ * letter, which is what a filename is mostly made of.
56
+ */
57
+ const FLOOR_SAMPLE = 'n'.repeat(20);
58
+ /** Past this a name scrolls inside the box rather than pushing the dialog. */
59
+ const MAXIMUM = 260;
60
+ // Held against the right of the row beside the button that writes the file, so
61
+ // the space in the row falls between copying and saving rather than inside the
62
+ // name.
63
+ const fieldStyle = { marginLeft: 'auto', flexShrink: 0 };
64
+ // Blueprint's own input chrome, worn by the box rather than by the field inside
65
+ // it, so the name and the extension sit within one border. Positioned, so the
66
+ // hidden copy the width is measured off can be taken out of the layout without
67
+ // leaving the box it takes its font from.
68
+ const boxStyle = {
69
+ position: 'relative',
70
+ display: 'flex',
71
+ alignItems: 'center',
72
+ width: 'fit-content',
73
+ };
74
+ // The field itself brings nothing of its own: the box around it is what is
75
+ // seen, and the text has to be in the font the width was measured in.
76
+ const inputStyle = {
77
+ font: 'inherit',
78
+ border: 'none',
79
+ outline: 'none',
80
+ padding: 0,
81
+ margin: 0,
82
+ background: 'transparent',
83
+ color: 'inherit',
84
+ };
85
+ const extensionStyle = {
86
+ color: TOKEN.textMuted,
87
+ whiteSpace: 'pre',
88
+ };
89
+ // A copy of what is typed, in the same font, laid out but never painted.
90
+ const mirrorStyle = {
91
+ position: 'absolute',
92
+ top: 0,
93
+ left: 0,
94
+ visibility: 'hidden',
95
+ pointerEvents: 'none',
96
+ whiteSpace: 'pre',
97
+ font: 'inherit',
98
+ };
99
+ //# sourceMappingURL=ExportNameField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportNameField.js","sourceRoot":"","sources":["../../../src/download/ui/ExportNameField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { PictureFrame } from '../core/pictureExport.ts';
2
+ export interface ExportPictureSectionProps {
3
+ /** The drawing a picture is taken of, as it is rendered. */
4
+ getDrawing: () => SVGSVGElement | null;
5
+ /** Which of the resolutions is picked. */
6
+ resolutionId: string;
7
+ /** Called with the resolution that was picked. */
8
+ onResolutionChange: (id: string) => void;
9
+ /**
10
+ * The name the name box opens on, and falls back to when it is cleared,
11
+ * without its extension.
12
+ */
13
+ filename: string;
14
+ /** What the picture is read out as in the file it is written to. */
15
+ label: string;
16
+ /**
17
+ * Whether the picture is the drawing inside the element or the element as it
18
+ * is laid out.
19
+ * @default 'content'
20
+ */
21
+ frame?: PictureFrame;
22
+ /** Called with what became of the last thing written out. */
23
+ onStatus: (status: string) => void;
24
+ }
25
+ /**
26
+ * The drawing as a picture: how big it comes out, and where it goes.
27
+ *
28
+ * The size the file will be is shown beside the resolution rather than after
29
+ * the fact, since that is the number the choice is made on — a figure for a
30
+ * paper and a thumbnail for a slide are the same drawing at very different
31
+ * sizes. What is measured is what the picture will be of and not whatever is on
32
+ * screen, so the answer does not change when the window is resized or the
33
+ * drawing panned.
34
+ * @param props - Component props.
35
+ * @returns The section.
36
+ */
37
+ export declare function ExportPictureSection(props: ExportPictureSectionProps): import("react").JSX.Element;
38
+ //# sourceMappingURL=ExportPictureSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportPictureSection.d.ts","sourceRoot":"","sources":["../../../src/download/ui/ExportPictureSection.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAW7D,MAAM,WAAW,yBAAyB;IACxC,4DAA4D;IAC5D,UAAU,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IACvC,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,6DAA6D;IAC7D,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,+BA2EpE"}
@@ -0,0 +1,48 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, HTMLSelect } from '@blueprintjs/core';
3
+ import { useState } from 'react';
4
+ import { exportButtonsStyle, exportNoteStyle, exportSectionStyle, } from "../core/exportStyles.js";
5
+ import { IMAGE_RESOLUTIONS, formatImageSize, imageResolution, } from "../core/imageResolution.js";
6
+ import { copyPicture, pictureSize, savePngPicture, saveSvgPicture, } from "../core/pictureExport.js";
7
+ import { sanitizeFileName } from "../core/sanitizeFileName.js";
8
+ import { ExportNameField } from "./ExportNameField.js";
9
+ /**
10
+ * The drawing as a picture: how big it comes out, and where it goes.
11
+ *
12
+ * The size the file will be is shown beside the resolution rather than after
13
+ * the fact, since that is the number the choice is made on — a figure for a
14
+ * paper and a thumbnail for a slide are the same drawing at very different
15
+ * sizes. What is measured is what the picture will be of and not whatever is on
16
+ * screen, so the answer does not change when the window is resized or the
17
+ * drawing panned.
18
+ * @param props - Component props.
19
+ * @returns The section.
20
+ */
21
+ export function ExportPictureSection(props) {
22
+ const { getDrawing, resolutionId, onResolutionChange, filename, label, frame, onStatus, } = props;
23
+ const [name, setName] = useState(filename);
24
+ const savedName = sanitizeFileName(name, filename);
25
+ const { scale } = imageResolution(resolutionId);
26
+ const size = pictureSize(getDrawing(), scale, { frame });
27
+ const options = { scale, filename: savedName, label, frame };
28
+ return (_jsxs("section", { style: exportSectionStyle, children: [_jsxs("div", { style: resolutionStyle, children: [_jsx(HTMLSelect, { value: resolutionId, "aria-label": "Resolution", onChange: (event) => onResolutionChange(event.currentTarget.value), children: IMAGE_RESOLUTIONS.map((resolution) => (_jsx("option", { value: resolution.id, children: resolution.label }, resolution.id))) }), _jsx("span", { style: exportNoteStyle, children: formatImageSize(size) })] }), _jsxs("div", { style: exportButtonsStyle, children: [_jsx(Button, { icon: "duplicate", disabled: size === null, text: "Copy PNG", onClick: () => {
29
+ // The rasterization is started here rather than awaited: Safari
30
+ // only allows a clipboard write the click itself started.
31
+ void copyPicture(getDrawing(), options).then((copied) => onStatus(copied ? 'Picture copied.' : 'Nothing was copied.'), () => onStatus('Nothing was copied.'));
32
+ } }), _jsx(ExportNameField, { name: name, onChange: setName }), _jsx(Button, { icon: "download", disabled: size === null, text: "Save PNG", title: `Save as ${savedName}.png`, onClick: () => {
33
+ void savePngPicture(getDrawing(), options).then((saved) => {
34
+ if (saved)
35
+ onStatus(`Saved as ${savedName}.png.`);
36
+ });
37
+ } }), _jsx(Button, { icon: "download", disabled: size === null, text: "Save SVG", title: `Save as ${savedName}.svg`, onClick: () => {
38
+ if (saveSvgPicture(getDrawing(), options)) {
39
+ onStatus(`Saved as ${savedName}.svg.`);
40
+ }
41
+ } })] })] }));
42
+ }
43
+ const resolutionStyle = {
44
+ display: 'flex',
45
+ alignItems: 'center',
46
+ gap: 8,
47
+ };
48
+ //# sourceMappingURL=ExportPictureSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportPictureSection.js","sourceRoot":"","sources":["../../../src/download/ui/ExportPictureSection.tsx"],"names":[],"mappings":"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"}
@@ -10,4 +10,14 @@ export type { FigureDownloadProps } from './FigureDownload.tsx';
10
10
  export { FigureDownload } from './FigureDownload.tsx';
11
11
  export type { FigureDownloadPanelProps } from './FigureDownloadPanel.tsx';
12
12
  export { FigureDownloadPanel } from './FigureDownloadPanel.tsx';
13
+ export type { ExportDialogFrameProps } from './ExportDialogFrame.tsx';
14
+ export { ExportDialogFrame } from './ExportDialogFrame.tsx';
15
+ export type { ExportImageDialogProps } from './ExportImageDialog.tsx';
16
+ export { ExportImageDialog } from './ExportImageDialog.tsx';
17
+ export type { ExportNameFieldProps } from './ExportNameField.tsx';
18
+ export { ExportNameField } from './ExportNameField.tsx';
19
+ export type { ExportPictureSectionProps } from './ExportPictureSection.tsx';
20
+ export { ExportPictureSection } from './ExportPictureSection.tsx';
21
+ export type { DrawingBox } from './useDrawingBox.ts';
22
+ export { useDrawingBox } from './useDrawingBox.ts';
13
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -8,4 +8,9 @@
8
8
  */
9
9
  export { FigureDownload } from "./FigureDownload.js";
10
10
  export { FigureDownloadPanel } from "./FigureDownloadPanel.js";
11
+ export { ExportDialogFrame } from "./ExportDialogFrame.js";
12
+ export { ExportImageDialog } from "./ExportImageDialog.js";
13
+ export { ExportNameField } from "./ExportNameField.js";
14
+ export { ExportPictureSection } from "./ExportPictureSection.js";
15
+ export { useDrawingBox } from "./useDrawingBox.js";
11
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/download/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAC;AAGhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA4B,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /** The box a picture is taken out of. */
2
+ export interface DrawingBox {
3
+ /** Put on the box the drawing sits in, so it can be found again. */
4
+ attach: (element: HTMLElement | null) => void;
5
+ /**
6
+ * The drawing a picture is taken of, `null` when the box holds none — which
7
+ * is what an editor showing nothing yet, or one whose box has not been
8
+ * mounted, hands the export dialog.
9
+ */
10
+ getDrawing: () => SVGSVGElement | null;
11
+ }
12
+ /**
13
+ * Find the drawing a picture is to be taken of, when it is asked for.
14
+ *
15
+ * A drawing is laid out again on every resize, so the element itself is never
16
+ * held onto: what is kept is the box it sits in, and the drawing is read out of
17
+ * it at the moment a button is pressed. What counts as the drawing in there —
18
+ * the one element for an editor showing one, the panes composed for an editor
19
+ * showing a stack of charts — is `drawingIn`.
20
+ * @returns The box to attach, and the drawing inside it.
21
+ */
22
+ export declare function useDrawingBox(): DrawingBox;
23
+ //# sourceMappingURL=useDrawingBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDrawingBox.d.ts","sourceRoot":"","sources":["../../../src/download/ui/useDrawingBox.ts"],"names":[],"mappings":"AAIA,yCAAyC;AACzC,MAAM,WAAW,UAAU;IACzB,oEAAoE;IACpE,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C;;;;OAIG;IACH,UAAU,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAU1C"}
@@ -0,0 +1,21 @@
1
+ import { useCallback, useRef } from 'react';
2
+ import { drawingIn } from "../core/stackedDrawing.js";
3
+ /**
4
+ * Find the drawing a picture is to be taken of, when it is asked for.
5
+ *
6
+ * A drawing is laid out again on every resize, so the element itself is never
7
+ * held onto: what is kept is the box it sits in, and the drawing is read out of
8
+ * it at the moment a button is pressed. What counts as the drawing in there —
9
+ * the one element for an editor showing one, the panes composed for an editor
10
+ * showing a stack of charts — is `drawingIn`.
11
+ * @returns The box to attach, and the drawing inside it.
12
+ */
13
+ export function useDrawingBox() {
14
+ const box = useRef(null);
15
+ const attach = useCallback((element) => {
16
+ box.current = element;
17
+ }, []);
18
+ const getDrawing = useCallback(() => drawingIn(box.current), []);
19
+ return { attach, getDrawing };
20
+ }
21
+ //# sourceMappingURL=useDrawingBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDrawingBox.js","sourceRoot":"","sources":["../../../src/download/ui/useDrawingBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AActD;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,OAA2B,EAAE,EAAE;QACzD,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Name the source of a failed read.
3
+ *
4
+ * A reader is met by a user exactly once — when it fails — so what it says
5
+ * then is the whole of its interface, and saying it in one voice across a site
6
+ * matters more than in most code.
7
+ *
8
+ * A message that opens with the file's own name tells whoever dropped eleven
9
+ * files which of them is the problem; one that opens with `The pasted text`
10
+ * tells them the message is about the box they just typed into.
11
+ * @param fileName - The file's name, absent for a paste.
12
+ * @returns A subject a sentence can start with.
13
+ * @example
14
+ * `${describeSource(fileName)} holds no readable peak list.`
15
+ */
16
+ export declare function describeSource(fileName?: string): string;
17
+ //# sourceMappingURL=describeSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describeSource.d.ts","sourceRoot":"","sources":["../../../src/error/core/describeSource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Name the source of a failed read.
3
+ *
4
+ * A reader is met by a user exactly once — when it fails — so what it says
5
+ * then is the whole of its interface, and saying it in one voice across a site
6
+ * matters more than in most code.
7
+ *
8
+ * A message that opens with the file's own name tells whoever dropped eleven
9
+ * files which of them is the problem; one that opens with `The pasted text`
10
+ * tells them the message is about the box they just typed into.
11
+ * @param fileName - The file's name, absent for a paste.
12
+ * @returns A subject a sentence can start with.
13
+ * @example
14
+ * `${describeSource(fileName)} holds no readable peak list.`
15
+ */
16
+ export function describeSource(fileName) {
17
+ return fileName === undefined ? 'The pasted text' : fileName;
18
+ }
19
+ //# sourceMappingURL=describeSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describeSource.js","sourceRoot":"","sources":["../../../src/error/core/describeSource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC"}
@@ -1,2 +1,3 @@
1
+ export { describeSource } from './describeSource.ts';
1
2
  export { errorMessage, toError } from './toError.ts';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/error/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/error/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -1,2 +1,3 @@
1
+ export { describeSource } from "./describeSource.js";
1
2
  export { errorMessage, toError } from "./toError.js";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/error/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/error/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -15,6 +15,14 @@ export interface HelpExample {
15
15
  */
16
16
  note?: string;
17
17
  }
18
+ /**
19
+ * Help written as prose: one paragraph, or several.
20
+ *
21
+ * Several because an explanation worth reading is rarely one thought, and a
22
+ * dozen sentences run together into one block is a wall nobody reads to the
23
+ * end — which is the same as not having written it.
24
+ */
25
+ export type HelpText = string | readonly string[];
18
26
  /** Everything a piece of help says, wherever it is shown. */
19
27
  export interface HelpContent {
20
28
  /**
@@ -23,7 +31,8 @@ export interface HelpContent {
23
31
  */
24
32
  title?: string;
25
33
  /**
26
- * The explanation: one or two sentences, or any content of the site's own.
34
+ * The explanation: one or two sentences, any content of the site's own, or
35
+ * an array of strings, which is set as one paragraph each.
27
36
  * @default undefined
28
37
  */
29
38
  body?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"HelpBody.d.ts","sourceRoot":"","sources":["../../../src/help/ui/HelpBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKpE,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,WAAW,EAAE,CAAC;IAC/C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CAqC3D"}
1
+ {"version":3,"file":"HelpBody.d.ts","sourceRoot":"","sources":["../../../src/help/ui/HelpBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKpE,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;AAElD,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,WAAW,EAAE,CAAC;IAC/C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CAuC3D"}
@@ -14,7 +14,28 @@ export function HelpBody(props) {
14
14
  const { className, content, width = DEFAULT_WIDTH } = props;
15
15
  const t = useChromeT();
16
16
  const { title, body, example, link } = content;
17
- return (_jsxs("div", { className: joinClassNames('help-body', className), style: { ...BODY_STYLE, maxWidth: width }, children: [title === undefined ? null : _jsx("div", { style: TITLE_STYLE, children: title }), body === undefined ? null : _jsx("div", { style: TEXT_STYLE, children: body }), examplesOf(example).map((item) => (_jsxs("div", { style: EXAMPLE_STYLE, children: [_jsx("code", { style: CODE_STYLE, children: item.code }), item.input === undefined ? null : (_jsxs("div", { style: INPUT_STYLE, children: [t('help.on'), " ", _jsx("code", { style: CODE_STYLE, children: item.input })] })), item.note === undefined ? null : (_jsx("div", { style: NOTE_STYLE, children: item.note }))] }, exampleKey(item)))), link === undefined ? null : (_jsx("a", { href: link, target: "_blank", rel: "noopener noreferrer", style: LINK_STYLE, children: t('help.learnMore') }))] }));
17
+ return (_jsxs("div", { className: joinClassNames('help-body', className), style: { ...BODY_STYLE, maxWidth: width }, children: [title === undefined ? null : _jsx("div", { style: TITLE_STYLE, children: title }), body === undefined ? null : (_jsx("div", { style: TEXT_STYLE, children: paragraphsOf(body) })), examplesOf(example).map((item) => (_jsxs("div", { style: EXAMPLE_STYLE, children: [_jsx("code", { style: CODE_STYLE, children: item.code }), item.input === undefined ? null : (_jsxs("div", { style: INPUT_STYLE, children: [t('help.on'), " ", _jsx("code", { style: CODE_STYLE, children: item.input })] })), item.note === undefined ? null : (_jsx("div", { style: NOTE_STYLE, children: item.note }))] }, exampleKey(item)))), link === undefined ? null : (_jsx("a", { href: link, target: "_blank", rel: "noopener noreferrer", style: LINK_STYLE, children: t('help.learnMore') }))] }));
18
+ }
19
+ /**
20
+ * The body, with an array of strings set as paragraphs rather than run
21
+ * together.
22
+ *
23
+ * React renders `['one', 'two']` as `onetwo`, which is never what a caller who
24
+ * wrote two sentences meant. Anything else is handed back untouched: a body
25
+ * built of elements is the site's own and is laid out by whoever wrote it.
26
+ * @param body - The body, as the caller wrote it.
27
+ * @returns What to render.
28
+ */
29
+ function paragraphsOf(body) {
30
+ if (!Array.isArray(body))
31
+ return body;
32
+ const paragraphs = [];
33
+ for (const piece of body) {
34
+ if (typeof piece !== 'string')
35
+ return body;
36
+ paragraphs.push(piece);
37
+ }
38
+ return paragraphs.map((paragraph) => (_jsx("p", { style: PARAGRAPH_STYLE, children: paragraph }, paragraph)));
18
39
  }
19
40
  // Two examples are only the same when all three of their parts are, and a help
20
41
  // that repeats one example has nothing to gain from drawing it twice.
@@ -37,6 +58,8 @@ function examplesOf(example) {
37
58
  }
38
59
  return unique;
39
60
  }
61
+ /** The gap between paragraphs is the column's, so the margin is nobody's. */
62
+ const PARAGRAPH_STYLE = { margin: 0 };
40
63
  /** How wide a piece of help is drawn when the caller does not say. */
41
64
  const DEFAULT_WIDTH = 280;
42
65
  const BODY_STYLE = {
@@ -1 +1 @@
1
- {"version":3,"file":"HelpBody.js","sourceRoot":"","sources":["../../../src/help/ui/HelpBody.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HelpBody.js","sourceRoot":"","sources":["../../../src/help/ui/HelpBody.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAuEnE;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC;IAC5D,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAE/C,OAAO,CACL,eACE,SAAS,EAAE,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,EACjD,KAAK,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,aAExC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,KAAK,EAAE,WAAW,YAAG,KAAK,GAAO,EACnE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3B,cAAK,KAAK,EAAE,UAAU,YAAG,YAAY,CAAC,IAAI,CAAC,GAAO,CACnD,EACA,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACjC,eAA4B,KAAK,EAAE,aAAa,aAC9C,eAAM,KAAK,EAAE,UAAU,YAAG,IAAI,CAAC,IAAI,GAAQ,EAC1C,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACjC,eAAK,KAAK,EAAE,WAAW,aACpB,CAAC,CAAC,SAAS,CAAC,OAAE,eAAM,KAAK,EAAE,UAAU,YAAG,IAAI,CAAC,KAAK,GAAQ,IACvD,CACP,EACA,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAChC,cAAK,KAAK,EAAE,UAAU,YAAG,IAAI,CAAC,IAAI,GAAO,CAC1C,KATO,UAAU,CAAC,IAAI,CAAC,CAUpB,CACP,CAAC,EACD,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3B,YACE,IAAI,EAAE,IAAI,EACV,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,KAAK,EAAE,UAAU,YAEhB,CAAC,CAAC,gBAAgB,CAAC,GAClB,CACL,IACG,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,YAAY,CAAC,IAAe;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CACnC,YAAmB,KAAK,EAAE,eAAe,YACtC,SAAS,IADJ,SAAS,CAEb,CACL,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,sEAAsE;AACtE,SAAS,UAAU,CAAC,OAAoB;IACtC,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,UAAU,CAAC,OAA+B;IACjD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrC,IAAI,MAAM,IAAI,OAAO;QAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6EAA6E;AAC7E,MAAM,eAAe,GAAG,EAAE,MAAM,EAAE,CAAC,EAAmC,CAAC;AAEvE,sEAAsE;AACtE,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;CAC0B,CAAC;AAEnC,MAAM,WAAW,GAAG,EAAE,UAAU,EAAE,GAAG,EAAmC,CAAC;AAEzE,MAAM,UAAU,GAAG;IACjB,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,IAAI;CACgB,CAAC;AAEnC,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;IACN,UAAU,EAAE,GAAG;CACiB,CAAC;AAEnC,MAAM,UAAU,GAAG;IACjB,UAAU,EAAE,gDAAgD;IAC5D,QAAQ,EAAE,EAAE;CACoB,CAAC;AAEnC,MAAM,WAAW,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAmC,CAAC;AAEtE,MAAM,UAAU,GAAG;IACjB,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,QAAQ;CACa,CAAC;AAEnC,MAAM,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,EAAmC,CAAC"}
@@ -1,4 +1,4 @@
1
- export type { HelpBodyProps, HelpContent, HelpExample } from './HelpBody.tsx';
1
+ export type { HelpBodyProps, HelpContent, HelpExample, HelpText, } from './HelpBody.tsx';
2
2
  export { HelpBody } from './HelpBody.tsx';
3
3
  export type { HelpIconProps } from './HelpIcon.tsx';
4
4
  export { HelpIcon } from './HelpIcon.tsx';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/help/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/help/ui/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,GACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/help/ui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/help/ui/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAgB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * The step every reader shares: an `ir-spectrum` `Analysis` becomes spectra.
3
+ *
4
+ * All three readers hand back the same `Analysis`, and `ir-spectrum` has already
5
+ * done the part that needs to know what the file's y axis meant — it puts an `a`
6
+ * and a `t` variable on every spectrum whichever of the two was written. So what
7
+ * is left here is bookkeeping: order the points, type the arrays, read the
8
+ * records, and say which axis the file itself carried.
9
+ */
10
+ import type { Analysis } from 'ir-spectrum';
11
+ import type { IrMeta, IrOrigin } from './irSpectrum.ts';
12
+ /** One spectrum as a reader produced it, before it is named and coloured. */
13
+ export interface LoadedIrSpectrum {
14
+ /** The wavenumbers, ascending. */
15
+ wavenumber: Float64Array;
16
+ /** Absorbance at each. */
17
+ absorbance: Float64Array;
18
+ /** Percent transmittance at each. */
19
+ transmittance: Float64Array;
20
+ /** What the file said about the acquisition, `null` when it said nothing. */
21
+ meta: IrMeta | null;
22
+ /** Where it came from. */
23
+ origin: IrOrigin;
24
+ /**
25
+ * What the file called it, absent when it carried no title.
26
+ * @default undefined
27
+ */
28
+ name?: string;
29
+ }
30
+ /**
31
+ * Turn every spectrum an analysis holds into one loaded spectrum.
32
+ *
33
+ * All of them, never the first: a JCAMP is a container, and an instrument
34
+ * exporting a background beside a sample writes both as blocks of one file.
35
+ * Taking only the first would quietly drop what the chemist exported the file
36
+ * for, and would do it without an error.
37
+ *
38
+ * A block carrying fewer than two points is skipped rather than kept as a
39
+ * degenerate trace — a JCAMP link block, or a header block an instrument wrote
40
+ * with no data under it, is not a spectrum.
41
+ * @param analysis - What the reader built.
42
+ * @param origin - Where it came from: the format and the file.
43
+ * @returns One entry per readable block, in the order the file wrote them.
44
+ */
45
+ export declare function analysisSpectra(analysis: Analysis, origin: IrOrigin): LoadedIrSpectrum[];
46
+ //# sourceMappingURL=analysisSpectra.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysisSpectra.d.ts","sourceRoot":"","sources":["../../../src/ir/core/analysisSpectra.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhE,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,UAAU,EAAE,YAAY,CAAC;IACzB,0BAA0B;IAC1B,UAAU,EAAE,YAAY,CAAC;IACzB,qCAAqC;IACrC,aAAa,EAAE,YAAY,CAAC;IAC5B,6EAA6E;IAC7E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,0BAA0B;IAC1B,MAAM,EAAE,QAAQ,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,GACf,gBAAgB,EAAE,CA2CpB"}