react-science 9.0.0 → 10.0.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 (264) hide show
  1. package/lib/app/about/AboutDialogToolbarButton.d.ts +1 -1
  2. package/lib/app/about/AboutDialogToolbarButton.d.ts.map +1 -1
  3. package/lib/app/about/AboutDialogToolbarButton.js +0 -1
  4. package/lib/app/about/AboutDialogToolbarButton.js.map +1 -1
  5. package/lib/app/explorer/ExplorerPlotView.d.ts.map +1 -1
  6. package/lib/app/explorer/ExplorerPlotView.js +5 -9
  7. package/lib/app/explorer/ExplorerPlotView.js.map +1 -1
  8. package/lib/app/explorer/MeasurementExplorer.d.ts +1 -1
  9. package/lib/app/explorer/MeasurementExplorer.d.ts.map +1 -1
  10. package/lib/app/explorer/MeasurementExplorer.js +1 -1
  11. package/lib/app/explorer/MeasurementExplorer.js.map +1 -1
  12. package/lib/app/helpers/react-plot.d.ts +1 -1
  13. package/lib/app/helpers/react-plot.d.ts.map +1 -1
  14. package/lib/app/helpers/react-plot.js.map +1 -1
  15. package/lib/app/helpers/splitEntries.d.ts +1 -1
  16. package/lib/app/helpers/splitEntries.d.ts.map +1 -1
  17. package/lib/app/helpers/splitEntries.js +1 -1
  18. package/lib/app/helpers/splitEntries.js.map +1 -1
  19. package/lib/app/hooks/file-loading.d.ts +3 -3
  20. package/lib/app/hooks/file-loading.d.ts.map +1 -1
  21. package/lib/app/hooks/file-loading.js +1 -1
  22. package/lib/app/hooks/file-loading.js.map +1 -1
  23. package/lib/app/kinds/iv/plot-view/IvSeries.d.ts +1 -1
  24. package/lib/app/kinds/iv/plot-view/IvSeries.d.ts.map +1 -1
  25. package/lib/app/kinds/iv/plot-view/IvSeries.js +1 -1
  26. package/lib/app/kinds/iv/plot-view/IvSeries.js.map +1 -1
  27. package/lib/app/kinds/mass/MeasurementMassPlot.d.ts +1 -1
  28. package/lib/app/kinds/mass/MeasurementMassPlot.d.ts.map +1 -1
  29. package/lib/app/kinds/mass/MeasurementMassPlot.js +1 -1
  30. package/lib/app/kinds/mass/MeasurementMassPlot.js.map +1 -1
  31. package/lib/app/panels/measurement-config/MeasurementConfigPanel.js.map +1 -1
  32. package/lib/app/panels/measurement-info/MeasurementInfoPanel.d.ts.map +1 -1
  33. package/lib/app/panels/measurement-info/MeasurementInfoPanel.js.map +1 -1
  34. package/lib/app/panels/measurements/MeasurementColorPreview.d.ts +1 -1
  35. package/lib/app/panels/measurements/MeasurementColorPreview.d.ts.map +1 -1
  36. package/lib/app/panels/measurements/MeasurementColorPreview.js +1 -1
  37. package/lib/app/panels/measurements/MeasurementColorPreview.js.map +1 -1
  38. package/lib/app/panels/measurements/MeasurementsPanel.d.ts +1 -1
  39. package/lib/app/panels/measurements/MeasurementsPanel.d.ts.map +1 -1
  40. package/lib/app/panels/measurements/MeasurementsPanel.js +0 -1
  41. package/lib/app/panels/measurements/MeasurementsPanel.js.map +1 -1
  42. package/lib/app/panels/measurements/MeasurementsTable.d.ts +1 -1
  43. package/lib/app/panels/measurements/MeasurementsTable.d.ts.map +1 -1
  44. package/lib/app/panels/measurements/MeasurementsTable.js.map +1 -1
  45. package/lib/app/panels/measurements/measurement_panel_context.d.ts +1 -1
  46. package/lib/app/panels/measurements/measurement_panel_context.d.ts.map +1 -1
  47. package/lib/app/panels/measurements/measurement_panel_context.js +0 -1
  48. package/lib/app/panels/measurements/measurement_panel_context.js.map +1 -1
  49. package/lib/app/panels/measurements/measurement_panel_context.provider.d.ts +1 -1
  50. package/lib/app/panels/measurements/measurement_panel_context.provider.d.ts.map +1 -1
  51. package/lib/app/panels/measurements/measurement_panel_context.provider.js +1 -1
  52. package/lib/app/panels/measurements/measurement_panel_context.provider.js.map +1 -1
  53. package/lib/app-data/kinds/ir/irAutoPeakPickingEnhancer.d.ts +1 -1
  54. package/lib/app-data/kinds/ir/irAutoPeakPickingEnhancer.d.ts.map +1 -1
  55. package/lib/app-data/kinds/ir/irAutoPeakPickingEnhancer.js.map +1 -1
  56. package/lib/app-data/loaders/loadMeasurements.d.ts +2 -2
  57. package/lib/app-data/loaders/loadMeasurements.d.ts.map +1 -1
  58. package/lib/app-data/loaders/loadMeasurements.js +2 -2
  59. package/lib/app-data/loaders/loadMeasurements.js.map +1 -1
  60. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.d.ts +1 -1
  61. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.d.ts.map +1 -1
  62. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.js +1 -1
  63. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.js.map +1 -1
  64. package/lib/app-data/loaders/wdfLoader.d.ts.map +1 -1
  65. package/lib/app-data/loaders/wdfLoader.js.map +1 -1
  66. package/lib/app-data/state/app_state.actions.d.ts +2 -2
  67. package/lib/app-data/state/app_state.actions.d.ts.map +1 -1
  68. package/lib/app-data/state/app_state.actions.js +1 -2
  69. package/lib/app-data/state/app_state.actions.js.map +1 -1
  70. package/lib/app-data/state/app_state.d.ts +5 -5
  71. package/lib/app-data/state/app_state.d.ts.map +1 -1
  72. package/lib/app-data/state/app_state.js +0 -1
  73. package/lib/app-data/state/app_state.js.map +1 -1
  74. package/lib/app-data/state/app_state.provider.d.ts +1 -1
  75. package/lib/app-data/state/app_state.provider.d.ts.map +1 -1
  76. package/lib/app-data/state/app_state.provider.js.map +1 -1
  77. package/lib/app-data/state/producers/app_state_producer.d.ts +3 -3
  78. package/lib/app-data/state/producers/app_state_producer.d.ts.map +1 -1
  79. package/lib/app-data/state/producers/app_state_producer.js +0 -3
  80. package/lib/app-data/state/producers/app_state_producer.js.map +1 -1
  81. package/lib/app-data/state/producers/measurements/addMeasurements.js.map +1 -1
  82. package/lib/app-data/state/producers/plot-view/helpers/zoom.d.ts +1 -1
  83. package/lib/app-data/state/producers/plot-view/helpers/zoom.d.ts.map +1 -1
  84. package/lib/app-data/state/producers/plot-view/helpers/zoom.js +1 -1
  85. package/lib/app-data/state/producers/plot-view/helpers/zoom.js.map +1 -1
  86. package/lib/app-data/state/settings/get_empty_app_settings.d.ts +1 -1
  87. package/lib/app-data/state/settings/get_empty_app_settings.d.ts.map +1 -1
  88. package/lib/app-data/state/settings/get_empty_app_settings.js +0 -1
  89. package/lib/app-data/state/settings/get_empty_app_settings.js.map +1 -1
  90. package/lib/app-data/state/view/app_view.d.ts +1 -1
  91. package/lib/app-data/state/view/app_view.d.ts.map +1 -1
  92. package/lib/app-data/state/view/app_view.js +1 -1
  93. package/lib/app-data/state/view/app_view.js.map +1 -1
  94. package/lib/app-data/state/view/get_empty_app_view.d.ts +1 -1
  95. package/lib/app-data/state/view/get_empty_app_view.d.ts.map +1 -1
  96. package/lib/app-data/state/view/get_empty_app_view.js +0 -1
  97. package/lib/app-data/state/view/get_empty_app_view.js.map +1 -1
  98. package/lib/components/accordion/accordion_context.d.ts +1 -1
  99. package/lib/components/accordion/accordion_context.d.ts.map +1 -1
  100. package/lib/components/accordion/accordion_context.js +1 -1
  101. package/lib/components/accordion/accordion_context.js.map +1 -1
  102. package/lib/components/accordion/accordion_context.provider.d.ts +1 -1
  103. package/lib/components/accordion/accordion_context.provider.d.ts.map +1 -1
  104. package/lib/components/accordion/accordion_context.provider.js.map +1 -1
  105. package/lib/components/accordion/accordion_context.state.d.ts.map +1 -1
  106. package/lib/components/accordion/accordion_context.state.js.map +1 -1
  107. package/lib/components/activity_bar/activity_bar.d.ts +5 -6
  108. package/lib/components/activity_bar/activity_bar.d.ts.map +1 -1
  109. package/lib/components/activity_bar/activity_bar.js +39 -33
  110. package/lib/components/activity_bar/activity_bar.js.map +1 -1
  111. package/lib/components/activity_panel/activity_panel.d.ts +15 -0
  112. package/lib/components/activity_panel/activity_panel.d.ts.map +1 -0
  113. package/lib/components/activity_panel/activity_panel.js +45 -0
  114. package/lib/components/activity_panel/activity_panel.js.map +1 -0
  115. package/lib/components/activity_panel/index.d.ts +2 -0
  116. package/lib/components/activity_panel/index.d.ts.map +1 -0
  117. package/lib/components/activity_panel/index.js +2 -0
  118. package/lib/components/activity_panel/index.js.map +1 -0
  119. package/lib/components/button/Button.d.ts +2 -2
  120. package/lib/components/button/Button.d.ts.map +1 -1
  121. package/lib/components/button/Button.js +4 -1
  122. package/lib/components/button/Button.js.map +1 -1
  123. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts +2 -2
  124. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts.map +1 -1
  125. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.js +1 -1
  126. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.js.map +1 -1
  127. package/lib/components/color-picker/gradient_select/gradient_select.d.ts +1 -1
  128. package/lib/components/color-picker/gradient_select/gradient_select.d.ts.map +1 -1
  129. package/lib/components/color-picker/gradient_select/gradient_select.js +1 -1
  130. package/lib/components/color-picker/gradient_select/gradient_select.js.map +1 -1
  131. package/lib/components/color-picker/preview/FixedGradientPreview.d.ts +1 -1
  132. package/lib/components/color-picker/preview/FixedGradientPreview.d.ts.map +1 -1
  133. package/lib/components/color-picker/preview/FixedGradientPreview.js +1 -1
  134. package/lib/components/color-picker/preview/FixedGradientPreview.js.map +1 -1
  135. package/lib/components/color-picker/react-color/ColorPicker.d.ts +1 -1
  136. package/lib/components/color-picker/react-color/ColorPicker.d.ts.map +1 -1
  137. package/lib/components/color-picker/react-color/ColorPicker.js +1 -1
  138. package/lib/components/color-picker/react-color/ColorPicker.js.map +1 -1
  139. package/lib/components/color-picker/react-color/sketch/SketchFields.d.ts.map +1 -1
  140. package/lib/components/color-picker/react-color/sketch/SketchFields.js.map +1 -1
  141. package/lib/components/color-picker/react-color/sketch/SketchPresetColors.d.ts.map +1 -1
  142. package/lib/components/color-picker/react-color/sketch/SketchPresetColors.js.map +1 -1
  143. package/lib/components/dialog/ConfirmDialog.d.ts +1 -1
  144. package/lib/components/dialog/ConfirmDialog.d.ts.map +1 -1
  145. package/lib/components/dialog/ConfirmDialog.js +1 -2
  146. package/lib/components/dialog/ConfirmDialog.js.map +1 -1
  147. package/lib/components/forms/radio-group/ButtonRadioItem.d.ts.map +1 -1
  148. package/lib/components/forms/radio-group/ButtonRadioItem.js.map +1 -1
  149. package/lib/components/fullscreen/fullscreen_context.provider.d.ts +1 -1
  150. package/lib/components/fullscreen/fullscreen_context.provider.d.ts.map +1 -1
  151. package/lib/components/fullscreen/fullscreen_context.provider.js +0 -1
  152. package/lib/components/fullscreen/fullscreen_context.provider.js.map +1 -1
  153. package/lib/components/hooks/useModifiedPopper.d.ts +2 -2
  154. package/lib/components/hooks/useModifiedPopper.d.ts.map +1 -1
  155. package/lib/components/hooks/useModifiedPopper.js +0 -1
  156. package/lib/components/hooks/useModifiedPopper.js.map +1 -1
  157. package/lib/components/hooks/useOnClickOutside.d.ts +1 -1
  158. package/lib/components/hooks/useOnClickOutside.d.ts.map +1 -1
  159. package/lib/components/hooks/useOnClickOutside.js.map +1 -1
  160. package/lib/components/hooks/useSelect.d.ts +2 -2
  161. package/lib/components/hooks/useSelect.d.ts.map +1 -1
  162. package/lib/components/hooks/useSelect.js +0 -1
  163. package/lib/components/hooks/useSelect.js.map +1 -1
  164. package/lib/components/index.d.ts +1 -0
  165. package/lib/components/index.d.ts.map +1 -1
  166. package/lib/components/index.js +1 -0
  167. package/lib/components/index.js.map +1 -1
  168. package/lib/components/info-panel/InfoPanel.d.ts +1 -1
  169. package/lib/components/info-panel/InfoPanel.d.ts.map +1 -1
  170. package/lib/components/info-panel/InfoPanel.js +14 -25
  171. package/lib/components/info-panel/InfoPanel.js.map +1 -1
  172. package/lib/components/logger/FifoLoggerDialog.d.ts.map +1 -1
  173. package/lib/components/logger/FifoLoggerDialog.js.map +1 -1
  174. package/lib/components/logger/FifoLoggerToolbarItem.js +0 -1
  175. package/lib/components/logger/FifoLoggerToolbarItem.js.map +1 -1
  176. package/lib/components/root-layout/root_layout.d.ts +1 -1
  177. package/lib/components/root-layout/root_layout.d.ts.map +1 -1
  178. package/lib/components/root-layout/root_layout.js +1 -1
  179. package/lib/components/root-layout/root_layout.js.map +1 -1
  180. package/lib/components/split-pane/SplitPane.d.ts +1 -1
  181. package/lib/components/split-pane/SplitPane.d.ts.map +1 -1
  182. package/lib/components/split-pane/SplitPane.js +4 -3
  183. package/lib/components/split-pane/SplitPane.js.map +1 -1
  184. package/lib/components/table/table_header_cell.d.ts +1 -1
  185. package/lib/components/table/table_header_cell.d.ts.map +1 -1
  186. package/lib/components/table/table_header_cell.js.map +1 -1
  187. package/lib/components/table/table_root.d.ts +1 -1
  188. package/lib/components/table/table_root.d.ts.map +1 -1
  189. package/lib/components/table/table_root.js.map +1 -1
  190. package/lib/components/table/table_row_cell.d.ts +1 -1
  191. package/lib/components/table/table_row_cell.d.ts.map +1 -1
  192. package/lib/components/table/table_row_cell.js.map +1 -1
  193. package/lib/components/table/table_utils.d.ts +1 -1
  194. package/lib/components/table/table_utils.d.ts.map +1 -1
  195. package/lib/components/table/table_utils.js +1 -1
  196. package/lib/components/table/table_utils.js.map +1 -1
  197. package/lib/components/toolbar/Toolbar.d.ts +12 -8
  198. package/lib/components/toolbar/Toolbar.d.ts.map +1 -1
  199. package/lib/components/toolbar/Toolbar.js +11 -11
  200. package/lib/components/toolbar/Toolbar.js.map +1 -1
  201. package/lib/components/toolbar/toolbarContext.d.ts +1 -1
  202. package/lib/components/toolbar/toolbarContext.d.ts.map +1 -1
  203. package/lib/components/toolbar/toolbarContext.js +0 -1
  204. package/lib/components/toolbar/toolbarContext.js.map +1 -1
  205. package/package.json +36 -35
  206. package/src/app/about/AboutDialogToolbarButton.tsx +1 -1
  207. package/src/app/explorer/ExplorerPlotView.tsx +6 -9
  208. package/src/app/explorer/MeasurementExplorer.tsx +2 -4
  209. package/src/app/helpers/react-plot.tsx +2 -1
  210. package/src/app/helpers/splitEntries.ts +5 -5
  211. package/src/app/hooks/file-loading.ts +6 -3
  212. package/src/app/kinds/iv/plot-view/IvSeries.tsx +2 -5
  213. package/src/app/kinds/mass/MeasurementMassPlot.tsx +2 -4
  214. package/src/app/panels/measurement-config/MeasurementConfigPanel.tsx +1 -1
  215. package/src/app/panels/measurement-info/MeasurementInfoPanel.tsx +2 -1
  216. package/src/app/panels/measurements/MeasurementColorPreview.tsx +2 -5
  217. package/src/app/panels/measurements/MeasurementsPanel.tsx +3 -2
  218. package/src/app/panels/measurements/MeasurementsTable.tsx +5 -3
  219. package/src/app/panels/measurements/measurement_panel_context.provider.tsx +2 -4
  220. package/src/app/panels/measurements/measurement_panel_context.ts +1 -1
  221. package/src/app-data/kinds/ir/irAutoPeakPickingEnhancer.ts +2 -1
  222. package/src/app-data/loaders/loadMeasurements.ts +4 -11
  223. package/src/app-data/loaders/proprietary/agilent/cary500Loader.ts +2 -5
  224. package/src/app-data/loaders/wdfLoader.ts +2 -1
  225. package/src/app-data/state/app_state.actions.ts +5 -5
  226. package/src/app-data/state/app_state.provider.tsx +2 -1
  227. package/src/app-data/state/app_state.ts +9 -5
  228. package/src/app-data/state/producers/app_state_producer.ts +3 -3
  229. package/src/app-data/state/producers/measurements/addMeasurements.ts +1 -1
  230. package/src/app-data/state/producers/plot-view/helpers/zoom.ts +6 -6
  231. package/src/app-data/state/settings/get_empty_app_settings.ts +1 -1
  232. package/src/app-data/state/view/app_view.ts +1 -1
  233. package/src/app-data/state/view/get_empty_app_view.ts +1 -1
  234. package/src/components/accordion/accordion_context.provider.tsx +4 -2
  235. package/src/components/accordion/accordion_context.state.ts +2 -1
  236. package/src/components/accordion/accordion_context.ts +4 -4
  237. package/src/components/activity_bar/activity_bar.tsx +49 -53
  238. package/src/components/activity_panel/activity_panel.tsx +75 -0
  239. package/src/components/activity_panel/index.ts +1 -0
  240. package/src/components/button/Button.tsx +12 -5
  241. package/src/components/color-picker/color-picker-dropdown/ColorPickerDropdown.tsx +4 -5
  242. package/src/components/color-picker/gradient_select/gradient_select.tsx +4 -5
  243. package/src/components/color-picker/preview/FixedGradientPreview.tsx +2 -4
  244. package/src/components/color-picker/react-color/ColorPicker.tsx +2 -7
  245. package/src/components/color-picker/react-color/sketch/SketchFields.tsx +2 -1
  246. package/src/components/color-picker/react-color/sketch/SketchPresetColors.tsx +2 -1
  247. package/src/components/dialog/ConfirmDialog.tsx +2 -6
  248. package/src/components/forms/radio-group/ButtonRadioItem.tsx +2 -1
  249. package/src/components/fullscreen/fullscreen_context.provider.tsx +2 -1
  250. package/src/components/hooks/useModifiedPopper.ts +5 -3
  251. package/src/components/hooks/useOnClickOutside.ts +2 -1
  252. package/src/components/hooks/useSelect.tsx +3 -2
  253. package/src/components/index.ts +1 -0
  254. package/src/components/info-panel/InfoPanel.tsx +20 -32
  255. package/src/components/logger/FifoLoggerDialog.tsx +2 -1
  256. package/src/components/logger/FifoLoggerToolbarItem.tsx +1 -1
  257. package/src/components/root-layout/root_layout.tsx +2 -6
  258. package/src/components/split-pane/SplitPane.tsx +9 -11
  259. package/src/components/table/table_header_cell.tsx +2 -1
  260. package/src/components/table/table_root.tsx +1 -2
  261. package/src/components/table/table_row_cell.tsx +2 -1
  262. package/src/components/table/table_utils.ts +2 -6
  263. package/src/components/toolbar/Toolbar.tsx +37 -38
  264. package/src/components/toolbar/toolbarContext.ts +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-science",
