@tetrascience-npm/tetrascience-react-ui 0.4.0-beta.8.1 → 0.4.0-beta.9.1

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/dist/index.d.ts CHANGED
@@ -1056,6 +1056,293 @@ type HistogramProps = {
1056
1056
  };
1057
1057
  declare const Histogram: React$1.FC<HistogramProps>;
1058
1058
 
1059
+ /**
1060
+ * A single data point in the scatter plot
1061
+ */
1062
+ interface ScatterPoint {
1063
+ /** Unique identifier for the point */
1064
+ id: string | number;
1065
+ /** X-axis value */
1066
+ x: number;
1067
+ /** Y-axis value */
1068
+ y: number;
1069
+ /** Optional label for the point */
1070
+ label?: string;
1071
+ /** Additional metadata for tooltips and styling */
1072
+ metadata?: Record<string, unknown>;
1073
+ }
1074
+ /**
1075
+ * Scale type for axes
1076
+ */
1077
+ type ScaleType = "linear" | "log";
1078
+ /**
1079
+ * Marker shape for scatter points
1080
+ */
1081
+ type MarkerShape = "circle" | "square" | "diamond" | "cross" | "x" | "triangle-up" | "triangle-down" | "star";
1082
+ /**
1083
+ * Selection mode for interactive selection
1084
+ */
1085
+ type SelectionMode = "replace" | "add" | "remove" | "toggle";
1086
+ /**
1087
+ * Color mapping configuration
1088
+ */
1089
+ interface ColorMapping {
1090
+ /** Type of mapping: data-driven or static */
1091
+ type: "static" | "continuous" | "categorical";
1092
+ /** Static color value (for type: "static") */
1093
+ value?: string;
1094
+ /** Data field to map (for type: "continuous" | "categorical") */
1095
+ field?: string;
1096
+ /** Color scale for continuous mapping */
1097
+ colorScale?: string | Array<[number, string]>;
1098
+ /** Discrete colors for categorical mapping */
1099
+ categoryColors?: Record<string, string>;
1100
+ /** Min/max values for continuous mapping (auto-calculated if not provided) */
1101
+ min?: number;
1102
+ max?: number;
1103
+ }
1104
+ /**
1105
+ * Shape mapping configuration
1106
+ */
1107
+ interface ShapeMapping {
1108
+ /** Type of mapping: data-driven or static */
1109
+ type: "static" | "categorical";
1110
+ /** Static shape value (for type: "static") */
1111
+ value?: MarkerShape;
1112
+ /** Data field to map (for type: "categorical") */
1113
+ field?: string;
1114
+ /** Shape mapping for categorical values */
1115
+ categoryShapes?: Record<string, MarkerShape>;
1116
+ }
1117
+ /**
1118
+ * Size mapping configuration
1119
+ */
1120
+ interface SizeMapping {
1121
+ /** Type of mapping: data-driven or static */
1122
+ type: "static" | "continuous" | "categorical";
1123
+ /** Static size value (for type: "static") */
1124
+ value?: number;
1125
+ /** Data field to map (for type: "continuous" | "categorical") */
1126
+ field?: string;
1127
+ /** Size range for continuous mapping */
1128
+ sizeRange?: [number, number];
1129
+ /** Discrete sizes for categorical mapping */
1130
+ categorySizes?: Record<string, number>;
1131
+ /** Min/max values for continuous mapping (auto-calculated if not provided) */
1132
+ min?: number;
1133
+ max?: number;
1134
+ }
1135
+ /**
1136
+ * Axis configuration
1137
+ */
1138
+ interface AxisConfig {
1139
+ /** Axis label */
1140
+ title?: string;
1141
+ /** Scale type (linear or log) */
1142
+ scale?: ScaleType;
1143
+ /** Fixed axis range [min, max] */
1144
+ range?: [number, number];
1145
+ /** Auto-range with optional padding percentage (0-1) */
1146
+ autoRange?: boolean;
1147
+ /** Padding percentage for auto-range (default: 0.1 = 10%) */
1148
+ autoRangePadding?: number;
1149
+ }
1150
+ /**
1151
+ * Tooltip configuration
1152
+ */
1153
+ interface TooltipConfig {
1154
+ /** Enable/disable tooltips */
1155
+ enabled?: boolean;
1156
+ /** Custom tooltip content function */
1157
+ content?: (point: ScatterPoint) => string;
1158
+ /** Fields to display in default tooltip */
1159
+ fields?: string[];
1160
+ }
1161
+ /**
1162
+ * Selection state
1163
+ */
1164
+ interface SelectionState {
1165
+ /** Array of selected point IDs */
1166
+ selectedIds: Set<string | number>;
1167
+ }
1168
+ /**
1169
+ * Downsampling configuration for performance optimization
1170
+ */
1171
+ interface DownsamplingConfig {
1172
+ /** Enable downsampling */
1173
+ enabled: boolean;
1174
+ /** Target number of points to display */
1175
+ maxPoints?: number;
1176
+ /** Downsampling strategy */
1177
+ strategy?: "lttb";
1178
+ }
1179
+ /**
1180
+ * Props for InteractiveScatter component
1181
+ */
1182
+ interface InteractiveScatterProps {
1183
+ /**
1184
+ * Array of data points to plot
1185
+ */
1186
+ data: ScatterPoint[];
1187
+ /**
1188
+ * Chart title
1189
+ */
1190
+ title?: string;
1191
+ /**
1192
+ * X-axis configuration
1193
+ */
1194
+ xAxis?: AxisConfig;
1195
+ /**
1196
+ * Y-axis configuration
1197
+ */
1198
+ yAxis?: AxisConfig;
1199
+ /**
1200
+ * Color mapping configuration
1201
+ */
1202
+ colorMapping?: ColorMapping;
1203
+ /**
1204
+ * Shape mapping configuration
1205
+ */
1206
+ shapeMapping?: ShapeMapping;
1207
+ /**
1208
+ * Size mapping configuration
1209
+ */
1210
+ sizeMapping?: SizeMapping;
1211
+ /**
1212
+ * Tooltip configuration
1213
+ */
1214
+ tooltip?: TooltipConfig;
1215
+ /**
1216
+ * Enable click selection
1217
+ * @default true
1218
+ */
1219
+ enableClickSelection?: boolean;
1220
+ /**
1221
+ * Enable box selection (drag to select rectangular region)
1222
+ * @default true
1223
+ */
1224
+ enableBoxSelection?: boolean;
1225
+ /**
1226
+ * Enable lasso selection (freeform selection)
1227
+ * @default true
1228
+ */
1229
+ enableLassoSelection?: boolean;
1230
+ /**
1231
+ * Controlled selection state.
1232
+ * If provided, component operates in controlled mode.
1233
+ */
1234
+ selectedIds?: Set<string | number>;
1235
+ /**
1236
+ * Callback when selection changes
1237
+ */
1238
+ onSelectionChange?: (selectedIds: Set<string | number>, mode: SelectionMode) => void;
1239
+ /**
1240
+ * Callback when a point is clicked
1241
+ */
1242
+ onPointClick?: (point: ScatterPoint, event: MouseEvent) => void;
1243
+ /**
1244
+ * Downsampling configuration for large datasets
1245
+ */
1246
+ downsampling?: DownsamplingConfig;
1247
+ /**
1248
+ * Chart width in pixels
1249
+ * @default 800
1250
+ */
1251
+ width?: number;
1252
+ /**
1253
+ * Chart height in pixels
1254
+ * @default 600
1255
+ */
1256
+ height?: number;
1257
+ /**
1258
+ * Show the continuous color-scale bar when using a continuous `colorMapping`.
1259
+ * Has no effect for categorical or static mappings.
1260
+ * @default true
1261
+ */
1262
+ showColorBar?: boolean;
1263
+ /**
1264
+ * Custom CSS class name
1265
+ */
1266
+ className?: string;
1267
+ }
1268
+ /**
1269
+ * Data format for selection propagation between components
1270
+ */
1271
+ interface SelectionEvent {
1272
+ /** Array of selected point IDs */
1273
+ selectedIds: Set<string | number>;
1274
+ /** Selection mode used */
1275
+ mode: SelectionMode;
1276
+ /** Source component identifier (optional) */
1277
+ source?: string;
1278
+ }
1279
+
1280
+ /**
1281
+ * InteractiveScatter component for visualizing scatter plot data with advanced interactions.
1282
+ *
1283
+ * **Features:**
1284
+ * - Data-driven and static styling (color, shape, size)
1285
+ * - Interactive selection (click, box, lasso)
1286
+ * - Keyboard modifiers for click-selection modes (Shift/Ctrl)
1287
+ * - Customizable tooltips with rich content support
1288
+ * - Axis customization (ranges, log/linear scales)
1289
+ * - Performance optimizations for large datasets
1290
+ * - Selection propagation via callbacks
1291
+ *
1292
+ * **Selection Modes (click selection only):**
1293
+ * - Default click: Replace selection
1294
+ * - Shift + click: Add to selection
1295
+ * - Ctrl/Cmd + click: Remove from selection
1296
+ * - Shift + Ctrl + click: Toggle selection
1297
+ *
1298
+ * Box/lasso selection always replaces the current selection because
1299
+ * Plotly does not expose the original keyboard event for drag operations.
1300
+ */
1301
+ declare const InteractiveScatter: React$1.FC<InteractiveScatterProps>;
1302
+
1303
+ /**
1304
+ * Default color scale for continuous color mapping
1305
+ */
1306
+ declare const DEFAULT_COLOR_SCALE: Array<[number, string]>;
1307
+ /**
1308
+ * Default category colors (cycle through these)
1309
+ */
1310
+ declare const DEFAULT_CATEGORY_COLORS: string[];
1311
+ /**
1312
+ * Default sizes
1313
+ */
1314
+ declare const DEFAULT_MARKER_SIZE = 8;
1315
+ declare const DEFAULT_SIZE_RANGE: [number, number];
1316
+ /**
1317
+ * Default downsampling configuration
1318
+ */
1319
+ declare const DEFAULT_MAX_POINTS = 5000;
1320
+ /**
1321
+ * Constants for plot layout
1322
+ */
1323
+ declare const PLOT_CONSTANTS: {
1324
+ MARGIN_LEFT: number;
1325
+ MARGIN_RIGHT: number;
1326
+ MARGIN_TOP: number;
1327
+ MARGIN_BOTTOM: number;
1328
+ TITLE_FONT_SIZE: number;
1329
+ AXIS_TITLE_FONT_SIZE: number;
1330
+ AXIS_TICK_FONT_SIZE: number;
1331
+ LEGEND_FONT_SIZE: number;
1332
+ FONT_FAMILY: string;
1333
+ GRID_WIDTH: number;
1334
+ AXIS_LINE_WIDTH: number;
1335
+ AUTO_RANGE_PADDING: number;
1336
+ };
1337
+ /**
1338
+ * Selection mode keyboard modifiers
1339
+ */
1340
+ declare const SELECTION_MODIFIERS: {
1341
+ readonly ADD: "shiftKey";
1342
+ readonly REMOVE: "ctrlKey";
1343
+ readonly TOGGLE: "both";
1344
+ };
1345
+
1059
1346
  type MarkerSymbol = "circle" | "circle-open" | "circle-dot" | "circle-open-dot" | "square" | "square-open" | "square-dot" | "square-open-dot" | "diamond" | "diamond-open" | "diamond-dot" | "diamond-open-dot" | "cross" | "cross-open" | "cross-dot" | "cross-open-dot" | "x" | "x-open" | "x-dot" | "x-open-dot" | "triangle-up" | "triangle-up-open" | "triangle-up-dot" | "triangle-up-open-dot" | "triangle-down" | "triangle-down-open" | "triangle-down-dot" | "triangle-down-open-dot" | "triangle-left" | "triangle-left-open" | "triangle-left-dot" | "triangle-left-open-dot" | "triangle-right" | "triangle-right-open" | "triangle-right-dot" | "triangle-right-open-dot" | "triangle-ne" | "triangle-ne-open" | "triangle-ne-dot" | "triangle-ne-open-dot" | "triangle-se" | "triangle-se-open" | "triangle-se-dot" | "triangle-se-open-dot" | "triangle-sw" | "triangle-sw-open" | "triangle-sw-dot" | "triangle-sw-open-dot" | "triangle-nw" | "triangle-nw-open" | "triangle-nw-dot" | "triangle-nw-open-dot" | "pentagon" | "pentagon-open" | "pentagon-dot" | "pentagon-open-dot" | "hexagon" | "hexagon-open" | "hexagon-dot" | "hexagon-open-dot" | "hexagon2" | "hexagon2-open" | "hexagon2-dot" | "hexagon2-open-dot" | "octagon" | "octagon-open" | "octagon-dot" | "octagon-open-dot" | "star" | "star-open" | "star-dot" | "star-open-dot" | "hexagram" | "hexagram-open" | "hexagram-dot" | "hexagram-open-dot" | "star-triangle-up" | "star-triangle-up-open" | "star-triangle-up-dot" | "star-triangle-up-open-dot" | "star-triangle-down" | "star-triangle-down-open" | "star-triangle-down-dot" | "star-triangle-down-open-dot" | "star-square" | "star-square-open" | "star-square-dot" | "star-square-open-dot" | "star-diamond" | "star-diamond-open" | "star-diamond-dot" | "star-diamond-open-dot" | "diamond-tall" | "diamond-tall-open" | "diamond-tall-dot" | "diamond-tall-open-dot" | "diamond-wide" | "diamond-wide-open" | "diamond-wide-dot" | "diamond-wide-open-dot" | "hourglass" | "hourglass-open" | "bowtie" | "bowtie-open" | "circle-cross" | "circle-cross-open" | "circle-x" | "circle-x-open" | "square-cross" | "square-cross-open" | "square-x" | "square-x-open" | "diamond-cross" | "diamond-cross-open" | "diamond-x" | "diamond-x-open" | "cross-thin" | "cross-thin-open" | "x-thin" | "x-thin-open" | "asterisk" | "asterisk-open" | "hash" | "hash-open" | "hash-dot" | "hash-open-dot" | "y-up" | "y-up-open" | "y-down" | "y-down-open" | "y-left" | "y-left-open" | "y-right" | "y-right-open" | "line-ew" | "line-ew-open" | "line-ns" | "line-ns-open" | "line-ne" | "line-ne-open" | "line-nw" | "line-nw-open" | "arrow" | "arrow-open" | "arrow-wide" | "arrow-wide-open";
