react-science 3.0.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 (239) 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/panels/measurement-info/MeasurementInfoPanelAccordion.js +1 -1
  8. package/lib/app/panels/measurement-info/MeasurementInfoPanelAccordion.js.map +1 -1
  9. package/lib/app-data/loaders/biologicLoader.d.ts +2 -2
  10. package/lib/app-data/loaders/biologicLoader.d.ts.map +1 -1
  11. package/lib/app-data/loaders/biologicLoader.js +4 -4
  12. package/lib/app-data/loaders/biologicLoader.js.map +1 -1
  13. package/lib/app-data/loaders/cdfLoader.d.ts +2 -2
  14. package/lib/app-data/loaders/cdfLoader.d.ts.map +1 -1
  15. package/lib/app-data/loaders/cdfLoader.js +6 -9
  16. package/lib/app-data/loaders/cdfLoader.js.map +1 -1
  17. package/lib/app-data/loaders/jcampLoader.d.ts +2 -2
  18. package/lib/app-data/loaders/jcampLoader.d.ts.map +1 -1
  19. package/lib/app-data/loaders/jcampLoader.js +10 -13
  20. package/lib/app-data/loaders/jcampLoader.js.map +1 -1
  21. package/lib/app-data/loaders/loadMeasurements.d.ts +4 -3
  22. package/lib/app-data/loaders/loadMeasurements.d.ts.map +1 -1
  23. package/lib/app-data/loaders/loadMeasurements.js +3 -3
  24. package/lib/app-data/loaders/loadMeasurements.js.map +1 -1
  25. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.d.ts +3 -2
  26. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.d.ts.map +1 -1
  27. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.js +4 -9
  28. package/lib/app-data/loaders/proprietary/agilent/cary500Loader.js.map +1 -1
  29. package/lib/app-data/loaders/spcLoader.d.ts +2 -2
  30. package/lib/app-data/loaders/spcLoader.d.ts.map +1 -1
  31. package/lib/app-data/loaders/spcLoader.js +3 -8
  32. package/lib/app-data/loaders/spcLoader.js.map +1 -1
  33. package/lib/app-data/loaders/utility/measurementLoader.d.ts +2 -2
  34. package/lib/app-data/loaders/utility/measurementLoader.d.ts.map +1 -1
  35. package/lib/app-data/loaders/utility/measurementLoader.js.map +1 -1
  36. package/lib/app-data/loaders/wdfLoader.d.ts +2 -2
  37. package/lib/app-data/loaders/wdfLoader.d.ts.map +1 -1
  38. package/lib/app-data/loaders/wdfLoader.js +3 -9
  39. package/lib/app-data/loaders/wdfLoader.js.map +1 -1
  40. package/lib/components/accordion/Accordion.d.ts +1 -0
  41. package/lib/components/accordion/Accordion.d.ts.map +1 -1
  42. package/lib/components/accordion/Accordion.js +12 -11
  43. package/lib/components/accordion/Accordion.js.map +1 -1
  44. package/lib/components/index.d.ts +2 -1
  45. package/lib/components/index.d.ts.map +1 -1
  46. package/lib/components/index.js +2 -1
  47. package/lib/components/index.js.map +1 -1
  48. package/lib/components/info-panel/InfoPanel.d.ts.map +1 -1
  49. package/lib/components/info-panel/InfoPanel.js +2 -5
  50. package/lib/components/info-panel/InfoPanel.js.map +1 -1
  51. package/lib/components/logger/FifoLoggerDialog.d.ts +10 -0
  52. package/lib/components/logger/FifoLoggerDialog.d.ts.map +1 -0
  53. package/lib/components/logger/FifoLoggerDialog.js +55 -0
  54. package/lib/components/logger/FifoLoggerDialog.js.map +1 -0
  55. package/lib/components/logger/FifoLoggerProvider.d.ts +7 -0
  56. package/lib/components/logger/FifoLoggerProvider.d.ts.map +1 -0
  57. package/lib/components/logger/FifoLoggerProvider.js +10 -0
  58. package/lib/components/logger/FifoLoggerProvider.js.map +1 -0
  59. package/lib/components/logger/FifoLoggerToolbarItem.d.ts +2 -0
  60. package/lib/components/logger/FifoLoggerToolbarItem.d.ts.map +1 -0
  61. package/lib/components/logger/FifoLoggerToolbarItem.js +39 -0
  62. package/lib/components/logger/FifoLoggerToolbarItem.js.map +1 -0
  63. package/lib/components/logger/index.d.ts +5 -0
  64. package/lib/components/logger/index.d.ts.map +1 -0
  65. package/lib/components/logger/index.js +21 -0
  66. package/lib/components/logger/index.js.map +1 -0
  67. package/lib/components/logger/loggerContext.d.ts +4 -0
  68. package/lib/components/logger/loggerContext.d.ts.map +1 -0
  69. package/lib/components/logger/loggerContext.js +6 -0
  70. package/lib/components/logger/loggerContext.js.map +1 -0
  71. package/lib/components/logger/useFifoLogger.d.ts +3 -0
  72. package/lib/components/logger/useFifoLogger.d.ts.map +1 -0
  73. package/lib/components/logger/useFifoLogger.js +25 -0
  74. package/lib/components/logger/useFifoLogger.js.map +1 -0
  75. package/lib/components/root-layout/RootLayout.d.ts.map +1 -1
  76. package/lib/components/root-layout/RootLayout.js +6 -1
  77. package/lib/components/root-layout/RootLayout.js.map +1 -1
  78. package/lib/components/table/Table.d.ts +2 -3
  79. package/lib/components/table/Table.d.ts.map +1 -1
  80. package/lib/components/table/Table.js +2 -2
  81. package/lib/components/table/Table.js.map +1 -1
  82. package/lib/components/table/TableHeader.d.ts +1 -1
  83. package/lib/components/table/TableHeader.d.ts.map +1 -1
  84. package/lib/components/table/TableHeader.js +2 -2
  85. package/lib/components/table/TableHeader.js.map +1 -1
  86. package/lib/components/table/TableRow.d.ts +3 -1
  87. package/lib/components/table/TableRow.d.ts.map +1 -1
  88. package/lib/components/table/TableRow.js +9 -22
  89. package/lib/components/table/TableRow.js.map +1 -1
  90. package/lib/components/table/tableContext.d.ts +0 -2
  91. package/lib/components/table/tableContext.d.ts.map +1 -1
  92. package/lib/components/table/tableContext.js +1 -1
  93. package/lib/components/table/tableContext.js.map +1 -1
  94. package/lib/components/toolbar/Toolbar.d.ts +4 -2
  95. package/lib/components/toolbar/Toolbar.d.ts.map +1 -1
  96. package/lib/components/toolbar/Toolbar.js +2 -2
  97. package/lib/components/toolbar/Toolbar.js.map +1 -1
  98. package/lib/components/toolbar/TooltipHelpContent.d.ts +11 -0
  99. package/lib/components/toolbar/TooltipHelpContent.d.ts.map +1 -0
  100. package/lib/components/toolbar/TooltipHelpContent.js +102 -0
  101. package/lib/components/toolbar/TooltipHelpContent.js.map +1 -0
  102. package/lib/components/toolbar/index.d.ts +1 -0
  103. package/lib/components/toolbar/index.d.ts.map +1 -1
  104. package/lib/components/toolbar/index.js +1 -0
  105. package/lib/components/toolbar/index.js.map +1 -1
  106. package/lib-esm/app/hooks/file-loading.d.ts +3 -2
  107. package/lib-esm/app/hooks/file-loading.d.ts.map +1 -1
  108. package/lib-esm/app/hooks/file-loading.js +9 -9
  109. package/lib-esm/app/hooks/file-loading.js.map +1 -1
  110. package/lib-esm/app/panels/SignalProcessingPanel.js +1 -1
  111. package/lib-esm/app/panels/SignalProcessingPanel.js.map +1 -1
  112. package/lib-esm/app/panels/measurement-info/MeasurementInfoPanelAccordion.js +1 -1
  113. package/lib-esm/app/panels/measurement-info/MeasurementInfoPanelAccordion.js.map +1 -1
  114. package/lib-esm/app-data/loaders/biologicLoader.d.ts +2 -2
  115. package/lib-esm/app-data/loaders/biologicLoader.d.ts.map +1 -1
  116. package/lib-esm/app-data/loaders/biologicLoader.js +4 -4
  117. package/lib-esm/app-data/loaders/biologicLoader.js.map +1 -1
  118. package/lib-esm/app-data/loaders/cdfLoader.d.ts +2 -2
  119. package/lib-esm/app-data/loaders/cdfLoader.d.ts.map +1 -1
  120. package/lib-esm/app-data/loaders/cdfLoader.js +6 -9
  121. package/lib-esm/app-data/loaders/cdfLoader.js.map +1 -1
  122. package/lib-esm/app-data/loaders/jcampLoader.d.ts +2 -2
  123. package/lib-esm/app-data/loaders/jcampLoader.d.ts.map +1 -1
  124. package/lib-esm/app-data/loaders/jcampLoader.js +10 -13
  125. package/lib-esm/app-data/loaders/jcampLoader.js.map +1 -1
  126. package/lib-esm/app-data/loaders/loadMeasurements.d.ts +4 -3
  127. package/lib-esm/app-data/loaders/loadMeasurements.d.ts.map +1 -1
  128. package/lib-esm/app-data/loaders/loadMeasurements.js +3 -3
  129. package/lib-esm/app-data/loaders/loadMeasurements.js.map +1 -1
  130. package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.d.ts +3 -2
  131. package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.d.ts.map +1 -1
  132. package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.js +5 -10
  133. package/lib-esm/app-data/loaders/proprietary/agilent/cary500Loader.js.map +1 -1
  134. package/lib-esm/app-data/loaders/spcLoader.d.ts +2 -2
  135. package/lib-esm/app-data/loaders/spcLoader.d.ts.map +1 -1
  136. package/lib-esm/app-data/loaders/spcLoader.js +4 -9
  137. package/lib-esm/app-data/loaders/spcLoader.js.map +1 -1
  138. package/lib-esm/app-data/loaders/utility/measurementLoader.d.ts +2 -2
  139. package/lib-esm/app-data/loaders/utility/measurementLoader.d.ts.map +1 -1
  140. package/lib-esm/app-data/loaders/utility/measurementLoader.js.map +1 -1
  141. package/lib-esm/app-data/loaders/wdfLoader.d.ts +2 -2
  142. package/lib-esm/app-data/loaders/wdfLoader.d.ts.map +1 -1
  143. package/lib-esm/app-data/loaders/wdfLoader.js +3 -9
  144. package/lib-esm/app-data/loaders/wdfLoader.js.map +1 -1
  145. package/lib-esm/components/accordion/Accordion.d.ts +1 -0
  146. package/lib-esm/components/accordion/Accordion.d.ts.map +1 -1
  147. package/lib-esm/components/accordion/Accordion.js +12 -11
  148. package/lib-esm/components/accordion/Accordion.js.map +1 -1
  149. package/lib-esm/components/index.d.ts +2 -1
  150. package/lib-esm/components/index.d.ts.map +1 -1
  151. package/lib-esm/components/index.js +2 -1
  152. package/lib-esm/components/index.js.map +1 -1
  153. package/lib-esm/components/info-panel/InfoPanel.d.ts.map +1 -1
  154. package/lib-esm/components/info-panel/InfoPanel.js +2 -5
  155. package/lib-esm/components/info-panel/InfoPanel.js.map +1 -1
  156. package/lib-esm/components/logger/FifoLoggerDialog.d.ts +10 -0
  157. package/lib-esm/components/logger/FifoLoggerDialog.d.ts.map +1 -0
  158. package/lib-esm/components/logger/FifoLoggerDialog.js +48 -0
  159. package/lib-esm/components/logger/FifoLoggerDialog.js.map +1 -0
  160. package/lib-esm/components/logger/FifoLoggerProvider.d.ts +7 -0
  161. package/lib-esm/components/logger/FifoLoggerProvider.d.ts.map +1 -0
  162. package/lib-esm/components/logger/FifoLoggerProvider.js +6 -0
  163. package/lib-esm/components/logger/FifoLoggerProvider.js.map +1 -0
  164. package/lib-esm/components/logger/FifoLoggerToolbarItem.d.ts +2 -0
  165. package/lib-esm/components/logger/FifoLoggerToolbarItem.d.ts.map +1 -0
  166. package/lib-esm/components/logger/FifoLoggerToolbarItem.js +35 -0
  167. package/lib-esm/components/logger/FifoLoggerToolbarItem.js.map +1 -0
  168. package/lib-esm/components/logger/index.d.ts +5 -0
  169. package/lib-esm/components/logger/index.d.ts.map +1 -0
  170. package/lib-esm/components/logger/index.js +5 -0
  171. package/lib-esm/components/logger/index.js.map +1 -0
  172. package/lib-esm/components/logger/loggerContext.d.ts +4 -0
  173. package/lib-esm/components/logger/loggerContext.d.ts.map +1 -0
  174. package/lib-esm/components/logger/loggerContext.js +3 -0
  175. package/lib-esm/components/logger/loggerContext.js.map +1 -0
  176. package/lib-esm/components/logger/useFifoLogger.d.ts +3 -0
  177. package/lib-esm/components/logger/useFifoLogger.d.ts.map +1 -0
  178. package/lib-esm/components/logger/useFifoLogger.js +20 -0
  179. package/lib-esm/components/logger/useFifoLogger.js.map +1 -0
  180. package/lib-esm/components/root-layout/RootLayout.d.ts.map +1 -1
  181. package/lib-esm/components/root-layout/RootLayout.js +6 -1
  182. package/lib-esm/components/root-layout/RootLayout.js.map +1 -1
  183. package/lib-esm/components/table/Table.d.ts +2 -3
  184. package/lib-esm/components/table/Table.d.ts.map +1 -1
  185. package/lib-esm/components/table/Table.js +2 -2
  186. package/lib-esm/components/table/Table.js.map +1 -1
  187. package/lib-esm/components/table/TableHeader.d.ts +1 -1
  188. package/lib-esm/components/table/TableHeader.d.ts.map +1 -1
  189. package/lib-esm/components/table/TableHeader.js +2 -2
  190. package/lib-esm/components/table/TableHeader.js.map +1 -1
  191. package/lib-esm/components/table/TableRow.d.ts +3 -1
  192. package/lib-esm/components/table/TableRow.d.ts.map +1 -1
  193. package/lib-esm/components/table/TableRow.js +7 -20
  194. package/lib-esm/components/table/TableRow.js.map +1 -1
  195. package/lib-esm/components/table/tableContext.d.ts +0 -2
  196. package/lib-esm/components/table/tableContext.d.ts.map +1 -1
  197. package/lib-esm/components/table/tableContext.js +1 -1
  198. package/lib-esm/components/table/tableContext.js.map +1 -1
  199. package/lib-esm/components/toolbar/Toolbar.d.ts +4 -2
  200. package/lib-esm/components/toolbar/Toolbar.d.ts.map +1 -1
  201. package/lib-esm/components/toolbar/Toolbar.js +2 -2
  202. package/lib-esm/components/toolbar/Toolbar.js.map +1 -1
  203. package/lib-esm/components/toolbar/TooltipHelpContent.d.ts +11 -0
  204. package/lib-esm/components/toolbar/TooltipHelpContent.d.ts.map +1 -0
  205. package/lib-esm/components/toolbar/TooltipHelpContent.js +95 -0
  206. package/lib-esm/components/toolbar/TooltipHelpContent.js.map +1 -0
  207. package/lib-esm/components/toolbar/index.d.ts +1 -0
  208. package/lib-esm/components/toolbar/index.d.ts.map +1 -1
  209. package/lib-esm/components/toolbar/index.js +1 -0
  210. package/lib-esm/components/toolbar/index.js.map +1 -1
  211. package/package.json +7 -5
  212. package/src/app/hooks/file-loading.ts +12 -10
  213. package/src/app/panels/SignalProcessingPanel.tsx +1 -1
  214. package/src/app/panels/measurement-info/MeasurementInfoPanelAccordion.tsx +1 -1
  215. package/src/app-data/loaders/biologicLoader.ts +6 -5
  216. package/src/app-data/loaders/cdfLoader.ts +8 -13
  217. package/src/app-data/loaders/jcampLoader.ts +11 -15
  218. package/src/app-data/loaders/loadMeasurements.ts +6 -5
  219. package/src/app-data/loaders/proprietary/agilent/cary500Loader.ts +8 -16
  220. package/src/app-data/loaders/spcLoader.ts +6 -12
  221. package/src/app-data/loaders/utility/measurementLoader.ts +2 -3
  222. package/src/app-data/loaders/wdfLoader.ts +5 -12
  223. package/src/components/accordion/Accordion.tsx +17 -12
  224. package/src/components/index.ts +2 -1
  225. package/src/components/info-panel/InfoPanel.tsx +2 -12
  226. package/src/components/logger/FifoLoggerDialog.tsx +129 -0
  227. package/src/components/logger/FifoLoggerProvider.tsx +15 -0
  228. package/src/components/logger/FifoLoggerToolbarItem.tsx +59 -0
  229. package/src/components/logger/index.ts +4 -0
  230. package/src/components/logger/loggerContext.ts +4 -0
  231. package/src/components/logger/useFifoLogger.ts +22 -0
  232. package/src/components/root-layout/RootLayout.tsx +20 -13
  233. package/src/components/table/Table.tsx +1 -6
  234. package/src/components/table/TableHeader.tsx +2 -2
  235. package/src/components/table/TableRow.tsx +17 -24
  236. package/src/components/table/tableContext.ts +1 -1
  237. package/src/components/toolbar/Toolbar.tsx +8 -3
  238. package/src/components/toolbar/TooltipHelpContent.tsx +173 -0
  239. package/src/components/toolbar/index.ts +1 -0
