react-science 3.1.0 → 4.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 (209) hide show
  1. package/lib/app/hooks/file-loading.d.ts +3 -2
  2. package/lib/app/hooks/file-loading.d.ts.map +1 -1
  3. package/lib/app/hooks/file-loading.js +12 -12
  4. package/lib/app/hooks/file-loading.js.map +1 -1
  5. package/lib/app/panels/SignalProcessingPanel.js +1 -1
  6. package/lib/app/panels/SignalProcessingPanel.js.map +1 -1
  7. package/lib/app-data/loaders/biologicLoader.d.ts +2 -2
  8. package/lib/app-data/loaders/biologicLoader.d.ts.map +1 -1
  9. package/lib/app-data/loaders/biologicLoader.js +4 -4
  10. package/lib/app-data/loaders/biologicLoader.js.map +1 -1
  11. package/lib/app-data/loaders/cdfLoader.d.ts +2 -2
  12. package/lib/app-data/loaders/cdfLoader.d.ts.map +1 -1
  13. package/lib/app-data/loaders/cdfLoader.js +6 -9
  14. package/lib/app-data/loaders/cdfLoader.js.map +1 -1
  15. package/lib/app-data/loaders/jcampLoader.d.ts +2 -2
  16. package/lib/app-data/loaders/jcampLoader.d.ts.map +1 -1
  17. package/lib/app-data/loaders/jcampLoader.js +10 -13
  18. package/lib/app-data/loaders/jcampLoader.js.map +1 -1
  19. package/lib/app-data/loaders/loadMeasurements.d.ts +4 -3
  20. package/lib/app-data/loaders/loadMeasurements.d.ts.map +1 -1
  21. package/lib/app-data/loaders/loadMeasurements.js +3 -3
  22. package/lib/app-data/loaders/loadMeasurements.js.map +1 -1
  23. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.d.ts +3 -2
  24. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.d.ts.map +1 -1
  25. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.js +4 -9
  26. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.js.map +1 -1
  27. package/lib/app-data/loaders/spcLoader.d.ts +2 -2
  28. package/lib/app-data/loaders/spcLoader.d.ts.map +1 -1
  29. package/lib/app-data/loaders/spcLoader.js +3 -8
  30. package/lib/app-data/loaders/spcLoader.js.map +1 -1
  31. package/lib/app-data/loaders/utility/measurementLoader.d.ts +2 -2
  32. package/lib/app-data/loaders/utility/measurementLoader.d.ts.map +1 -1
  33. package/lib/app-data/loaders/utility/measurementLoader.js.map +1 -1
  34. package/lib/app-data/loaders/wdfLoader.d.ts +2 -2
  35. package/lib/app-data/loaders/wdfLoader.d.ts.map +1 -1
  36. package/lib/app-data/loaders/wdfLoader.js +3 -9
  37. package/lib/app-data/loaders/wdfLoader.js.map +1 -1
  38. package/lib/components/index.d.ts +2 -1
  39. package/lib/components/index.d.ts.map +1 -1
  40. package/lib/components/index.js +2 -1
  41. package/lib/components/index.js.map +1 -1
  42. package/lib/components/info-panel/InfoPanel.d.ts.map +1 -1
  43. package/lib/components/info-panel/InfoPanel.js +1 -1
  44. package/lib/components/info-panel/InfoPanel.js.map +1 -1
  45. package/lib/components/logger/FifoLoggerDialog.d.ts +10 -0
  46. package/lib/components/logger/FifoLoggerDialog.d.ts.map +1 -0
  47. package/lib/components/logger/FifoLoggerDialog.js +55 -0
  48. package/lib/components/logger/FifoLoggerDialog.js.map +1 -0
  49. package/lib/components/logger/FifoLoggerProvider.d.ts +7 -0
  50. package/lib/components/logger/FifoLoggerProvider.d.ts.map +1 -0
  51. package/lib/components/logger/FifoLoggerProvider.js +10 -0
  52. package/lib/components/logger/FifoLoggerProvider.js.map +1 -0
  53. package/lib/components/logger/FifoLoggerToolbarItem.d.ts +2 -0
  54. package/lib/components/logger/FifoLoggerToolbarItem.d.ts.map +1 -0
  55. package/lib/components/logger/FifoLoggerToolbarItem.js +39 -0
  56. package/lib/components/logger/FifoLoggerToolbarItem.js.map +1 -0
  57. package/lib/components/logger/index.d.ts +5 -0
  58. package/lib/components/logger/index.d.ts.map +1 -0
  59. package/lib/components/logger/index.js +21 -0
  60. package/lib/components/logger/index.js.map +1 -0
  61. package/lib/components/logger/loggerContext.d.ts +4 -0
  62. package/lib/components/logger/loggerContext.d.ts.map +1 -0
  63. package/lib/components/logger/loggerContext.js +6 -0
  64. package/lib/components/logger/loggerContext.js.map +1 -0
  65. package/lib/components/logger/useFifoLogger.d.ts +3 -0
  66. package/lib/components/logger/useFifoLogger.d.ts.map +1 -0
  67. package/lib/components/logger/useFifoLogger.js +25 -0
  68. package/lib/components/logger/useFifoLogger.js.map +1 -0
  69. package/lib/components/table/Table.d.ts +2 -3
  70. package/lib/components/table/Table.d.ts.map +1 -1
  71. package/lib/components/table/Table.js +2 -2
  72. package/lib/components/table/Table.js.map +1 -1
  73. package/lib/components/table/TableHeader.d.ts +1 -1
  74. package/lib/components/table/TableHeader.d.ts.map +1 -1
  75. package/lib/components/table/TableHeader.js +2 -2
  76. package/lib/components/table/TableHeader.js.map +1 -1
  77. package/lib/components/table/TableRow.d.ts +1 -1
  78. package/lib/components/table/TableRow.d.ts.map +1 -1
  79. package/lib/components/table/TableRow.js +9 -22
  80. package/lib/components/table/TableRow.js.map +1 -1
  81. package/lib/components/table/tableContext.d.ts +0 -2
  82. package/lib/components/table/tableContext.d.ts.map +1 -1
  83. package/lib/components/table/tableContext.js +1 -1
  84. package/lib/components/table/tableContext.js.map +1 -1
  85. package/lib/components/toolbar/TooltipHelpContent.d.ts +11 -0
  86. package/lib/components/toolbar/TooltipHelpContent.d.ts.map +1 -0
  87. package/lib/components/toolbar/TooltipHelpContent.js +102 -0
  88. package/lib/components/toolbar/TooltipHelpContent.js.map +1 -0
  89. package/lib/components/toolbar/index.d.ts +1 -0
  90. package/lib/components/toolbar/index.d.ts.map +1 -1
  91. package/lib/components/toolbar/index.js +1 -0
  92. package/lib/components/toolbar/index.js.map +1 -1
  93. package/lib-esm/app/hooks/file-loading.d.ts +3 -2
  94. package/lib-esm/app/hooks/file-loading.d.ts.map +1 -1
  95. package/lib-esm/app/hooks/file-loading.js +9 -9
  96. package/lib-esm/app/hooks/file-loading.js.map +1 -1
  97. package/lib-esm/app/panels/SignalProcessingPanel.js +1 -1
  98. package/lib-esm/app/panels/SignalProcessingPanel.js.map +1 -1
  99. package/lib-esm/app-data/loaders/biologicLoader.d.ts +2 -2
  100. package/lib-esm/app-data/loaders/biologicLoader.d.ts.map +1 -1
  101. package/lib-esm/app-data/loaders/biologicLoader.js +4 -4
  102. package/lib-esm/app-data/loaders/biologicLoader.js.map +1 -1
  103. package/lib-esm/app-data/loaders/cdfLoader.d.ts +2 -2
  104. package/lib-esm/app-data/loaders/cdfLoader.d.ts.map +1 -1
  105. package/lib-esm/app-data/loaders/cdfLoader.js +6 -9
  106. package/lib-esm/app-data/loaders/cdfLoader.js.map +1 -1
  107. package/lib-esm/app-data/loaders/jcampLoader.d.ts +2 -2
  108. package/lib-esm/app-data/loaders/jcampLoader.d.ts.map +1 -1
  109. package/lib-esm/app-data/loaders/jcampLoader.js +10 -13
  110. package/lib-esm/app-data/loaders/jcampLoader.js.map +1 -1
  111. package/lib-esm/app-data/loaders/loadMeasurements.d.ts +4 -3
  112. package/lib-esm/app-data/loaders/loadMeasurements.d.ts.map +1 -1
  113. package/lib-esm/app-data/loaders/loadMeasurements.js +3 -3
  114. package/lib-esm/app-data/loaders/loadMeasurements.js.map +1 -1
  115. package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.d.ts +3 -2
  116. package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.d.ts.map +1 -1
  117. package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.js +5 -10
  118. package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.js.map +1 -1
  119. package/lib-esm/app-data/loaders/spcLoader.d.ts +2 -2
  120. package/lib-esm/app-data/loaders/spcLoader.d.ts.map +1 -1
  121. package/lib-esm/app-data/loaders/spcLoader.js +4 -9
  122. package/lib-esm/app-data/loaders/spcLoader.js.map +1 -1
  123. package/lib-esm/app-data/loaders/utility/measurementLoader.d.ts +2 -2
  124. package/lib-esm/app-data/loaders/utility/measurementLoader.d.ts.map +1 -1
  125. package/lib-esm/app-data/loaders/utility/measurementLoader.js.map +1 -1
  126. package/lib-esm/app-data/loaders/wdfLoader.d.ts +2 -2
  127. package/lib-esm/app-data/loaders/wdfLoader.d.ts.map +1 -1
  128. package/lib-esm/app-data/loaders/wdfLoader.js +3 -9
  129. package/lib-esm/app-data/loaders/wdfLoader.js.map +1 -1
  130. package/lib-esm/components/index.d.ts +2 -1
  131. package/lib-esm/components/index.d.ts.map +1 -1
  132. package/lib-esm/components/index.js +2 -1
  133. package/lib-esm/components/index.js.map +1 -1
  134. package/lib-esm/components/info-panel/InfoPanel.d.ts.map +1 -1
  135. package/lib-esm/components/info-panel/InfoPanel.js +1 -1
  136. package/lib-esm/components/info-panel/InfoPanel.js.map +1 -1
  137. package/lib-esm/components/logger/FifoLoggerDialog.d.ts +10 -0
  138. package/lib-esm/components/logger/FifoLoggerDialog.d.ts.map +1 -0
  139. package/lib-esm/components/logger/FifoLoggerDialog.js +48 -0
  140. package/lib-esm/components/logger/FifoLoggerDialog.js.map +1 -0
  141. package/lib-esm/components/logger/FifoLoggerProvider.d.ts +7 -0
  142. package/lib-esm/components/logger/FifoLoggerProvider.d.ts.map +1 -0
  143. package/lib-esm/components/logger/FifoLoggerProvider.js +6 -0
  144. package/lib-esm/components/logger/FifoLoggerProvider.js.map +1 -0
  145. package/lib-esm/components/logger/FifoLoggerToolbarItem.d.ts +2 -0
  146. package/lib-esm/components/logger/FifoLoggerToolbarItem.d.ts.map +1 -0
  147. package/lib-esm/components/logger/FifoLoggerToolbarItem.js +35 -0
  148. package/lib-esm/components/logger/FifoLoggerToolbarItem.js.map +1 -0
  149. package/lib-esm/components/logger/index.d.ts +5 -0
  150. package/lib-esm/components/logger/index.d.ts.map +1 -0
  151. package/lib-esm/components/logger/index.js +5 -0
  152. package/lib-esm/components/logger/index.js.map +1 -0
  153. package/lib-esm/components/logger/loggerContext.d.ts +4 -0
  154. package/lib-esm/components/logger/loggerContext.d.ts.map +1 -0
  155. package/lib-esm/components/logger/loggerContext.js +3 -0
  156. package/lib-esm/components/logger/loggerContext.js.map +1 -0
  157. package/lib-esm/components/logger/useFifoLogger.d.ts +3 -0
  158. package/lib-esm/components/logger/useFifoLogger.d.ts.map +1 -0
  159. package/lib-esm/components/logger/useFifoLogger.js +20 -0
  160. package/lib-esm/components/logger/useFifoLogger.js.map +1 -0
  161. package/lib-esm/components/table/Table.d.ts +2 -3
  162. package/lib-esm/components/table/Table.d.ts.map +1 -1
  163. package/lib-esm/components/table/Table.js +2 -2
  164. package/lib-esm/components/table/Table.js.map +1 -1
  165. package/lib-esm/components/table/TableHeader.d.ts +1 -1
  166. package/lib-esm/components/table/TableHeader.d.ts.map +1 -1
  167. package/lib-esm/components/table/TableHeader.js +2 -2
  168. package/lib-esm/components/table/TableHeader.js.map +1 -1
  169. package/lib-esm/components/table/TableRow.d.ts +1 -1
  170. package/lib-esm/components/table/TableRow.d.ts.map +1 -1
  171. package/lib-esm/components/table/TableRow.js +6 -19
  172. package/lib-esm/components/table/TableRow.js.map +1 -1
  173. package/lib-esm/components/table/tableContext.d.ts +0 -2
  174. package/lib-esm/components/table/tableContext.d.ts.map +1 -1
  175. package/lib-esm/components/table/tableContext.js +1 -1
  176. package/lib-esm/components/table/tableContext.js.map +1 -1
  177. package/lib-esm/components/toolbar/TooltipHelpContent.d.ts +11 -0
  178. package/lib-esm/components/toolbar/TooltipHelpContent.d.ts.map +1 -0
  179. package/lib-esm/components/toolbar/TooltipHelpContent.js +95 -0
  180. package/lib-esm/components/toolbar/TooltipHelpContent.js.map +1 -0
  181. package/lib-esm/components/toolbar/index.d.ts +1 -0
  182. package/lib-esm/components/toolbar/index.d.ts.map +1 -1
  183. package/lib-esm/components/toolbar/index.js +1 -0
  184. package/lib-esm/components/toolbar/index.js.map +1 -1
  185. package/package.json +7 -5
  186. package/src/app/hooks/file-loading.ts +12 -10
  187. package/src/app/panels/SignalProcessingPanel.tsx +1 -1
  188. package/src/app-data/loaders/biologicLoader.ts +6 -5
  189. package/src/app-data/loaders/cdfLoader.ts +8 -13
  190. package/src/app-data/loaders/jcampLoader.ts +11 -15
  191. package/src/app-data/loaders/loadMeasurements.ts +6 -5
  192. package/src/app-data/loaders/proprietary/agilent/cary500Loader.ts +8 -16
  193. package/src/app-data/loaders/spcLoader.ts +6 -12
  194. package/src/app-data/loaders/utility/measurementLoader.ts +2 -3
  195. package/src/app-data/loaders/wdfLoader.ts +5 -12
  196. package/src/components/index.ts +2 -1
  197. package/src/components/info-panel/InfoPanel.tsx +0 -1
  198. package/src/components/logger/FifoLoggerDialog.tsx +129 -0
  199. package/src/components/logger/FifoLoggerProvider.tsx +15 -0
  200. package/src/components/logger/FifoLoggerToolbarItem.tsx +59 -0
  201. package/src/components/logger/index.ts +4 -0
  202. package/src/components/logger/loggerContext.ts +4 -0
  203. package/src/components/logger/useFifoLogger.ts +22 -0
  204. package/src/components/table/Table.tsx +1 -6
  205. package/src/components/table/TableHeader.tsx +2 -2
  206. package/src/components/table/TableRow.tsx +4 -23
  207. package/src/components/table/tableContext.ts +1 -1
  208. package/src/components/toolbar/TooltipHelpContent.tsx +173 -0
  209. package/src/components/toolbar/index.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { TableRow } from './TableRow';
