@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.
- package/README.md +58 -4
- package/dist/ai/attachments.cjs +2 -0
- package/dist/ai/attachments.cjs.map +1 -0
- package/dist/ai/attachments.js +224 -0
- package/dist/ai/attachments.js.map +1 -0
- package/dist/ai/chain-of-thought.cjs +2 -0
- package/dist/ai/chain-of-thought.cjs.map +1 -0
- package/dist/ai/chain-of-thought.js +145 -0
- package/dist/ai/chain-of-thought.js.map +1 -0
- package/dist/ai/confirmation.cjs +2 -0
- package/dist/ai/confirmation.cjs.map +1 -0
- package/dist/ai/confirmation.js +109 -0
- package/dist/ai/confirmation.js.map +1 -0
- package/dist/ai/context.cjs +2 -0
- package/dist/ai/context.cjs.map +1 -0
- package/dist/ai/context.js +267 -0
- package/dist/ai/context.js.map +1 -0
- package/dist/ai/conversation.cjs +4 -0
- package/dist/ai/conversation.cjs.map +1 -0
- package/dist/ai/conversation.js +108 -0
- package/dist/ai/conversation.js.map +1 -0
- package/dist/ai/inline-citation.cjs +2 -0
- package/dist/ai/inline-citation.cjs.map +1 -0
- package/dist/ai/inline-citation.js +182 -0
- package/dist/ai/inline-citation.js.map +1 -0
- package/dist/ai/message.cjs +2 -0
- package/dist/ai/message.cjs.map +1 -0
- package/dist/ai/message.js +237 -0
- package/dist/ai/message.js.map +1 -0
- package/dist/ai/model-selector.cjs +2 -0
- package/dist/ai/model-selector.cjs.map +1 -0
- package/dist/ai/model-selector.js +77 -0
- package/dist/ai/model-selector.js.map +1 -0
- package/dist/ai/prompt-input.cjs +2 -0
- package/dist/ai/prompt-input.cjs.map +1 -0
- package/dist/ai/prompt-input.js +776 -0
- package/dist/ai/prompt-input.js.map +1 -0
- package/dist/ai/queue.cjs +2 -0
- package/dist/ai/queue.cjs.map +1 -0
- package/dist/ai/queue.js +209 -0
- package/dist/ai/queue.js.map +1 -0
- package/dist/ai/reasoning.cjs +2 -0
- package/dist/ai/reasoning.cjs.map +1 -0
- package/dist/ai/reasoning.js +129 -0
- package/dist/ai/reasoning.js.map +1 -0
- package/dist/ai/shimmer.cjs +2 -0
- package/dist/ai/shimmer.cjs.map +1 -0
- package/dist/ai/shimmer.js +49 -0
- package/dist/ai/shimmer.js.map +1 -0
- package/dist/ai/sources.cjs +2 -0
- package/dist/ai/sources.cjs.map +1 -0
- package/dist/ai/sources.js +54 -0
- package/dist/ai/sources.js.map +1 -0
- package/dist/ai/speech-input.cjs +2 -0
- package/dist/ai/speech-input.cjs.map +1 -0
- package/dist/ai/speech-input.js +123 -0
- package/dist/ai/speech-input.js.map +1 -0
- package/dist/ai/stream-status.cjs +2 -0
- package/dist/ai/stream-status.cjs.map +1 -0
- package/dist/ai/stream-status.js +108 -0
- package/dist/ai/stream-status.js.map +1 -0
- package/dist/ai/suggestion.cjs +2 -0
- package/dist/ai/suggestion.cjs.map +1 -0
- package/dist/ai/suggestion.js +38 -0
- package/dist/ai/suggestion.js.map +1 -0
- package/dist/ai/task.cjs +2 -0
- package/dist/ai/task.cjs.map +1 -0
- package/dist/ai/task.js +101 -0
- package/dist/ai/task.js.map +1 -0
- package/dist/ai/tool.cjs +2 -0
- package/dist/ai/tool.cjs.map +1 -0
- package/dist/ai/tool.js +139 -0
- package/dist/ai/tool.js.map +1 -0
- package/dist/charts/AreaPlot.cjs +2 -0
- package/dist/charts/AreaPlot.cjs.map +1 -0
- package/dist/charts/AreaPlot.js +5 -0
- package/dist/charts/AreaPlot.js.map +1 -0
- package/dist/charts/BarChart.cjs +2 -0
- package/dist/charts/BarChart.cjs.map +1 -0
- package/dist/charts/BarChart.js +5 -0
- package/dist/charts/BarChart.js.map +1 -0
- package/dist/charts/BoxPlot.cjs +2 -0
- package/dist/charts/BoxPlot.cjs.map +1 -0
- package/dist/charts/BoxPlot.js +5 -0
- package/dist/charts/BoxPlot.js.map +1 -0
- package/dist/charts/ChartTooltip.cjs +2 -0
- package/dist/charts/ChartTooltip.cjs.map +1 -0
- package/dist/charts/ChartTooltip.js +8 -0
- package/dist/charts/ChartTooltip.js.map +1 -0
- package/dist/charts/Chromatogram.cjs +2 -0
- package/dist/charts/Chromatogram.cjs.map +1 -0
- package/dist/charts/Chromatogram.js +5 -0
- package/dist/charts/Chromatogram.js.map +1 -0
- package/dist/charts/Electropherogram.cjs +2 -0
- package/dist/charts/Electropherogram.cjs.map +1 -0
- package/dist/charts/Electropherogram.js +5 -0
- package/dist/charts/Electropherogram.js.map +1 -0
- package/dist/charts/Histogram.cjs +2 -0
- package/dist/charts/Histogram.cjs.map +1 -0
- package/dist/charts/Histogram.js +5 -0
- package/dist/charts/Histogram.js.map +1 -0
- package/dist/charts/LinePlot.cjs +2 -0
- package/dist/charts/LinePlot.cjs.map +1 -0
- package/dist/charts/LinePlot.js +5 -0
- package/dist/charts/LinePlot.js.map +1 -0
- package/dist/charts/PieChart.cjs +2 -0
- package/dist/charts/PieChart.cjs.map +1 -0
- package/dist/charts/PieChart.js +5 -0
- package/dist/charts/PieChart.js.map +1 -0
- package/dist/charts/PlateMap.cjs +2 -0
- package/dist/charts/PlateMap.cjs.map +1 -0
- package/dist/charts/PlateMap.js +5 -0
- package/dist/charts/PlateMap.js.map +1 -0
- package/dist/charts/ScatterPlot.cjs +2 -0
- package/dist/charts/ScatterPlot.cjs.map +1 -0
- package/dist/charts/ScatterPlot.js +5 -0
- package/dist/charts/ScatterPlot.js.map +1 -0
- package/dist/charts/ScatterPlotInteractive.cjs +2 -0
- package/dist/charts/ScatterPlotInteractive.cjs.map +1 -0
- package/dist/charts/ScatterPlotInteractive.js +14 -0
- package/dist/charts/ScatterPlotInteractive.js.map +1 -0
- package/dist/charts/StackedChromatogram.cjs +2 -0
- package/dist/charts/StackedChromatogram.cjs.map +1 -0
- package/dist/charts/StackedChromatogram.js +7 -0
- package/dist/charts/StackedChromatogram.js.map +1 -0
- package/dist/components/ai/attachments.d.ts +54 -0
- package/dist/components/ai/chain-of-thought.d.ts +56 -0
- package/dist/components/ai/confirmation.d.ts +47 -0
- package/dist/components/ai/context.d.ts +40 -0
- package/dist/components/ai/conversation.d.ts +23 -0
- package/dist/components/ai/inline-citation.d.ts +38 -0
- package/dist/components/ai/message.d.ts +37 -0
- package/dist/components/ai/model-selector.d.ts +36 -0
- package/dist/components/ai/prompt-input.d.ts +158 -0
- package/dist/components/ai/queue.d.ts +72 -0
- package/dist/components/ai/reasoning.d.ts +26 -0
- package/dist/components/ai/shimmer.d.ts +17 -0
- package/dist/components/ai/sources.d.ts +12 -0
- package/dist/components/ai/speech-input.d.ts +54 -0
- package/dist/components/ai/stream-status.d.ts +66 -0
- package/dist/components/ai/streamdown-code-plugin.cjs +2 -0
- package/dist/components/ai/streamdown-code-plugin.cjs.map +1 -0
- package/dist/components/ai/streamdown-code-plugin.d.ts +2 -0
- package/dist/components/ai/streamdown-code-plugin.js +42 -0
- package/dist/components/ai/streamdown-code-plugin.js.map +1 -0
- package/dist/components/ai/streamdown-plugins.cjs +2 -0
- package/dist/components/ai/streamdown-plugins.cjs.map +1 -0
- package/dist/components/ai/streamdown-plugins.d.ts +2 -0
- package/dist/components/ai/streamdown-plugins.js +14 -0
- package/dist/components/ai/streamdown-plugins.js.map +1 -0
- package/dist/components/ai/suggestion.d.ts +9 -0
- package/dist/components/ai/task.d.ts +16 -0
- package/dist/components/ai/tool.d.ts +33 -0
- package/dist/components/ai/use-streamdown-plugins.cjs +2 -0
- package/dist/components/ai/use-streamdown-plugins.cjs.map +1 -0
- package/dist/components/ai/use-streamdown-plugins.d.ts +8 -0
- package/dist/components/ai/use-streamdown-plugins.js +25 -0
- package/dist/components/ai/use-streamdown-plugins.js.map +1 -0
- package/dist/components/charts/AreaPlot/AreaPlot.cjs +2 -0
- package/dist/components/charts/AreaPlot/AreaPlot.cjs.map +1 -0
- package/dist/components/charts/AreaPlot/AreaPlot.d.ts +39 -0
- package/dist/components/charts/AreaPlot/AreaPlot.js +270 -0
- package/dist/components/charts/AreaPlot/AreaPlot.js.map +1 -0
- package/dist/components/charts/AreaPlot/index.d.ts +2 -0
- package/dist/components/charts/BarChart/BarChart.cjs +2 -0
- package/dist/components/charts/BarChart/BarChart.cjs.map +1 -0
- package/dist/components/charts/BarChart/BarChart.d.ts +44 -0
- package/dist/components/charts/BarChart/BarChart.js +219 -0
- package/dist/components/charts/BarChart/BarChart.js.map +1 -0
- package/dist/components/charts/BarChart/index.d.ts +2 -0
- package/dist/components/charts/BoxPlot/BoxPlot.cjs +2 -0
- package/dist/components/charts/BoxPlot/BoxPlot.cjs.map +1 -0
- package/dist/components/charts/BoxPlot/BoxPlot.d.ts +33 -0
- package/dist/components/charts/BoxPlot/BoxPlot.js +208 -0
- package/dist/components/charts/BoxPlot/BoxPlot.js.map +1 -0
- package/dist/components/charts/BoxPlot/index.d.ts +2 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.cjs.map +1 -1
- package/dist/components/charts/ChartTooltip/ChartTooltip.d.ts +71 -0
- package/dist/components/charts/ChartTooltip/ChartTooltip.js +22 -22
- package/dist/components/charts/ChartTooltip/ChartTooltip.js.map +1 -1
- package/dist/components/charts/ChartTooltip/index.d.ts +2 -0
- package/dist/components/charts/ChartTooltip/lines.d.ts +54 -0
- package/dist/components/charts/Chromatogram/Chromatogram.cjs +1 -1
- package/dist/components/charts/Chromatogram/Chromatogram.cjs.map +1 -1
- package/dist/components/charts/Chromatogram/Chromatogram.d.ts +5 -0
- package/dist/components/charts/Chromatogram/Chromatogram.js +232 -170
- package/dist/components/charts/Chromatogram/Chromatogram.js.map +1 -1
- package/dist/components/charts/Chromatogram/annotations.cjs +2 -0
- package/dist/components/charts/Chromatogram/annotations.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/annotations.d.ts +50 -0
- package/dist/components/charts/Chromatogram/annotations.js +137 -0
- package/dist/components/charts/Chromatogram/annotations.js.map +1 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.cjs +2 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.d.ts +14 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.js +34 -0
- package/dist/components/charts/Chromatogram/boundaryMarkers.js.map +1 -0
- package/dist/components/charts/Chromatogram/constants.cjs +2 -0
- package/dist/components/charts/Chromatogram/constants.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/constants.d.ts +46 -0
- package/dist/components/charts/Chromatogram/constants.js +36 -0
- package/dist/components/charts/Chromatogram/constants.js.map +1 -0
- package/dist/components/charts/Chromatogram/dataProcessing.cjs +2 -0
- package/dist/components/charts/Chromatogram/dataProcessing.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/dataProcessing.d.ts +49 -0
- package/dist/components/charts/Chromatogram/dataProcessing.js +90 -0
- package/dist/components/charts/Chromatogram/dataProcessing.js.map +1 -0
- package/dist/components/charts/Chromatogram/index.d.ts +2 -0
- package/dist/components/charts/Chromatogram/peakDetection.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/peakDetection.d.ts +33 -0
- package/dist/components/charts/Chromatogram/peakDetection.js.map +1 -0
- package/dist/components/charts/Chromatogram/plotBuilder.cjs +2 -0
- package/dist/components/charts/Chromatogram/plotBuilder.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/plotBuilder.d.ts +58 -0
- package/dist/components/charts/Chromatogram/plotBuilder.js +216 -0
- package/dist/components/charts/Chromatogram/plotBuilder.js.map +1 -0
- package/dist/components/charts/Chromatogram/regionOverlays.cjs +2 -0
- package/dist/components/charts/Chromatogram/regionOverlays.cjs.map +1 -0
- package/dist/components/charts/Chromatogram/regionOverlays.d.ts +9 -0
- package/dist/components/charts/Chromatogram/regionOverlays.js +26 -0
- package/dist/components/charts/Chromatogram/regionOverlays.js.map +1 -0
- package/dist/components/charts/Chromatogram/types.d.ts +258 -0
- package/dist/components/charts/Electropherogram/Electropherogram.cjs +2 -0
- package/dist/components/charts/Electropherogram/Electropherogram.cjs.map +1 -0
- package/dist/components/charts/Electropherogram/Electropherogram.d.ts +22 -0
- package/dist/components/charts/Electropherogram/Electropherogram.js +180 -0
- package/dist/components/charts/Electropherogram/Electropherogram.js.map +1 -0
- package/dist/components/charts/Electropherogram/index.d.ts +2 -0
- package/dist/components/charts/Histogram/Histogram.cjs +1 -1
- package/dist/components/charts/Histogram/Histogram.cjs.map +1 -1
- package/dist/components/charts/Histogram/Histogram.d.ts +36 -0
- package/dist/components/charts/Histogram/Histogram.js +107 -108
- package/dist/components/charts/Histogram/Histogram.js.map +1 -1
- package/dist/components/charts/Histogram/index.d.ts +2 -0
- package/dist/components/charts/LinePlot/LinePlot.cjs +2 -0
- package/dist/components/charts/LinePlot/LinePlot.cjs.map +1 -0
- package/dist/components/charts/LinePlot/LinePlot.d.ts +45 -0
- package/dist/components/charts/LinePlot/LinePlot.js +224 -0
- package/dist/components/charts/LinePlot/LinePlot.js.map +1 -0
- package/dist/components/charts/LinePlot/index.d.ts +2 -0
- package/dist/components/charts/PieChart/PieChart.cjs +1 -1
- package/dist/components/charts/PieChart/PieChart.cjs.map +1 -1
- package/dist/components/charts/PieChart/PieChart.d.ts +20 -0
- package/dist/components/charts/PieChart/PieChart.js +62 -61
- package/dist/components/charts/PieChart/PieChart.js.map +1 -1
- package/dist/components/charts/PieChart/index.d.ts +2 -0
- package/dist/components/charts/PlateMap/PlateMap.cjs +1 -1
- package/dist/components/charts/PlateMap/PlateMap.cjs.map +1 -1
- package/dist/components/charts/PlateMap/PlateMap.d.ts +29 -0
- package/dist/components/charts/PlateMap/PlateMap.js +246 -242
- package/dist/components/charts/PlateMap/PlateMap.js.map +1 -1
- package/dist/components/charts/PlateMap/constants.d.ts +75 -0
- package/dist/components/charts/PlateMap/index.d.ts +2 -0
- package/dist/components/charts/PlateMap/types.d.ts +322 -0
- package/dist/components/charts/PlateMap/utils.d.ts +133 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.cjs +2 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.cjs.map +1 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +43 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +252 -0
- package/dist/components/charts/ScatterPlot/ScatterPlot.js.map +1 -0
- package/dist/components/charts/ScatterPlot/index.d.ts +2 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.d.ts +25 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js +215 -0
- package/dist/components/charts/ScatterPlotInteractive/ScatterPlotInteractive.js.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.d.ts +50 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.js +38 -0
- package/dist/components/charts/ScatterPlotInteractive/constants.js.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/index.d.ts +3 -0
- package/dist/components/charts/ScatterPlotInteractive/types.d.ts +226 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.cjs +2 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.cjs.map +1 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.d.ts +72 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.js +261 -0
- package/dist/components/charts/ScatterPlotInteractive/utils.js.map +1 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs +2 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.cjs.map +1 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.d.ts +3 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.js +40 -0
- package/dist/components/charts/StackedChromatogram/StackedChromatogram.js.map +1 -0
- package/dist/components/charts/StackedChromatogram/index.d.ts +3 -0
- package/dist/components/charts/StackedChromatogram/transforms.cjs +2 -0
- package/dist/components/charts/StackedChromatogram/transforms.cjs.map +1 -0
- package/dist/components/charts/StackedChromatogram/transforms.d.ts +9 -0
- package/dist/components/charts/StackedChromatogram/transforms.js +31 -0
- package/dist/components/charts/StackedChromatogram/transforms.js.map +1 -0
- package/dist/components/charts/StackedChromatogram/types.d.ts +26 -0
- package/dist/components/charts/plotly-loader.cjs +2 -0
- package/dist/components/charts/plotly-loader.cjs.map +1 -0
- package/dist/components/charts/plotly-loader.d.ts +29 -0
- package/dist/components/charts/plotly-loader.js +22 -0
- package/dist/components/charts/plotly-loader.js.map +1 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.cjs +2 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.cjs.map +1 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.d.ts +63 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.js +142 -0
- package/dist/components/composed/AssistantLayout/AssistantLayout.js.map +1 -0
- package/dist/components/composed/AssistantLayout/dockLayout.cjs +2 -0
- package/dist/components/composed/AssistantLayout/dockLayout.cjs.map +1 -0
- package/dist/components/composed/AssistantLayout/dockLayout.d.ts +15 -0
- package/dist/components/composed/AssistantLayout/dockLayout.js +10 -0
- package/dist/components/composed/AssistantLayout/dockLayout.js.map +1 -0
- package/dist/components/composed/AssistantLayout/index.d.ts +3 -0
- package/dist/components/composed/Chat/Chat.cjs +1 -1
- package/dist/components/composed/Chat/Chat.cjs.map +1 -1
- package/dist/components/composed/Chat/Chat.d.ts +35 -0
- package/dist/components/composed/Chat/Chat.js +28 -28
- package/dist/components/composed/Chat/Chat.js.map +1 -1
- package/dist/components/composed/Chat/index.d.ts +2 -0
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs +1 -1
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.d.ts +23 -0
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.js +33 -29
- package/dist/components/composed/ConfirmDialog/ConfirmDialog.js.map +1 -1
- package/dist/components/composed/ConfirmDialog/index.d.ts +1 -0
- package/dist/components/composed/DataAppShell/CollapseButton.cjs +2 -0
- package/dist/components/composed/DataAppShell/CollapseButton.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/CollapseButton.d.ts +23 -0
- package/dist/components/composed/DataAppShell/CollapseButton.js +42 -0
- package/dist/components/composed/DataAppShell/CollapseButton.js.map +1 -0
- package/dist/components/composed/DataAppShell/DataAppShell.cjs +1 -1
- package/dist/components/composed/DataAppShell/DataAppShell.cjs.map +1 -1
- package/dist/components/composed/DataAppShell/DataAppShell.d.ts +88 -0
- package/dist/components/composed/DataAppShell/DataAppShell.js +350 -328
- package/dist/components/composed/DataAppShell/DataAppShell.js.map +1 -1
- package/dist/components/composed/DataAppShell/PrimaryNav.cjs +2 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.d.ts +64 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.js +268 -0
- package/dist/components/composed/DataAppShell/PrimaryNav.js.map +1 -0
- package/dist/components/composed/DataAppShell/RightPanel.cjs +2 -0
- package/dist/components/composed/DataAppShell/RightPanel.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/RightPanel.d.ts +95 -0
- package/dist/components/composed/DataAppShell/RightPanel.js +282 -0
- package/dist/components/composed/DataAppShell/RightPanel.js.map +1 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.cjs +2 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.d.ts +63 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.js +364 -0
- package/dist/components/composed/DataAppShell/SecondaryNav.js.map +1 -0
- package/dist/components/composed/DataAppShell/ShellContext.cjs +2 -0
- package/dist/components/composed/DataAppShell/ShellContext.cjs.map +1 -0
- package/dist/components/composed/DataAppShell/ShellContext.d.ts +20 -0
- package/dist/components/composed/DataAppShell/ShellContext.js +23 -0
- package/dist/components/composed/DataAppShell/ShellContext.js.map +1 -0
- package/dist/components/composed/DataAppShell/index.d.ts +12 -0
- package/dist/components/composed/EmptyState/EmptyState.d.ts +12 -0
- package/dist/components/composed/EmptyState/index.d.ts +2 -0
- package/dist/components/composed/FormPatterns/FormSection.cjs +1 -1
- package/dist/components/composed/FormPatterns/FormSection.cjs.map +1 -1
- package/dist/components/composed/FormPatterns/FormSection.d.ts +7 -0
- package/dist/components/composed/FormPatterns/FormSection.js +2 -2
- package/dist/components/composed/FormPatterns/index.d.ts +1 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.d.ts +43 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.js +87 -0
- package/dist/components/composed/MoleculeStructure/MoleculeStructure.js.map +1 -0
- package/dist/components/composed/MoleculeStructure/index.d.ts +3 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.d.ts +104 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.js +89 -0
- package/dist/components/composed/MoleculeStructure/rdkit-loader.js.map +1 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.cjs +2 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.cjs.map +1 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.d.ts +29 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.js +19 -0
- package/dist/components/composed/MoleculeStructure/use-rdkit.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.d.ts +12 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +21 -21
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.d.ts +22 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +34 -34
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.d.ts +106 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +2 -2
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapForm.d.ts +30 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.js +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.d.ts +64 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.d.ts +29 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.d.ts +19 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +11 -11
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.d.ts +73 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +1 -1
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.d.ts +12 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +2 -2
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.d.ts +13 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +4 -4
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellLegend.d.ts +21 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.js +24 -12
- package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellManifestTable.d.ts +46 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js +10 -10
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +1 -1
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -1
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.d.ts +17 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +7 -7
- package/dist/components/composed/PlateMapEditor/autoFill.d.ts +26 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.d.ts +4 -0
- package/dist/components/composed/PlateMapEditor/helpers.d.ts +2 -0
- package/dist/components/composed/PlateMapEditor/index.d.ts +31 -0
- package/dist/components/composed/PlateMapEditor/types.d.ts +137 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.d.ts +12 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.d.ts +32 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.d.ts +86 -0
- package/dist/components/composed/ProcessFlow/index.d.ts +1 -0
- package/dist/components/composed/RichListItem/RichListItem.cjs +1 -1
- package/dist/components/composed/RichListItem/RichListItem.cjs.map +1 -1
- package/dist/components/composed/RichListItem/RichListItem.d.ts +22 -0
- package/dist/components/composed/RichListItem/RichListItem.js +2 -2
- package/dist/components/composed/RichListItem/index.d.ts +2 -0
- package/dist/components/composed/StatCard/StatCard.cjs +1 -1
- package/dist/components/composed/StatCard/StatCard.cjs.map +1 -1
- package/dist/components/composed/StatCard/StatCard.d.ts +11 -0
- package/dist/components/composed/StatCard/StatCard.js +1 -1
- package/dist/components/composed/StatCard/index.d.ts +1 -0
- package/dist/components/composed/TdpSearch/TdpSearch.cjs +1 -1
- package/dist/components/composed/TdpSearch/TdpSearch.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/TdpSearch.d.ts +21 -0
- package/dist/components/composed/TdpSearch/TdpSearch.js +14 -13
- package/dist/components/composed/TdpSearch/TdpSearch.mocks.d.ts +5 -0
- package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultFilters.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultFilters.d.ts +3 -0
- package/dist/components/composed/TdpSearch/components/DefaultFilters.js +4 -4
- package/dist/components/composed/TdpSearch/components/DefaultFilters.js.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultResults.cjs +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultResults.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultResults.d.ts +3 -0
- package/dist/components/composed/TdpSearch/components/DefaultResults.js +2 -2
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.cjs.map +1 -1
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.d.ts +3 -0
- package/dist/components/composed/TdpSearch/components/DefaultSearchBar.js +2 -2
- package/dist/components/composed/TdpSearch/constants.d.ts +3 -0
- package/dist/components/composed/TdpSearch/hooks/useSearch.d.ts +2 -0
- package/dist/components/composed/TdpSearch/hooks/useTdpCredentials.d.ts +14 -0
- package/dist/components/composed/TdpSearch/index.d.ts +3 -0
- package/dist/components/composed/TdpSearch/types.d.ts +128 -0
- package/dist/components/composed/TdpSearch/utils.d.ts +3 -0
- package/dist/components/composed/TopBar/TopBar.cjs +2 -0
- package/dist/components/composed/TopBar/TopBar.cjs.map +1 -0
- package/dist/components/composed/TopBar/TopBar.d.ts +25 -0
- package/dist/components/composed/TopBar/TopBar.js +56 -0
- package/dist/components/composed/TopBar/TopBar.js.map +1 -0
- package/dist/components/composed/TopBar/index.d.ts +2 -0
- package/dist/components/composed/UserMenu/UserMenu.cjs +2 -0
- package/dist/components/composed/UserMenu/UserMenu.cjs.map +1 -0
- package/dist/components/composed/UserMenu/UserMenu.d.ts +53 -0
- package/dist/components/composed/UserMenu/UserMenu.js +99 -0
- package/dist/components/composed/UserMenu/UserMenu.js.map +1 -0
- package/dist/components/composed/UserMenu/index.d.ts +2 -0
- package/dist/components/composed/tdp-link.d.ts +110 -0
- package/dist/components/composed/tdp-url.d.ts +68 -0
- package/dist/components/ui/accordion.d.ts +7 -0
- package/dist/components/ui/alert-dialog.d.ts +18 -0
- package/dist/components/ui/alert.d.ts +10 -0
- package/dist/components/ui/aspect-ratio.d.ts +3 -0
- package/dist/components/ui/avatar.d.ts +11 -0
- package/dist/components/ui/badge.d.ts +9 -0
- package/dist/components/ui/banner.d.ts +19 -0
- package/dist/components/ui/breadcrumb.d.ts +11 -0
- package/dist/components/ui/button-group.d.ts +11 -0
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/calendar.d.ts +10 -0
- package/dist/components/ui/card.d.ts +11 -0
- package/dist/components/ui/carousel.d.ts +28 -0
- package/dist/components/ui/checkbox.d.ts +4 -0
- package/dist/components/ui/code-block.d.ts +45 -0
- package/dist/components/ui/code-editor.d.ts +18 -0
- package/dist/components/ui/collapsible.d.ts +5 -0
- package/dist/components/ui/combobox.d.ts +24 -0
- package/dist/components/ui/command.d.ts +18 -0
- package/dist/components/ui/context-menu.d.ts +31 -0
- package/dist/components/ui/data-table/data-table-column-toggle.cjs +1 -1
- package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-column-toggle.d.ts +6 -0
- package/dist/components/ui/data-table/data-table-column-toggle.js +71 -63
- package/dist/components/ui/data-table/data-table-column-toggle.js.map +1 -1
- package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
- package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-filter.d.ts +9 -0
- package/dist/components/ui/data-table/data-table-filter.js +26 -25
- package/dist/components/ui/data-table/data-table-filter.js.map +1 -1
- package/dist/components/ui/data-table/data-table-group.cjs +1 -1
- package/dist/components/ui/data-table/data-table-group.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-group.d.ts +9 -0
- package/dist/components/ui/data-table/data-table-group.js +18 -17
- package/dist/components/ui/data-table/data-table-group.js.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
- package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.d.ts +7 -0
- package/dist/components/ui/data-table/data-table-pagination.js +16 -16
- package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
- package/dist/components/ui/data-table/data-table.cjs +1 -1
- package/dist/components/ui/data-table/data-table.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table.d.ts +82 -0
- package/dist/components/ui/data-table/data-table.js +191 -190
- package/dist/components/ui/data-table/data-table.js.map +1 -1
- package/dist/components/ui/data-table/index.d.ts +5 -0
- package/dist/components/ui/dialog.d.ts +18 -0
- package/dist/components/ui/dropdown-menu.d.ts +29 -0
- package/dist/components/ui/field.d.ts +24 -0
- package/dist/components/ui/hover-card.d.ts +6 -0
- package/dist/components/ui/input-group.d.ts +16 -0
- package/dist/components/ui/input.d.ts +3 -0
- package/dist/components/ui/item.d.ts +23 -0
- package/dist/components/ui/kbd.d.ts +3 -0
- package/dist/components/ui/label.d.ts +4 -0
- package/dist/components/ui/menubar.d.ts +30 -0
- package/dist/components/ui/navigation-menu.d.ts +14 -0
- package/dist/components/ui/popover.d.ts +7 -0
- package/dist/components/ui/progress.d.ts +4 -0
- package/dist/components/ui/radio-group.d.ts +5 -0
- package/dist/components/ui/resizable.d.ts +25 -0
- package/dist/components/ui/scroll-area.d.ts +5 -0
- package/dist/components/ui/select.d.ts +15 -0
- package/dist/components/ui/separator.d.ts +4 -0
- package/dist/components/ui/sheet.d.ts +14 -0
- package/dist/components/ui/sidebar.d.ts +69 -0
- package/dist/components/ui/skeleton.d.ts +2 -0
- package/dist/components/ui/slider.d.ts +4 -0
- package/dist/components/ui/snippet.d.ts +18 -0
- package/dist/components/ui/sonner.d.ts +3 -0
- package/dist/components/ui/spinner.d.ts +6 -0
- package/dist/components/ui/switch.d.ts +6 -0
- package/dist/components/ui/table.d.ts +22 -0
- package/dist/components/ui/tabs.d.ts +11 -0
- package/dist/components/ui/tetra-molecule-icon.d.ts +11 -0
- package/dist/components/ui/tetrascience-icon.d.ts +7 -0
- package/dist/components/ui/textarea.d.ts +3 -0
- package/dist/components/ui/toggle-group.d.ts +10 -0
- package/dist/components/ui/toggle.d.ts +9 -0
- package/dist/components/ui/tooltip.d.ts +7 -0
- package/dist/composed/AssistantLayout.cjs +2 -0
- package/dist/composed/AssistantLayout.cjs.map +1 -0
- package/dist/composed/AssistantLayout.js +10 -0
- package/dist/composed/AssistantLayout.js.map +1 -0
- package/dist/composed/Chat.cjs +2 -0
- package/dist/composed/Chat.cjs.map +1 -0
- package/dist/composed/Chat.js +5 -0
- package/dist/composed/Chat.js.map +1 -0
- package/dist/composed/ConfirmDialog.cjs +2 -0
- package/dist/composed/ConfirmDialog.cjs.map +1 -0
- package/dist/composed/ConfirmDialog.js +5 -0
- package/dist/composed/ConfirmDialog.js.map +1 -0
- package/dist/composed/DataAppShell.cjs +2 -0
- package/dist/composed/DataAppShell.cjs.map +1 -0
- package/dist/composed/DataAppShell.js +22 -0
- package/dist/composed/DataAppShell.js.map +1 -0
- package/dist/composed/EmptyState.cjs +2 -0
- package/dist/composed/EmptyState.cjs.map +1 -0
- package/dist/composed/EmptyState.js +5 -0
- package/dist/composed/EmptyState.js.map +1 -0
- package/dist/composed/FormPatterns.cjs +2 -0
- package/dist/composed/FormPatterns.cjs.map +1 -0
- package/dist/composed/FormPatterns.js +5 -0
- package/dist/composed/FormPatterns.js.map +1 -0
- package/dist/composed/MoleculeStructure.cjs +2 -0
- package/dist/composed/MoleculeStructure.cjs.map +1 -0
- package/dist/composed/MoleculeStructure.js +11 -0
- package/dist/composed/MoleculeStructure.js.map +1 -0
- package/dist/composed/PlateMapEditor.cjs +2 -0
- package/dist/composed/PlateMapEditor.cjs.map +1 -0
- package/dist/composed/PlateMapEditor.js +45 -0
- package/dist/composed/PlateMapEditor.js.map +1 -0
- package/dist/composed/ProcessFlow.cjs +2 -0
- package/dist/composed/ProcessFlow.cjs.map +1 -0
- package/dist/composed/ProcessFlow.js +7 -0
- package/dist/composed/ProcessFlow.js.map +1 -0
- package/dist/composed/RichListItem.cjs +2 -0
- package/dist/composed/RichListItem.cjs.map +1 -0
- package/dist/composed/RichListItem.js +6 -0
- package/dist/composed/RichListItem.js.map +1 -0
- package/dist/composed/StatCard.cjs +2 -0
- package/dist/composed/StatCard.cjs.map +1 -0
- package/dist/composed/StatCard.js +5 -0
- package/dist/composed/StatCard.js.map +1 -0
- package/dist/composed/TdpSearch.cjs +2 -0
- package/dist/composed/TdpSearch.cjs.map +1 -0
- package/dist/composed/TdpSearch.js +8 -0
- package/dist/composed/TdpSearch.js.map +1 -0
- package/dist/composed/TopBar.cjs +2 -0
- package/dist/composed/TopBar.cjs.map +1 -0
- package/dist/composed/TopBar.js +6 -0
- package/dist/composed/TopBar.js.map +1 -0
- package/dist/composed/UserMenu.cjs +2 -0
- package/dist/composed/UserMenu.cjs.map +1 -0
- package/dist/composed/UserMenu.js +7 -0
- package/dist/composed/UserMenu.js.map +1 -0
- package/dist/composed/tdp-link.cjs +2 -0
- package/dist/composed/tdp-link.cjs.map +1 -0
- package/dist/composed/tdp-link.js +84 -0
- package/dist/composed/tdp-link.js.map +1 -0
- package/dist/composed/tdp-url.cjs.map +1 -0
- package/dist/composed/tdp-url.js.map +1 -0
- package/dist/hooks/use-code-editor-theme.d.ts +34 -0
- package/dist/hooks/use-element-size.d.ts +25 -0
- package/dist/hooks/use-is-dark.d.ts +12 -0
- package/dist/hooks/use-mobile.d.ts +1 -0
- package/dist/hooks/use-plotly-theme.cjs +1 -1
- package/dist/hooks/use-plotly-theme.cjs.map +1 -1
- package/dist/hooks/use-plotly-theme.d.ts +49 -0
- package/dist/hooks/use-plotly-theme.js +4 -3
- package/dist/hooks/use-plotly-theme.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +102 -4404
- package/dist/index.js +698 -659
- package/dist/index.js.map +1 -1
- package/dist/index.tailwind.css +1 -1
- package/dist/jest-setup.cjs +4 -0
- package/dist/jest-setup.cjs.map +1 -0
- package/dist/jest-setup.d.ts +106 -0
- package/dist/jest-setup.js +218 -0
- package/dist/jest-setup.js.map +1 -0
- package/dist/lib/shiki.cjs +2 -0
- package/dist/lib/shiki.cjs.map +1 -0
- package/dist/lib/shiki.d.ts +32 -0
- package/dist/lib/shiki.js +72 -0
- package/dist/lib/shiki.js.map +1 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/server/auth/JwtTokenManager.cjs +1 -1
- package/dist/server/auth/JwtTokenManager.cjs.map +1 -1
- package/dist/server/auth/JwtTokenManager.d.ts +113 -0
- package/dist/server/auth/JwtTokenManager.js +44 -21
- package/dist/server/auth/JwtTokenManager.js.map +1 -1
- package/dist/server/auth/index.d.ts +5 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/providers/AthenaProvider.cjs +1 -1
- package/dist/server/providers/AthenaProvider.cjs.map +1 -1
- package/dist/server/providers/AthenaProvider.d.ts +75 -0
- package/dist/server/providers/DatabricksProvider.cjs +1 -1
- package/dist/server/providers/DatabricksProvider.cjs.map +1 -1
- package/dist/server/providers/DatabricksProvider.d.ts +38 -0
- package/dist/server/providers/SnowflakeProvider.cjs +1 -1
- package/dist/server/providers/SnowflakeProvider.cjs.map +1 -1
- package/dist/server/providers/SnowflakeProvider.d.ts +36 -0
- package/dist/server/providers/buildProvider.d.ts +39 -0
- package/dist/server/providers/entries/athena.d.ts +24 -0
- package/dist/server/providers/entries/databricks.d.ts +25 -0
- package/dist/server/providers/entries/snowflake.d.ts +25 -0
- package/dist/server/providers/exceptions.d.ts +36 -0
- package/dist/server/providers/getProviderConfigurations.d.ts +45 -0
- package/dist/server/providers/index.d.ts +31 -0
- package/dist/server/providers/providerDiscovery.d.ts +81 -0
- package/dist/server/providers/types.d.ts +145 -0
- package/dist/server/search/TdpSearchManager.d.ts +40 -0
- package/dist/server/search/index.d.ts +5 -0
- package/dist/server.d.ts +17 -540
- package/dist/ui/accordion.cjs +2 -0
- package/dist/ui/accordion.cjs.map +1 -0
- package/dist/ui/accordion.js +83 -0
- package/dist/ui/accordion.js.map +1 -0
- package/dist/ui/alert-dialog.cjs +2 -0
- package/dist/ui/alert-dialog.cjs.map +1 -0
- package/dist/ui/alert-dialog.js +181 -0
- package/dist/ui/alert-dialog.js.map +1 -0
- package/dist/ui/alert.cjs +2 -0
- package/dist/ui/alert.cjs.map +1 -0
- package/dist/ui/alert.js +81 -0
- package/dist/ui/alert.js.map +1 -0
- package/dist/ui/aspect-ratio.cjs.map +1 -0
- package/dist/ui/aspect-ratio.js.map +1 -0
- package/dist/ui/avatar.cjs +2 -0
- package/dist/ui/avatar.cjs.map +1 -0
- package/dist/ui/avatar.js +107 -0
- package/dist/ui/avatar.js.map +1 -0
- package/dist/ui/badge.cjs +2 -0
- package/dist/ui/badge.cjs.map +1 -0
- package/dist/ui/badge.js +47 -0
- package/dist/ui/badge.js.map +1 -0
- package/dist/ui/banner.cjs +2 -0
- package/dist/ui/banner.cjs.map +1 -0
- package/dist/ui/banner.js +80 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/ui/breadcrumb.cjs +2 -0
- package/dist/ui/breadcrumb.cjs.map +1 -0
- package/dist/ui/breadcrumb.js +118 -0
- package/dist/ui/breadcrumb.js.map +1 -0
- package/dist/ui/button-group.cjs +2 -0
- package/dist/ui/button-group.cjs.map +1 -0
- package/dist/ui/button-group.js +77 -0
- package/dist/ui/button-group.js.map +1 -0
- package/dist/ui/button.cjs +2 -0
- package/dist/ui/button.cjs.map +1 -0
- package/dist/ui/button.js +57 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/calendar.cjs +2 -0
- package/dist/ui/calendar.cjs.map +1 -0
- package/dist/ui/calendar.js +174 -0
- package/dist/ui/calendar.js.map +1 -0
- package/dist/ui/card.cjs +2 -0
- package/dist/ui/card.cjs.map +1 -0
- package/dist/ui/card.js +102 -0
- package/dist/ui/card.js.map +1 -0
- package/dist/ui/carousel.cjs +2 -0
- package/dist/ui/carousel.cjs.map +1 -0
- package/dist/ui/carousel.js +179 -0
- package/dist/ui/carousel.js.map +1 -0
- package/dist/ui/checkbox.cjs +2 -0
- package/dist/ui/checkbox.cjs.map +1 -0
- package/dist/ui/checkbox.js +35 -0
- package/dist/ui/checkbox.js.map +1 -0
- package/dist/ui/code-block.cjs +4 -0
- package/dist/ui/code-block.cjs.map +1 -0
- package/dist/ui/code-block.js +324 -0
- package/dist/ui/code-block.js.map +1 -0
- package/dist/ui/code-editor.cjs +2 -0
- package/dist/ui/code-editor.cjs.map +1 -0
- package/dist/ui/code-editor.js +106 -0
- package/dist/ui/code-editor.js.map +1 -0
- package/dist/ui/collapsible.cjs.map +1 -0
- package/dist/ui/collapsible.js.map +1 -0
- package/dist/ui/combobox.cjs +2 -0
- package/dist/ui/combobox.cjs.map +1 -0
- package/dist/ui/combobox.js +285 -0
- package/dist/ui/combobox.js.map +1 -0
- package/dist/ui/command.cjs +2 -0
- package/dist/ui/command.cjs.map +1 -0
- package/dist/ui/command.js +178 -0
- package/dist/ui/command.js.map +1 -0
- package/dist/ui/context-menu.cjs +2 -0
- package/dist/ui/context-menu.cjs.map +1 -0
- package/dist/ui/context-menu.js +236 -0
- package/dist/ui/context-menu.js.map +1 -0
- package/dist/ui/data-table.cjs +2 -0
- package/dist/ui/data-table.cjs.map +1 -0
- package/dist/ui/data-table.js +16 -0
- package/dist/ui/data-table.js.map +1 -0
- package/dist/ui/dialog.cjs +2 -0
- package/dist/ui/dialog.cjs.map +1 -0
- package/dist/ui/dialog.js +165 -0
- package/dist/ui/dialog.js.map +1 -0
- package/dist/ui/dropdown-menu.cjs +2 -0
- package/dist/ui/dropdown-menu.cjs.map +1 -0
- package/dist/ui/dropdown-menu.js +260 -0
- package/dist/ui/dropdown-menu.js.map +1 -0
- package/dist/ui/field.cjs +2 -0
- package/dist/ui/field.cjs.map +1 -0
- package/dist/ui/field.js +210 -0
- package/dist/ui/field.js.map +1 -0
- package/dist/ui/hover-card.cjs +2 -0
- package/dist/ui/hover-card.cjs.map +1 -0
- package/dist/ui/hover-card.js +39 -0
- package/dist/ui/hover-card.js.map +1 -0
- package/dist/ui/input-group.cjs +2 -0
- package/dist/ui/input-group.cjs.map +1 -0
- package/dist/ui/input-group.js +145 -0
- package/dist/ui/input-group.js.map +1 -0
- package/dist/ui/input.cjs +2 -0
- package/dist/ui/input.cjs.map +1 -0
- package/dist/ui/input.js +20 -0
- package/dist/ui/input.js.map +1 -0
- package/dist/ui/item.cjs +2 -0
- package/dist/ui/item.cjs.map +1 -0
- package/dist/ui/item.js +199 -0
- package/dist/ui/item.js.map +1 -0
- package/dist/ui/kbd.cjs +2 -0
- package/dist/ui/kbd.cjs.map +1 -0
- package/dist/ui/kbd.js +30 -0
- package/dist/ui/kbd.js.map +1 -0
- package/dist/ui/label.cjs +2 -0
- package/dist/ui/label.cjs.map +1 -0
- package/dist/ui/label.js +23 -0
- package/dist/ui/label.js.map +1 -0
- package/dist/ui/menubar.cjs +2 -0
- package/dist/ui/menubar.cjs.map +1 -0
- package/dist/ui/menubar.js +256 -0
- package/dist/ui/menubar.js.map +1 -0
- package/dist/ui/navigation-menu.cjs +2 -0
- package/dist/ui/navigation-menu.cjs.map +1 -0
- package/dist/ui/navigation-menu.js +164 -0
- package/dist/ui/navigation-menu.js.map +1 -0
- package/dist/ui/popover.cjs +2 -0
- package/dist/ui/popover.cjs.map +1 -0
- package/dist/ui/popover.js +45 -0
- package/dist/ui/popover.js.map +1 -0
- package/dist/ui/radio-group.cjs +2 -0
- package/dist/ui/radio-group.cjs.map +1 -0
- package/dist/ui/radio-group.js +45 -0
- package/dist/ui/radio-group.js.map +1 -0
- package/dist/ui/resizable.cjs +2 -0
- package/dist/ui/resizable.cjs.map +1 -0
- package/dist/ui/resizable.js +58 -0
- package/dist/ui/resizable.js.map +1 -0
- package/dist/ui/scroll-area.cjs +2 -0
- package/dist/ui/scroll-area.cjs.map +1 -0
- package/dist/ui/scroll-area.js +61 -0
- package/dist/ui/scroll-area.js.map +1 -0
- package/dist/ui/select.cjs +2 -0
- package/dist/ui/select.cjs.map +1 -0
- package/dist/ui/select.js +184 -0
- package/dist/ui/select.js.map +1 -0
- package/dist/ui/separator.cjs +2 -0
- package/dist/ui/separator.cjs.map +1 -0
- package/dist/ui/separator.js +27 -0
- package/dist/ui/separator.js.map +1 -0
- package/dist/ui/sheet.cjs +2 -0
- package/dist/ui/sheet.cjs.map +1 -0
- package/dist/ui/sheet.js +137 -0
- package/dist/ui/sheet.js.map +1 -0
- package/dist/ui/sidebar.cjs +2 -0
- package/dist/ui/sidebar.cjs.map +1 -0
- package/dist/ui/sidebar.js +579 -0
- package/dist/ui/sidebar.js.map +1 -0
- package/dist/ui/skeleton.cjs +2 -0
- package/dist/ui/skeleton.cjs.map +1 -0
- package/dist/ui/skeleton.js +24 -0
- package/dist/ui/skeleton.js.map +1 -0
- package/dist/ui/slider.cjs +2 -0
- package/dist/ui/slider.cjs.map +1 -0
- package/dist/ui/slider.js +61 -0
- package/dist/ui/slider.js.map +1 -0
- package/dist/ui/sonner.cjs +2 -0
- package/dist/ui/sonner.cjs.map +1 -0
- package/dist/ui/sonner.js +52 -0
- package/dist/ui/sonner.js.map +1 -0
- package/dist/ui/spinner.cjs +2 -0
- package/dist/ui/spinner.cjs.map +1 -0
- package/dist/ui/spinner.js +39 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/ui/switch.cjs +2 -0
- package/dist/ui/switch.cjs.map +1 -0
- package/dist/ui/switch.js +32 -0
- package/dist/ui/switch.js.map +1 -0
- package/dist/ui/table.cjs +2 -0
- package/dist/ui/table.cjs.map +1 -0
- package/dist/ui/table.js +153 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/tabs.cjs +2 -0
- package/dist/ui/tabs.cjs.map +1 -0
- package/dist/ui/tabs.js +92 -0
- package/dist/ui/tabs.js.map +1 -0
- package/dist/ui/tetra-molecule-icon.cjs +2 -0
- package/dist/ui/tetra-molecule-icon.cjs.map +1 -0
- package/dist/ui/tetra-molecule-icon.js +50 -0
- package/dist/ui/tetra-molecule-icon.js.map +1 -0
- package/dist/ui/tetrascience-icon.cjs +2 -0
- package/dist/ui/tetrascience-icon.cjs.map +1 -0
- package/dist/ui/tetrascience-icon.js +47 -0
- package/dist/ui/tetrascience-icon.js.map +1 -0
- package/dist/ui/textarea.cjs +2 -0
- package/dist/ui/textarea.cjs.map +1 -0
- package/dist/ui/textarea.js +19 -0
- package/dist/ui/textarea.js.map +1 -0
- package/dist/ui/toggle-group.cjs +2 -0
- package/dist/ui/toggle-group.cjs.map +1 -0
- package/dist/ui/toggle-group.js +81 -0
- package/dist/ui/toggle-group.js.map +1 -0
- package/dist/ui/toggle.cjs +2 -0
- package/dist/ui/toggle.cjs.map +1 -0
- package/dist/ui/toggle.js +44 -0
- package/dist/ui/toggle.js.map +1 -0
- package/dist/ui/tooltip.cjs +2 -0
- package/dist/ui/tooltip.cjs.map +1 -0
- package/dist/ui/tooltip.js +56 -0
- package/dist/ui/tooltip.js.map +1 -0
- package/dist/utils/colors.d.ts +50 -0
- package/package.json +137 -24
- package/dist/athena.d.ts +0 -167
- package/dist/components/ai/attachments.cjs +0 -2
- package/dist/components/ai/attachments.cjs.map +0 -1
- package/dist/components/ai/attachments.js +0 -224
- package/dist/components/ai/attachments.js.map +0 -1
- package/dist/components/ai/chain-of-thought.cjs +0 -2
- package/dist/components/ai/chain-of-thought.cjs.map +0 -1
- package/dist/components/ai/chain-of-thought.js +0 -145
- package/dist/components/ai/chain-of-thought.js.map +0 -1
- package/dist/components/ai/confirmation.cjs +0 -2
- package/dist/components/ai/confirmation.cjs.map +0 -1
- package/dist/components/ai/confirmation.js +0 -109
- package/dist/components/ai/confirmation.js.map +0 -1
- package/dist/components/ai/context.cjs +0 -2
- package/dist/components/ai/context.cjs.map +0 -1
- package/dist/components/ai/context.js +0 -266
- package/dist/components/ai/context.js.map +0 -1
- package/dist/components/ai/conversation.cjs +0 -4
- package/dist/components/ai/conversation.cjs.map +0 -1
- package/dist/components/ai/conversation.js +0 -108
- package/dist/components/ai/conversation.js.map +0 -1
- package/dist/components/ai/inline-citation.cjs +0 -2
- package/dist/components/ai/inline-citation.cjs.map +0 -1
- package/dist/components/ai/inline-citation.js +0 -182
- package/dist/components/ai/inline-citation.js.map +0 -1
- package/dist/components/ai/message.cjs +0 -2
- package/dist/components/ai/message.cjs.map +0 -1
- package/dist/components/ai/message.js +0 -237
- package/dist/components/ai/message.js.map +0 -1
- package/dist/components/ai/model-selector.cjs +0 -2
- package/dist/components/ai/model-selector.cjs.map +0 -1
- package/dist/components/ai/model-selector.js +0 -77
- package/dist/components/ai/model-selector.js.map +0 -1
- package/dist/components/ai/prompt-input.cjs +0 -2
- package/dist/components/ai/prompt-input.cjs.map +0 -1
- package/dist/components/ai/prompt-input.js +0 -774
- package/dist/components/ai/prompt-input.js.map +0 -1
- package/dist/components/ai/queue.cjs +0 -2
- package/dist/components/ai/queue.cjs.map +0 -1
- package/dist/components/ai/queue.js +0 -209
- package/dist/components/ai/queue.js.map +0 -1
- package/dist/components/ai/reasoning.cjs +0 -2
- package/dist/components/ai/reasoning.cjs.map +0 -1
- package/dist/components/ai/reasoning.js +0 -129
- package/dist/components/ai/reasoning.js.map +0 -1
- package/dist/components/ai/shimmer.cjs +0 -2
- package/dist/components/ai/shimmer.cjs.map +0 -1
- package/dist/components/ai/shimmer.js +0 -49
- package/dist/components/ai/shimmer.js.map +0 -1
- package/dist/components/ai/sources.cjs +0 -2
- package/dist/components/ai/sources.cjs.map +0 -1
- package/dist/components/ai/sources.js +0 -54
- package/dist/components/ai/sources.js.map +0 -1
- package/dist/components/ai/speech-input.cjs +0 -2
- package/dist/components/ai/speech-input.cjs.map +0 -1
- package/dist/components/ai/speech-input.js +0 -123
- package/dist/components/ai/speech-input.js.map +0 -1
- package/dist/components/ai/stream-status.cjs +0 -2
- package/dist/components/ai/stream-status.cjs.map +0 -1
- package/dist/components/ai/stream-status.js +0 -106
- package/dist/components/ai/stream-status.js.map +0 -1
- package/dist/components/ai/suggestion.cjs +0 -2
- package/dist/components/ai/suggestion.cjs.map +0 -1
- package/dist/components/ai/suggestion.js +0 -38
- package/dist/components/ai/suggestion.js.map +0 -1
- package/dist/components/ai/task.cjs +0 -2
- package/dist/components/ai/task.cjs.map +0 -1
- package/dist/components/ai/task.js +0 -94
- package/dist/components/ai/task.js.map +0 -1
- package/dist/components/ai/tool.cjs +0 -2
- package/dist/components/ai/tool.cjs.map +0 -1
- package/dist/components/ai/tool.js +0 -143
- package/dist/components/ai/tool.js.map +0 -1
- package/dist/components/charts/AreaGraph/AreaGraph.cjs +0 -2
- package/dist/components/charts/AreaGraph/AreaGraph.cjs.map +0 -1
- package/dist/components/charts/AreaGraph/AreaGraph.js +0 -271
- package/dist/components/charts/AreaGraph/AreaGraph.js.map +0 -1
- package/dist/components/charts/BarGraph/BarGraph.cjs +0 -2
- package/dist/components/charts/BarGraph/BarGraph.cjs.map +0 -1
- package/dist/components/charts/BarGraph/BarGraph.js +0 -220
- package/dist/components/charts/BarGraph/BarGraph.js.map +0 -1
- package/dist/components/charts/Boxplot/Boxplot.cjs +0 -2
- package/dist/components/charts/Boxplot/Boxplot.cjs.map +0 -1
- package/dist/components/charts/Boxplot/Boxplot.js +0 -209
- package/dist/components/charts/Boxplot/Boxplot.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.js +0 -227
- package/dist/components/charts/ChromatogramChart/ChromatogramChart.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/annotations.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/annotations.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/annotations.js +0 -73
- package/dist/components/charts/ChromatogramChart/annotations.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.js +0 -34
- package/dist/components/charts/ChromatogramChart/boundaryMarkers.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/constants.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/constants.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/constants.js +0 -30
- package/dist/components/charts/ChromatogramChart/constants.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/dataProcessing.cjs +0 -2
- package/dist/components/charts/ChromatogramChart/dataProcessing.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/dataProcessing.js +0 -79
- package/dist/components/charts/ChromatogramChart/dataProcessing.js.map +0 -1
- package/dist/components/charts/ChromatogramChart/peakDetection.cjs.map +0 -1
- package/dist/components/charts/ChromatogramChart/peakDetection.js.map +0 -1
- package/dist/components/charts/DotPlot/DotPlot.cjs +0 -2
- package/dist/components/charts/DotPlot/DotPlot.cjs.map +0 -1
- package/dist/components/charts/DotPlot/DotPlot.js +0 -208
- package/dist/components/charts/DotPlot/DotPlot.js.map +0 -1
- package/dist/components/charts/Heatmap/Heatmap.cjs +0 -2
- package/dist/components/charts/Heatmap/Heatmap.cjs.map +0 -1
- package/dist/components/charts/Heatmap/Heatmap.js +0 -67
- package/dist/components/charts/Heatmap/Heatmap.js.map +0 -1
- package/dist/components/charts/LineGraph/LineGraph.cjs +0 -2
- package/dist/components/charts/LineGraph/LineGraph.cjs.map +0 -1
- package/dist/components/charts/LineGraph/LineGraph.js +0 -225
- package/dist/components/charts/LineGraph/LineGraph.js.map +0 -1
- package/dist/components/charts/ScatterGraph/ScatterGraph.cjs +0 -2
- package/dist/components/charts/ScatterGraph/ScatterGraph.cjs.map +0 -1
- package/dist/components/charts/ScatterGraph/ScatterGraph.js +0 -234
- package/dist/components/charts/ScatterGraph/ScatterGraph.js.map +0 -1
- package/dist/components/composed/tdp-link.cjs +0 -2
- package/dist/components/composed/tdp-link.cjs.map +0 -1
- package/dist/components/composed/tdp-link.js +0 -84
- package/dist/components/composed/tdp-link.js.map +0 -1
- package/dist/components/composed/tdp-url.cjs.map +0 -1
- package/dist/components/composed/tdp-url.js.map +0 -1
- package/dist/components/ui/accordion.cjs +0 -2
- package/dist/components/ui/accordion.cjs.map +0 -1
- package/dist/components/ui/accordion.js +0 -83
- package/dist/components/ui/accordion.js.map +0 -1
- package/dist/components/ui/alert-dialog.cjs +0 -2
- package/dist/components/ui/alert-dialog.cjs.map +0 -1
- package/dist/components/ui/alert-dialog.js +0 -181
- package/dist/components/ui/alert-dialog.js.map +0 -1
- package/dist/components/ui/alert.cjs +0 -2
- package/dist/components/ui/alert.cjs.map +0 -1
- package/dist/components/ui/alert.js +0 -81
- package/dist/components/ui/alert.js.map +0 -1
- package/dist/components/ui/aspect-ratio.cjs.map +0 -1
- package/dist/components/ui/aspect-ratio.js.map +0 -1
- package/dist/components/ui/avatar.cjs +0 -2
- package/dist/components/ui/avatar.cjs.map +0 -1
- package/dist/components/ui/avatar.js +0 -107
- package/dist/components/ui/avatar.js.map +0 -1
- package/dist/components/ui/badge.cjs +0 -2
- package/dist/components/ui/badge.cjs.map +0 -1
- package/dist/components/ui/badge.js +0 -47
- package/dist/components/ui/badge.js.map +0 -1
- package/dist/components/ui/banner.cjs +0 -2
- package/dist/components/ui/banner.cjs.map +0 -1
- package/dist/components/ui/banner.js +0 -80
- package/dist/components/ui/banner.js.map +0 -1
- package/dist/components/ui/breadcrumb.cjs +0 -2
- package/dist/components/ui/breadcrumb.cjs.map +0 -1
- package/dist/components/ui/breadcrumb.js +0 -118
- package/dist/components/ui/breadcrumb.js.map +0 -1
- package/dist/components/ui/button-group.cjs +0 -2
- package/dist/components/ui/button-group.cjs.map +0 -1
- package/dist/components/ui/button-group.js +0 -77
- package/dist/components/ui/button-group.js.map +0 -1
- package/dist/components/ui/button.cjs +0 -2
- package/dist/components/ui/button.cjs.map +0 -1
- package/dist/components/ui/button.js +0 -57
- package/dist/components/ui/button.js.map +0 -1
- package/dist/components/ui/calendar.cjs +0 -2
- package/dist/components/ui/calendar.cjs.map +0 -1
- package/dist/components/ui/calendar.js +0 -174
- package/dist/components/ui/calendar.js.map +0 -1
- package/dist/components/ui/card.cjs +0 -2
- package/dist/components/ui/card.cjs.map +0 -1
- package/dist/components/ui/card.js +0 -102
- package/dist/components/ui/card.js.map +0 -1
- package/dist/components/ui/carousel.cjs +0 -2
- package/dist/components/ui/carousel.cjs.map +0 -1
- package/dist/components/ui/carousel.js +0 -179
- package/dist/components/ui/carousel.js.map +0 -1
- package/dist/components/ui/checkbox.cjs +0 -2
- package/dist/components/ui/checkbox.cjs.map +0 -1
- package/dist/components/ui/checkbox.js +0 -35
- package/dist/components/ui/checkbox.js.map +0 -1
- package/dist/components/ui/code-block.cjs +0 -4
- package/dist/components/ui/code-block.cjs.map +0 -1
- package/dist/components/ui/code-block.js +0 -306
- package/dist/components/ui/code-block.js.map +0 -1
- package/dist/components/ui/code-editor.cjs +0 -2
- package/dist/components/ui/code-editor.cjs.map +0 -1
- package/dist/components/ui/code-editor.js +0 -103
- package/dist/components/ui/code-editor.js.map +0 -1
- package/dist/components/ui/collapsible.cjs.map +0 -1
- package/dist/components/ui/collapsible.js.map +0 -1
- package/dist/components/ui/combobox.cjs +0 -2
- package/dist/components/ui/combobox.cjs.map +0 -1
- package/dist/components/ui/combobox.js +0 -281
- package/dist/components/ui/combobox.js.map +0 -1
- package/dist/components/ui/command.cjs +0 -2
- package/dist/components/ui/command.cjs.map +0 -1
- package/dist/components/ui/command.js +0 -174
- package/dist/components/ui/command.js.map +0 -1
- package/dist/components/ui/context-menu.cjs +0 -2
- package/dist/components/ui/context-menu.cjs.map +0 -1
- package/dist/components/ui/context-menu.js +0 -236
- package/dist/components/ui/context-menu.js.map +0 -1
- package/dist/components/ui/dialog.cjs +0 -2
- package/dist/components/ui/dialog.cjs.map +0 -1
- package/dist/components/ui/dialog.js +0 -165
- package/dist/components/ui/dialog.js.map +0 -1
- package/dist/components/ui/drawer.cjs +0 -2
- package/dist/components/ui/drawer.cjs.map +0 -1
- package/dist/components/ui/drawer.js +0 -125
- package/dist/components/ui/drawer.js.map +0 -1
- package/dist/components/ui/dropdown-menu.cjs +0 -2
- package/dist/components/ui/dropdown-menu.cjs.map +0 -1
- package/dist/components/ui/dropdown-menu.js +0 -252
- package/dist/components/ui/dropdown-menu.js.map +0 -1
- package/dist/components/ui/field.cjs +0 -2
- package/dist/components/ui/field.cjs.map +0 -1
- package/dist/components/ui/field.js +0 -210
- package/dist/components/ui/field.js.map +0 -1
- package/dist/components/ui/hover-card.cjs +0 -2
- package/dist/components/ui/hover-card.cjs.map +0 -1
- package/dist/components/ui/hover-card.js +0 -39
- package/dist/components/ui/hover-card.js.map +0 -1
- package/dist/components/ui/input-group.cjs +0 -2
- package/dist/components/ui/input-group.cjs.map +0 -1
- package/dist/components/ui/input-group.js +0 -145
- package/dist/components/ui/input-group.js.map +0 -1
- package/dist/components/ui/input-otp.cjs +0 -2
- package/dist/components/ui/input-otp.cjs.map +0 -1
- package/dist/components/ui/input-otp.js +0 -82
- package/dist/components/ui/input-otp.js.map +0 -1
- package/dist/components/ui/input.cjs +0 -2
- package/dist/components/ui/input.cjs.map +0 -1
- package/dist/components/ui/input.js +0 -20
- package/dist/components/ui/input.js.map +0 -1
- package/dist/components/ui/item.cjs +0 -2
- package/dist/components/ui/item.cjs.map +0 -1
- package/dist/components/ui/item.js +0 -191
- package/dist/components/ui/item.js.map +0 -1
- package/dist/components/ui/kbd.cjs +0 -2
- package/dist/components/ui/kbd.cjs.map +0 -1
- package/dist/components/ui/kbd.js +0 -30
- package/dist/components/ui/kbd.js.map +0 -1
- package/dist/components/ui/label.cjs +0 -2
- package/dist/components/ui/label.cjs.map +0 -1
- package/dist/components/ui/label.js +0 -23
- package/dist/components/ui/label.js.map +0 -1
- package/dist/components/ui/menubar.cjs +0 -2
- package/dist/components/ui/menubar.cjs.map +0 -1
- package/dist/components/ui/menubar.js +0 -256
- package/dist/components/ui/menubar.js.map +0 -1
- package/dist/components/ui/navigation-menu.cjs +0 -2
- package/dist/components/ui/navigation-menu.cjs.map +0 -1
- package/dist/components/ui/navigation-menu.js +0 -164
- package/dist/components/ui/navigation-menu.js.map +0 -1
- package/dist/components/ui/popover.cjs +0 -2
- package/dist/components/ui/popover.cjs.map +0 -1
- package/dist/components/ui/popover.js +0 -45
- package/dist/components/ui/popover.js.map +0 -1
- package/dist/components/ui/radio-group.cjs +0 -2
- package/dist/components/ui/radio-group.cjs.map +0 -1
- package/dist/components/ui/radio-group.js +0 -45
- package/dist/components/ui/radio-group.js.map +0 -1
- package/dist/components/ui/resizable.cjs +0 -2
- package/dist/components/ui/resizable.cjs.map +0 -1
- package/dist/components/ui/resizable.js +0 -58
- package/dist/components/ui/resizable.js.map +0 -1
- package/dist/components/ui/scroll-area.cjs +0 -2
- package/dist/components/ui/scroll-area.cjs.map +0 -1
- package/dist/components/ui/scroll-area.js +0 -60
- package/dist/components/ui/scroll-area.js.map +0 -1
- package/dist/components/ui/select.cjs +0 -2
- package/dist/components/ui/select.cjs.map +0 -1
- package/dist/components/ui/select.js +0 -184
- package/dist/components/ui/select.js.map +0 -1
- package/dist/components/ui/separator.cjs +0 -2
- package/dist/components/ui/separator.cjs.map +0 -1
- package/dist/components/ui/separator.js +0 -27
- package/dist/components/ui/separator.js.map +0 -1
- package/dist/components/ui/sheet.cjs +0 -2
- package/dist/components/ui/sheet.cjs.map +0 -1
- package/dist/components/ui/sheet.js +0 -137
- package/dist/components/ui/sheet.js.map +0 -1
- package/dist/components/ui/sidebar.cjs +0 -2
- package/dist/components/ui/sidebar.cjs.map +0 -1
- package/dist/components/ui/sidebar.js +0 -579
- package/dist/components/ui/sidebar.js.map +0 -1
- package/dist/components/ui/skeleton.cjs +0 -2
- package/dist/components/ui/skeleton.cjs.map +0 -1
- package/dist/components/ui/skeleton.js +0 -24
- package/dist/components/ui/skeleton.js.map +0 -1
- package/dist/components/ui/slider.cjs +0 -2
- package/dist/components/ui/slider.cjs.map +0 -1
- package/dist/components/ui/slider.js +0 -60
- package/dist/components/ui/slider.js.map +0 -1
- package/dist/components/ui/sonner.cjs +0 -2
- package/dist/components/ui/sonner.cjs.map +0 -1
- package/dist/components/ui/sonner.js +0 -37
- package/dist/components/ui/sonner.js.map +0 -1
- package/dist/components/ui/spinner.cjs +0 -2
- package/dist/components/ui/spinner.cjs.map +0 -1
- package/dist/components/ui/spinner.js +0 -39
- package/dist/components/ui/spinner.js.map +0 -1
- package/dist/components/ui/switch.cjs +0 -2
- package/dist/components/ui/switch.cjs.map +0 -1
- package/dist/components/ui/switch.js +0 -32
- package/dist/components/ui/switch.js.map +0 -1
- package/dist/components/ui/table.cjs +0 -2
- package/dist/components/ui/table.cjs.map +0 -1
- package/dist/components/ui/table.js +0 -152
- package/dist/components/ui/table.js.map +0 -1
- package/dist/components/ui/tabs.cjs +0 -2
- package/dist/components/ui/tabs.cjs.map +0 -1
- package/dist/components/ui/tabs.js +0 -92
- package/dist/components/ui/tabs.js.map +0 -1
- package/dist/components/ui/tetrascience-icon.cjs +0 -2
- package/dist/components/ui/tetrascience-icon.cjs.map +0 -1
- package/dist/components/ui/tetrascience-icon.js +0 -46
- package/dist/components/ui/tetrascience-icon.js.map +0 -1
- package/dist/components/ui/textarea.cjs +0 -2
- package/dist/components/ui/textarea.cjs.map +0 -1
- package/dist/components/ui/textarea.js +0 -19
- package/dist/components/ui/textarea.js.map +0 -1
- package/dist/components/ui/toggle-group.cjs +0 -2
- package/dist/components/ui/toggle-group.cjs.map +0 -1
- package/dist/components/ui/toggle-group.js +0 -77
- package/dist/components/ui/toggle-group.js.map +0 -1
- package/dist/components/ui/toggle.cjs +0 -2
- package/dist/components/ui/toggle.cjs.map +0 -1
- package/dist/components/ui/toggle.js +0 -44
- package/dist/components/ui/toggle.js.map +0 -1
- package/dist/components/ui/tooltip.cjs +0 -2
- package/dist/components/ui/tooltip.cjs.map +0 -1
- package/dist/components/ui/tooltip.js +0 -56
- package/dist/components/ui/tooltip.js.map +0 -1
- package/dist/databricks.d.ts +0 -129
- package/dist/providers/athena.d.ts +0 -9
- package/dist/providers/databricks.d.ts +0 -9
- package/dist/providers/snowflake.d.ts +0 -9
- package/dist/snowflake.d.ts +0 -125
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.cjs +0 -0
- /package/dist/components/charts/{ChromatogramChart → Chromatogram}/peakDetection.js +0 -0
- /package/dist/{components/composed → composed}/tdp-url.cjs +0 -0
- /package/dist/{components/composed → composed}/tdp-url.js +0 -0
- /package/dist/{components/ui → ui}/aspect-ratio.cjs +0 -0
- /package/dist/{components/ui → ui}/aspect-ratio.js +0 -0
- /package/dist/{components/ui → ui}/collapsible.cjs +0 -0
- /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":"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"}
|
|
@@ -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,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"}
|