@tetrascience-npm/tetrascience-react-ui 0.5.0-beta.57.1 → 0.5.0-beta.58.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/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +140 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +126 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +422 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +136 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +389 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +54 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +96 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.js +58 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js +408 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +177 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/autoFill.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/autoFill.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/autoFill.js +41 -0
- package/dist/components/composed/PlateMapEditor/autoFill.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs +4 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.js +103 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/helpers.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/helpers.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/helpers.js +11 -0
- package/dist/components/composed/PlateMapEditor/helpers.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.js +56 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.js.map +1 -0
- 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.js +124 -139
- package/dist/components/ui/data-table/data-table-filter.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.js +1 -0
- package/dist/components/ui/data-table/data-table.js.map +1 -1
- package/dist/components/ui/popover.cjs +2 -0
- package/dist/components/ui/popover.cjs.map +1 -0
- package/dist/components/ui/popover.js +45 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +555 -0
- package/dist/index.js +637 -595
- package/dist/index.js.map +1 -1
- package/dist/index.tailwind.css +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -39,6 +39,7 @@ import { NavigationMenu as NavigationMenu_2 } from 'radix-ui';
|
|
|
39
39
|
import { OnChange } from '@monaco-editor/react';
|
|
40
40
|
import { OTPInput } from 'input-otp';
|
|
41
41
|
import { PaginationState } from '@tanstack/react-table';
|
|
42
|
+
import { Popover as Popover_2 } from 'radix-ui';
|
|
42
43
|
import { PropsWithChildren } from 'react';
|
|
43
44
|
import { RadioGroup as RadioGroup_2 } from 'radix-ui';
|
|
44
45
|
import * as React_2 from 'react';
|
|
@@ -115,6 +116,10 @@ declare const alertVariants: (props?: ({
|
|
|
115
116
|
variant?: "default" | "destructive" | "info" | "positive" | "warning" | null | undefined;
|
|
116
117
|
} & ClassProp) | undefined) => string;
|
|
117
118
|
|
|
119
|
+
export declare function allPositions(dims: PlateDimensions): WellId[];
|
|
120
|
+
|
|
121
|
+
export declare function applyFilterCondition(cellValue: string, operator: FilterOperator, filterValue: string): boolean;
|
|
122
|
+
|
|
118
123
|
export declare interface AreaDataSeries {
|
|
119
124
|
x: number[];
|
|
120
125
|
y: number[];
|
|
@@ -220,6 +225,33 @@ export declare type AttachmentsProps = HTMLAttributes<HTMLDivElement> & {
|
|
|
220
225
|
|
|
221
226
|
export declare type AttachmentVariant = "grid" | "inline" | "list";
|
|
222
227
|
|
|
228
|
+
export declare interface AutoFillOptions {
|
|
229
|
+
dims: PlateDimensions;
|
|
230
|
+
/** Number of distinct items to place. Each is repeated `replicates` times. */
|
|
231
|
+
count: number;
|
|
232
|
+
/** First well in fill order. Defaults to position (0,0). */
|
|
233
|
+
startWellId?: WellId;
|
|
234
|
+
/** Traversal strategy. Defaults to `"row-major"`. */
|
|
235
|
+
strategy?: FillStrategy;
|
|
236
|
+
/** Consecutive cells assigned per item. Defaults to 1. */
|
|
237
|
+
replicates?: number;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Compute the ordered list of well ids to assign to `count` items (each
|
|
242
|
+
* repeated `replicates` times) starting from `startWellId`. Returns at most
|
|
243
|
+
* `dims.rows * dims.columns` ids — overflow is silently truncated so callers
|
|
244
|
+
* can paginate onto multiple plates themselves.
|
|
245
|
+
*/
|
|
246
|
+
export declare function autoFillPositions(options: AutoFillOptions): WellId[];
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Convenience wrapper: assigns each input item to `replicates` consecutive
|
|
250
|
+
* wells, returning a `Map<WellId, T>`. The mapper builds the record stored at
|
|
251
|
+
* each well (e.g. stamp item-specific fields onto a base record).
|
|
252
|
+
*/
|
|
253
|
+
export declare function autoFillRecords<T>(items: T[], buildRecord: (item: T, index: number, wellId: WellId) => T, options: Omit<AutoFillOptions, "count">): Map<WellId, T>;
|
|
254
|
+
|
|
223
255
|
export declare function Avatar({ className, size, ...props }: React_2.ComponentProps<typeof Avatar_2.Root> & {
|
|
224
256
|
size?: "default" | "sm" | "lg";
|
|
225
257
|
}): JSX.Element;
|
|
@@ -1371,6 +1403,8 @@ declare const fieldVariants: (props?: ({
|
|
|
1371
1403
|
orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
|
|
1372
1404
|
} & ClassProp) | undefined) => string;
|
|
1373
1405
|
|
|
1406
|
+
export declare type FillStrategy = "row-major" | "column-major" | "row-snake" | "column-snake";
|
|
1407
|
+
|
|
1374
1408
|
export declare interface FilterColumnConfig {
|
|
1375
1409
|
columnId: string;
|
|
1376
1410
|
label?: string;
|
|
@@ -1399,6 +1433,8 @@ export declare const getAttachmentLabel: (data: AttachmentData) => string;
|
|
|
1399
1433
|
|
|
1400
1434
|
export declare const getMediaCategory: (data: AttachmentData) => AttachmentMediaCategory;
|
|
1401
1435
|
|
|
1436
|
+
export declare function getPlateMapScopedWellId(plateBarcode: string, wellId: WellId): WellId;
|
|
1437
|
+
|
|
1402
1438
|
export declare const getStatusBadge: (status: ToolPart["state"]) => JSX.Element;
|
|
1403
1439
|
|
|
1404
1440
|
/**
|
|
@@ -1504,6 +1540,13 @@ export declare function HoverCardContent({ className, align, sideOffset, ...prop
|
|
|
1504
1540
|
|
|
1505
1541
|
export declare function HoverCardTrigger({ ...props }: React_2.ComponentProps<typeof HoverCard_2.Trigger>): JSX.Element;
|
|
1506
1542
|
|
|
1543
|
+
export declare interface ImportExportHandlers {
|
|
1544
|
+
onImportCsv?: (file: File, triage?: PlateMapCsvTriage) => void | Promise<void>;
|
|
1545
|
+
onExportCsv?: () => void;
|
|
1546
|
+
onImportTemplate?: (file: File) => void | Promise<void>;
|
|
1547
|
+
onExportTemplate?: () => void;
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1507
1550
|
export declare const InlineCitation: ({ className, ...props }: InlineCitationProps) => JSX.Element;
|
|
1508
1551
|
|
|
1509
1552
|
export declare const InlineCitationCard: (props: InlineCitationCardProps) => JSX.Element;
|
|
@@ -1753,6 +1796,19 @@ export declare type LineGraphVariant = "lines" | "lines+markers" | "lines+marker
|
|
|
1753
1796
|
|
|
1754
1797
|
export declare const LocalReferencedSourcesContext: Context_2<ReferencedSourcesContext | null>;
|
|
1755
1798
|
|
|
1799
|
+
export declare function ManifestFilterPopover({ columns, columnLabel, filters, onFiltersChange, triggerLabel, className, }: ManifestFilterPopoverProps): JSX.Element;
|
|
1800
|
+
|
|
1801
|
+
export declare interface ManifestFilterPopoverProps {
|
|
1802
|
+
/** Filterable columns. Operator subsets can be specified per column. */
|
|
1803
|
+
columns: FilterColumnConfig[];
|
|
1804
|
+
/** Column id → display label resolver. */
|
|
1805
|
+
columnLabel?: (columnId: string) => string;
|
|
1806
|
+
filters: FilterCondition[];
|
|
1807
|
+
onFiltersChange: (next: FilterCondition[]) => void;
|
|
1808
|
+
triggerLabel?: string;
|
|
1809
|
+
className?: string;
|
|
1810
|
+
}
|
|
1811
|
+
|
|
1756
1812
|
export declare 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";
|
|
1757
1813
|
|
|
1758
1814
|
declare type MarkerSymbol_2 = "circle" | "square" | "diamond" | "triangle-up" | "triangle-down" | "star";
|
|
@@ -1970,6 +2026,13 @@ export declare interface NavPage {
|
|
|
1970
2026
|
onClick?: () => void;
|
|
1971
2027
|
}
|
|
1972
2028
|
|
|
2029
|
+
export declare function parsePos(id: WellId, dims: PlateDimensions): {
|
|
2030
|
+
row: number;
|
|
2031
|
+
col: number;
|
|
2032
|
+
} | null;
|
|
2033
|
+
|
|
2034
|
+
export declare function parseRowLabel(label: string): number;
|
|
2035
|
+
|
|
1973
2036
|
/**
|
|
1974
2037
|
* Peak annotation for labeling peaks on the chromatogram.
|
|
1975
2038
|
* Used for both user-provided annotations and auto-detected peaks.
|
|
@@ -2053,6 +2116,11 @@ declare const PLATE_FORMAT_96: "96";
|
|
|
2053
2116
|
|
|
2054
2117
|
declare const PLATE_FORMAT_CUSTOM: "custom";
|
|
2055
2118
|
|
|
2119
|
+
export declare interface PlateDimensions {
|
|
2120
|
+
rows: number;
|
|
2121
|
+
columns: number;
|
|
2122
|
+
}
|
|
2123
|
+
|
|
2056
2124
|
/**
|
|
2057
2125
|
* Plate format presets for standard microplate configurations.
|
|
2058
2126
|
* - `"96"`: 8 rows × 12 columns (wells A1-H12)
|
|
@@ -2087,6 +2155,204 @@ export declare type PlateFormat = typeof PLATE_FORMAT_96 | typeof PLATE_FORMAT_3
|
|
|
2087
2155
|
*/
|
|
2088
2156
|
export declare const PlateMap: default_2.FC<PlateMapProps>;
|
|
2089
2157
|
|
|
2158
|
+
export declare function PlateMapActionsMenu({ templates, templateId, onTemplateChange, onClearTemplate, hasEntries, onImportCsv, onExportCsv, onImportTemplate, onExportTemplate, label, align, side, csvAccept, templateAccept, importTemplateLabel, exportTemplateLabel, importCsvLabel, exportCsvLabel, clearLabel, className, }: PlateMapActionsMenuProps): JSX.Element | null;
|
|
2159
|
+
|
|
2160
|
+
export declare interface PlateMapActionsMenuProps extends ImportExportHandlers {
|
|
2161
|
+
templates?: TemplateOption[];
|
|
2162
|
+
templateId?: string;
|
|
2163
|
+
onTemplateChange?: (id: string) => void;
|
|
2164
|
+
onClearTemplate?: () => void;
|
|
2165
|
+
/** Disable export/save actions when there is nothing to export. */
|
|
2166
|
+
hasEntries?: boolean;
|
|
2167
|
+
label?: React_2.ReactNode;
|
|
2168
|
+
align?: "start" | "center" | "end";
|
|
2169
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
2170
|
+
csvAccept?: string;
|
|
2171
|
+
templateAccept?: string;
|
|
2172
|
+
importTemplateLabel?: string;
|
|
2173
|
+
exportTemplateLabel?: string;
|
|
2174
|
+
importCsvLabel?: string;
|
|
2175
|
+
exportCsvLabel?: string;
|
|
2176
|
+
clearLabel?: string;
|
|
2177
|
+
className?: string;
|
|
2178
|
+
}
|
|
2179
|
+
|
|
2180
|
+
export declare interface PlateMapCsvPlate {
|
|
2181
|
+
/** User-provided plate barcode used as the selectable plate id. */
|
|
2182
|
+
id: string;
|
|
2183
|
+
barcode: string;
|
|
2184
|
+
rows: PlateMapCsvRow[];
|
|
2185
|
+
rowCount: number;
|
|
2186
|
+
}
|
|
2187
|
+
|
|
2188
|
+
export declare interface PlateMapCsvRow {
|
|
2189
|
+
/** 1-based CSV line number, including the header line. */
|
|
2190
|
+
line: number;
|
|
2191
|
+
values: Record<string, string>;
|
|
2192
|
+
}
|
|
2193
|
+
|
|
2194
|
+
export declare interface PlateMapCsvTriage {
|
|
2195
|
+
headers: string[];
|
|
2196
|
+
/** Resolved header name for the plate barcode column, when present. */
|
|
2197
|
+
plateBarcodeColumn?: string;
|
|
2198
|
+
rows: PlateMapCsvRow[];
|
|
2199
|
+
plates: PlateMapCsvPlate[];
|
|
2200
|
+
/** Rows missing a barcode. The editor does not create fallback barcodes. */
|
|
2201
|
+
missingBarcodeRows: PlateMapCsvRow[];
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2204
|
+
export declare interface PlateMapCsvTriageOptions {
|
|
2205
|
+
/** Exact column name to use before trying aliases. */
|
|
2206
|
+
plateBarcodeColumn?: string;
|
|
2207
|
+
/** Additional accepted names for the plate barcode column. */
|
|
2208
|
+
plateBarcodeColumnAliases?: readonly string[];
|
|
2209
|
+
}
|
|
2210
|
+
|
|
2211
|
+
export declare function PlateMapEditor<T extends WellRecord = WellRecord>({ format, rows, columns, values, onChange, selection, onSelectionChange, fields, tableColumns, colorForWell, emptyEntry, mergeOnApply, isPopulated, cycleFieldOnWellDoubleClick, title, badges, banner, legend, formExtras, formSlot, footer, plateTitle, plateToolbar, plates, activePlateId, onPlateChange, onAddPlate, onRemovePlate, addPlateLabel, removePlateLabel, plateSelectorLabel, plateSelectorVariant, plateBarcodeField, plateBarcodeColumnHeader, hidePlateBarcodeColumn, groups, activeGroupId, onGroupClick, renderHoverSummary, cellSize, emptyWellFillColor, wellShape, framedPlate, wrapWell, highlightedWellIds, onHoveredWellChange, manifestFilterable, manifestGroupable, autoScaleGrid, minCellSize, maxCellSize, className, templates, templateId, onTemplateChange, onClearTemplate, onImportCsv, onExportCsv, onImportTemplate, onExportTemplate, csvAccept, templateAccept, label, align, side, importTemplateLabel, exportTemplateLabel, importCsvLabel, exportCsvLabel, clearLabel, }: PlateMapEditorProps<T>): JSX.Element;
|
|
2212
|
+
|
|
2213
|
+
export declare interface PlateMapEditorProps<T extends WellRecord = WellRecord> extends Omit<PlateMapActionsMenuProps, "hasEntries" | "className"> {
|
|
2214
|
+
format: PlateFormat;
|
|
2215
|
+
rows?: number;
|
|
2216
|
+
columns?: number;
|
|
2217
|
+
values: Map<WellId, T>;
|
|
2218
|
+
onChange: (next: Map<WellId, T>) => void;
|
|
2219
|
+
selection: Set<WellId>;
|
|
2220
|
+
onSelectionChange: (next: Set<WellId>) => void;
|
|
2221
|
+
fields: WellField<T>[];
|
|
2222
|
+
tableColumns: WellColumn<T>[];
|
|
2223
|
+
/** Resolves the SVG fill color for a well. */
|
|
2224
|
+
colorForWell: (well: T | undefined, wellId: WellId) => string;
|
|
2225
|
+
/** Builds an empty record when a well is freshly created. */
|
|
2226
|
+
emptyEntry: (wellId: WellId) => T;
|
|
2227
|
+
/**
|
|
2228
|
+
* Merges the staged form record onto an existing well record on Apply.
|
|
2229
|
+
* Defaults to a shallow merge (form keys overwrite existing keys when set).
|
|
2230
|
+
*/
|
|
2231
|
+
mergeOnApply?: (existing: T | undefined, staged: Partial<T>, wellId: WellId) => T;
|
|
2232
|
+
/** Filter for the manifest's "hide empty" mode. */
|
|
2233
|
+
isPopulated?: (row: T) => boolean;
|
|
2234
|
+
/** Select field cycled when double-clicking a single well, e.g. role painting. */
|
|
2235
|
+
cycleFieldOnWellDoubleClick?: keyof T & string;
|
|
2236
|
+
/** Optional header title (e.g. plate set name). */
|
|
2237
|
+
title?: string;
|
|
2238
|
+
/** Optional badges shown in the header next to the title. */
|
|
2239
|
+
badges?: React_2.ReactNode;
|
|
2240
|
+
/** Optional banner (e.g. import/error alert) shown above the layout. */
|
|
2241
|
+
banner?: React_2.ReactNode;
|
|
2242
|
+
/** Legend block rendered under the form column. */
|
|
2243
|
+
legend?: React_2.ReactNode;
|
|
2244
|
+
/** Form helper slot rendered between fields and the action row. */
|
|
2245
|
+
formExtras?: React_2.ReactNode;
|
|
2246
|
+
/**
|
|
2247
|
+
* Fully replaces the left column. When set, the built-in `WellMetadataForm`
|
|
2248
|
+
* is omitted — use this for alternative workflows like a drag-and-drop
|
|
2249
|
+
* source palette. The legend slot still renders beneath the replacement.
|
|
2250
|
+
*/
|
|
2251
|
+
formSlot?: React_2.ReactNode;
|
|
2252
|
+
/** Footer actions (e.g. Save, Back). */
|
|
2253
|
+
footer?: React_2.ReactNode;
|
|
2254
|
+
/** Title for the plate grid panel. */
|
|
2255
|
+
plateTitle?: React_2.ReactNode;
|
|
2256
|
+
/** Optional controls shown next to the built-in actions menu. */
|
|
2257
|
+
plateToolbar?: React_2.ReactNode;
|
|
2258
|
+
/** User-provided plates available for this editor. Barcodes are never generated by the editor. */
|
|
2259
|
+
plates?: PlateMapPlateOption[];
|
|
2260
|
+
activePlateId?: string;
|
|
2261
|
+
onPlateChange?: (plateId: string) => void;
|
|
2262
|
+
/** Opens the host app's manual barcode entry flow for creating a plate. */
|
|
2263
|
+
onAddPlate?: () => void;
|
|
2264
|
+
/** Removes a plate (typically when using `plateSelectorVariant="tabs"`). */
|
|
2265
|
+
onRemovePlate?: (plateId: string) => void;
|
|
2266
|
+
addPlateLabel?: string;
|
|
2267
|
+
removePlateLabel?: string;
|
|
2268
|
+
plateSelectorLabel?: string;
|
|
2269
|
+
/** Layout of the plate selector. Defaults to `"dropdown"`. */
|
|
2270
|
+
plateSelectorVariant?: PlateMapPlateSelectorVariant;
|
|
2271
|
+
/** Row field used to stamp the active user-provided barcode onto edited wells. Defaults to `plateBarcode`. */
|
|
2272
|
+
plateBarcodeField?: keyof T & string;
|
|
2273
|
+
/** Header for the automatic manifest barcode column. */
|
|
2274
|
+
plateBarcodeColumnHeader?: string;
|
|
2275
|
+
/** Hide the automatic manifest barcode column when plate-scoped editing is active. */
|
|
2276
|
+
hidePlateBarcodeColumn?: boolean;
|
|
2277
|
+
/** Optional grouped well shortcuts rendered under the grid. */
|
|
2278
|
+
groups?: PlateMapGroupOption[];
|
|
2279
|
+
activeGroupId?: string;
|
|
2280
|
+
onGroupClick?: (group: PlateMapGroupOption) => void;
|
|
2281
|
+
/** Custom hover summary for the strip above the grid. */
|
|
2282
|
+
renderHoverSummary?: (well: T | undefined, wellId: WellId) => React_2.ReactNode;
|
|
2283
|
+
/** Fixed well size. When unset, the grid grows with the available width. */
|
|
2284
|
+
cellSize?: number;
|
|
2285
|
+
/** Fill color for empty wells. Pass `null` to delegate empty wells to `colorForWell`. */
|
|
2286
|
+
emptyWellFillColor?: string | null;
|
|
2287
|
+
/** Well shape forwarded to `PlatePaintGrid`. Defaults to `"rect"`. */
|
|
2288
|
+
wellShape?: WellShape;
|
|
2289
|
+
/** When true, wraps the grid in a card-like plate frame (rounded + border + soft shadow). */
|
|
2290
|
+
framedPlate?: boolean;
|
|
2291
|
+
/**
|
|
2292
|
+
* Forwarded to `PlatePaintGrid`. Render-prop that places a node inside each
|
|
2293
|
+
* absolute-positioned well cell — used to wire drop targets without binding
|
|
2294
|
+
* the kit to a specific DnD library.
|
|
2295
|
+
*/
|
|
2296
|
+
wrapWell?: (wellId: WellId, cellSize: number) => React_2.ReactNode;
|
|
2297
|
+
/** Wells to highlight (e.g. when hovering a legend item externally). */
|
|
2298
|
+
highlightedWellIds?: ReadonlySet<WellId>;
|
|
2299
|
+
/** Fires whenever the currently hovered well changes (null on leave). */
|
|
2300
|
+
onHoveredWellChange?: (wellId: WellId | null) => void;
|
|
2301
|
+
/** Enables the filter popover on the manifest table. */
|
|
2302
|
+
manifestFilterable?: boolean;
|
|
2303
|
+
/** Enables the group-by selector on the manifest table. */
|
|
2304
|
+
manifestGroupable?: boolean;
|
|
2305
|
+
autoScaleGrid?: boolean;
|
|
2306
|
+
minCellSize?: number;
|
|
2307
|
+
maxCellSize?: number;
|
|
2308
|
+
className?: string;
|
|
2309
|
+
}
|
|
2310
|
+
|
|
2311
|
+
export declare interface PlateMapGroupOption {
|
|
2312
|
+
id: string;
|
|
2313
|
+
label: string;
|
|
2314
|
+
/** Well ids in the group; callers can use this to select the group. */
|
|
2315
|
+
wellIds?: WellId[];
|
|
2316
|
+
/** Optional explicit count; defaults to `wellIds.length` when present. */
|
|
2317
|
+
count?: number;
|
|
2318
|
+
color?: string;
|
|
2319
|
+
borderColor?: string;
|
|
2320
|
+
disabled?: boolean;
|
|
2321
|
+
}
|
|
2322
|
+
|
|
2323
|
+
export declare interface PlateMapPlateOption {
|
|
2324
|
+
/** Stable plate id. For imported CSVs this should be the user-provided barcode. */
|
|
2325
|
+
id: string;
|
|
2326
|
+
/** User-provided plate barcode. Barcodes are never generated by the editor. */
|
|
2327
|
+
barcode: string;
|
|
2328
|
+
/** Optional display label when it differs from the barcode. */
|
|
2329
|
+
label?: string;
|
|
2330
|
+
/** Optional count shown beside the plate pill, usually imported row/well count. */
|
|
2331
|
+
count?: number;
|
|
2332
|
+
disabled?: boolean;
|
|
2333
|
+
}
|
|
2334
|
+
|
|
2335
|
+
export declare function PlateMapPlateSelector({ plates, activePlateId, onPlateChange, onAddPlate, onRemovePlate, addPlateLabel, removePlateLabel, label, variant, align, side, className, }: PlateMapPlateSelectorProps): JSX.Element;
|
|
2336
|
+
|
|
2337
|
+
export declare interface PlateMapPlateSelectorProps {
|
|
2338
|
+
plates?: PlateMapPlateOption[];
|
|
2339
|
+
activePlateId?: string;
|
|
2340
|
+
onPlateChange?: (plateId: string) => void;
|
|
2341
|
+
onAddPlate?: () => void;
|
|
2342
|
+
/** When supplied, the tabs variant renders a delete affordance per plate. */
|
|
2343
|
+
onRemovePlate?: (plateId: string) => void;
|
|
2344
|
+
addPlateLabel?: string;
|
|
2345
|
+
removePlateLabel?: string;
|
|
2346
|
+
label?: string;
|
|
2347
|
+
/** Layout. `"dropdown"` is the default single-trigger menu, `"tabs"` is a horizontal tab strip. */
|
|
2348
|
+
variant?: PlateMapPlateSelectorVariant;
|
|
2349
|
+
align?: "start" | "center" | "end";
|
|
2350
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
2351
|
+
className?: string;
|
|
2352
|
+
}
|
|
2353
|
+
|
|
2354
|
+
export declare type PlateMapPlateSelectorVariant = "dropdown" | "tabs";
|
|
2355
|
+
|
|
2090
2356
|
/**
|
|
2091
2357
|
* Props for PlateMap component
|
|
2092
2358
|
*/
|
|
@@ -2188,6 +2454,76 @@ export declare interface PlateMapProps {
|
|
|
2188
2454
|
onWellClick?: (wellData: WellData) => void;
|
|
2189
2455
|
}
|
|
2190
2456
|
|
|
2457
|
+
export declare function plateOptionsFromCsvTriage(triage: PlateMapCsvTriage): PlateMapPlateOption[];
|
|
2458
|
+
|
|
2459
|
+
/**
|
|
2460
|
+
* Interactive plate grid with drag-rectangle selection.
|
|
2461
|
+
* - Click & drag: replace selection
|
|
2462
|
+
* - Shift + drag: add to selection
|
|
2463
|
+
* - Alt + drag: remove from selection
|
|
2464
|
+
*/
|
|
2465
|
+
export declare function PlatePaintGrid<T extends WellRecord = WellRecord>({ format, rows, columns, values, selection, onSelectionChange, colorForWell, emptyWellFillColor, wellShape, framed, cellSize, autoScale, minCellSize, maxCellSize, borderColor, selectedBorderColor, selectedFillColor, selectedFillOpacity, selectionFillMode, flashWellId, flashWellKey, highlightedWellIds, highlightBorderColor, onWellHover, onWellDoubleClick, wrapWell, className, }: PlatePaintGridProps<T>): JSX.Element;
|
|
2466
|
+
|
|
2467
|
+
export declare interface PlatePaintGridProps<T extends WellRecord = WellRecord> {
|
|
2468
|
+
format: PlateFormat;
|
|
2469
|
+
rows?: number;
|
|
2470
|
+
columns?: number;
|
|
2471
|
+
values: Map<WellId, T>;
|
|
2472
|
+
selection: Set<WellId>;
|
|
2473
|
+
onSelectionChange: (next: Set<WellId>) => void;
|
|
2474
|
+
/** Returns the fill color for a given well record (or undefined if empty). */
|
|
2475
|
+
colorForWell: (well: T | undefined, wellId: WellId) => string;
|
|
2476
|
+
/** Fill color for empty wells. Pass `null` to delegate empty wells to `colorForWell`. */
|
|
2477
|
+
emptyWellFillColor?: string | null;
|
|
2478
|
+
/** Geometric shape of each well. `"circle"` matches scientific plate visuals. Defaults to `"rect"`. */
|
|
2479
|
+
wellShape?: WellShape;
|
|
2480
|
+
/**
|
|
2481
|
+
* When true, wraps the grid in a card-like surface (rounded, bordered,
|
|
2482
|
+
* padded, soft shadow) so it reads as a physical plate. Pairs well with
|
|
2483
|
+
* `wellShape="circle"`.
|
|
2484
|
+
*/
|
|
2485
|
+
framed?: boolean;
|
|
2486
|
+
/** Pixel size of each well cell. Defaults to 34 when fixed. */
|
|
2487
|
+
cellSize?: number;
|
|
2488
|
+
/** Resize wells to fill available width when `cellSize` is not fixed. */
|
|
2489
|
+
autoScale?: boolean;
|
|
2490
|
+
minCellSize?: number;
|
|
2491
|
+
/** Defaults to 72 for 96-well style plates and 36 for denser plates. */
|
|
2492
|
+
maxCellSize?: number;
|
|
2493
|
+
/** Stroke color for non-selected wells. Defaults to a light border. */
|
|
2494
|
+
borderColor?: string;
|
|
2495
|
+
/** Stroke color for selected wells. Defaults to the kit primary blue. */
|
|
2496
|
+
selectedBorderColor?: string;
|
|
2497
|
+
/** Fill color for selected wells. Defaults to the kit primary blue. */
|
|
2498
|
+
selectedFillColor?: string;
|
|
2499
|
+
/** Selected fill opacity. */
|
|
2500
|
+
selectedFillOpacity?: number;
|
|
2501
|
+
/** Whether selected wells use the selection fill or keep their assigned well color. */
|
|
2502
|
+
selectionFillMode?: "selection" | "well";
|
|
2503
|
+
/** Well id that should briefly flash, usually after a double-click assignment. */
|
|
2504
|
+
flashWellId?: WellId;
|
|
2505
|
+
/** Changing this value restarts the flash animation for the same well. */
|
|
2506
|
+
flashWellKey?: number;
|
|
2507
|
+
/**
|
|
2508
|
+
* Well ids that should render with a highlight ring. Used for cross-component
|
|
2509
|
+
* hover sync (e.g. hovering a legend item to highlight matching wells).
|
|
2510
|
+
*/
|
|
2511
|
+
highlightedWellIds?: ReadonlySet<WellId>;
|
|
2512
|
+
/** Stroke color for highlighted wells. Defaults to the kit primary blue. */
|
|
2513
|
+
highlightBorderColor?: string;
|
|
2514
|
+
onWellHover?: (wellId: WellId | null) => void;
|
|
2515
|
+
onWellDoubleClick?: (wellId: WellId) => void;
|
|
2516
|
+
/**
|
|
2517
|
+
* Optional render-prop invoked once per well. The returned node is placed
|
|
2518
|
+
* inside an absolutely-positioned cell on top of the SVG, sized to
|
|
2519
|
+
* `cellSize`. The wrapper layer is `pointer-events: none` so the SVG keeps
|
|
2520
|
+
* pointer interaction by default; consumers wiring drop targets are expected
|
|
2521
|
+
* to set `pointer-events: auto` on their own element while a drag is active.
|
|
2522
|
+
*/
|
|
2523
|
+
wrapWell?: (wellId: WellId, cellSize: number) => React_2.ReactNode;
|
|
2524
|
+
className?: string;
|
|
2525
|
+
}
|
|
2526
|
+
|
|
2191
2527
|
/**
|
|
2192
2528
|
* A region to highlight on the plate (e.g., controls, sample areas, empty wells)
|
|
2193
2529
|
*/
|
|
@@ -2209,6 +2545,30 @@ declare interface PlateRegion {
|
|
|
2209
2545
|
fillColor?: string;
|
|
2210
2546
|
}
|
|
2211
2547
|
|
|
2548
|
+
export declare function PlateZoomControl({ zoom, onZoomChange, step, min, max, showReadout, className, }: PlateZoomControlProps): JSX.Element;
|
|
2549
|
+
|
|
2550
|
+
export declare interface PlateZoomControlProps {
|
|
2551
|
+
zoom: number;
|
|
2552
|
+
onZoomChange: (next: number) => void;
|
|
2553
|
+
/** Increment per click. Defaults to 0.1. */
|
|
2554
|
+
step?: number;
|
|
2555
|
+
min?: number;
|
|
2556
|
+
max?: number;
|
|
2557
|
+
/** Render a percentage readout between the buttons. Defaults to true. */
|
|
2558
|
+
showReadout?: boolean;
|
|
2559
|
+
className?: string;
|
|
2560
|
+
}
|
|
2561
|
+
|
|
2562
|
+
export declare function Popover({ ...props }: React_2.ComponentProps<typeof Popover_2.Root>): JSX.Element;
|
|
2563
|
+
|
|
2564
|
+
export declare function PopoverAnchor({ ...props }: React_2.ComponentProps<typeof Popover_2.Anchor>): JSX.Element;
|
|
2565
|
+
|
|
2566
|
+
export declare function PopoverContent({ className, align, sideOffset, ...props }: React_2.ComponentProps<typeof Popover_2.Content>): JSX.Element;
|
|
2567
|
+
|
|
2568
|
+
export declare function PopoverTrigger({ ...props }: React_2.ComponentProps<typeof Popover_2.Trigger>): JSX.Element;
|
|
2569
|
+
|
|
2570
|
+
export declare function pos(row: number, col: number, columns: number): WellId;
|
|
2571
|
+
|
|
2212
2572
|
export declare const PromptInput: ({ className, accept, multiple, globalDrop, syncHiddenInput, maxFiles, maxFileSize, onError, onSubmit, children, ...props }: PromptInputProps) => JSX.Element;
|
|
2213
2573
|
|
|
2214
2574
|
export declare const PromptInputActionAddAttachments: ({ label, ...props }: PromptInputActionAddAttachmentsProps) => JSX.Element;
|
|
@@ -2541,6 +2901,8 @@ export declare type ReasoningTriggerProps = ComponentProps<typeof CollapsibleTri
|
|
|
2541
2901
|
getThinkingMessage?: (isStreaming: boolean, duration?: number) => ReactNode;
|
|
2542
2902
|
};
|
|
2543
2903
|
|
|
2904
|
+
export declare function rectPositions(r0: number, c0: number, r1: number, c1: number, columns: number): WellId[];
|
|
2905
|
+
|
|
2544
2906
|
export declare interface ReferencedSourcesContext {
|
|
2545
2907
|
sources: (SourceDocumentUIPart & {
|
|
2546
2908
|
id: string;
|
|
@@ -2558,6 +2920,8 @@ export declare function ResizablePanel({ ...props }: ResizablePrimitive.PanelPro
|
|
|
2558
2920
|
|
|
2559
2921
|
export declare function ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps): JSX.Element;
|
|
2560
2922
|
|
|
2923
|
+
export declare function resolveDimensions(format: PlateFormat, rows?: number, columns?: number): PlateDimensions;
|
|
2924
|
+
|
|
2561
2925
|
export declare function RichListItem({ leading, primary, secondary, trailing, actions, className, variant, size, ...props }: RichListItemProps): JSX.Element;
|
|
2562
2926
|
|
|
2563
2927
|
export declare function RichListItemAvatar({ initials, className, fallbackClassName, size, ...props }: RichListItemAvatarProps): JSX.Element;
|
|
@@ -2580,6 +2944,9 @@ export declare interface RichListItemProps extends Omit<React_2.ComponentProps<t
|
|
|
2580
2944
|
actions?: React_2.ReactNode;
|
|
2581
2945
|
}
|
|
2582
2946
|
|
|
2947
|
+
/** Letter for a row index. Supports A-Z then AA-ZZ for 1536-format plates. */
|
|
2948
|
+
export declare function rowLabel(row: number): string;
|
|
2949
|
+
|
|
2583
2950
|
export declare interface ScatterDataPoint {
|
|
2584
2951
|
x: number;
|
|
2585
2952
|
y: number;
|
|
@@ -3143,6 +3510,30 @@ export declare interface TdpSearchSort {
|
|
|
3143
3510
|
order: "asc" | "desc";
|
|
3144
3511
|
}
|
|
3145
3512
|
|
|
3513
|
+
export declare function TemplateIOPanel({ templates, templateId, onTemplateChange, onClearTemplate, hasEntries, onImportCsv, onExportCsv, onImportTemplate, onExportTemplate, className, csvAccept, templateAccept, }: TemplateIOPanelProps): JSX.Element;
|
|
3514
|
+
|
|
3515
|
+
export declare interface TemplateIOPanelProps extends ImportExportHandlers {
|
|
3516
|
+
templates?: TemplateOption[];
|
|
3517
|
+
templateId?: string;
|
|
3518
|
+
onTemplateChange?: (id: string) => void;
|
|
3519
|
+
onClearTemplate?: () => void;
|
|
3520
|
+
/** Disable export buttons when there's nothing to export. */
|
|
3521
|
+
hasEntries?: boolean;
|
|
3522
|
+
className?: string;
|
|
3523
|
+
csvAccept?: string;
|
|
3524
|
+
templateAccept?: string;
|
|
3525
|
+
}
|
|
3526
|
+
|
|
3527
|
+
export declare interface TemplateOption {
|
|
3528
|
+
id: string;
|
|
3529
|
+
label: string;
|
|
3530
|
+
/** Optional group header in the dropdown (e.g. "Built-in", "User"). */
|
|
3531
|
+
group?: string;
|
|
3532
|
+
/** Optional supporting text for richer chooser menus. */
|
|
3533
|
+
description?: string;
|
|
3534
|
+
disabled?: boolean;
|
|
3535
|
+
}
|
|
3536
|
+
|
|
3146
3537
|
export declare const TetraScienceIcon: React_2.ForwardRefExoticComponent<Omit<TetraScienceIconProps, "ref"> & React_2.RefAttributes<SVGSVGElement>>;
|
|
3147
3538
|
|
|
3148
3539
|
export declare interface TetraScienceIconProps extends React_2.SVGProps<SVGSVGElement> {
|
|
@@ -3259,6 +3650,10 @@ declare type ToolUIPartApproval = {
|
|
|
3259
3650
|
reason?: string;
|
|
3260
3651
|
} | undefined;
|
|
3261
3652
|
|
|
3653
|
+
export declare function triagePlateMapCsvByBarcode(text: string, options?: PlateMapCsvTriageOptions): PlateMapCsvTriage;
|
|
3654
|
+
|
|
3655
|
+
export declare function triagePlateMapCsvFile(file: File, options?: PlateMapCsvTriageOptions): Promise<PlateMapCsvTriage | undefined>;
|
|
3656
|
+
|
|
3262
3657
|
/** TetraScience brand gradient — Light Blue 300 → Purple 500 → Violet Marble */
|
|
3263
3658
|
export declare const TS_SHIMMER_GRADIENT = "linear-gradient(90deg, #549DFF, #8243BA, #9665F4)";
|
|
3264
3659
|
|
|
@@ -3359,6 +3754,27 @@ export declare interface UseTdpNavigationReturn {
|
|
|
3359
3754
|
*/
|
|
3360
3755
|
declare type VisualizationMode = "heatmap" | "categorical";
|
|
3361
3756
|
|
|
3757
|
+
export declare interface WellColumn<T extends WellRecord = WellRecord> {
|
|
3758
|
+
/** Stable id; falls back to `field` if omitted. */
|
|
3759
|
+
id?: string;
|
|
3760
|
+
header: string;
|
|
3761
|
+
/** Optional leading icon in the table header. */
|
|
3762
|
+
icon?: React_2.ReactNode;
|
|
3763
|
+
/** Read direct property when `field` is set. */
|
|
3764
|
+
field?: keyof T & string;
|
|
3765
|
+
/** Min width in px (applied via inline style). */
|
|
3766
|
+
minWidth?: number;
|
|
3767
|
+
/**
|
|
3768
|
+
* Cell renderer. If omitted, the cell renders a display value. `select`
|
|
3769
|
+
* fields render as badge-style custom cells using the matching option label.
|
|
3770
|
+
*/
|
|
3771
|
+
render?: (ctx: {
|
|
3772
|
+
row: T;
|
|
3773
|
+
wellId: WellId;
|
|
3774
|
+
update: (patch: Partial<T>) => void;
|
|
3775
|
+
}) => React_2.ReactNode;
|
|
3776
|
+
}
|
|
3777
|
+
|
|
3362
3778
|
/**
|
|
3363
3779
|
* Well data for individual wells.
|
|
3364
3780
|
*
|
|
@@ -3414,6 +3830,145 @@ export declare interface WellData {
|
|
|
3414
3830
|
tooltipData?: Record<string, unknown>;
|
|
3415
3831
|
}
|
|
3416
3832
|
|
|
3833
|
+
export declare interface WellField<T extends WellRecord = WellRecord> {
|
|
3834
|
+
/** Key in the well record this field reads/writes. */
|
|
3835
|
+
key: keyof T & string;
|
|
3836
|
+
label: string;
|
|
3837
|
+
/** Optional leading icon shown in form labels and matching table headers. */
|
|
3838
|
+
icon?: React_2.ReactNode;
|
|
3839
|
+
kind: WellFieldKind;
|
|
3840
|
+
placeholder?: string;
|
|
3841
|
+
/** Required for `kind: "select"` and `kind: "multiselect"`. */
|
|
3842
|
+
options?: WellSelectOption[];
|
|
3843
|
+
/** Visual style for `kind: "boolean"`. Defaults to `"checkbox"`. */
|
|
3844
|
+
boolStyle?: "checkbox" | "switch";
|
|
3845
|
+
/**
|
|
3846
|
+
* When true, matching `WellManifestTable` cells render an inline editor of
|
|
3847
|
+
* this field's `kind` (mirroring the form). Defaults to false — cells stay
|
|
3848
|
+
* read-only unless the developer opts in or supplies `WellColumn.render`.
|
|
3849
|
+
*/
|
|
3850
|
+
editableInTable?: boolean;
|
|
3851
|
+
/**
|
|
3852
|
+
* Custom renderer for the form input. Receives current value and a setter
|
|
3853
|
+
* that patches the field on the staged form record.
|
|
3854
|
+
*/
|
|
3855
|
+
render?: (ctx: {
|
|
3856
|
+
value: unknown;
|
|
3857
|
+
onChange: (next: unknown) => void;
|
|
3858
|
+
selectionSize: number;
|
|
3859
|
+
}) => React_2.ReactNode;
|
|
3860
|
+
}
|
|
3861
|
+
|
|
3862
|
+
/**
|
|
3863
|
+
* Field kinds rendered by `WellMetadataForm` and (when `editableInTable`) by
|
|
3864
|
+
* `WellManifestTable`.
|
|
3865
|
+
*/
|
|
3866
|
+
export declare type WellFieldKind = "text" | "number" | "integer" | "boolean" | "date" | "datetime" | "time" | "select" | "multiselect" | "custom";
|
|
3867
|
+
|
|
3868
|
+
export declare type WellId = string;
|
|
3869
|
+
|
|
3870
|
+
export declare function WellLegend({ items, renderItem, onHoverEnter, onHoverLeave, onRemove, removeLabel, emptyLabel, className, }: WellLegendProps): JSX.Element;
|
|
3871
|
+
|
|
3872
|
+
export declare interface WellLegendItem {
|
|
3873
|
+
id: string;
|
|
3874
|
+
label: React_2.ReactNode;
|
|
3875
|
+
color: string;
|
|
3876
|
+
/** Optional secondary text shown beneath the label. */
|
|
3877
|
+
meta?: React_2.ReactNode;
|
|
3878
|
+
disabled?: boolean;
|
|
3879
|
+
}
|
|
3880
|
+
|
|
3881
|
+
export declare interface WellLegendProps {
|
|
3882
|
+
items: WellLegendItem[];
|
|
3883
|
+
/** Render-prop for fully custom cards. Bypasses the default card layout. */
|
|
3884
|
+
renderItem?: (item: WellLegendItem) => React_2.ReactNode;
|
|
3885
|
+
onHoverEnter?: (id: string) => void;
|
|
3886
|
+
onHoverLeave?: (id: string) => void;
|
|
3887
|
+
onRemove?: (id: string) => void;
|
|
3888
|
+
removeLabel?: string;
|
|
3889
|
+
emptyLabel?: string;
|
|
3890
|
+
className?: string;
|
|
3891
|
+
}
|
|
3892
|
+
|
|
3893
|
+
export declare function WellManifestTable<T extends WellRecord = WellRecord>({ values, columns, fields, selection, onSelectionChange, onChange, emptyEntry, isPopulated, pageSize: initialPageSize, pageSizeOptions, enableFillDown, rowProps, filterable, filterColumns, groupable, className, }: WellManifestTableProps<T>): JSX.Element;
|
|
3894
|
+
|
|
3895
|
+
export declare interface WellManifestTableProps<T extends WellRecord = WellRecord> {
|
|
3896
|
+
values: Map<WellId, T>;
|
|
3897
|
+
columns: WellColumn<T>[];
|
|
3898
|
+
/**
|
|
3899
|
+
* Field schema. If a column has `field` matching a `select`-kind field, a
|
|
3900
|
+
* Select cell renders automatically with that field's options.
|
|
3901
|
+
*/
|
|
3902
|
+
fields?: WellField<T>[];
|
|
3903
|
+
selection?: Set<WellId>;
|
|
3904
|
+
onSelectionChange?: (next: Set<WellId>) => void;
|
|
3905
|
+
onChange: (next: Map<WellId, T>) => void;
|
|
3906
|
+
/** Builds an empty record for a freshly-created row. */
|
|
3907
|
+
emptyEntry: (id: WellId) => T;
|
|
3908
|
+
/** Filter that controls which empty rows surface. Defaults to `false`. */
|
|
3909
|
+
isPopulated?: (row: T) => boolean;
|
|
3910
|
+
pageSize?: number;
|
|
3911
|
+
pageSizeOptions?: number[];
|
|
3912
|
+
/** Adds a column header action that copies the first non-empty value downward. */
|
|
3913
|
+
enableFillDown?: boolean;
|
|
3914
|
+
/**
|
|
3915
|
+
* Extra props spread onto each `<tr>` — typically used to attach a DnD
|
|
3916
|
+
* library's `setNodeRef`, listeners, and data attributes so rows can act as
|
|
3917
|
+
* drag sources. The kit stays DnD-library-agnostic.
|
|
3918
|
+
*/
|
|
3919
|
+
rowProps?: (ctx: WellManifestTableRowContext<T>) => React_2.ComponentProps<"tr"> | undefined;
|
|
3920
|
+
/** Enables an inline filter popover above the table. Defaults to false. */
|
|
3921
|
+
filterable?: boolean;
|
|
3922
|
+
/**
|
|
3923
|
+
* Optional override of filterable column configs. When omitted, every column
|
|
3924
|
+
* with a `field` becomes filterable using the default operator set from the
|
|
3925
|
+
* shared data-table filter system.
|
|
3926
|
+
*/
|
|
3927
|
+
filterColumns?: FilterColumnConfig[];
|
|
3928
|
+
/** Enables an inline group-by selector. Defaults to false. */
|
|
3929
|
+
groupable?: boolean;
|
|
3930
|
+
className?: string;
|
|
3931
|
+
}
|
|
3932
|
+
|
|
3933
|
+
export declare interface WellManifestTableRowContext<T extends WellRecord = WellRecord> {
|
|
3934
|
+
wellId: WellId;
|
|
3935
|
+
row: T;
|
|
3936
|
+
isSelected: boolean;
|
|
3937
|
+
}
|
|
3938
|
+
|
|
3939
|
+
export declare function WellMetadataForm<T extends WellRecord = WellRecord>({ fields, value, onChange, selectionSize, onApply, onClear, applyLabel, clearLabel, extras, className, }: WellMetadataFormProps<T>): JSX.Element;
|
|
3940
|
+
|
|
3941
|
+
export declare interface WellMetadataFormProps<T extends WellRecord = WellRecord> {
|
|
3942
|
+
fields: WellField<T>[];
|
|
3943
|
+
/** Staged values used to apply across the selection. */
|
|
3944
|
+
value: Partial<T>;
|
|
3945
|
+
onChange: (next: Partial<T>) => void;
|
|
3946
|
+
selectionSize: number;
|
|
3947
|
+
onApply: () => void;
|
|
3948
|
+
onClear: () => void;
|
|
3949
|
+
applyLabel?: string;
|
|
3950
|
+
clearLabel?: string;
|
|
3951
|
+
/** Optional extra slot rendered between fields and action row. */
|
|
3952
|
+
extras?: React_2.ReactNode;
|
|
3953
|
+
className?: string;
|
|
3954
|
+
}
|
|
3955
|
+
|
|
3956
|
+
/**
|
|
3957
|
+
* Generic per-well record. Callers supply concrete shape via the `T` generic
|
|
3958
|
+
* on `PlateMapEditor`. Permissive base accepts both interfaces and indexable
|
|
3959
|
+
* record types.
|
|
3960
|
+
*/
|
|
3961
|
+
export declare type WellRecord = NonNullable<unknown>;
|
|
3962
|
+
|
|
3963
|
+
export declare interface WellSelectOption {
|
|
3964
|
+
value: string;
|
|
3965
|
+
label: string;
|
|
3966
|
+
/** Optional swatch color shown next to the label. */
|
|
3967
|
+
swatch?: string;
|
|
3968
|
+
}
|
|
3969
|
+
|
|
3970
|
+
export declare type WellShape = "rect" | "circle";
|
|
3971
|
+
|
|
3417
3972
|
export { }
|
|
3418
3973
|
|
|
3419
3974
|
|