3
- export const TableHeader = ({ children, hasBorder, style }) => {
4
- return (_jsx("thead", { children: _jsx(TableRow, { hasBorder: hasBorder, style: style, children: children }) }));
3
+ export const TableHeader = ({ children, bordered, style }) => {
4
+ return (_jsx("thead", { children: _jsx(TableRow, { bordered: bordered, style: style, children: children }) }));
5
5
  };
6
6
  //# sourceMappingURL=TableHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/components/table/TableHeader.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAc,EAAE,EAAE;IACxE,OAAO,CACL,0BACE,KAAC,QAAQ,IAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,YACzC,QAAQ,GACA,GACL,CACT,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/components/table/TableHeader.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAc,EAAE,EAAE;IACvE,OAAO,CACL,0BACE,KAAC,QAAQ,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,YACvC,QAAQ,GACA,GACL,CACT,CAAC;AACJ,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes } from 'react';
2
2
  import type { TableProps } from './Table';
3
3
  export type TableRowProps = TableProps & HTMLAttributes<HTMLTableRowElement>;
4
- export declare const TableRow: ({ children, style, hasBorder, ...other }: TableRowProps) => import("@emotion/react/jsx-runtime").JSX.Element;
4
+ export declare const TableRow: ({ children, style, bordered, ...other }: TableRowProps) => import("react/jsx-runtime").JSX.Element;
5
5
  //# sourceMappingURL=TableRow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../../src/components/table/TableRow.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EAIf,MAAM,OAAO,CAAC;AAYf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAc7E,eAAO,MAAM,QAAQ,6CAKlB,aAAa,qDAUf,CAAC"}
1
+ {"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../../src/components/table/TableRow.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAIf,MAAM,OAAO,CAAC;AAYf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAE7E,eAAO,MAAM,QAAQ,4CAKlB,aAAa,4CAUf,CAAC"}
@@ -1,27 +1,14 @@
1
- import { jsx as _jsx } from "@emotion/react/jsx-runtime";
2
- /** @jsxImportSource @emotion/react */
3
- import { css } from '@emotion/react';
1
+ import { jsx as _jsx } from "react/jsx-runtime";
4
2
  import { Children, isValidElement, } from 'react';
5
3
  import { Boolean, Color, Component, Header, Number, Object, Text, } from '../value-renderers';
6
4
  import { useTableContext } from './tableContext';
7
- const styles = {
8
- hasBorder: css({
9
- border: '0.5px solid rgb(0, 0, 0)',
10
- padding: '5px',
11
- position: 'relative',
12
- }),
13
- noBorder: css({
14
- padding: '5px',
15
- position: 'relative',
16
- }),
17
- };
18
- export const TableRow = ({ children, style = {}, hasBorder = false, ...other }) => {
5
+ export const TableRow = ({ children, style = {}, bordered = false, ...other }) => {
19
6
  const { cells } = useRowChildren(children);
20
- return (_jsx("tr", { style: { border: hasBorder ? '1px solid black' : '', ...style }, ...other, children: cells }));
7
+ return (_jsx("tr", { style: { border: bordered ? '1px solid black' : '', ...style }, ...other, children: cells }));
21
8
  };
22
9
  function useRowChildren(children) {
23
10
  const cells = [];
24
- const { hasBorder, color } = useTableContext();
11
+ const { color } = useTableContext();
25
12
  for (const child of Children.toArray(children)) {
26
13
  if (typeof child === 'object' &&
27
14
  isValidElement(child) &&
@@ -33,13 +20,13 @@ function useRowChildren(children) {
33
20
  child.type === Header ||
34
21
  child.type === Component)) {
35
22
  if (child.type === Header) {
36
- cells.push(_jsx("th", { style: { color }, css: hasBorder ? styles.hasBorder : styles.noBorder, children: child }, child.key));
23
+ cells.push(_jsx("th", { style: { color }, children: child }, child.key));
37
24
  }
38
25
  else {
39
26
  cells.push(_jsx("td", { style: {
40
27
  color,
41
28
  position: 'relative',
42
- }, css: hasBorder ? styles.hasBorder : styles.noBorder, children: child }, child.key));
29
+ }, children: child }, child.key));
43
30
  }
44
31
  }