3
- "version": "9.0.0",
3
+ "version": "10.0.0",
4
4
  "description": "React components to build scientific applications UI",
5
5
  "type": "module",
6
6
  "exports": {
@@ -39,7 +39,7 @@
39
39
  "test-only": "vitest run --coverage "
40
40
  },
41
41
  "volta": {
42
- "node": "22.9.0"
42
+ "node": "22.11.0"
43
43
  },
44
44
  "overrides": {
45
45
  "react": "^18.3.1",
@@ -53,76 +53,77 @@
53
53
  "react-dom": ">=18.0.0"
54
54
  },
55
55
  "dependencies": {
56
- "@blueprintjs/select": "^5.2.5",
57
- "@emotion/react": "^11.13.3",
58
- "@emotion/styled": "^11.13.0",
56
+ "@blueprintjs/select": "^5.3.4",
57
+ "@emotion/react": "^11.13.5",
58
+ "@emotion/styled": "^11.13.5",
59
59
  "@lukeed/uuid": "^2.0.1",
60
60
  "@popperjs/core": "^2.11.8",
61
61
  "@radix-ui/react-collapsible": "^1.1.1",
62
62
  "@radix-ui/react-radio-group": "^1.2.1",
63
63
  "@radix-ui/react-select": "^2.1.2",
64
- "@tanstack/react-query": "^5.59.13",
64
+ "@tanstack/react-query": "^5.61.0",
65
65
  "@tanstack/react-table": "^8.20.5",
66
66
  "biologic-converter": "^0.6.0",
67
- "cheminfo-types": "^1.8.0",
67
+ "cheminfo-types": "^1.8.1",
68
68
  "d3-scale-chromatic": "^3.1.0",
69
69
  "filelist-utils": "^1.11.2",
70
70
  "immer": "^10.1.1",
71
- "jcampconverter": "^9.6.4",
71
+ "jcampconverter": "^10.0.1",
72
72
  "lodash": "^4.17.21",
73
73
  "ml-gsd": "^12.1.8",
74
74
  "ml-peak-shape-generator": "^4.1.4",
75
- "ml-signal-processing": "^1.1.1",
76
- "ml-spectra-processing": "^14.6.0",
77
- "ms-spectrum": "^3.6.8",
75
+ "ml-signal-processing": "^1.2.0",
76
+ "ml-spectra-processing": "^14.6.2",
77
+ "ms-spectrum": "^3.6.10",
78
78
  "netcdfjs": "^3.0.0",
79
- "react-d3-utils": "^2.0.0",
80
- "react-dropzone": "14.2.3",
79
+ "react-d3-utils": "^3.0.0",
80
+ "react-dropzone": "14.3.5",
81
81
  "react-icons": "^5.3.0",
82
82
  "react-inspector": "^6.0.2",
83
83
  "react-plot": "^3.0.0",
84
84
  "react-popper": "^2.3.0",
85
85
  "spc-parser": "^1.0.0",
86
86
  "tinycolor2": "^1.6.0",
87
+ "ts-pattern": "^5.5.0",
87
88
  "use-resize-observer": "^9.1.0",
88
89
  "wdf-parser": "^0.3.0"
89
90
  },