@@ -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.0.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
@@ -4,7 +4,7 @@ import { MeasurementInfoPanel } from './MeasurementInfoPanel';
4
4
 
5
5
  export function MeasurementInfoPanelAccordion() {
6
6
  return (
7
- <Accordion.Item title="Measurement info">
7
+ <Accordion.Item title="Measurement info" defaultOpened>
8
8
  <MeasurementInfoPanel />
9
9
  </Accordion.Item>
10
10
  );
@@ -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
  }
@@ -1,11 +1,11 @@
1
+ import type { FifoLogger } from 'fifo-logger';
1
2
  import type { FileCollection } from 'filelist-utils';
2
- import { parse, guessSpectraType } from 'spc-parser';
3
+ import { guessSpectraType, parse } from 'spc-parser';
3
4
 
4
5
  import { assert } from '../../components/index';
5
- import type { MeasurementKind, Measurements, MeasurementBase } 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
  /**
11
11
  *
@@ -15,7 +15,7 @@ import { ParserLog, createLogEntry } from './utility/parserLog';
15
15
  */
16
16
  export async function spcLoader(
17
17
  fileCollection: FileCollection,
18
- logs?: ParserLog[],
18
+ logger?: FifoLogger,
19
19
  ): Promise<Partial<Measurements>> {
20
20
  const measurements: Partial<Measurements> = {};
21
21
  for (const file of fileCollection) {
@@ -38,14 +38,8 @@ export async function spcLoader(
38
38
  data: parsed.spectra as unknown as MeasurementBase['data'],
39
39
  });
40
40
  } catch (error) {
41
- if (error instanceof Error && logs) {
42
- logs.push(
43
- createLogEntry({
44
- parser: 'spc-parser',
45
- relativePath: file.relativePath,
46
- error,
47
- }),
48
- );
41
+ if (error instanceof Error && logger) {
42
+ logger.error(error);
49
43
  } else {
50
44
  throw error;
51
45
  }
@@ -1,13 +1,12 @@
1
+ import type { FifoLogger } from 'fifo-logger';
1
2
  import type { FileCollection } from 'filelist-utils';
2
3
 
3
4
  import { assert } from '../../../components/index';
4
5
  import type { MeasurementBase, Measurements } from '../../index';
5
6
 
6
- import type { ParserLog } from './parserLog';
7
-
8
7
  export type MeasurementsLoader = (
9
8
  fileCollection: FileCollection,
10
- logs?: ParserLog[],
9
+ logger?: FifoLogger,
11
10
  ) => Promise<Partial<Measurements>>;
12
11
 
13
12
  export function mergeMeasurements(
@@ -1,11 +1,11 @@
1
1
  import { MeasurementVariable } from 'cheminfo-types';
2
+ import type { FifoLogger } from 'fifo-logger';
2
3
  import type { FileCollection } from 'filelist-utils';
3
4
  import { parse, Wdf } from 'wdf-parser';
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 { ParserLog, createLogEntry } from './utility/parserLog';
9
9
 
10
10
  /**
11
11
  *
@@ -15,7 +15,7 @@ import { ParserLog, createLogEntry } from './utility/parserLog';
15
15
  */
16
16
  export async function wdfLoader(
17
17
  fileCollection: FileCollection,
18
- logs?: ParserLog[],
18
+ logger?: FifoLogger,
19
19
  ): Promise<Partial<Measurements>> {
20
20
  const measurements: Partial<Measurements> = {};
21
21
  const entries: MeasurementBase[] = [];
@@ -33,15 +33,8 @@ export async function wdfLoader(
33
33
  });
34
34
  } catch (error) {
35
35
  if (error instanceof Error) {
36
- if (logs) {
37
- logs.push(
38
- createLogEntry({
39
- parser: 'wdf',
40
- error,
41
- message: 'error reading wdf file',
42
- relativePath: file.relativePath,
43
- }),
44
- );
36
+ if (logger) {
37
+ logger.error(error);
45
38
  } else {
46
39
  throw error;
47
40
  }
@@ -23,6 +23,7 @@ export interface AccordionItemProps {
23
23
  title: string;
24
24
  children: ReactNode;
25
25
  defaultOpened?: boolean;
26
+ toolbar?: ReactNode;
26
27
  }
27
28
 
28
29
  const styles = {
@@ -62,7 +63,8 @@ export function Accordion(props: AccordionProps) {
62
63
  }
63
64
 
64
65
  Accordion.Item = function AccordionItem(props: AccordionItemProps) {
65
- const { item, utils } = useAccordionContext(props.title, props.defaultOpened);
66
+ const { title, children, defaultOpened, toolbar } = props;
67
+ const { item, utils } = useAccordionContext(title, defaultOpened);
66
68
 
67
69
  const onClickHandle = useCallback(
68
70
  (event: ReactMouseEvent<HTMLButtonElement>) => {
@@ -75,16 +77,10 @@ Accordion.Item = function AccordionItem(props: AccordionItemProps) {
75
77
  [utils],
76
78
  );
77
79
 
78
- let displayable = false;
79
-
80
- if (item) {
81
- displayable = item.isOpen;
82
- }
83
-
84
80
  return (
85
81
  <div
86
82
  style={{
87
- flex: displayable ? '1 1 1px' : 'none',
83
+ flex: item?.isOpen ? '1 1 1px' : 'none',
88
84
  display: 'flex',
89
85
  flexDirection: 'column',
90
86
  }}
@@ -97,15 +93,24 @@ Accordion.Item = function AccordionItem(props: AccordionItemProps) {
97
93
  alignItems: 'center',
98
94
  width: '100%',
99
95
  userSelect: 'none',
96
+ justifyContent: 'space-between',
97
+ padding: '0px 12px',
100
98
  }}
101
99
  css={styles.header}
102
100
  >
103
- {props.title}
101
+ <div
102
+ style={{
103
+ padding: '5px 0px',
104
+ }}
105
+ >
106
+ {title}
107
+ </div>
108
+ {toolbar}
104
109
  </button>
105
110
  <div
106
111
  style={{
107
- display: displayable ? 'flex' : 'none',
108
- flex: displayable ? '1 1 1px' : 'none',
112
+ display: item?.isOpen ? 'flex' : 'none',
113
+ flex: item?.isOpen ? '1 1 1px' : 'none',
109
114
  backgroundColor: 'white',
110
115
  maxHeight: '100%',
111
116
  overflow: 'hidden',
@@ -120,7 +125,7 @@ Accordion.Item = function AccordionItem(props: AccordionItemProps) {
120
125
  flexDirection: 'column',
121
126
  }}
122
127
  >
123
- {props.children}
128
+ {children}
124
129
  </div>
125
130
  </div>
126
131
  </div>