@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,137 @@
|
|
|
1
|
+
import { CHART_COLORS as T } from "../../../utils/colors.js";
|
|
2
|
+
import { CHROMATOGRAM_ANNOTATION as s } from "./constants.js";
|
|
3
|
+
import { CHART_FONT_FAMILY as C } from "../../../hooks/use-plotly-theme.js";
|
|
4
|
+
const A = {
|
|
5
|
+
selected: {
|
|
6
|
+
borderColor: "#3b82f6",
|
|
7
|
+
backgroundColor: "#dbeafe",
|
|
8
|
+
bold: !0
|
|
9
|
+
},
|
|
10
|
+
unselected: { opacity: 0.4 },
|
|
11
|
+
hoverLineWidthMultiplier: 5 / 3
|
|
12
|
+
};
|
|
13
|
+
function w(o) {
|
|
14
|
+
if (!o) return A;
|
|
15
|
+
const e = A;
|
|
16
|
+
return {
|
|
17
|
+
selected: {
|
|
18
|
+
borderColor: o.selected?.borderColor ?? e.selected.borderColor,
|
|
19
|
+
backgroundColor: o.selected?.backgroundColor ?? e.selected.backgroundColor,
|
|
20
|
+
bold: o.selected?.bold ?? e.selected.bold
|
|
21
|
+
},
|
|
22
|
+
unselected: {
|
|
23
|
+
opacity: o.unselected?.opacity ?? e.unselected.opacity
|
|
24
|
+
},
|
|
25
|
+
hoverLineWidthMultiplier: o.hoverLineWidthMultiplier ?? e.hoverLineWidthMultiplier
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const y = {
|
|
29
|
+
default: { ax: 0, ay: -35 },
|
|
30
|
+
overlap: [
|
|
31
|
+
{ ax: 50, ay: -35 },
|
|
32
|
+
// Right, level 1
|
|
33
|
+
{ ax: -60, ay: -35 },
|
|
34
|
+
// Left, level 1
|
|
35
|
+
{ ax: 70, ay: -55 },
|
|
36
|
+
// Right, level 2
|
|
37
|
+
{ ax: -80, ay: -55 },
|
|
38
|
+
// Left, level 2
|
|
39
|
+
{ ax: 50, ay: -75 },
|
|
40
|
+
// Right, level 3
|
|
41
|
+
{ ax: -60, ay: -75 }
|
|
42
|
+
// Left, level 3
|
|
43
|
+
]
|
|
44
|
+
};
|
|
45
|
+
function E(o, e) {
|
|
46
|
+
const c = [...o].sort((n, l) => n.peak.x - l.peak.x), r = [];
|
|
47
|
+
let t = [];
|
|
48
|
+
for (const n of c) {
|
|
49
|
+
if (t.length === 0) {
|
|
50
|
+
t.push(n);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const l = t[t.length - 1];
|
|
54
|
+
Math.abs(n.peak.x - l.peak.x) < e ? t.push(n) : (r.push(t), t = [n]);
|
|
55
|
+
}
|
|
56
|
+
return t.length > 0 && r.push(t), r;
|
|
57
|
+
}
|
|
58
|
+
function S(o, e, c, r, t, n) {
|
|
59
|
+
const l = o ? t.selected.backgroundColor : s.BACKGROUND_COLOR;
|
|
60
|
+
let i;
|
|
61
|
+
o ? i = t.selected.borderColor : i = c && !n ? void 0 : r;
|
|
62
|
+
const d = o ? 2 : c && !n ? 0 : 1, a = e ? t.unselected.opacity : void 0;
|
|
63
|
+
return { bgcolor: l, bordercolor: i, borderwidth: d, ...a === void 0 ? {} : { opacity: a } };
|
|
64
|
+
}
|
|
65
|
+
function R(o, e, c, r, t, n, l) {
|
|
66
|
+
const i = n ? l.unselected.opacity : void 0;
|
|
67
|
+
return {
|
|
68
|
+
x: o.x,
|
|
69
|
+
y: o.y,
|
|
70
|
+
text: e,
|
|
71
|
+
showarrow: !1,
|
|
72
|
+
yshift: s.INLINE_YSHIFT,
|
|
73
|
+
yanchor: "bottom",
|
|
74
|
+
xanchor: "center",
|
|
75
|
+
font: {
|
|
76
|
+
size: c,
|
|
77
|
+
color: t ? l.selected.borderColor : r,
|
|
78
|
+
family: C
|
|
79
|
+
},
|
|
80
|
+
...i === void 0 ? {} : { opacity: i }
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function _(o, e, c, r = {}) {
|
|
84
|
+
const {
|
|
85
|
+
selectedPeakIds: t = [],
|
|
86
|
+
anySelected: n = !1,
|
|
87
|
+
appearance: l = A,
|
|
88
|
+
annotationStyle: i = "arrow"
|
|
89
|
+
} = r, d = e === -1, a = d ? s.USER_ANNOTATION_COLOR : T[e % T.length], f = o.color ?? a, O = d && !o.color ? s.USER_ANNOTATION_TEXT_COLOR : f, b = o.text ?? (o._computed?.area === void 0 ? "" : `Area: ${o._computed.area.toFixed(2)}`), u = o.id !== void 0 && t.includes(o.id), h = !u && n, x = u && l.selected.bold ? `<b>${b}</b>` : b, N = d ? s.USER_ANNOTATION_FONT_SIZE : s.AUTO_ANNOTATION_FONT_SIZE;
|
|
90
|
+
if (i === "inline")
|
|
91
|
+
return R(o, x, N, O, u, h, l);
|
|
92
|
+
const v = d && o.ax !== void 0 ? o.ax : c.ax, m = d && o.ay !== void 0 ? o.ay : c.ay, I = S(
|
|
93
|
+
u,
|
|
94
|
+
h,
|
|
95
|
+
d,
|
|
96
|
+
f,
|
|
97
|
+
l,
|
|
98
|
+
o.color !== void 0
|
|
99
|
+
);
|
|
100
|
+
return {
|
|
101
|
+
x: o.x,
|
|
102
|
+
y: o.y,
|
|
103
|
+
text: x,
|
|
104
|
+
showarrow: !0,
|
|
105
|
+
arrowhead: 2,
|
|
106
|
+
arrowsize: 1,
|
|
107
|
+
arrowwidth: 1,
|
|
108
|
+
arrowcolor: f,
|
|
109
|
+
ax: v,
|
|
110
|
+
ay: m,
|
|
111
|
+
font: {
|
|
112
|
+
size: N,
|
|
113
|
+
color: O,
|
|
114
|
+
family: C
|
|
115
|
+
},
|
|
116
|
+
borderpad: 2,
|
|
117
|
+
...I
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function M(o, e = {}) {
|
|
121
|
+
if (o.length === 1) {
|
|
122
|
+
const { peak: r, seriesIndex: t } = o[0];
|
|
123
|
+
return [_(r, t, y.default, e)];
|
|
124
|
+
}
|
|
125
|
+
return [...o].sort((r, t) => r.peak.y - t.peak.y).map(({ peak: r, seriesIndex: t }, n) => {
|
|
126
|
+
const l = y.overlap[n % y.overlap.length];
|
|
127
|
+
return _(r, t, l, e);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
export {
|
|
131
|
+
y as ANNOTATION_SLOTS,
|
|
132
|
+
M as createGroupAnnotations,
|
|
133
|
+
_ as createPeakAnnotation,
|
|
134
|
+
E as groupOverlappingPeaks,
|
|
135
|
+
w as resolveSelectionAppearance
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.js","sources":["../../../../src/components/charts/Chromatogram/annotations.ts"],"sourcesContent":["/**\n * Annotation utilities for Chromatogram\n */\n\nimport { CHART_COLORS } from \"../../../utils/colors\";\n\nimport { CHROMATOGRAM_ANNOTATION } from \"./constants\";\n\nimport type { PeakAnnotation, PeakSelectionAppearance, PeakWithMeta } from \"./types\";\nimport type Plotly from \"plotly.js-dist\";\n\nimport { CHART_FONT_FAMILY } from \"@/hooks/use-plotly-theme\";\n\n// ── Selection appearance helpers ─────────────────────────────────────────────\n\nexport interface ResolvedSelectionAppearance {\n selected: {\n borderColor: string;\n backgroundColor: string;\n bold: boolean;\n };\n unselected: {\n opacity: number;\n };\n hoverLineWidthMultiplier: number;\n}\n\nconst DEFAULT_RESOLVED_APPEARANCE: ResolvedSelectionAppearance = {\n selected: {\n borderColor: \"#3b82f6\",\n backgroundColor: \"#dbeafe\",\n bold: true,\n },\n unselected: { opacity: 0.4 },\n hoverLineWidthMultiplier: 5 / 3,\n};\n\nexport function resolveSelectionAppearance(\n appearance?: PeakSelectionAppearance\n): ResolvedSelectionAppearance {\n if (!appearance) return DEFAULT_RESOLVED_APPEARANCE;\n const d = DEFAULT_RESOLVED_APPEARANCE;\n return {\n selected: {\n borderColor: appearance.selected?.borderColor ?? d.selected.borderColor,\n backgroundColor: appearance.selected?.backgroundColor ?? d.selected.backgroundColor,\n bold: appearance.selected?.bold ?? d.selected.bold,\n },\n unselected: {\n opacity: appearance.unselected?.opacity ?? d.unselected.opacity,\n },\n hoverLineWidthMultiplier:\n appearance.hoverLineWidthMultiplier ?? d.hoverLineWidthMultiplier,\n };\n}\n\n/**\n * Annotation slot positions for peak labels\n */\nexport const ANNOTATION_SLOTS = {\n default: { ax: 0, ay: -35 },\n overlap: [\n { ax: 50, ay: -35 }, // Right, level 1\n { ax: -60, ay: -35 }, // Left, level 1\n { ax: 70, ay: -55 }, // Right, level 2\n { ax: -80, ay: -55 }, // Left, level 2\n { ax: 50, ay: -75 }, // Right, level 3\n { ax: -60, ay: -75 }, // Left, level 3\n ],\n};\n\n/**\n * Group overlapping peaks by retention time (x) proximity\n */\nexport function groupOverlappingPeaks(\n peaksWithMeta: PeakWithMeta[],\n overlapThreshold: number\n): PeakWithMeta[][] {\n const sorted = [...peaksWithMeta].sort((a, b) => a.peak.x - b.peak.x);\n\n const groups: PeakWithMeta[][] = [];\n let currentGroup: PeakWithMeta[] = [];\n\n for (const current of sorted) {\n if (currentGroup.length === 0) {\n currentGroup.push(current);\n continue;\n }\n\n const lastInGroup = currentGroup[currentGroup.length - 1];\n const timeDiff = Math.abs(current.peak.x - lastInGroup.peak.x);\n\n if (timeDiff < overlapThreshold) {\n currentGroup.push(current);\n } else {\n groups.push(currentGroup);\n currentGroup = [current];\n }\n }\n\n if (currentGroup.length > 0) {\n groups.push(currentGroup);\n }\n\n return groups;\n}\n\ninterface PeakAnnotationOptions {\n selectedPeakIds?: string[];\n anySelected?: boolean;\n appearance?: ResolvedSelectionAppearance;\n annotationStyle?: \"arrow\" | \"inline\";\n}\n\ninterface AnnotationBorderStyle {\n bgcolor: string;\n bordercolor: string | undefined;\n borderwidth: number;\n opacity?: number;\n}\n\n/** Derives border/background/opacity from selection state — extracted to keep\n * createPeakAnnotation within the allowed cognitive complexity budget. */\nfunction resolveAnnotationBorderStyle(\n isSelected: boolean,\n isDimmed: boolean,\n isUserDefined: boolean,\n seriesColor: string,\n appearance: ResolvedSelectionAppearance,\n hasColorOverride: boolean\n): AnnotationBorderStyle {\n const bgcolor = isSelected\n ? appearance.selected.backgroundColor\n : CHROMATOGRAM_ANNOTATION.BACKGROUND_COLOR;\n let bordercolor: string | undefined;\n if (isSelected) {\n bordercolor = appearance.selected.borderColor;\n } else {\n bordercolor = isUserDefined && !hasColorOverride ? undefined : seriesColor;\n }\n const borderwidth = isSelected ? 2 : isUserDefined && !hasColorOverride ? 0 : 1;\n const opacity = isDimmed ? appearance.unselected.opacity : undefined;\n return { bgcolor, bordercolor, borderwidth, ...(opacity === undefined ? {} : { opacity }) };\n}\n\n/** Builds an inline-style (no-arrow) annotation that floats above the trace point. */\nfunction createInlineAnnotation(\n peak: PeakAnnotation,\n text: string,\n fontSize: number,\n textColor: string,\n isSelected: boolean,\n isDimmed: boolean,\n appearance: ResolvedSelectionAppearance\n): Partial<Plotly.Annotations> {\n const opacity = isDimmed ? appearance.unselected.opacity : undefined;\n return {\n x: peak.x,\n y: peak.y,\n text,\n showarrow: false,\n yshift: CHROMATOGRAM_ANNOTATION.INLINE_YSHIFT,\n yanchor: \"bottom\" as const,\n xanchor: \"center\" as const,\n font: {\n size: fontSize,\n color: isSelected ? appearance.selected.borderColor : textColor,\n family: CHART_FONT_FAMILY,\n },\n ...(opacity === undefined ? {} : { opacity }),\n };\n}\n\n/**\n * Create a Plotly annotation for a peak.\n * seriesIndex of -1 indicates a user-defined annotation (uses grey/black styling).\n */\nexport function createPeakAnnotation(\n peak: PeakAnnotation,\n seriesIndex: number,\n slot: { ax: number; ay: number },\n options: PeakAnnotationOptions = {}\n): Partial<Plotly.Annotations> {\n const {\n selectedPeakIds = [],\n anySelected = false,\n appearance = DEFAULT_RESOLVED_APPEARANCE,\n annotationStyle = \"arrow\",\n } = options;\n\n const isUserDefined = seriesIndex === -1;\n const defaultColor = isUserDefined\n ? CHROMATOGRAM_ANNOTATION.USER_ANNOTATION_COLOR\n : CHART_COLORS[seriesIndex % CHART_COLORS.length];\n const color = peak.color ?? defaultColor;\n const textColor = isUserDefined && !peak.color\n ? CHROMATOGRAM_ANNOTATION.USER_ANNOTATION_TEXT_COLOR\n : color;\n\n const rawText = peak.text ?? (peak._computed?.area === undefined ? \"\" : `Area: ${peak._computed.area.toFixed(2)}`);\n\n const isSelected = peak.id !== undefined && selectedPeakIds.includes(peak.id);\n const isDimmed = !isSelected && anySelected;\n\n const text = isSelected && appearance.selected.bold ? `<b>${rawText}</b>` : rawText;\n\n const fontSize = isUserDefined\n ? CHROMATOGRAM_ANNOTATION.USER_ANNOTATION_FONT_SIZE\n : CHROMATOGRAM_ANNOTATION.AUTO_ANNOTATION_FONT_SIZE;\n\n if (annotationStyle === \"inline\") {\n return createInlineAnnotation(peak, text, fontSize, textColor, isSelected, isDimmed, appearance);\n }\n\n // For user-defined annotations, respect their ax/ay if provided\n const ax = isUserDefined && peak.ax !== undefined ? peak.ax : slot.ax;\n const ay = isUserDefined && peak.ay !== undefined ? peak.ay : slot.ay;\n\n const borderStyle = resolveAnnotationBorderStyle(\n isSelected, isDimmed, isUserDefined, color, appearance, peak.color !== undefined\n );\n\n return {\n x: peak.x,\n y: peak.y,\n text,\n showarrow: true,\n arrowhead: 2,\n arrowsize: 1,\n arrowwidth: 1,\n arrowcolor: color,\n ax,\n ay,\n font: {\n size: fontSize,\n color: textColor,\n family: CHART_FONT_FAMILY,\n },\n borderpad: 2,\n ...borderStyle,\n };\n}\n\n/**\n * Create annotations for a group of peaks, handling overlap positioning\n */\nexport function createGroupAnnotations(\n group: PeakWithMeta[],\n options: PeakAnnotationOptions = {}\n): Partial<Plotly.Annotations>[] {\n if (group.length === 1) {\n const { peak, seriesIndex } = group[0];\n return [createPeakAnnotation(peak, seriesIndex, ANNOTATION_SLOTS.default, options)];\n }\n\n // Sort by intensity (y, lowest first) so lower peaks get closer annotations\n const sortedGroup = [...group].sort((a, b) => a.peak.y - b.peak.y);\n\n return sortedGroup.map(({ peak, seriesIndex }, slotIndex) => {\n const slot =\n ANNOTATION_SLOTS.overlap[slotIndex % ANNOTATION_SLOTS.overlap.length];\n return createPeakAnnotation(peak, seriesIndex, slot, options);\n });\n}\n\n"],"names":["DEFAULT_RESOLVED_APPEARANCE","resolveSelectionAppearance","appearance","d","ANNOTATION_SLOTS","groupOverlappingPeaks","peaksWithMeta","overlapThreshold","sorted","a","b","groups","currentGroup","current","lastInGroup","resolveAnnotationBorderStyle","isSelected","isDimmed","isUserDefined","seriesColor","hasColorOverride","bgcolor","CHROMATOGRAM_ANNOTATION","bordercolor","borderwidth","opacity","createInlineAnnotation","peak","text","fontSize","textColor","CHART_FONT_FAMILY","createPeakAnnotation","seriesIndex","slot","options","selectedPeakIds","anySelected","annotationStyle","defaultColor","CHART_COLORS","color","rawText","ax","ay","borderStyle","createGroupAnnotations","group","slotIndex"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../../utils/colors.cjs"),m=-5,A=-12,d=-16;function i(n,e,o,r){return o==="none"?[]:[{x:[n],y:[e],type:"scatter",mode:"markers",marker:{symbol:o==="diamond"?"diamond":"triangle-up",size:8,color:r},showlegend:!1,hoverinfo:"skip"}]}function O(n){const e=[];for(const{peaks:o,seriesIndex:r,x:s}of n){const u=c.CHART_COLORS[r%c.CHART_COLORS.length],R=m+r*d,l=A+r*d;for(const t of o){const _=t._computed?.startIndex??0,k=t._computed?.endIndex??0,M=s[_],p=s[k],f=t.startMarker??"triangle",T=t.endMarker??"diamond",a=t.color??u;e.push(...i(M,R,f,a)),e.push(...i(p,l,T,a))}}return e}exports.createBoundaryMarkerTraces=O;
|
|
2
|
+
//# sourceMappingURL=boundaryMarkers.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundaryMarkers.cjs","sources":["../../../../src/components/charts/Chromatogram/boundaryMarkers.ts"],"sourcesContent":["/**\n * Boundary marker utilities for Chromatogram\n */\n\nimport { CHART_COLORS } from \"../../../utils/colors\";\n\nimport type { PeakAnnotation, BoundaryMarkerType } from \"./types\";\nimport type Plotly from \"plotly.js-dist\";\n\n/** Base Y position for start boundary markers (below the x-axis) */\nconst BOUNDARY_MARKER_START_Y = -5;\n/** Y position for end boundary markers (below start markers) */\nconst BOUNDARY_MARKER_END_Y = -12;\n/** Y offset between series to prevent overlap */\nconst BOUNDARY_MARKER_SERIES_OFFSET = -16;\n\n/**\n * Create a marker trace for a boundary point.\n * Markers are placed on the x-axis below 0, staggered by series index.\n */\nfunction createMarkerTrace(\n xPos: number,\n yPos: number,\n markerType: BoundaryMarkerType,\n color: string\n): Plotly.Data[] {\n if (markerType === \"none\") {\n return [];\n }\n\n return [\n {\n x: [xPos],\n y: [yPos],\n type: \"scatter\" as const,\n mode: \"markers\" as const,\n marker: {\n symbol: markerType === \"diamond\" ? (\"diamond\" as const) : (\"triangle-up\" as const),\n size: 8,\n color,\n },\n showlegend: false,\n hoverinfo: \"skip\" as const,\n },\n ];\n}\n\n/**\n * Create boundary marker traces for peaks.\n * Uses per-peak startMarker/endMarker settings with defaults:\n * - startMarker: \"triangle\" (default)\n * - endMarker: \"diamond\" (default)\n */\nexport function createBoundaryMarkerTraces(\n allPeaks: {\n peaks: PeakAnnotation[];\n seriesIndex: number;\n x: number[];\n y: number[];\n }[]\n): Plotly.Data[] {\n const traces: Plotly.Data[] = [];\n\n for (const { peaks, seriesIndex, x } of allPeaks) {\n const seriesColor = CHART_COLORS[seriesIndex % CHART_COLORS.length];\n // Separate y positions for start vs end markers to prevent overlap when peaks are adjacent\n // Also stagger by series index to prevent overlap between different traces\n const startMarkerY = BOUNDARY_MARKER_START_Y + seriesIndex * BOUNDARY_MARKER_SERIES_OFFSET;\n const endMarkerY = BOUNDARY_MARKER_END_Y + seriesIndex * BOUNDARY_MARKER_SERIES_OFFSET;\n\n for (const peak of peaks) {\n const startIdx = peak._computed?.startIndex ?? 0;\n const endIdx = peak._computed?.endIndex ?? 0;\n const startX = x[startIdx];\n const endX = x[endIdx];\n\n // Get marker types with defaults: triangle at start, diamond at end\n const startMarkerType = peak.startMarker ?? \"triangle\";\n const endMarkerType = peak.endMarker ?? \"diamond\";\n\n const color = peak.color ?? seriesColor;\n\n // Create start boundary marker (upper row, staggered by series)\n traces.push(...createMarkerTrace(startX, startMarkerY, startMarkerType, color));\n\n // Create end boundary marker (lower row, staggered by series)\n traces.push(...createMarkerTrace(endX, endMarkerY, endMarkerType, color));\n }\n }\n\n return traces;\n}\n\n"],"names":["BOUNDARY_MARKER_START_Y","BOUNDARY_MARKER_END_Y","BOUNDARY_MARKER_SERIES_OFFSET","createMarkerTrace","xPos","yPos","markerType","color","createBoundaryMarkerTraces","allPeaks","traces","peaks","seriesIndex","x","seriesColor","CHART_COLORS","startMarkerY","endMarkerY","peak","startIdx","endIdx","startX","endX","startMarkerType","endMarkerType"],"mappings":"6HAUMA,EAA0B,GAE1BC,EAAwB,IAExBC,EAAgC,IAMtC,SAASC,EACPC,EACAC,EACAC,EACAC,EACe,CACf,OAAID,IAAe,OACV,CAAA,EAGF,CACL,CACE,EAAG,CAACF,CAAI,EACR,EAAG,CAACC,CAAI,EACR,KAAM,UACN,KAAM,UACN,OAAQ,CACN,OAAQC,IAAe,UAAa,UAAuB,cAC3D,KAAM,EACN,MAAAC,CAAA,EAEF,WAAY,GACZ,UAAW,MAAA,CACb,CAEJ,CAQO,SAASC,EACdC,EAMe,CACf,MAAMC,EAAwB,CAAA,EAE9B,SAAW,CAAE,MAAAC,EAAO,YAAAC,EAAa,EAAAC,CAAA,IAAOJ,EAAU,CAChD,MAAMK,EAAcC,EAAAA,aAAaH,EAAcG,EAAAA,aAAa,MAAM,EAG5DC,EAAehB,EAA0BY,EAAcV,EACvDe,EAAahB,EAAwBW,EAAcV,EAEzD,UAAWgB,KAAQP,EAAO,CACxB,MAAMQ,EAAWD,EAAK,WAAW,YAAc,EACzCE,EAASF,EAAK,WAAW,UAAY,EACrCG,EAASR,EAAEM,CAAQ,EACnBG,EAAOT,EAAEO,CAAM,EAGfG,EAAkBL,EAAK,aAAe,WACtCM,EAAgBN,EAAK,WAAa,UAElCX,EAAQW,EAAK,OAASJ,EAG5BJ,EAAO,KAAK,GAAGP,EAAkBkB,EAAQL,EAAcO,EAAiBhB,CAAK,CAAC,EAG9EG,EAAO,KAAK,GAAGP,EAAkBmB,EAAML,EAAYO,EAAejB,CAAK,CAAC,CAC1E,CACF,CAEA,OAAOG,CACT"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PeakAnnotation } from './types';
|
|
2
|
+
import { default as Plotly } from 'plotly.js-dist';
|
|
3
|
+
/**
|
|
4
|
+
* Create boundary marker traces for peaks.
|
|
5
|
+
* Uses per-peak startMarker/endMarker settings with defaults:
|
|
6
|
+
* - startMarker: "triangle" (default)
|
|
7
|
+
* - endMarker: "diamond" (default)
|
|
8
|
+
*/
|
|
9
|
+
export declare function createBoundaryMarkerTraces(allPeaks: {
|
|
10
|
+
peaks: PeakAnnotation[];
|
|
11
|
+
seriesIndex: number;
|
|
12
|
+
x: number[];
|
|
13
|
+
y: number[];
|
|
14
|
+
}[]): Plotly.Data[];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { CHART_COLORS as c } from "../../../utils/colors.js";
|
|
2
|
+
const x = -5, A = -12, d = -16;
|
|
3
|
+
function i(o, e, n, r) {
|
|
4
|
+
return n === "none" ? [] : [
|
|
5
|
+
{
|
|
6
|
+
x: [o],
|
|
7
|
+
y: [e],
|
|
8
|
+
type: "scatter",
|
|
9
|
+
mode: "markers",
|
|
10
|
+
marker: {
|
|
11
|
+
symbol: n === "diamond" ? "diamond" : "triangle-up",
|
|
12
|
+
size: 8,
|
|
13
|
+
color: r
|
|
14
|
+
},
|
|
15
|
+
showlegend: !1,
|
|
16
|
+
hoverinfo: "skip"
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
}
|
|
20
|
+
function T(o) {
|
|
21
|
+
const e = [];
|
|
22
|
+
for (const { peaks: n, seriesIndex: r, x: s } of o) {
|
|
23
|
+
const R = c[r % c.length], k = x + r * d, p = A + r * d;
|
|
24
|
+
for (const t of n) {
|
|
25
|
+
const _ = t._computed?.startIndex ?? 0, u = t._computed?.endIndex ?? 0, M = s[_], f = s[u], m = t.startMarker ?? "triangle", l = t.endMarker ?? "diamond", a = t.color ?? R;
|
|
26
|
+
e.push(...i(M, k, m, a)), e.push(...i(f, p, l, a));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return e;
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
T as createBoundaryMarkerTraces
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=boundaryMarkers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundaryMarkers.js","sources":["../../../../src/components/charts/Chromatogram/boundaryMarkers.ts"],"sourcesContent":["/**\n * Boundary marker utilities for Chromatogram\n */\n\nimport { CHART_COLORS } from \"../../../utils/colors\";\n\nimport type { PeakAnnotation, BoundaryMarkerType } from \"./types\";\nimport type Plotly from \"plotly.js-dist\";\n\n/** Base Y position for start boundary markers (below the x-axis) */\nconst BOUNDARY_MARKER_START_Y = -5;\n/** Y position for end boundary markers (below start markers) */\nconst BOUNDARY_MARKER_END_Y = -12;\n/** Y offset between series to prevent overlap */\nconst BOUNDARY_MARKER_SERIES_OFFSET = -16;\n\n/**\n * Create a marker trace for a boundary point.\n * Markers are placed on the x-axis below 0, staggered by series index.\n */\nfunction createMarkerTrace(\n xPos: number,\n yPos: number,\n markerType: BoundaryMarkerType,\n color: string\n): Plotly.Data[] {\n if (markerType === \"none\") {\n return [];\n }\n\n return [\n {\n x: [xPos],\n y: [yPos],\n type: \"scatter\" as const,\n mode: \"markers\" as const,\n marker: {\n symbol: markerType === \"diamond\" ? (\"diamond\" as const) : (\"triangle-up\" as const),\n size: 8,\n color,\n },\n showlegend: false,\n hoverinfo: \"skip\" as const,\n },\n ];\n}\n\n/**\n * Create boundary marker traces for peaks.\n * Uses per-peak startMarker/endMarker settings with defaults:\n * - startMarker: \"triangle\" (default)\n * - endMarker: \"diamond\" (default)\n */\nexport function createBoundaryMarkerTraces(\n allPeaks: {\n peaks: PeakAnnotation[];\n seriesIndex: number;\n x: number[];\n y: number[];\n }[]\n): Plotly.Data[] {\n const traces: Plotly.Data[] = [];\n\n for (const { peaks, seriesIndex, x } of allPeaks) {\n const seriesColor = CHART_COLORS[seriesIndex % CHART_COLORS.length];\n // Separate y positions for start vs end markers to prevent overlap when peaks are adjacent\n // Also stagger by series index to prevent overlap between different traces\n const startMarkerY = BOUNDARY_MARKER_START_Y + seriesIndex * BOUNDARY_MARKER_SERIES_OFFSET;\n const endMarkerY = BOUNDARY_MARKER_END_Y + seriesIndex * BOUNDARY_MARKER_SERIES_OFFSET;\n\n for (const peak of peaks) {\n const startIdx = peak._computed?.startIndex ?? 0;\n const endIdx = peak._computed?.endIndex ?? 0;\n const startX = x[startIdx];\n const endX = x[endIdx];\n\n // Get marker types with defaults: triangle at start, diamond at end\n const startMarkerType = peak.startMarker ?? \"triangle\";\n const endMarkerType = peak.endMarker ?? \"diamond\";\n\n const color = peak.color ?? seriesColor;\n\n // Create start boundary marker (upper row, staggered by series)\n traces.push(...createMarkerTrace(startX, startMarkerY, startMarkerType, color));\n\n // Create end boundary marker (lower row, staggered by series)\n traces.push(...createMarkerTrace(endX, endMarkerY, endMarkerType, color));\n }\n }\n\n return traces;\n}\n\n"],"names":["BOUNDARY_MARKER_START_Y","BOUNDARY_MARKER_END_Y","BOUNDARY_MARKER_SERIES_OFFSET","createMarkerTrace","xPos","yPos","markerType","color","createBoundaryMarkerTraces","allPeaks","traces","peaks","seriesIndex","x","seriesColor","CHART_COLORS","startMarkerY","endMarkerY","peak","startIdx","endIdx","startX","endX","startMarkerType","endMarkerType"],"mappings":";AAUA,MAAMA,IAA0B,IAE1BC,IAAwB,KAExBC,IAAgC;AAMtC,SAASC,EACPC,GACAC,GACAC,GACAC,GACe;AACf,SAAID,MAAe,SACV,CAAA,IAGF;AAAA,IACL;AAAA,MACE,GAAG,CAACF,CAAI;AAAA,MACR,GAAG,CAACC,CAAI;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,QAAQC,MAAe,YAAa,YAAuB;AAAA,QAC3D,MAAM;AAAA,QACN,OAAAC;AAAA,MAAA;AAAA,MAEF,YAAY;AAAA,MACZ,WAAW;AAAA,IAAA;AAAA,EACb;AAEJ;AAQO,SAASC,EACdC,GAMe;AACf,QAAMC,IAAwB,CAAA;AAE9B,aAAW,EAAE,OAAAC,GAAO,aAAAC,GAAa,GAAAC,EAAA,KAAOJ,GAAU;AAChD,UAAMK,IAAcC,EAAaH,IAAcG,EAAa,MAAM,GAG5DC,IAAehB,IAA0BY,IAAcV,GACvDe,IAAahB,IAAwBW,IAAcV;AAEzD,eAAWgB,KAAQP,GAAO;AACxB,YAAMQ,IAAWD,EAAK,WAAW,cAAc,GACzCE,IAASF,EAAK,WAAW,YAAY,GACrCG,IAASR,EAAEM,CAAQ,GACnBG,IAAOT,EAAEO,CAAM,GAGfG,IAAkBL,EAAK,eAAe,YACtCM,IAAgBN,EAAK,aAAa,WAElCX,IAAQW,EAAK,SAASJ;AAG5B,MAAAJ,EAAO,KAAK,GAAGP,EAAkBkB,GAAQL,GAAcO,GAAiBhB,CAAK,CAAC,GAG9EG,EAAO,KAAK,GAAGP,EAAkBmB,GAAML,GAAYO,GAAejB,CAAK,CAAC;AAAA,IAC1E;AAAA,EACF;AAEA,SAAOG;AACT;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O={MARGIN_LEFT:70,MARGIN_RIGHT:30,MARGIN_BOTTOM:60,MARGIN_TOP_WITH_TITLE:50,MARGIN_TOP_NO_TITLE:30,MARGIN_PAD:5},T={USER_ANNOTATION_FONT_SIZE:11,AUTO_ANNOTATION_FONT_SIZE:10,USER_ANNOTATION_COLOR:"rgba(100, 116, 139, 1)",USER_ANNOTATION_TEXT_COLOR:"rgba(26, 26, 26, 1)",BACKGROUND_COLOR:"#ffffff",INLINE_YSHIFT:4},A={BASE_LINE_WIDTH:1.5};exports.CHROMATOGRAM_ANNOTATION=T;exports.CHROMATOGRAM_LAYOUT=O;exports.CHROMATOGRAM_TRACE=A;
|
|
2
|
+
//# sourceMappingURL=constants.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.cjs","sources":["../../../../src/components/charts/Chromatogram/constants.ts"],"sourcesContent":["/**\n * Constants for Chromatogram component\n */\n\n/**\n * Layout constants for chart margins and spacing\n */\nexport const CHROMATOGRAM_LAYOUT = {\n /** Left margin in pixels */\n MARGIN_LEFT: 70,\n /** Right margin in pixels */\n MARGIN_RIGHT: 30,\n /** Bottom margin in pixels */\n MARGIN_BOTTOM: 60,\n /** Top margin with title in pixels */\n MARGIN_TOP_WITH_TITLE: 50,\n /** Top margin without title in pixels */\n MARGIN_TOP_NO_TITLE: 30,\n /** Padding around plot area */\n MARGIN_PAD: 5,\n} as const;\n\n/**\n * Annotation constants for peak labels and markers\n */\nexport const CHROMATOGRAM_ANNOTATION = {\n /** Default vertical offset for annotation arrows (negative = above point) */\n DEFAULT_ARROW_OFFSET_Y: -30,\n /** Font size for user-defined annotations */\n USER_ANNOTATION_FONT_SIZE: 11,\n /** Font size for auto-detected peak annotations */\n AUTO_ANNOTATION_FONT_SIZE: 10,\n /** Arrow color for user-defined annotations (grey 500) */\n USER_ANNOTATION_COLOR: \"rgba(100, 116, 139, 1)\",\n /** Text color for user-defined annotations (black 900) */\n USER_ANNOTATION_TEXT_COLOR: \"rgba(26, 26, 26, 1)\",\n /** Background color behind annotation text */\n BACKGROUND_COLOR: \"#ffffff\",\n /** Pixel offset above the data point for inline-style annotations (no arrow) */\n INLINE_YSHIFT: 4,\n} as const;\n\n/**\n * Trace rendering constants\n */\nexport const CHROMATOGRAM_TRACE = {\n /** Base line width in pixels for all series traces */\n BASE_LINE_WIDTH: 1.5,\n} as const;\n\n\n"],"names":["CHROMATOGRAM_LAYOUT","CHROMATOGRAM_ANNOTATION","CHROMATOGRAM_TRACE"],"mappings":"gFAOO,MAAMA,EAAsB,CAEjC,YAAa,GAEb,aAAc,GAEd,cAAe,GAEf,sBAAuB,GAEvB,oBAAqB,GAErB,WAAY,CACd,EAKaC,EAA0B,CAIrC,0BAA2B,GAE3B,0BAA2B,GAE3B,sBAAuB,yBAEvB,2BAA4B,sBAE5B,iBAAkB,UAElB,cAAe,CACjB,EAKaC,EAAqB,CAEhC,gBAAiB,GACnB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants for Chromatogram component
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Layout constants for chart margins and spacing
|
|
6
|
+
*/
|
|
7
|
+
export declare const CHROMATOGRAM_LAYOUT: {
|
|
8
|
+
/** Left margin in pixels */
|
|
9
|
+
readonly MARGIN_LEFT: 70;
|
|
10
|
+
/** Right margin in pixels */
|
|
11
|
+
readonly MARGIN_RIGHT: 30;
|
|
12
|
+
/** Bottom margin in pixels */
|
|
13
|
+
readonly MARGIN_BOTTOM: 60;
|
|
14
|
+
/** Top margin with title in pixels */
|
|
15
|
+
readonly MARGIN_TOP_WITH_TITLE: 50;
|
|
16
|
+
/** Top margin without title in pixels */
|
|
17
|
+
readonly MARGIN_TOP_NO_TITLE: 30;
|
|
18
|
+
/** Padding around plot area */
|
|
19
|
+
readonly MARGIN_PAD: 5;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Annotation constants for peak labels and markers
|
|
23
|
+
*/
|
|
24
|
+
export declare const CHROMATOGRAM_ANNOTATION: {
|
|
25
|
+
/** Default vertical offset for annotation arrows (negative = above point) */
|
|
26
|
+
readonly DEFAULT_ARROW_OFFSET_Y: -30;
|
|
27
|
+
/** Font size for user-defined annotations */
|
|
28
|
+
readonly USER_ANNOTATION_FONT_SIZE: 11;
|
|
29
|
+
/** Font size for auto-detected peak annotations */
|
|
30
|
+
readonly AUTO_ANNOTATION_FONT_SIZE: 10;
|
|
31
|
+
/** Arrow color for user-defined annotations (grey 500) */
|
|
32
|
+
readonly USER_ANNOTATION_COLOR: "rgba(100, 116, 139, 1)";
|
|
33
|
+
/** Text color for user-defined annotations (black 900) */
|
|
34
|
+
readonly USER_ANNOTATION_TEXT_COLOR: "rgba(26, 26, 26, 1)";
|
|
35
|
+
/** Background color behind annotation text */
|
|
36
|
+
readonly BACKGROUND_COLOR: "#ffffff";
|
|
37
|
+
/** Pixel offset above the data point for inline-style annotations (no arrow) */
|
|
38
|
+
readonly INLINE_YSHIFT: 4;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Trace rendering constants
|
|
42
|
+
*/
|
|
43
|
+
export declare const CHROMATOGRAM_TRACE: {
|
|
44
|
+
/** Base line width in pixels for all series traces */
|
|
45
|
+
readonly BASE_LINE_WIDTH: 1.5;
|
|
46
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const T = {
|
|
2
|
+
/** Left margin in pixels */
|
|
3
|
+
MARGIN_LEFT: 70,
|
|
4
|
+
/** Right margin in pixels */
|
|
5
|
+
MARGIN_RIGHT: 30,
|
|
6
|
+
/** Bottom margin in pixels */
|
|
7
|
+
MARGIN_BOTTOM: 60,
|
|
8
|
+
/** Top margin with title in pixels */
|
|
9
|
+
MARGIN_TOP_WITH_TITLE: 50,
|
|
10
|
+
/** Top margin without title in pixels */
|
|
11
|
+
MARGIN_TOP_NO_TITLE: 30,
|
|
12
|
+
/** Padding around plot area */
|
|
13
|
+
MARGIN_PAD: 5
|
|
14
|
+
}, O = {
|
|
15
|
+
/** Font size for user-defined annotations */
|
|
16
|
+
USER_ANNOTATION_FONT_SIZE: 11,
|
|
17
|
+
/** Font size for auto-detected peak annotations */
|
|
18
|
+
AUTO_ANNOTATION_FONT_SIZE: 10,
|
|
19
|
+
/** Arrow color for user-defined annotations (grey 500) */
|
|
20
|
+
USER_ANNOTATION_COLOR: "rgba(100, 116, 139, 1)",
|
|
21
|
+
/** Text color for user-defined annotations (black 900) */
|
|
22
|
+
USER_ANNOTATION_TEXT_COLOR: "rgba(26, 26, 26, 1)",
|
|
23
|
+
/** Background color behind annotation text */
|
|
24
|
+
BACKGROUND_COLOR: "#ffffff",
|
|
25
|
+
/** Pixel offset above the data point for inline-style annotations (no arrow) */
|
|
26
|
+
INLINE_YSHIFT: 4
|
|
27
|
+
}, A = {
|
|
28
|
+
/** Base line width in pixels for all series traces */
|
|
29
|
+
BASE_LINE_WIDTH: 1.5
|
|
30
|
+
};
|
|
31
|
+
export {
|
|
32
|
+
O as CHROMATOGRAM_ANNOTATION,
|
|
33
|
+
T as CHROMATOGRAM_LAYOUT,
|
|
34
|
+
A as CHROMATOGRAM_TRACE
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/components/charts/Chromatogram/constants.ts"],"sourcesContent":["/**\n * Constants for Chromatogram component\n */\n\n/**\n * Layout constants for chart margins and spacing\n */\nexport const CHROMATOGRAM_LAYOUT = {\n /** Left margin in pixels */\n MARGIN_LEFT: 70,\n /** Right margin in pixels */\n MARGIN_RIGHT: 30,\n /** Bottom margin in pixels */\n MARGIN_BOTTOM: 60,\n /** Top margin with title in pixels */\n MARGIN_TOP_WITH_TITLE: 50,\n /** Top margin without title in pixels */\n MARGIN_TOP_NO_TITLE: 30,\n /** Padding around plot area */\n MARGIN_PAD: 5,\n} as const;\n\n/**\n * Annotation constants for peak labels and markers\n */\nexport const CHROMATOGRAM_ANNOTATION = {\n /** Default vertical offset for annotation arrows (negative = above point) */\n DEFAULT_ARROW_OFFSET_Y: -30,\n /** Font size for user-defined annotations */\n USER_ANNOTATION_FONT_SIZE: 11,\n /** Font size for auto-detected peak annotations */\n AUTO_ANNOTATION_FONT_SIZE: 10,\n /** Arrow color for user-defined annotations (grey 500) */\n USER_ANNOTATION_COLOR: \"rgba(100, 116, 139, 1)\",\n /** Text color for user-defined annotations (black 900) */\n USER_ANNOTATION_TEXT_COLOR: \"rgba(26, 26, 26, 1)\",\n /** Background color behind annotation text */\n BACKGROUND_COLOR: \"#ffffff\",\n /** Pixel offset above the data point for inline-style annotations (no arrow) */\n INLINE_YSHIFT: 4,\n} as const;\n\n/**\n * Trace rendering constants\n */\nexport const CHROMATOGRAM_TRACE = {\n /** Base line width in pixels for all series traces */\n BASE_LINE_WIDTH: 1.5,\n} as const;\n\n\n"],"names":["CHROMATOGRAM_LAYOUT","CHROMATOGRAM_ANNOTATION","CHROMATOGRAM_TRACE"],"mappings":"AAOO,MAAMA,IAAsB;AAAA;AAAA,EAEjC,aAAa;AAAA;AAAA,EAEb,cAAc;AAAA;AAAA,EAEd,eAAe;AAAA;AAAA,EAEf,uBAAuB;AAAA;AAAA,EAEvB,qBAAqB;AAAA;AAAA,EAErB,YAAY;AACd,GAKaC,IAA0B;AAAA;AAAA,EAIrC,2BAA2B;AAAA;AAAA,EAE3B,2BAA2B;AAAA;AAAA,EAE3B,uBAAuB;AAAA;AAAA,EAEvB,4BAA4B;AAAA;AAAA,EAE5B,kBAAkB;AAAA;AAAA,EAElB,eAAe;AACjB,GAKaC,IAAqB;AAAA;AAAA,EAEhC,iBAAiB;AACnB;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./peakDetection.cjs");function s(t,i){if(t.length===0||t.length===1)return 0;let n=0,e=t.length-1;for(;n<e;){const o=Math.floor((n+e)/2);t[o]<i?n=o+1:e=o}return n>0&&Math.abs(t[n-1]-i)<Math.abs(t[n]-i)?n-1:n}function d(t,i,n){return t.map(e=>{if(e.startX!==void 0&&e.endX!==void 0){const o=s(i,e.startX),l=s(i,e.endX),r=s(i,e.x),a=e._computed?.area??u.calculatePeakArea(i,n,o,l);return{...e,_computed:{...e._computed,index:r,startIndex:o,endIndex:l,area:a}}}return e})}function h(t,i,n){const e=[];t.forEach(({peaks:l,seriesIndex:r})=>{e.push({peaks:l,seriesIndex:r,x:n[r].x,y:n[r].y})});const o=i.filter(l=>l._computed?.startIndex!==void 0&&l._computed?.endIndex!==void 0);return o.length>0&&n.length>0&&e.push({peaks:o,seriesIndex:0,x:n[0].x,y:n[0].y}),e}function f(t,i){if(!i)return t;const n=[];for(const[e,o]of Object.entries(i))if(o!=null&&o!==""){const l=e.replace(/([A-Z])/g," $1").replace(/^./,r=>r.toUpperCase()).trim();n.push(`${l}: ${String(o)}`)}return n.length>0?`${t}<br>${n.join("<br>")}`:t}function p(t,i){const n=Math.min(t.length,i.length),e=t.slice(0,n),l=i.slice(0,n).map(a=>Number.isFinite(a)?a:0);return{x:e.map(a=>Number.isFinite(a)?a:0),y:l}}function g(t,i,n=50){if(i==="none"||t.length===0)return t;if(i==="linear"){if(t.length===1)return[0];const e=(t[t.length-1]-t[0])/(t.length-1);return t.map((o,l)=>o-(t[0]+e*l))}if(i==="rolling"){const e=[],o=Math.floor(n/2);for(let l=0;l<t.length;l++){const r=Math.max(0,l-o),a=Math.min(t.length,l+o+1),c=t.slice(r,a);e.push(Math.min(...c))}return t.map((l,r)=>l-e[r])}return t}exports.applyBaselineCorrection=g;exports.buildHoverExtraContent=f;exports.collectPeaksWithBoundaryData=h;exports.findClosestIndex=s;exports.processUserAnnotations=d;exports.validateSeriesData=p;
|
|
2
|
+
//# sourceMappingURL=dataProcessing.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataProcessing.cjs","sources":["../../../../src/components/charts/Chromatogram/dataProcessing.ts"],"sourcesContent":["/**\n * Data processing utilities for Chromatogram\n */\n\nimport { calculatePeakArea } from \"./peakDetection\";\n\nimport type { BaselineCorrectionMethod, PeakAnnotation } from \"./types\";\n\n/**\n * Data structure for peaks with their associated series data\n */\nexport type PeakDataWithSeries = {\n peaks: PeakAnnotation[];\n seriesIndex: number;\n x: number[];\n y: number[];\n};\n\n/**\n * Find the closest index in an array for a given target value.\n * Uses binary search for efficiency.\n */\nexport function findClosestIndex(arr: number[], target: number): number {\n if (arr.length === 0) return 0;\n if (arr.length === 1) return 0;\n\n let left = 0;\n let right = arr.length - 1;\n\n while (left < right) {\n const mid = Math.floor((left + right) / 2);\n if (arr[mid] < target) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n\n // Check if left-1 is closer\n if (left > 0 && Math.abs(arr[left - 1] - target) < Math.abs(arr[left] - target)) {\n return left - 1;\n }\n return left;\n}\n\n/**\n * Process user annotations to convert startX/endX to startIndex/endIndex\n * and compute area if boundaries are provided.\n */\nexport function processUserAnnotations(\n annotations: PeakAnnotation[],\n xArray: number[],\n yArray: number[]\n): PeakAnnotation[] {\n return annotations.map((ann) => {\n // If startX/endX are provided, convert to indices\n if (ann.startX !== undefined && ann.endX !== undefined) {\n const startIndex = findClosestIndex(xArray, ann.startX);\n const endIndex = findClosestIndex(xArray, ann.endX);\n const index = findClosestIndex(xArray, ann.x);\n\n // Calculate area if not provided\n const area = ann._computed?.area ?? calculatePeakArea(xArray, yArray, startIndex, endIndex);\n\n return {\n ...ann,\n _computed: {\n ...ann._computed,\n index,\n startIndex,\n endIndex,\n area,\n },\n };\n }\n return ann;\n });\n}\n\n/**\n * Collect peaks with boundary information from both auto-detected peaks and user-provided annotations.\n * User-provided annotations with startIndex/endIndex or startX/endX are included for boundary marker rendering.\n */\nexport function collectPeaksWithBoundaryData(\n allDetectedPeaks: { peaks: PeakAnnotation[]; seriesIndex: number }[],\n annotations: PeakAnnotation[],\n processedSeries: { x: number[]; y: number[] }[]\n): PeakDataWithSeries[] {\n const peaksWithData: PeakDataWithSeries[] = [];\n\n // Add auto-detected peaks\n allDetectedPeaks.forEach(({ peaks, seriesIndex }) => {\n peaksWithData.push({\n peaks,\n seriesIndex,\n x: processedSeries[seriesIndex].x,\n y: processedSeries[seriesIndex].y,\n });\n });\n\n // Add user-provided annotations that have boundary info (_computed.startIndex and _computed.endIndex)\n // Note: annotations with startX/endX should already be processed to have _computed fields\n const annotationsWithBoundaries = annotations.filter(\n (ann) => ann._computed?.startIndex !== undefined && ann._computed?.endIndex !== undefined\n );\n if (annotationsWithBoundaries.length > 0 && processedSeries.length > 0) {\n peaksWithData.push({\n peaks: annotationsWithBoundaries,\n seriesIndex: 0, // User annotations apply to first series by default\n x: processedSeries[0].x,\n y: processedSeries[0].y,\n });\n }\n\n return peaksWithData;\n}\n\n/**\n * Build the extra content for Plotly hovertemplate from series metadata.\n * Displays all metadata fields as key: value pairs.\n */\nexport function buildHoverExtraContent(\n seriesName: string,\n metadata?: Record<string, unknown>\n): string {\n if (!metadata) return seriesName;\n\n const metaLines: string[] = [];\n for (const [key, value] of Object.entries(metadata)) {\n if (value !== undefined && value !== null && value !== \"\") {\n // Format the key as Title Case (e.g., \"sampleName\" -> \"Sample Name\")\n const formattedKey = key\n .replace(/([A-Z])/g, \" $1\")\n .replace(/^./, (s) => s.toUpperCase())\n .trim();\n metaLines.push(`${formattedKey}: ${String(value)}`);\n }\n }\n\n if (metaLines.length > 0) {\n return `${seriesName}<br>${metaLines.join(\"<br>\")}`;\n }\n return seriesName;\n}\n\n/**\n * Validate and sanitize series data.\n * - Ensures x and y arrays have the same length (truncates to shorter)\n * - Replaces NaN and Infinity values with 0\n */\nexport function validateSeriesData(\n x: number[],\n y: number[]\n): { x: number[]; y: number[] } {\n // Ensure arrays have same length\n const length = Math.min(x.length, y.length);\n const validX = x.slice(0, length);\n const validY = y.slice(0, length);\n\n // Sanitize NaN and Infinity values\n const sanitizedY = validY.map((val) => (Number.isFinite(val) ? val : 0));\n const sanitizedX = validX.map((val) => (Number.isFinite(val) ? val : 0));\n\n return { x: sanitizedX, y: sanitizedY };\n}\n\n/**\n * Apply baseline correction to signal data\n */\nexport function applyBaselineCorrection(\n y: number[],\n method: BaselineCorrectionMethod,\n windowSize: number = 50\n): number[] {\n if (method === \"none\" || y.length === 0) return y;\n\n if (method === \"linear\") {\n // Linear baseline from first to last point\n // Handle single-point case to avoid division by zero\n if (y.length === 1) {\n return [0]; // Single point baseline-corrected to zero\n }\n const slope = (y[y.length - 1] - y[0]) / (y.length - 1);\n return y.map((val, i) => val - (y[0] + slope * i));\n }\n\n if (method === \"rolling\") {\n // Rolling minimum baseline\n const baseline: number[] = [];\n const halfWindow = Math.floor(windowSize / 2);\n\n for (let i = 0; i < y.length; i++) {\n const start = Math.max(0, i - halfWindow);\n const end = Math.min(y.length, i + halfWindow + 1);\n const windowSlice = y.slice(start, end);\n baseline.push(Math.min(...windowSlice));\n }\n\n return y.map((val, i) => val - baseline[i]);\n }\n\n return y;\n}\n\n"],"names":["findClosestIndex","arr","target","left","right","mid","processUserAnnotations","annotations","xArray","yArray","ann","startIndex","endIndex","index","area","calculatePeakArea","collectPeaksWithBoundaryData","allDetectedPeaks","processedSeries","peaksWithData","peaks","seriesIndex","annotationsWithBoundaries","buildHoverExtraContent","seriesName","metadata","metaLines","key","value","formattedKey","s","validateSeriesData","x","y","length","validX","sanitizedY","val","applyBaselineCorrection","method","windowSize","slope","i","baseline","halfWindow","start","end","windowSlice"],"mappings":"uHAsBO,SAASA,EAAiBC,EAAeC,EAAwB,CAEtE,GADID,EAAI,SAAW,GACfA,EAAI,SAAW,EAAG,MAAO,GAE7B,IAAIE,EAAO,EACPC,EAAQH,EAAI,OAAS,EAEzB,KAAOE,EAAOC,GAAO,CACnB,MAAMC,EAAM,KAAK,OAAOF,EAAOC,GAAS,CAAC,EACrCH,EAAII,CAAG,EAAIH,EACbC,EAAOE,EAAM,EAEbD,EAAQC,CAEZ,CAGA,OAAIF,EAAO,GAAK,KAAK,IAAIF,EAAIE,EAAO,CAAC,EAAID,CAAM,EAAI,KAAK,IAAID,EAAIE,CAAI,EAAID,CAAM,EACrEC,EAAO,EAETA,CACT,CAMO,SAASG,EACdC,EACAC,EACAC,EACkB,CAClB,OAAOF,EAAY,IAAKG,GAAQ,CAE9B,GAAIA,EAAI,SAAW,QAAaA,EAAI,OAAS,OAAW,CACtD,MAAMC,EAAaX,EAAiBQ,EAAQE,EAAI,MAAM,EAChDE,EAAWZ,EAAiBQ,EAAQE,EAAI,IAAI,EAC5CG,EAAQb,EAAiBQ,EAAQE,EAAI,CAAC,EAGtCI,EAAOJ,EAAI,WAAW,MAAQK,EAAAA,kBAAkBP,EAAQC,EAAQE,EAAYC,CAAQ,EAE1F,MAAO,CACL,GAAGF,EACH,UAAW,CACT,GAAGA,EAAI,UACP,MAAAG,EACA,WAAAF,EACA,SAAAC,EACA,KAAAE,CAAA,CACF,CAEJ,CACA,OAAOJ,CACT,CAAC,CACH,CAMO,SAASM,EACdC,EACAV,EACAW,EACsB,CACtB,MAAMC,EAAsC,CAAA,EAG5CF,EAAiB,QAAQ,CAAC,CAAE,MAAAG,EAAO,YAAAC,KAAkB,CACnDF,EAAc,KAAK,CACjB,MAAAC,EACA,YAAAC,EACA,EAAGH,EAAgBG,CAAW,EAAE,EAChC,EAAGH,EAAgBG,CAAW,EAAE,CAAA,CACjC,CACH,CAAC,EAID,MAAMC,EAA4Bf,EAAY,OAC3CG,GAAQA,EAAI,WAAW,aAAe,QAAaA,EAAI,WAAW,WAAa,MAAA,EAElF,OAAIY,EAA0B,OAAS,GAAKJ,EAAgB,OAAS,GACnEC,EAAc,KAAK,CACjB,MAAOG,EACP,YAAa,EACb,EAAGJ,EAAgB,CAAC,EAAE,EACtB,EAAGA,EAAgB,CAAC,EAAE,CAAA,CACvB,EAGIC,CACT,CAMO,SAASI,EACdC,EACAC,EACQ,CACR,GAAI,CAACA,EAAU,OAAOD,EAEtB,MAAME,EAAsB,CAAA,EAC5B,SAAW,CAACC,EAAKC,CAAK,IAAK,OAAO,QAAQH,CAAQ,EAChD,GAA2BG,GAAU,MAAQA,IAAU,GAAI,CAEzD,MAAMC,EAAeF,EAClB,QAAQ,WAAY,KAAK,EACzB,QAAQ,KAAOG,GAAMA,EAAE,YAAA,CAAa,EACpC,KAAA,EACHJ,EAAU,KAAK,GAAGG,CAAY,KAAK,OAAOD,CAAK,CAAC,EAAE,CACpD,CAGF,OAAIF,EAAU,OAAS,EACd,GAAGF,CAAU,OAAOE,EAAU,KAAK,MAAM,CAAC,GAE5CF,CACT,CAOO,SAASO,EACdC,EACAC,EAC8B,CAE9B,MAAMC,EAAS,KAAK,IAAIF,EAAE,OAAQC,EAAE,MAAM,EACpCE,EAASH,EAAE,MAAM,EAAGE,CAAM,EAI1BE,EAHSH,EAAE,MAAM,EAAGC,CAAM,EAGN,IAAKG,GAAS,OAAO,SAASA,CAAG,EAAIA,EAAM,CAAE,EAGvE,MAAO,CAAE,EAFUF,EAAO,IAAKE,GAAS,OAAO,SAASA,CAAG,EAAIA,EAAM,CAAE,EAE/C,EAAGD,CAAA,CAC7B,CAKO,SAASE,EACdL,EACAM,EACAC,EAAqB,GACX,CACV,GAAID,IAAW,QAAUN,EAAE,SAAW,EAAG,OAAOA,EAEhD,GAAIM,IAAW,SAAU,CAGvB,GAAIN,EAAE,SAAW,EACf,MAAO,CAAC,CAAC,EAEX,MAAMQ,GAASR,EAAEA,EAAE,OAAS,CAAC,EAAIA,EAAE,CAAC,IAAMA,EAAE,OAAS,GACrD,OAAOA,EAAE,IAAI,CAACI,EAAKK,IAAML,GAAOJ,EAAE,CAAC,EAAIQ,EAAQC,EAAE,CACnD,CAEA,GAAIH,IAAW,UAAW,CAExB,MAAMI,EAAqB,CAAA,EACrBC,EAAa,KAAK,MAAMJ,EAAa,CAAC,EAE5C,QAASE,EAAI,EAAGA,EAAIT,EAAE,OAAQS,IAAK,CACjC,MAAMG,EAAQ,KAAK,IAAI,EAAGH,EAAIE,CAAU,EAClCE,EAAM,KAAK,IAAIb,EAAE,OAAQS,EAAIE,EAAa,CAAC,EAC3CG,EAAcd,EAAE,MAAMY,EAAOC,CAAG,EACtCH,EAAS,KAAK,KAAK,IAAI,GAAGI,CAAW,CAAC,CACxC,CAEA,OAAOd,EAAE,IAAI,CAACI,EAAKK,IAAML,EAAMM,EAASD,CAAC,CAAC,CAC5C,CAEA,OAAOT,CACT"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { BaselineCorrectionMethod, PeakAnnotation } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Data structure for peaks with their associated series data
|
|
4
|
+
*/
|
|
5
|
+
export type PeakDataWithSeries = {
|
|
6
|
+
peaks: PeakAnnotation[];
|
|
7
|
+
seriesIndex: number;
|
|
8
|
+
x: number[];
|
|
9
|
+
y: number[];
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Find the closest index in an array for a given target value.
|
|
13
|
+
* Uses binary search for efficiency.
|
|
14
|
+
*/
|
|
15
|
+
export declare function findClosestIndex(arr: number[], target: number): number;
|
|
16
|
+
/**
|
|
17
|
+
* Process user annotations to convert startX/endX to startIndex/endIndex
|
|
18
|
+
* and compute area if boundaries are provided.
|
|
19
|
+
*/
|
|
20
|
+
export declare function processUserAnnotations(annotations: PeakAnnotation[], xArray: number[], yArray: number[]): PeakAnnotation[];
|
|
21
|
+
/**
|
|
22
|
+
* Collect peaks with boundary information from both auto-detected peaks and user-provided annotations.
|
|
23
|
+
* User-provided annotations with startIndex/endIndex or startX/endX are included for boundary marker rendering.
|
|
24
|
+
*/
|
|
25
|
+
export declare function collectPeaksWithBoundaryData(allDetectedPeaks: {
|
|
26
|
+
peaks: PeakAnnotation[];
|
|
27
|
+
seriesIndex: number;
|
|
28
|
+
}[], annotations: PeakAnnotation[], processedSeries: {
|
|
29
|
+
x: number[];
|
|
30
|
+
y: number[];
|
|
31
|
+
}[]): PeakDataWithSeries[];
|
|
32
|
+
/**
|
|
33
|
+
* Build the extra content for Plotly hovertemplate from series metadata.
|
|
34
|
+
* Displays all metadata fields as key: value pairs.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildHoverExtraContent(seriesName: string, metadata?: Record<string, unknown>): string;
|
|
37
|
+
/**
|
|
38
|
+
* Validate and sanitize series data.
|
|
39
|
+
* - Ensures x and y arrays have the same length (truncates to shorter)
|
|
40
|
+
* - Replaces NaN and Infinity values with 0
|
|
41
|
+
*/
|
|
42
|
+
export declare function validateSeriesData(x: number[], y: number[]): {
|
|
43
|
+
x: number[];
|
|
44
|
+
y: number[];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Apply baseline correction to signal data
|
|
48
|
+
*/
|
|
49
|
+
export declare function applyBaselineCorrection(y: number[], method: BaselineCorrectionMethod, windowSize?: number): number[];
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { calculatePeakArea as a } from "./peakDetection.js";
|
|
2
|
+
function s(t, i) {
|
|
3
|
+
if (t.length === 0 || t.length === 1) return 0;
|
|
4
|
+
let e = 0, n = t.length - 1;
|
|
5
|
+
for (; e < n; ) {
|
|
6
|
+
const o = Math.floor((e + n) / 2);
|
|
7
|
+
t[o] < i ? e = o + 1 : n = o;
|
|
8
|
+
}
|
|
9
|
+
return e > 0 && Math.abs(t[e - 1] - i) < Math.abs(t[e] - i) ? e - 1 : e;
|
|
10
|
+
}
|
|
11
|
+
function f(t, i, e) {
|
|
12
|
+
return t.map((n) => {
|
|
13
|
+
if (n.startX !== void 0 && n.endX !== void 0) {
|
|
14
|
+
const o = s(i, n.startX), l = s(i, n.endX), r = s(i, n.x), c = n._computed?.area ?? a(i, e, o, l);
|
|
15
|
+
return {
|
|
16
|
+
...n,
|
|
17
|
+
_computed: {
|
|
18
|
+
...n._computed,
|
|
19
|
+
index: r,
|
|
20
|
+
startIndex: o,
|
|
21
|
+
endIndex: l,
|
|
22
|
+
area: c
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return n;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function d(t, i, e) {
|
|
30
|
+
const n = [];
|
|
31
|
+
t.forEach(({ peaks: l, seriesIndex: r }) => {
|
|
32
|
+
n.push({
|
|
33
|
+
peaks: l,
|
|
34
|
+
seriesIndex: r,
|
|
35
|
+
x: e[r].x,
|
|
36
|
+
y: e[r].y
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
const o = i.filter(
|
|
40
|
+
(l) => l._computed?.startIndex !== void 0 && l._computed?.endIndex !== void 0
|
|
41
|
+
);
|
|
42
|
+
return o.length > 0 && e.length > 0 && n.push({
|
|
43
|
+
peaks: o,
|
|
44
|
+
seriesIndex: 0,
|
|
45
|
+
// User annotations apply to first series by default
|
|
46
|
+
x: e[0].x,
|
|
47
|
+
y: e[0].y
|
|
48
|
+
}), n;
|
|
49
|
+
}
|
|
50
|
+
function p(t, i) {
|
|
51
|
+
if (!i) return t;
|
|
52
|
+
const e = [];
|
|
53
|
+
for (const [n, o] of Object.entries(i))
|
|
54
|
+
if (o != null && o !== "") {
|
|
55
|
+
const l = n.replace(/([A-Z])/g, " $1").replace(/^./, (r) => r.toUpperCase()).trim();
|
|
56
|
+
e.push(`${l}: ${String(o)}`);
|
|
57
|
+
}
|
|
58
|
+
return e.length > 0 ? `${t}<br>${e.join("<br>")}` : t;
|
|
59
|
+
}
|
|
60
|
+
function g(t, i) {
|
|
61
|
+
const e = Math.min(t.length, i.length), n = t.slice(0, e), l = i.slice(0, e).map((c) => Number.isFinite(c) ? c : 0);
|
|
62
|
+
return { x: n.map((c) => Number.isFinite(c) ? c : 0), y: l };
|
|
63
|
+
}
|
|
64
|
+
function m(t, i, e = 50) {
|
|
65
|
+
if (i === "none" || t.length === 0) return t;
|
|
66
|
+
if (i === "linear") {
|
|
67
|
+
if (t.length === 1)
|
|
68
|
+
return [0];
|
|
69
|
+
const n = (t[t.length - 1] - t[0]) / (t.length - 1);
|
|
70
|
+
return t.map((o, l) => o - (t[0] + n * l));
|
|
71
|
+
}
|
|
72
|
+
if (i === "rolling") {
|
|
73
|
+
const n = [], o = Math.floor(e / 2);
|
|
74
|
+
for (let l = 0; l < t.length; l++) {
|
|
75
|
+
const r = Math.max(0, l - o), c = Math.min(t.length, l + o + 1), u = t.slice(r, c);
|
|
76
|
+
n.push(Math.min(...u));
|
|
77
|
+
}
|
|
78
|
+
return t.map((l, r) => l - n[r]);
|
|
79
|
+
}
|
|
80
|
+
return t;
|
|
81
|
+
}
|
|
82
|
+
export {
|
|
83
|
+
m as applyBaselineCorrection,
|
|
84
|
+
p as buildHoverExtraContent,
|
|
85
|
+
d as collectPeaksWithBoundaryData,
|
|
86
|
+
s as findClosestIndex,
|
|
87
|
+
f as processUserAnnotations,
|
|
88
|
+
g as validateSeriesData
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=dataProcessing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataProcessing.js","sources":["../../../../src/components/charts/Chromatogram/dataProcessing.ts"],"sourcesContent":["/**\n * Data processing utilities for Chromatogram\n */\n\nimport { calculatePeakArea } from \"./peakDetection\";\n\nimport type { BaselineCorrectionMethod, PeakAnnotation } from \"./types\";\n\n/**\n * Data structure for peaks with their associated series data\n */\nexport type PeakDataWithSeries = {\n peaks: PeakAnnotation[];\n seriesIndex: number;\n x: number[];\n y: number[];\n};\n\n/**\n * Find the closest index in an array for a given target value.\n * Uses binary search for efficiency.\n */\nexport function findClosestIndex(arr: number[], target: number): number {\n if (arr.length === 0) return 0;\n if (arr.length === 1) return 0;\n\n let left = 0;\n let right = arr.length - 1;\n\n while (left < right) {\n const mid = Math.floor((left + right) / 2);\n if (arr[mid] < target) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n\n // Check if left-1 is closer\n if (left > 0 && Math.abs(arr[left - 1] - target) < Math.abs(arr[left] - target)) {\n return left - 1;\n }\n return left;\n}\n\n/**\n * Process user annotations to convert startX/endX to startIndex/endIndex\n * and compute area if boundaries are provided.\n */\nexport function processUserAnnotations(\n annotations: PeakAnnotation[],\n xArray: number[],\n yArray: number[]\n): PeakAnnotation[] {\n return annotations.map((ann) => {\n // If startX/endX are provided, convert to indices\n if (ann.startX !== undefined && ann.endX !== undefined) {\n const startIndex = findClosestIndex(xArray, ann.startX);\n const endIndex = findClosestIndex(xArray, ann.endX);\n const index = findClosestIndex(xArray, ann.x);\n\n // Calculate area if not provided\n const area = ann._computed?.area ?? calculatePeakArea(xArray, yArray, startIndex, endIndex);\n\n return {\n ...ann,\n _computed: {\n ...ann._computed,\n index,\n startIndex,\n endIndex,\n area,\n },\n };\n }\n return ann;\n });\n}\n\n/**\n * Collect peaks with boundary information from both auto-detected peaks and user-provided annotations.\n * User-provided annotations with startIndex/endIndex or startX/endX are included for boundary marker rendering.\n */\nexport function collectPeaksWithBoundaryData(\n allDetectedPeaks: { peaks: PeakAnnotation[]; seriesIndex: number }[],\n annotations: PeakAnnotation[],\n processedSeries: { x: number[]; y: number[] }[]\n): PeakDataWithSeries[] {\n const peaksWithData: PeakDataWithSeries[] = [];\n\n // Add auto-detected peaks\n allDetectedPeaks.forEach(({ peaks, seriesIndex }) => {\n peaksWithData.push({\n peaks,\n seriesIndex,\n x: processedSeries[seriesIndex].x,\n y: processedSeries[seriesIndex].y,\n });\n });\n\n // Add user-provided annotations that have boundary info (_computed.startIndex and _computed.endIndex)\n // Note: annotations with startX/endX should already be processed to have _computed fields\n const annotationsWithBoundaries = annotations.filter(\n (ann) => ann._computed?.startIndex !== undefined && ann._computed?.endIndex !== undefined\n );\n if (annotationsWithBoundaries.length > 0 && processedSeries.length > 0) {\n peaksWithData.push({\n peaks: annotationsWithBoundaries,\n seriesIndex: 0, // User annotations apply to first series by default\n x: processedSeries[0].x,\n y: processedSeries[0].y,\n });\n }\n\n return peaksWithData;\n}\n\n/**\n * Build the extra content for Plotly hovertemplate from series metadata.\n * Displays all metadata fields as key: value pairs.\n */\nexport function buildHoverExtraContent(\n seriesName: string,\n metadata?: Record<string, unknown>\n): string {\n if (!metadata) return seriesName;\n\n const metaLines: string[] = [];\n for (const [key, value] of Object.entries(metadata)) {\n if (value !== undefined && value !== null && value !== \"\") {\n // Format the key as Title Case (e.g., \"sampleName\" -> \"Sample Name\")\n const formattedKey = key\n .replace(/([A-Z])/g, \" $1\")\n .replace(/^./, (s) => s.toUpperCase())\n .trim();\n metaLines.push(`${formattedKey}: ${String(value)}`);\n }\n }\n\n if (metaLines.length > 0) {\n return `${seriesName}<br>${metaLines.join(\"<br>\")}`;\n }\n return seriesName;\n}\n\n/**\n * Validate and sanitize series data.\n * - Ensures x and y arrays have the same length (truncates to shorter)\n * - Replaces NaN and Infinity values with 0\n */\nexport function validateSeriesData(\n x: number[],\n y: number[]\n): { x: number[]; y: number[] } {\n // Ensure arrays have same length\n const length = Math.min(x.length, y.length);\n const validX = x.slice(0, length);\n const validY = y.slice(0, length);\n\n // Sanitize NaN and Infinity values\n const sanitizedY = validY.map((val) => (Number.isFinite(val) ? val : 0));\n const sanitizedX = validX.map((val) => (Number.isFinite(val) ? val : 0));\n\n return { x: sanitizedX, y: sanitizedY };\n}\n\n/**\n * Apply baseline correction to signal data\n */\nexport function applyBaselineCorrection(\n y: number[],\n method: BaselineCorrectionMethod,\n windowSize: number = 50\n): number[] {\n if (method === \"none\" || y.length === 0) return y;\n\n if (method === \"linear\") {\n // Linear baseline from first to last point\n // Handle single-point case to avoid division by zero\n if (y.length === 1) {\n return [0]; // Single point baseline-corrected to zero\n }\n const slope = (y[y.length - 1] - y[0]) / (y.length - 1);\n return y.map((val, i) => val - (y[0] + slope * i));\n }\n\n if (method === \"rolling\") {\n // Rolling minimum baseline\n const baseline: number[] = [];\n const halfWindow = Math.floor(windowSize / 2);\n\n for (let i = 0; i < y.length; i++) {\n const start = Math.max(0, i - halfWindow);\n const end = Math.min(y.length, i + halfWindow + 1);\n const windowSlice = y.slice(start, end);\n baseline.push(Math.min(...windowSlice));\n }\n\n return y.map((val, i) => val - baseline[i]);\n }\n\n return y;\n}\n\n"],"names":["findClosestIndex","arr","target","left","right","mid","processUserAnnotations","annotations","xArray","yArray","ann","startIndex","endIndex","index","area","calculatePeakArea","collectPeaksWithBoundaryData","allDetectedPeaks","processedSeries","peaksWithData","peaks","seriesIndex","annotationsWithBoundaries","buildHoverExtraContent","seriesName","metadata","metaLines","key","value","formattedKey","s","validateSeriesData","x","y","length","validX","sanitizedY","val","applyBaselineCorrection","method","windowSize","slope","i","baseline","halfWindow","start","end","windowSlice"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peakDetection.cjs","sources":["../../../../src/components/charts/Chromatogram/peakDetection.ts"],"sourcesContent":["/**\n * Peak detection algorithms for Chromatogram\n */\n\nimport type { PeakAnnotation, PeakDetectionOptions } from \"./types\";\n\n/**\n * Calculate prominence of a peak (how much it stands out from neighbors)\n */\nexport function calculateProminence(\n y: number[],\n peakIndex: number,\n searchWindow: number\n): number {\n let leftMin = y[peakIndex];\n let rightMin = y[peakIndex];\n\n for (let j = peakIndex - 1; j >= Math.max(0, peakIndex - searchWindow); j--) {\n leftMin = Math.min(leftMin, y[j]);\n }\n for (\n let j = peakIndex + 1;\n j < Math.min(y.length, peakIndex + searchWindow);\n j++\n ) {\n rightMin = Math.min(rightMin, y[j]);\n }\n\n return y[peakIndex] - Math.max(leftMin, rightMin);\n}\n\n/**\n * Find peak boundary indices by walking outward from peak\n */\nexport function findPeakBoundaries(\n y: number[],\n peakIndex: number\n): { startIndex: number; endIndex: number } {\n let startIndex = peakIndex;\n let endIndex = peakIndex;\n\n // Walk left to find start\n for (let j = peakIndex - 1; j >= 0; j--) {\n if (y[j] <= y[j + 1]) {\n startIndex = j;\n } else {\n break;\n }\n }\n\n // Walk right to find end\n for (let j = peakIndex + 1; j < y.length; j++) {\n if (y[j] <= y[j - 1]) {\n endIndex = j;\n } else {\n break;\n }\n }\n\n return { startIndex, endIndex };\n}\n\n/**\n * Calculate peak area using trapezoidal integration\n */\nexport function calculatePeakArea(\n x: number[],\n y: number[],\n startIndex: number,\n endIndex: number\n): number {\n const baselineY = Math.min(y[startIndex], y[endIndex]);\n let area = 0;\n\n for (let j = startIndex; j < endIndex; j++) {\n const h = x[j + 1] - x[j];\n const y1 = y[j] - baselineY;\n const y2 = y[j + 1] - baselineY;\n area += ((y1 + y2) * h) / 2;\n }\n\n return area;\n}\n\n/**\n * Calculate width at half maximum of a peak\n */\nexport function calculateWidthAtHalfMax(\n x: number[],\n y: number[],\n peakIndex: number,\n startIndex: number,\n endIndex: number\n): number {\n const baselineY = Math.min(y[startIndex], y[endIndex]);\n const halfMax = (y[peakIndex] + baselineY) / 2;\n let leftHalf = peakIndex;\n let rightHalf = peakIndex;\n\n for (let j = peakIndex; j >= startIndex; j--) {\n if (y[j] < halfMax) {\n leftHalf = j;\n break;\n }\n }\n for (let j = peakIndex; j <= endIndex; j++) {\n if (y[j] < halfMax) {\n rightHalf = j;\n break;\n }\n }\n\n return x[rightHalf] - x[leftHalf];\n}\n\n/**\n * Filter peaks by minimum distance, keeping more intense peaks\n */\nexport function filterPeaksByDistance(\n peaks: PeakAnnotation[],\n minDistance: number\n): PeakAnnotation[] {\n const filtered: PeakAnnotation[] = [];\n\n for (const peak of peaks) {\n const tooClose = filtered.some(\n (p) => Math.abs((p._computed?.index ?? 0) - (peak._computed?.index ?? 0)) < minDistance\n );\n if (!tooClose) {\n filtered.push(peak);\n } else if (\n filtered.length > 0 &&\n peak.y > filtered[filtered.length - 1].y\n ) {\n filtered.pop();\n filtered.push(peak);\n }\n }\n\n return filtered.sort((a, b) => a.x - b.x);\n}\n\n/**\n * Detect peaks in signal data using derivative analysis.\n *\n * Default parameters are tuned for typical HPLC chromatograms:\n * - minHeight (0.05 = 5%): Filters noise while detecting small peaks\n * - minDistance (5 points): Prevents detecting noise as multiple peaks\n * - prominence (0.02 = 2%): Ensures peaks stand out from baseline/shoulders\n */\nexport function detectPeaks(\n x: number[],\n y: number[],\n options: PeakDetectionOptions = {}\n): PeakAnnotation[] {\n const {\n minHeight = 0.05,\n minDistance = 5,\n prominence = 0.02,\n relativeThreshold = true,\n } = options;\n\n if (y.length < 3) return [];\n\n const maxY = Math.max(...y);\n const threshold = relativeThreshold ? minHeight * maxY : minHeight;\n const prominenceThreshold = relativeThreshold ? prominence * maxY : prominence;\n const searchWindow = minDistance * 3;\n\n const peaks: PeakAnnotation[] = [];\n\n // Find local maxima\n for (let i = 1; i < y.length - 1; i++) {\n const isLocalMax =\n y[i] > y[i - 1] && y[i] > y[i + 1] && y[i] >= threshold;\n if (!isLocalMax) continue;\n\n const peakProminence = calculateProminence(y, i, searchWindow);\n if (peakProminence < prominenceThreshold) continue;\n\n const { startIndex, endIndex } = findPeakBoundaries(y, i);\n const area = calculatePeakArea(x, y, startIndex, endIndex);\n const widthAtHalfMax = calculateWidthAtHalfMax(\n x,\n y,\n i,\n startIndex,\n endIndex\n );\n\n peaks.push({\n x: x[i],\n y: y[i],\n _computed: {\n area,\n index: i,\n startIndex,\n endIndex,\n widthAtHalfMax,\n },\n });\n }\n\n return filterPeaksByDistance(peaks, minDistance);\n}\n\n"],"names":["calculateProminence","y","peakIndex","searchWindow","leftMin","rightMin","j","findPeakBoundaries","startIndex","endIndex","calculatePeakArea","x","baselineY","area","h","y1","y2","calculateWidthAtHalfMax","halfMax","leftHalf","rightHalf","filterPeaksByDistance","peaks","minDistance","filtered","peak","p","a","b","detectPeaks","options","minHeight","prominence","relativeThreshold","maxY","threshold","prominenceThreshold","i","widthAtHalfMax"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { PeakAnnotation, PeakDetectionOptions } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate prominence of a peak (how much it stands out from neighbors)
|
|
4
|
+
*/
|
|
5
|
+
export declare function calculateProminence(y: number[], peakIndex: number, searchWindow: number): number;
|
|
6
|
+
/**
|
|
7
|
+
* Find peak boundary indices by walking outward from peak
|
|
8
|
+
*/
|
|
9
|
+
export declare function findPeakBoundaries(y: number[], peakIndex: number): {
|
|
10
|
+
startIndex: number;
|
|
11
|
+
endIndex: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Calculate peak area using trapezoidal integration
|
|
15
|
+
*/
|
|
16
|
+
export declare function calculatePeakArea(x: number[], y: number[], startIndex: number, endIndex: number): number;
|
|
17
|
+
/**
|
|
18
|
+
* Calculate width at half maximum of a peak
|
|
19
|
+
*/
|
|
20
|
+
export declare function calculateWidthAtHalfMax(x: number[], y: number[], peakIndex: number, startIndex: number, endIndex: number): number;
|
|
21
|
+
/**
|
|
22
|
+
* Filter peaks by minimum distance, keeping more intense peaks
|
|
23
|
+
*/
|
|
24
|
+
export declare function filterPeaksByDistance(peaks: PeakAnnotation[], minDistance: number): PeakAnnotation[];
|
|
25
|
+
/**
|
|
26
|
+
* Detect peaks in signal data using derivative analysis.
|
|
27
|
+
*
|
|
28
|
+
* Default parameters are tuned for typical HPLC chromatograms:
|
|
29
|
+
* - minHeight (0.05 = 5%): Filters noise while detecting small peaks
|
|
30
|
+
* - minDistance (5 points): Prevents detecting noise as multiple peaks
|
|
31
|
+
* - prominence (0.02 = 2%): Ensures peaks stand out from baseline/shoulders
|
|
32
|
+
*/
|
|
33
|
+
export declare function detectPeaks(x: number[], y: number[], options?: PeakDetectionOptions): PeakAnnotation[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peakDetection.js","sources":["../../../../src/components/charts/Chromatogram/peakDetection.ts"],"sourcesContent":["/**\n * Peak detection algorithms for Chromatogram\n */\n\nimport type { PeakAnnotation, PeakDetectionOptions } from \"./types\";\n\n/**\n * Calculate prominence of a peak (how much it stands out from neighbors)\n */\nexport function calculateProminence(\n y: number[],\n peakIndex: number,\n searchWindow: number\n): number {\n let leftMin = y[peakIndex];\n let rightMin = y[peakIndex];\n\n for (let j = peakIndex - 1; j >= Math.max(0, peakIndex - searchWindow); j--) {\n leftMin = Math.min(leftMin, y[j]);\n }\n for (\n let j = peakIndex + 1;\n j < Math.min(y.length, peakIndex + searchWindow);\n j++\n ) {\n rightMin = Math.min(rightMin, y[j]);\n }\n\n return y[peakIndex] - Math.max(leftMin, rightMin);\n}\n\n/**\n * Find peak boundary indices by walking outward from peak\n */\nexport function findPeakBoundaries(\n y: number[],\n peakIndex: number\n): { startIndex: number; endIndex: number } {\n let startIndex = peakIndex;\n let endIndex = peakIndex;\n\n // Walk left to find start\n for (let j = peakIndex - 1; j >= 0; j--) {\n if (y[j] <= y[j + 1]) {\n startIndex = j;\n } else {\n break;\n }\n }\n\n // Walk right to find end\n for (let j = peakIndex + 1; j < y.length; j++) {\n if (y[j] <= y[j - 1]) {\n endIndex = j;\n } else {\n break;\n }\n }\n\n return { startIndex, endIndex };\n}\n\n/**\n * Calculate peak area using trapezoidal integration\n */\nexport function calculatePeakArea(\n x: number[],\n y: number[],\n startIndex: number,\n endIndex: number\n): number {\n const baselineY = Math.min(y[startIndex], y[endIndex]);\n let area = 0;\n\n for (let j = startIndex; j < endIndex; j++) {\n const h = x[j + 1] - x[j];\n const y1 = y[j] - baselineY;\n const y2 = y[j + 1] - baselineY;\n area += ((y1 + y2) * h) / 2;\n }\n\n return area;\n}\n\n/**\n * Calculate width at half maximum of a peak\n */\nexport function calculateWidthAtHalfMax(\n x: number[],\n y: number[],\n peakIndex: number,\n startIndex: number,\n endIndex: number\n): number {\n const baselineY = Math.min(y[startIndex], y[endIndex]);\n const halfMax = (y[peakIndex] + baselineY) / 2;\n let leftHalf = peakIndex;\n let rightHalf = peakIndex;\n\n for (let j = peakIndex; j >= startIndex; j--) {\n if (y[j] < halfMax) {\n leftHalf = j;\n break;\n }\n }\n for (let j = peakIndex; j <= endIndex; j++) {\n if (y[j] < halfMax) {\n rightHalf = j;\n break;\n }\n }\n\n return x[rightHalf] - x[leftHalf];\n}\n\n/**\n * Filter peaks by minimum distance, keeping more intense peaks\n */\nexport function filterPeaksByDistance(\n peaks: PeakAnnotation[],\n minDistance: number\n): PeakAnnotation[] {\n const filtered: PeakAnnotation[] = [];\n\n for (const peak of peaks) {\n const tooClose = filtered.some(\n (p) => Math.abs((p._computed?.index ?? 0) - (peak._computed?.index ?? 0)) < minDistance\n );\n if (!tooClose) {\n filtered.push(peak);\n } else if (\n filtered.length > 0 &&\n peak.y > filtered[filtered.length - 1].y\n ) {\n filtered.pop();\n filtered.push(peak);\n }\n }\n\n return filtered.sort((a, b) => a.x - b.x);\n}\n\n/**\n * Detect peaks in signal data using derivative analysis.\n *\n * Default parameters are tuned for typical HPLC chromatograms:\n * - minHeight (0.05 = 5%): Filters noise while detecting small peaks\n * - minDistance (5 points): Prevents detecting noise as multiple peaks\n * - prominence (0.02 = 2%): Ensures peaks stand out from baseline/shoulders\n */\nexport function detectPeaks(\n x: number[],\n y: number[],\n options: PeakDetectionOptions = {}\n): PeakAnnotation[] {\n const {\n minHeight = 0.05,\n minDistance = 5,\n prominence = 0.02,\n relativeThreshold = true,\n } = options;\n\n if (y.length < 3) return [];\n\n const maxY = Math.max(...y);\n const threshold = relativeThreshold ? minHeight * maxY : minHeight;\n const prominenceThreshold = relativeThreshold ? prominence * maxY : prominence;\n const searchWindow = minDistance * 3;\n\n const peaks: PeakAnnotation[] = [];\n\n // Find local maxima\n for (let i = 1; i < y.length - 1; i++) {\n const isLocalMax =\n y[i] > y[i - 1] && y[i] > y[i + 1] && y[i] >= threshold;\n if (!isLocalMax) continue;\n\n const peakProminence = calculateProminence(y, i, searchWindow);\n if (peakProminence < prominenceThreshold) continue;\n\n const { startIndex, endIndex } = findPeakBoundaries(y, i);\n const area = calculatePeakArea(x, y, startIndex, endIndex);\n const widthAtHalfMax = calculateWidthAtHalfMax(\n x,\n y,\n i,\n startIndex,\n endIndex\n );\n\n peaks.push({\n x: x[i],\n y: y[i],\n _computed: {\n area,\n index: i,\n startIndex,\n endIndex,\n widthAtHalfMax,\n },\n });\n }\n\n return filterPeaksByDistance(peaks, minDistance);\n}\n\n"],"names":["calculateProminence","y","peakIndex","searchWindow","leftMin","rightMin","j","findPeakBoundaries","startIndex","endIndex","calculatePeakArea","x","baselineY","area","h","y1","y2","calculateWidthAtHalfMax","halfMax","leftHalf","rightHalf","filterPeaksByDistance","peaks","minDistance","filtered","peak","p","a","b","detectPeaks","options","minHeight","prominence","relativeThreshold","maxY","threshold","prominenceThreshold","i","widthAtHalfMax"],"mappings":"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"}
|