90
91
  "devDependencies": {
91
- "@blueprintjs/core": "^5.13.1",
92
- "@blueprintjs/icons": "^5.13.0",
93
- "@playwright/experimental-ct-react": "^1.48.0",
94
- "@playwright/test": "^1.48.0",
95
- "@storybook/addon-essentials": "^8.3.5",
96
- "@storybook/addon-storysource": "^8.3.5",
97
- "@storybook/blocks": "^8.3.5",
98
- "@storybook/react": "^8.3.5",
99
- "@storybook/react-vite": "^8.3.5",
92
+ "@blueprintjs/core": "^5.15.0",
93
+ "@blueprintjs/icons": "^5.14.0",
94
+ "@playwright/experimental-ct-react": "^1.49.0",
95
+ "@playwright/test": "^1.49.0",
96
+ "@storybook/addon-essentials": "^8.4.5",
97
+ "@storybook/addon-storysource": "^8.4.5",
98
+ "@storybook/blocks": "^8.4.5",
99
+ "@storybook/react": "^8.4.5",
100
+ "@storybook/react-vite": "^8.4.5",
100
101
  "@types/babel__core": "^7.20.5",
101
102
  "@types/d3-scale-chromatic": "^3.0.3",
102
- "@types/lodash": "^4.17.10",
103
- "@types/react": "^18.3.11",
103
+ "@types/lodash": "^4.17.13",
104
+ "@types/react": "^18.3.12",
104
105
  "@types/react-dom": "^18.3.1",
105
106
  "@types/react-inspector": "^4.0.6",
106
107
  "@types/tinycolor2": "^1.4.6",
107
- "@vitejs/plugin-react": "^4.3.2",
108
- "@vitest/coverage-v8": "^2.1.3",
109
- "cheminfo-font": "^1.13.0",
108
+ "@vitejs/plugin-react": "^4.3.3",
109
+ "@vitest/coverage-v8": "^2.1.5",
110
+ "cheminfo-font": "^1.13.1",
110
111
  "cross-env": "^7.0.3",
111
- "eslint": "^9.12.0",
112
- "eslint-config-zakodium": "^13.0.0",
113
- "eslint-plugin-storybook": "^0.9.0",
112
+ "eslint": "^9.15.0",
113
+ "eslint-config-zakodium": "^14.0.0",
114
+ "eslint-plugin-storybook": "^0.11.1",
114
115
  "fifo-logger": "^1.0.0",
115
116
  "prettier": "^3.3.3",
116
117
  "react": "^18.3.1",
117
118
  "react-dom": "^18.3.1",
118
- "react-error-boundary": "^4.0.13",
119
+ "react-error-boundary": "^4.1.2",
119
120
  "react-kbs": "^2.1.1",
120
- "react-ocl": "^7.0.1",
121
+ "react-ocl": "^7.0.2",
121
122
  "rimraf": "^6.0.1",
122
- "storybook": "^8.3.5",
123
+ "storybook": "^8.4.5",
123
124
  "typescript": "^5.6.3",
124
- "vite": "^5.4.9",
125
- "vitest": "^2.1.3"
125
+ "vite": "^5.4.11",
126
+ "vitest": "^2.1.5"
126
127
  },
