@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.cjs","sources":["../../../../src/components/charts/ScatterPlotInteractive/utils.ts"],"sourcesContent":["import {\n COLORS,\n DEFAULT_CATEGORY_COLORS,\n DEFAULT_MAX_POINTS,\n DEFAULT_MARKER_SIZE,\n DEFAULT_SIZE_RANGE,\n PLOT_CONSTANTS,\n} from \"./constants\";\n\nimport type {\n AxisConfig,\n ColorMapping,\n DownsamplingConfig,\n ScatterPoint,\n SelectionMode,\n ShapeMapping,\n SizeMapping,\n} from \"./types\";\nimport type { PlotlyThemeColors } from \"@/hooks/use-plotly-theme\";\n\n/**\n * Calculate min and max values for a numeric field in the data\n */\nexport function calculateRange(data: ScatterPoint[], field: string): { min: number; max: number } {\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n for (const point of data) {\n const value = point.metadata?.[field];\n if (typeof value === \"number\" && Number.isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n // Handle edge case where all values are invalid\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n return { min: 0, max: 1 };\n }\n\n // Handle edge case where min === max\n if (min === max) {\n return { min: min - 1, max: max + 1 };\n }\n\n return { min, max };\n}\n\n/**\n * Get unique categorical values from a field\n */\nexport function getUniqueCategories(data: ScatterPoint[], field: string): string[] {\n const uniqueCategories = data\n .map((point) => point.metadata?.[field])\n .filter((value): value is string => typeof value === \"string\");\n\n return [...new Set(uniqueCategories)].sort();\n}\n\n/**\n * Map colors based on color mapping configuration\n */\nexport function mapColors(data: ScatterPoint[], colorMapping?: ColorMapping): string[] {\n if (!colorMapping || colorMapping.type === \"static\") {\n const color = colorMapping?.value || COLORS.primary;\n return new Array(data.length).fill(color);\n }\n\n if (colorMapping.type === \"categorical\" && colorMapping.field) {\n const categories = getUniqueCategories(data, colorMapping.field);\n const colorMap = colorMapping.categoryColors || {};\n\n // Assign default colors to categories without explicit colors\n const categoryColorMap: Record<string, string> = {};\n categories.forEach((category, index) => {\n categoryColorMap[category] =\n colorMap[category] || DEFAULT_CATEGORY_COLORS[index % DEFAULT_CATEGORY_COLORS.length];\n });\n\n return data.map((point) => {\n const value = point.metadata?.[colorMapping.field!];\n return categoryColorMap[String(value)] || DEFAULT_CATEGORY_COLORS[0];\n });\n }\n\n return new Array(data.length).fill(COLORS.primary);\n}\n\n/**\n * Map shapes based on shape mapping configuration\n */\nexport function mapShapes(data: ScatterPoint[], shapeMapping?: ShapeMapping): string[] {\n if (!shapeMapping || shapeMapping.type === \"static\") {\n const shape = shapeMapping?.value || \"circle\";\n return new Array(data.length).fill(shape);\n }\n\n if (shapeMapping.type === \"categorical\" && shapeMapping.field) {\n const categories = getUniqueCategories(data, shapeMapping.field);\n const shapeMap = shapeMapping.categoryShapes || {};\n const defaultShapes = [\"circle\", \"square\", \"diamond\", \"cross\", \"x\", \"triangle-up\", \"triangle-down\", \"star\"];\n\n // Assign default shapes to categories without explicit shapes\n const categoryShapeMap: Record<string, string> = {};\n categories.forEach((category, index) => {\n categoryShapeMap[category] = shapeMap[category] || defaultShapes[index % defaultShapes.length];\n });\n\n return data.map((point) => {\n const value = point.metadata?.[shapeMapping.field!];\n return categoryShapeMap[String(value)] || \"circle\";\n });\n }\n\n return new Array(data.length).fill(\"circle\");\n}\n\n/**\n * Map sizes based on size mapping configuration\n */\nexport function mapSizes(data: ScatterPoint[], sizeMapping?: SizeMapping): number[] {\n if (!sizeMapping || sizeMapping.type === \"static\") {\n const size = sizeMapping?.value || DEFAULT_MARKER_SIZE;\n return new Array(data.length).fill(size);\n }\n\n if (sizeMapping.type === \"categorical\" && sizeMapping.field) {\n const categories = getUniqueCategories(data, sizeMapping.field);\n const sizeMap = sizeMapping.categorySizes || {};\n\n // Assign default sizes to categories without explicit sizes\n const categorySizeMap: Record<string, number> = {};\n categories.forEach((category, index) => {\n categorySizeMap[category] = sizeMap[category] || DEFAULT_MARKER_SIZE + index * 2;\n });\n\n return data.map((point) => {\n const value = point.metadata?.[sizeMapping.field!];\n return categorySizeMap[String(value)] || DEFAULT_MARKER_SIZE;\n });\n }\n\n if (sizeMapping.type === \"continuous\" && sizeMapping.field) {\n const range =\n sizeMapping.min !== undefined && sizeMapping.max !== undefined\n ? { min: sizeMapping.min, max: sizeMapping.max }\n : calculateRange(data, sizeMapping.field);\n\n const sizeRange = sizeMapping.sizeRange || DEFAULT_SIZE_RANGE;\n const [minSize, maxSize] = sizeRange;\n\n return data.map((point) => {\n const value = point.metadata?.[sizeMapping.field!];\n if (typeof value === \"number\" && Number.isFinite(value)) {\n // Normalize and map to size range\n const normalized = (value - range.min) / (range.max - range.min);\n return minSize + normalized * (maxSize - minSize);\n }\n return DEFAULT_MARKER_SIZE;\n });\n }\n\n return new Array(data.length).fill(DEFAULT_MARKER_SIZE);\n}\n\n/**\n * Downsample data using specified strategy\n */\nexport function downsampleData(data: ScatterPoint[], config: DownsamplingConfig): ScatterPoint[] {\n if (!config.enabled || data.length <= (config.maxPoints || DEFAULT_MAX_POINTS)) {\n return data;\n }\n\n const maxPoints = config.maxPoints || DEFAULT_MAX_POINTS;\n const strategy = config.strategy || \"lttb\";\n\n if (strategy === \"lttb\") {\n // Largest Triangle Three Buckets algorithm\n return lttbDownsample(data, maxPoints);\n }\n\n return data;\n}\n\n/**\n * Compute the (x, y) centroid of data[start..end).\n * Falls back to the point at clamp(start, 0, dataLength-1) when the range is\n * empty (only reachable under extreme floating-point drift) to prevent NaN.\n */\nfunction bucketCentroid(\n data: ScatterPoint[],\n start: number,\n end: number,\n dataLength: number,\n): { x: number; y: number } {\n const length = end - start;\n if (length > 0) {\n let sumX = 0;\n let sumY = 0;\n for (let j = start; j < end; j++) {\n sumX += data[j].x;\n sumY += data[j].y;\n }\n return { x: sumX / length, y: sumY / length };\n }\n const fallbackIdx = Math.max(0, Math.min(start, dataLength - 1));\n return { x: data[fallbackIdx].x, y: data[fallbackIdx].y };\n}\n\n/**\n * Largest Triangle Three Buckets (LTTB) downsampling algorithm.\n * Preserves the visual shape of the data by maximizing the triangle area\n * formed by adjacent bucket centroids and each candidate point.\n * Exported for unit testing\n */\nexport function lttbDownsample(data: ScatterPoint[], threshold: number): ScatterPoint[] {\n const dataLength = data.length;\n\n // --- Edge cases ---\n if (threshold <= 0 || dataLength === 0) return [];\n // No downsampling needed; return the original reference unchanged.\n if (threshold >= dataLength) return data;\n if (threshold === 1) return [data[0]];\n if (threshold === 2) return [data[0], data[dataLength - 1]];\n\n // At this point: 3 <= threshold < dataLength, so dataLength >= 4.\n // Spread (dataLength - 2) interior points across (threshold - 2) buckets,\n // keeping the first and last points fixed outside the buckets.\n // With threshold < dataLength, every > 1, so no bucket is ever empty.\n const every = (dataLength - 2) / (threshold - 2);\n\n const { floor, abs, min } = Math;\n const sampled: ScatterPoint[] = [data[0]];\n\n // Index of the previously selected point — left vertex A of the triangle.\n let a = 0;\n\n for (let i = 0; i < threshold - 2; i++) {\n // Centroid of the *next* bucket — right vertex C of the triangle.\n // Biases candidate selection toward points that preserve visual variance.\n const avgRangeStart = min(floor((i + 1) * every) + 1, dataLength - 1);\n const avgRangeEnd = min(floor((i + 2) * every) + 1, dataLength);\n const { x: avgX, y: avgY } = bucketCentroid(data, avgRangeStart, avgRangeEnd, dataLength);\n\n // Boundaries of the current bucket — middle vertex B candidates.\n // Clamped to valid index range to guard against floating-point drift.\n const rangeStart = min(floor(i * every) + 1, dataLength - 1);\n const rangeEnd = min(floor((i + 1) * every) + 1, dataLength - 1);\n\n const pointAX = data[a].x;\n const pointAY = data[a].y;\n\n // Safe fallback: first point in the bucket, used when the bucket is degenerate.\n let maxArea = -1;\n let maxAreaPoint: ScatterPoint = data[rangeStart];\n let nextA = rangeStart;\n\n for (let j = rangeStart; j < rangeEnd; j++) {\n // Area of the triangle formed by A (prev selected), B (candidate), C (next centroid).\n // The point maximising this area is the most visually significant in the bucket.\n const area = abs((pointAX - avgX) * (data[j].y - pointAY) - (pointAX - data[j].x) * (avgY - pointAY)) * 0.5;\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n\n sampled.push(maxAreaPoint);\n a = nextA;\n }\n\n sampled.push(data[dataLength - 1]); // Always include the last point.\n\n return sampled;\n}\n\n/**\n * Generate default tooltip content\n */\nexport function generateTooltipContent(point: ScatterPoint, fields?: string[]): string {\n const lines: string[] = [];\n\n // Always include x, y\n lines.push(`X: ${point.x.toFixed(2)}`);\n lines.push(`Y: ${point.y.toFixed(2)}`);\n\n // Add label if present\n if (point.label) {\n lines.push(`Label: ${point.label}`);\n }\n\n // Add requested fields from metadata\n if (fields && point.metadata) {\n for (const field of fields) {\n if (field in point.metadata) {\n const value = point.metadata[field];\n lines.push(`${field}: ${value}`);\n }\n }\n } else if (point.metadata && !fields) {\n // If no fields specified, show all metadata\n for (const [key, value] of Object.entries(point.metadata)) {\n lines.push(`${key}: ${value}`);\n }\n }\n\n return lines.join(\"<br>\");\n}\n\n/**\n * Determine selection mode from keyboard event\n */\nexport function getSelectionMode(event: { shiftKey: boolean; ctrlKey: boolean; metaKey: boolean }): SelectionMode {\n const ctrlOrCmd = event.ctrlKey || event.metaKey;\n\n if (event.shiftKey && ctrlOrCmd) {\n return \"toggle\";\n }\n if (event.shiftKey) {\n return \"add\";\n }\n if (ctrlOrCmd) {\n return \"remove\";\n }\n return \"replace\";\n}\n\n/**\n * Calculate axis range with padding.\n *\n * When `scale` is `\"log\"`, the returned range is in log10 units (what Plotly\n * expects for `type: \"log\"` axes), and padding is applied in log-space so that\n * the visual margin is proportional on the logarithmic axis.\n */\nexport function calculateAxisRange(\n data: ScatterPoint[],\n axis: \"x\" | \"y\",\n padding = 0.1,\n scale: \"linear\" | \"log\" = \"linear\",\n): [number, number] {\n const isLog = scale === \"log\";\n let min = Infinity;\n let max = -Infinity;\n\n for (const point of data) {\n const v = point[axis];\n if (!Number.isFinite(v)) continue;\n // log10 is undefined for non-positive values — skip them silently\n if (isLog && v <= 0) continue;\n // Plotly log axes expect range bounds in log10 units\n const mapped = isLog ? Math.log10(v) : v;\n if (mapped < min) min = mapped;\n if (mapped > max) max = mapped;\n }\n\n if (!Number.isFinite(min)) {\n return [0, 1];\n }\n\n if (min === max) {\n return [min - 1, max + 1];\n }\n\n const range = max - min;\n return [min - range * padding, max + range * padding];\n}\n\n/**\n * Apply selection to a set of point IDs\n */\nexport function applySelection(\n currentSelection: Set<string | number>,\n newIds: Set<string | number>,\n mode: SelectionMode,\n): Set<string | number> {\n const result = new Set(currentSelection);\n\n switch (mode) {\n case \"replace\":\n return new Set(newIds);\n\n case \"add\":\n for (const id of newIds) {\n result.add(id);\n }\n return result;\n\n case \"remove\":\n for (const id of newIds) {\n result.delete(id);\n }\n return result;\n\n case \"toggle\":\n for (const id of newIds) {\n if (result.has(id)) {\n result.delete(id);\n } else {\n result.add(id);\n }\n }\n return result;\n\n default:\n return result;\n }\n}\n\nexport const getPlotlyLayoutConfig = ({\n title,\n xAxis,\n yAxis,\n width,\n height,\n xRange,\n yRange,\n enableLassoSelection,\n enableBoxSelection,\n theme,\n}: {\n title: string | undefined;\n xAxis: AxisConfig;\n yAxis: AxisConfig;\n width: number;\n height: number;\n xRange: [number, number] | undefined;\n yRange: [number, number] | undefined;\n enableLassoSelection: boolean;\n enableBoxSelection: boolean;\n theme: PlotlyThemeColors;\n}): Partial<Plotly.Layout> => ({\n autosize: false,\n width,\n height,\n title: title\n ? {\n text: title,\n font: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n size: PLOT_CONSTANTS.TITLE_FONT_SIZE,\n color: theme.textColor,\n },\n x: 0.5,\n xanchor: \"center\",\n }\n : undefined,\n margin: {\n l: PLOT_CONSTANTS.MARGIN_LEFT,\n r: PLOT_CONSTANTS.MARGIN_RIGHT,\n t: title ? PLOT_CONSTANTS.MARGIN_TOP : PLOT_CONSTANTS.MARGIN_TOP - PLOT_CONSTANTS.TITLE_FONT_SIZE,\n b: PLOT_CONSTANTS.MARGIN_BOTTOM,\n },\n xaxis: {\n title: {\n text: xAxis.title || \"\",\n font: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n size: PLOT_CONSTANTS.AXIS_TITLE_FONT_SIZE,\n color: theme.textSecondary,\n },\n },\n type: xAxis.scale === \"log\" ? \"log\" : \"linear\",\n range: xRange,\n autorange: !xRange,\n gridcolor: theme.gridColor,\n linecolor: theme.lineColor,\n linewidth: PLOT_CONSTANTS.AXIS_LINE_WIDTH,\n tickfont: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n size: PLOT_CONSTANTS.AXIS_TICK_FONT_SIZE,\n color: theme.textColor,\n },\n zeroline: false,\n },\n yaxis: {\n title: {\n text: yAxis.title || \"\",\n font: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n size: PLOT_CONSTANTS.AXIS_TITLE_FONT_SIZE,\n color: theme.textSecondary,\n },\n },\n type: yAxis.scale === \"log\" ? \"log\" : \"linear\",\n range: yRange,\n autorange: !yRange,\n gridcolor: theme.gridColor,\n linecolor: theme.lineColor,\n linewidth: PLOT_CONSTANTS.AXIS_LINE_WIDTH,\n tickfont: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n size: PLOT_CONSTANTS.AXIS_TICK_FONT_SIZE,\n color: theme.textColor,\n },\n zeroline: false,\n },\n paper_bgcolor: theme.paperBg,\n plot_bgcolor: theme.plotBg,\n font: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n color: theme.textColor,\n },\n hovermode: \"closest\",\n dragmode: enableLassoSelection ? \"lasso\" : enableBoxSelection ? \"select\" : false,\n});\n"],"names":["calculateRange","data","field","min","max","point","value","getUniqueCategories","uniqueCategories","mapColors","colorMapping","color","COLORS","categories","colorMap","categoryColorMap","category","index","DEFAULT_CATEGORY_COLORS","mapShapes","shapeMapping","shape","shapeMap","defaultShapes","categoryShapeMap","mapSizes","sizeMapping","size","DEFAULT_MARKER_SIZE","sizeMap","categorySizeMap","range","sizeRange","DEFAULT_SIZE_RANGE","minSize","maxSize","normalized","downsampleData","config","DEFAULT_MAX_POINTS","maxPoints","lttbDownsample","bucketCentroid","start","end","dataLength","length","sumX","sumY","j","fallbackIdx","threshold","every","floor","abs","sampled","a","i","avgRangeStart","avgRangeEnd","avgX","avgY","rangeStart","rangeEnd","pointAX","pointAY","maxArea","maxAreaPoint","nextA","area","generateTooltipContent","fields","lines","key","getSelectionMode","event","ctrlOrCmd","calculateAxisRange","axis","padding","scale","isLog","v","mapped","applySelection","currentSelection","newIds","mode","result","id","getPlotlyLayoutConfig","title","xAxis","yAxis","width","height","xRange","yRange","enableLassoSelection","enableBoxSelection","theme","PLOT_CONSTANTS"],"mappings":"mHAuBO,SAASA,EAAeC,EAAsBC,EAA6C,CAChG,IAAIC,EAAM,OAAO,kBACbC,EAAM,OAAO,kBAEjB,UAAWC,KAASJ,EAAM,CACxB,MAAMK,EAAQD,EAAM,WAAWH,CAAK,EAChC,OAAOI,GAAU,UAAY,OAAO,SAASA,CAAK,IACpDH,EAAM,KAAK,IAAIA,EAAKG,CAAK,EACzBF,EAAM,KAAK,IAAIA,EAAKE,CAAK,EAE7B,CAGA,MAAI,CAAC,OAAO,SAASH,CAAG,GAAK,CAAC,OAAO,SAASC,CAAG,EACxC,CAAE,IAAK,EAAG,IAAK,CAAA,EAIpBD,IAAQC,EACH,CAAE,IAAKD,EAAM,EAAG,IAAKC,EAAM,CAAA,EAG7B,CAAE,IAAAD,EAAK,IAAAC,CAAA,CAChB,CAKO,SAASG,EAAoBN,EAAsBC,EAAyB,CACjF,MAAMM,EAAmBP,EACtB,IAAKI,GAAUA,EAAM,WAAWH,CAAK,CAAC,EACtC,OAAQI,GAA2B,OAAOA,GAAU,QAAQ,EAE/D,MAAO,CAAC,GAAG,IAAI,IAAIE,CAAgB,CAAC,EAAE,KAAA,CACxC,CAKO,SAASC,EAAUR,EAAsBS,EAAuC,CACrF,GAAI,CAACA,GAAgBA,EAAa,OAAS,SAAU,CACnD,MAAMC,EAAQD,GAAc,OAASE,EAAAA,OAAO,QAC5C,OAAO,IAAI,MAAMX,EAAK,MAAM,EAAE,KAAKU,CAAK,CAC1C,CAEA,GAAID,EAAa,OAAS,eAAiBA,EAAa,MAAO,CAC7D,MAAMG,EAAaN,EAAoBN,EAAMS,EAAa,KAAK,EACzDI,EAAWJ,EAAa,gBAAkB,CAAA,EAG1CK,EAA2C,CAAA,EACjD,OAAAF,EAAW,QAAQ,CAACG,EAAUC,IAAU,CACtCF,EAAiBC,CAAQ,EACvBF,EAASE,CAAQ,GAAKE,0BAAwBD,EAAQC,EAAAA,wBAAwB,MAAM,CACxF,CAAC,EAEMjB,EAAK,IAAKI,GAAU,CACzB,MAAMC,EAAQD,EAAM,WAAWK,EAAa,KAAM,EAClD,OAAOK,EAAiB,OAAOT,CAAK,CAAC,GAAKY,EAAAA,wBAAwB,CAAC,CACrE,CAAC,CACH,CAEA,OAAO,IAAI,MAAMjB,EAAK,MAAM,EAAE,KAAKW,EAAAA,OAAO,OAAO,CACnD,CAKO,SAASO,EAAUlB,EAAsBmB,EAAuC,CACrF,GAAI,CAACA,GAAgBA,EAAa,OAAS,SAAU,CACnD,MAAMC,EAAQD,GAAc,OAAS,SACrC,OAAO,IAAI,MAAMnB,EAAK,MAAM,EAAE,KAAKoB,CAAK,CAC1C,CAEA,GAAID,EAAa,OAAS,eAAiBA,EAAa,MAAO,CAC7D,MAAMP,EAAaN,EAAoBN,EAAMmB,EAAa,KAAK,EACzDE,EAAWF,EAAa,gBAAkB,CAAA,EAC1CG,EAAgB,CAAC,SAAU,SAAU,UAAW,QAAS,IAAK,cAAe,gBAAiB,MAAM,EAGpGC,EAA2C,CAAA,EACjD,OAAAX,EAAW,QAAQ,CAACG,EAAUC,IAAU,CACtCO,EAAiBR,CAAQ,EAAIM,EAASN,CAAQ,GAAKO,EAAcN,EAAQM,EAAc,MAAM,CAC/F,CAAC,EAEMtB,EAAK,IAAKI,GAAU,CACzB,MAAMC,EAAQD,EAAM,WAAWe,EAAa,KAAM,EAClD,OAAOI,EAAiB,OAAOlB,CAAK,CAAC,GAAK,QAC5C,CAAC,CACH,CAEA,OAAO,IAAI,MAAML,EAAK,MAAM,EAAE,KAAK,QAAQ,CAC7C,CAKO,SAASwB,EAASxB,EAAsByB,EAAqC,CAClF,GAAI,CAACA,GAAeA,EAAY,OAAS,SAAU,CACjD,MAAMC,EAAOD,GAAa,OAASE,EAAAA,oBACnC,OAAO,IAAI,MAAM3B,EAAK,MAAM,EAAE,KAAK0B,CAAI,CACzC,CAEA,GAAID,EAAY,OAAS,eAAiBA,EAAY,MAAO,CAC3D,MAAMb,EAAaN,EAAoBN,EAAMyB,EAAY,KAAK,EACxDG,EAAUH,EAAY,eAAiB,CAAA,EAGvCI,EAA0C,CAAA,EAChD,OAAAjB,EAAW,QAAQ,CAACG,EAAUC,IAAU,CACtCa,EAAgBd,CAAQ,EAAIa,EAAQb,CAAQ,GAAKY,EAAAA,oBAAsBX,EAAQ,CACjF,CAAC,EAEMhB,EAAK,IAAKI,GAAU,CACzB,MAAMC,EAAQD,EAAM,WAAWqB,EAAY,KAAM,EACjD,OAAOI,EAAgB,OAAOxB,CAAK,CAAC,GAAKsB,EAAAA,mBAC3C,CAAC,CACH,CAEA,GAAIF,EAAY,OAAS,cAAgBA,EAAY,MAAO,CAC1D,MAAMK,EACJL,EAAY,MAAQ,QAAaA,EAAY,MAAQ,OACjD,CAAE,IAAKA,EAAY,IAAK,IAAKA,EAAY,GAAA,EACzC1B,EAAeC,EAAMyB,EAAY,KAAK,EAEtCM,EAAYN,EAAY,WAAaO,EAAAA,mBACrC,CAACC,EAASC,CAAO,EAAIH,EAE3B,OAAO/B,EAAK,IAAKI,GAAU,CACzB,MAAMC,EAAQD,EAAM,WAAWqB,EAAY,KAAM,EACjD,GAAI,OAAOpB,GAAU,UAAY,OAAO,SAASA,CAAK,EAAG,CAEvD,MAAM8B,GAAc9B,EAAQyB,EAAM,MAAQA,EAAM,IAAMA,EAAM,KAC5D,OAAOG,EAAUE,GAAcD,EAAUD,EAC3C,CACA,OAAON,EAAAA,mBACT,CAAC,CACH,CAEA,OAAO,IAAI,MAAM3B,EAAK,MAAM,EAAE,KAAK2B,EAAAA,mBAAmB,CACxD,CAKO,SAASS,EAAepC,EAAsBqC,EAA4C,CAC/F,GAAI,CAACA,EAAO,SAAWrC,EAAK,SAAWqC,EAAO,WAAaC,EAAAA,oBACzD,OAAOtC,EAGT,MAAMuC,EAAYF,EAAO,WAAaC,EAAAA,mBAGtC,OAFiBD,EAAO,UAAY,UAEnB,OAERG,EAAexC,EAAMuC,CAAS,EAGhCvC,CACT,CAOA,SAASyC,EACPzC,EACA0C,EACAC,EACAC,EAC0B,CAC1B,MAAMC,EAASF,EAAMD,EACrB,GAAIG,EAAS,EAAG,CACd,IAAIC,EAAO,EACPC,EAAO,EACX,QAASC,EAAIN,EAAOM,EAAIL,EAAKK,IAC3BF,GAAQ9C,EAAKgD,CAAC,EAAE,EAChBD,GAAQ/C,EAAKgD,CAAC,EAAE,EAElB,MAAO,CAAE,EAAGF,EAAOD,EAAQ,EAAGE,EAAOF,CAAA,CACvC,CACA,MAAMI,EAAc,KAAK,IAAI,EAAG,KAAK,IAAIP,EAAOE,EAAa,CAAC,CAAC,EAC/D,MAAO,CAAE,EAAG5C,EAAKiD,CAAW,EAAE,EAAG,EAAGjD,EAAKiD,CAAW,EAAE,CAAA,CACxD,CAQO,SAAST,EAAexC,EAAsBkD,EAAmC,CACtF,MAAMN,EAAa5C,EAAK,OAGxB,GAAIkD,GAAa,GAAKN,IAAe,QAAU,CAAA,EAE/C,GAAIM,GAAaN,EAAY,OAAO5C,EACpC,GAAIkD,IAAc,EAAG,MAAO,CAAClD,EAAK,CAAC,CAAC,EACpC,GAAIkD,IAAc,EAAG,MAAO,CAAClD,EAAK,CAAC,EAAGA,EAAK4C,EAAa,CAAC,CAAC,EAM1D,MAAMO,GAASP,EAAa,IAAMM,EAAY,GAExC,CAAE,MAAAE,EAAO,IAAAC,EAAK,IAAAnD,CAAA,EAAQ,KACtBoD,EAA0B,CAACtD,EAAK,CAAC,CAAC,EAGxC,IAAIuD,EAAI,EAER,QAASC,EAAI,EAAGA,EAAIN,EAAY,EAAGM,IAAK,CAGtC,MAAMC,EAAgBvD,EAAIkD,GAAOI,EAAI,GAAKL,CAAK,EAAI,EAAGP,EAAa,CAAC,EAC9Dc,EAAcxD,EAAIkD,GAAOI,EAAI,GAAKL,CAAK,EAAI,EAAGP,CAAU,EACxD,CAAE,EAAGe,EAAM,EAAGC,CAAA,EAASnB,EAAezC,EAAMyD,EAAeC,EAAad,CAAU,EAIlFiB,EAAa3D,EAAIkD,EAAMI,EAAIL,CAAK,EAAI,EAAGP,EAAa,CAAC,EACrDkB,EAAW5D,EAAIkD,GAAOI,EAAI,GAAKL,CAAK,EAAI,EAAGP,EAAa,CAAC,EAEzDmB,EAAU/D,EAAKuD,CAAC,EAAE,EAClBS,EAAUhE,EAAKuD,CAAC,EAAE,EAGxB,IAAIU,EAAU,GACVC,EAA6BlE,EAAK6D,CAAU,EAC5CM,EAAQN,EAEZ,QAASb,EAAIa,EAAYb,EAAIc,EAAUd,IAAK,CAG1C,MAAMoB,EAAOf,GAAKU,EAAUJ,IAAS3D,EAAKgD,CAAC,EAAE,EAAIgB,IAAYD,EAAU/D,EAAKgD,CAAC,EAAE,IAAMY,EAAOI,EAAQ,EAAI,GACpGI,EAAOH,IACTA,EAAUG,EACVF,EAAelE,EAAKgD,CAAC,EACrBmB,EAAQnB,EAEZ,CAEAM,EAAQ,KAAKY,CAAY,EACzBX,EAAIY,CACN,CAEA,OAAAb,EAAQ,KAAKtD,EAAK4C,EAAa,CAAC,CAAC,EAE1BU,CACT,CAKO,SAASe,EAAuBjE,EAAqBkE,EAA2B,CACrF,MAAMC,EAAkB,CAAA,EAYxB,GATAA,EAAM,KAAK,MAAMnE,EAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,EACrCmE,EAAM,KAAK,MAAMnE,EAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,EAGjCA,EAAM,OACRmE,EAAM,KAAK,UAAUnE,EAAM,KAAK,EAAE,EAIhCkE,GAAUlE,EAAM,UAClB,UAAWH,KAASqE,EAClB,GAAIrE,KAASG,EAAM,SAAU,CAC3B,MAAMC,EAAQD,EAAM,SAASH,CAAK,EAClCsE,EAAM,KAAK,GAAGtE,CAAK,KAAKI,CAAK,EAAE,CACjC,UAEOD,EAAM,UAAY,CAACkE,EAE5B,SAAW,CAACE,EAAKnE,CAAK,IAAK,OAAO,QAAQD,EAAM,QAAQ,EACtDmE,EAAM,KAAK,GAAGC,CAAG,KAAKnE,CAAK,EAAE,EAIjC,OAAOkE,EAAM,KAAK,MAAM,CAC1B,CAKO,SAASE,EAAiBC,EAAiF,CAChH,MAAMC,EAAYD,EAAM,SAAWA,EAAM,QAEzC,OAAIA,EAAM,UAAYC,EACb,SAELD,EAAM,SACD,MAELC,EACK,SAEF,SACT,CASO,SAASC,EACd5E,EACA6E,EACAC,EAAU,GACVC,EAA0B,SACR,CAClB,MAAMC,EAAQD,IAAU,MACxB,IAAI7E,EAAM,IACNC,EAAM,KAEV,UAAWC,KAASJ,EAAM,CACxB,MAAMiF,EAAI7E,EAAMyE,CAAI,EAGpB,GAFI,CAAC,OAAO,SAASI,CAAC,GAElBD,GAASC,GAAK,EAAG,SAErB,MAAMC,EAASF,EAAQ,KAAK,MAAMC,CAAC,EAAIA,EACnCC,EAAShF,IAAKA,EAAMgF,GACpBA,EAAS/E,IAAKA,EAAM+E,EAC1B,CAEA,GAAI,CAAC,OAAO,SAAShF,CAAG,EACtB,MAAO,CAAC,EAAG,CAAC,EAGd,GAAIA,IAAQC,EACV,MAAO,CAACD,EAAM,EAAGC,EAAM,CAAC,EAG1B,MAAM2B,EAAQ3B,EAAMD,EACpB,MAAO,CAACA,EAAM4B,EAAQgD,EAAS3E,EAAM2B,EAAQgD,CAAO,CACtD,CAKO,SAASK,EACdC,EACAC,EACAC,EACsB,CACtB,MAAMC,EAAS,IAAI,IAAIH,CAAgB,EAEvC,OAAQE,EAAA,CACN,IAAK,UACH,OAAO,IAAI,IAAID,CAAM,EAEvB,IAAK,MACH,UAAWG,KAAMH,EACfE,EAAO,IAAIC,CAAE,EAEf,OAAOD,EAET,IAAK,SACH,UAAWC,KAAMH,EACfE,EAAO,OAAOC,CAAE,EAElB,OAAOD,EAET,IAAK,SACH,UAAWC,KAAMH,EACXE,EAAO,IAAIC,CAAE,EACfD,EAAO,OAAOC,CAAE,EAEhBD,EAAO,IAAIC,CAAE,EAGjB,OAAOD,EAET,QACE,OAAOA,CAAA,CAEb,CAEO,MAAME,EAAwB,CAAC,CACpC,MAAAC,EACA,MAAAC,EACA,MAAAC,EACA,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,OAAAC,EACA,qBAAAC,EACA,mBAAAC,EACA,MAAAC,CACF,KAW+B,CAC7B,SAAU,GACV,MAAAN,EACA,OAAAC,EACA,MAAOJ,EACH,CACE,KAAMA,EACN,KAAM,CACJ,OAAQU,EAAAA,eAAe,YACvB,KAAMA,EAAAA,eAAe,gBACrB,MAAOD,EAAM,SAAA,EAEf,EAAG,GACH,QAAS,QAAA,EAEX,OACJ,OAAQ,CACN,EAAGC,EAAAA,eAAe,YAClB,EAAGA,EAAAA,eAAe,aAClB,EAAGV,EAAQU,iBAAe,WAAaA,EAAAA,eAAe,WAAaA,EAAAA,eAAe,gBAClF,EAAGA,EAAAA,eAAe,aAAA,EAEpB,MAAO,CACL,MAAO,CACL,KAAMT,EAAM,OAAS,GACrB,KAAM,CACJ,OAAQS,EAAAA,eAAe,YACvB,KAAMA,EAAAA,eAAe,qBACrB,MAAOD,EAAM,aAAA,CACf,EAEF,KAAMR,EAAM,QAAU,MAAQ,MAAQ,SACtC,MAAOI,EACP,UAAW,CAACA,EACZ,UAAWI,EAAM,UACjB,UAAWA,EAAM,UACjB,UAAWC,EAAAA,eAAe,gBAC1B,SAAU,CACR,OAAQA,EAAAA,eAAe,YACvB,KAAMA,EAAAA,eAAe,oBACrB,MAAOD,EAAM,SAAA,EAEf,SAAU,EAAA,EAEZ,MAAO,CACL,MAAO,CACL,KAAMP,EAAM,OAAS,GACrB,KAAM,CACJ,OAAQQ,EAAAA,eAAe,YACvB,KAAMA,EAAAA,eAAe,qBACrB,MAAOD,EAAM,aAAA,CACf,EAEF,KAAMP,EAAM,QAAU,MAAQ,MAAQ,SACtC,MAAOI,EACP,UAAW,CAACA,EACZ,UAAWG,EAAM,UACjB,UAAWA,EAAM,UACjB,UAAWC,EAAAA,eAAe,gBAC1B,SAAU,CACR,OAAQA,EAAAA,eAAe,YACvB,KAAMA,EAAAA,eAAe,oBACrB,MAAOD,EAAM,SAAA,EAEf,SAAU,EAAA,EAEZ,cAAeA,EAAM,QACrB,aAAcA,EAAM,OACpB,KAAM,CACJ,OAAQC,EAAAA,eAAe,YACvB,MAAOD,EAAM,SAAA,EAEf,UAAW,UACX,SAAUF,EAAuB,QAAUC,EAAqB,SAAW,EAC7E"}
@@ -0,0 +1,72 @@
1
+ import { AxisConfig, ColorMapping, DownsamplingConfig, ScatterPoint, SelectionMode, ShapeMapping, SizeMapping } from './types';
2
+ import { PlotlyThemeColors } from '../../../hooks/use-plotly-theme';
3
+ /**
4
+ * Calculate min and max values for a numeric field in the data
5
+ */
6
+ export declare function calculateRange(data: ScatterPoint[], field: string): {
7
+ min: number;
8
+ max: number;
9
+ };
10
+ /**
11
+ * Get unique categorical values from a field
12
+ */
13
+ export declare function getUniqueCategories(data: ScatterPoint[], field: string): string[];
14
+ /**
15
+ * Map colors based on color mapping configuration
16
+ */
17
+ export declare function mapColors(data: ScatterPoint[], colorMapping?: ColorMapping): string[];
18
+ /**
19
+ * Map shapes based on shape mapping configuration
20
+ */
21
+ export declare function mapShapes(data: ScatterPoint[], shapeMapping?: ShapeMapping): string[];
22
+ /**
23
+ * Map sizes based on size mapping configuration
24
+ */
25
+ export declare function mapSizes(data: ScatterPoint[], sizeMapping?: SizeMapping): number[];
26
+ /**
27
+ * Downsample data using specified strategy
28
+ */
29
+ export declare function downsampleData(data: ScatterPoint[], config: DownsamplingConfig): ScatterPoint[];
30
+ /**
31
+ * Largest Triangle Three Buckets (LTTB) downsampling algorithm.
32
+ * Preserves the visual shape of the data by maximizing the triangle area
33
+ * formed by adjacent bucket centroids and each candidate point.
34
+ * Exported for unit testing
35
+ */
36
+ export declare function lttbDownsample(data: ScatterPoint[], threshold: number): ScatterPoint[];
37
+ /**
38
+ * Generate default tooltip content
39
+ */
40
+ export declare function generateTooltipContent(point: ScatterPoint, fields?: string[]): string;
41
+ /**
42
+ * Determine selection mode from keyboard event
43
+ */
44
+ export declare function getSelectionMode(event: {
45
+ shiftKey: boolean;
46
+ ctrlKey: boolean;
47
+ metaKey: boolean;
48
+ }): SelectionMode;
49
+ /**
50
+ * Calculate axis range with padding.
51
+ *
52
+ * When `scale` is `"log"`, the returned range is in log10 units (what Plotly
53
+ * expects for `type: "log"` axes), and padding is applied in log-space so that
54
+ * the visual margin is proportional on the logarithmic axis.
55
+ */
56
+ export declare function calculateAxisRange(data: ScatterPoint[], axis: "x" | "y", padding?: number, scale?: "linear" | "log"): [number, number];
57
+ /**
58
+ * Apply selection to a set of point IDs
59
+ */
60
+ export declare function applySelection(currentSelection: Set<string | number>, newIds: Set<string | number>, mode: SelectionMode): Set<string | number>;
61
+ export declare const getPlotlyLayoutConfig: ({ title, xAxis, yAxis, width, height, xRange, yRange, enableLassoSelection, enableBoxSelection, theme, }: {
62
+ title: string | undefined;
63
+ xAxis: AxisConfig;
64
+ yAxis: AxisConfig;
65
+ width: number;
66
+ height: number;
67
+ xRange: [number, number] | undefined;
68
+ yRange: [number, number] | undefined;
69
+ enableLassoSelection: boolean;
70
+ enableBoxSelection: boolean;
71
+ theme: PlotlyThemeColors;
72
+ }) => Partial<Plotly.Layout>;
@@ -0,0 +1,261 @@
1
+ import { DEFAULT_MAX_POINTS as E, COLORS as d, DEFAULT_CATEGORY_COLORS as T, DEFAULT_MARKER_SIZE as y, DEFAULT_SIZE_RANGE as v, PLOT_CONSTANTS as f } from "./constants.js";
2
+ function R(t, e) {
3
+ let r = Number.POSITIVE_INFINITY, n = Number.NEGATIVE_INFINITY;
4
+ for (const o of t) {
5
+ const l = o.metadata?.[e];
6
+ typeof l == "number" && Number.isFinite(l) && (r = Math.min(r, l), n = Math.max(n, l));
7
+ }
8
+ return !Number.isFinite(r) || !Number.isFinite(n) ? { min: 0, max: 1 } : r === n ? { min: r - 1, max: n + 1 } : { min: r, max: n };
9
+ }
10
+ function _(t, e) {
11
+ const r = t.map((n) => n.metadata?.[e]).filter((n) => typeof n == "string");
12
+ return [...new Set(r)].sort();
13
+ }
14
+ function X(t, e) {
15
+ if (!e || e.type === "static") {
16
+ const r = e?.value || d.primary;
17
+ return new Array(t.length).fill(r);
18
+ }
19
+ if (e.type === "categorical" && e.field) {
20
+ const r = _(t, e.field), n = e.categoryColors || {}, o = {};
21
+ return r.forEach((l, i) => {
22
+ o[l] = n[l] || T[i % T.length];
23
+ }), t.map((l) => {
24
+ const i = l.metadata?.[e.field];
25
+ return o[String(i)] || T[0];
26
+ });
27
+ }
28
+ return new Array(t.length).fill(d.primary);
29
+ }
30
+ function P(t, e) {
31
+ if (!e || e.type === "static") {
32
+ const r = e?.value || "circle";
33
+ return new Array(t.length).fill(r);
34
+ }
35
+ if (e.type === "categorical" && e.field) {
36
+ const r = _(t, e.field), n = e.categoryShapes || {}, o = ["circle", "square", "diamond", "cross", "x", "triangle-up", "triangle-down", "star"], l = {};
37
+ return r.forEach((i, a) => {
38
+ l[i] = n[i] || o[a % o.length];
39
+ }), t.map((i) => {
40
+ const a = i.metadata?.[e.field];
41
+ return l[String(a)] || "circle";
42
+ });
43
+ }
44
+ return new Array(t.length).fill("circle");
45
+ }
46
+ function G(t, e) {
47
+ if (!e || e.type === "static") {
48
+ const r = e?.value || y;
49
+ return new Array(t.length).fill(r);
50
+ }
51
+ if (e.type === "categorical" && e.field) {
52
+ const r = _(t, e.field), n = e.categorySizes || {}, o = {};
53
+ return r.forEach((l, i) => {
54
+ o[l] = n[l] || y + i * 2;
55
+ }), t.map((l) => {
56
+ const i = l.metadata?.[e.field];
57
+ return o[String(i)] || y;
58
+ });
59
+ }
60
+ if (e.type === "continuous" && e.field) {
61
+ const r = e.min !== void 0 && e.max !== void 0 ? { min: e.min, max: e.max } : R(t, e.field), n = e.sizeRange || v, [o, l] = n;
62
+ return t.map((i) => {
63
+ const a = i.metadata?.[e.field];
64
+ if (typeof a == "number" && Number.isFinite(a)) {
65
+ const s = (a - r.min) / (r.max - r.min);
66
+ return o + s * (l - o);
67
+ }
68
+ return y;
69
+ });
70
+ }
71
+ return new Array(t.length).fill(y);
72
+ }
73
+ function D(t, e) {
74
+ if (!e.enabled || t.length <= (e.maxPoints || E))
75
+ return t;
76
+ const r = e.maxPoints || E;
77
+ return (e.strategy || "lttb") === "lttb" ? Y(t, r) : t;
78
+ }
79
+ function h(t, e, r, n) {
80
+ const o = r - e;
81
+ if (o > 0) {
82
+ let i = 0, a = 0;
83
+ for (let s = e; s < r; s++)
84
+ i += t[s].x, a += t[s].y;
85
+ return { x: i / o, y: a / o };
86
+ }
87
+ const l = Math.max(0, Math.min(e, n - 1));
88
+ return { x: t[l].x, y: t[l].y };
89
+ }
90
+ function Y(t, e) {
91
+ const r = t.length;
92
+ if (e <= 0 || r === 0) return [];
93
+ if (e >= r) return t;
94
+ if (e === 1) return [t[0]];
95
+ if (e === 2) return [t[0], t[r - 1]];
96
+ const n = (r - 2) / (e - 2), { floor: o, abs: l, min: i } = Math, a = [t[0]];
97
+ let s = 0;
98
+ for (let c = 0; c < e - 2; c++) {
99
+ const u = i(o((c + 1) * n) + 1, r - 1), O = i(o((c + 2) * n) + 1, r), { x: b, y: L } = h(t, u, O, r), I = i(o(c * n) + 1, r - 1), C = i(o((c + 1) * n) + 1, r - 1), x = t[s].x, S = t[s].y;
100
+ let g = -1, A = t[I], N = I;
101
+ for (let m = I; m < C; m++) {
102
+ const F = l((x - b) * (t[m].y - S) - (x - t[m].x) * (L - S)) * 0.5;
103
+ F > g && (g = F, A = t[m], N = m);
104
+ }
105
+ a.push(A), s = N;
106
+ }
107
+ return a.push(t[r - 1]), a;
108
+ }
109
+ function Z(t, e) {
110
+ const r = [];
111
+ if (r.push(`X: ${t.x.toFixed(2)}`), r.push(`Y: ${t.y.toFixed(2)}`), t.label && r.push(`Label: ${t.label}`), e && t.metadata) {
112
+ for (const n of e)
113
+ if (n in t.metadata) {
114
+ const o = t.metadata[n];
115
+ r.push(`${n}: ${o}`);
116
+ }
117
+ } else if (t.metadata && !e)
118
+ for (const [n, o] of Object.entries(t.metadata))
119
+ r.push(`${n}: ${o}`);
120
+ return r.join("<br>");
121
+ }
122
+ function K(t) {
123
+ const e = t.ctrlKey || t.metaKey;
124
+ return t.shiftKey && e ? "toggle" : t.shiftKey ? "add" : e ? "remove" : "replace";
125
+ }
126
+ function $(t, e, r = 0.1, n = "linear") {
127
+ const o = n === "log";
128
+ let l = 1 / 0, i = -1 / 0;
129
+ for (const s of t) {
130
+ const c = s[e];
131
+ if (!Number.isFinite(c) || o && c <= 0) continue;
132
+ const u = o ? Math.log10(c) : c;
133
+ u < l && (l = u), u > i && (i = u);
134
+ }
135
+ if (!Number.isFinite(l))
136
+ return [0, 1];
137
+ if (l === i)
138
+ return [l - 1, i + 1];
139
+ const a = i - l;
140
+ return [l - a * r, i + a * r];
141
+ }
142
+ function k(t, e, r) {
143
+ const n = new Set(t);
144
+ switch (r) {
145
+ case "replace":
146
+ return new Set(e);
147
+ case "add":
148
+ for (const o of e)
149
+ n.add(o);
150
+ return n;
151
+ case "remove":
152
+ for (const o of e)
153
+ n.delete(o);
154
+ return n;
155
+ case "toggle":
156
+ for (const o of e)
157
+ n.has(o) ? n.delete(o) : n.add(o);
158
+ return n;
159
+ default:
160
+ return n;
161
+ }
162
+ }
163
+ const U = ({
164
+ title: t,
165
+ xAxis: e,
166
+ yAxis: r,
167
+ width: n,
168
+ height: o,
169
+ xRange: l,
170
+ yRange: i,
171
+ enableLassoSelection: a,
172
+ enableBoxSelection: s,
173
+ theme: c
174
+ }) => ({
175
+ autosize: !1,
176
+ width: n,
177
+ height: o,
178
+ title: t ? {
179
+ text: t,
180
+ font: {
181
+ family: f.FONT_FAMILY,
182
+ size: f.TITLE_FONT_SIZE,
183
+ color: c.textColor
184
+ },
185
+ x: 0.5,
186
+ xanchor: "center"
187
+ } : void 0,
188
+ margin: {
189
+ l: f.MARGIN_LEFT,
190
+ r: f.MARGIN_RIGHT,
191
+ t: t ? f.MARGIN_TOP : f.MARGIN_TOP - f.TITLE_FONT_SIZE,
192
+ b: f.MARGIN_BOTTOM
193
+ },
194
+ xaxis: {
195
+ title: {
196
+ text: e.title || "",
197
+ font: {
198
+ family: f.FONT_FAMILY,
199
+ size: f.AXIS_TITLE_FONT_SIZE,
200
+ color: c.textSecondary
201
+ }
202
+ },
203
+ type: e.scale === "log" ? "log" : "linear",
204
+ range: l,
205
+ autorange: !l,
206
+ gridcolor: c.gridColor,
207
+ linecolor: c.lineColor,
208
+ linewidth: f.AXIS_LINE_WIDTH,
209
+ tickfont: {
210
+ family: f.FONT_FAMILY,
211
+ size: f.AXIS_TICK_FONT_SIZE,
212
+ color: c.textColor
213
+ },
214
+ zeroline: !1
215
+ },
216
+ yaxis: {
217
+ title: {
218
+ text: r.title || "",
219
+ font: {
220
+ family: f.FONT_FAMILY,
221
+ size: f.AXIS_TITLE_FONT_SIZE,
222
+ color: c.textSecondary
223
+ }
224
+ },
225
+ type: r.scale === "log" ? "log" : "linear",
226
+ range: i,
227
+ autorange: !i,
228
+ gridcolor: c.gridColor,
229
+ linecolor: c.lineColor,
230
+ linewidth: f.AXIS_LINE_WIDTH,
231
+ tickfont: {
232
+ family: f.FONT_FAMILY,
233
+ size: f.AXIS_TICK_FONT_SIZE,
234
+ color: c.textColor
235
+ },
236
+ zeroline: !1
237
+ },
238
+ paper_bgcolor: c.paperBg,
239
+ plot_bgcolor: c.plotBg,
240
+ font: {
241
+ family: f.FONT_FAMILY,
242
+ color: c.textColor
243
+ },
244
+ hovermode: "closest",
245
+ dragmode: a ? "lasso" : s ? "select" : !1
246
+ });
247
+ export {
248
+ k as applySelection,
249
+ $ as calculateAxisRange,
250
+ R as calculateRange,
251
+ D as downsampleData,
252
+ Z as generateTooltipContent,
253
+ U as getPlotlyLayoutConfig,
254
+ K as getSelectionMode,
255
+ _ as getUniqueCategories,
256
+ Y as lttbDownsample,
257
+ X as mapColors,
258
+ P as mapShapes,
259
+ G as mapSizes
260
+ };
261
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/components/charts/ScatterPlotInteractive/utils.ts"],"sourcesContent":["import {\n COLORS,\n DEFAULT_CATEGORY_COLORS,\n DEFAULT_MAX_POINTS,\n DEFAULT_MARKER_SIZE,\n DEFAULT_SIZE_RANGE,\n PLOT_CONSTANTS,\n} from \"./constants\";\n\nimport type {\n AxisConfig,\n ColorMapping,\n DownsamplingConfig,\n ScatterPoint,\n SelectionMode,\n ShapeMapping,\n SizeMapping,\n} from \"./types\";\nimport type { PlotlyThemeColors } from \"@/hooks/use-plotly-theme\";\n\n/**\n * Calculate min and max values for a numeric field in the data\n */\nexport function calculateRange(data: ScatterPoint[], field: string): { min: number; max: number } {\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n for (const point of data) {\n const value = point.metadata?.[field];\n if (typeof value === \"number\" && Number.isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n // Handle edge case where all values are invalid\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n return { min: 0, max: 1 };\n }\n\n // Handle edge case where min === max\n if (min === max) {\n return { min: min - 1, max: max + 1 };\n }\n\n return { min, max };\n}\n\n/**\n * Get unique categorical values from a field\n */\nexport function getUniqueCategories(data: ScatterPoint[], field: string): string[] {\n const uniqueCategories = data\n .map((point) => point.metadata?.[field])\n .filter((value): value is string => typeof value === \"string\");\n\n return [...new Set(uniqueCategories)].sort();\n}\n\n/**\n * Map colors based on color mapping configuration\n */\nexport function mapColors(data: ScatterPoint[], colorMapping?: ColorMapping): string[] {\n if (!colorMapping || colorMapping.type === \"static\") {\n const color = colorMapping?.value || COLORS.primary;\n return new Array(data.length).fill(color);\n }\n\n if (colorMapping.type === \"categorical\" && colorMapping.field) {\n const categories = getUniqueCategories(data, colorMapping.field);\n const colorMap = colorMapping.categoryColors || {};\n\n // Assign default colors to categories without explicit colors\n const categoryColorMap: Record<string, string> = {};\n categories.forEach((category, index) => {\n categoryColorMap[category] =\n colorMap[category] || DEFAULT_CATEGORY_COLORS[index % DEFAULT_CATEGORY_COLORS.length];\n });\n\n return data.map((point) => {\n const value = point.metadata?.[colorMapping.field!];\n return categoryColorMap[String(value)] || DEFAULT_CATEGORY_COLORS[0];\n });\n }\n\n return new Array(data.length).fill(COLORS.primary);\n}\n\n/**\n * Map shapes based on shape mapping configuration\n */\nexport function mapShapes(data: ScatterPoint[], shapeMapping?: ShapeMapping): string[] {\n if (!shapeMapping || shapeMapping.type === \"static\") {\n const shape = shapeMapping?.value || \"circle\";\n return new Array(data.length).fill(shape);\n }\n\n if (shapeMapping.type === \"categorical\" && shapeMapping.field) {\n const categories = getUniqueCategories(data, shapeMapping.field);\n const shapeMap = shapeMapping.categoryShapes || {};\n const defaultShapes = [\"circle\", \"square\", \"diamond\", \"cross\", \"x\", \"triangle-up\", \"triangle-down\", \"star\"];\n\n // Assign default shapes to categories without explicit shapes\n const categoryShapeMap: Record<string, string> = {};\n categories.forEach((category, index) => {\n categoryShapeMap[category] = shapeMap[category] || defaultShapes[index % defaultShapes.length];\n });\n\n return data.map((point) => {\n const value = point.metadata?.[shapeMapping.field!];\n return categoryShapeMap[String(value)] || \"circle\";\n });\n }\n\n return new Array(data.length).fill(\"circle\");\n}\n\n/**\n * Map sizes based on size mapping configuration\n */\nexport function mapSizes(data: ScatterPoint[], sizeMapping?: SizeMapping): number[] {\n if (!sizeMapping || sizeMapping.type === \"static\") {\n const size = sizeMapping?.value || DEFAULT_MARKER_SIZE;\n return new Array(data.length).fill(size);\n }\n\n if (sizeMapping.type === \"categorical\" && sizeMapping.field) {\n const categories = getUniqueCategories(data, sizeMapping.field);\n const sizeMap = sizeMapping.categorySizes || {};\n\n // Assign default sizes to categories without explicit sizes\n const categorySizeMap: Record<string, number> = {};\n categories.forEach((category, index) => {\n categorySizeMap[category] = sizeMap[category] || DEFAULT_MARKER_SIZE + index * 2;\n });\n\n return data.map((point) => {\n const value = point.metadata?.[sizeMapping.field!];\n return categorySizeMap[String(value)] || DEFAULT_MARKER_SIZE;\n });\n }\n\n if (sizeMapping.type === \"continuous\" && sizeMapping.field) {\n const range =\n sizeMapping.min !== undefined && sizeMapping.max !== undefined\n ? { min: sizeMapping.min, max: sizeMapping.max }\n : calculateRange(data, sizeMapping.field);\n\n const sizeRange = sizeMapping.sizeRange || DEFAULT_SIZE_RANGE;\n const [minSize, maxSize] = sizeRange;\n\n return data.map((point) => {\n const value = point.metadata?.[sizeMapping.field!];\n if (typeof value === \"number\" && Number.isFinite(value)) {\n // Normalize and map to size range\n const normalized = (value - range.min) / (range.max - range.min);\n return minSize + normalized * (maxSize - minSize);\n }\n return DEFAULT_MARKER_SIZE;\n });\n }\n\n return new Array(data.length).fill(DEFAULT_MARKER_SIZE);\n}\n\n/**\n * Downsample data using specified strategy\n */\nexport function downsampleData(data: ScatterPoint[], config: DownsamplingConfig): ScatterPoint[] {\n if (!config.enabled || data.length <= (config.maxPoints || DEFAULT_MAX_POINTS)) {\n return data;\n }\n\n const maxPoints = config.maxPoints || DEFAULT_MAX_POINTS;\n const strategy = config.strategy || \"lttb\";\n\n if (strategy === \"lttb\") {\n // Largest Triangle Three Buckets algorithm\n return lttbDownsample(data, maxPoints);\n }\n\n return data;\n}\n\n/**\n * Compute the (x, y) centroid of data[start..end).\n * Falls back to the point at clamp(start, 0, dataLength-1) when the range is\n * empty (only reachable under extreme floating-point drift) to prevent NaN.\n */\nfunction bucketCentroid(\n data: ScatterPoint[],\n start: number,\n end: number,\n dataLength: number,\n): { x: number; y: number } {\n const length = end - start;\n if (length > 0) {\n let sumX = 0;\n let sumY = 0;\n for (let j = start; j < end; j++) {\n sumX += data[j].x;\n sumY += data[j].y;\n }\n return { x: sumX / length, y: sumY / length };\n }\n const fallbackIdx = Math.max(0, Math.min(start, dataLength - 1));\n return { x: data[fallbackIdx].x, y: data[fallbackIdx].y };\n}\n\n/**\n * Largest Triangle Three Buckets (LTTB) downsampling algorithm.\n * Preserves the visual shape of the data by maximizing the triangle area\n * formed by adjacent bucket centroids and each candidate point.\n * Exported for unit testing\n */\nexport function lttbDownsample(data: ScatterPoint[], threshold: number): ScatterPoint[] {\n const dataLength = data.length;\n\n // --- Edge cases ---\n if (threshold <= 0 || dataLength === 0) return [];\n // No downsampling needed; return the original reference unchanged.\n if (threshold >= dataLength) return data;\n if (threshold === 1) return [data[0]];\n if (threshold === 2) return [data[0], data[dataLength - 1]];\n\n // At this point: 3 <= threshold < dataLength, so dataLength >= 4.\n // Spread (dataLength - 2) interior points across (threshold - 2) buckets,\n // keeping the first and last points fixed outside the buckets.\n // With threshold < dataLength, every > 1, so no bucket is ever empty.\n const every = (dataLength - 2) / (threshold - 2);\n\n const { floor, abs, min } = Math;\n const sampled: ScatterPoint[] = [data[0]];\n\n // Index of the previously selected point — left vertex A of the triangle.\n let a = 0;\n\n for (let i = 0; i < threshold - 2; i++) {\n // Centroid of the *next* bucket — right vertex C of the triangle.\n // Biases candidate selection toward points that preserve visual variance.\n const avgRangeStart = min(floor((i + 1) * every) + 1, dataLength - 1);\n const avgRangeEnd = min(floor((i + 2) * every) + 1, dataLength);\n const { x: avgX, y: avgY } = bucketCentroid(data, avgRangeStart, avgRangeEnd, dataLength);\n\n // Boundaries of the current bucket — middle vertex B candidates.\n // Clamped to valid index range to guard against floating-point drift.\n const rangeStart = min(floor(i * every) + 1, dataLength - 1);\n const rangeEnd = min(floor((i + 1) * every) + 1, dataLength - 1);\n\n const pointAX = data[a].x;\n const pointAY = data[a].y;\n\n // Safe fallback: first point in the bucket, used when the bucket is degenerate.\n let maxArea = -1;\n let maxAreaPoint: ScatterPoint = data[rangeStart];\n let nextA = rangeStart;\n\n for (let j = rangeStart; j < rangeEnd; j++) {\n // Area of the triangle formed by A (prev selected), B (candidate), C (next centroid).\n // The point maximising this area is the most visually significant in the bucket.\n const area = abs((pointAX - avgX) * (data[j].y - pointAY) - (pointAX - data[j].x) * (avgY - pointAY)) * 0.5;\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n\n sampled.push(maxAreaPoint);\n a = nextA;\n }\n\n sampled.push(data[dataLength - 1]); // Always include the last point.\n\n return sampled;\n}\n\n/**\n * Generate default tooltip content\n */\nexport function generateTooltipContent(point: ScatterPoint, fields?: string[]): string {\n const lines: string[] = [];\n\n // Always include x, y\n lines.push(`X: ${point.x.toFixed(2)}`);\n lines.push(`Y: ${point.y.toFixed(2)}`);\n\n // Add label if present\n if (point.label) {\n lines.push(`Label: ${point.label}`);\n }\n\n // Add requested fields from metadata\n if (fields && point.metadata) {\n for (const field of fields) {\n if (field in point.metadata) {\n const value = point.metadata[field];\n lines.push(`${field}: ${value}`);\n }\n }\n } else if (point.metadata && !fields) {\n // If no fields specified, show all metadata\n for (const [key, value] of Object.entries(point.metadata)) {\n lines.push(`${key}: ${value}`);\n }\n }\n\n return lines.join(\"<br>\");\n}\n\n/**\n * Determine selection mode from keyboard event\n */\nexport function getSelectionMode(event: { shiftKey: boolean; ctrlKey: boolean; metaKey: boolean }): SelectionMode {\n const ctrlOrCmd = event.ctrlKey || event.metaKey;\n\n if (event.shiftKey && ctrlOrCmd) {\n return \"toggle\";\n }\n if (event.shiftKey) {\n return \"add\";\n }\n if (ctrlOrCmd) {\n return \"remove\";\n }\n return \"replace\";\n}\n\n/**\n * Calculate axis range with padding.\n *\n * When `scale` is `\"log\"`, the returned range is in log10 units (what Plotly\n * expects for `type: \"log\"` axes), and padding is applied in log-space so that\n * the visual margin is proportional on the logarithmic axis.\n */\nexport function calculateAxisRange(\n data: ScatterPoint[],\n axis: \"x\" | \"y\",\n padding = 0.1,\n scale: \"linear\" | \"log\" = \"linear\",\n): [number, number] {\n const isLog = scale === \"log\";\n let min = Infinity;\n let max = -Infinity;\n\n for (const point of data) {\n const v = point[axis];\n if (!Number.isFinite(v)) continue;\n // log10 is undefined for non-positive values — skip them silently\n if (isLog && v <= 0) continue;\n // Plotly log axes expect range bounds in log10 units\n const mapped = isLog ? Math.log10(v) : v;\n if (mapped < min) min = mapped;\n if (mapped > max) max = mapped;\n }\n\n if (!Number.isFinite(min)) {\n return [0, 1];\n }\n\n if (min === max) {\n return [min - 1, max + 1];\n }\n\n const range = max - min;\n return [min - range * padding, max + range * padding];\n}\n\n/**\n * Apply selection to a set of point IDs\n */\nexport function applySelection(\n currentSelection: Set<string | number>,\n newIds: Set<string | number>,\n mode: SelectionMode,\n): Set<string | number> {\n const result = new Set(currentSelection);\n\n switch (mode) {\n case \"replace\":\n return new Set(newIds);\n\n case \"add\":\n for (const id of newIds) {\n result.add(id);\n }\n return result;\n\n case \"remove\":\n for (const id of newIds) {\n result.delete(id);\n }\n return result;\n\n case \"toggle\":\n for (const id of newIds) {\n if (result.has(id)) {\n result.delete(id);\n } else {\n result.add(id);\n }\n }\n return result;\n\n default:\n return result;\n }\n}\n\nexport const getPlotlyLayoutConfig = ({\n title,\n xAxis,\n yAxis,\n width,\n height,\n xRange,\n yRange,\n enableLassoSelection,\n enableBoxSelection,\n theme,\n}: {\n title: string | undefined;\n xAxis: AxisConfig;\n yAxis: AxisConfig;\n width: number;\n height: number;\n xRange: [number, number] | undefined;\n yRange: [number, number] | undefined;\n enableLassoSelection: boolean;\n enableBoxSelection: boolean;\n theme: PlotlyThemeColors;\n}): Partial<Plotly.Layout> => ({\n autosize: false,\n width,\n height,\n title: title\n ? {\n text: title,\n font: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n size: PLOT_CONSTANTS.TITLE_FONT_SIZE,\n color: theme.textColor,\n },\n x: 0.5,\n xanchor: \"center\",\n }\n : undefined,\n margin: {\n l: PLOT_CONSTANTS.MARGIN_LEFT,\n r: PLOT_CONSTANTS.MARGIN_RIGHT,\n t: title ? PLOT_CONSTANTS.MARGIN_TOP : PLOT_CONSTANTS.MARGIN_TOP - PLOT_CONSTANTS.TITLE_FONT_SIZE,\n b: PLOT_CONSTANTS.MARGIN_BOTTOM,\n },\n xaxis: {\n title: {\n text: xAxis.title || \"\",\n font: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n size: PLOT_CONSTANTS.AXIS_TITLE_FONT_SIZE,\n color: theme.textSecondary,\n },\n },\n type: xAxis.scale === \"log\" ? \"log\" : \"linear\",\n range: xRange,\n autorange: !xRange,\n gridcolor: theme.gridColor,\n linecolor: theme.lineColor,\n linewidth: PLOT_CONSTANTS.AXIS_LINE_WIDTH,\n tickfont: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n size: PLOT_CONSTANTS.AXIS_TICK_FONT_SIZE,\n color: theme.textColor,\n },\n zeroline: false,\n },\n yaxis: {\n title: {\n text: yAxis.title || \"\",\n font: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n size: PLOT_CONSTANTS.AXIS_TITLE_FONT_SIZE,\n color: theme.textSecondary,\n },\n },\n type: yAxis.scale === \"log\" ? \"log\" : \"linear\",\n range: yRange,\n autorange: !yRange,\n gridcolor: theme.gridColor,\n linecolor: theme.lineColor,\n linewidth: PLOT_CONSTANTS.AXIS_LINE_WIDTH,\n tickfont: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n size: PLOT_CONSTANTS.AXIS_TICK_FONT_SIZE,\n color: theme.textColor,\n },\n zeroline: false,\n },\n paper_bgcolor: theme.paperBg,\n plot_bgcolor: theme.plotBg,\n font: {\n family: PLOT_CONSTANTS.FONT_FAMILY,\n color: theme.textColor,\n },\n hovermode: \"closest\",\n dragmode: enableLassoSelection ? \"lasso\" : enableBoxSelection ? \"select\" : false,\n});\n"],"names":["calculateRange","data","field","min","max","point","value","getUniqueCategories","uniqueCategories","mapColors","colorMapping","color","COLORS","categories","colorMap","categoryColorMap","category","index","DEFAULT_CATEGORY_COLORS","mapShapes","shapeMapping","shape","shapeMap","defaultShapes","categoryShapeMap","mapSizes","sizeMapping","size","DEFAULT_MARKER_SIZE","sizeMap","categorySizeMap","range","sizeRange","DEFAULT_SIZE_RANGE","minSize","maxSize","normalized","downsampleData","config","DEFAULT_MAX_POINTS","maxPoints","lttbDownsample","bucketCentroid","start","end","dataLength","length","sumX","sumY","j","fallbackIdx","threshold","every","floor","abs","sampled","a","i","avgRangeStart","avgRangeEnd","avgX","avgY","rangeStart","rangeEnd","pointAX","pointAY","maxArea","maxAreaPoint","nextA","area","generateTooltipContent","fields","lines","key","getSelectionMode","event","ctrlOrCmd","calculateAxisRange","axis","padding","scale","isLog","v","mapped","applySelection","currentSelection","newIds","mode","result","id","getPlotlyLayoutConfig","title","xAxis","yAxis","width","height","xRange","yRange","enableLassoSelection","enableBoxSelection","theme","PLOT_CONSTANTS"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react/jsx-runtime"),c=require("react"),g=require("../Chromatogram/Chromatogram.cjs"),S=require("./transforms.cjs");function f({series:r,stackingMode:o="overlay",stackOffset:t=0,stackingOrder:e="first-on-bottom",annotations:n,...a}){const{series:s,annotations:m,yRange:i}=c.useMemo(()=>S.applyStackingTransform(r,n,o,t,e),[r,n,o,t,e]);return u.jsx(g.Chromatogram,{...a,series:s,annotations:m,yRange:i})}exports.StackedChromatogram=f;
2
+ //# sourceMappingURL=StackedChromatogram.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StackedChromatogram.cjs","sources":["../../../../src/components/charts/StackedChromatogram/StackedChromatogram.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { Chromatogram } from \"../Chromatogram\";\n\nimport { applyStackingTransform } from \"./transforms\";\n\nimport type { StackedChromatogramProps } from \"./types\";\n\nexport function StackedChromatogram({\n series,\n stackingMode = \"overlay\",\n stackOffset = 0,\n stackingOrder = \"first-on-bottom\",\n annotations,\n ...restProps\n}: StackedChromatogramProps) {\n const {\n series: transformedSeries,\n annotations: transformedAnnotations,\n yRange,\n } = useMemo(\n () =>\n applyStackingTransform(\n series,\n annotations,\n stackingMode,\n stackOffset,\n stackingOrder\n ),\n [series, annotations, stackingMode, stackOffset, stackingOrder]\n );\n\n return (\n <Chromatogram\n {...restProps}\n series={transformedSeries}\n annotations={transformedAnnotations}\n yRange={yRange}\n />\n );\n}\n\nexport default StackedChromatogram;\n"],"names":["StackedChromatogram","series","stackingMode","stackOffset","stackingOrder","annotations","restProps","transformedSeries","transformedAnnotations","yRange","useMemo","applyStackingTransform","jsx","Chromatogram"],"mappings":"oNAQO,SAASA,EAAoB,CAClC,OAAAC,EACA,aAAAC,EAAe,UACf,YAAAC,EAAc,EACd,cAAAC,EAAgB,kBAChB,YAAAC,EACA,GAAGC,CACL,EAA6B,CAC3B,KAAM,CACJ,OAAQC,EACR,YAAaC,EACb,OAAAC,CAAA,EACEC,EAAAA,QACF,IACEC,EAAAA,uBACEV,EACAI,EACAH,EACAC,EACAC,CAAA,EAEJ,CAACH,EAAQI,EAAaH,EAAcC,EAAaC,CAAa,CAAA,EAGhE,OACEQ,EAAAA,IAACC,EAAAA,aAAA,CACE,GAAGP,EACJ,OAAQC,EACR,YAAaC,EACb,OAAAC,CAAA,CAAA,CAGN"}
@@ -0,0 +1,3 @@
1
+ import { StackedChromatogramProps } from './types';
2
+ export declare function StackedChromatogram({ series, stackingMode, stackOffset, stackingOrder, annotations, ...restProps }: StackedChromatogramProps): import("react/jsx-runtime").JSX.Element;
3
+ export default StackedChromatogram;
@@ -0,0 +1,40 @@
1
+ import { jsx as f } from "react/jsx-runtime";
2
+ import { useMemo as p } from "react";
3
+ import { Chromatogram as u } from "../Chromatogram/Chromatogram.js";
4
+ import { applyStackingTransform as y } from "./transforms.js";
5
+ function x({
6
+ series: o,
7
+ stackingMode: r = "overlay",
8
+ stackOffset: m = 0,
9
+ stackingOrder: t = "first-on-bottom",
10
+ annotations: n,
11
+ ...a
12
+ }) {
13
+ const {
14
+ series: e,
15
+ annotations: i,
16
+ yRange: s
17
+ } = p(
18
+ () => y(
19
+ o,
20
+ n,
21
+ r,
22
+ m,
23
+ t
24
+ ),
25
+ [o, n, r, m, t]
26
+ );
27
+ return /* @__PURE__ */ f(
28
+ u,
29
+ {
30
+ ...a,
31
+ series: e,
32
+ annotations: i,
33
+ yRange: s
34
+ }
35
+ );
36
+ }
37
+ export {
38
+ x as StackedChromatogram
39
+ };
40
+ //# sourceMappingURL=StackedChromatogram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StackedChromatogram.js","sources":["../../../../src/components/charts/StackedChromatogram/StackedChromatogram.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { Chromatogram } from \"../Chromatogram\";\n\nimport { applyStackingTransform } from \"./transforms\";\n\nimport type { StackedChromatogramProps } from \"./types\";\n\nexport function StackedChromatogram({\n series,\n stackingMode = \"overlay\",\n stackOffset = 0,\n stackingOrder = \"first-on-bottom\",\n annotations,\n ...restProps\n}: StackedChromatogramProps) {\n const {\n series: transformedSeries,\n annotations: transformedAnnotations,\n yRange,\n } = useMemo(\n () =>\n applyStackingTransform(\n series,\n annotations,\n stackingMode,\n stackOffset,\n stackingOrder\n ),\n [series, annotations, stackingMode, stackOffset, stackingOrder]\n );\n\n return (\n <Chromatogram\n {...restProps}\n series={transformedSeries}\n annotations={transformedAnnotations}\n yRange={yRange}\n />\n );\n}\n\nexport default StackedChromatogram;\n"],"names":["StackedChromatogram","series","stackingMode","stackOffset","stackingOrder","annotations","restProps","transformedSeries","transformedAnnotations","yRange","useMemo","applyStackingTransform","jsx","Chromatogram"],"mappings":";;;;AAQO,SAASA,EAAoB;AAAA,EAClC,QAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,aAAAC,IAAc;AAAA,EACd,eAAAC,IAAgB;AAAA,EAChB,aAAAC;AAAA,EACA,GAAGC;AACL,GAA6B;AAC3B,QAAM;AAAA,IACJ,QAAQC;AAAA,IACR,aAAaC;AAAA,IACb,QAAAC;AAAA,EAAA,IACEC;AAAA,IACF,MACEC;AAAA,MACEV;AAAA,MACAI;AAAA,MACAH;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAAA,IAEJ,CAACH,GAAQI,GAAaH,GAAcC,GAAaC,CAAa;AAAA,EAAA;AAGhE,SACE,gBAAAQ;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAGP;AAAA,MACJ,QAAQC;AAAA,MACR,aAAaC;AAAA,MACb,QAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,3 @@
1
+ export { StackedChromatogram } from './StackedChromatogram';
2
+ export type { StackedChromatogramProps, StackingMode } from './types';
3
+ export { applyStackingTransform } from './transforms';
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function S(a,o,h,e,i="first-on-bottom"){const y=a.flatMap(t=>t.y),g=Math.min(...y,0),p=Math.max(...y),Y=[g,p];if(h==="overlay")return{series:a,annotations:o?o.flat():[],yRange:Y};const d=a.length,f=t=>i==="first-on-top"?(d-1-t)*e:t*e,r=a.map((t,s)=>({...t,y:t.y.map(c=>c+f(s))})),n=[];o&&o.forEach((t,s)=>{const c=f(s);t.forEach(M=>{n.push({...M,y:M.y+c})})});const l=r.flatMap(t=>t.y),m=n.map(t=>t.y),u=Math.min(...l,...m,0),x=Math.max(...l,...m);return{series:r,annotations:n,yRange:[u,x]}}exports.applyStackingTransform=S;
2
+ //# sourceMappingURL=transforms.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transforms.cjs","sources":["../../../../src/components/charts/StackedChromatogram/transforms.ts"],"sourcesContent":["import type { ChromatogramSeries, PeakAnnotation } from \"../Chromatogram\";\nimport type { StackingMode } from \"./types\";\n\ninterface TransformResult {\n series: ChromatogramSeries[];\n annotations: PeakAnnotation[];\n yRange: [number, number];\n}\n\nexport function applyStackingTransform(\n inputSeries: ChromatogramSeries[],\n inputAnnotations: PeakAnnotation[][] | undefined,\n mode: StackingMode,\n stackOffset: number,\n stackingOrder: \"first-on-bottom\" | \"first-on-top\" = \"first-on-bottom\"\n): TransformResult {\n const yValues = inputSeries.flatMap((s) => s.y);\n const yMin = Math.min(...yValues, 0);\n const yMax = Math.max(...yValues);\n const consistentYRange: [number, number] = [yMin, yMax];\n\n if (mode === \"overlay\") {\n return {\n series: inputSeries,\n annotations: inputAnnotations ? inputAnnotations.flat() : [],\n yRange: consistentYRange,\n };\n }\n\n // 'stack' mode: shift each series up by its index × stackOffset\n const N = inputSeries.length;\n const yShiftForIndex = (index: number): number =>\n stackingOrder === \"first-on-top\"\n ? (N - 1 - index) * stackOffset\n : index * stackOffset;\n\n const offsetSeries: ChromatogramSeries[] = inputSeries.map(\n (series, index) => ({\n ...series,\n y: series.y.map((yVal) => yVal + yShiftForIndex(index)),\n })\n );\n\n const offsetAnnotations: PeakAnnotation[] = [];\n if (inputAnnotations) {\n inputAnnotations.forEach((seriesAnnotations, seriesIndex) => {\n const yShift = yShiftForIndex(seriesIndex);\n seriesAnnotations.forEach((ann) => {\n offsetAnnotations.push({ ...ann, y: ann.y + yShift });\n });\n });\n }\n\n const allYValues = offsetSeries.flatMap((s) => s.y);\n const annotationYValues = offsetAnnotations.map((a) => a.y);\n const stackedYMin = Math.min(...allYValues, ...annotationYValues, 0);\n const stackedYMax = Math.max(...allYValues, ...annotationYValues);\n\n return {\n series: offsetSeries,\n annotations: offsetAnnotations,\n yRange: [stackedYMin, stackedYMax],\n };\n}\n"],"names":["applyStackingTransform","inputSeries","inputAnnotations","mode","stackOffset","stackingOrder","yValues","s","yMin","yMax","consistentYRange","N","yShiftForIndex","index","offsetSeries","series","yVal","offsetAnnotations","seriesAnnotations","seriesIndex","yShift","ann","allYValues","annotationYValues","a","stackedYMin","stackedYMax"],"mappings":"gFASO,SAASA,EACdC,EACAC,EACAC,EACAC,EACAC,EAAoD,kBACnC,CACjB,MAAMC,EAAUL,EAAY,QAASM,GAAMA,EAAE,CAAC,EACxCC,EAAO,KAAK,IAAI,GAAGF,EAAS,CAAC,EAC7BG,EAAO,KAAK,IAAI,GAAGH,CAAO,EAC1BI,EAAqC,CAACF,EAAMC,CAAI,EAEtD,GAAIN,IAAS,UACX,MAAO,CACL,OAAQF,EACR,YAAaC,EAAmBA,EAAiB,KAAA,EAAS,CAAA,EAC1D,OAAQQ,CAAA,EAKZ,MAAMC,EAAIV,EAAY,OAChBW,EAAkBC,GACtBR,IAAkB,gBACbM,EAAI,EAAIE,GAAST,EAClBS,EAAQT,EAERU,EAAqCb,EAAY,IACrD,CAACc,EAAQF,KAAW,CAClB,GAAGE,EACH,EAAGA,EAAO,EAAE,IAAKC,GAASA,EAAOJ,EAAeC,CAAK,CAAC,CAAA,EACxD,EAGII,EAAsC,CAAA,EACxCf,GACFA,EAAiB,QAAQ,CAACgB,EAAmBC,IAAgB,CAC3D,MAAMC,EAASR,EAAeO,CAAW,EACzCD,EAAkB,QAASG,GAAQ,CACjCJ,EAAkB,KAAK,CAAE,GAAGI,EAAK,EAAGA,EAAI,EAAID,EAAQ,CACtD,CAAC,CACH,CAAC,EAGH,MAAME,EAAaR,EAAa,QAASP,GAAMA,EAAE,CAAC,EAC5CgB,EAAoBN,EAAkB,IAAKO,GAAMA,EAAE,CAAC,EACpDC,EAAc,KAAK,IAAI,GAAGH,EAAY,GAAGC,EAAmB,CAAC,EAC7DG,EAAc,KAAK,IAAI,GAAGJ,EAAY,GAAGC,CAAiB,EAEhE,MAAO,CACL,OAAQT,EACR,YAAaG,EACb,OAAQ,CAACQ,EAAaC,CAAW,CAAA,CAErC"}
@@ -0,0 +1,9 @@
1
+ import { ChromatogramSeries, PeakAnnotation } from '../Chromatogram';
2
+ import { StackingMode } from './types';
3
+ interface TransformResult {
4
+ series: ChromatogramSeries[];
5
+ annotations: PeakAnnotation[];
6
+ yRange: [number, number];
7
+ }
8
+ export declare function applyStackingTransform(inputSeries: ChromatogramSeries[], inputAnnotations: PeakAnnotation[][] | undefined, mode: StackingMode, stackOffset: number, stackingOrder?: "first-on-bottom" | "first-on-top"): TransformResult;
9
+ export {};
@@ -0,0 +1,31 @@
1
+ function d(t, o, m, y, i = "first-on-bottom") {
2
+ const f = t.flatMap((a) => a.y), g = Math.min(...f, 0), x = Math.max(...f), Y = [g, x];
3
+ if (m === "overlay")
4
+ return {
5
+ series: t,
6
+ annotations: o ? o.flat() : [],
7
+ yRange: Y
8
+ };
9
+ const p = t.length, e = (a) => i === "first-on-top" ? (p - 1 - a) * y : a * y, r = t.map(
10
+ (a, s) => ({
11
+ ...a,
12
+ y: a.y.map((c) => c + e(s))
13
+ })
14
+ ), n = [];
15
+ o && o.forEach((a, s) => {
16
+ const c = e(s);
17
+ a.forEach((M) => {
18
+ n.push({ ...M, y: M.y + c });
19
+ });
20
+ });
21
+ const l = r.flatMap((a) => a.y), h = n.map((a) => a.y), R = Math.min(...l, ...h, 0), V = Math.max(...l, ...h);
22
+ return {
23
+ series: r,
24
+ annotations: n,
25
+ yRange: [R, V]
26
+ };
27
+ }
28
+ export {
29
+ d as applyStackingTransform
30
+ };
31
+ //# sourceMappingURL=transforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transforms.js","sources":["../../../../src/components/charts/StackedChromatogram/transforms.ts"],"sourcesContent":["import type { ChromatogramSeries, PeakAnnotation } from \"../Chromatogram\";\nimport type { StackingMode } from \"./types\";\n\ninterface TransformResult {\n series: ChromatogramSeries[];\n annotations: PeakAnnotation[];\n yRange: [number, number];\n}\n\nexport function applyStackingTransform(\n inputSeries: ChromatogramSeries[],\n inputAnnotations: PeakAnnotation[][] | undefined,\n mode: StackingMode,\n stackOffset: number,\n stackingOrder: \"first-on-bottom\" | \"first-on-top\" = \"first-on-bottom\"\n): TransformResult {\n const yValues = inputSeries.flatMap((s) => s.y);\n const yMin = Math.min(...yValues, 0);\n const yMax = Math.max(...yValues);\n const consistentYRange: [number, number] = [yMin, yMax];\n\n if (mode === \"overlay\") {\n return {\n series: inputSeries,\n annotations: inputAnnotations ? inputAnnotations.flat() : [],\n yRange: consistentYRange,\n };\n }\n\n // 'stack' mode: shift each series up by its index × stackOffset\n const N = inputSeries.length;\n const yShiftForIndex = (index: number): number =>\n stackingOrder === \"first-on-top\"\n ? (N - 1 - index) * stackOffset\n : index * stackOffset;\n\n const offsetSeries: ChromatogramSeries[] = inputSeries.map(\n (series, index) => ({\n ...series,\n y: series.y.map((yVal) => yVal + yShiftForIndex(index)),\n })\n );\n\n const offsetAnnotations: PeakAnnotation[] = [];\n if (inputAnnotations) {\n inputAnnotations.forEach((seriesAnnotations, seriesIndex) => {\n const yShift = yShiftForIndex(seriesIndex);\n seriesAnnotations.forEach((ann) => {\n offsetAnnotations.push({ ...ann, y: ann.y + yShift });\n });\n });\n }\n\n const allYValues = offsetSeries.flatMap((s) => s.y);\n const annotationYValues = offsetAnnotations.map((a) => a.y);\n const stackedYMin = Math.min(...allYValues, ...annotationYValues, 0);\n const stackedYMax = Math.max(...allYValues, ...annotationYValues);\n\n return {\n series: offsetSeries,\n annotations: offsetAnnotations,\n yRange: [stackedYMin, stackedYMax],\n };\n}\n"],"names":["applyStackingTransform","inputSeries","inputAnnotations","mode","stackOffset","stackingOrder","yValues","s","yMin","yMax","consistentYRange","N","yShiftForIndex","index","offsetSeries","series","yVal","offsetAnnotations","seriesAnnotations","seriesIndex","yShift","ann","allYValues","annotationYValues","stackedYMin","stackedYMax"],"mappings":"AASO,SAASA,EACdC,GACAC,GACAC,GACAC,GACAC,IAAoD,mBACnC;AACjB,QAAMC,IAAUL,EAAY,QAAQ,CAACM,MAAMA,EAAE,CAAC,GACxCC,IAAO,KAAK,IAAI,GAAGF,GAAS,CAAC,GAC7BG,IAAO,KAAK,IAAI,GAAGH,CAAO,GAC1BI,IAAqC,CAACF,GAAMC,CAAI;AAEtD,MAAIN,MAAS;AACX,WAAO;AAAA,MACL,QAAQF;AAAA,MACR,aAAaC,IAAmBA,EAAiB,KAAA,IAAS,CAAA;AAAA,MAC1D,QAAQQ;AAAA,IAAA;AAKZ,QAAMC,IAAIV,EAAY,QAChBW,IAAiB,CAACC,MACtBR,MAAkB,kBACbM,IAAI,IAAIE,KAAST,IAClBS,IAAQT,GAERU,IAAqCb,EAAY;AAAA,IACrD,CAACc,GAAQF,OAAW;AAAA,MAClB,GAAGE;AAAA,MACH,GAAGA,EAAO,EAAE,IAAI,CAACC,MAASA,IAAOJ,EAAeC,CAAK,CAAC;AAAA,IAAA;AAAA,EACxD,GAGII,IAAsC,CAAA;AAC5C,EAAIf,KACFA,EAAiB,QAAQ,CAACgB,GAAmBC,MAAgB;AAC3D,UAAMC,IAASR,EAAeO,CAAW;AACzC,IAAAD,EAAkB,QAAQ,CAACG,MAAQ;AACjC,MAAAJ,EAAkB,KAAK,EAAE,GAAGI,GAAK,GAAGA,EAAI,IAAID,GAAQ;AAAA,IACtD,CAAC;AAAA,EACH,CAAC;AAGH,QAAME,IAAaR,EAAa,QAAQ,CAACP,MAAMA,EAAE,CAAC,GAC5CgB,IAAoBN,EAAkB,IAAI,CAAC,MAAM,EAAE,CAAC,GACpDO,IAAc,KAAK,IAAI,GAAGF,GAAY,GAAGC,GAAmB,CAAC,GAC7DE,IAAc,KAAK,IAAI,GAAGH,GAAY,GAAGC,CAAiB;AAEhE,SAAO;AAAA,IACL,QAAQT;AAAA,IACR,aAAaG;AAAA,IACb,QAAQ,CAACO,GAAaC,CAAW;AAAA,EAAA;AAErC;"}
@@ -0,0 +1,26 @@
1
+ import { ChromatogramProps, ChromatogramSeries, PeakAnnotation } from '../Chromatogram';
2
+ export type StackingMode = "overlay" | "stack";
3
+ export interface StackedChromatogramProps extends Omit<ChromatogramProps, "series" | "annotations" | "yRange"> {
4
+ /** Array of data series to display */
5
+ series: ChromatogramSeries[];
6
+ /** Stacking mode: 'overlay' (default) or 'stack' */
7
+ stackingMode?: StackingMode;
8
+ /**
9
+ * Y-offset between stacked series in data units (e.g., AU).
10
+ * Only applies in 'stack' mode; ignored in 'overlay'.
11
+ */
12
+ stackOffset?: number;
13
+ /**
14
+ * Peak annotations per series, parallel to the series array.
15
+ * annotations[i] corresponds to series[i].
16
+ * In stack mode, y values are shifted by the series offset.
17
+ */
18
+ annotations?: PeakAnnotation[][];
19
+ /**
20
+ * Controls which end of the stack series[0] lands on (stack mode only).
21
+ * - "first-on-bottom" (default) — series[0] sits at the base; series[N-1] is highest.
22
+ * - "first-on-top" — series[0] is shifted to the top; series[N-1] is at the base.
23
+ * Annotations follow the chosen direction.
24
+ */
25
+ stackingOrder?: "first-on-bottom" | "first-on-top";
26
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function d(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const l in e)if(l!=="default"){const n=Object.getOwnPropertyDescriptor(e,l);Object.defineProperty(t,l,n.get?n:{enumerable:!0,get:()=>e[l]})}}return t.default=e,Object.freeze(t)}const a="Failed to load 'plotly.js-dist'. It is an optional peer dependency of @tetrascience-npm/tetrascience-react-ui required by the chart components — install it in your app (e.g. `yarn add plotly.js-dist`).";let o=null,r=null;function i(){return r??=Promise.resolve().then(()=>d(require("plotly.js-dist"))).then(e=>{const t=e;return o=t.default??t,o}).catch(e=>{throw r=null,console.error(a,e),new Error(a)}),r}function c(){if(!o)throw new Error("Plotly accessed before loadPlotly() resolved. Call loadPlotly() and draw the plot first.");return o}exports.getLoadedPlotly=c;exports.loadPlotly=i;
2
+ //# sourceMappingURL=plotly-loader.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plotly-loader.cjs","sources":["../../../src/components/charts/plotly-loader.ts"],"sourcesContent":["/**\n * Lazy Plotly loader (SW-2007).\n *\n * The kit ships preserved ES modules with all dependencies externalized, so a\n * static `import Plotly from \"plotly.js-dist\"` in any chart lands the full\n * ~4.7 MB Plotly dist in the consumer's main chunk — before any chart renders.\n * Loading it through this module's dynamic `import()` instead lets consumer\n * bundlers split Plotly into its own chunk, fetched only when a chart mounts.\n *\n * Chart components must call `loadPlotly()` before drawing. Code that only\n * runs after a plot exists (hover handlers, resize relayouts, unmount purges)\n * can use the synchronous `getLoadedPlotly()`.\n *\n * `plotly.js-dist` is an *optional* peer dependency (SW-2007): consumers that\n * use the kit's charts must add it to their own app; consumers that don't\n * never install its ~4.7 MB. A missing peer surfaces at build time as an\n * unresolved-import error from the consumer's bundler; the runtime guard below\n * covers the rarer case where the import resolves but fails to evaluate.\n */\n\ntype PlotlyModule = typeof import(\"plotly.js-dist\");\n\nconst MISSING_PLOTLY_MESSAGE =\n \"Failed to load 'plotly.js-dist'. It is an optional peer dependency of \" +\n \"@tetrascience-npm/tetrascience-react-ui required by the chart components — \" +\n \"install it in your app (e.g. `yarn add plotly.js-dist`).\";\n\nlet loadedPlotly: PlotlyModule | null = null;\nlet plotlyPromise: Promise<PlotlyModule> | null = null;\n\n/** Import Plotly on first use; subsequent calls reuse the same promise. */\nexport function loadPlotly(): Promise<PlotlyModule> {\n plotlyPromise ??= import(\"plotly.js-dist\")\n .then((mod) => {\n // plotly.js-dist is CJS; depending on the consumer's bundler interop the\n // API surface is either the namespace itself or its `default` export.\n const withDefault = mod as PlotlyModule & { default?: PlotlyModule };\n loadedPlotly = withDefault.default ?? withDefault;\n return loadedPlotly;\n })\n .catch((error: unknown) => {\n // Reset so a later mount can retry, and rethrow with install guidance.\n plotlyPromise = null;\n console.error(MISSING_PLOTLY_MESSAGE, error);\n throw new Error(MISSING_PLOTLY_MESSAGE);\n });\n return plotlyPromise;\n}\n\n/**\n * Synchronous access to the loaded Plotly module. Only valid after\n * `loadPlotly()` has resolved — i.e. in code paths that can only run once a\n * plot has been drawn (event handlers, cleanups, resize effects).\n */\nexport function getLoadedPlotly(): PlotlyModule {\n if (!loadedPlotly) {\n throw new Error(\n \"Plotly accessed before loadPlotly() resolved. Call loadPlotly() and draw the plot first.\",\n );\n }\n return loadedPlotly;\n}\n\nexport type { PlotlyModule };\n"],"names":["MISSING_PLOTLY_MESSAGE","loadedPlotly","plotlyPromise","loadPlotly","_interopNamespaceDefault","mod","withDefault","error","getLoadedPlotly"],"mappings":"6VAsBA,MAAMA,EACJ,4MAIF,IAAIC,EAAoC,KACpCC,EAA8C,KAG3C,SAASC,GAAoC,CAClD,OAAAD,IAAkB,QAAA,QAAA,EAAA,KAAA,IAAAE,EAAA,QAAO,gBAAgB,CAAA,CAAA,EACtC,KAAMC,GAAQ,CAGb,MAAMC,EAAcD,EACpB,OAAAJ,EAAeK,EAAY,SAAWA,EAC/BL,CACT,CAAC,EACA,MAAOM,GAAmB,CAEzB,MAAAL,EAAgB,KAChB,QAAQ,MAAMF,EAAwBO,CAAK,EACrC,IAAI,MAAMP,CAAsB,CACxC,CAAC,EACIE,CACT,CAOO,SAASM,GAAgC,CAC9C,GAAI,CAACP,EACH,MAAM,IAAI,MACR,0FAAA,EAGJ,OAAOA,CACT"}