@morscherlab/mint-sdk 1.0.0-rc.4 → 1.0.0-rc.5
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/__tests__/components/AppTopBar.navigation.test.d.ts +1 -0
- package/dist/__tests__/components/DoseCalculatorVolumeField.test.d.ts +1 -0
- package/dist/__tests__/components/PlateMapEditorToolbarInternal.test.d.ts +1 -0
- package/dist/__tests__/components/PluginWorkspaceView.controls.test.d.ts +1 -0
- package/dist/__tests__/components/PluginWorkspaceView.navigation.test.d.ts +1 -0
- package/dist/__tests__/components/PluginWorkspaceView.shell.test.d.ts +1 -0
- package/dist/__tests__/components/ProtocolStep.presentation.test.d.ts +1 -0
- package/dist/__tests__/components/ProtocolStepEditor.state.test.d.ts +1 -0
- package/dist/__tests__/components/ProtocolStepParameterField.test.d.ts +1 -0
- package/dist/__tests__/components/ReagentList.presentation.test.d.ts +1 -0
- package/dist/__tests__/components/SampleSelector.colors.test.d.ts +1 -0
- package/dist/__tests__/components/SampleSelector.drag.test.d.ts +1 -0
- package/dist/__tests__/components/SampleSelector.groups.test.d.ts +1 -0
- package/dist/__tests__/components/SampleSelector.selection.test.d.ts +1 -0
- package/dist/__tests__/components/SampleSelectorSampleRow.test.d.ts +1 -0
- package/dist/__tests__/components/ScheduleCalendar.test.d.ts +1 -0
- package/dist/__tests__/components/SettingsModal.schema.test.d.ts +1 -0
- package/dist/__tests__/components/WellPlate.colors.test.d.ts +1 -0
- package/dist/__tests__/components/WellPlate.conditions.test.d.ts +1 -0
- package/dist/__tests__/components/WellPlate.geometry.test.d.ts +1 -0
- package/dist/__tests__/components/WellPlate.interaction.test.d.ts +1 -0
- package/dist/__tests__/components/WellPlate.legend.test.d.ts +1 -0
- package/dist/__tests__/components/WellPlate.rendering.test.d.ts +1 -0
- package/dist/__tests__/components/WellPlate.sampleDrop.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/classify.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/columns.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/compose.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/cooccurrence.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/fingerprint.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/integration.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/template.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/tokenize.test.d.ts +1 -0
- package/dist/__tests__/composables/useAutoGroupInputSources.test.d.ts +1 -0
- package/dist/__tests__/composables/useScheduleCalendarLayout.test.d.ts +1 -0
- package/dist/__tests__/docs/extractDocsComponents.test.d.ts +1 -0
- package/dist/__tests__/docs/extractDocsExports.test.d.ts +1 -0
- package/dist/__tests__/docs/extractDocsParsing.test.d.ts +1 -0
- package/dist/__tests__/docs/extractDocsTemplates.test.d.ts +1 -0
- package/dist/__tests__/docs/extractDocsTheme.test.d.ts +1 -0
- package/dist/components/AppSidebar.vue.d.ts +3 -3
- package/dist/components/AppTopBar.navigation.d.ts +11 -0
- package/dist/components/BaseButton.vue.d.ts +1 -1
- package/dist/components/BaseCheckbox.vue.d.ts +1 -1
- package/dist/components/BaseInput.vue.d.ts +2 -2
- package/dist/components/BasePill.vue.d.ts +1 -1
- package/dist/components/BaseRadioGroup.vue.d.ts +1 -1
- package/dist/components/BaseSelect.vue.d.ts +1 -1
- package/dist/components/BaseSlider.vue.d.ts +2 -2
- package/dist/components/BaseTextarea.vue.d.ts +2 -2
- package/dist/components/BaseToggle.vue.d.ts +1 -1
- package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +2 -2
- package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +1 -1
- package/dist/components/ColorSlider.vue.d.ts +2 -2
- package/dist/components/ConcentrationInput.vue.d.ts +2 -2
- package/dist/components/ControlWorkspaceView.vue.d.ts +3 -3
- package/dist/components/DatePicker.vue.d.ts +1 -1
- package/dist/components/DateTimePicker.vue.d.ts +2 -2
- package/dist/components/DoseCalculatorVolumeField.vue.d.ts +15 -0
- package/dist/components/DoseDesignWorkspaceView.vue.d.ts +1 -1
- package/dist/components/DropdownButton.vue.d.ts +1 -1
- package/dist/components/FileUploader.vue.d.ts +2 -2
- package/dist/components/FormulaInput.vue.d.ts +2 -2
- package/dist/components/IconButton.vue.d.ts +1 -1
- package/dist/components/LoadingSpinner.vue.d.ts +1 -1
- package/dist/components/MoleculeInput.vue.d.ts +2 -2
- package/dist/components/MultiSelect.vue.d.ts +1 -1
- package/dist/components/NumberInput.vue.d.ts +1 -1
- package/dist/components/PlateMapEditor.vue.d.ts +6 -6
- package/dist/components/PluginWorkspaceView.controls.d.ts +28 -0
- package/dist/components/PluginWorkspaceView.navigation.d.ts +29 -0
- package/dist/components/PluginWorkspaceView.props.d.ts +151 -0
- package/dist/components/PluginWorkspaceView.shell.d.ts +19 -0
- package/dist/components/PluginWorkspaceView.vue.d.ts +46 -195
- package/dist/components/ProgressBar.vue.d.ts +1 -1
- package/dist/components/ProtocolStep.presentation.d.ts +4 -0
- package/dist/components/ProtocolStepEditor.state.d.ts +18 -0
- package/dist/components/ProtocolStepParameterField.vue.d.ts +12 -0
- package/dist/components/ReagentList.presentation.d.ts +16 -0
- package/dist/components/ResourceCard.vue.d.ts +1 -1
- package/dist/components/SampleSelector.colors.d.ts +13 -0
- package/dist/components/SampleSelector.drag.d.ts +24 -0
- package/dist/components/SampleSelector.groups.d.ts +15 -0
- package/dist/components/SampleSelector.selection.d.ts +26 -0
- package/dist/components/SampleSelector.vue.d.ts +4 -1
- package/dist/components/SampleSelectorSampleRow.vue.d.ts +21 -0
- package/dist/components/SegmentedControl.vue.d.ts +1 -1
- package/dist/components/SequenceInput.vue.d.ts +2 -2
- package/dist/components/SequenceProgressBar.vue.d.ts +1 -1
- package/dist/components/SettingsModal.schema.d.ts +9 -0
- package/dist/components/StatusIndicator.vue.d.ts +1 -1
- package/dist/components/TagsInput.vue.d.ts +2 -2
- package/dist/components/TimePicker.vue.d.ts +2 -2
- package/dist/components/TimeRangeInput.vue.d.ts +1 -1
- package/dist/components/UnitInput.vue.d.ts +2 -2
- package/dist/components/WellPlate.colors.d.ts +9 -0
- package/dist/components/WellPlate.conditions.d.ts +26 -0
- package/dist/components/WellPlate.geometry.d.ts +23 -0
- package/dist/components/WellPlate.interaction.d.ts +71 -0
- package/dist/components/WellPlate.legend.d.ts +2 -0
- package/dist/components/WellPlate.rendering.d.ts +24 -0
- package/dist/components/WellPlate.sampleDrop.d.ts +8 -0
- package/dist/components/WellPlate.vue.d.ts +1 -1
- package/dist/components/index.js +2 -2
- package/dist/components/internal/ActionItemInternal.vue.d.ts +1 -1
- package/dist/components/internal/PlateMapEditorToolbarInternal.vue.d.ts +28 -0
- package/dist/{components-DafPc4rM.js → components-DtHA2bgp.js} +3754 -2991
- package/dist/components-DtHA2bgp.js.map +1 -0
- package/dist/composables/autoGroup/classKey.d.ts +4 -0
- package/dist/composables/autoGroup/classify.d.ts +28 -0
- package/dist/composables/autoGroup/colors.d.ts +2 -0
- package/dist/composables/autoGroup/columns.d.ts +10 -0
- package/dist/composables/autoGroup/compose.d.ts +8 -0
- package/dist/composables/autoGroup/cooccurrence.d.ts +2 -0
- package/dist/composables/autoGroup/csv-shim.d.ts +2 -0
- package/dist/composables/autoGroup/fingerprint.d.ts +3 -0
- package/dist/composables/autoGroup/index.d.ts +16 -0
- package/dist/composables/autoGroup/replicatePreGroup.d.ts +38 -0
- package/dist/composables/autoGroup/template.d.ts +15 -0
- package/dist/composables/autoGroup/tokenize.d.ts +8 -0
- package/dist/composables/autoGroupConstants.d.ts +1 -0
- package/dist/composables/autoGroupGrouping.d.ts +3 -0
- package/dist/composables/controlComponentBindings.d.ts +1 -1
- package/dist/composables/controlSchemaAdapters.d.ts +1 -1
- package/dist/composables/controlSchemaDoseDesign.d.ts +11 -0
- package/dist/composables/controlSchemaLayout.d.ts +1 -1
- package/dist/composables/controlSchemaModel.d.ts +5 -0
- package/dist/composables/controlSchemaNormalize.d.ts +1 -1
- package/dist/composables/controlSchemaTypes.d.ts +305 -0
- package/dist/composables/controlWorkspaceOptions.d.ts +1 -1
- package/dist/composables/formBuilderSchema.d.ts +18 -0
- package/dist/composables/index.js +3 -3
- package/dist/composables/pluginEndpointBuilder.d.ts +13 -0
- package/dist/composables/protocolTemplateCatalog.d.ts +26 -0
- package/dist/composables/useAutoGroup.d.ts +61 -74
- package/dist/composables/useAutoGroupInputSources.d.ts +32 -0
- package/dist/composables/useBioTemplateControls.d.ts +1 -1
- package/dist/composables/useBioTemplatePresetWorkspace.d.ts +1 -1
- package/dist/composables/useBioTemplateWorkspace.d.ts +1 -1
- package/dist/composables/useControlSchema.d.ts +4 -316
- package/dist/composables/useControlWorkspace.d.ts +1 -1
- package/dist/composables/useForm.d.ts +2 -33
- package/dist/composables/useFormBuilder.d.ts +2 -9
- package/dist/composables/useFormValidation.d.ts +34 -0
- package/dist/composables/usePluginClient.d.ts +1 -4
- package/dist/composables/useProtocolTemplates.d.ts +2 -24
- package/dist/composables/useScheduleCalendarLayout.d.ts +49 -0
- package/dist/{composables-BMkPQhVK.js → composables-Dlg8jenH.js} +33 -31
- package/dist/composables-Dlg8jenH.js.map +1 -0
- package/dist/index.js +4 -4
- package/dist/install.js +2 -2
- package/dist/styles.css +547 -516
- package/dist/templates/controlSchemaTypes.d.ts +1 -1
- package/dist/templates/index.js +1 -1
- package/dist/templates/templateAdapterTypes.d.ts +48 -0
- package/dist/templates/templateCreateOptions.d.ts +165 -0
- package/dist/templates/templateQpcrTypes.d.ts +42 -0
- package/dist/templates/types.d.ts +5 -250
- package/dist/{templates-bUAWMn5L.js → templates-DtdUvJ4c.js} +144 -136
- package/dist/templates-DtdUvJ4c.js.map +1 -0
- package/dist/types/auto-group.d.ts +79 -9
- package/dist/types/componentLabTypes.d.ts +161 -0
- package/dist/types/componentWorkflowTypes.d.ts +150 -0
- package/dist/types/components.d.ts +2 -311
- package/dist/{useProtocolTemplates-QZtHFFH2.js → useProtocolTemplates-Bm5vyH4_.js} +1220 -454
- package/dist/useProtocolTemplates-Bm5vyH4_.js.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/components/AppTopBar.navigation.test.ts +70 -0
- package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +53 -0
- package/src/__tests__/components/PlateMapEditorToolbarInternal.test.ts +54 -0
- package/src/__tests__/components/PluginWorkspaceView.controls.test.ts +156 -0
- package/src/__tests__/components/PluginWorkspaceView.navigation.test.ts +102 -0
- package/src/__tests__/components/PluginWorkspaceView.shell.test.ts +41 -0
- package/src/__tests__/components/ProtocolStep.presentation.test.ts +31 -0
- package/src/__tests__/components/ProtocolStepEditor.state.test.ts +165 -0
- package/src/__tests__/components/ProtocolStepParameterField.test.ts +44 -0
- package/src/__tests__/components/ReagentList.presentation.test.ts +68 -0
- package/src/__tests__/components/SampleSelector.colors.test.ts +49 -0
- package/src/__tests__/components/SampleSelector.drag.test.ts +100 -0
- package/src/__tests__/components/SampleSelector.groups.test.ts +81 -0
- package/src/__tests__/components/SampleSelector.selection.test.ts +70 -0
- package/src/__tests__/components/SampleSelector.test.ts +32 -0
- package/src/__tests__/components/SampleSelectorSampleRow.test.ts +37 -0
- package/src/__tests__/components/ScheduleCalendar.test.ts +44 -0
- package/src/__tests__/components/SettingsModal.schema.test.ts +97 -0
- package/src/__tests__/components/WellPlate.colors.test.ts +28 -0
- package/src/__tests__/components/WellPlate.conditions.test.ts +68 -0
- package/src/__tests__/components/WellPlate.geometry.test.ts +54 -0
- package/src/__tests__/components/WellPlate.interaction.test.ts +171 -0
- package/src/__tests__/components/WellPlate.legend.test.ts +13 -0
- package/src/__tests__/components/WellPlate.rendering.test.ts +122 -0
- package/src/__tests__/components/WellPlate.sampleDrop.test.ts +70 -0
- package/src/__tests__/composables/autoGroup/classify.test.ts +107 -0
- package/src/__tests__/composables/autoGroup/columns.test.ts +135 -0
- package/src/__tests__/composables/autoGroup/compose.test.ts +227 -0
- package/src/__tests__/composables/autoGroup/cooccurrence.test.ts +91 -0
- package/src/__tests__/composables/autoGroup/fingerprint.test.ts +50 -0
- package/src/__tests__/composables/autoGroup/integration.test.ts +79 -0
- package/src/__tests__/composables/autoGroup/template.test.ts +70 -0
- package/src/__tests__/composables/autoGroup/tokenize.test.ts +33 -0
- package/src/__tests__/composables/useAutoGroup.test.ts +129 -625
- package/src/__tests__/composables/useAutoGroupInputSources.test.ts +107 -0
- package/src/__tests__/composables/useControlSchema.test.ts +23 -0
- package/src/__tests__/composables/useScheduleCalendarLayout.test.ts +89 -0
- package/src/__tests__/docs/extractDocsComponents.test.ts +142 -0
- package/src/__tests__/docs/extractDocsExports.test.ts +77 -0
- package/src/__tests__/docs/extractDocsParsing.test.ts +69 -0
- package/src/__tests__/docs/extractDocsTemplates.test.ts +54 -0
- package/src/__tests__/docs/extractDocsTheme.test.ts +89 -0
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +1 -1
- package/src/__tests__/fixtures/auto-group/mixed-lc-ms-batch.txt +187 -0
- package/src/components/AppSidebar.vue +2 -6
- package/src/components/AppTopBar.navigation.ts +62 -0
- package/src/components/AppTopBar.vue +17 -44
- package/src/components/AutoGroupModal.story.vue +50 -0
- package/src/components/AutoGroupModal.vue +441 -158
- package/src/components/ControlWorkspaceView.vue +2 -6
- package/src/components/DoseCalculator.vue +13 -73
- package/src/components/DoseCalculatorVolumeField.vue +61 -0
- package/src/components/ExperimentTimeline.vue +6 -31
- package/src/components/FormBuilder.vue +2 -7
- package/src/components/PlateMapEditor.vue +32 -106
- package/src/components/PluginWorkspaceView.controls.ts +182 -0
- package/src/components/PluginWorkspaceView.navigation.ts +106 -0
- package/src/components/PluginWorkspaceView.props.ts +174 -0
- package/src/components/PluginWorkspaceView.shell.ts +66 -0
- package/src/components/PluginWorkspaceView.vue +85 -404
- package/src/components/ProtocolStep.presentation.ts +31 -0
- package/src/components/ProtocolStepEditor.state.ts +104 -0
- package/src/components/ProtocolStepEditor.vue +48 -179
- package/src/components/ProtocolStepParameterField.vue +134 -0
- package/src/components/ReagentList.presentation.ts +105 -0
- package/src/components/ReagentList.vue +16 -79
- package/src/components/SampleSelector.colors.ts +43 -0
- package/src/components/SampleSelector.drag.ts +164 -0
- package/src/components/SampleSelector.groups.ts +109 -0
- package/src/components/SampleSelector.selection.ts +103 -0
- package/src/components/SampleSelector.vue +82 -349
- package/src/components/SampleSelectorSampleRow.vue +64 -0
- package/src/components/ScheduleCalendar.vue +44 -199
- package/src/components/SettingsModal.schema.ts +71 -0
- package/src/components/SettingsModal.vue +16 -46
- package/src/components/WellPlate.colors.ts +56 -0
- package/src/components/WellPlate.conditions.ts +100 -0
- package/src/components/WellPlate.geometry.ts +91 -0
- package/src/components/WellPlate.interaction.ts +272 -0
- package/src/components/WellPlate.legend.ts +8 -0
- package/src/components/WellPlate.rendering.ts +105 -0
- package/src/components/WellPlate.sampleDrop.ts +73 -0
- package/src/components/WellPlate.vue +102 -550
- package/src/components/internal/PlateMapEditorToolbarInternal.vue +128 -0
- package/src/composables/autoGroup/classKey.ts +5 -0
- package/src/composables/autoGroup/classify.ts +205 -0
- package/src/composables/autoGroup/colors.ts +6 -0
- package/src/composables/autoGroup/columns.ts +226 -0
- package/src/composables/autoGroup/compose.ts +156 -0
- package/src/composables/autoGroup/cooccurrence.ts +46 -0
- package/src/composables/autoGroup/csv-shim.ts +44 -0
- package/src/composables/autoGroup/fingerprint.ts +49 -0
- package/src/composables/autoGroup/index.ts +20 -0
- package/src/composables/autoGroup/replicatePreGroup.ts +90 -0
- package/src/composables/autoGroup/template.ts +126 -0
- package/src/composables/autoGroup/tokenize.ts +41 -0
- package/src/composables/autoGroup/vocab.json +67 -0
- package/src/composables/autoGroupConstants.ts +4 -0
- package/src/composables/autoGroupGrouping.ts +148 -0
- package/src/composables/controlComponentBindings.ts +1 -1
- package/src/composables/controlSchemaAdapters.ts +1 -1
- package/src/composables/controlSchemaDoseDesign.ts +215 -0
- package/src/composables/controlSchemaFormFields.ts +1 -1
- package/src/composables/controlSchemaLayout.ts +1 -1
- package/src/composables/controlSchemaModel.ts +163 -0
- package/src/composables/controlSchemaNormalize.ts +1 -1
- package/src/composables/controlSchemaTypes.ts +364 -0
- package/src/composables/controlWorkspaceOptions.ts +1 -1
- package/src/composables/formBuilderSchema.ts +153 -0
- package/src/composables/pluginEndpointBuilder.ts +203 -0
- package/src/composables/protocolTemplateCatalog.ts +325 -0
- package/src/composables/useAutoGroup.ts +395 -549
- package/src/composables/useAutoGroupInputSources.ts +147 -0
- package/src/composables/useBioTemplateControls.ts +1 -1
- package/src/composables/useBioTemplatePresetWorkspace.ts +1 -1
- package/src/composables/useBioTemplateWorkspace.ts +1 -1
- package/src/composables/useControlSchema.ts +21 -692
- package/src/composables/useControlWorkspace.ts +7 -13
- package/src/composables/useForm.ts +5 -187
- package/src/composables/useFormBuilder.ts +11 -153
- package/src/composables/useFormValidation.ts +154 -0
- package/src/composables/usePluginClient.ts +10 -193
- package/src/composables/useProtocolTemplates.ts +10 -328
- package/src/composables/useScheduleCalendarLayout.ts +287 -0
- package/src/styles/components/auto-group-modal.css +248 -310
- package/src/templates/controlSchemaTypes.ts +1 -1
- package/src/templates/templateAdapterTypes.ts +58 -0
- package/src/templates/templateCreateOptions.ts +208 -0
- package/src/templates/templateQpcrTypes.ts +48 -0
- package/src/templates/types.ts +79 -275
- package/src/types/auto-group.ts +107 -9
- package/src/types/componentLabTypes.ts +235 -0
- package/src/types/componentWorkflowTypes.ts +190 -0
- package/src/types/components.ts +74 -424
- package/dist/components-DafPc4rM.js.map +0 -1
- package/dist/composables-BMkPQhVK.js.map +0 -1
- package/dist/templates-bUAWMn5L.js.map +0 -1
- package/dist/useProtocolTemplates-QZtHFFH2.js.map +0 -1
package/src/types/auto-group.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SampleGroup } from './components'
|
|
2
2
|
|
|
3
|
+
// ---- Legacy (kept for source-compatibility) ----
|
|
3
4
|
export type OutlierAction = 'include' | 'exclude' | 'qc'
|
|
4
5
|
export type InputMode = 'paste' | 'csv' | 'experiment'
|
|
5
6
|
|
|
@@ -10,31 +11,128 @@ export interface OutlierInfo {
|
|
|
10
11
|
action: OutlierAction
|
|
11
12
|
}
|
|
12
13
|
|
|
14
|
+
export interface MetadataRow {
|
|
15
|
+
sampleName: string
|
|
16
|
+
fields: Record<string, string>
|
|
17
|
+
group: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ParsedCsvData {
|
|
21
|
+
columns: string[]
|
|
22
|
+
rows: Record<string, string>[]
|
|
23
|
+
sampleColumn: string
|
|
24
|
+
delimiter: string
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// ---- Class detection ----
|
|
28
|
+
|
|
29
|
+
export type SampleClassKind =
|
|
30
|
+
| 'biological'
|
|
31
|
+
| 'iqc'
|
|
32
|
+
| 'eqc'
|
|
33
|
+
| 'standard'
|
|
34
|
+
| 'spike-in'
|
|
35
|
+
| 'stock'
|
|
36
|
+
| 'blank'
|
|
37
|
+
| 'unknown'
|
|
38
|
+
|
|
39
|
+
export type ClassDisposition = 'group' | 'overlay' | 'exclude'
|
|
40
|
+
|
|
41
|
+
export interface SampleClass {
|
|
42
|
+
kind: SampleClassKind
|
|
43
|
+
label: string
|
|
44
|
+
subKind?: string
|
|
45
|
+
members: number[]
|
|
46
|
+
classTagPositions: number[]
|
|
47
|
+
disposition: ClassDisposition
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// ---- Column / role classifier ----
|
|
51
|
+
|
|
52
|
+
export type ColumnRole =
|
|
53
|
+
| 'constant'
|
|
54
|
+
| 'factor'
|
|
55
|
+
| 'replicate'
|
|
56
|
+
| 'run-order'
|
|
57
|
+
| 'numeric'
|
|
58
|
+
| 'class-tag'
|
|
59
|
+
| 'ignore'
|
|
60
|
+
|
|
61
|
+
export interface NumericParse {
|
|
62
|
+
value: number
|
|
63
|
+
unit: string
|
|
64
|
+
raw: string
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface NumericBinning {
|
|
68
|
+
mode: 'discrete' | 'binned'
|
|
69
|
+
edges?: number[]
|
|
70
|
+
labels?: string[]
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface ValueOps {
|
|
74
|
+
alias?: Record<string, string>
|
|
75
|
+
exclude?: string[]
|
|
76
|
+
}
|
|
77
|
+
|
|
13
78
|
export interface ColumnInfo {
|
|
14
79
|
index: number
|
|
15
80
|
name: string
|
|
81
|
+
sourceIndices: number[]
|
|
16
82
|
uniqueValues: string[]
|
|
17
83
|
cardinality: number
|
|
84
|
+
/** Legacy field, retained alongside `role` during the shim window. */
|
|
18
85
|
type?: 'prefix' | 'suffix'
|
|
86
|
+
role?: ColumnRole
|
|
87
|
+
numeric?: { byValue: Record<string, NumericParse> }
|
|
88
|
+
binning?: NumericBinning
|
|
89
|
+
ops?: ValueOps
|
|
19
90
|
/** Original CSV column header — used for row lookups when name is renamed */
|
|
20
91
|
originalName?: string
|
|
92
|
+
displayName?: string
|
|
21
93
|
}
|
|
22
94
|
|
|
23
|
-
export interface
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
95
|
+
export interface ClassSchema {
|
|
96
|
+
classKind: SampleClassKind
|
|
97
|
+
subKind?: string
|
|
98
|
+
columns: ColumnInfo[]
|
|
99
|
+
groupBy: number[]
|
|
100
|
+
replicateColumn?: number
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface MergeSuggestion {
|
|
104
|
+
classKind: SampleClassKind
|
|
105
|
+
subKind?: string
|
|
106
|
+
columnIndices: number[]
|
|
107
|
+
proposedName: string
|
|
108
|
+
confidence: number
|
|
27
109
|
}
|
|
28
110
|
|
|
29
111
|
export interface AutoGroupResult {
|
|
112
|
+
/** All emitted groups, experimental + overlay concatenated for source compat. */
|
|
30
113
|
groups: SampleGroup[]
|
|
114
|
+
/** Class disposition === 'group' only. */
|
|
115
|
+
experimentalGroups?: SampleGroup[]
|
|
116
|
+
/** Class disposition === 'overlay' only. */
|
|
117
|
+
qcGroups?: SampleGroup[]
|
|
31
118
|
metadata: MetadataRow[]
|
|
32
119
|
excludedSamples: string[]
|
|
120
|
+
schemas?: ClassSchema[]
|
|
121
|
+
fingerprint?: SchemaFingerprint
|
|
33
122
|
}
|
|
34
123
|
|
|
35
|
-
export interface
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
124
|
+
export interface SchemaFingerprint {
|
|
125
|
+
version: 1
|
|
126
|
+
classes: Array<{
|
|
127
|
+
kind: SampleClassKind
|
|
128
|
+
subKind?: string
|
|
129
|
+
columns: Array<{
|
|
130
|
+
name: string
|
|
131
|
+
role: ColumnRole
|
|
132
|
+
sourceIndices: number[]
|
|
133
|
+
binning?: NumericBinning
|
|
134
|
+
ops?: ValueOps
|
|
135
|
+
}>
|
|
136
|
+
groupBy: number[]
|
|
137
|
+
}>
|
|
40
138
|
}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
// Well Plate types
|
|
2
|
+
export type WellPlateFormat = 6 | 12 | 24 | 48 | 54 | 96 | 384
|
|
3
|
+
export type WellState = 'empty' | 'filled' | 'selected' | 'disabled'
|
|
4
|
+
export type WellPlateSelectionMode = 'none' | 'single' | 'multiple' | 'rectangle' | 'drag'
|
|
5
|
+
export type WellPlateSize = 'sm' | 'md' | 'lg' | 'xl' | 'fill'
|
|
6
|
+
export type WellShape = 'circle' | 'rounded'
|
|
7
|
+
|
|
8
|
+
export interface Well {
|
|
9
|
+
id: string
|
|
10
|
+
row: number
|
|
11
|
+
col: number
|
|
12
|
+
state: WellState
|
|
13
|
+
sampleType?: string
|
|
14
|
+
value?: number
|
|
15
|
+
metadata?: Record<string, unknown>
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type HeatmapColorScale = 'viridis' | 'plasma' | 'turbo' | 'custom'
|
|
19
|
+
|
|
20
|
+
export interface HeatmapConfig {
|
|
21
|
+
enabled: boolean
|
|
22
|
+
min?: number
|
|
23
|
+
max?: number
|
|
24
|
+
colorScale?: HeatmapColorScale
|
|
25
|
+
customColors?: string[]
|
|
26
|
+
showLegend?: boolean
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Slot position for rack color coding
|
|
30
|
+
export type SlotPosition = 'R' | 'G' | 'B' | 'Y'
|
|
31
|
+
|
|
32
|
+
// Extended well data stored in Well.metadata
|
|
33
|
+
export interface WellExtendedData {
|
|
34
|
+
label?: string
|
|
35
|
+
injectionVolume?: number
|
|
36
|
+
injectionCount?: number
|
|
37
|
+
customMethod?: string | null
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Data emitted when editing a well
|
|
41
|
+
export interface WellEditData {
|
|
42
|
+
wellId: string
|
|
43
|
+
label: string
|
|
44
|
+
sampleType: string
|
|
45
|
+
injectionVolume: number
|
|
46
|
+
injectionCount: number
|
|
47
|
+
customMethod: string
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Fields shown in the edit popup
|
|
51
|
+
export type WellEditField = 'label' | 'sampleType' | 'injectionVolume' | 'injectionCount' | 'customMethod'
|
|
52
|
+
|
|
53
|
+
// External sample drop payloads for WellPlate / RackEditor
|
|
54
|
+
export interface WellSampleDropData {
|
|
55
|
+
id?: string
|
|
56
|
+
sampleName?: string
|
|
57
|
+
label?: string
|
|
58
|
+
sampleType?: string
|
|
59
|
+
injectionVolume?: number
|
|
60
|
+
injectionCount?: number
|
|
61
|
+
customMethod?: string | null
|
|
62
|
+
metadata?: Record<string, unknown>
|
|
63
|
+
raw?: unknown
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface WellSampleDropContext {
|
|
67
|
+
wellId: string
|
|
68
|
+
event: DragEvent
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type WellSampleDropParser = (
|
|
72
|
+
event: DragEvent,
|
|
73
|
+
context: WellSampleDropContext
|
|
74
|
+
) => WellSampleDropData | null | undefined
|
|
75
|
+
|
|
76
|
+
// Legend item for sample type display
|
|
77
|
+
export interface WellLegendItem {
|
|
78
|
+
type: string
|
|
79
|
+
label: string
|
|
80
|
+
color: string
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Condition headers for dose-response / drug treatment plates
|
|
84
|
+
export interface PlateCondition {
|
|
85
|
+
label: string
|
|
86
|
+
color: string
|
|
87
|
+
concentrations: number[]
|
|
88
|
+
unit?: string
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface ColumnCondition extends PlateCondition {
|
|
92
|
+
cols: number[]
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface RowCondition extends PlateCondition {
|
|
96
|
+
rows: string[]
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Rack for RackEditor
|
|
100
|
+
export interface Rack {
|
|
101
|
+
id: string
|
|
102
|
+
name: string
|
|
103
|
+
format: WellPlateFormat
|
|
104
|
+
slot: SlotPosition
|
|
105
|
+
injectionVolume: number
|
|
106
|
+
wells: Record<string, Partial<Well>>
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export interface RackSampleDropContext {
|
|
110
|
+
rack: Rack
|
|
111
|
+
rackId: string
|
|
112
|
+
wellId: string
|
|
113
|
+
event: DragEvent
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export type RackSampleDropMapper = (
|
|
117
|
+
data: WellSampleDropData,
|
|
118
|
+
context: RackSampleDropContext
|
|
119
|
+
) => WellEditData | null | undefined
|
|
120
|
+
|
|
121
|
+
// Sample Legend types
|
|
122
|
+
export interface SampleType {
|
|
123
|
+
id: string
|
|
124
|
+
name: string
|
|
125
|
+
color?: string
|
|
126
|
+
count?: number
|
|
127
|
+
description?: string
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Plate Map Editor types
|
|
131
|
+
export interface PlateMap {
|
|
132
|
+
id: string
|
|
133
|
+
name: string
|
|
134
|
+
format: WellPlateFormat
|
|
135
|
+
wells: Record<string, Well>
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface PlateMapEditorState {
|
|
139
|
+
plates: PlateMap[]
|
|
140
|
+
activePlateId: string
|
|
141
|
+
samples: SampleType[]
|
|
142
|
+
selectedWells: string[]
|
|
143
|
+
activeSampleId?: string
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Experiment Timeline types
|
|
147
|
+
export type ProtocolStepType = 'incubation' | 'wash' | 'addition' | 'measurement' | 'transfer' | 'centrifuge' | 'mix' | 'custom'
|
|
148
|
+
export type ProtocolStepStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'skipped'
|
|
149
|
+
|
|
150
|
+
export interface ProtocolStep {
|
|
151
|
+
id: string
|
|
152
|
+
type: ProtocolStepType
|
|
153
|
+
name: string
|
|
154
|
+
description?: string
|
|
155
|
+
duration?: number
|
|
156
|
+
status: ProtocolStepStatus
|
|
157
|
+
parameters?: Record<string, unknown>
|
|
158
|
+
order: number
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Sample Selector types
|
|
162
|
+
export interface SampleGroup {
|
|
163
|
+
name: string
|
|
164
|
+
color: string
|
|
165
|
+
samples: string[]
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Group Assigner types
|
|
169
|
+
export interface GroupItem {
|
|
170
|
+
name: string
|
|
171
|
+
color: string
|
|
172
|
+
count: number
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// FileUploader types
|
|
176
|
+
export type FileUploaderMode = 'file' | 'folder'
|
|
177
|
+
|
|
178
|
+
// MoleculeInput types
|
|
179
|
+
export interface MoleculeData {
|
|
180
|
+
smiles: string
|
|
181
|
+
molfile: string
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// ReagentList types
|
|
185
|
+
export type StorageCondition = 'RT' | '4C' | '-20C' | '-80C'
|
|
186
|
+
|
|
187
|
+
export type ReagentColumn =
|
|
188
|
+
| 'name'
|
|
189
|
+
| 'catalog'
|
|
190
|
+
| 'lot'
|
|
191
|
+
| 'expiry'
|
|
192
|
+
| 'storage'
|
|
193
|
+
| 'location'
|
|
194
|
+
| 'stock'
|
|
195
|
+
| 'supplier'
|
|
196
|
+
|
|
197
|
+
export interface Reagent {
|
|
198
|
+
id: string
|
|
199
|
+
name: string
|
|
200
|
+
catalogNumber?: string
|
|
201
|
+
lotNumber?: string
|
|
202
|
+
expiryDate?: Date | string
|
|
203
|
+
storageCondition?: StorageCondition
|
|
204
|
+
location?: string
|
|
205
|
+
stockLevel?: number
|
|
206
|
+
stockUnit?: string
|
|
207
|
+
supplier?: string
|
|
208
|
+
url?: string
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// SampleHierarchyTree types
|
|
212
|
+
export type TreeNodeType =
|
|
213
|
+
| 'study'
|
|
214
|
+
| 'experiment'
|
|
215
|
+
| 'plate'
|
|
216
|
+
| 'sample'
|
|
217
|
+
| 'cell_line'
|
|
218
|
+
| 'passage'
|
|
219
|
+
| 'clone'
|
|
220
|
+
| 'treatment'
|
|
221
|
+
| 'folder'
|
|
222
|
+
| 'custom'
|
|
223
|
+
|
|
224
|
+
export type BadgeVariant = 'default' | 'success' | 'warning' | 'error'
|
|
225
|
+
|
|
226
|
+
export interface TreeNode {
|
|
227
|
+
id: string
|
|
228
|
+
label: string
|
|
229
|
+
type?: TreeNodeType
|
|
230
|
+
icon?: string
|
|
231
|
+
children?: TreeNode[]
|
|
232
|
+
metadata?: Record<string, unknown>
|
|
233
|
+
badge?: string | number
|
|
234
|
+
badgeVariant?: BadgeVariant
|
|
235
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import type { UserSummary } from './platform'
|
|
2
|
+
|
|
3
|
+
// ScientificNumber types
|
|
4
|
+
export type NumberNotation = 'auto' | 'scientific' | 'engineering' | 'compact'
|
|
5
|
+
|
|
6
|
+
// UnitInput types
|
|
7
|
+
export interface UnitOption {
|
|
8
|
+
value: string
|
|
9
|
+
label: string
|
|
10
|
+
factor?: number
|
|
11
|
+
group?: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// StepWizard types
|
|
15
|
+
export interface WizardStep {
|
|
16
|
+
id: string
|
|
17
|
+
label: string
|
|
18
|
+
description?: string
|
|
19
|
+
icon?: string
|
|
20
|
+
optional?: boolean
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type WizardStepState = 'pending' | 'active' | 'completed' | 'disabled'
|
|
24
|
+
|
|
25
|
+
// AuditTrail types
|
|
26
|
+
export type AuditEntryType = 'create' | 'update' | 'delete' | 'system'
|
|
27
|
+
|
|
28
|
+
export interface AuditEntry {
|
|
29
|
+
id: string
|
|
30
|
+
type: AuditEntryType
|
|
31
|
+
action: string
|
|
32
|
+
detail?: string
|
|
33
|
+
user?: string
|
|
34
|
+
timestamp: Date | string
|
|
35
|
+
metadata?: Record<string, unknown>
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// BatchProgressList types
|
|
39
|
+
export type BatchItemStatus = 'pending' | 'processing' | 'completed' | 'error' | 'skipped'
|
|
40
|
+
|
|
41
|
+
export interface BatchItem {
|
|
42
|
+
id: string
|
|
43
|
+
label: string
|
|
44
|
+
status: BatchItemStatus
|
|
45
|
+
progress?: number
|
|
46
|
+
message?: string
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface BatchSummary {
|
|
50
|
+
total: number
|
|
51
|
+
completed: number
|
|
52
|
+
processing: number
|
|
53
|
+
error: number
|
|
54
|
+
pending: number
|
|
55
|
+
skipped: number
|
|
56
|
+
percent: number
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// TimePicker types
|
|
60
|
+
export type TimePickerFormat = '12h' | '24h'
|
|
61
|
+
|
|
62
|
+
export interface TimeRange {
|
|
63
|
+
start: string // "HH:mm"
|
|
64
|
+
end: string // "HH:mm"
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Schedule types
|
|
68
|
+
export type ScheduleView = 'day' | 'week' | 'month'
|
|
69
|
+
export type ScheduleEventStatus = 'confirmed' | 'pending' | 'cancelled' | 'in-progress'
|
|
70
|
+
|
|
71
|
+
export interface ScheduleEvent {
|
|
72
|
+
id: string
|
|
73
|
+
start: string // ISO 8601 datetime
|
|
74
|
+
end: string // ISO 8601 datetime
|
|
75
|
+
title: string
|
|
76
|
+
color?: string
|
|
77
|
+
status?: ScheduleEventStatus
|
|
78
|
+
draggable?: boolean
|
|
79
|
+
resizable?: boolean
|
|
80
|
+
metadata?: Record<string, unknown>
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface ScheduleBlockedSlot {
|
|
84
|
+
start: string
|
|
85
|
+
end: string
|
|
86
|
+
label?: string
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface ScheduleSlotContext {
|
|
90
|
+
date: Date
|
|
91
|
+
hour: number
|
|
92
|
+
minute: number
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface ScheduleEventCreateContext {
|
|
96
|
+
start: Date
|
|
97
|
+
end: Date
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface ScheduleEventUpdateContext {
|
|
101
|
+
event: ScheduleEvent
|
|
102
|
+
newStart: Date
|
|
103
|
+
newEnd: Date
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Summary data types (for ExperimentDataViewer compact mode)
|
|
107
|
+
export interface SummarySectionItem {
|
|
108
|
+
label: string
|
|
109
|
+
metadata?: Record<string, unknown>
|
|
110
|
+
item_count: number
|
|
111
|
+
item_key: string
|
|
112
|
+
columns: string[]
|
|
113
|
+
rows: Record<string, unknown>[]
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export interface SummarySection {
|
|
117
|
+
key: string
|
|
118
|
+
label: string
|
|
119
|
+
type: 'table' | 'group'
|
|
120
|
+
/** Group sections: list of group items with embedded tables */
|
|
121
|
+
items?: SummarySectionItem[]
|
|
122
|
+
/** Table sections: flat table columns and rows */
|
|
123
|
+
columns?: string[]
|
|
124
|
+
rows?: Record<string, unknown>[]
|
|
125
|
+
row_count?: number
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface SummaryData {
|
|
129
|
+
metadata: Record<string, unknown>
|
|
130
|
+
sections: SummarySection[]
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Resource types
|
|
134
|
+
export type ResourceStatus = 'available' | 'in-use' | 'maintenance' | 'offline'
|
|
135
|
+
|
|
136
|
+
export interface ResourceSpec {
|
|
137
|
+
label: string
|
|
138
|
+
value: string
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Experiment selector types
|
|
142
|
+
export type ExperimentStatus = 'planned' | 'ongoing' | 'completed' | 'cancelled'
|
|
143
|
+
export type DatePreset = 'last_7_days' | 'last_30_days' | 'last_90_days'
|
|
144
|
+
export type ExperimentSortField = 'created_at' | 'updated_at' | 'name' | 'status'
|
|
145
|
+
|
|
146
|
+
export interface ExperimentTypeOption {
|
|
147
|
+
value: string
|
|
148
|
+
label: string
|
|
149
|
+
color?: string
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export interface ExperimentSummary {
|
|
153
|
+
id: number
|
|
154
|
+
experiment_code?: string
|
|
155
|
+
name: string
|
|
156
|
+
status: ExperimentStatus
|
|
157
|
+
experiment_type: string
|
|
158
|
+
project?: string
|
|
159
|
+
project_id?: number
|
|
160
|
+
project_name?: string
|
|
161
|
+
notes?: string
|
|
162
|
+
tags?: Record<string, unknown>
|
|
163
|
+
created_at: string
|
|
164
|
+
updated_at: string
|
|
165
|
+
created_by?: number
|
|
166
|
+
created_by_user?: UserSummary
|
|
167
|
+
has_design_data: boolean
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export interface ExperimentListResponse {
|
|
171
|
+
experiments: ExperimentSummary[]
|
|
172
|
+
total: number
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export interface ExperimentFilters {
|
|
176
|
+
search?: string
|
|
177
|
+
status?: ExperimentStatus | null
|
|
178
|
+
project?: string | null
|
|
179
|
+
experimentType?: string | null
|
|
180
|
+
datePreset?: DatePreset | null
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// FitPanel types
|
|
184
|
+
export type FitState = 'idle' | 'running' | 'completed' | 'error'
|
|
185
|
+
|
|
186
|
+
export interface FitResultSummary {
|
|
187
|
+
label: string
|
|
188
|
+
value: string | number
|
|
189
|
+
variant?: 'default' | 'success' | 'warning' | 'error'
|
|
190
|
+
}
|