127
128
  "repository": {
128
129
  "type": "git",
@@ -1,6 +1,6 @@
1
1
  import { Dialog, DialogBody } from '@blueprintjs/core';
2
2
  import type { IconName } from '@blueprintjs/icons';
3
- import { type ReactElement, type ReactNode } from 'react';
3
+ import type { ReactElement, ReactNode } from 'react';
4
4
 
5
5
  import { Toolbar, useOnOff } from '../../components/index.js';
6
6
 
@@ -1,3 +1,5 @@
1
+ import { match } from 'ts-pattern';
2
+
1
3
  import { useAppView } from '../../app-data/index.js';
2
4
  import { assertNotNull } from '../../components/index.js';
3
5
  import { IvPlotView, MassPlotView } from '../index.js';
@@ -8,13 +10,8 @@ export function ExplorerPlotView() {
8
10
  const appView = useAppView();
9
11
  const selectedKind = appView.selectedKind;
10
12
  assertNotNull(selectedKind);
11
- switch (selectedKind) {
12
- case 'mass':
13
- return <MassPlotView />;
14
- case 'iv':
15
- return <IvPlotView />;
16
- default: {
17
- return <MeasurementExplorerWithState />;
18
- }
19
- }
13
+ return match(selectedKind)
14
+ .with('mass', () => <MassPlotView />)
15
+ .with('iv', () => <IvPlotView />)
16
+ .otherwise(() => <MeasurementExplorerWithState />);
20
17
  }
@@ -2,10 +2,8 @@ import styled from '@emotion/styled';
2
2
  import { useMemo, useState } from 'react';
3
3
  import { FaArrowsAltH, FaExchangeAlt } from 'react-icons/fa';
4
4
 
5
- import {
6
- MeasurementPlot,
7
- type MeasurementPlotProps,
8
- } from '../helpers/index.js';
5
+ import type { MeasurementPlotProps } from '../helpers/index.js';
6
+ import { MeasurementPlot } from '../helpers/index.js';
9
7
 
10
8
  export type MeasurementExplorerProps = Omit<
11
9
  MeasurementPlotProps,
@@ -1,5 +1,6 @@
1
1
  import styled from '@emotion/styled';
2
- import { type ReactNode, useMemo } from 'react';
2
+ import type { ReactNode } from 'react';
3
+ import { useMemo } from 'react';
3
4
  import { ResponsiveChart } from 'react-d3-utils';
4
5
  import {
5
6
  Annotations,
@@ -1,9 +1,9 @@
1
- import {
2
- type AppState,
3
- iterateKindMeasurementsAndView,
4
- type MeasurementAndView,
5
- type MeasurementKind,
1
+ import type {
2
+ AppState,
3
+ MeasurementAndView,
4
+ MeasurementKind,
6
5
  } from '../../app-data/index.js';
6
+ import { iterateKindMeasurementsAndView } from '../../app-data/index.js';
7
7
 
8
8
  export function splitEntries<Kind extends MeasurementKind>(
9
9
  appState: AppState,
@@ -1,9 +1,12 @@
1
- import { useQuery, type UseQueryResult } from '@tanstack/react-query';
1
+ import type { UseQueryResult } from '@tanstack/react-query';
2
+ import { useQuery } from '@tanstack/react-query';
2
3
  import type { FifoLogger } from 'fifo-logger';
3
- import { FileCollection, fileCollectionFromWebSource } from 'filelist-utils';
4
+ import type { FileCollection } from 'filelist-utils';
5
+ import { fileCollectionFromWebSource } from 'filelist-utils';
4
6
  import { useCallback } from 'react';
5
7
 
6
- import { type AppDispatch, useAppDispatch } from '../../app-data/index.js';
8
+ import type { AppDispatch } from '../../app-data/index.js';
9
+ import { useAppDispatch } from '../../app-data/index.js';
7
10
  import { useFifoLogger, useHashSearchParams } from '../../components/index.js';
8
11
 
9
12
  type LoadFn = (
@@ -2,11 +2,8 @@ import { xyToXYObject } from 'ml-spectra-processing';
2
2
  import { useMemo } from 'react';
3
3
  import { LineSeries } from 'react-plot';
4
4
 
5
- import {
6
- type ColorConfig,
7
- getVariableByLabel,
8
- type IvMeasurement,
9
- } from '../../../../app-data/index.js';
5
+ import type { ColorConfig, IvMeasurement } from '../../../../app-data/index.js';
6
+ import { getVariableByLabel } from '../../../../app-data/index.js';
10
7
  import { getColorFromConfig } from '../../../helpers/index.js';
11
8
 
12
9
  interface IvSeriesProps {
@@ -10,10 +10,8 @@ import {
10
10
  usePlotControllerAxes,
11
11
  } from 'react-plot';
12
12
 
13
- import {
14
- BasicComponent,
15
- type MeasurementPlotProps,
16
- } from '../../helpers/index.js';
13
+ import type { MeasurementPlotProps } from '../../helpers/index.js';
14
+ import { BasicComponent } from '../../helpers/index.js';
17
15
 
18
16
  interface Peak {
19
17
  label: string;
@@ -1,5 +1,5 @@
1
+ import type { ColorConfig } from '../../../app-data/index.js';
1
2
  import {
2
- type ColorConfig,
3
3
  getFirstSelectedMeasurementData,
4
4
  useAppDispatch,
5
5
  useAppState,
@@ -2,7 +2,8 @@ import {
2
2
  getCurrentMeasurementData,
3
3
  useAppState,
4
4
  } from '../../../app-data/index.js';
5
- import { InfoPanel, type InfoPanelData } from '../../../components/index.js';
5
+ import type { InfoPanelData } from '../../../components/index.js';
6
+ import { InfoPanel } from '../../../components/index.js';
6
7
 
7
8
  export function MeasurementInfoPanel() {
8
9
  const appState = useAppState();
@@ -1,11 +1,8 @@
1
1
  import styled from '@emotion/styled';
2
2
  import { useRef } from 'react';
3
3
 
4
- import {
5
- type ColorConfig,
6
- type MeasurementKind,
7
- useAppDispatch,
8
- } from '../../../app-data/index.js';
4
+ import type { ColorConfig, MeasurementKind } from '../../../app-data/index.js';
5
+ import { useAppDispatch } from '../../../app-data/index.js';
9
6
  import {
10
7
  ColorPicker,
11
8
  ColorPreview,
@@ -1,11 +1,12 @@
1
1
  /** @jsxImportSource @emotion/react */
2
- import { type PanelProps, Tab, Tabs } from '@blueprintjs/core';
2
+ import type { PanelProps } from '@blueprintjs/core';
3
+ import { Tab, Tabs } from '@blueprintjs/core';
3
4
  import { css } from '@emotion/react';
4
5
  import { useMemo } from 'react';
5
6
 
7
+ import type { MeasurementKind } from '../../../app-data/index.js';
6
8
  import {
7
9
  kindLabels,
8
- type MeasurementKind,
9
10
  measurementKinds,
10
11
  useAppDispatch,
11
12
  useAppState,
@@ -2,18 +2,20 @@ import { Menu, MenuItem, Popover } from '@blueprintjs/core';
2
2
  import styled from '@emotion/styled';
3
3
  import { useMemo } from 'react';
4
4
 
5
+ import type {
6
+ MeasurementBase,
7
+ MeasurementKind,
8
+ } from '../../../app-data/index.js';
5
9
  import {
6
10
  getMeasurement,
7
- type MeasurementBase,
8
- type MeasurementKind,
9
11
  useAppDispatch,
10
12
  useAppState,
11
13
  } from '../../../app-data/index.js';
14
+ import type { InfoPanelData } from '../../../components/index.js';
12
15
  import {
13
16
  Button,
14
17
  ConfirmDialog,
15
18
  InfoPanel,
16
- type InfoPanelData,
17
19
  PanelPreferencesToolbar,
18
20
  useOnOff,
19
21
  } from '../../../components/index.js';
@@ -1,9 +1,7 @@
1
1
  import type { ReactNode } from 'react';
2
2
 
3
- import {
4
- measurementPanelContext,
5
- type MeasurementState,
6
- } from './measurement_panel_context.js';
3
+ import type { MeasurementState } from './measurement_panel_context.js';
4
+ import { measurementPanelContext } from './measurement_panel_context.js';
7
5
 
8
6
  export function MeasurementPanelProvider({
9
7
  children,
@@ -1,4 +1,4 @@
1
- import { type Panel } from '@blueprintjs/core';
1
+ import type { Panel } from '@blueprintjs/core';
2
2
  import { createContext, useContext } from 'react';
3
3
 
4
4
  export interface MeasurementState {
@@ -1,4 +1,5 @@
1
- import { gsd, type GSDOptions } from 'ml-gsd';
1
+ import type { GSDOptions } from 'ml-gsd';
2
+ import { gsd } from 'ml-gsd';
2
3
  import type { Shape1D } from 'ml-peak-shape-generator';
3
4
  import { xMinMaxValues } from 'ml-spectra-processing';
4
5
 
@@ -2,18 +2,11 @@ import type { FifoLogger } from 'fifo-logger';
2
2
  import type { FileCollection } from 'filelist-utils';
3
3
  import { xMinMaxValues } from 'ml-spectra-processing';
4
4
 
5
- import {
6
- enhance,
7
- type Enhancers,
8
- type MeasurementBase,
9
- type Measurements,
10
- } from '../index.js';
5
+ import type { Enhancers, MeasurementBase, Measurements } from '../index.js';
6
+ import { enhance } from '../index.js';
11
7
 
12
- import {
13
- type MeasurementsLoader,
14
- mergeMeasurements,
15
- type ParserLog,
16
- } from './utility/index.js';
8
+ import type { MeasurementsLoader, ParserLog } from './utility/index.js';
9
+ import { mergeMeasurements } from './utility/index.js';
17
10
 
18
11
  export interface LoadOptions {
19
12
  loaders?: MeasurementsLoader[];
@@ -1,11 +1,8 @@
1
1
  import type { FifoLogger } from 'fifo-logger';
2
2
  import type { FileCollection, FileCollectionItem } from 'filelist-utils';
3
3
 
4
- import {
5
- getMeasurementInfoFromFile,
6
- type MeasurementBase,
7
- type Measurements,
8
- } from '../../../index.js';
4
+ import type { MeasurementBase, Measurements } from '../../../index.js';
5
+ import { getMeasurementInfoFromFile } from '../../../index.js';
9
6
 
10
7
  export async function cary500Loader(
11
8
  fileCollection: FileCollection,
@@ -1,7 +1,8 @@
1
1
  import type { MeasurementVariable } from 'cheminfo-types';
2
2
  import type { FifoLogger } from 'fifo-logger';
3
3
  import type { FileCollection } from 'filelist-utils';
4
- import { parse, type Wdf } from 'wdf-parser';
4
+ import type { Wdf } from 'wdf-parser';
5
+ import { parse } from 'wdf-parser';
5
6
 
6
7
  import type { MeasurementBase, Measurements } from '../index.js';
7
8
 
@@ -1,8 +1,8 @@
1
- import { type AppState } from './app_state.js';
2
- import {
3
- type MeasurementKind,
4
- type MeasurementKindAndId,
5
- type Measurements,
1
+ import type { AppState } from './app_state.js';
2
+ import type {
3
+ MeasurementKind,
4
+ MeasurementKindAndId,
5
+ Measurements,
6
6
  } from './data/index.js';
7
7
  import type { MeasurementAppView, Plot2DZoom } from './view/index.js';
8
8
 
@@ -1,4 +1,5 @@
1
- import { type ReactNode, useReducer } from 'react';
1
+ import type { ReactNode } from 'react';
2
+ import { useReducer } from 'react';
2
3
 
3
4
  import {
4
5
  appDispatchContext,
@@ -1,11 +1,15 @@
1
1
  import { produce } from 'immer';
2
- import { createContext, type Dispatch, useContext } from 'react';
2
+ import type { Dispatch } from 'react';
3
+ import { createContext, useContext } from 'react';
3
4
 
4
- import { type AppStateAction } from './app_state.actions.js';
5
- import { type AppData, getEmptyAppData } from './data/index.js';
5
+ import type { AppStateAction } from './app_state.actions.js';
6
+ import type { AppData } from './data/index.js';
7
+ import { getEmptyAppData } from './data/index.js';
6
8
  import { appStateProducer } from './producers/index.js';
7
- import { type AppSettings, getEmptyAppSettings } from './settings/index.js';
8
- import { type AppView, getEmptyAppView } from './view/index.js';
9
+ import type { AppSettings } from './settings/index.js';
10
+ import { getEmptyAppSettings } from './settings/index.js';
11
+ import type { AppView } from './view/index.js';
12
+ import { getEmptyAppView } from './view/index.js';
9
13
 
10
14
  export interface AppState {
11
15
  load: AppLoad;
@@ -1,7 +1,7 @@
1
- import { type Draft } from 'immer';
1
+ import type { Draft } from 'immer';
2
2
 
3
- import { type AppStateAction } from '../app_state.actions.js';
4
- import { type AppState } from '../app_state.js';
3
+ import type { AppStateAction } from '../app_state.actions.js';
4
+ import type { AppState } from '../app_state.js';
5
5
 
6
6
  import { addMeasurements } from './measurements/addMeasurements.js';
7
7
  import {
@@ -1,10 +1,10 @@
1
1
  import { assert, defaultColorPalette } from '../../../../components/index.js';
2
2
  import { getPreferredVariable, mergeMeasurements } from '../../../index.js';
3
+ import type { MeasurementKind } from '../../index.js';
3
4
  import {
4
5
  getFirstMeasurementOrFail,
5
6
  iterateMeasurementEntries,
6
7
  kindLabels,
7
- type MeasurementKind,
8
8
  } from '../../index.js';
9
9
  import { resetZoom, updateZoom } from '../plot-view/helpers/zoom.js';
10
10
  import type { AppStateProducer } from '../types.js';
@@ -3,13 +3,13 @@ import {
3
3
  getPreferredVariable,
4
4
  getVariableByLabel,
5
5
  } from '../../../../helpers/index.js';
6
- import {
7
- type AppState,
8
- iterateKindMeasurementsAndView,
9
- type MeasurementBase,
10
- type MeasurementKind,
11
- type Plot2DZoom,
6
+ import type {
7
+ AppState,
8
+ MeasurementBase,
9
+ MeasurementKind,
10
+ Plot2DZoom,
12
11
  } from '../../../index.js';
12
+ import { iterateKindMeasurementsAndView } from '../../../index.js';
13
13
 
14
14
  export function getInitialZoom(): Plot2DZoom {
15
15
  return {
@@ -1,4 +1,4 @@
1
- import { type AppSettings } from './app_settings.js';
1
+ import type { AppSettings } from './app_settings.js';
2
2
 
3
3
  export function getEmptyAppSettings(): AppSettings {
4
4
  return {
@@ -1,4 +1,4 @@
1
- import { type GradientScaleName } from '../../../components/index.js';
1
+ import type { GradientScaleName } from '../../../components/index.js';
2
2
  import type { MeasurementKind } from '../index.js';
3
3
 
4
4
  export interface AppView {
@@ -1,4 +1,4 @@
1
- import { type AppView } from './app_view.js';
1
+ import type { AppView } from './app_view.js';
2
2
 
3
3
  export function getEmptyAppView(): AppView {
4
4
  return {
@@ -1,6 +1,8 @@
1
- import { type ReactNode, useMemo, useReducer } from 'react';
1
+ import type { ReactNode } from 'react';
2
+ import { useMemo, useReducer } from 'react';
2
3
 
3
- import { accordionContext, type ContextType } from './accordion_context.js';
4
+ import type { ContextType } from './accordion_context.js';
5
+ import { accordionContext } from './accordion_context.js';
4
6
  import { reducer } from './accordion_context.state.js';
5
7
 
6
8
  export function AccordionProvider(props: { children: ReactNode }) {
@@ -1,4 +1,5 @@
1
- import { type Draft, produce } from 'immer';
1
+ import type { Draft } from 'immer';
2
+ import { produce } from 'immer';
2
3
  import type { Reducer } from 'react';
3
4
 
4
5
  type ActionType<Action, Payload = void> = Payload extends void
@@ -1,10 +1,10 @@
1
1
  import { createContext, useContext, useEffect, useMemo } from 'react';
2
2
 
3
- import {
4
- type AccordionItemState,
5
- type AccordionState,
6
- getItem,
3
+ import type {
4
+ AccordionItemState,
5
+ AccordionState,
7
6
  } from './accordion_context.state.js';
7
+ import { getItem } from './accordion_context.state.js';
8
8
 
9
9
  export type ContextType = [
10
10
  AccordionContext,