45
32
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../src/components/table/TableRow.tsx"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EACL,QAAQ,EAER,cAAc,GAGf,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,OAAO,EACP,KAAK,EACL,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,GACL,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAIjD,MAAM,MAAM,GAAG;IACb,SAAS,EAAE,GAAG,CAAC;QACb,MAAM,EAAE,0BAA0B;QAClC,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,UAAU;KACrB,CAAC;IACF,QAAQ,EAAE,GAAG,CAAC;QACZ,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,UAAU;KACrB,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,QAAQ,EACR,KAAK,GAAG,EAAE,EACV,SAAS,GAAG,KAAK,EACjB,GAAG,KAAK,EACM,EAAE,EAAE;IAClB,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,CACL,aACE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,KAC3D,KAAK,YAER,KAAK,GACH,CACN,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,cAAc,CAAC,QAAmB;IACzC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,cAAc,CAAC,KAAK,CAAC;YACrB,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK;gBACnB,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,KAAK,CAAC,IAAI,KAAK,IAAI;gBACnB,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EAC3B,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CACR,aAEE,KAAK,EAAE,EAAE,KAAK,EAAE,EAChB,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,YAElD,KAAK,IAJD,KAAK,CAAC,GAAG,CAKX,CACN,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CACR,aAEE,KAAK,EAAE;wBACL,KAAK;wBACL,QAAQ,EAAE,UAAU;qBACrB,EACD,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,YAElD,KAAK,IAPD,KAAK,CAAC,GAAG,CAQX,CACN,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../src/components/table/TableRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,QAAQ,EAER,cAAc,GAGf,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,OAAO,EACP,KAAK,EACL,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACN,IAAI,GACL,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAIjD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,QAAQ,EACR,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,KAAK,EAChB,GAAG,KAAK,EACM,EAAE,EAAE;IAClB,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO,CACL,aACE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,KAC1D,KAAK,YAER,KAAK,GACH,CACN,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,cAAc,CAAC,QAAmB;IACzC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,cAAc,CAAC,KAAK,CAAC;YACrB,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK;gBACnB,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,KAAK,CAAC,IAAI,KAAK,IAAI;gBACnB,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EAC3B,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CACR,aAAoB,KAAK,EAAE,EAAE,KAAK,EAAE,YACjC,KAAK,IADC,KAAK,CAAC,GAAG,CAEb,CACN,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CACR,aAEE,KAAK,EAAE;wBACL,KAAK;wBACL,QAAQ,EAAE,UAAU;qBACrB,YAEA,KAAK,IAND,KAAK,CAAC,GAAG,CAOX,CACN,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -1,10 +1,8 @@
1
1
  /// <reference types="react" />
