@tetrascience-npm/tetrascience-react-ui 0.7.0 → 1.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 (1241) hide show
  1. package/README.md +58 -4
  2. package/dist/ai/attachments.cjs +2 -0
  3. package/dist/ai/attachments.cjs.map +1 -0
  4. package/dist/ai/attachments.js +224 -0
  5. package/dist/ai/attachments.js.map +1 -0
  6. package/dist/ai/chain-of-thought.cjs +2 -0
  7. package/dist/ai/chain-of-thought.cjs.map +1 -0
  8. package/dist/ai/chain-of-thought.js +145 -0
  9. package/dist/ai/chain-of-thought.js.map +1 -0
  10. package/dist/ai/confirmation.cjs +2 -0
  11. package/dist/ai/confirmation.cjs.map +1 -0
  12. package/dist/ai/confirmation.js +109 -0
  13. package/dist/ai/confirmation.js.map +1 -0
  14. package/dist/ai/context.cjs +2 -0
  15. package/dist/ai/context.cjs.map +1 -0
  16. package/dist/ai/context.js +267 -0
  17. package/dist/ai/context.js.map +1 -0
  18. package/dist/ai/conversation.cjs +4 -0
  19. package/dist/ai/conversation.cjs.map +1 -0
  20. package/dist/ai/conversation.js +108 -0
  21. package/dist/ai/conversation.js.map +1 -0
  22. package/dist/ai/inline-citation.cjs +2 -0
  23. package/dist/ai/inline-citation.cjs.map +1 -0
  24. package/dist/ai/inline-citation.js +182 -0
  25. package/dist/ai/inline-citation.js.map +1 -0
  26. package/dist/ai/message.cjs +2 -0
  27. package/dist/ai/message.cjs.map +1 -0
  28. package/dist/ai/message.js +237 -0
  29. package/dist/ai/message.js.map +1 -0
  30. package/dist/ai/model-selector.cjs +2 -0
  31. package/dist/ai/model-selector.cjs.map +1 -0
  32. package/dist/ai/model-selector.js +77 -0
  33. package/dist/ai/model-selector.js.map +1 -0
  34. package/dist/ai/prompt-input.cjs +2 -0
  35. package/dist/ai/prompt-input.cjs.map +1 -0
  36. package/dist/ai/prompt-input.js +776 -0
  37. package/dist/ai/prompt-input.js.map +1 -0
  38. package/dist/ai/queue.cjs +2 -0
  39. package/dist/ai/queue.cjs.map +1 -0
  40. package/dist/ai/queue.js +209 -0
  41. package/dist/ai/queue.js.map +1 -0
  42. package/dist/ai/reasoning.cjs +2 -0
  43. package/dist/ai/reasoning.cjs.map +1 -0
  44. package/dist/ai/reasoning.js +129 -0
  45. package/dist/ai/reasoning.js.map +1 -0
  46. package/dist/ai/shimmer.cjs +2 -0
  47. package/dist/ai/shimmer.cjs.map +1 -0
  48. package/dist/ai/shimmer.js +49 -0
  49. package/dist/ai/shimmer.js.map +1 -0
  50. package/dist/ai/sources.cjs +2 -0
  51. package/dist/ai/sources.cjs.map +1 -0
  52. package/dist/ai/sources.js +54 -0
  53. package/dist/ai/sources.js.map +1 -0
  54. package/dist/ai/speech-input.cjs +2 -0
  55. package/dist/ai/speech-input.cjs.map +1 -0
  56. package/dist/ai/speech-input.js +123 -0
  57. package/dist/ai/speech-input.js.map +1 -0
  58. package/dist/ai/stream-status.cjs +2 -0
  59. package/dist/ai/stream-status.cjs.map +1 -0
  60. package/dist/ai/stream-status.js +108 -0
  61. package/dist/ai/stream-status.js.map +1 -0
  62. package/dist/ai/suggestion.cjs +2 -0
  63. package/dist/ai/suggestion.cjs.map +1 -0
  64. package/dist/ai/suggestion.js +38 -0
  65. package/dist/ai/suggestion.js.map +1 -0
  66. package/dist/ai/task.cjs +2 -0
  67. package/dist/ai/task.cjs.map +1 -0
  68. package/dist/ai/task.js +101 -0
  69. package/dist/ai/task.js.map +1 -0
  70. package/dist/ai/tool.cjs +2 -0
  71. package/dist/ai/tool.cjs.map +1 -0
  72. package/dist/ai/tool.js +139 -0
  73. package/dist/ai/tool.js.map +1 -0
  74. package/dist/charts/AreaPlot.cjs +2 -0
  75. package/dist/charts/AreaPlot.cjs.map +1 -0
  76. package/dist/charts/AreaPlot.js +5 -0
  77. package/dist/charts/AreaPlot.js.map +1 -0
  78. package/dist/charts/BarChart.cjs +2 -0
  79. package/dist/charts/BarChart.cjs.map +1 -0
  80. package/dist/charts/BarChart.js +5 -0
  81. package/dist/charts/BarChart.js.map +1 -0
  82. package/dist/charts/BoxPlot.cjs +2 -0
  83. package/dist/charts/BoxPlot.cjs.map +1 -0
  84. package/dist/charts/BoxPlot.js +5 -0
  85. package/dist/charts/BoxPlot.js.map +1 -0
  86. package/dist/charts/ChartTooltip.cjs +2 -0
  87. package/dist/charts/ChartTooltip.cjs.map +1 -0
  88. package/dist/charts/ChartTooltip.js +8 -0
  89. package/dist/charts/ChartTooltip.js.map +1 -0
  90. package/dist/charts/Chromatogram.cjs +2 -0
  91. package/dist/charts/Chromatogram.cjs.map +1 -0
  92. package/dist/charts/Chromatogram.js +5 -0
  93. package/dist/charts/Chromatogram.js.map +1 -0
  94. package/dist/charts/Electropherogram.cjs +2 -0
  95. package/dist/charts/Electropherogram.cjs.map +1 -0
  96. package/dist/charts/Electropherogram.js +5 -0
  97. package/dist/charts/Electropherogram.js.map +1 -0
  98. package/dist/charts/Histogram.cjs +2 -0
  99. package/dist/charts/Histogram.cjs.map +1 -0
  100. package/dist/charts/Histogram.js +5 -0
  101. package/dist/charts/Histogram.js.map +1 -0
  102. package/dist/charts/LinePlot.cjs +2 -0
  103. package/dist/charts/LinePlot.cjs.map +1 -0
  104. package/dist/charts/LinePlot.js +5 -0
  105. package/dist/charts/LinePlot.js.map +1 -0
  106. package/dist/charts/PieChart.cjs +2 -0
  107. package/dist/charts/PieChart.cjs.map +1 -0
  108. package/dist/charts/PieChart.js +5 -0
  109. package/dist/charts/PieChart.js.map +1 -0
  110. package/dist/charts/PlateMap.cjs +2 -0
  111. package/dist/charts/PlateMap.cjs.map +1 -0
  112. package/dist/charts/PlateMap.js +5 -0
  113. package/dist/charts/PlateMap.js.map +1 -0
  114. package/dist/charts/ScatterPlot.cjs +2 -0
  115. package/dist/charts/ScatterPlot.cjs.map +1 -0
  116. package/dist/charts/ScatterPlot.js +5 -0
  117. package/dist/charts/ScatterPlot.js.map +1 -0
  118. package/dist/charts/ScatterPlotInteractive.cjs +2 -0
  119. package/dist/charts/ScatterPlotInteractive.cjs.map +1 -0
  120. package/dist/charts/ScatterPlotInteractive.js +14 -0
  121. package/dist/charts/ScatterPlotInteractive.js.map +1 -0
  122. package/dist/charts/StackedChromatogram.cjs +2 -0
  123. package/dist/charts/StackedChromatogram.cjs.map +1 -0
  124. package/dist/charts/StackedChromatogram.js +7 -0
  125. package/dist/charts/StackedChromatogram.js.map +1 -0
  126. package/dist/components/ai/attachments.d.ts +54 -0
  127. package/dist/components/ai/chain-of-thought.d.ts +56 -0
  128. package/dist/components/ai/confirmation.d.ts +47 -0
  129. package/dist/components/ai/context.d.ts +40 -0
  130. package/dist/components/ai/conversation.d.ts +23 -0
  131. package/dist/components/ai/inline-citation.d.ts +38 -0
  132. package/dist/components/ai/message.d.ts +37 -0
  133. package/dist/components/ai/model-selector.d.ts +36 -0
  134. package/dist/components/ai/prompt-input.d.ts +158 -0
  135. package/dist/components/ai/queue.d.ts +72 -0
  136. package/dist/components/ai/reasoning.d.ts +26 -0
  137. package/dist/components/ai/shimmer.d.ts +17 -0
  138. package/dist/components/ai/sources.d.ts +12 -0
  139. package/dist/components/ai/speech-input.d.ts +54 -0
  140. package/dist/components/ai/stream-status.d.ts +66 -0
  141. package/dist/components/ai/streamdown-code-plugin.cjs +2 -0
  142. package/dist/components/ai/streamdown-code-plugin.cjs.map +1 -0
  143. package/dist/components/ai/streamdown-code-plugin.d.ts +2 -0
  144. package/dist/components/ai/streamdown-code-plugin.js +42 -0
  145. package/dist/components/ai/streamdown-code-plugin.js.map +1 -0
  146. package/dist/components/ai/streamdown-plugins.cjs +2 -0
  147. package/dist/components/ai/streamdown-plugins.cjs.map +1 -0
  148. package/dist/components/ai/streamdown-plugins.d.ts +2 -0
  149. package/dist/components/ai/streamdown-plugins.js +14 -0
  150. package/dist/components/ai/streamdown-plugins.js.map +1 -0
  151. package/dist/components/ai/suggestion.d.ts +9 -0
  152. package/dist/components/ai/task.d.ts +16 -0
  153. package/dist/components/ai/tool.d.ts +33 -0
  154. package/dist/components/ai/use-streamdown-plugins.cjs +2 -0
  155. package/dist/components/ai/use-streamdown-plugins.cjs.map +1 -0
  156. package/dist/components/ai/use-streamdown-plugins.d.ts +8 -0
  157. package/dist/components/ai/use-streamdown-plugins.js +25 -0
  158. package/dist/components/ai/use-streamdown-plugins.js.map +1 -0
  159. package/dist/components/charts/AreaPlot/AreaPlot.cjs +2 -0
  160. package/dist/components/charts/AreaPlot/AreaPlot.cjs.map +1 -0
  161. package/dist/components/charts/AreaPlot/AreaPlot.d.ts +39 -0
  162. package/dist/components/charts/AreaPlot/AreaPlot.js +270 -0
  163. package/dist/components/charts/AreaPlot/AreaPlot.js.map +1 -0
  164. package/dist/components/charts/AreaPlot/index.d.ts +2 -0
  165. package/dist/components/charts/BarChart/BarChart.cjs +2 -0
  166. package/dist/components/charts/BarChart/BarChart.cjs.map +1 -0
  167. package/dist/components/charts/BarChart/BarChart.d.ts +44 -0
  168. package/dist/components/charts/BarChart/BarChart.js +219 -0
  169. package/dist/components/charts/BarChart/BarChart.js.map +1 -0
  170. package/dist/components/charts/BarChart/index.d.ts +2 -0
  171. package/dist/components/charts/BoxPlot/BoxPlot.cjs +2 -0
  172. package/dist/components/charts/BoxPlot/BoxPlot.cjs.map +1 -0
  173. package/dist/components/charts/BoxPlot/BoxPlot.d.ts +33 -0
  174. package/dist/components/charts/BoxPlot/BoxPlot.js +208 -0
  175. package/dist/components/charts/BoxPlot/BoxPlot.js.map +1 -0
  176. package/dist/components/charts/BoxPlot/index.d.ts +2 -0
  177. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
  178. package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
  179. package/dist/components/charts/ChartTooltip/ChartTooltip.d.ts +71 -0
  180. package/dist/components/charts/ChartTooltip/ChartTooltip.js +22 -22
  181. package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
  182. package/dist/components/charts/ChartTooltip/index.d.ts +2 -0
  183. package/dist/components/charts/ChartTooltip/lines.d.ts +54 -0
  184. package/dist/components/charts/Chromatogram/Chromatogram.cjs +1 -1
  185. package/dist/components/charts/Chromatogram/Chromatogram.cjs.map +1 -1
  186. package/dist/components/charts/Chromatogram/Chromatogram.d.ts +5 -0
  187. package/dist/components/charts/Chromatogram/Chromatogram.js +232 -170
  188. package/dist/components/charts/Chromatogram/Chromatogram.js.map +1 -1
  189. package/dist/components/charts/Chromatogram/annotations.cjs +2 -0
  190. package/dist/components/charts/Chromatogram/annotations.cjs.map +1 -0
  191. package/dist/components/charts/Chromatogram/annotations.d.ts +50 -0
  192. package/dist/components/charts/Chromatogram/annotations.js +137 -0
  193. package/dist/components/charts/Chromatogram/annotations.js.map +1 -0
  194. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs +2 -0
  195. package/dist/components/charts/Chromatogram/boundaryMarkers.cjs.map +1 -0
  196. package/dist/components/charts/Chromatogram/boundaryMarkers.d.ts +14 -0
  197. package/dist/components/charts/Chromatogram/boundaryMarkers.js +34 -0
  198. package/dist/components/charts/Chromatogram/boundaryMarkers.js.map +1 -0
  199. package/dist/components/charts/Chromatogram/constants.cjs +2 -0
  200. package/dist/components/charts/Chromatogram/constants.cjs.map +1 -0
  201. package/dist/components/charts/Chromatogram/constants.d.ts +46 -0
  202. package/dist/components/charts/Chromatogram/constants.js +36 -0
  203. package/dist/components/charts/Chromatogram/constants.js.map +1 -0
  204. package/dist/components/charts/Chromatogram/dataProcessing.cjs +2 -0
  205. package/dist/components/charts/Chromatogram/dataProcessing.cjs.map +1 -0
  206. package/dist/components/charts/Chromatogram/dataProcessing.d.ts +49 -0
  207. package/dist/components/charts/Chromatogram/dataProcessing.js +90 -0
  208. package/dist/components/charts/Chromatogram/dataProcessing.js.map +1 -0
  209. package/dist/components/charts/Chromatogram/index.d.ts +2 -0
  210. package/dist/components/charts/Chromatogram/peakDetection.cjs.map +1 -0
  211. package/dist/components/charts/Chromatogram/peakDetection.d.ts +33 -0
  212. package/dist/components/charts/Chromatogram/peakDetection.js.map +1 -0
  213. package/dist/components/charts/Chromatogram/plotBuilder.cjs +2 -0
  214. package/dist/components/charts/Chromatogram/plotBuilder.cjs.map +1 -0
  215. package/dist/components/charts/Chromatogram/plotBuilder.d.ts +58 -0
  216. package/dist/components/charts/Chromatogram/plotBuilder.js +216 -0
  217. package/dist/components/charts/Chromatogram/plotBuilder.js.map +1 -0
  218. package/dist/components/charts/Chromatogram/regionOverlays.cjs +2 -0
  219. package/dist/components/charts/Chromatogram/regionOverlays.cjs.map +1 -0
  220. package/dist/components/charts/Chromatogram/regionOverlays.d.ts +9 -0
  221. package/dist/components/charts/Chromatogram/regionOverlays.js +26 -0
  222. package/dist/components/charts/Chromatogram/regionOverlays.js.map +1 -0
  223. package/dist/components/charts/Chromatogram/types.d.ts +258 -0
  224. package/dist/components/charts/Electropherogram/Electropherogram.cjs +2 -0
  225. package/dist/components/charts/Electropherogram/Electropherogram.cjs.map +1 -0
  226. package/dist/components/charts/Electropherogram/Electropherogram.d.ts +22 -0
  227. package/dist/components/charts/Electropherogram/Electropherogram.js +180 -0
  228. package/dist/components/charts/Electropherogram/Electropherogram.js.map +1 -0
  229. package/dist/components/charts/Electropherogram/index.d.ts +2 -0
  230. package/dist/components/charts/Histogram/Histogram.cjs +1 -1
  231. package/dist/components/charts/Histogram/Histogram.cjs.map +1 -1
  232. package/dist/components/charts/Histogram/Histogram.d.ts +36 -0
  233. package/dist/components/charts/Histogram/Histogram.js +107 -108
  234. package/dist/components/charts/Histogram/Histogram.js.map +1 -1
  235. package/dist/components/charts/Histogram/index.d.ts +2 -0
  236. package/dist/components/charts/LinePlot/LinePlot.cjs +2 -0
  237. package/dist/components/charts/LinePlot/LinePlot.cjs.map +1 -0
  238. package/dist/components/charts/LinePlot/LinePlot.d.ts +45 -0
  239. package/dist/components/charts/LinePlot/LinePlot.js +224 -0
  240. package/dist/components/charts/LinePlot/LinePlot.js.map +1 -0
  241. package/dist/components/charts/LinePlot/index.d.ts +2 -0
  242. package/dist/components/charts/PieChart/PieChart.cjs +1 -1
  243. package/dist/components/charts/PieChart/PieChart.cjs.map +1 -1
  244. package/dist/components/charts/PieChart/PieChart.d.ts +20 -0
  245. package/dist/components/charts/PieChart/PieChart.js +62 -61
  246. package/dist/components/charts/PieChart/PieChart.js.map +1 -1
  247. package/dist/components/charts/PieChart/index.d.ts +2 -0
  248. package/dist/components/charts/PlateMap/PlateMap.cjs +1 -1
  249. package/dist/components/charts/PlateMap/PlateMap.cjs.map +1 -1
  250. package/dist/components/charts/PlateMap/PlateMap.d.ts +29 -0
  251. package/dist/components/charts/PlateMap/PlateMap.js +246 -242
  252. package/dist/components/charts/PlateMap/PlateMap.js.map +1 -1
  253. package/dist/components/charts/PlateMap/constants.d.ts +75 -0
  254. package/dist/components/charts/PlateMap/index.d.ts +2 -0
  255. package/dist/components/charts/PlateMap/types.d.ts +322 -0
  256. package/dist/components/charts/PlateMap/utils.d.ts +133 -0
  257. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs +2 -0
  258. package/dist/components/charts/ScatterPlot/ScatterPlot.cjs.map +1 -0
  259. package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +43 -0
  260. package/dist/components/charts/ScatterPlot/ScatterPlot.js +252 -0
  261. package/dist/components/charts/ScatterPlot/ScatterPlot.js.map +1 -0
  262. package/dist/components/charts/ScatterPlot/index.d.ts +2 -0
  263. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs +2 -0
  264. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs.map +1 -0
  265. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.d.ts +25 -0
  266. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js +215 -0
  267. package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js.map +1 -0
  268. package/dist/components/charts/ScatterPlotInteractive/constants.cjs +2 -0
  269. package/dist/components/charts/ScatterPlotInteractive/constants.cjs.map +1 -0
  270. package/dist/components/charts/ScatterPlotInteractive/constants.d.ts +50 -0
  271. package/dist/components/charts/ScatterPlotInteractive/constants.js +38 -0
  272. package/dist/components/charts/ScatterPlotInteractive/constants.js.map +1 -0
  273. package/dist/components/charts/ScatterPlotInteractive/index.d.ts +3 -0
  274. package/dist/components/charts/ScatterPlotInteractive/types.d.ts +226 -0
  275. package/dist/components/charts/ScatterPlotInteractive/utils.cjs +2 -0
  276. package/dist/components/charts/ScatterPlotInteractive/utils.cjs.map +1 -0
  277. package/dist/components/charts/ScatterPlotInteractive/utils.d.ts +72 -0
  278. package/dist/components/charts/ScatterPlotInteractive/utils.js +261 -0
  279. package/dist/components/charts/ScatterPlotInteractive/utils.js.map +1 -0
  280. package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs +2 -0
  281. package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs.map +1 -0
  282. package/dist/components/charts/StackedChromatogram/StackedChromatogram.d.ts +3 -0
  283. package/dist/components/charts/StackedChromatogram/StackedChromatogram.js +40 -0
  284. package/dist/components/charts/StackedChromatogram/StackedChromatogram.js.map +1 -0
  285. package/dist/components/charts/StackedChromatogram/index.d.ts +3 -0
  286. package/dist/components/charts/StackedChromatogram/transforms.cjs +2 -0
  287. package/dist/components/charts/StackedChromatogram/transforms.cjs.map +1 -0
  288. package/dist/components/charts/StackedChromatogram/transforms.d.ts +9 -0
  289. package/dist/components/charts/StackedChromatogram/transforms.js +31 -0
  290. package/dist/components/charts/StackedChromatogram/transforms.js.map +1 -0
  291. package/dist/components/charts/StackedChromatogram/types.d.ts +26 -0
  292. package/dist/components/charts/plotly-loader.cjs +2 -0
  293. package/dist/components/charts/plotly-loader.cjs.map +1 -0
  294. package/dist/components/charts/plotly-loader.d.ts +29 -0
  295. package/dist/components/charts/plotly-loader.js +22 -0
  296. package/dist/components/charts/plotly-loader.js.map +1 -0
  297. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +2 -0
  298. package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -0
  299. package/dist/components/composed/AssistantLayout/AssistantLayout.d.ts +63 -0
  300. package/dist/components/composed/AssistantLayout/AssistantLayout.js +142 -0
  301. package/dist/components/composed/AssistantLayout/AssistantLayout.js.map +1 -0
  302. package/dist/components/composed/AssistantLayout/dockLayout.cjs +2 -0
  303. package/dist/components/composed/AssistantLayout/dockLayout.cjs.map +1 -0
  304. package/dist/components/composed/AssistantLayout/dockLayout.d.ts +15 -0
  305. package/dist/components/composed/AssistantLayout/dockLayout.js +10 -0
  306. package/dist/components/composed/AssistantLayout/dockLayout.js.map +1 -0
  307. package/dist/components/composed/AssistantLayout/index.d.ts +3 -0
  308. package/dist/components/composed/Chat/Chat.cjs +1 -1
  309. package/dist/components/composed/Chat/Chat.cjs.map +1 -1
  310. package/dist/components/composed/Chat/Chat.d.ts +35 -0
  311. package/dist/components/composed/Chat/Chat.js +28 -28
  312. package/dist/components/composed/Chat/Chat.js.map +1 -1
  313. package/dist/components/composed/Chat/index.d.ts +2 -0
  314. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs +1 -1
  315. package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
  316. package/dist/components/composed/ConfirmDialog/ConfirmDialog.d.ts +23 -0
  317. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js +33 -29
  318. package/dist/components/composed/ConfirmDialog/ConfirmDialog.js.map +1 -1
  319. package/dist/components/composed/ConfirmDialog/index.d.ts +1 -0
  320. package/dist/components/composed/DataAppShell/CollapseButton.cjs +2 -0
  321. package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -0
  322. package/dist/components/composed/DataAppShell/CollapseButton.d.ts +23 -0
  323. package/dist/components/composed/DataAppShell/CollapseButton.js +42 -0
  324. package/dist/components/composed/DataAppShell/CollapseButton.js.map +1 -0
  325. package/dist/components/composed/DataAppShell/DataAppShell.cjs +1 -1
  326. package/dist/components/composed/DataAppShell/DataAppShell.cjs.map +1 -1
  327. package/dist/components/composed/DataAppShell/DataAppShell.d.ts +88 -0
  328. package/dist/components/composed/DataAppShell/DataAppShell.js +350 -328
  329. package/dist/components/composed/DataAppShell/DataAppShell.js.map +1 -1
  330. package/dist/components/composed/DataAppShell/PrimaryNav.cjs +2 -0
  331. package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -0
  332. package/dist/components/composed/DataAppShell/PrimaryNav.d.ts +64 -0
  333. package/dist/components/composed/DataAppShell/PrimaryNav.js +268 -0
  334. package/dist/components/composed/DataAppShell/PrimaryNav.js.map +1 -0
  335. package/dist/components/composed/DataAppShell/RightPanel.cjs +2 -0
  336. package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -0
  337. package/dist/components/composed/DataAppShell/RightPanel.d.ts +95 -0
  338. package/dist/components/composed/DataAppShell/RightPanel.js +282 -0
  339. package/dist/components/composed/DataAppShell/RightPanel.js.map +1 -0
  340. package/dist/components/composed/DataAppShell/SecondaryNav.cjs +2 -0
  341. package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -0
  342. package/dist/components/composed/DataAppShell/SecondaryNav.d.ts +63 -0
  343. package/dist/components/composed/DataAppShell/SecondaryNav.js +364 -0
  344. package/dist/components/composed/DataAppShell/SecondaryNav.js.map +1 -0
  345. package/dist/components/composed/DataAppShell/ShellContext.cjs +2 -0
  346. package/dist/components/composed/DataAppShell/ShellContext.cjs.map +1 -0
  347. package/dist/components/composed/DataAppShell/ShellContext.d.ts +20 -0
  348. package/dist/components/composed/DataAppShell/ShellContext.js +23 -0
  349. package/dist/components/composed/DataAppShell/ShellContext.js.map +1 -0
  350. package/dist/components/composed/DataAppShell/index.d.ts +12 -0
  351. package/dist/components/composed/EmptyState/EmptyState.d.ts +12 -0
  352. package/dist/components/composed/EmptyState/index.d.ts +2 -0
  353. package/dist/components/composed/FormPatterns/FormSection.cjs +1 -1
  354. package/dist/components/composed/FormPatterns/FormSection.cjs.map +1 -1
  355. package/dist/components/composed/FormPatterns/FormSection.d.ts +7 -0
  356. package/dist/components/composed/FormPatterns/FormSection.js +2 -2
  357. package/dist/components/composed/FormPatterns/index.d.ts +1 -0
  358. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs +2 -0
  359. package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -0
  360. package/dist/components/composed/MoleculeStructure/MoleculeStructure.d.ts +43 -0
  361. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +87 -0
  362. package/dist/components/composed/MoleculeStructure/MoleculeStructure.js.map +1 -0
  363. package/dist/components/composed/MoleculeStructure/index.d.ts +3 -0
  364. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +2 -0
  365. package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -0
  366. package/dist/components/composed/MoleculeStructure/rdkit-loader.d.ts +104 -0
  367. package/dist/components/composed/MoleculeStructure/rdkit-loader.js +89 -0
  368. package/dist/components/composed/MoleculeStructure/rdkit-loader.js.map +1 -0
  369. package/dist/components/composed/MoleculeStructure/use-rdkit.cjs +2 -0
  370. package/dist/components/composed/MoleculeStructure/use-rdkit.cjs.map +1 -0
  371. package/dist/components/composed/MoleculeStructure/use-rdkit.d.ts +29 -0
  372. package/dist/components/composed/MoleculeStructure/use-rdkit.js +19 -0
  373. package/dist/components/composed/MoleculeStructure/use-rdkit.js.map +1 -0
  374. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +1 -1
  375. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -1
  376. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.d.ts +12 -0
  377. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +21 -21
  378. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -1
  379. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +1 -1
  380. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -1
  381. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.d.ts +22 -0
  382. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +34 -34
  383. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -1
  384. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +1 -1
  385. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -1
  386. package/dist/components/composed/PlateMapEditor/PlateMapEditor.d.ts +106 -0
  387. package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +2 -2
  388. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +1 -1
  389. package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -1
  390. package/dist/components/composed/PlateMapEditor/PlateMapForm.d.ts +30 -0
  391. package/dist/components/composed/PlateMapEditor/PlateMapForm.js +1 -1
  392. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +1 -1
  393. package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -1
  394. package/dist/components/composed/PlateMapEditor/PlateMapGrid.d.ts +64 -0
  395. package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +1 -1
  396. package/dist/components/composed/PlateMapEditor/PlateMapManifest.d.ts +29 -0
  397. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +1 -1
  398. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -1
  399. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.d.ts +19 -0
  400. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +11 -11
  401. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -1
  402. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +1 -1
  403. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -1
  404. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.d.ts +73 -0
  405. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +1 -1
  406. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -1
  407. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +1 -1
  408. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -1
  409. package/dist/components/composed/PlateMapEditor/PlateZoomControl.d.ts +12 -0
  410. package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +2 -2
  411. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +1 -1
  412. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -1
  413. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.d.ts +13 -0
  414. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +4 -4
  415. package/dist/components/composed/PlateMapEditor/WellLegend.cjs +1 -1
  416. package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -1
  417. package/dist/components/composed/PlateMapEditor/WellLegend.d.ts +21 -0
  418. package/dist/components/composed/PlateMapEditor/WellLegend.js +24 -12
  419. package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -1
  420. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +1 -1
  421. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -1
  422. package/dist/components/composed/PlateMapEditor/WellManifestTable.d.ts +46 -0
  423. package/dist/components/composed/PlateMapEditor/WellManifestTable.js +10 -10
  424. package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -1
  425. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +1 -1
  426. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -1
  427. package/dist/components/composed/PlateMapEditor/WellMetadataForm.d.ts +17 -0
  428. package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +7 -7
  429. package/dist/components/composed/PlateMapEditor/autoFill.d.ts +26 -0
  430. package/dist/components/composed/PlateMapEditor/csvPlateTriage.d.ts +4 -0
  431. package/dist/components/composed/PlateMapEditor/helpers.d.ts +2 -0
  432. package/dist/components/composed/PlateMapEditor/index.d.ts +31 -0
  433. package/dist/components/composed/PlateMapEditor/types.d.ts +137 -0
  434. package/dist/components/composed/PlateMapEditor/wellGrid.d.ts +12 -0
  435. package/dist/components/composed/ProcessFlow/ProcessFlow.d.ts +32 -0
  436. package/dist/components/composed/ProcessFlow/ProcessFlow.utils.d.ts +86 -0
  437. package/dist/components/composed/ProcessFlow/index.d.ts +1 -0
  438. package/dist/components/composed/RichListItem/RichListItem.cjs +1 -1
  439. package/dist/components/composed/RichListItem/RichListItem.cjs.map +1 -1
  440. package/dist/components/composed/RichListItem/RichListItem.d.ts +22 -0
  441. package/dist/components/composed/RichListItem/RichListItem.js +2 -2
  442. package/dist/components/composed/RichListItem/index.d.ts +2 -0
  443. package/dist/components/composed/StatCard/StatCard.cjs +1 -1
  444. package/dist/components/composed/StatCard/StatCard.cjs.map +1 -1
  445. package/dist/components/composed/StatCard/StatCard.d.ts +11 -0
  446. package/dist/components/composed/StatCard/StatCard.js +1 -1
  447. package/dist/components/composed/StatCard/index.d.ts +1 -0
  448. package/dist/components/composed/TdpSearch/TdpSearch.cjs +1 -1
  449. package/dist/components/composed/TdpSearch/TdpSearch.cjs.map +1 -1
  450. package/dist/components/composed/TdpSearch/TdpSearch.d.ts +21 -0
  451. package/dist/components/composed/TdpSearch/TdpSearch.js +14 -13
  452. package/dist/components/composed/TdpSearch/TdpSearch.mocks.d.ts +5 -0
  453. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs +1 -1
  454. package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs.map +1 -1
  455. package/dist/components/composed/TdpSearch/components/DefaultFilters.d.ts +3 -0
  456. package/dist/components/composed/TdpSearch/components/DefaultFilters.js +4 -4
  457. package/dist/components/composed/TdpSearch/components/DefaultFilters.js.map +1 -1
  458. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs +1 -1
  459. package/dist/components/composed/TdpSearch/components/DefaultResults.cjs.map +1 -1
  460. package/dist/components/composed/TdpSearch/components/DefaultResults.d.ts +3 -0
  461. package/dist/components/composed/TdpSearch/components/DefaultResults.js +2 -2
  462. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs +1 -1
  463. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs.map +1 -1
  464. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.d.ts +3 -0
  465. package/dist/components/composed/TdpSearch/components/DefaultSearchBar.js +2 -2
  466. package/dist/components/composed/TdpSearch/constants.d.ts +3 -0
  467. package/dist/components/composed/TdpSearch/hooks/useSearch.d.ts +2 -0
  468. package/dist/components/composed/TdpSearch/hooks/useTdpCredentials.d.ts +14 -0
  469. package/dist/components/composed/TdpSearch/index.d.ts +3 -0
  470. package/dist/components/composed/TdpSearch/types.d.ts +128 -0
  471. package/dist/components/composed/TdpSearch/utils.d.ts +3 -0
  472. package/dist/components/composed/TopBar/TopBar.cjs +2 -0
  473. package/dist/components/composed/TopBar/TopBar.cjs.map +1 -0
  474. package/dist/components/composed/TopBar/TopBar.d.ts +25 -0
  475. package/dist/components/composed/TopBar/TopBar.js +56 -0
  476. package/dist/components/composed/TopBar/TopBar.js.map +1 -0
  477. package/dist/components/composed/TopBar/index.d.ts +2 -0
  478. package/dist/components/composed/UserMenu/UserMenu.cjs +2 -0
  479. package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -0
  480. package/dist/components/composed/UserMenu/UserMenu.d.ts +53 -0
  481. package/dist/components/composed/UserMenu/UserMenu.js +99 -0
  482. package/dist/components/composed/UserMenu/UserMenu.js.map +1 -0
  483. package/dist/components/composed/UserMenu/index.d.ts +2 -0
  484. package/dist/components/composed/tdp-link.d.ts +110 -0
  485. package/dist/components/composed/tdp-url.d.ts +68 -0
  486. package/dist/components/ui/accordion.d.ts +7 -0
  487. package/dist/components/ui/alert-dialog.d.ts +18 -0
  488. package/dist/components/ui/alert.d.ts +10 -0
  489. package/dist/components/ui/aspect-ratio.d.ts +3 -0
  490. package/dist/components/ui/avatar.d.ts +11 -0
  491. package/dist/components/ui/badge.d.ts +9 -0
  492. package/dist/components/ui/banner.d.ts +19 -0
  493. package/dist/components/ui/breadcrumb.d.ts +11 -0
  494. package/dist/components/ui/button-group.d.ts +11 -0
  495. package/dist/components/ui/button.d.ts +10 -0
  496. package/dist/components/ui/calendar.d.ts +10 -0
  497. package/dist/components/ui/card.d.ts +11 -0
  498. package/dist/components/ui/carousel.d.ts +28 -0
  499. package/dist/components/ui/checkbox.d.ts +4 -0
  500. package/dist/components/ui/code-block.d.ts +45 -0
  501. package/dist/components/ui/code-editor.d.ts +18 -0
  502. package/dist/components/ui/collapsible.d.ts +5 -0
  503. package/dist/components/ui/combobox.d.ts +24 -0
  504. package/dist/components/ui/command.d.ts +18 -0
  505. package/dist/components/ui/context-menu.d.ts +31 -0
  506. package/dist/components/ui/data-table/data-table-column-toggle.cjs +1 -1
  507. package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -1
  508. package/dist/components/ui/data-table/data-table-column-toggle.d.ts +6 -0
  509. package/dist/components/ui/data-table/data-table-column-toggle.js +71 -63
  510. package/dist/components/ui/data-table/data-table-column-toggle.js.map +1 -1
  511. package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
  512. package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
  513. package/dist/components/ui/data-table/data-table-filter.d.ts +9 -0
  514. package/dist/components/ui/data-table/data-table-filter.js +26 -25
  515. package/dist/components/ui/data-table/data-table-filter.js.map +1 -1
  516. package/dist/components/ui/data-table/data-table-group.cjs +1 -1
  517. package/dist/components/ui/data-table/data-table-group.cjs.map +1 -1
  518. package/dist/components/ui/data-table/data-table-group.d.ts +9 -0
  519. package/dist/components/ui/data-table/data-table-group.js +18 -17
  520. package/dist/components/ui/data-table/data-table-group.js.map +1 -1
  521. package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
  522. package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
  523. package/dist/components/ui/data-table/data-table-pagination.d.ts +7 -0
  524. package/dist/components/ui/data-table/data-table-pagination.js +16 -16
  525. package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
  526. package/dist/components/ui/data-table/data-table.cjs +1 -1
  527. package/dist/components/ui/data-table/data-table.cjs.map +1 -1
  528. package/dist/components/ui/data-table/data-table.d.ts +82 -0
  529. package/dist/components/ui/data-table/data-table.js +191 -190
  530. package/dist/components/ui/data-table/data-table.js.map +1 -1
  531. package/dist/components/ui/data-table/index.d.ts +5 -0
  532. package/dist/components/ui/dialog.d.ts +18 -0
  533. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  534. package/dist/components/ui/field.d.ts +24 -0
  535. package/dist/components/ui/hover-card.d.ts +6 -0
  536. package/dist/components/ui/input-group.d.ts +16 -0
  537. package/dist/components/ui/input.d.ts +3 -0
  538. package/dist/components/ui/item.d.ts +23 -0
  539. package/dist/components/ui/kbd.d.ts +3 -0
  540. package/dist/components/ui/label.d.ts +4 -0
  541. package/dist/components/ui/menubar.d.ts +30 -0
  542. package/dist/components/ui/navigation-menu.d.ts +14 -0
  543. package/dist/components/ui/popover.d.ts +7 -0
  544. package/dist/components/ui/progress.d.ts +4 -0
  545. package/dist/components/ui/radio-group.d.ts +5 -0
  546. package/dist/components/ui/resizable.d.ts +25 -0
  547. package/dist/components/ui/scroll-area.d.ts +5 -0
  548. package/dist/components/ui/select.d.ts +15 -0
  549. package/dist/components/ui/separator.d.ts +4 -0
  550. package/dist/components/ui/sheet.d.ts +14 -0
  551. package/dist/components/ui/sidebar.d.ts +69 -0
  552. package/dist/components/ui/skeleton.d.ts +2 -0
  553. package/dist/components/ui/slider.d.ts +4 -0
  554. package/dist/components/ui/snippet.d.ts +18 -0
  555. package/dist/components/ui/sonner.d.ts +3 -0
  556. package/dist/components/ui/spinner.d.ts +6 -0
  557. package/dist/components/ui/switch.d.ts +6 -0
  558. package/dist/components/ui/table.d.ts +22 -0
  559. package/dist/components/ui/tabs.d.ts +11 -0
  560. package/dist/components/ui/tetra-molecule-icon.d.ts +11 -0
  561. package/dist/components/ui/tetrascience-icon.d.ts +7 -0
  562. package/dist/components/ui/textarea.d.ts +3 -0
  563. package/dist/components/ui/toggle-group.d.ts +10 -0
  564. package/dist/components/ui/toggle.d.ts +9 -0
  565. package/dist/components/ui/tooltip.d.ts +7 -0
  566. package/dist/composed/AssistantLayout.cjs +2 -0
  567. package/dist/composed/AssistantLayout.cjs.map +1 -0
  568. package/dist/composed/AssistantLayout.js +10 -0
  569. package/dist/composed/AssistantLayout.js.map +1 -0
  570. package/dist/composed/Chat.cjs +2 -0
  571. package/dist/composed/Chat.cjs.map +1 -0
  572. package/dist/composed/Chat.js +5 -0
  573. package/dist/composed/Chat.js.map +1 -0
  574. package/dist/composed/ConfirmDialog.cjs +2 -0
  575. package/dist/composed/ConfirmDialog.cjs.map +1 -0
  576. package/dist/composed/ConfirmDialog.js +5 -0
  577. package/dist/composed/ConfirmDialog.js.map +1 -0
  578. package/dist/composed/DataAppShell.cjs +2 -0
  579. package/dist/composed/DataAppShell.cjs.map +1 -0
  580. package/dist/composed/DataAppShell.js +22 -0
  581. package/dist/composed/DataAppShell.js.map +1 -0
  582. package/dist/composed/EmptyState.cjs +2 -0
  583. package/dist/composed/EmptyState.cjs.map +1 -0
  584. package/dist/composed/EmptyState.js +5 -0
  585. package/dist/composed/EmptyState.js.map +1 -0
  586. package/dist/composed/FormPatterns.cjs +2 -0
  587. package/dist/composed/FormPatterns.cjs.map +1 -0
  588. package/dist/composed/FormPatterns.js +5 -0
  589. package/dist/composed/FormPatterns.js.map +1 -0
  590. package/dist/composed/MoleculeStructure.cjs +2 -0
  591. package/dist/composed/MoleculeStructure.cjs.map +1 -0
  592. package/dist/composed/MoleculeStructure.js +11 -0
  593. package/dist/composed/MoleculeStructure.js.map +1 -0
  594. package/dist/composed/PlateMapEditor.cjs +2 -0
  595. package/dist/composed/PlateMapEditor.cjs.map +1 -0
  596. package/dist/composed/PlateMapEditor.js +45 -0
  597. package/dist/composed/PlateMapEditor.js.map +1 -0
  598. package/dist/composed/ProcessFlow.cjs +2 -0
  599. package/dist/composed/ProcessFlow.cjs.map +1 -0
  600. package/dist/composed/ProcessFlow.js +7 -0
  601. package/dist/composed/ProcessFlow.js.map +1 -0
  602. package/dist/composed/RichListItem.cjs +2 -0
  603. package/dist/composed/RichListItem.cjs.map +1 -0
  604. package/dist/composed/RichListItem.js +6 -0
  605. package/dist/composed/RichListItem.js.map +1 -0
  606. package/dist/composed/StatCard.cjs +2 -0
  607. package/dist/composed/StatCard.cjs.map +1 -0
  608. package/dist/composed/StatCard.js +5 -0
  609. package/dist/composed/StatCard.js.map +1 -0
  610. package/dist/composed/TdpSearch.cjs +2 -0
  611. package/dist/composed/TdpSearch.cjs.map +1 -0
  612. package/dist/composed/TdpSearch.js +8 -0
  613. package/dist/composed/TdpSearch.js.map +1 -0
  614. package/dist/composed/TopBar.cjs +2 -0
  615. package/dist/composed/TopBar.cjs.map +1 -0
  616. package/dist/composed/TopBar.js +6 -0
  617. package/dist/composed/TopBar.js.map +1 -0
  618. package/dist/composed/UserMenu.cjs +2 -0
  619. package/dist/composed/UserMenu.cjs.map +1 -0
  620. package/dist/composed/UserMenu.js +7 -0
  621. package/dist/composed/UserMenu.js.map +1 -0
  622. package/dist/composed/tdp-link.cjs +2 -0
  623. package/dist/composed/tdp-link.cjs.map +1 -0
  624. package/dist/composed/tdp-link.js +84 -0
  625. package/dist/composed/tdp-link.js.map +1 -0
  626. package/dist/composed/tdp-url.cjs.map +1 -0
  627. package/dist/composed/tdp-url.js.map +1 -0
  628. package/dist/hooks/use-code-editor-theme.d.ts +34 -0
  629. package/dist/hooks/use-element-size.d.ts +25 -0
  630. package/dist/hooks/use-is-dark.d.ts +12 -0
  631. package/dist/hooks/use-mobile.d.ts +1 -0
  632. package/dist/hooks/use-plotly-theme.cjs +1 -1
  633. package/dist/hooks/use-plotly-theme.cjs.map +1 -1
  634. package/dist/hooks/use-plotly-theme.d.ts +49 -0
  635. package/dist/hooks/use-plotly-theme.js +4 -3
  636. package/dist/hooks/use-plotly-theme.js.map +1 -1
  637. package/dist/index.cjs +1 -1
  638. package/dist/index.css +1 -1
  639. package/dist/index.d.ts +102 -4404
  640. package/dist/index.js +698 -659
  641. package/dist/index.js.map +1 -1
  642. package/dist/index.tailwind.css +1 -1
  643. package/dist/jest-setup.cjs +4 -0
  644. package/dist/jest-setup.cjs.map +1 -0
  645. package/dist/jest-setup.d.ts +106 -0
  646. package/dist/jest-setup.js +218 -0
  647. package/dist/jest-setup.js.map +1 -0
  648. package/dist/lib/shiki.cjs +2 -0
  649. package/dist/lib/shiki.cjs.map +1 -0
  650. package/dist/lib/shiki.d.ts +32 -0
  651. package/dist/lib/shiki.js +72 -0
  652. package/dist/lib/shiki.js.map +1 -0
  653. package/dist/lib/utils.d.ts +2 -0
  654. package/dist/server/auth/JwtTokenManager.cjs +1 -1
  655. package/dist/server/auth/JwtTokenManager.cjs.map +1 -1
  656. package/dist/server/auth/JwtTokenManager.d.ts +113 -0
  657. package/dist/server/auth/JwtTokenManager.js +44 -21
  658. package/dist/server/auth/JwtTokenManager.js.map +1 -1
  659. package/dist/server/auth/index.d.ts +5 -0
  660. package/dist/server/index.d.ts +8 -0
  661. package/dist/server/providers/AthenaProvider.cjs +1 -1
  662. package/dist/server/providers/AthenaProvider.cjs.map +1 -1
  663. package/dist/server/providers/AthenaProvider.d.ts +75 -0
  664. package/dist/server/providers/DatabricksProvider.cjs +1 -1
  665. package/dist/server/providers/DatabricksProvider.cjs.map +1 -1
  666. package/dist/server/providers/DatabricksProvider.d.ts +38 -0
  667. package/dist/server/providers/SnowflakeProvider.cjs +1 -1
  668. package/dist/server/providers/SnowflakeProvider.cjs.map +1 -1
  669. package/dist/server/providers/SnowflakeProvider.d.ts +36 -0
  670. package/dist/server/providers/buildProvider.d.ts +39 -0
  671. package/dist/server/providers/entries/athena.d.ts +24 -0
  672. package/dist/server/providers/entries/databricks.d.ts +25 -0
  673. package/dist/server/providers/entries/snowflake.d.ts +25 -0
  674. package/dist/server/providers/exceptions.d.ts +36 -0
  675. package/dist/server/providers/getProviderConfigurations.d.ts +45 -0
  676. package/dist/server/providers/index.d.ts +31 -0
  677. package/dist/server/providers/providerDiscovery.d.ts +81 -0
  678. package/dist/server/providers/types.d.ts +145 -0
  679. package/dist/server/search/TdpSearchManager.d.ts +40 -0
  680. package/dist/server/search/index.d.ts +5 -0
  681. package/dist/server.d.ts +17 -540
  682. package/dist/ui/accordion.cjs +2 -0
  683. package/dist/ui/accordion.cjs.map +1 -0
  684. package/dist/ui/accordion.js +83 -0
  685. package/dist/ui/accordion.js.map +1 -0
  686. package/dist/ui/alert-dialog.cjs +2 -0
  687. package/dist/ui/alert-dialog.cjs.map +1 -0
  688. package/dist/ui/alert-dialog.js +181 -0
  689. package/dist/ui/alert-dialog.js.map +1 -0
  690. package/dist/ui/alert.cjs +2 -0
  691. package/dist/ui/alert.cjs.map +1 -0
  692. package/dist/ui/alert.js +81 -0
  693. package/dist/ui/alert.js.map +1 -0
  694. package/dist/ui/aspect-ratio.cjs.map +1 -0
  695. package/dist/ui/aspect-ratio.js.map +1 -0
  696. package/dist/ui/avatar.cjs +2 -0
  697. package/dist/ui/avatar.cjs.map +1 -0
  698. package/dist/ui/avatar.js +107 -0
  699. package/dist/ui/avatar.js.map +1 -0
  700. package/dist/ui/badge.cjs +2 -0
  701. package/dist/ui/badge.cjs.map +1 -0
  702. package/dist/ui/badge.js +47 -0
  703. package/dist/ui/badge.js.map +1 -0
  704. package/dist/ui/banner.cjs +2 -0
  705. package/dist/ui/banner.cjs.map +1 -0
  706. package/dist/ui/banner.js +80 -0
  707. package/dist/ui/banner.js.map +1 -0
  708. package/dist/ui/breadcrumb.cjs +2 -0
  709. package/dist/ui/breadcrumb.cjs.map +1 -0
  710. package/dist/ui/breadcrumb.js +118 -0
  711. package/dist/ui/breadcrumb.js.map +1 -0
  712. package/dist/ui/button-group.cjs +2 -0
  713. package/dist/ui/button-group.cjs.map +1 -0
  714. package/dist/ui/button-group.js +77 -0
  715. package/dist/ui/button-group.js.map +1 -0
  716. package/dist/ui/button.cjs +2 -0
  717. package/dist/ui/button.cjs.map +1 -0
  718. package/dist/ui/button.js +57 -0
  719. package/dist/ui/button.js.map +1 -0
  720. package/dist/ui/calendar.cjs +2 -0
  721. package/dist/ui/calendar.cjs.map +1 -0
  722. package/dist/ui/calendar.js +174 -0
  723. package/dist/ui/calendar.js.map +1 -0
  724. package/dist/ui/card.cjs +2 -0
  725. package/dist/ui/card.cjs.map +1 -0
  726. package/dist/ui/card.js +102 -0
  727. package/dist/ui/card.js.map +1 -0
  728. package/dist/ui/carousel.cjs +2 -0
  729. package/dist/ui/carousel.cjs.map +1 -0
  730. package/dist/ui/carousel.js +179 -0
  731. package/dist/ui/carousel.js.map +1 -0
  732. package/dist/ui/checkbox.cjs +2 -0
  733. package/dist/ui/checkbox.cjs.map +1 -0
  734. package/dist/ui/checkbox.js +35 -0
  735. package/dist/ui/checkbox.js.map +1 -0
  736. package/dist/ui/code-block.cjs +4 -0
  737. package/dist/ui/code-block.cjs.map +1 -0
  738. package/dist/ui/code-block.js +324 -0
  739. package/dist/ui/code-block.js.map +1 -0
  740. package/dist/ui/code-editor.cjs +2 -0
  741. package/dist/ui/code-editor.cjs.map +1 -0
  742. package/dist/ui/code-editor.js +106 -0
  743. package/dist/ui/code-editor.js.map +1 -0
  744. package/dist/ui/collapsible.cjs.map +1 -0
  745. package/dist/ui/collapsible.js.map +1 -0
  746. package/dist/ui/combobox.cjs +2 -0
  747. package/dist/ui/combobox.cjs.map +1 -0
  748. package/dist/ui/combobox.js +285 -0
  749. package/dist/ui/combobox.js.map +1 -0
  750. package/dist/ui/command.cjs +2 -0
  751. package/dist/ui/command.cjs.map +1 -0
  752. package/dist/ui/command.js +178 -0
  753. package/dist/ui/command.js.map +1 -0
  754. package/dist/ui/context-menu.cjs +2 -0
  755. package/dist/ui/context-menu.cjs.map +1 -0
  756. package/dist/ui/context-menu.js +236 -0
  757. package/dist/ui/context-menu.js.map +1 -0
  758. package/dist/ui/data-table.cjs +2 -0
  759. package/dist/ui/data-table.cjs.map +1 -0
  760. package/dist/ui/data-table.js +16 -0
  761. package/dist/ui/data-table.js.map +1 -0
  762. package/dist/ui/dialog.cjs +2 -0
  763. package/dist/ui/dialog.cjs.map +1 -0
  764. package/dist/ui/dialog.js +165 -0
  765. package/dist/ui/dialog.js.map +1 -0
  766. package/dist/ui/dropdown-menu.cjs +2 -0
  767. package/dist/ui/dropdown-menu.cjs.map +1 -0
  768. package/dist/ui/dropdown-menu.js +260 -0
  769. package/dist/ui/dropdown-menu.js.map +1 -0
  770. package/dist/ui/field.cjs +2 -0
  771. package/dist/ui/field.cjs.map +1 -0
  772. package/dist/ui/field.js +210 -0
  773. package/dist/ui/field.js.map +1 -0
  774. package/dist/ui/hover-card.cjs +2 -0
  775. package/dist/ui/hover-card.cjs.map +1 -0
  776. package/dist/ui/hover-card.js +39 -0
  777. package/dist/ui/hover-card.js.map +1 -0
  778. package/dist/ui/input-group.cjs +2 -0
  779. package/dist/ui/input-group.cjs.map +1 -0
  780. package/dist/ui/input-group.js +145 -0
  781. package/dist/ui/input-group.js.map +1 -0
  782. package/dist/ui/input.cjs +2 -0
  783. package/dist/ui/input.cjs.map +1 -0
  784. package/dist/ui/input.js +20 -0
  785. package/dist/ui/input.js.map +1 -0
  786. package/dist/ui/item.cjs +2 -0
  787. package/dist/ui/item.cjs.map +1 -0
  788. package/dist/ui/item.js +199 -0
  789. package/dist/ui/item.js.map +1 -0
  790. package/dist/ui/kbd.cjs +2 -0
  791. package/dist/ui/kbd.cjs.map +1 -0
  792. package/dist/ui/kbd.js +30 -0
  793. package/dist/ui/kbd.js.map +1 -0
  794. package/dist/ui/label.cjs +2 -0
  795. package/dist/ui/label.cjs.map +1 -0
  796. package/dist/ui/label.js +23 -0
  797. package/dist/ui/label.js.map +1 -0
  798. package/dist/ui/menubar.cjs +2 -0
  799. package/dist/ui/menubar.cjs.map +1 -0
  800. package/dist/ui/menubar.js +256 -0
  801. package/dist/ui/menubar.js.map +1 -0
  802. package/dist/ui/navigation-menu.cjs +2 -0
  803. package/dist/ui/navigation-menu.cjs.map +1 -0
  804. package/dist/ui/navigation-menu.js +164 -0
  805. package/dist/ui/navigation-menu.js.map +1 -0
  806. package/dist/ui/popover.cjs +2 -0
  807. package/dist/ui/popover.cjs.map +1 -0
  808. package/dist/ui/popover.js +45 -0
  809. package/dist/ui/popover.js.map +1 -0
  810. package/dist/ui/radio-group.cjs +2 -0
  811. package/dist/ui/radio-group.cjs.map +1 -0
  812. package/dist/ui/radio-group.js +45 -0
  813. package/dist/ui/radio-group.js.map +1 -0
  814. package/dist/ui/resizable.cjs +2 -0
  815. package/dist/ui/resizable.cjs.map +1 -0
  816. package/dist/ui/resizable.js +58 -0
  817. package/dist/ui/resizable.js.map +1 -0
  818. package/dist/ui/scroll-area.cjs +2 -0
  819. package/dist/ui/scroll-area.cjs.map +1 -0
  820. package/dist/ui/scroll-area.js +61 -0
  821. package/dist/ui/scroll-area.js.map +1 -0
  822. package/dist/ui/select.cjs +2 -0
  823. package/dist/ui/select.cjs.map +1 -0
  824. package/dist/ui/select.js +184 -0
  825. package/dist/ui/select.js.map +1 -0
  826. package/dist/ui/separator.cjs +2 -0
  827. package/dist/ui/separator.cjs.map +1 -0
  828. package/dist/ui/separator.js +27 -0
  829. package/dist/ui/separator.js.map +1 -0
  830. package/dist/ui/sheet.cjs +2 -0
  831. package/dist/ui/sheet.cjs.map +1 -0
  832. package/dist/ui/sheet.js +137 -0
  833. package/dist/ui/sheet.js.map +1 -0
  834. package/dist/ui/sidebar.cjs +2 -0
  835. package/dist/ui/sidebar.cjs.map +1 -0
  836. package/dist/ui/sidebar.js +579 -0
  837. package/dist/ui/sidebar.js.map +1 -0
  838. package/dist/ui/skeleton.cjs +2 -0
  839. package/dist/ui/skeleton.cjs.map +1 -0
  840. package/dist/ui/skeleton.js +24 -0
  841. package/dist/ui/skeleton.js.map +1 -0
  842. package/dist/ui/slider.cjs +2 -0
  843. package/dist/ui/slider.cjs.map +1 -0
  844. package/dist/ui/slider.js +61 -0
  845. package/dist/ui/slider.js.map +1 -0
  846. package/dist/ui/sonner.cjs +2 -0
  847. package/dist/ui/sonner.cjs.map +1 -0
  848. package/dist/ui/sonner.js +52 -0
  849. package/dist/ui/sonner.js.map +1 -0
  850. package/dist/ui/spinner.cjs +2 -0
  851. package/dist/ui/spinner.cjs.map +1 -0
  852. package/dist/ui/spinner.js +39 -0
  853. package/dist/ui/spinner.js.map +1 -0
  854. package/dist/ui/switch.cjs +2 -0
  855. package/dist/ui/switch.cjs.map +1 -0
  856. package/dist/ui/switch.js +32 -0
  857. package/dist/ui/switch.js.map +1 -0
  858. package/dist/ui/table.cjs +2 -0
  859. package/dist/ui/table.cjs.map +1 -0
  860. package/dist/ui/table.js +153 -0
  861. package/dist/ui/table.js.map +1 -0
  862. package/dist/ui/tabs.cjs +2 -0
  863. package/dist/ui/tabs.cjs.map +1 -0
  864. package/dist/ui/tabs.js +92 -0
  865. package/dist/ui/tabs.js.map +1 -0
  866. package/dist/ui/tetra-molecule-icon.cjs +2 -0
  867. package/dist/ui/tetra-molecule-icon.cjs.map +1 -0
  868. package/dist/ui/tetra-molecule-icon.js +50 -0
  869. package/dist/ui/tetra-molecule-icon.js.map +1 -0
  870. package/dist/ui/tetrascience-icon.cjs +2 -0
  871. package/dist/ui/tetrascience-icon.cjs.map +1 -0
  872. package/dist/ui/tetrascience-icon.js +47 -0
  873. package/dist/ui/tetrascience-icon.js.map +1 -0
  874. package/dist/ui/textarea.cjs +2 -0
  875. package/dist/ui/textarea.cjs.map +1 -0
  876. package/dist/ui/textarea.js +19 -0
  877. package/dist/ui/textarea.js.map +1 -0
  878. package/dist/ui/toggle-group.cjs +2 -0
  879. package/dist/ui/toggle-group.cjs.map +1 -0
  880. package/dist/ui/toggle-group.js +81 -0
  881. package/dist/ui/toggle-group.js.map +1 -0
  882. package/dist/ui/toggle.cjs +2 -0
  883. package/dist/ui/toggle.cjs.map +1 -0
  884. package/dist/ui/toggle.js +44 -0
  885. package/dist/ui/toggle.js.map +1 -0
  886. package/dist/ui/tooltip.cjs +2 -0
  887. package/dist/ui/tooltip.cjs.map +1 -0
  888. package/dist/ui/tooltip.js +56 -0
  889. package/dist/ui/tooltip.js.map +1 -0
  890. package/dist/utils/colors.d.ts +50 -0
  891. package/package.json +137 -24
  892. package/dist/athena.d.ts +0 -167
  893. package/dist/components/ai/attachments.cjs +0 -2
  894. package/dist/components/ai/attachments.cjs.map +0 -1
  895. package/dist/components/ai/attachments.js +0 -224
  896. package/dist/components/ai/attachments.js.map +0 -1
  897. package/dist/components/ai/chain-of-thought.cjs +0 -2
  898. package/dist/components/ai/chain-of-thought.cjs.map +0 -1
  899. package/dist/components/ai/chain-of-thought.js +0 -145
  900. package/dist/components/ai/chain-of-thought.js.map +0 -1
  901. package/dist/components/ai/confirmation.cjs +0 -2
  902. package/dist/components/ai/confirmation.cjs.map +0 -1
  903. package/dist/components/ai/confirmation.js +0 -109
  904. package/dist/components/ai/confirmation.js.map +0 -1
  905. package/dist/components/ai/context.cjs +0 -2
  906. package/dist/components/ai/context.cjs.map +0 -1
  907. package/dist/components/ai/context.js +0 -266
  908. package/dist/components/ai/context.js.map +0 -1
  909. package/dist/components/ai/conversation.cjs +0 -4
  910. package/dist/components/ai/conversation.cjs.map +0 -1
  911. package/dist/components/ai/conversation.js +0 -108
  912. package/dist/components/ai/conversation.js.map +0 -1
  913. package/dist/components/ai/inline-citation.cjs +0 -2
  914. package/dist/components/ai/inline-citation.cjs.map +0 -1
  915. package/dist/components/ai/inline-citation.js +0 -182
  916. package/dist/components/ai/inline-citation.js.map +0 -1
  917. package/dist/components/ai/message.cjs +0 -2
  918. package/dist/components/ai/message.cjs.map +0 -1
  919. package/dist/components/ai/message.js +0 -237
  920. package/dist/components/ai/message.js.map +0 -1
  921. package/dist/components/ai/model-selector.cjs +0 -2
  922. package/dist/components/ai/model-selector.cjs.map +0 -1
  923. package/dist/components/ai/model-selector.js +0 -77
  924. package/dist/components/ai/model-selector.js.map +0 -1
  925. package/dist/components/ai/prompt-input.cjs +0 -2
  926. package/dist/components/ai/prompt-input.cjs.map +0 -1
  927. package/dist/components/ai/prompt-input.js +0 -774
  928. package/dist/components/ai/prompt-input.js.map +0 -1
  929. package/dist/components/ai/queue.cjs +0 -2
  930. package/dist/components/ai/queue.cjs.map +0 -1
  931. package/dist/components/ai/queue.js +0 -209
  932. package/dist/components/ai/queue.js.map +0 -1
  933. package/dist/components/ai/reasoning.cjs +0 -2
  934. package/dist/components/ai/reasoning.cjs.map +0 -1
  935. package/dist/components/ai/reasoning.js +0 -129
  936. package/dist/components/ai/reasoning.js.map +0 -1
  937. package/dist/components/ai/shimmer.cjs +0 -2
  938. package/dist/components/ai/shimmer.cjs.map +0 -1
  939. package/dist/components/ai/shimmer.js +0 -49
  940. package/dist/components/ai/shimmer.js.map +0 -1
  941. package/dist/components/ai/sources.cjs +0 -2
  942. package/dist/components/ai/sources.cjs.map +0 -1
  943. package/dist/components/ai/sources.js +0 -54
  944. package/dist/components/ai/sources.js.map +0 -1
  945. package/dist/components/ai/speech-input.cjs +0 -2
  946. package/dist/components/ai/speech-input.cjs.map +0 -1
  947. package/dist/components/ai/speech-input.js +0 -123
  948. package/dist/components/ai/speech-input.js.map +0 -1
  949. package/dist/components/ai/stream-status.cjs +0 -2
  950. package/dist/components/ai/stream-status.cjs.map +0 -1
  951. package/dist/components/ai/stream-status.js +0 -106
  952. package/dist/components/ai/stream-status.js.map +0 -1
  953. package/dist/components/ai/suggestion.cjs +0 -2
  954. package/dist/components/ai/suggestion.cjs.map +0 -1
  955. package/dist/components/ai/suggestion.js +0 -38
  956. package/dist/components/ai/suggestion.js.map +0 -1
  957. package/dist/components/ai/task.cjs +0 -2
  958. package/dist/components/ai/task.cjs.map +0 -1
  959. package/dist/components/ai/task.js +0 -94
  960. package/dist/components/ai/task.js.map +0 -1
  961. package/dist/components/ai/tool.cjs +0 -2
  962. package/dist/components/ai/tool.cjs.map +0 -1
  963. package/dist/components/ai/tool.js +0 -143
  964. package/dist/components/ai/tool.js.map +0 -1
  965. package/dist/components/charts/AreaGraph/AreaGraph.cjs +0 -2
  966. package/dist/components/charts/AreaGraph/AreaGraph.cjs.map +0 -1
  967. package/dist/components/charts/AreaGraph/AreaGraph.js +0 -271
  968. package/dist/components/charts/AreaGraph/AreaGraph.js.map +0 -1
  969. package/dist/components/charts/BarGraph/BarGraph.cjs +0 -2
  970. package/dist/components/charts/BarGraph/BarGraph.cjs.map +0 -1
  971. package/dist/components/charts/BarGraph/BarGraph.js +0 -220
  972. package/dist/components/charts/BarGraph/BarGraph.js.map +0 -1
  973. package/dist/components/charts/Boxplot/Boxplot.cjs +0 -2
  974. package/dist/components/charts/Boxplot/Boxplot.cjs.map +0 -1
  975. package/dist/components/charts/Boxplot/Boxplot.js +0 -209
  976. package/dist/components/charts/Boxplot/Boxplot.js.map +0 -1
  977. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs +0 -2
  978. package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs.map +0 -1
  979. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js +0 -227
  980. package/dist/components/charts/ChromatogramChart/ChromatogramChart.js.map +0 -1
  981. package/dist/components/charts/ChromatogramChart/annotations.cjs +0 -2
  982. package/dist/components/charts/ChromatogramChart/annotations.cjs.map +0 -1
  983. package/dist/components/charts/ChromatogramChart/annotations.js +0 -73
  984. package/dist/components/charts/ChromatogramChart/annotations.js.map +0 -1
  985. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs +0 -2
  986. package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs.map +0 -1
  987. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js +0 -34
  988. package/dist/components/charts/ChromatogramChart/boundaryMarkers.js.map +0 -1
  989. package/dist/components/charts/ChromatogramChart/constants.cjs +0 -2
  990. package/dist/components/charts/ChromatogramChart/constants.cjs.map +0 -1
  991. package/dist/components/charts/ChromatogramChart/constants.js +0 -30
  992. package/dist/components/charts/ChromatogramChart/constants.js.map +0 -1
  993. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs +0 -2
  994. package/dist/components/charts/ChromatogramChart/dataProcessing.cjs.map +0 -1
  995. package/dist/components/charts/ChromatogramChart/dataProcessing.js +0 -79
  996. package/dist/components/charts/ChromatogramChart/dataProcessing.js.map +0 -1
  997. package/dist/components/charts/ChromatogramChart/peakDetection.cjs.map +0 -1
  998. package/dist/components/charts/ChromatogramChart/peakDetection.js.map +0 -1
  999. package/dist/components/charts/DotPlot/DotPlot.cjs +0 -2
  1000. package/dist/components/charts/DotPlot/DotPlot.cjs.map +0 -1
  1001. package/dist/components/charts/DotPlot/DotPlot.js +0 -208
  1002. package/dist/components/charts/DotPlot/DotPlot.js.map +0 -1
  1003. package/dist/components/charts/Heatmap/Heatmap.cjs +0 -2
  1004. package/dist/components/charts/Heatmap/Heatmap.cjs.map +0 -1
  1005. package/dist/components/charts/Heatmap/Heatmap.js +0 -67
  1006. package/dist/components/charts/Heatmap/Heatmap.js.map +0 -1
  1007. package/dist/components/charts/LineGraph/LineGraph.cjs +0 -2
  1008. package/dist/components/charts/LineGraph/LineGraph.cjs.map +0 -1
  1009. package/dist/components/charts/LineGraph/LineGraph.js +0 -225
  1010. package/dist/components/charts/LineGraph/LineGraph.js.map +0 -1
  1011. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs +0 -2
  1012. package/dist/components/charts/ScatterGraph/ScatterGraph.cjs.map +0 -1
  1013. package/dist/components/charts/ScatterGraph/ScatterGraph.js +0 -234
  1014. package/dist/components/charts/ScatterGraph/ScatterGraph.js.map +0 -1
  1015. package/dist/components/composed/tdp-link.cjs +0 -2
  1016. package/dist/components/composed/tdp-link.cjs.map +0 -1
  1017. package/dist/components/composed/tdp-link.js +0 -84
  1018. package/dist/components/composed/tdp-link.js.map +0 -1
  1019. package/dist/components/composed/tdp-url.cjs.map +0 -1
  1020. package/dist/components/composed/tdp-url.js.map +0 -1
  1021. package/dist/components/ui/accordion.cjs +0 -2
  1022. package/dist/components/ui/accordion.cjs.map +0 -1
  1023. package/dist/components/ui/accordion.js +0 -83
  1024. package/dist/components/ui/accordion.js.map +0 -1
  1025. package/dist/components/ui/alert-dialog.cjs +0 -2
  1026. package/dist/components/ui/alert-dialog.cjs.map +0 -1
  1027. package/dist/components/ui/alert-dialog.js +0 -181
  1028. package/dist/components/ui/alert-dialog.js.map +0 -1
  1029. package/dist/components/ui/alert.cjs +0 -2
  1030. package/dist/components/ui/alert.cjs.map +0 -1
  1031. package/dist/components/ui/alert.js +0 -81
  1032. package/dist/components/ui/alert.js.map +0 -1
  1033. package/dist/components/ui/aspect-ratio.cjs.map +0 -1
  1034. package/dist/components/ui/aspect-ratio.js.map +0 -1
  1035. package/dist/components/ui/avatar.cjs +0 -2
  1036. package/dist/components/ui/avatar.cjs.map +0 -1
  1037. package/dist/components/ui/avatar.js +0 -107
  1038. package/dist/components/ui/avatar.js.map +0 -1
  1039. package/dist/components/ui/badge.cjs +0 -2
  1040. package/dist/components/ui/badge.cjs.map +0 -1
  1041. package/dist/components/ui/badge.js +0 -47
  1042. package/dist/components/ui/badge.js.map +0 -1
  1043. package/dist/components/ui/banner.cjs +0 -2
  1044. package/dist/components/ui/banner.cjs.map +0 -1
  1045. package/dist/components/ui/banner.js +0 -80
  1046. package/dist/components/ui/banner.js.map +0 -1
  1047. package/dist/components/ui/breadcrumb.cjs +0 -2
  1048. package/dist/components/ui/breadcrumb.cjs.map +0 -1
  1049. package/dist/components/ui/breadcrumb.js +0 -118
  1050. package/dist/components/ui/breadcrumb.js.map +0 -1
  1051. package/dist/components/ui/button-group.cjs +0 -2
  1052. package/dist/components/ui/button-group.cjs.map +0 -1
  1053. package/dist/components/ui/button-group.js +0 -77
  1054. package/dist/components/ui/button-group.js.map +0 -1
  1055. package/dist/components/ui/button.cjs +0 -2
  1056. package/dist/components/ui/button.cjs.map +0 -1
  1057. package/dist/components/ui/button.js +0 -57
  1058. package/dist/components/ui/button.js.map +0 -1
  1059. package/dist/components/ui/calendar.cjs +0 -2
  1060. package/dist/components/ui/calendar.cjs.map +0 -1
  1061. package/dist/components/ui/calendar.js +0 -174
  1062. package/dist/components/ui/calendar.js.map +0 -1
  1063. package/dist/components/ui/card.cjs +0 -2
  1064. package/dist/components/ui/card.cjs.map +0 -1
  1065. package/dist/components/ui/card.js +0 -102
  1066. package/dist/components/ui/card.js.map +0 -1
  1067. package/dist/components/ui/carousel.cjs +0 -2
  1068. package/dist/components/ui/carousel.cjs.map +0 -1
  1069. package/dist/components/ui/carousel.js +0 -179
  1070. package/dist/components/ui/carousel.js.map +0 -1
  1071. package/dist/components/ui/checkbox.cjs +0 -2
  1072. package/dist/components/ui/checkbox.cjs.map +0 -1
  1073. package/dist/components/ui/checkbox.js +0 -35
  1074. package/dist/components/ui/checkbox.js.map +0 -1
  1075. package/dist/components/ui/code-block.cjs +0 -4
  1076. package/dist/components/ui/code-block.cjs.map +0 -1
  1077. package/dist/components/ui/code-block.js +0 -306
  1078. package/dist/components/ui/code-block.js.map +0 -1
  1079. package/dist/components/ui/code-editor.cjs +0 -2
  1080. package/dist/components/ui/code-editor.cjs.map +0 -1
  1081. package/dist/components/ui/code-editor.js +0 -103
  1082. package/dist/components/ui/code-editor.js.map +0 -1
  1083. package/dist/components/ui/collapsible.cjs.map +0 -1
  1084. package/dist/components/ui/collapsible.js.map +0 -1
  1085. package/dist/components/ui/combobox.cjs +0 -2
  1086. package/dist/components/ui/combobox.cjs.map +0 -1
  1087. package/dist/components/ui/combobox.js +0 -281
  1088. package/dist/components/ui/combobox.js.map +0 -1
  1089. package/dist/components/ui/command.cjs +0 -2
  1090. package/dist/components/ui/command.cjs.map +0 -1
  1091. package/dist/components/ui/command.js +0 -174
  1092. package/dist/components/ui/command.js.map +0 -1
  1093. package/dist/components/ui/context-menu.cjs +0 -2
  1094. package/dist/components/ui/context-menu.cjs.map +0 -1
  1095. package/dist/components/ui/context-menu.js +0 -236
  1096. package/dist/components/ui/context-menu.js.map +0 -1
  1097. package/dist/components/ui/dialog.cjs +0 -2
  1098. package/dist/components/ui/dialog.cjs.map +0 -1
  1099. package/dist/components/ui/dialog.js +0 -165
  1100. package/dist/components/ui/dialog.js.map +0 -1
  1101. package/dist/components/ui/drawer.cjs +0 -2
  1102. package/dist/components/ui/drawer.cjs.map +0 -1
  1103. package/dist/components/ui/drawer.js +0 -125
  1104. package/dist/components/ui/drawer.js.map +0 -1
  1105. package/dist/components/ui/dropdown-menu.cjs +0 -2
  1106. package/dist/components/ui/dropdown-menu.cjs.map +0 -1
  1107. package/dist/components/ui/dropdown-menu.js +0 -252
  1108. package/dist/components/ui/dropdown-menu.js.map +0 -1
  1109. package/dist/components/ui/field.cjs +0 -2
  1110. package/dist/components/ui/field.cjs.map +0 -1
  1111. package/dist/components/ui/field.js +0 -210
  1112. package/dist/components/ui/field.js.map +0 -1
  1113. package/dist/components/ui/hover-card.cjs +0 -2
  1114. package/dist/components/ui/hover-card.cjs.map +0 -1
  1115. package/dist/components/ui/hover-card.js +0 -39
  1116. package/dist/components/ui/hover-card.js.map +0 -1
  1117. package/dist/components/ui/input-group.cjs +0 -2
  1118. package/dist/components/ui/input-group.cjs.map +0 -1
  1119. package/dist/components/ui/input-group.js +0 -145
  1120. package/dist/components/ui/input-group.js.map +0 -1
  1121. package/dist/components/ui/input-otp.cjs +0 -2
  1122. package/dist/components/ui/input-otp.cjs.map +0 -1
  1123. package/dist/components/ui/input-otp.js +0 -82
  1124. package/dist/components/ui/input-otp.js.map +0 -1
  1125. package/dist/components/ui/input.cjs +0 -2
  1126. package/dist/components/ui/input.cjs.map +0 -1
  1127. package/dist/components/ui/input.js +0 -20
  1128. package/dist/components/ui/input.js.map +0 -1
  1129. package/dist/components/ui/item.cjs +0 -2
  1130. package/dist/components/ui/item.cjs.map +0 -1
  1131. package/dist/components/ui/item.js +0 -191
  1132. package/dist/components/ui/item.js.map +0 -1
  1133. package/dist/components/ui/kbd.cjs +0 -2
  1134. package/dist/components/ui/kbd.cjs.map +0 -1
  1135. package/dist/components/ui/kbd.js +0 -30
  1136. package/dist/components/ui/kbd.js.map +0 -1
  1137. package/dist/components/ui/label.cjs +0 -2
  1138. package/dist/components/ui/label.cjs.map +0 -1
  1139. package/dist/components/ui/label.js +0 -23
  1140. package/dist/components/ui/label.js.map +0 -1
  1141. package/dist/components/ui/menubar.cjs +0 -2
  1142. package/dist/components/ui/menubar.cjs.map +0 -1
  1143. package/dist/components/ui/menubar.js +0 -256
  1144. package/dist/components/ui/menubar.js.map +0 -1
  1145. package/dist/components/ui/navigation-menu.cjs +0 -2
  1146. package/dist/components/ui/navigation-menu.cjs.map +0 -1
  1147. package/dist/components/ui/navigation-menu.js +0 -164
  1148. package/dist/components/ui/navigation-menu.js.map +0 -1
  1149. package/dist/components/ui/popover.cjs +0 -2
  1150. package/dist/components/ui/popover.cjs.map +0 -1
  1151. package/dist/components/ui/popover.js +0 -45
  1152. package/dist/components/ui/popover.js.map +0 -1
  1153. package/dist/components/ui/radio-group.cjs +0 -2
  1154. package/dist/components/ui/radio-group.cjs.map +0 -1
  1155. package/dist/components/ui/radio-group.js +0 -45
  1156. package/dist/components/ui/radio-group.js.map +0 -1
  1157. package/dist/components/ui/resizable.cjs +0 -2
  1158. package/dist/components/ui/resizable.cjs.map +0 -1
  1159. package/dist/components/ui/resizable.js +0 -58
  1160. package/dist/components/ui/resizable.js.map +0 -1
  1161. package/dist/components/ui/scroll-area.cjs +0 -2
  1162. package/dist/components/ui/scroll-area.cjs.map +0 -1
  1163. package/dist/components/ui/scroll-area.js +0 -60
  1164. package/dist/components/ui/scroll-area.js.map +0 -1
  1165. package/dist/components/ui/select.cjs +0 -2
  1166. package/dist/components/ui/select.cjs.map +0 -1
  1167. package/dist/components/ui/select.js +0 -184
  1168. package/dist/components/ui/select.js.map +0 -1
  1169. package/dist/components/ui/separator.cjs +0 -2
  1170. package/dist/components/ui/separator.cjs.map +0 -1
  1171. package/dist/components/ui/separator.js +0 -27
  1172. package/dist/components/ui/separator.js.map +0 -1
  1173. package/dist/components/ui/sheet.cjs +0 -2
  1174. package/dist/components/ui/sheet.cjs.map +0 -1
  1175. package/dist/components/ui/sheet.js +0 -137
  1176. package/dist/components/ui/sheet.js.map +0 -1
  1177. package/dist/components/ui/sidebar.cjs +0 -2
  1178. package/dist/components/ui/sidebar.cjs.map +0 -1
  1179. package/dist/components/ui/sidebar.js +0 -579
  1180. package/dist/components/ui/sidebar.js.map +0 -1
  1181. package/dist/components/ui/skeleton.cjs +0 -2
  1182. package/dist/components/ui/skeleton.cjs.map +0 -1
  1183. package/dist/components/ui/skeleton.js +0 -24
  1184. package/dist/components/ui/skeleton.js.map +0 -1
  1185. package/dist/components/ui/slider.cjs +0 -2
  1186. package/dist/components/ui/slider.cjs.map +0 -1
  1187. package/dist/components/ui/slider.js +0 -60
  1188. package/dist/components/ui/slider.js.map +0 -1
  1189. package/dist/components/ui/sonner.cjs +0 -2
  1190. package/dist/components/ui/sonner.cjs.map +0 -1
  1191. package/dist/components/ui/sonner.js +0 -37
  1192. package/dist/components/ui/sonner.js.map +0 -1
  1193. package/dist/components/ui/spinner.cjs +0 -2
  1194. package/dist/components/ui/spinner.cjs.map +0 -1
  1195. package/dist/components/ui/spinner.js +0 -39
  1196. package/dist/components/ui/spinner.js.map +0 -1
  1197. package/dist/components/ui/switch.cjs +0 -2
  1198. package/dist/components/ui/switch.cjs.map +0 -1
  1199. package/dist/components/ui/switch.js +0 -32
  1200. package/dist/components/ui/switch.js.map +0 -1
  1201. package/dist/components/ui/table.cjs +0 -2
  1202. package/dist/components/ui/table.cjs.map +0 -1
  1203. package/dist/components/ui/table.js +0 -152
  1204. package/dist/components/ui/table.js.map +0 -1
  1205. package/dist/components/ui/tabs.cjs +0 -2
  1206. package/dist/components/ui/tabs.cjs.map +0 -1
  1207. package/dist/components/ui/tabs.js +0 -92
  1208. package/dist/components/ui/tabs.js.map +0 -1
  1209. package/dist/components/ui/tetrascience-icon.cjs +0 -2
  1210. package/dist/components/ui/tetrascience-icon.cjs.map +0 -1
  1211. package/dist/components/ui/tetrascience-icon.js +0 -46
  1212. package/dist/components/ui/tetrascience-icon.js.map +0 -1
  1213. package/dist/components/ui/textarea.cjs +0 -2
  1214. package/dist/components/ui/textarea.cjs.map +0 -1
  1215. package/dist/components/ui/textarea.js +0 -19
  1216. package/dist/components/ui/textarea.js.map +0 -1
  1217. package/dist/components/ui/toggle-group.cjs +0 -2
  1218. package/dist/components/ui/toggle-group.cjs.map +0 -1
  1219. package/dist/components/ui/toggle-group.js +0 -77
  1220. package/dist/components/ui/toggle-group.js.map +0 -1
  1221. package/dist/components/ui/toggle.cjs +0 -2
  1222. package/dist/components/ui/toggle.cjs.map +0 -1
  1223. package/dist/components/ui/toggle.js +0 -44
  1224. package/dist/components/ui/toggle.js.map +0 -1
  1225. package/dist/components/ui/tooltip.cjs +0 -2
  1226. package/dist/components/ui/tooltip.cjs.map +0 -1
  1227. package/dist/components/ui/tooltip.js +0 -56
  1228. package/dist/components/ui/tooltip.js.map +0 -1
  1229. package/dist/databricks.d.ts +0 -129
  1230. package/dist/providers/athena.d.ts +0 -9
  1231. package/dist/providers/databricks.d.ts +0 -9
  1232. package/dist/providers/snowflake.d.ts +0 -9
  1233. package/dist/snowflake.d.ts +0 -125
  1234. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.cjs +0 -0
  1235. /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.js +0 -0
  1236. /package/dist/{components/composed → composed}/tdp-url.cjs +0 -0
  1237. /package/dist/{components/composed → composed}/tdp-url.js +0 -0
  1238. /package/dist/{components/ui → ui}/aspect-ratio.cjs +0 -0
  1239. /package/dist/{components/ui → ui}/aspect-ratio.js +0 -0
  1240. /package/dist/{components/ui → ui}/collapsible.cjs +0 -0
  1241. /package/dist/{components/ui → ui}/collapsible.js +0 -0