1060
1347
  interface LineDataSeries {
1061
1348
  x: number[];
@@ -1736,5 +2023,5 @@ interface ThemeProviderProps {
1736
2023
  */
1737
2024
  declare const ThemeProvider: React$1.FC<ThemeProviderProps>;
1738
2025
 
1739
- export { AppHeader, AppLayout, AreaGraph, AssistantModal, Badge, BarGraph, Boxplot, Button, ButtonControl, ButtonControlGroup, CHART_COLORS, COLORS, Card, CardSidebar, Checkbox, Chromatogram, ChromatogramChart, CodeEditor, CodeScriptEditorButton, DotPlot, Dropdown, ErrorAlert, FormField, Heatmap, Histogram, Icon, IconName, Input, Label, LaunchContent, LineGraph, Main, MarkdownDisplay, Menu, MenuItem, Modal, Navbar, PieChart, PlateMap, PopConfirm, ProtocolConfiguration, ProtocolYamlCard, PythonEditorModal, ScatterGraph, SelectField, Sidebar, SupportiveText, TDPLink, Tab, TabGroup, Table, TableCell, TableHeaderCell, TdpNavigationContext, TdpNavigationProvider, TdpSearch, Textarea, ThemeProvider, Toast, ToastManager, Toggle, Tooltip, buildTdpUrl, defaultTheme, getTdpBaseUrlFromReferrer, navigateToTdpUrl, tdpPaths, useSearch, useTdpNavigation, useTdpNavigationContext };
1740
- export type { AppHeaderProps, AppLayoutProps, AreaDataSeries, AreaGraphProps, AreaGraphVariant, AssistantModalProps, BadgeProps, BarDataSeries, BarGraphProps, BarGraphVariant, BaselineCorrectionMethod, BoundaryMarkerStyle, BoxDataSeries, BoxplotProps, ButtonControlGroupProps, ButtonControlProps, ButtonProps, CardProps, CardSidebarProps, CheckboxProps, ChromatogramChartProps, ChromatogramProps, ChromatogramSeries, CodeEditorProps, CodeScriptEditorButtonProps, ColorScale, ColorToken, DotPlotDataSeries, DotPlotProps, DotPlotVariant, DropdownOption, DropdownProps, ErrorAlertProps, FormFieldProps, HeatmapProps, HistogramDataSeries, HistogramProps, IconProps, IconsProps, InputProps, LabelProps, LaunchContentProps, LineDataSeries, LineGraphProps, LineGraphVariant, MainProps, MarkdownDisplayProps, MarkerSymbol, MenuItemProps, MenuProps, ModalProps, NavbarProps, PeakAnnotation, PeakData, PeakDetectionOptions, PieChartProps, PieDataSeries, PieTextInfo, PlateFormat, PlateMapProps, PopConfirmProps, ProtocolConfigurationProps, ProtocolYamlCardProps, PythonEditorModalProps, ScatterDataPoint, ScatterDataSeries, ScatterGraphProps, SearchResult, SelectFieldProps, SidebarProps, SupportiveTextProps, TDPLinkProps, TabGroupProps, TabProps, TabSize, TableCellProps, TableColumn, TableHeaderCellProps, TableProps, TdpFiltersRenderProps, TdpNavigationContextValue, TdpNavigationOptions, TdpNavigationProviderProps, TdpResultsRenderProps, TdpSearchBarRenderProps, TdpSearchColumn, TdpSearchConfig, TdpSearchFilter, TdpSearchProps, TdpSearchSort, TextareaProps, Theme, ThemeColors, ThemeProviderProps, ThemeRadius, ThemeSpacing, ToastContainerProps, ToastManagerProps, ToastProps, ToastType, ToggleProps, TooltipProps, UseSearchConfig, UseSearchResult, UseTdpNavigationOptions, UseTdpNavigationReturn, WellData };
2026
+ export { AppHeader, AppLayout, AreaGraph, AssistantModal, Badge, BarGraph, Boxplot, Button, ButtonControl, ButtonControlGroup, CHART_COLORS, COLORS, Card, CardSidebar, Checkbox, Chromatogram, ChromatogramChart, CodeEditor, CodeScriptEditorButton, DEFAULT_CATEGORY_COLORS, DEFAULT_COLOR_SCALE, DEFAULT_MARKER_SIZE, DEFAULT_MAX_POINTS, DEFAULT_SIZE_RANGE, DotPlot, Dropdown, ErrorAlert, FormField, Heatmap, Histogram, Icon, IconName, Input, InteractiveScatter, Label, LaunchContent, LineGraph, Main, MarkdownDisplay, Menu, MenuItem, Modal, Navbar, PLOT_CONSTANTS, PieChart, PlateMap, PopConfirm, ProtocolConfiguration, ProtocolYamlCard, PythonEditorModal, SELECTION_MODIFIERS, ScatterGraph, SelectField, Sidebar, SupportiveText, TDPLink, Tab, TabGroup, Table, TableCell, TableHeaderCell, TdpNavigationContext, TdpNavigationProvider, TdpSearch, Textarea, ThemeProvider, Toast, ToastManager, Toggle, Tooltip, buildTdpUrl, defaultTheme, getTdpBaseUrlFromReferrer, navigateToTdpUrl, tdpPaths, useSearch, useTdpNavigation, useTdpNavigationContext };
2027
+ export type { AppHeaderProps, AppLayoutProps, AreaDataSeries, AreaGraphProps, AreaGraphVariant, AssistantModalProps, AxisConfig, BadgeProps, BarDataSeries, BarGraphProps, BarGraphVariant, BaselineCorrectionMethod, BoundaryMarkerStyle, BoxDataSeries, BoxplotProps, ButtonControlGroupProps, ButtonControlProps, ButtonProps, CardProps, CardSidebarProps, CheckboxProps, ChromatogramChartProps, ChromatogramProps, ChromatogramSeries, CodeEditorProps, CodeScriptEditorButtonProps, ColorMapping, ColorScale, ColorToken, DotPlotDataSeries, DotPlotProps, DotPlotVariant, DownsamplingConfig, DropdownOption, DropdownProps, ErrorAlertProps, FormFieldProps, HeatmapProps, HistogramDataSeries, HistogramProps, IconProps, IconsProps, InputProps, InteractiveScatterProps, LabelProps, LaunchContentProps, LineDataSeries, LineGraphProps, LineGraphVariant, MainProps, MarkdownDisplayProps, MarkerShape, MarkerSymbol, MenuItemProps, MenuProps, ModalProps, NavbarProps, PeakAnnotation, PeakData, PeakDetectionOptions, PieChartProps, PieDataSeries, PieTextInfo, PlateFormat, PlateMapProps, PopConfirmProps, ProtocolConfigurationProps, ProtocolYamlCardProps, PythonEditorModalProps, ScaleType, ScatterDataPoint, ScatterDataSeries, ScatterGraphProps, ScatterPoint, SearchResult, SelectFieldProps, SelectionEvent, SelectionMode, SelectionState, ShapeMapping, SidebarProps, SizeMapping, SupportiveTextProps, TDPLinkProps, TabGroupProps, TabProps, TabSize, TableCellProps, TableColumn, TableHeaderCellProps, TableProps, TdpFiltersRenderProps, TdpNavigationContextValue, TdpNavigationOptions, TdpNavigationProviderProps, TdpResultsRenderProps, TdpSearchBarRenderProps, TdpSearchColumn, TdpSearchConfig, TdpSearchFilter, TdpSearchProps, TdpSearchSort, TextareaProps, Theme, ThemeColors, ThemeProviderProps, ThemeRadius, ThemeSpacing, ToastContainerProps, ToastManagerProps, ToastProps, ToastType, ToggleProps, TooltipConfig, TooltipProps, UseSearchConfig, UseSearchResult, UseTdpNavigationOptions, UseTdpNavigationReturn, WellData };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tetrascience-npm/tetrascience-react-ui",
3
- "version": "0.4.0-beta.8.1",
3
+ "version": "0.4.0-beta.9.1",
4
4
  "description": "TetraScience React UI",
5
5
  "type": "module",
6
6
  "author": "TetraScience",