2
2
  export declare const TableContext: import("react").Context<{
3
- hasBorder: boolean;
4
3
  color: string;
5
4
  }>;
6
5
  export declare function useTableContext(): {
7
- hasBorder: boolean;
8
6
  color: string;
9
7
  };
10
8
  //# sourceMappingURL=tableContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tableContext.d.ts","sourceRoot":"","sources":["../../../src/components/table/tableContext.ts"],"names":[],"mappings":";AAEA,eAAO,MAAM,YAAY;;;EAAgD,CAAC;AAC1E,wBAAgB,eAAe;;;EAG9B"}
1
+ {"version":3,"file":"tableContext.d.ts","sourceRoot":"","sources":["../../../src/components/table/tableContext.ts"],"names":[],"mappings":";AAEA,eAAO,MAAM,YAAY;;EAA+B,CAAC;AACzD,wBAAgB,eAAe;;EAG9B"}
@@ -1,5 +1,5 @@
1
1
  import { createContext, useContext } from 'react';
2
- export const TableContext = createContext({ hasBorder: true, color: '' });
2
+ export const TableContext = createContext({ color: '' });
3
3
  export function useTableContext() {
4
4
  const context = useContext(TableContext);
5
5
  return context;
@@ -1 +1 @@
1
- {"version":3,"file":"tableContext.js","sourceRoot":"","sources":["../../../src/components/table/tableContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAElD,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1E,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"tableContext.js","sourceRoot":"","sources":["../../../src/components/table/tableContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAElD,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACzD,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { CSSProperties } from 'react';
2
+ export interface TooltipItem {
3
+ title: string;
4
+ shortcuts?: string[];
5
+ subTitles?: Array<Pick<TooltipItem, 'title' | 'shortcuts'>>;
6
+ description?: string;
7
+ link?: string;
8
+ style?: CSSProperties;
9
+ }
10
+ export declare function TooltipHelpContent(props: TooltipItem): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=TooltipHelpContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipHelpContent.d.ts","sourceRoot":"","sources":["../../../src/components/toolbar/TooltipHelpContent.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AA6EtC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,2CA0CpD"}
@@ -0,0 +1,95 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import styled from '@emotion/styled';
3
+ const shortcutBoxSize = 1.5;
4
+ const FlexContainer = styled.div `
5
+ display: flex;
6
+ justify-content: space-between;
7
+ flex-wrap: wrap;
8
+ align-items: center;
9
+ `;
10
+ const Title = styled.span `
11
+ font-size: ${({ size }) => size};
12
+ flex: 1;
13
+ padding: 5px 0;
14
+ text-align: left;
15
+ `;
16
+ const Description = styled.p `
17
+ padding-top: 1rem;
18
+ font-size: 0.7rem;
19
+ text-align: left;
20
+ `;
21
+ const ShortcutItem = styled.div `
22
+ display: flex;
23
+ justify-content: center;
24
+ align-items: center;
25
+ padding: 0.2rem;
26
+ border: 1px solid;
27
+ border-radius: 4px;
28
+ height: ${shortcutBoxSize}rem;
29
+ min-width: ${shortcutBoxSize}rem;
30
+ margin-left: 5px;
31
+ font-size: 0.75rem;
32
+ font-weight: bold;
33
+ `;
34
+ const SubTitleItem = styled.div `
35
+ position: relative;
36
+ padding-left: 15px;
37
+ box-sizing: border-box;
38
+
39
+ &::before {
40
+ position: absolute;
41
+ top: ${shortcutBoxSize / 2}rem;
42
+ left: 0;
43
+ width: 10px;
44
+ height: 1px;
45
+ margin: auto;
46
+ content: '';
47
+ border-bottom: 1px solid;
48
+ }
49
+
50
+ &::after {
51
+ position: absolute;
52
+ top: 0;
53
+ bottom: 0;
54
+ left: 0;
55
+ width: 1px;
56
+ height: 100%;
57
+ content: '';
58
+ border-left: 1px solid;
59
+ }
60
+
61
+ &:last-child::after {
62
+ height: ${shortcutBoxSize / 2}rem;
63
+ }
64
+
65
+ &:first-child {
66
+ margin: 0;
67
+ }
68
+ `;
69
+ export function TooltipHelpContent(props) {
70
+ const { title, shortcuts = [], subTitles = [], description = '', link, style = {}, } = props;
71
+ return (_jsxs("div", { style: {
72
+ color: 'white',
73
+ width: '250px',
74
+ padding: '0.5rem',
75
+ ...style,
76
+ }, children: [_jsxs(FlexContainer, { children: [_jsx(Title, { size: "0.9rem", children: title }), _jsx(ShortCuts, { shortcuts: shortcuts })] }), _jsx(SubTitles, { items: subTitles }), (description || link) && (_jsxs(Description, { children: [description, link && (_jsx("a", { style: description ? { paddingLeft: '5px' } : {}, target: "_blank", href: link, rel: "noreferrer", children: "Learn more" }))] }))] }));
77
+ }
78
+ function ShortCuts({ shortcuts }) {
79
+ return (_jsx("div", { style: {
80
+ display: 'flex',
81
+ textWrap: 'nowrap',
82
+ }, children: shortcuts.map((key) => {
83
+ return (_jsx(ShortcutItem, { children: _jsx("span", { children: key }) }, key));
84
+ }) }));
85
+ }
86
+ function SubTitles({ items }) {
87
+ if (!items || items.length === 0) {
88
+ return null;
89
+ }
90
+ return (_jsx("ul", { style: {
91
+ paddingLeft: '5px',
92
+ listStyle: 'none',
93
+ }, children: items.map(({ shortcuts = [], title }) => (_jsx(SubTitleItem, { children: _jsxs(FlexContainer, { children: [_jsx(Title, { size: "0.7rem", children: title }), _jsx(ShortCuts, { shortcuts: shortcuts })] }) }, title))) }));
94
+ }
95
+ //# sourceMappingURL=TooltipHelpContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipHelpContent.js","sourceRoot":"","sources":["../../../src/components/toolbar/TooltipHelpContent.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAGrC,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;CAK/B,CAAC;AAMF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAY;eACtB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI;;;;CAIhC,CAAC;AACF,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAA;;;;CAI3B,CAAC;AAEF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;YAOnB,eAAe;eACZ,eAAe;;;;CAI7B,CAAC;AAEF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;WAOpB,eAAe,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;cAqBhB,eAAe,GAAG,CAAC;;;;;;CAMhC,CAAC;AAWF,MAAM,UAAU,kBAAkB,CAAC,KAAkB;IACnD,MAAM,EACJ,KAAK,EACL,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,EAAE,EACd,WAAW,GAAG,EAAE,EAChB,IAAI,EACJ,KAAK,GAAG,EAAE,GACX,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,eACE,KAAK,EAAE;YACL,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,QAAQ;YACjB,GAAG,KAAK;SACT,aAED,MAAC,aAAa,eACZ,KAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,YAAE,KAAK,GAAS,EACpC,KAAC,SAAS,IAAC,SAAS,EAAE,SAAS,GAAI,IACrB,EAChB,KAAC,SAAS,IAAC,KAAK,EAAE,SAAS,GAAI,EAE9B,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CACxB,MAAC,WAAW,eACT,WAAW,EACX,IAAI,IAAI,CACP,YACE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAChD,MAAM,EAAC,QAAQ,EACf,IAAI,EAAE,IAAI,EACV,GAAG,EAAC,YAAY,2BAGd,CACL,IACW,CACf,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAA2B;IACvD,OAAO,CACL,cACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,QAAQ;SACnB,YAEA,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACrB,OAAO,CACL,KAAC,YAAY,cACX,yBAAO,GAAG,GAAQ,IADD,GAAG,CAEP,CAChB,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,KAAK,EAA4B;IACpD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,aACE,KAAK,EAAE;YACL,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,MAAM;SAClB,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACxC,KAAC,YAAY,cACX,MAAC,aAAa,eACZ,KAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,YAAE,KAAK,GAAS,EACpC,KAAC,SAAS,IAAC,SAAS,EAAE,SAAS,GAAI,IACrB,IAJC,KAAK,CAKT,CAChB,CAAC,GACC,CACN,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './Toolbar';
2
2
  export * from './PanelPreferencesToolbar';
3
+ export * from './TooltipHelpContent';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toolbar/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toolbar/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './Toolbar';
2
2
  export * from './PanelPreferencesToolbar';
3
+ export * from './TooltipHelpContent';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/toolbar/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/toolbar/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-science",
3
- "version": "3.1.0",
3
+ "version": "4.0.0",
4
4
  "description": "React components to build scientific applications UI",
5
5
  "exports": {
6
6
  "./app": {
@@ -60,6 +60,7 @@
60
60
  "peerDependencies": {
61
61
  "@blueprintjs/core": "^5.3.2",
62
62
  "@blueprintjs/icons": "^5.1.7",
63
+ "fifo-logger": "^1.0.0",
63
64
  "react": ">=18.0.0",
64
65
  "react-dom": ">=18.0.0"
65
66
  },
@@ -80,18 +81,18 @@
80
81
  "d3-scale-chromatic": "^3.1.0",
81
82
  "filelist-utils": "^1.11.0",
82
83
  "immer": "^10.0.4",
83
- "jcampconverter": "^9.6.3",
84
+ "jcampconverter": "^9.6.4",
84
85
  "lodash": "^4.17.21",
85
86
  "ml-gsd": "^12.1.6",
86
87
  "ml-peak-shape-generator": "^4.1.2",
87
88
  "ml-signal-processing": "^1.0.4",
88
- "ml-spectra-processing": "^14.2.2",
89
- "ms-spectrum": "^3.4.4",
89
+ "ml-spectra-processing": "^14.5.0",
90
+ "ms-spectrum": "^3.5.2",
90
91
  "netcdfjs": "^3.0.0",
91
92
  "react-d3-utils": "^1.0.0",
92
93
  "react-dropzone": "^14.2.3",
93
94
  "react-error-boundary": "^4.0.13",
94
- "react-icons": "^5.0.1",
95
+ "react-icons": "^5.2.1",
95
96
  "react-inspector": "^6.0.2",
96
97
  "react-kbs": "^2.1.1",
97
98
  "react-plot": "^1.4.2",
@@ -128,6 +129,7 @@
128
129
  "eslint": "^8.57.0",
129
130
  "eslint-config-zakodium": "^8.1.0",
130
131
  "eslint-plugin-storybook": "^0.8.0",
132
+ "fifo-logger": "^1.0.0",
131
133
  "prettier": "^3.2.5",
132
134
  "react": "^18.2.0",
133
135
  "react-dom": "^18.2.0",
@@ -1,22 +1,25 @@
1
- import { UseQueryResult, useQuery } from '@tanstack/react-query';
1
+ import { useQuery, UseQueryResult } from '@tanstack/react-query';
2
+ import type { FifoLogger } from 'fifo-logger';
2
3
  import { FileCollection, fileCollectionFromWebSource } from 'filelist-utils';
3
4
  import { useCallback } from 'react';
4
5
 
5
- import { AppDispatch, useAppDispatch } from '../../app-data/index';
6
- import { useHashSearchParams } from '../../components/index';
6
+ import { AppDispatch, useAppDispatch } from '../../app-data';
7
+ import { useFifoLogger, useHashSearchParams } from '../../components';
7
8
 
8
9
  type LoadFn = (
9
10
  files: File[] | FileCollection,
11
+ logger: FifoLogger,
10
12
  dispatch: AppDispatch,
11
13
  ) => Promise<void>;
12
14
 
13
15
  export function useLoadFileCollectionFromHash(
14
16
  onLoad: LoadFn,
15
17
  ): UseQueryResult<true | null> {
18
+ const logger = useFifoLogger();
16
19
  const appDispatch = useAppDispatch();
17
20
  const hashParams = useHashSearchParams();
18
21
  const filelistUrl = hashParams.get('filelist');
19
- const query = useQuery({
22
+ return useQuery({
20
23
  queryKey: ['filelist', filelistUrl],
21
24
  queryFn: async () => {
22
25
  if (!filelistUrl) {
@@ -29,20 +32,19 @@ export function useLoadFileCollectionFromHash(
29
32
  entries: data,
30
33
  baseURL,
31
34
  });
32
- void onLoad(fileCollection, appDispatch);
35
+ void onLoad(fileCollection, logger, appDispatch);
33
36
  return true;
34
37
  },
35
38
  });
36
- return query;
37
39
  }
38
40
 
39
41
  export function useDropFiles(onLoad: LoadFn) {
40
42
  const dispatch = useAppDispatch();
41
- const onDrop = useCallback(
43
+ const logger = useFifoLogger();
44
+ return useCallback(
42
45
  (files: File[]) => {
43
- void onLoad(files, dispatch);
46
+ void onLoad(files, logger, dispatch);
44
47
  },
45
- [dispatch, onLoad],
48
+ [dispatch, onLoad, logger],
46
49
  );
47
- return onDrop;
48
50
  }
@@ -47,7 +47,7 @@ export function SignalProcessingPanel(props: SignalProcessingPanelProps) {
47
47
  <ValueRenderers.Header value="Options" />
48
48
  </Table.Header>
49
49
  {filters.map(({ name, options }, i) => (
50
- <Table.Row key={name} hasBorder>
50
+ <Table.Row key={name} bordered>
51
51
  <ValueRenderers.Component>
52
52
  <div style={{ display: 'flex', gap: '3px' }}>
53
53
  <Button
@@ -1,11 +1,11 @@
1
1
  import { parseMPR, parseMPT } from 'biologic-converter';
2
2
  import type { MeasurementVariable } from 'cheminfo-types';
3
+ import type { FifoLogger } from 'fifo-logger';
3
4
  import type { FileCollection } from 'filelist-utils';
4
5
 
5
- import type { Measurements, MeasurementBase } from '../index';
6
+ import type { MeasurementBase, Measurements } from '../index';
6
7
 
7
8
  import { getMeasurementInfoFromFile } from './utility/getMeasurementInfoFromFile';
8
- import { createLogEntry, ParserLog } from './utility/parserLog';
9
9
 
10
10
  /* the MeasurementBase has got a data key,
11
11
  and inside a variable key, compatible with this type */
@@ -18,7 +18,7 @@ type MeasurementDataVariable = Record<string, MeasurementVariable>;
18
18
  */
19
19
  export async function biologicLoader(
20
20
  fileCollection: FileCollection,
21
- logs?: ParserLog[],
21
+ logger?: FifoLogger,
22
22
  ): Promise<Partial<Measurements>> {
23
23
  const measurements: Partial<Measurements> = {};
24
24
  const entries: MeasurementBase[] = [];
@@ -67,14 +67,15 @@ export async function biologicLoader(
67
67
  } catch (error) {
68
68
  //send error to UI to show to User ?
69
69
  if (error instanceof Error) {
70
- if (logs) {
71
- logs.push(createLogEntry({ error, relativePath: file.relativePath }));
70
+ if (logger) {
71
+ logger.error(error);
72
72
  } else {
73
73
  throw error;
74
74
  }
75
75
  }
76
76
  }
77
77
  }
78
+ logger?.debug(`Loaded ${entries.length} entries with biologicLoader`);
78
79
  measurements.iv = { entries };
79
80
  return measurements;
80
81
  }
@@ -1,18 +1,19 @@
1
+ import type { FifoLogger } from 'fifo-logger';
1
2
  import type { FileCollection } from 'filelist-utils';
2
3
  import { NetCDFReader } from 'netcdfjs';
3
4
 
4
5
  import { assert } from '../../components/index';
5
- import type { MeasurementBase, Measurements, MeasurementKind } from '../index';
6
+ import type { MeasurementBase, MeasurementKind, Measurements } from '../index';
6
7
 
7
8
  import { getMeasurementInfoFromFile } from './utility/getMeasurementInfoFromFile';
8
- import { ParserLog, createLogEntry } from './utility/parserLog';
9
9
 
10
10
  export async function cdfLoader(
11
11
  fileCollection: FileCollection,
12
- logs?: ParserLog[],
12
+ logger?: FifoLogger,
13
13
  ): Promise<Partial<Measurements>> {
14
14
  const newMeasurements: Partial<Measurements> = {};
15
15
  let kind: MeasurementKind | undefined;
16
+ let count = 0;
16
17
  for (const file of fileCollection) {
17
18
  if (/\.cdf$/i.test(file.name)) {
18
19
  try {
@@ -57,18 +58,12 @@ export async function cdfLoader(
57
58
  : chromatogram(reader),
58
59
  };
59
60
  newMeasurements[kind]?.entries.push(newMeasurement);
61
+ count++;
60
62
  } catch (error) {
61
63
  if (error instanceof Error) {
62
64
  //send error to UI ?
63
- if (logs) {
64
- logs.push(
65
- createLogEntry({
66
- error,
67
- parser: 'cdfLoader',
68
- message: 'error parsing file from cdfLoader',
69
- relativePath: file.relativePath,
70
- }),
71
- );
65
+ if (logger) {
66
+ logger.error(error);
72
67
  } else {
73
68
  throw error;
74
69
  }
@@ -76,7 +71,7 @@ export async function cdfLoader(
76
71
  }
77
72
  }
78
73
  }
79
-
74
+ logger?.debug(`Loaded ${count} measurements with cdfLoader`);
80
75
  return newMeasurements;
81
76
  }
82
77
 
@@ -1,3 +1,4 @@
1
+ import type { FifoLogger } from 'fifo-logger';
1
2
  import type { FileCollection } from 'filelist-utils';
2
3
  import { convert } from 'jcampconverter';
3
4
 
@@ -5,7 +6,6 @@ import { assert } from '../../components/index';
5
6
  import type { MeasurementKind, Measurements } from '../index';
6
7
 
7
8
  import { getMeasurementInfoFromFile } from './utility/getMeasurementInfoFromFile';
8
- import { createLogEntry, ParserLog } from './utility/parserLog';
9
9
 
10
10
  /**
11
11
  *
@@ -15,8 +15,9 @@ import { createLogEntry, ParserLog } from './utility/parserLog';
15
15
  */
16
16
  export async function jcampLoader(
17
17
  fileCollection: FileCollection,
18
- logs?: ParserLog[],
18
+ logger?: FifoLogger,
19
19
  ): Promise<Partial<Measurements>> {
20
+ let count = 0;
20
21
  const newMeasurements: Partial<Measurements> = {};
21
22
  for (const file of fileCollection) {
22
23
  if (/(?:\.jdx|\.dx)$/i.test(file.name)) {
@@ -50,22 +51,15 @@ export async function jcampLoader(
50
51
  meta: measurement.meta,
51
52
  data: normalizeSpectra(measurement.spectra),
52
53
  };
54
+ count++;
53
55
  Object.assign(newMeasurement.info, measurement.info);
54
56
  newMeasurements[kind]?.entries.push(newMeasurement);
55
57
  }
56
58
  }
57
59
  } catch (error) {
58
- // send error to UI ?
59
60
  if (error instanceof Error) {
60
- if (logs) {
61
- logs.push(
62
- createLogEntry({
63
- error,
64
- parser: 'jcamp converter',
65
- relativePath: file.relativePath,
66
- message: 'error parsing jdx or dx file',
67
- }),
68
- );
61
+ if (logger) {
62
+ logger?.error(error);
69
63
  } else {
70
64
  throw error;
71
65
  }
@@ -74,6 +68,7 @@ export async function jcampLoader(
74
68
  }
75
69
  }
76
70
 
71
+ logger?.debug(`Loaded ${count} measurements with jcampLoader`);
77
72
  return newMeasurements;
78
73
  }
79
74
 
@@ -97,10 +92,11 @@ function normalizeSpectra(spectra: any) {
97
92
  for (const key in variables) {
98
93
  const variable = variables[key];
99
94
  if (variable.label) continue;
100
- variable.label = variable.name || variable.symbol || key;
101
- if (variable.units && !variable.label.includes(variable.units)) {
102
- variable.label += ` [${variable.units}]`;
95
+ let label: string = variable.name || variable.symbol || key;
96
+ if (variable.units && !label.includes(variable.units)) {
97
+ label += ` [${variable.units}]`;
103
98
  }
99
+ variable.label = label;
104
100
  }
105
101
  }
106
102
  data.push({ variables });
@@ -1,7 +1,8 @@
1
+ import type { FifoLogger } from 'fifo-logger';
1
2
  import type { FileCollection } from 'filelist-utils';
2
3
  import { xMinMaxValues } from 'ml-spectra-processing';
3
4
 
4
- import { Measurements, enhance, Enhancers, MeasurementBase } from '../index';
5
+ import { enhance, Enhancers, MeasurementBase, Measurements } from '../index';
5
6
 
6
7
  import {
7
8
  MeasurementsLoader,
@@ -12,20 +13,20 @@ import type { ParserLog } from './utility/parserLog';
12
13
  export interface LoadOptions {
13
14
  loaders?: MeasurementsLoader[];
14
15
  enhancers?: Partial<Enhancers>;
15
- logger?: boolean;
16
+ logger?: FifoLogger;
16
17
  }
17
18
 
18
19
  export async function loadMeasurements(
19
20
  fileCollection: FileCollection,
20
- options: LoadOptions = {},
21
+ options: LoadOptions,
21
22
  ) {
22
23
  const measurements: Partial<Measurements> = {};
23
24
  const logs: ParserLog[] = [];
24
- const { loaders = [], enhancers = {}, logger = true } = options;
25
+ const { loaders = [], enhancers = {}, logger } = options;
25
26
  for (const loader of loaders) {
26
27
  // TODO: load in parallel
27
28
  // eslint-disable-next-line no-await-in-loop
28
- const loaderData = await loader(fileCollection, logger ? logs : undefined);
29
+ const loaderData = await loader(fileCollection, logger);
29
30
  for (const { entries } of Object.values(loaderData)) {
30
31
  for (const entry of entries) {
31
32
  computeMinMax(entry);
@@ -1,16 +1,15 @@
1
- import type { FileCollectionItem, FileCollection } from 'filelist-utils';
1
+ import type { FifoLogger } from 'fifo-logger';
2
+ import type { FileCollection, FileCollectionItem } from 'filelist-utils';
2
3
 
3
4
  import {
4
- Measurements,
5
- MeasurementBase,
6
5
  getMeasurementInfoFromFile,
7
- ParserLog,
8
- createLogEntry,
6
+ MeasurementBase,
7
+ Measurements,
9
8
  } from '../../../index';
10
9
 
11
10
  export async function cary500Loader(
12
11
  fileCollection: FileCollection,
13
- logs?: ParserLog[],
12
+ logger?: FifoLogger,
14
13
  ): Promise<Partial<Measurements>> {
15
14
  const newMeasurements: Partial<Measurements> = {};
16
15
  const entries: MeasurementBase[] = [];
@@ -26,16 +25,8 @@ export async function cary500Loader(
26
25
  }
27
26
  } catch (error) {
28
27
  if (error instanceof Error) {
29
- if (logs) {
30
- logs.push(
31
- createLogEntry({
32
- kind: 'error',
33
- parser: 'cary500Loader',
34
- message: 'Error parsing cary500 experiment.',
35
- error,
36
- relativePath: file.relativePath,
37
- }),
38
- );
28
+ if (logger) {
29
+ logger.error(error);
39
30
  } else {
40
31
  throw error;
41
32
  }
@@ -43,6 +34,7 @@ export async function cary500Loader(
43
34
  }
44
35
  }
45
36
  }
37
+ logger?.debug(`Loaded ${entries.length} entries with cary500Loader`);
46
38
  newMeasurements.uvvis = { entries };
47
39
  return newMeasurements;
48
40
  }