@@ -1,178 +1,240 @@
1
- import { jsx as p, jsxs as G } from "react/jsx-runtime";
2
- import L from "plotly.js-dist";
3
- import { useRef as F, useMemo as s, useEffect as $ } from "react";
4
- import { useChartTooltip as D } from "../ChartTooltip/ChartTooltip.js";
5
- import { usePlotlyTheme as H } from "../../../hooks/use-plotly-theme.js";
6
- import { CHART_COLORS as b } from "../../../utils/colors.js";
7
- /* empty css */
8
- const I = 75, V = 1.05, z = (e) => {
9
- const r = {
10
- A: e.peakA,
11
- T: e.peakT,
12
- G: e.peakG,
13
- C: e.peakC
14
- }, m = Object.values(r);
15
- if (m.every((a) => a === m[0]))
16
- return "";
17
- let h = "", u = 0;
18
- return Object.entries(r).forEach(([a, f]) => {
19
- f > u && (h = a, u = f);
20
- }), h;
21
- }, ee = ({
22
- data: e = [],
23
- width: r = 900,
24
- height: m = 600,
25
- positionInterval: x = 10,
26
- colorA: h = b[0],
27
- // blue
28
- colorT: u = b[2],
29
- // teal/green
30
- colorG: a = b[3],
31
- // red
32
- colorC: f = b[1]
33
- // orange
1
+ import { jsx as _, jsxs as se } from "react/jsx-runtime";
2
+ import { useRef as h, useMemo as f, useEffect as ne } from "react";
3
+ import { useChartTooltip as de } from "../ChartTooltip/ChartTooltip.js";
4
+ import { loadPlotly as fe, getLoadedPlotly as ce } from "../plotly-loader.js";
5
+ import { resolveSelectionAppearance as ie, groupOverlappingPeaks as pe, createGroupAnnotations as me } from "./annotations.js";
6
+ import { validateSeriesData as he, applyBaselineCorrection as ye, processUserAnnotations as ge } from "./dataProcessing.js";
7
+ import { detectPeaks as ve } from "./peakDetection.js";
8
+ import { buildTraceData as ke, buildLayout as Ee, buildConfig as be, createClickHandler as Ce, createHoverHandler as Ne, createUnhoverHandler as Pe } from "./plotBuilder.js";
9
+ import { EmptyState as Le } from "../../composed/EmptyState/EmptyState.js";
10
+ import { usePlotlyTheme as $e } from "../../../hooks/use-plotly-theme.js";
11
+ const Re = [], qe = ({
12
+ series: n,
13
+ width: y = 900,
14
+ height: g = 500,
15
+ title: H,
16
+ xAxisTitle: v = "Retention Time (min)",
17
+ yAxisTitle: k = "Signal (mAU)",
18
+ annotations: E = Re,
19
+ xRange: j,
20
+ yRange: B,
21
+ showLegend: D = !0,
22
+ showGridX: M = !0,
23
+ showGridY: U = !0,
24
+ showMarkers: W = !1,
25
+ markerSize: A = 4,
26
+ showCrosshairs: q = !1,
27
+ baselineCorrection: F = "none",
28
+ baselineWindowSize: I = 50,
29
+ peakDetectionOptions: i,
30
+ showPeakAreas: N = !1,
31
+ boundaryMarkers: J = "none",
32
+ annotationOverlapThreshold: P = 0.4,
33
+ showExportButton: K = !0,
34
+ selectedPeakIds: L,
35
+ onPeakClick: Q,
36
+ onPeakHover: T,
37
+ selectionAppearance: p,
38
+ annotationStyle: V = "arrow",
39
+ titleFontSize: Y = 20,
40
+ titleTopMargin: Z
34
41
  }) => {
35
- const g = F(null), y = H(), { bindTooltip: M, tooltipElement: B } = D({
36
- xLabel: "Position",
37
- yLabel: "Intensity"
38
- }), n = s(() => e.map((t) => t.position), [e]), R = s(() => e.map((t) => z(t)), [e]), T = s(() => e.map((t) => t.peakA), [e]), k = s(() => e.map((t) => t.peakT), [e]), P = s(() => e.map((t) => t.peakG), [e]), v = s(() => e.map((t) => t.peakC), [e]), q = s(
39
- () => ({
40
- x: n,
41
- y: T,
42
- type: "scatter",
43
- mode: "lines",
44
- hoverinfo: "none",
45
- name: "A",
46
- line: { color: h, width: 2, shape: "spline" }
47
- }),
48
- [n, T, h]
49
- ), w = s(
50
- () => ({
51
- x: n,
52
- y: k,
53
- type: "scatter",
54
- mode: "lines",
55
- hoverinfo: "none",
56
- name: "T",
57
- line: { color: u, width: 2, shape: "spline" }
58
- }),
59
- [n, k, u]
60
- ), A = s(
61
- () => ({
62
- x: n,
63
- y: P,
64
- type: "scatter",
65
- mode: "lines",
66
- hoverinfo: "none",
67
- name: "G",
68
- line: { color: a, width: 2, shape: "spline" }
69
- }),
70
- [n, P, a]
71
- ), E = s(
72
- () => ({
73
- x: n,
74
- y: v,
75
- type: "scatter",
76
- mode: "lines",
77
- hoverinfo: "none",
78
- name: "C",
79
- line: { color: f, width: 2, shape: "spline" }
80
- }),
81
- [n, v, f]
82
- ), _ = s(
83
- () => Math.max(...T, ...k, ...P, ...v),
84
- [T, k, P, v]
85
- );
86
- return $(() => {
87
- if (!g.current || e.length === 0) return;
88
- const t = [q, w, A, E], N = {
89
- width: r,
90
- height: m - I,
91
- margin: { l: 0, r: 0, b: 20, t: 10, pad: 0 },
92
- paper_bgcolor: y.paperBg,
93
- plot_bgcolor: y.plotBg,
94
- font: {
95
- family: "Inter, sans-serif"
96
- },
97
- showlegend: !1,
98
- xaxis: {
99
- showgrid: !1,
100
- zeroline: !1,
101
- showticklabels: !1,
102
- showline: !1,
103
- range: [Math.min(...n), Math.max(...n)],
104
- fixedrange: !0
105
- },
106
- yaxis: {
107
- showgrid: !1,
108
- zeroline: !1,
109
- showticklabels: !1,
110
- showline: !1,
111
- range: [0, _ * V],
112
- fixedrange: !0
113
- }
114
- }, i = {
115
- responsive: !0,
116
- displayModeBar: !1,
117
- displaylogo: !1,
118
- fillFrame: !0
42
+ const m = i !== void 0, b = h(null), G = $e(), { bindTooltip: X, tooltipElement: le } = de({
43
+ xLabel: v,
44
+ yLabel: k
45
+ }), x = h(Q), $ = h(T);
46
+ x.current = Q, $.current = T;
47
+ const R = h(null), O = h([]), c = f(() => n.map((e) => {
48
+ const t = he(e.x, e.y);
49
+ return {
50
+ ...e,
51
+ x: t.x,
52
+ y: ye(t.y, F, I)
119
53
  };
120
- L.newPlot(g.current, t, N, i), M(g.current);
121
- const l = g.current;
122
- return () => {
123
- l && L.purge(l);
54
+ }), [n, F, I]), u = f(() => {
55
+ if (E.length === 0 || c.length === 0)
56
+ return E;
57
+ const { x: e, y: t } = c[0];
58
+ return ge(E, e, t);
59
+ }, [E, c]), s = f(() => {
60
+ const e = [];
61
+ return m && i && c.forEach((t, o) => {
62
+ const l = ve(t.x, t.y, i);
63
+ l.length > 0 && e.push({ peaks: l, seriesIndex: o });
64
+ }), e;
65
+ }, [c, m, i]), z = p?.selected?.borderColor, w = p?.selected?.backgroundColor, ee = p?.selected?.bold, te = p?.unselected?.opacity, oe = p?.hoverLineWidthMultiplier, C = f(
66
+ () => ie({
67
+ selected: {
68
+ borderColor: z,
69
+ backgroundColor: w,
70
+ bold: ee
71
+ },
72
+ unselected: { opacity: te },
73
+ hoverLineWidthMultiplier: oe
74
+ }),
75
+ [
76
+ z,
77
+ w,
78
+ ee,
79
+ te,
80
+ oe
81
+ ]
82
+ ), re = f(() => {
83
+ const e = [];
84
+ return u.forEach((t, o) => {
85
+ e.push({
86
+ peak: { ...t, id: t.id ?? `user-ann-${o}` },
87
+ seriesIndex: 0,
88
+ seriesName: n[0]?.name ?? "",
89
+ isAutoDetected: !1
90
+ });
91
+ }), s.forEach(({ peaks: t, seriesIndex: o }) => {
92
+ t.forEach((l, a) => {
93
+ e.push({
94
+ peak: { ...l, id: `peak-${o}-${a}` },
95
+ seriesIndex: o,
96
+ seriesName: n[o]?.name ?? `Series ${o + 1}`,
97
+ isAutoDetected: !0
98
+ });
99
+ });
100
+ }), e;
101
+ }, [u, s, n]), S = f(() => {
102
+ const e = (L?.length ?? 0) > 0, t = {
103
+ selectedPeakIds: L ?? [],
104
+ anySelected: e,
105
+ appearance: C,
106
+ annotationStyle: V
107
+ }, o = [];
108
+ u.forEach((r, d) => {
109
+ o.push({
110
+ peak: { ...r, id: r.id ?? `user-ann-${d}` },
111
+ seriesIndex: -1
112
+ });
113
+ }), N && m && s.forEach(({ peaks: r, seriesIndex: d }) => {
114
+ r.forEach((ae, ue) => {
115
+ o.push({
116
+ peak: { ...ae, id: `peak-${d}-${ue}` },
117
+ seriesIndex: d
118
+ });
119
+ });
120
+ });
121
+ const l = pe(o, P), a = [];
122
+ for (const r of l)
123
+ a.push(...me(r, t));
124
+ return a;
125
+ }, [
126
+ u,
127
+ s,
128
+ N,
129
+ m,
130
+ P,
131
+ L,
132
+ C,
133
+ V
134
+ ]);
135
+ return O.current = S, ne(() => {
136
+ const e = b.current;
137
+ if (!e || n.length === 0) return;
138
+ const t = ke({
139
+ processedSeries: c,
140
+ processedAnnotations: u,
141
+ allDetectedPeaks: s,
142
+ allPeaksForInteraction: re,
143
+ showMarkers: W,
144
+ markerSize: A,
145
+ xAxisTitle: v,
146
+ yAxisTitle: k,
147
+ boundaryMarkers: J
148
+ }), o = Ee({
149
+ title: H,
150
+ titleFontSize: Y,
151
+ titleTopMargin: Z,
152
+ width: y,
153
+ height: g,
154
+ xAxisTitle: v,
155
+ yAxisTitle: k,
156
+ xRange: j,
157
+ yRange: B,
158
+ showLegend: D,
159
+ seriesCount: n.length,
160
+ showGridX: M,
161
+ showGridY: U,
162
+ showCrosshairs: q,
163
+ theme: G,
164
+ peakAnnotations: O.current
165
+ }), l = be({ showExportButton: K, width: y, height: g });
166
+ let a = !1, r = null;
167
+ return fe().then((d) => {
168
+ a || !b.current || (d.newPlot(e, t, o, l), X(e), e.on(
169
+ "plotly_click",
170
+ Ce(x)
171
+ ), e.on(
172
+ "plotly_hover",
173
+ Ne(e, c.length, R, $, C.hoverLineWidthMultiplier)
174
+ ), e.on(
175
+ "plotly_unhover",
176
+ Pe(e, R, $)
177
+ ), r = e);
178
+ }), () => {
179
+ a = !0, R.current = null, r && ce().purge(r);
124
180
  };
125
- }, [e, r, m, q, w, A, E, _, n, y, M]), e.length === 0 ? /* @__PURE__ */ p("div", { className: "chart-container", children: "No data available" }) : /* @__PURE__ */ G("div", { className: "chromatogram-container relative", style: { width: r, height: m }, children: [
126
- (() => {
127
- const t = () => {
128
- const i = Math.min(...n), l = Math.max(...n), C = r;
129
- return /* @__PURE__ */ p("div", { className: "sequence-letters-container", children: R.map((c, d) => {
130
- const o = n[d], O = c === "A" ? h : c === "T" ? u : c === "G" ? a : c === "C" ? f : y.textColor, j = (o - i) / (l - i) * C;
131
- return /* @__PURE__ */ p(
132
- "span",
133
- {
134
- className: "sequence-letter",
135
- style: {
136
- left: `${j}px`,
137
- color: O
138
- },
139
- children: c
140
- },
141
- `base-${d}`
142
- );
143
- }) });
144
- }, N = () => {
145
- const i = Math.min(...n), l = Math.max(...n), C = r, c = Math.ceil(i / x) * x, d = [];
146
- for (let o = c; o <= l; o += x)
147
- d.push({
148
- position: o,
149
- label: o.toString()
150
- });
151
- return /* @__PURE__ */ p("div", { className: "position-numbers-container", children: d.map((o) => {
152
- const S = (o.position - i) / (l - i) * C;
153
- return /* @__PURE__ */ p(
154
- "span",
155
- {
156
- className: "position-number",
157
- style: {
158
- left: `${S}px`
159
- },
160
- children: o.label
161
- },
162
- `pos-${o.position}`
163
- );
164
- }) });
165
- };
166
- return /* @__PURE__ */ G("div", { className: "sequence-header", children: [
167
- t(),
168
- N()
169
- ] });
170
- })(),
171
- /* @__PURE__ */ p("div", { className: "chromatogram-chart", children: /* @__PURE__ */ p("div", { ref: g, style: { width: "100%", height: "100%" } }) }),
172
- B
181
+ }, [
182
+ c,
183
+ s,
184
+ re,
185
+ n.length,
186
+ y,
187
+ g,
188
+ H,
189
+ Y,
190
+ Z,
191
+ v,
192
+ k,
193
+ u,
194
+ j,
195
+ B,
196
+ D,
197
+ M,
198
+ U,
199
+ W,
200
+ A,
201
+ q,
202
+ m,
203
+ i,
204
+ N,
205
+ J,
206
+ P,
207
+ K,
208
+ G,
209
+ X,
210
+ // resolvedAppearance included so hover multiplier stays in sync with the
211
+ // event handler closure without it being in a ref itself.
212
+ C
213
+ ]), ne(() => {
214
+ const e = b.current;
215
+ e && e._fullLayout && ce().relayout(e, {
216
+ annotations: S
217
+ });
218
+ }, [S]), n.length === 0 ? /* @__PURE__ */ _(
219
+ "div",
220
+ {
221
+ className: "chromatogram-chart-container relative flex items-center justify-center",
222
+ style: { width: y, height: g },
223
+ children: /* @__PURE__ */ _(
224
+ Le,
225
+ {
226
+ variant: "no-data",
227
+ title: "No chromatogram data",
228
+ description: "There is no signal data to display yet."
229
+ }
230
+ )
231
+ }
232
+ ) : /* @__PURE__ */ se("div", { className: "chromatogram-chart-container relative", children: [
233
+ /* @__PURE__ */ _("div", { ref: b, style: { width: "100%", height: "100%" } }),
234
+ le
173
235
  ] });
174
236
  };
175
237
  export {
176
- ee as Chromatogram
238
+ qe as Chromatogram
177
239
  };
178
240
  //# sourceMappingURL=Chromatogram.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chromatogram.js","sources":["../../../../src/components/charts/Chromatogram/Chromatogram.tsx"],"sourcesContent":["import Plotly from \"plotly.js-dist\";\nimport React, { useEffect, useRef, useMemo } from \"react\";\n\nimport { useChartTooltip } from \"../ChartTooltip\";\n\nimport { usePlotlyTheme } from \"@/hooks/use-plotly-theme\";\nimport { CHART_COLORS } from \"@/utils/colors\";\nimport \"./Chromatogram.scss\";\n\n/** Height offset for the plot area in pixels */\nconst PLOT_HEIGHT_OFFSET = 75;\n/** Scale factor for y-axis range to add padding above max value */\nconst Y_AXIS_PADDING_FACTOR = 1.05;\n\ninterface PeakData {\n position: number;\n base?: string;\n peakA: number;\n peakT: number;\n peakG: number;\n peakC: number;\n}\n\ninterface ChromatogramProps {\n data?: PeakData[];\n width?: number;\n height?: number;\n positionInterval?: number;\n colorA?: string;\n colorT?: string;\n colorG?: string;\n colorC?: string;\n}\n\nconst determineBase = (item: PeakData): string => {\n const peakValues = {\n A: item.peakA,\n T: item.peakT,\n G: item.peakG,\n C: item.peakC,\n };\n\n const values = Object.values(peakValues);\n const allEqual = values.every((val) => val === values[0]);\n\n if (allEqual) {\n return \"\";\n }\n\n let highestBase = \"\";\n let highestValue = 0;\n\n Object.entries(peakValues).forEach(([base, value]) => {\n if (value > highestValue) {\n highestBase = base;\n highestValue = value;\n }\n });\n\n return highestBase;\n};\n\nconst Chromatogram: React.FC<ChromatogramProps> = ({\n data = [],\n width = 900,\n height = 600,\n positionInterval = 10,\n colorA = CHART_COLORS[0], // blue\n colorT = CHART_COLORS[2], // teal/green\n colorG = CHART_COLORS[3], // red\n colorC = CHART_COLORS[1], // orange\n}) => {\n const plotRef = useRef<HTMLDivElement>(null);\n const theme = usePlotlyTheme();\n const { bindTooltip, tooltipElement } = useChartTooltip({\n xLabel: \"Position\",\n yLabel: \"Intensity\",\n });\n\n const positions = useMemo(() => data.map((item) => item.position), [data]);\n const sequence = useMemo(() => data.map((item) => determineBase(item)), [data]);\n const peakA = useMemo(() => data.map((item) => item.peakA), [data]);\n const peakT = useMemo(() => data.map((item) => item.peakT), [data]);\n const peakG = useMemo(() => data.map((item) => item.peakG), [data]);\n const peakC = useMemo(() => data.map((item) => item.peakC), [data]);\n\n const aTrace = useMemo(\n () => ({\n x: positions,\n y: peakA,\n type: \"scatter\" as const,\n mode: \"lines\" as const,\n hoverinfo: \"none\" as const,\n name: \"A\",\n line: { color: colorA, width: 2, shape: \"spline\" as const },\n }),\n [positions, peakA, colorA],\n );\n\n const tTrace = useMemo(\n () => ({\n x: positions,\n y: peakT,\n type: \"scatter\" as const,\n mode: \"lines\" as const,\n hoverinfo: \"none\" as const,\n name: \"T\",\n line: { color: colorT, width: 2, shape: \"spline\" as const },\n }),\n [positions, peakT, colorT],\n );\n\n const gTrace = useMemo(\n () => ({\n x: positions,\n y: peakG,\n type: \"scatter\" as const,\n mode: \"lines\" as const,\n hoverinfo: \"none\" as const,\n name: \"G\",\n line: { color: colorG, width: 2, shape: \"spline\" as const },\n }),\n [positions, peakG, colorG],\n );\n\n const cTrace = useMemo(\n () => ({\n x: positions,\n y: peakC,\n type: \"scatter\" as const,\n mode: \"lines\" as const,\n hoverinfo: \"none\" as const,\n name: \"C\",\n line: { color: colorC, width: 2, shape: \"spline\" as const },\n }),\n [positions, peakC, colorC],\n );\n\n const maxValue = useMemo(\n () => Math.max(...peakA, ...peakT, ...peakG, ...peakC),\n [peakA, peakT, peakG, peakC],\n );\n\n useEffect(() => {\n if (!plotRef.current || data.length === 0) return;\n\n const plotData = [aTrace, tTrace, gTrace, cTrace];\n\n const layout: Partial<Plotly.Layout> = {\n width: width,\n height: height - PLOT_HEIGHT_OFFSET,\n margin: { l: 0, r: 0, b: 20, t: 10, pad: 0 },\n paper_bgcolor: theme.paperBg,\n plot_bgcolor: theme.plotBg,\n font: {\n family: \"Inter, sans-serif\",\n },\n showlegend: false,\n xaxis: {\n showgrid: false,\n zeroline: false,\n showticklabels: false,\n showline: false,\n range: [Math.min(...positions), Math.max(...positions)],\n fixedrange: true,\n },\n yaxis: {\n showgrid: false,\n zeroline: false,\n showticklabels: false,\n showline: false,\n range: [0, maxValue * Y_AXIS_PADDING_FACTOR],\n fixedrange: true,\n },\n };\n\n const config = {\n responsive: true,\n displayModeBar: false,\n displaylogo: false,\n fillFrame: true,\n };\n\n Plotly.newPlot(plotRef.current, plotData, layout, config);\n bindTooltip(plotRef.current);\n\n // Capture ref value for cleanup\n const plotElement = plotRef.current;\n\n return () => {\n if (plotElement) {\n Plotly.purge(plotElement);\n }\n };\n }, [data, width, height, aTrace, tTrace, gTrace, cTrace, maxValue, positions, theme, bindTooltip]);\n\n if (data.length === 0) {\n return <div className=\"chart-container\">No data available</div>;\n }\n\n const renderSequence = () => {\n const renderSequenceLetters = () => {\n const minPosition = Math.min(...positions);\n const maxPosition = Math.max(...positions);\n const chartWidth = width;\n\n return (\n <div className=\"sequence-letters-container\">\n {sequence.map((base, index) => {\n const position = positions[index];\n const color =\n base === \"A\"\n ? colorA\n : base === \"T\"\n ? colorT\n : base === \"G\"\n ? colorG\n : base === \"C\"\n ? colorC\n : theme.textColor;\n\n const percentage =\n (position - minPosition) / (maxPosition - minPosition);\n const leftPosition = percentage * chartWidth;\n\n return (\n <span\n key={`base-${index}`}\n className=\"sequence-letter\"\n style={{\n left: `${leftPosition}px`,\n color,\n }}\n >\n {base}\n </span>\n );\n })}\n </div>\n );\n };\n\n const renderPositionNumbers = () => {\n const minPosition = Math.min(...positions);\n const maxPosition = Math.max(...positions);\n const chartWidth = width;\n\n const startPos =\n Math.ceil(minPosition / positionInterval) * positionInterval;\n\n const regularPositionLabels: Array<{ position: number; label: string }> =\n [];\n\n for (let pos = startPos; pos <= maxPosition; pos += positionInterval) {\n regularPositionLabels.push({\n position: pos,\n label: pos.toString(),\n });\n }\n\n return (\n <div className=\"position-numbers-container\">\n {regularPositionLabels.map((label) => {\n const percentage =\n (label.position - minPosition) / (maxPosition - minPosition);\n const leftPosition = percentage * chartWidth;\n\n return (\n <span\n key={`pos-${label.position}`}\n className=\"position-number\"\n style={{\n left: `${leftPosition}px`,\n }}\n >\n {label.label}\n </span>\n );\n })}\n </div>\n );\n };\n\n return (\n <div className=\"sequence-header\">\n {renderSequenceLetters()}\n {renderPositionNumbers()}\n </div>\n );\n };\n\n return (\n <div className=\"chromatogram-container relative\" style={{ width, height }}>\n {renderSequence()}\n <div className=\"chromatogram-chart\">\n <div ref={plotRef} style={{ width: \"100%\", height: \"100%\" }} />\n </div>\n {tooltipElement}\n </div>\n );\n};\n\nexport { Chromatogram };\nexport type { PeakData, ChromatogramProps };\n"],"names":["PLOT_HEIGHT_OFFSET","Y_AXIS_PADDING_FACTOR","determineBase","item","peakValues","values","val","highestBase","highestValue","base","value","Chromatogram","data","width","height","positionInterval","colorA","CHART_COLORS","colorT","colorG","colorC","plotRef","useRef","theme","usePlotlyTheme","bindTooltip","tooltipElement","useChartTooltip","positions","useMemo","sequence","peakA","peakT","peakG","peakC","aTrace","tTrace","gTrace","cTrace","maxValue","useEffect","plotData","layout","config","Plotly","plotElement","jsx","jsxs","renderSequenceLetters","minPosition","maxPosition","chartWidth","index","position","color","leftPosition","renderPositionNumbers","startPos","regularPositionLabels","pos","label"],"mappings":";;;;;;;AAUA,MAAMA,IAAqB,IAErBC,IAAwB,MAsBxBC,IAAgB,CAACC,MAA2B;AAChD,QAAMC,IAAa;AAAA,IACjB,GAAGD,EAAK;AAAA,IACR,GAAGA,EAAK;AAAA,IACR,GAAGA,EAAK;AAAA,IACR,GAAGA,EAAK;AAAA,EAAA,GAGJE,IAAS,OAAO,OAAOD,CAAU;AAGvC,MAFiBC,EAAO,MAAM,CAACC,MAAQA,MAAQD,EAAO,CAAC,CAAC;AAGtD,WAAO;AAGT,MAAIE,IAAc,IACdC,IAAe;AAEnB,gBAAO,QAAQJ,CAAU,EAAE,QAAQ,CAAC,CAACK,GAAMC,CAAK,MAAM;AACpD,IAAIA,IAAQF,MACVD,IAAcE,GACdD,IAAeE;AAAA,EAEnB,CAAC,GAEMH;AACT,GAEMI,KAA4C,CAAC;AAAA,EACjD,MAAAC,IAAO,CAAA;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,QAAAC,IAAS;AAAA,EACT,kBAAAC,IAAmB;AAAA,EACnB,QAAAC,IAASC,EAAa,CAAC;AAAA;AAAA,EACvB,QAAAC,IAASD,EAAa,CAAC;AAAA;AAAA,EACvB,QAAAE,IAASF,EAAa,CAAC;AAAA;AAAA,EACvB,QAAAG,IAASH,EAAa,CAAC;AAAA;AACzB,MAAM;AACJ,QAAMI,IAAUC,EAAuB,IAAI,GACrCC,IAAQC,EAAA,GACR,EAAE,aAAAC,GAAa,gBAAAC,EAAA,IAAmBC,EAAgB;AAAA,IACtD,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA,CACT,GAEKC,IAAYC,EAAQ,MAAMjB,EAAK,IAAI,CAACT,MAASA,EAAK,QAAQ,GAAG,CAACS,CAAI,CAAC,GACnEkB,IAAWD,EAAQ,MAAMjB,EAAK,IAAI,CAACT,MAASD,EAAcC,CAAI,CAAC,GAAG,CAACS,CAAI,CAAC,GACxEmB,IAAQF,EAAQ,MAAMjB,EAAK,IAAI,CAACT,MAASA,EAAK,KAAK,GAAG,CAACS,CAAI,CAAC,GAC5DoB,IAAQH,EAAQ,MAAMjB,EAAK,IAAI,CAACT,MAASA,EAAK,KAAK,GAAG,CAACS,CAAI,CAAC,GAC5DqB,IAAQJ,EAAQ,MAAMjB,EAAK,IAAI,CAACT,MAASA,EAAK,KAAK,GAAG,CAACS,CAAI,CAAC,GAC5DsB,IAAQL,EAAQ,MAAMjB,EAAK,IAAI,CAACT,MAASA,EAAK,KAAK,GAAG,CAACS,CAAI,CAAC,GAE5DuB,IAASN;AAAA,IACb,OAAO;AAAA,MACL,GAAGD;AAAA,MACH,GAAGG;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,MAAM;AAAA,MACN,MAAM,EAAE,OAAOf,GAAQ,OAAO,GAAG,OAAO,SAAA;AAAA,IAAkB;AAAA,IAE5D,CAACY,GAAWG,GAAOf,CAAM;AAAA,EAAA,GAGrBoB,IAASP;AAAA,IACb,OAAO;AAAA,MACL,GAAGD;AAAA,MACH,GAAGI;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,MAAM;AAAA,MACN,MAAM,EAAE,OAAOd,GAAQ,OAAO,GAAG,OAAO,SAAA;AAAA,IAAkB;AAAA,IAE5D,CAACU,GAAWI,GAAOd,CAAM;AAAA,EAAA,GAGrBmB,IAASR;AAAA,IACb,OAAO;AAAA,MACL,GAAGD;AAAA,MACH,GAAGK;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,MAAM;AAAA,MACN,MAAM,EAAE,OAAOd,GAAQ,OAAO,GAAG,OAAO,SAAA;AAAA,IAAkB;AAAA,IAE5D,CAACS,GAAWK,GAAOd,CAAM;AAAA,EAAA,GAGrBmB,IAAST;AAAA,IACb,OAAO;AAAA,MACL,GAAGD;AAAA,MACH,GAAGM;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,MAAM;AAAA,MACN,MAAM,EAAE,OAAOd,GAAQ,OAAO,GAAG,OAAO,SAAA;AAAA,IAAkB;AAAA,IAE5D,CAACQ,GAAWM,GAAOd,CAAM;AAAA,EAAA,GAGrBmB,IAAWV;AAAA,IACf,MAAM,KAAK,IAAI,GAAGE,GAAO,GAAGC,GAAO,GAAGC,GAAO,GAAGC,CAAK;AAAA,IACrD,CAACH,GAAOC,GAAOC,GAAOC,CAAK;AAAA,EAAA;AAwD7B,SArDAM,EAAU,MAAM;AACd,QAAI,CAACnB,EAAQ,WAAWT,EAAK,WAAW,EAAG;AAE3C,UAAM6B,IAAW,CAACN,GAAQC,GAAQC,GAAQC,CAAM,GAE1CI,IAAiC;AAAA,MACrC,OAAA7B;AAAA,MACA,QAAQC,IAASd;AAAA,MACjB,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,KAAK,EAAA;AAAA,MACzC,eAAeuB,EAAM;AAAA,MACrB,cAAcA,EAAM;AAAA,MACpB,MAAM;AAAA,QACJ,QAAQ;AAAA,MAAA;AAAA,MAEV,YAAY;AAAA,MACZ,OAAO;AAAA,QACL,UAAU;AAAA,QACV,UAAU;AAAA,QACV,gBAAgB;AAAA,QAChB,UAAU;AAAA,QACV,OAAO,CAAC,KAAK,IAAI,GAAGK,CAAS,GAAG,KAAK,IAAI,GAAGA,CAAS,CAAC;AAAA,QACtD,YAAY;AAAA,MAAA;AAAA,MAEd,OAAO;AAAA,QACL,UAAU;AAAA,QACV,UAAU;AAAA,QACV,gBAAgB;AAAA,QAChB,UAAU;AAAA,QACV,OAAO,CAAC,GAAGW,IAAWtC,CAAqB;AAAA,QAC3C,YAAY;AAAA,MAAA;AAAA,IACd,GAGI0C,IAAS;AAAA,MACb,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,WAAW;AAAA,IAAA;AAGb,IAAAC,EAAO,QAAQvB,EAAQ,SAASoB,GAAUC,GAAQC,CAAM,GACxDlB,EAAYJ,EAAQ,OAAO;AAG3B,UAAMwB,IAAcxB,EAAQ;AAE5B,WAAO,MAAM;AACX,MAAIwB,KACFD,EAAO,MAAMC,CAAW;AAAA,IAE5B;AAAA,EACF,GAAG,CAACjC,GAAMC,GAAOC,GAAQqB,GAAQC,GAAQC,GAAQC,GAAQC,GAAUX,GAAWL,GAAOE,CAAW,CAAC,GAE7Fb,EAAK,WAAW,IACX,gBAAAkC,EAAC,OAAA,EAAI,WAAU,mBAAkB,UAAA,qBAAiB,IA+FzD,gBAAAC,EAAC,SAAI,WAAU,mCAAkC,OAAO,EAAE,OAAAlC,GAAO,QAAAC,KAC9D,UAAA;AAAA,KA7FkB,MAAM;AAC3B,YAAMkC,IAAwB,MAAM;AAClC,cAAMC,IAAc,KAAK,IAAI,GAAGrB,CAAS,GACnCsB,IAAc,KAAK,IAAI,GAAGtB,CAAS,GACnCuB,IAAatC;AAEnB,eACE,gBAAAiC,EAAC,SAAI,WAAU,8BACZ,YAAS,IAAI,CAACrC,GAAM2C,MAAU;AAC7B,gBAAMC,IAAWzB,EAAUwB,CAAK,GAC1BE,IACJ7C,MAAS,MACLO,IACAP,MAAS,MACTS,IACAT,MAAS,MACTU,IACAV,MAAS,MACTW,IACAG,EAAM,WAINgC,KADHF,IAAWJ,MAAgBC,IAAcD,KACVE;AAElC,iBACE,gBAAAL;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAU;AAAA,cACV,OAAO;AAAA,gBACL,MAAM,GAAGS,CAAY;AAAA,gBACrB,OAAAD;AAAA,cAAA;AAAA,cAGD,UAAA7C;AAAA,YAAA;AAAA,YAPI,QAAQ2C,CAAK;AAAA,UAAA;AAAA,QAUxB,CAAC,EAAA,CACH;AAAA,MAEJ,GAEMI,IAAwB,MAAM;AAClC,cAAMP,IAAc,KAAK,IAAI,GAAGrB,CAAS,GACnCsB,IAAc,KAAK,IAAI,GAAGtB,CAAS,GACnCuB,IAAatC,GAEb4C,IACJ,KAAK,KAAKR,IAAclC,CAAgB,IAAIA,GAExC2C,IACJ,CAAA;AAEF,iBAASC,IAAMF,GAAUE,KAAOT,GAAaS,KAAO5C;AAClD,UAAA2C,EAAsB,KAAK;AAAA,YACzB,UAAUC;AAAA,YACV,OAAOA,EAAI,SAAA;AAAA,UAAS,CACrB;AAGH,iCACG,OAAA,EAAI,WAAU,8BACZ,UAAAD,EAAsB,IAAI,CAACE,MAAU;AAGpC,gBAAML,KADHK,EAAM,WAAWX,MAAgBC,IAAcD,KAChBE;AAElC,iBACE,gBAAAL;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAU;AAAA,cACV,OAAO;AAAA,gBACL,MAAM,GAAGS,CAAY;AAAA,cAAA;AAAA,cAGtB,UAAAK,EAAM;AAAA,YAAA;AAAA,YANF,OAAOA,EAAM,QAAQ;AAAA,UAAA;AAAA,QAShC,CAAC,EAAA,CACH;AAAA,MAEJ;AAEA,aACE,gBAAAb,EAAC,OAAA,EAAI,WAAU,mBACZ,UAAA;AAAA,QAAAC,EAAA;AAAA,QACAQ,EAAA;AAAA,MAAsB,GACzB;AAAA,IAEJ,GAIK;AAAA,IACD,gBAAAV,EAAC,OAAA,EAAI,WAAU,sBACb,4BAAC,OAAA,EAAI,KAAKzB,GAAS,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA,GAAU,GAC/D;AAAA,IACCK;AAAA,EAAA,GACH;AAEJ;"}
1
+ {"version":3,"file":"Chromatogram.js","sources":["../../../../src/components/charts/Chromatogram/Chromatogram.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from \"react\";\n\nimport { useChartTooltip } from \"../ChartTooltip\";\nimport { getLoadedPlotly, loadPlotly } from \"../plotly-loader\";\n\nimport {\n groupOverlappingPeaks,\n createGroupAnnotations,\n resolveSelectionAppearance,\n} from \"./annotations\";\nimport {\n validateSeriesData,\n applyBaselineCorrection,\n processUserAnnotations,\n} from \"./dataProcessing\";\nimport { detectPeaks } from \"./peakDetection\";\nimport {\n buildTraceData,\n buildLayout,\n buildConfig,\n createClickHandler,\n createHoverHandler,\n createUnhoverHandler,\n} from \"./plotBuilder\";\n\nimport type {\n ChromatogramSeries,\n PeakAnnotation,\n PeakSelectEvent,\n PeakSelectionAppearance,\n BaselineCorrectionMethod,\n BoundaryMarkerStyle,\n BoundaryMarkerType,\n PeakDetectionOptions,\n ChromatogramProps,\n PeakWithMeta,\n} from \"./types\";\nimport type Plotly from \"plotly.js-dist\";\n\nimport { EmptyState } from \"@/components/composed/EmptyState\";\nimport { usePlotlyTheme } from \"@/hooks/use-plotly-theme\";\n\n// Re-export types for external use\nexport type {\n ChromatogramSeries,\n PeakAnnotation,\n PeakSelectEvent,\n PeakSelectionAppearance,\n BaselineCorrectionMethod,\n BoundaryMarkerStyle,\n BoundaryMarkerType,\n PeakDetectionOptions,\n ChromatogramProps,\n};\n\n\n// Stable default so the no-annotations case keeps a constant identity; an\n// inline `[]` default would change every render, re-running the plot effect\n// (and tearing down the hover tooltip) on each re-render.\nconst EMPTY_ANNOTATIONS: PeakAnnotation[] = [];\n\nconst Chromatogram: React.FC<ChromatogramProps> = ({\n series,\n width = 900,\n height = 500,\n title,\n xAxisTitle = \"Retention Time (min)\",\n yAxisTitle = \"Signal (mAU)\",\n annotations = EMPTY_ANNOTATIONS,\n xRange,\n yRange,\n showLegend = true,\n showGridX = true,\n showGridY = true,\n showMarkers = false,\n markerSize = 4,\n showCrosshairs = false,\n baselineCorrection = \"none\",\n baselineWindowSize = 50,\n peakDetectionOptions,\n showPeakAreas = false,\n boundaryMarkers = \"none\",\n annotationOverlapThreshold = 0.4,\n showExportButton = true,\n selectedPeakIds,\n onPeakClick,\n onPeakHover,\n selectionAppearance,\n annotationStyle = \"arrow\",\n titleFontSize = 20,\n titleTopMargin,\n}) => {\n const enablePeakDetection = peakDetectionOptions !== undefined;\n const plotRef = useRef<HTMLDivElement>(null);\n const theme = usePlotlyTheme();\n const { bindTooltip, tooltipElement } = useChartTooltip({\n xLabel: xAxisTitle,\n yLabel: yAxisTitle,\n });\n // Stable refs for callbacks — avoids including them in effect dep arrays\n // (consumers often pass arrow functions that change identity every render).\n const onPeakClickRef = useRef(onPeakClick);\n const onPeakHoverRef = useRef(onPeakHover);\n onPeakClickRef.current = onPeakClick;\n onPeakHoverRef.current = onPeakHover;\n\n // Tracks the series index whose line is currently thickened on hover.\n const thickenedSeriesRef = useRef<number | null>(null);\n\n // Holds the latest peak Plotly annotations so that closures in effects always\n // read the latest selection-styled annotations.\n const peakAnnotationsRef = useRef<Partial<Plotly.Annotations>[]>([]);\n\n // Memoize processed series with baseline correction\n const processedSeries = useMemo(() => {\n return series.map((s) => {\n const validated = validateSeriesData(s.x, s.y);\n return {\n ...s,\n x: validated.x,\n y: applyBaselineCorrection(validated.y, baselineCorrection, baselineWindowSize),\n };\n });\n }, [series, baselineCorrection, baselineWindowSize]);\n\n // Process user annotations to convert startX/endX to indices and compute areas\n const processedAnnotations = useMemo(() => {\n if (annotations.length === 0 || processedSeries.length === 0) {\n return annotations;\n }\n const { x, y } = processedSeries[0];\n return processUserAnnotations(annotations, x, y);\n }, [annotations, processedSeries]);\n\n // Memoize peak detection results\n const allDetectedPeaks = useMemo(() => {\n const peaks: { peaks: PeakAnnotation[]; seriesIndex: number }[] = [];\n if (enablePeakDetection && peakDetectionOptions) {\n processedSeries.forEach((s, index) => {\n const detected = detectPeaks(s.x, s.y, peakDetectionOptions);\n if (detected.length > 0) {\n peaks.push({ peaks: detected, seriesIndex: index });\n }\n });\n }\n return peaks;\n }, [processedSeries, enablePeakDetection, peakDetectionOptions]);\n\n // Normalize the selection appearance into primitive fields up front so the\n // memo below depends on stable values rather than the (possibly unstable)\n // selectionAppearance object reference. This keeps the dependency array\n // exhaustive-deps clean without requiring callers to memoize the prop.\n const selectedBorderColor = selectionAppearance?.selected?.borderColor;\n const selectedBackgroundColor = selectionAppearance?.selected?.backgroundColor;\n const selectedBold = selectionAppearance?.selected?.bold;\n const unselectedOpacity = selectionAppearance?.unselected?.opacity;\n const hoverLineWidthMultiplier = selectionAppearance?.hoverLineWidthMultiplier;\n\n // Resolve selection appearance defaults once (stable as long as the\n // individual fields above don't change).\n const resolvedAppearance = useMemo(\n () =>\n resolveSelectionAppearance({\n selected: {\n borderColor: selectedBorderColor,\n backgroundColor: selectedBackgroundColor,\n bold: selectedBold,\n },\n unselected: { opacity: unselectedOpacity },\n hoverLineWidthMultiplier,\n }),\n [\n selectedBorderColor,\n selectedBackgroundColor,\n selectedBold,\n unselectedOpacity,\n hoverLineWidthMultiplier,\n ]\n );\n\n // All peaks that can be interacted with (clicked / hovered / selected),\n // each with a stable ID and the metadata needed for PeakSelectEvent.\n const allPeaksForInteraction = useMemo(() => {\n const result: Array<{\n peak: PeakAnnotation & { id: string };\n seriesIndex: number;\n seriesName: string;\n isAutoDetected: boolean;\n }> = [];\n\n processedAnnotations.forEach((ann, i) => {\n result.push({\n peak: { ...ann, id: ann.id ?? `user-ann-${i}` },\n seriesIndex: 0,\n seriesName: series[0]?.name ?? \"\",\n isAutoDetected: false,\n });\n });\n\n allDetectedPeaks.forEach(({ peaks, seriesIndex }) => {\n peaks.forEach((peak, peakIndex) => {\n result.push({\n peak: { ...peak, id: `peak-${seriesIndex}-${peakIndex}` },\n seriesIndex,\n seriesName: series[seriesIndex]?.name ?? `Series ${seriesIndex + 1}`,\n isAutoDetected: true,\n });\n });\n });\n\n return result;\n }, [processedAnnotations, allDetectedPeaks, series]);\n\n // Build Plotly annotation objects for all peaks, applying selection styling.\n // This memo re-runs when selectedPeakIds or resolvedAppearance changes so the\n // selection effect can call Plotly.relayout with updated annotations without\n // triggering a full chart rebuild.\n const peakAnnotations = useMemo(() => {\n const anySelected = (selectedPeakIds?.length ?? 0) > 0;\n const options = {\n selectedPeakIds: selectedPeakIds ?? [],\n anySelected,\n appearance: resolvedAppearance,\n annotationStyle,\n };\n\n const allPeaksWithMeta: PeakWithMeta[] = [];\n\n processedAnnotations.forEach((ann, i) => {\n allPeaksWithMeta.push({\n peak: { ...ann, id: ann.id ?? `user-ann-${i}` },\n seriesIndex: -1,\n });\n });\n\n if (showPeakAreas && enablePeakDetection) {\n allDetectedPeaks.forEach(({ peaks, seriesIndex }) => {\n peaks.forEach((peak, peakIndex) => {\n allPeaksWithMeta.push({\n peak: { ...peak, id: `peak-${seriesIndex}-${peakIndex}` },\n seriesIndex,\n });\n });\n });\n }\n\n const groups = groupOverlappingPeaks(allPeaksWithMeta, annotationOverlapThreshold);\n const result: Partial<Plotly.Annotations>[] = [];\n for (const group of groups) {\n result.push(...createGroupAnnotations(group, options));\n }\n return result;\n }, [\n processedAnnotations,\n allDetectedPeaks,\n showPeakAreas,\n enablePeakDetection,\n annotationOverlapThreshold,\n selectedPeakIds,\n resolvedAppearance,\n annotationStyle,\n ]);\n\n // Keep the ref in sync every render so that closures in effects always read\n // the latest selection-styled annotations.\n peakAnnotationsRef.current = peakAnnotations;\n\n // ── Main chart effect ──────────────────────────────────────────────────────\n // Rebuilds the full chart when structural props change (data, size, axes, …).\n // selectedPeakIds and selectionAppearance are intentionally excluded from\n // deps — selection changes are handled by the lightweight selection effect\n // below via Plotly.relayout, which preserves the user's current zoom/pan.\n useEffect(() => {\n const currentRef = plotRef.current;\n if (!currentRef || series.length === 0) return;\n\n // Build trace data (line traces + boundary markers + region overlays +\n // the invisible hit-area trace that carries peak customdata for\n // click/hover interaction).\n const plotData = buildTraceData({\n processedSeries,\n processedAnnotations,\n allDetectedPeaks,\n allPeaksForInteraction,\n showMarkers,\n markerSize,\n xAxisTitle,\n yAxisTitle,\n boundaryMarkers,\n });\n\n const layout = buildLayout({\n title,\n titleFontSize,\n titleTopMargin,\n width,\n height,\n xAxisTitle,\n yAxisTitle,\n xRange,\n yRange,\n showLegend,\n seriesCount: series.length,\n showGridX,\n showGridY,\n showCrosshairs,\n theme,\n peakAnnotations: peakAnnotationsRef.current,\n });\n\n const config = buildConfig({ showExportButton, width, height });\n\n // Plotly is loaded lazily so it stays out of the consumer's main chunk\n // (SW-2007); the draw is skipped if the effect re-runs or unmounts first.\n let cancelled = false;\n let plotElement: HTMLDivElement | null = null;\n void loadPlotly().then((plotly) => {\n if (cancelled || !plotRef.current) return;\n plotly.newPlot(currentRef, plotData, layout, config);\n bindTooltip(currentRef);\n\n // ── Event: peak click ────────────────────────────────────────────────\n (currentRef as unknown as Plotly.PlotlyHTMLElement).on(\n \"plotly_click\",\n createClickHandler(onPeakClickRef)\n );\n\n (currentRef as unknown as Plotly.PlotlyHTMLElement).on(\n \"plotly_hover\",\n createHoverHandler(currentRef, processedSeries.length, thickenedSeriesRef, onPeakHoverRef, resolvedAppearance.hoverLineWidthMultiplier)\n );\n\n (currentRef as unknown as Plotly.PlotlyHTMLElement).on(\n \"plotly_unhover\",\n createUnhoverHandler(currentRef, thickenedSeriesRef, onPeakHoverRef)\n );\n\n // Capture ref value for cleanup\n plotElement = currentRef;\n });\n\n return () => {\n cancelled = true;\n thickenedSeriesRef.current = null;\n if (plotElement) getLoadedPlotly().purge(plotElement);\n };\n }, [\n processedSeries, allDetectedPeaks, allPeaksForInteraction, series.length,\n width, height, title, titleFontSize, titleTopMargin, xAxisTitle, yAxisTitle,\n processedAnnotations, xRange, yRange, showLegend, showGridX, showGridY,\n showMarkers, markerSize, showCrosshairs, enablePeakDetection, peakDetectionOptions,\n showPeakAreas, boundaryMarkers, annotationOverlapThreshold, showExportButton,\n theme, bindTooltip,\n // resolvedAppearance included so hover multiplier stays in sync with the\n // event handler closure without it being in a ref itself.\n resolvedAppearance,\n ]);\n\n // ── Selection update effect ────────────────────────────────────────────────\n // Runs when selectedPeakIds / selectionAppearance change (peakAnnotations\n // recomputes). Uses Plotly.relayout so the user's zoom/pan state is preserved.\n useEffect(() => {\n const el = plotRef.current;\n if (!el) return;\n // Guard: skip if the chart hasn't been initialized by the main effect yet.\n // (A truthy _fullLayout also proves newPlot ran, so the lazily-loaded\n // Plotly module is guaranteed to be available via getLoadedPlotly.)\n if (!(el as { _fullLayout?: unknown })._fullLayout) return;\n\n getLoadedPlotly().relayout(el, {\n annotations: peakAnnotations,\n } as unknown as Partial<Plotly.Layout>);\n }, [peakAnnotations]);\n\n // No data: render an explicit empty state instead of an uninitialized\n // (blank) Plotly container, so the chart reads as \"no data yet\" rather\n // than looking broken while data is still loading.\n if (series.length === 0) {\n return (\n <div\n className=\"chromatogram-chart-container relative flex items-center justify-center\"\n style={{ width, height }}\n >\n <EmptyState\n variant=\"no-data\"\n title=\"No chromatogram data\"\n description=\"There is no signal data to display yet.\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"chromatogram-chart-container relative\">\n <div ref={plotRef} style={{ width: \"100%\", height: \"100%\" }} />\n {tooltipElement}\n </div>\n );\n};\n\nexport { Chromatogram };\n"],"names":["EMPTY_ANNOTATIONS","Chromatogram","series","width","height","title","xAxisTitle","yAxisTitle","annotations","xRange","yRange","showLegend","showGridX","showGridY","showMarkers","markerSize","showCrosshairs","baselineCorrection","baselineWindowSize","peakDetectionOptions","showPeakAreas","boundaryMarkers","annotationOverlapThreshold","showExportButton","selectedPeakIds","onPeakClick","onPeakHover","selectionAppearance","annotationStyle","titleFontSize","titleTopMargin","enablePeakDetection","plotRef","useRef","theme","usePlotlyTheme","bindTooltip","tooltipElement","useChartTooltip","onPeakClickRef","onPeakHoverRef","thickenedSeriesRef","peakAnnotationsRef","processedSeries","useMemo","s","validated","validateSeriesData","applyBaselineCorrection","processedAnnotations","x","y","processUserAnnotations","allDetectedPeaks","peaks","index","detected","detectPeaks","selectedBorderColor","selectedBackgroundColor","selectedBold","unselectedOpacity","hoverLineWidthMultiplier","resolvedAppearance","resolveSelectionAppearance","allPeaksForInteraction","result","ann","i","seriesIndex","peak","peakIndex","peakAnnotations","anySelected","options","allPeaksWithMeta","groups","groupOverlappingPeaks","group","createGroupAnnotations","useEffect","currentRef","plotData","buildTraceData","layout","buildLayout","config","buildConfig","cancelled","plotElement","loadPlotly","plotly","createClickHandler","createHoverHandler","createUnhoverHandler","getLoadedPlotly","el","jsx","EmptyState","jsxs"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("../../../utils/colors.cjs"),d=require("./constants.cjs"),R=require("../../../hooks/use-plotly-theme.cjs"),T={selected:{borderColor:"#3b82f6",backgroundColor:"#dbeafe",bold:!0},unselected:{opacity:.4},hoverLineWidthMultiplier:5/3};function S(o){if(!o)return T;const t=T;return{selected:{borderColor:o.selected?.borderColor??t.selected.borderColor,backgroundColor:o.selected?.backgroundColor??t.selected.backgroundColor,bold:o.selected?.bold??t.selected.bold},unselected:{opacity:o.unselected?.opacity??t.unselected.opacity},hoverLineWidthMultiplier:o.hoverLineWidthMultiplier??t.hoverLineWidthMultiplier}}const A={default:{ax:0,ay:-35},overlap:[{ax:50,ay:-35},{ax:-60,ay:-35},{ax:70,ay:-55},{ax:-80,ay:-55},{ax:50,ay:-75},{ax:-60,ay:-75}]};function M(o,t){const c=[...o].sort((n,l)=>n.peak.x-l.peak.x),r=[];let e=[];for(const n of c){if(e.length===0){e.push(n);continue}const l=e[e.length-1];Math.abs(n.peak.x-l.peak.x)<t?e.push(n):(r.push(e),e=[n])}return e.length>0&&r.push(e),r}function g(o,t,c,r,e,n){const l=o?e.selected.backgroundColor:d.CHROMATOGRAM_ANNOTATION.BACKGROUND_COLOR;let s;o?s=e.selected.borderColor:s=c&&!n?void 0:r;const i=o?2:c&&!n?0:1,a=t?e.unselected.opacity:void 0;return{bgcolor:l,bordercolor:s,borderwidth:i,...a===void 0?{}:{opacity:a}}}function p(o,t,c,r,e,n,l){const s=n?l.unselected.opacity:void 0;return{x:o.x,y:o.y,text:t,showarrow:!1,yshift:d.CHROMATOGRAM_ANNOTATION.INLINE_YSHIFT,yanchor:"bottom",xanchor:"center",font:{size:c,color:e?l.selected.borderColor:r,family:R.CHART_FONT_FAMILY},...s===void 0?{}:{opacity:s}}}function N(o,t,c,r={}){const{selectedPeakIds:e=[],anySelected:n=!1,appearance:l=T,annotationStyle:s="arrow"}=r,i=t===-1,a=i?d.CHROMATOGRAM_ANNOTATION.USER_ANNOTATION_COLOR:h.CHART_COLORS[t%h.CHART_COLORS.length],O=o.color??a,y=i&&!o.color?d.CHROMATOGRAM_ANNOTATION.USER_ANNOTATION_TEXT_COLOR:O,f=o.text??(o._computed?.area===void 0?"":`Area: ${o._computed.area.toFixed(2)}`),u=o.id!==void 0&&e.includes(o.id),_=!u&&n,b=u&&l.selected.bold?`<b>${f}</b>`:f,C=i?d.CHROMATOGRAM_ANNOTATION.USER_ANNOTATION_FONT_SIZE:d.CHROMATOGRAM_ANNOTATION.AUTO_ANNOTATION_FONT_SIZE;if(s==="inline")return p(o,b,C,y,u,_,l);const x=i&&o.ax!==void 0?o.ax:c.ax,v=i&&o.ay!==void 0?o.ay:c.ay,I=g(u,_,i,O,l,o.color!==void 0);return{x:o.x,y:o.y,text:b,showarrow:!0,arrowhead:2,arrowsize:1,arrowwidth:1,arrowcolor:O,ax:x,ay:v,font:{size:C,color:y,family:R.CHART_FONT_FAMILY},borderpad:2,...I}}function L(o,t={}){if(o.length===1){const{peak:r,seriesIndex:e}=o[0];return[N(r,e,A.default,t)]}return[...o].sort((r,e)=>r.peak.y-e.peak.y).map(({peak:r,seriesIndex:e},n)=>{const l=A.overlap[n%A.overlap.length];return N(r,e,l,t)})}exports.ANNOTATION_SLOTS=A;exports.createGroupAnnotations=L;exports.createPeakAnnotation=N;exports.groupOverlappingPeaks=M;exports.resolveSelectionAppearance=S;
2
+ //# sourceMappingURL=annotations.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.cjs","sources":["../../../../src/components/charts/Chromatogram/annotations.ts"],"sourcesContent":["/**\n * Annotation utilities for Chromatogram\n */\n\nimport { CHART_COLORS } from \"../../../utils/colors\";\n\nimport { CHROMATOGRAM_ANNOTATION } from \"./constants\";\n\nimport type { PeakAnnotation, PeakSelectionAppearance, PeakWithMeta } from \"./types\";\nimport type Plotly from \"plotly.js-dist\";\n\nimport { CHART_FONT_FAMILY } from \"@/hooks/use-plotly-theme\";\n\n// ── Selection appearance helpers ─────────────────────────────────────────────\n\nexport interface ResolvedSelectionAppearance {\n selected: {\n borderColor: string;\n backgroundColor: string;\n bold: boolean;\n };\n unselected: {\n opacity: number;\n };\n hoverLineWidthMultiplier: number;\n}\n\nconst DEFAULT_RESOLVED_APPEARANCE: ResolvedSelectionAppearance = {\n selected: {\n borderColor: \"#3b82f6\",\n backgroundColor: \"#dbeafe\",\n bold: true,\n },\n unselected: { opacity: 0.4 },\n hoverLineWidthMultiplier: 5 / 3,\n};\n\nexport function resolveSelectionAppearance(\n appearance?: PeakSelectionAppearance\n): ResolvedSelectionAppearance {\n if (!appearance) return DEFAULT_RESOLVED_APPEARANCE;\n const d = DEFAULT_RESOLVED_APPEARANCE;\n return {\n selected: {\n borderColor: appearance.selected?.borderColor ?? d.selected.borderColor,\n backgroundColor: appearance.selected?.backgroundColor ?? d.selected.backgroundColor,\n bold: appearance.selected?.bold ?? d.selected.bold,\n },\n unselected: {\n opacity: appearance.unselected?.opacity ?? d.unselected.opacity,\n },\n hoverLineWidthMultiplier:\n appearance.hoverLineWidthMultiplier ?? d.hoverLineWidthMultiplier,\n };\n}\n\n/**\n * Annotation slot positions for peak labels\n */\nexport const ANNOTATION_SLOTS = {\n default: { ax: 0, ay: -35 },\n overlap: [\n { ax: 50, ay: -35 }, // Right, level 1\n { ax: -60, ay: -35 }, // Left, level 1\n { ax: 70, ay: -55 }, // Right, level 2\n { ax: -80, ay: -55 }, // Left, level 2\n { ax: 50, ay: -75 }, // Right, level 3\n { ax: -60, ay: -75 }, // Left, level 3\n ],\n};\n\n/**\n * Group overlapping peaks by retention time (x) proximity\n */\nexport function groupOverlappingPeaks(\n peaksWithMeta: PeakWithMeta[],\n overlapThreshold: number\n): PeakWithMeta[][] {\n const sorted = [...peaksWithMeta].sort((a, b) => a.peak.x - b.peak.x);\n\n const groups: PeakWithMeta[][] = [];\n let currentGroup: PeakWithMeta[] = [];\n\n for (const current of sorted) {\n if (currentGroup.length === 0) {\n currentGroup.push(current);\n continue;\n }\n\n const lastInGroup = currentGroup[currentGroup.length - 1];\n const timeDiff = Math.abs(current.peak.x - lastInGroup.peak.x);\n\n if (timeDiff < overlapThreshold) {\n currentGroup.push(current);\n } else {\n groups.push(currentGroup);\n currentGroup = [current];\n }\n }\n\n if (currentGroup.length > 0) {\n groups.push(currentGroup);\n }\n\n return groups;\n}\n\ninterface PeakAnnotationOptions {\n selectedPeakIds?: string[];\n anySelected?: boolean;\n appearance?: ResolvedSelectionAppearance;\n annotationStyle?: \"arrow\" | \"inline\";\n}\n\ninterface AnnotationBorderStyle {\n bgcolor: string;\n bordercolor: string | undefined;\n borderwidth: number;\n opacity?: number;\n}\n\n/** Derives border/background/opacity from selection state — extracted to keep\n * createPeakAnnotation within the allowed cognitive complexity budget. */\nfunction resolveAnnotationBorderStyle(\n isSelected: boolean,\n isDimmed: boolean,\n isUserDefined: boolean,\n seriesColor: string,\n appearance: ResolvedSelectionAppearance,\n hasColorOverride: boolean\n): AnnotationBorderStyle {\n const bgcolor = isSelected\n ? appearance.selected.backgroundColor\n : CHROMATOGRAM_ANNOTATION.BACKGROUND_COLOR;\n let bordercolor: string | undefined;\n if (isSelected) {\n bordercolor = appearance.selected.borderColor;\n } else {\n bordercolor = isUserDefined && !hasColorOverride ? undefined : seriesColor;\n }\n const borderwidth = isSelected ? 2 : isUserDefined && !hasColorOverride ? 0 : 1;\n const opacity = isDimmed ? appearance.unselected.opacity : undefined;\n return { bgcolor, bordercolor, borderwidth, ...(opacity === undefined ? {} : { opacity }) };\n}\n\n/** Builds an inline-style (no-arrow) annotation that floats above the trace point. */\nfunction createInlineAnnotation(\n peak: PeakAnnotation,\n text: string,\n fontSize: number,\n textColor: string,\n isSelected: boolean,\n isDimmed: boolean,\n appearance: ResolvedSelectionAppearance\n): Partial<Plotly.Annotations> {\n const opacity = isDimmed ? appearance.unselected.opacity : undefined;\n return {\n x: peak.x,\n y: peak.y,\n text,\n showarrow: false,\n yshift: CHROMATOGRAM_ANNOTATION.INLINE_YSHIFT,\n yanchor: \"bottom\" as const,\n xanchor: \"center\" as const,\n font: {\n size: fontSize,\n color: isSelected ? appearance.selected.borderColor : textColor,\n family: CHART_FONT_FAMILY,\n },\n ...(opacity === undefined ? {} : { opacity }),\n };\n}\n\n/**\n * Create a Plotly annotation for a peak.\n * seriesIndex of -1 indicates a user-defined annotation (uses grey/black styling).\n */\nexport function createPeakAnnotation(\n peak: PeakAnnotation,\n seriesIndex: number,\n slot: { ax: number; ay: number },\n options: PeakAnnotationOptions = {}\n): Partial<Plotly.Annotations> {\n const {\n selectedPeakIds = [],\n anySelected = false,\n appearance = DEFAULT_RESOLVED_APPEARANCE,\n annotationStyle = \"arrow\",\n } = options;\n\n const isUserDefined = seriesIndex === -1;\n const defaultColor = isUserDefined\n ? CHROMATOGRAM_ANNOTATION.USER_ANNOTATION_COLOR\n : CHART_COLORS[seriesIndex % CHART_COLORS.length];\n const color = peak.color ?? defaultColor;\n const textColor = isUserDefined && !peak.color\n ? CHROMATOGRAM_ANNOTATION.USER_ANNOTATION_TEXT_COLOR\n : color;\n\n const rawText = peak.text ?? (peak._computed?.area === undefined ? \"\" : `Area: ${peak._computed.area.toFixed(2)}`);\n\n const isSelected = peak.id !== undefined && selectedPeakIds.includes(peak.id);\n const isDimmed = !isSelected && anySelected;\n\n const text = isSelected && appearance.selected.bold ? `<b>${rawText}</b>` : rawText;\n\n const fontSize = isUserDefined\n ? CHROMATOGRAM_ANNOTATION.USER_ANNOTATION_FONT_SIZE\n : CHROMATOGRAM_ANNOTATION.AUTO_ANNOTATION_FONT_SIZE;\n\n if (annotationStyle === \"inline\") {\n return createInlineAnnotation(peak, text, fontSize, textColor, isSelected, isDimmed, appearance);\n }\n\n // For user-defined annotations, respect their ax/ay if provided\n const ax = isUserDefined && peak.ax !== undefined ? peak.ax : slot.ax;\n const ay = isUserDefined && peak.ay !== undefined ? peak.ay : slot.ay;\n\n const borderStyle = resolveAnnotationBorderStyle(\n isSelected, isDimmed, isUserDefined, color, appearance, peak.color !== undefined\n );\n\n return {\n x: peak.x,\n y: peak.y,\n text,\n showarrow: true,\n arrowhead: 2,\n arrowsize: 1,\n arrowwidth: 1,\n arrowcolor: color,\n ax,\n ay,\n font: {\n size: fontSize,\n color: textColor,\n family: CHART_FONT_FAMILY,\n },\n borderpad: 2,\n ...borderStyle,\n };\n}\n\n/**\n * Create annotations for a group of peaks, handling overlap positioning\n */\nexport function createGroupAnnotations(\n group: PeakWithMeta[],\n options: PeakAnnotationOptions = {}\n): Partial<Plotly.Annotations>[] {\n if (group.length === 1) {\n const { peak, seriesIndex } = group[0];\n return [createPeakAnnotation(peak, seriesIndex, ANNOTATION_SLOTS.default, options)];\n }\n\n // Sort by intensity (y, lowest first) so lower peaks get closer annotations\n const sortedGroup = [...group].sort((a, b) => a.peak.y - b.peak.y);\n\n return sortedGroup.map(({ peak, seriesIndex }, slotIndex) => {\n const slot =\n ANNOTATION_SLOTS.overlap[slotIndex % ANNOTATION_SLOTS.overlap.length];\n return createPeakAnnotation(peak, seriesIndex, slot, options);\n });\n}\n\n"],"names":["DEFAULT_RESOLVED_APPEARANCE","resolveSelectionAppearance","appearance","d","ANNOTATION_SLOTS","groupOverlappingPeaks","peaksWithMeta","overlapThreshold","sorted","a","b","groups","currentGroup","current","lastInGroup","resolveAnnotationBorderStyle","isSelected","isDimmed","isUserDefined","seriesColor","hasColorOverride","bgcolor","CHROMATOGRAM_ANNOTATION","bordercolor","borderwidth","opacity","createInlineAnnotation","peak","text","fontSize","textColor","CHART_FONT_FAMILY","createPeakAnnotation","seriesIndex","slot","options","selectedPeakIds","anySelected","annotationStyle","defaultColor","CHART_COLORS","color","rawText","ax","ay","borderStyle","createGroupAnnotations","group","slotIndex"],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { PeakAnnotation, PeakSelectionAppearance, PeakWithMeta } from './types';
2
+ import { default as Plotly } from 'plotly.js-dist';
3
+ export interface ResolvedSelectionAppearance {
4
+ selected: {
5
+ borderColor: string;
6
+ backgroundColor: string;
7
+ bold: boolean;
8
+ };
9
+ unselected: {
10
+ opacity: number;
11
+ };
12
+ hoverLineWidthMultiplier: number;
13
+ }
14
+ export declare function resolveSelectionAppearance(appearance?: PeakSelectionAppearance): ResolvedSelectionAppearance;
15
+ /**
16
+ * Annotation slot positions for peak labels
17
+ */
18
+ export declare const ANNOTATION_SLOTS: {
19
+ default: {
20
+ ax: number;
21
+ ay: number;
22
+ };
23
+ overlap: {
24
+ ax: number;
25
+ ay: number;
26
+ }[];
27
+ };
28
+ /**
29
+ * Group overlapping peaks by retention time (x) proximity
30
+ */
31
+ export declare function groupOverlappingPeaks(peaksWithMeta: PeakWithMeta[], overlapThreshold: number): PeakWithMeta[][];
32
+ interface PeakAnnotationOptions {
33
+ selectedPeakIds?: string[];
34
+ anySelected?: boolean;
35
+ appearance?: ResolvedSelectionAppearance;
36
+ annotationStyle?: "arrow" | "inline";
37
+ }
38
+ /**
39
+ * Create a Plotly annotation for a peak.
40
+ * seriesIndex of -1 indicates a user-defined annotation (uses grey/black styling).
41
+ */
42
+ export declare function createPeakAnnotation(peak: PeakAnnotation, seriesIndex: number, slot: {
43
+ ax: number;
44
+ ay: number;
45
+ }, options?: PeakAnnotationOptions): Partial<Plotly.Annotations>;
46
+ /**
47
+ * Create annotations for a group of peaks, handling overlap positioning
48
+ */
49
+ export declare function createGroupAnnotations(group: PeakWithMeta[], options?: PeakAnnotationOptions): Partial<Plotly.Annotations>[];
50
+ export {};