@morscherlab/mint-sdk 1.3.11 → 1.4.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -177
- package/dist/AlertBox-B2Bgr3ei.js +276 -0
- package/dist/AlertBox-B2Bgr3ei.js.map +1 -0
- package/dist/AppSidebar-mvm--GxN.js +3565 -0
- package/dist/AppSidebar-mvm--GxN.js.map +1 -0
- package/dist/ConfirmDialog-nbJj51is.js +102 -0
- package/dist/ConfirmDialog-nbJj51is.js.map +1 -0
- package/dist/ExperimentPopover-5T1fAq2L.js +337 -0
- package/dist/ExperimentPopover-5T1fAq2L.js.map +1 -0
- package/dist/ExperimentSelectorModal-65peG4Up.js +544 -0
- package/dist/ExperimentSelectorModal-65peG4Up.js.map +1 -0
- package/dist/SegmentedControl-BtnnjWzs.js +129 -0
- package/dist/SegmentedControl-BtnnjWzs.js.map +1 -0
- package/dist/SettingsModal-DO3IZ7qz.js +666 -0
- package/dist/SettingsModal-DO3IZ7qz.js.map +1 -0
- package/dist/analysisArtifactTypes-Cy3D0Ipg.js.map +1 -1
- package/dist/auth-SliLnFre.js +65 -0
- package/dist/auth-SliLnFre.js.map +1 -0
- package/dist/components/ActionMenu.vue.d.ts +1 -1
- package/dist/components/AdductText.vue.d.ts +1 -1
- package/dist/components/AlertBox.vue.d.ts +3 -3
- package/dist/components/AppContainer.vue.d.ts +1 -1
- package/dist/components/AppSidebar.vue.d.ts +15 -95
- package/dist/components/AppTopBar.vue.d.ts +16 -70
- package/dist/components/ArtifactSaveDialog.vue.d.ts +13 -5
- package/dist/components/ArtifactSelectorModal.vue.d.ts +4 -4
- package/dist/components/AuditTrail.vue.d.ts +2 -2
- package/dist/components/BaseButton.vue.d.ts +11 -4
- package/dist/components/BaseCheckbox.vue.d.ts +9 -3
- package/dist/components/BaseInput.vue.d.ts +13 -9
- package/dist/components/BaseModal.vue.d.ts +4 -4
- package/dist/components/BasePill.vue.d.ts +15 -8
- package/dist/components/BaseRadioGroup.vue.d.ts +2 -2
- package/dist/components/BaseSelect.vue.d.ts +51 -19
- package/dist/components/BaseTabs.vue.d.ts +6 -5
- package/dist/components/BatchProgressList.vue.d.ts +2 -2
- package/dist/components/ChartContainer.vue.d.ts +4 -2
- package/dist/components/ChemicalFormula.vue.d.ts +2 -2
- package/dist/components/CollapsibleCard.vue.d.ts +3 -3
- package/dist/components/ComponentBindingRenderer.vue.d.ts +2 -3
- package/dist/components/ConcentrationInput.vue.d.ts +2 -2
- package/dist/components/ConfirmDialog.vue.d.ts +8 -7
- package/dist/components/DataFrame.vue.d.ts +32 -74
- package/dist/components/DatePicker.vue.d.ts +24 -2
- package/dist/components/DoseCalculator.vue.d.ts +1 -1
- package/dist/components/DoseCalculatorVolumeField.vue.d.ts +1 -1
- package/dist/components/EmptyState.vue.d.ts +3 -2
- package/dist/components/ExperimentPopover.vue.d.ts +18 -0
- package/dist/components/ExperimentSelectorModal.vue.d.ts +3 -7
- package/dist/components/FilePicker.vue.d.ts +1 -1
- package/dist/components/FileUploader.vue.d.ts +2 -2
- package/dist/components/FormBuilder.vue.d.ts +17 -74
- package/dist/components/FormulaInput.vue.d.ts +2 -2
- package/dist/components/GeneratedPluginView.vue.d.ts +1 -1
- package/dist/components/GeneratedResultRenderer.vue.d.ts +5 -1
- package/dist/components/{StatusIndicator.vue.d.ts → InstrumentStatusPanels.vue.d.ts} +8 -9
- package/dist/components/JobsStatusTray.vue.d.ts +2 -9
- package/dist/components/LoadingSpinner.vue.d.ts +3 -3
- package/dist/components/MoleculeInput.vue.d.ts +2 -2
- package/dist/components/NumberInput.vue.d.ts +19 -5
- package/dist/components/PlateEditor.vue.d.ts +11 -61
- package/dist/components/PlotlyChart.vue.d.ts +2 -2
- package/dist/components/PluginIcon.vue.d.ts +5 -1
- package/dist/components/PluginWorkspaceView.controls.d.ts +2 -9
- package/dist/components/PluginWorkspaceView.navigation.d.ts +1 -7
- package/dist/components/PluginWorkspaceView.props.d.ts +18 -137
- package/dist/components/PluginWorkspaceView.shell.d.ts +2 -10
- package/dist/components/PluginWorkspaceView.vue.d.ts +14 -84
- package/dist/components/PresenceAvatars.vue.d.ts +31 -0
- package/dist/components/ProgressBar.vue.d.ts +3 -2
- package/dist/components/ProtocolStep.presentation.d.ts +0 -1
- package/dist/components/SampleHierarchyTree.vue.d.ts +3 -3
- package/dist/components/SampleSelector.vue.d.ts +8 -8
- package/dist/components/ScheduleCalendar.vue.d.ts +1 -1
- package/dist/components/ScientificNumber.vue.d.ts +1 -1
- package/dist/components/SecretInput.vue.d.ts +2 -2
- package/dist/components/SegmentedControl.vue.d.ts +2 -2
- package/dist/components/SequenceInput.vue.d.ts +2 -2
- package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
- package/dist/components/SettingsModal.vue.d.ts +12 -20
- package/dist/components/SmartGroup.types.d.ts +0 -1
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -1
- package/dist/components/StaleFormBanner.vue.d.ts +20 -0
- package/dist/components/StepWizard.vue.d.ts +3 -0
- package/dist/components/TagsInput.vue.d.ts +4 -3
- package/dist/components/TimeRangeInput.vue.d.ts +2 -2
- package/dist/components/VersionConflictDialog.vue.d.ts +24 -0
- package/dist/components/WellPlate.geometry.d.ts +0 -6
- package/dist/components/WellPlate.rendering.d.ts +0 -2
- package/dist/components/WellPlate.vue.d.ts +7 -52
- package/dist/components/index.d.ts +0 -90
- package/dist/components/{AutoGroupModal.adapter.d.ts → internal/AutoGroupModalInternal.adapter.d.ts} +6 -6
- package/dist/components/{AutoGroupModal.vue.d.ts → internal/AutoGroupModalInternal.vue.d.ts} +6 -6
- package/dist/components/{BaseToggle.vue.d.ts → internal/CheckboxSwitchInternal.vue.d.ts} +2 -2
- package/dist/components/{MultiSelect.vue.d.ts → internal/DatePickerDateInternal.vue.d.ts} +11 -9
- package/dist/components/{DateTimePicker.vue.d.ts → internal/DatePickerDateTimeInternal.vue.d.ts} +2 -2
- package/dist/components/{TimePicker.vue.d.ts → internal/DatePickerTimeInternal.vue.d.ts} +4 -4
- package/dist/components/internal/FilePickerListInternal.vue.d.ts +2 -2
- package/dist/components/internal/FormSchemaInternal.vue.d.ts +95 -0
- package/dist/components/{UnitInput.vue.d.ts → internal/NumberUnitInputInternal.vue.d.ts} +6 -14
- package/dist/components/internal/PlateEditorBindingInternal.vue.d.ts +3 -2
- package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +5 -10
- package/dist/components/internal/SelectMultipleInternal.vue.d.ts +27 -0
- package/dist/components/{SearchableSelect.vue.d.ts → internal/SelectSearchableInternal.vue.d.ts} +5 -2
- package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +1 -15
- package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +4 -4
- package/dist/{composables → components/internal}/autoGroup/classKey.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/classify.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/columns.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/compose.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/cooccurrence.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/csv-shim.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/fingerprint.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/template.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/tokenLength.d.ts +1 -1
- package/dist/components/internal/generatedJobsApi.d.ts +1 -1
- package/dist/{composables → components/internal}/useAutoGroup.d.ts +9 -18
- package/dist/composables/componentSpecs.d.ts +41 -0
- package/dist/composables/controlComponentBindings.d.ts +6 -0
- package/dist/composables/controlSchemaAdapters.d.ts +28 -2
- package/dist/composables/controlSchemaDoseDesign.d.ts +1 -1
- package/dist/composables/controlSchemaModel.d.ts +1 -1
- package/dist/composables/controlSchemaTypes.d.ts +35 -23
- package/dist/composables/{usePluginClient.d.ts → createClient.d.ts} +22 -49
- package/dist/composables/{useEventStream.d.ts → eventStream.d.ts} +2 -2
- package/dist/composables/experiment-utils.d.ts +1 -6
- package/dist/composables/index.d.ts +7 -59
- package/dist/composables/platformContextHelpers.d.ts +0 -11
- package/dist/composables/pluginEndpointBuilder.d.ts +2 -2
- package/dist/composables/pluginIdentity.d.ts +24 -0
- package/dist/composables/pluginWorkspaceModel.d.ts +16 -99
- package/dist/composables/useApi.d.ts +1 -3
- package/dist/composables/useAppExperiment.d.ts +9 -1
- package/dist/composables/{useAnalysisArtifacts.d.ts → useArtifacts.d.ts} +6 -6
- package/dist/composables/useCalendarGrid.d.ts +1 -1
- package/dist/composables/useExperiment.d.ts +30 -0
- package/dist/composables/useExperimentSelector.d.ts +6 -2
- package/dist/composables/useFilePicker.d.ts +2 -2
- package/dist/composables/useJobCenter.d.ts +63 -0
- package/dist/composables/{useGeneratedAnalysis.d.ts → useJobsEndpoint.d.ts} +22 -23
- package/dist/composables/useMenuKeyboard.d.ts +1 -1
- package/dist/composables/usePlatform.d.ts +64 -0
- package/dist/composables/usePluginWorkspace.d.ts +6 -11
- package/dist/composables/usePresence.d.ts +41 -0
- package/dist/composables/useRackEditor.d.ts +2 -2
- package/dist/composables/useRealtime.d.ts +71 -0
- package/dist/composables/{useRequestSyncState.d.ts → useRequest.d.ts} +12 -17
- package/dist/composables/useToast.d.ts +7 -5
- package/dist/composables/useVersionedSave.d.ts +76 -0
- package/dist/controlSchemaModel-B8CTXagP.js +95 -0
- package/dist/controlSchemaModel-B8CTXagP.js.map +1 -0
- package/dist/data-CgILxDLW.js +3865 -0
- package/dist/data-CgILxDLW.js.map +1 -0
- package/dist/data.d.ts +32 -0
- package/dist/data.js +10 -0
- package/dist/deprecatedRootExports.d.ts +191 -0
- package/dist/experiment-43OJtH7R.js +673 -0
- package/dist/experiment-43OJtH7R.js.map +1 -0
- package/dist/experimentStatus-Cqp6qNrR.js +60 -0
- package/dist/experimentStatus-Cqp6qNrR.js.map +1 -0
- package/dist/host.d.ts +10 -0
- package/dist/host.js +26 -0
- package/dist/host.js.map +1 -0
- package/dist/index.d.ts +1 -12
- package/dist/index.js +65 -277
- package/dist/index.js.map +1 -1
- package/dist/install-CsPFJSx3.js +669 -0
- package/dist/install-CsPFJSx3.js.map +1 -0
- package/dist/install.d.ts +2 -1
- package/dist/install.js +1 -21
- package/dist/instrument.d.ts +0 -6
- package/dist/lab-MHzp-_J8.js +7494 -0
- package/dist/lab-MHzp-_J8.js.map +1 -0
- package/dist/lab.d.ts +42 -0
- package/dist/lab.js +5 -0
- package/dist/permissions.d.ts +0 -4
- package/dist/permissions.js +1 -20
- package/dist/permissions.js.map +1 -1
- package/dist/records-B6gpM_3e.js +3268 -0
- package/dist/records-B6gpM_3e.js.map +1 -0
- package/dist/runtime-8bs8EogX.js +1491 -0
- package/dist/runtime-8bs8EogX.js.map +1 -0
- package/dist/runtime.d.ts +25 -0
- package/dist/runtime.js +8 -0
- package/dist/shell-CywENwBT.js +197 -0
- package/dist/shell-CywENwBT.js.map +1 -0
- package/dist/shell.d.ts +16 -0
- package/dist/shell.js +8 -0
- package/dist/stores/auth.d.ts +13 -35
- package/dist/stores/experiment.d.ts +4 -0
- package/dist/stores/index.js +2 -2
- package/dist/styles.css +12161 -15036
- package/dist/types/analysisArtifactTypes.d.ts +1 -1
- package/dist/types/auth.d.ts +0 -8
- package/dist/types/componentLabTypes.d.ts +98 -34
- package/dist/types/componentWorkflowTypes.d.ts +2 -27
- package/dist/types/components.d.ts +145 -74
- package/dist/types/form-builder.d.ts +4 -0
- package/dist/types/generated/platformContext.d.ts +53 -0
- package/dist/types/generated-ui.d.ts +6 -2
- package/dist/types/index.d.ts +4 -5
- package/dist/types/instrument.d.ts +41 -0
- package/dist/types/platform.d.ts +20 -58
- package/dist/useDebouncedWatch-BPwyl6eS.js +73 -0
- package/dist/useDebouncedWatch-BPwyl6eS.js.map +1 -0
- package/dist/{experiment-utils-DTANyVKV.js → useDropdownState-8yWMu-7_.js} +127 -144
- package/dist/useDropdownState-8yWMu-7_.js.map +1 -0
- package/dist/useExpansionSet-CvoNMZJi.js +68 -0
- package/dist/useExpansionSet-CvoNMZJi.js.map +1 -0
- package/dist/useExperimentSamples-DHnxKFAF.js +366 -0
- package/dist/useExperimentSamples-DHnxKFAF.js.map +1 -0
- package/dist/useListReorder-BitdUhxn.js +5294 -0
- package/dist/useListReorder-BitdUhxn.js.map +1 -0
- package/dist/useRackEditor-DiwCt77M.js +5930 -0
- package/dist/useRackEditor-DiwCt77M.js.map +1 -0
- package/dist/useRealtime-C3iy9QkU.js +699 -0
- package/dist/useRealtime-C3iy9QkU.js.map +1 -0
- package/dist/useRequest-D506eHi8.js +244 -0
- package/dist/useRequest-D506eHi8.js.map +1 -0
- package/dist/utils/color.d.ts +0 -5
- package/dist/{composables/useDoseCalculator.d.ts → utils/dose.d.ts} +10 -13
- package/dist/utils/experimentStatus.d.ts +9 -0
- package/dist/{composables/useChemicalFormula.d.ts → utils/formula.d.ts} +3 -6
- package/dist/utils/integrationHost.d.ts +18 -0
- package/dist/utils/plotlyTemplate.d.ts +2 -0
- package/dist/utils/pluginSecrets.d.ts +12 -12
- package/dist/utils/presenceAvatars.d.ts +30 -0
- package/dist/utils/records.d.ts +0 -2
- package/dist/{composables/useTimeUtils.d.ts → utils/time.d.ts} +7 -18
- package/package.json +20 -17
- package/src/__tests__/components/ActionMenu.test.ts +0 -13
- package/src/__tests__/components/AlertBox.test.ts +1 -1
- package/src/__tests__/components/AppSidebar.test.ts +119 -167
- package/src/__tests__/components/AppToastContainer.test.ts +2 -2
- package/src/__tests__/components/AppTopBar.test.ts +230 -176
- package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
- package/src/__tests__/components/ArtifactSaveDialog.test.ts +83 -3
- package/src/__tests__/components/ArtifactSelectorModal.test.ts +6 -4
- package/src/__tests__/components/AuditTrail.test.ts +1 -1
- package/src/__tests__/components/AutoGroupModal.adapter.test.ts +1 -1
- package/src/__tests__/components/AutoGroupModal.anatomy.test.ts +2 -2
- package/src/__tests__/components/AutoGroupModal.wiring.test.ts +2 -2
- package/src/__tests__/components/BaseButton.test.ts +51 -0
- package/src/__tests__/components/{BaseToggle.test.ts → BaseCheckbox.switch.test.ts} +8 -6
- package/src/__tests__/components/BaseInput.test.ts +13 -34
- package/src/__tests__/components/BaseModal.test.ts +6 -6
- package/src/__tests__/components/BasePill.test.ts +33 -39
- package/src/__tests__/components/BaseSelect.multiple.test.ts +118 -0
- package/src/__tests__/components/{SearchableSelect.test.ts → BaseSelect.searchable.test.ts} +19 -9
- package/src/__tests__/components/BaseSelect.test.ts +11 -0
- package/src/__tests__/components/BaseTabs.test.ts +13 -13
- package/src/__tests__/components/BatchProgressList.test.ts +16 -0
- package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
- package/src/__tests__/components/ChartContainer.test.ts +11 -0
- package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
- package/src/__tests__/components/CollapsibleCard.test.ts +1 -1
- package/src/__tests__/components/ComponentBindingRenderer.test.ts +25 -73
- package/src/__tests__/components/ConcentrationInput.test.ts +3 -3
- package/src/__tests__/components/ConfirmDialog.test.ts +23 -0
- package/src/__tests__/components/DataFrame.test.ts +140 -142
- package/src/__tests__/components/DataStates.test.ts +6 -22
- package/src/__tests__/components/{DateTimePicker.test.ts → DatePicker.datetime.test.ts} +15 -7
- package/src/__tests__/components/DatePicker.test.ts +21 -0
- package/src/__tests__/components/{TimePicker.test.ts → DatePicker.time.test.ts} +20 -19
- package/src/__tests__/components/DoseCalculator.test.ts +12 -7
- package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +6 -6
- package/src/__tests__/components/EmptyState.test.ts +1 -1
- package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
- package/src/__tests__/components/ExperimentSelectorModal.test.ts +134 -28
- package/src/__tests__/components/FormBuilder.test.ts +49 -167
- package/src/__tests__/components/FormSchemaInternal.test.ts +91 -0
- package/src/__tests__/components/GeneratedPathInput.test.ts +18 -13
- package/src/__tests__/components/GeneratedPluginView.test.ts +60 -25
- package/src/__tests__/components/GeneratedResultRenderer.test.ts +6 -4
- package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
- package/src/__tests__/components/InstrumentStatusPanels.test.ts +79 -0
- package/src/__tests__/components/JobsStatusTray.test.ts +4 -4
- package/src/__tests__/components/NumberInput.test.ts +28 -0
- package/src/__tests__/components/{UnitInput.test.ts → NumberInput.units.test.ts} +6 -6
- package/src/__tests__/components/PlateEditor.test.ts +108 -108
- package/src/__tests__/components/PlateEditorBindingInternal.test.ts +13 -13
- package/src/__tests__/components/PlotlyChart.test.ts +1 -1
- package/src/__tests__/components/PluginIcon.test.ts +9 -4
- package/src/__tests__/components/PluginWorkspaceView.controls.test.ts +16 -29
- package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +28 -34
- package/src/__tests__/components/PluginWorkspaceView.navigation.test.ts +4 -19
- package/src/__tests__/components/PluginWorkspaceView.shell.test.ts +1 -6
- package/src/__tests__/components/PluginWorkspaceView.test.ts +183 -155
- package/src/__tests__/components/PresenceAvatars.test.ts +90 -0
- package/src/__tests__/components/ProtocolStep.presentation.test.ts +1 -3
- package/src/__tests__/components/ProtocolStepEditor.test.ts +10 -11
- package/src/__tests__/components/ProtocolStepParameterField.test.ts +8 -7
- package/src/__tests__/components/ResourcePickerListInternal.test.ts +2 -22
- package/src/__tests__/components/RetiredStyles.test.ts +0 -18
- package/src/__tests__/components/SampleSelector.test.ts +30 -25
- package/src/__tests__/components/SecretInput.test.ts +14 -19
- package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
- package/src/__tests__/components/SettingsModal.test.ts +76 -84
- package/src/__tests__/components/StaleFormBanner.test.ts +48 -0
- package/src/__tests__/components/StepWizard.test.ts +11 -0
- package/src/__tests__/components/ThemeToggle.test.ts +1 -1
- package/src/__tests__/components/WellPlate.decoration.test.ts +20 -11
- package/src/__tests__/components/WellPlate.interaction.test.ts +6 -7
- package/src/__tests__/components/WellPlate.keyboard.test.ts +2 -2
- package/src/__tests__/components/deprecationTags.test.ts +90 -0
- package/src/__tests__/composables/analysisArtifactTarget.test.ts +1 -12
- package/src/__tests__/composables/autoGroup/classKey.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/classify.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/columns.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/compose.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/cooccurrence.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/fieldEdits.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/fingerprint.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/golden.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/groupByOrder.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/groupTree.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/integration.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/template.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/tokenLength.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/tokenize.test.ts +1 -1
- package/src/__tests__/composables/{usePluginClient.test.ts → createClient.test.ts} +84 -222
- package/src/__tests__/composables/{useEventStream.test.ts → eventStream.test.ts} +6 -6
- package/src/__tests__/composables/experiment-utils.test.ts +13 -14
- package/src/__tests__/composables/useApi.test.ts +32 -21
- package/src/__tests__/composables/useAppExperiment.test.ts +46 -3
- package/src/__tests__/composables/{useAnalysisArtifacts.test.ts → useArtifacts.test.ts} +19 -27
- package/src/__tests__/composables/useAutoGroup.test.ts +3 -13
- package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
- package/src/__tests__/composables/useControlSchema.test.ts +41 -99
- package/src/__tests__/composables/useExperiment.test.ts +63 -0
- package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
- package/src/__tests__/composables/useFileBrowser.test.ts +4 -6
- package/src/__tests__/composables/{useJobsStatusTray.test.ts → useJobCenter.test.ts} +31 -31
- package/src/__tests__/composables/{useGeneratedAnalysis.test.ts → useJobsEndpoint.test.ts} +213 -139
- package/src/__tests__/composables/usePlatform.test.ts +102 -0
- package/src/__tests__/composables/usePresence.test.ts +164 -0
- package/src/__tests__/composables/useRackEditor.test.ts +2 -2
- package/src/__tests__/composables/useRealtime.test.ts +196 -0
- package/src/__tests__/composables/{useRequestSyncState.test.ts → useRequest.test.ts} +32 -47
- package/src/__tests__/composables/useVersionedSave.test.ts +194 -0
- package/src/__tests__/docs/extractDocsComponents.test.ts +36 -0
- package/src/__tests__/docs/extractDocsParsing.test.ts +2 -2
- package/src/__tests__/docs/extractDocsTheme.test.ts +1 -46
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +164 -84
- package/src/__tests__/styles/baseControlsRules.test.ts +7 -3
- package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
- package/src/__tests__/styles/cssTokens.test.ts +2 -2
- package/src/__tests__/styles/darkModeRules.test.ts +0 -6
- package/src/__tests__/styles/menusShellRefresh.test.ts +14 -10
- package/src/__tests__/{composables/useChemicalFormula.test.ts → utils/formula.test.ts} +3 -5
- package/src/__tests__/utils/permissions.test.ts +1 -36
- package/src/__tests__/utils/plotlyTemplate.test.ts +20 -5
- package/src/__tests__/{composables/useTimeUtils.test.ts → utils/time.test.ts} +18 -8
- package/src/components/ActionMenu.vue +7 -13
- package/src/components/AdductText.story.vue +7 -0
- package/src/components/AdductText.vue +1 -1
- package/src/components/AlertBox.story.vue +27 -27
- package/src/components/AlertBox.vue +22 -20
- package/src/components/AppLayout.story.vue +33 -44
- package/src/components/AppLayout.vue +1 -1
- package/src/components/AppSidebar.story.vue +40 -101
- package/src/components/AppSidebar.vue +66 -147
- package/src/components/AppToastContainer.story.vue +1 -1
- package/src/components/AppTopBar.story.vue +97 -111
- package/src/components/AppTopBar.vue +170 -290
- package/src/components/ArtifactSaveDialog.story.vue +32 -9
- package/src/components/ArtifactSaveDialog.vue +125 -38
- package/src/components/ArtifactSelectorModal.story.vue +4 -4
- package/src/components/ArtifactSelectorModal.vue +10 -10
- package/src/components/AuditTrail.story.vue +6 -5
- package/src/components/AuditTrail.vue +5 -24
- package/src/components/Avatar.story.vue +2 -3
- package/src/components/Avatar.vue +11 -16
- package/src/components/BaseButton.story.vue +25 -0
- package/src/components/BaseButton.vue +39 -10
- package/src/components/BaseCheckbox.story.vue +2 -2
- package/src/components/{BaseToggle.story.vue → BaseCheckbox.switch.story.vue} +22 -19
- package/src/components/BaseCheckbox.vue +39 -7
- package/src/components/BaseInput.story.vue +3 -15
- package/src/components/{BaseTextarea.story.vue → BaseInput.textarea.story.vue} +14 -10
- package/src/components/BaseInput.vue +53 -26
- package/src/components/BaseModal.story.vue +11 -11
- package/src/components/BaseModal.vue +8 -8
- package/src/components/BasePill.story.vue +48 -28
- package/src/components/BasePill.vue +22 -11
- package/src/components/BaseRadioGroup.story.vue +4 -4
- package/src/components/BaseRadioGroup.vue +3 -3
- package/src/components/{MultiSelect.story.vue → BaseSelect.multiple.story.vue} +33 -16
- package/src/components/{SearchableSelect.story.vue → BaseSelect.searchable.story.vue} +4 -4
- package/src/components/BaseSelect.story.vue +2 -2
- package/src/components/BaseSelect.vue +118 -22
- package/src/components/BaseTabs.story.vue +20 -20
- package/src/components/BaseTabs.vue +17 -9
- package/src/components/BatchProgressList.vue +38 -28
- package/src/components/ChartContainer.story.vue +9 -13
- package/src/components/ChartContainer.vue +10 -8
- package/src/components/ChemicalFormula.vue +1 -2
- package/src/components/CollapsibleCard.vue +5 -4
- package/src/components/ComponentBindingRenderer.story.vue +0 -29
- package/src/components/ComponentBindingRenderer.vue +15 -39
- package/src/components/ConcentrationInput.story.vue +2 -2
- package/src/components/ConcentrationInput.vue +9 -9
- package/src/components/ConfirmDialog.story.vue +22 -22
- package/src/components/ConfirmDialog.vue +15 -14
- package/src/components/DataFrame.story.vue +28 -40
- package/src/components/DataFrame.vue +112 -128
- package/src/components/{DateTimePicker.story.vue → DatePicker.datetime.story.vue} +19 -14
- package/src/components/DatePicker.story.vue +2 -2
- package/src/components/{TimePicker.story.vue → DatePicker.time.story.vue} +15 -12
- package/src/components/DatePicker.vue +82 -220
- package/src/components/DoseCalculator.vue +13 -19
- package/src/components/DoseCalculatorVolumeField.vue +6 -6
- package/src/components/EmptyState.story.vue +17 -17
- package/src/components/EmptyState.vue +6 -5
- package/src/components/ExperimentPopover.story.vue +165 -53
- package/src/components/ExperimentPopover.vue +172 -190
- package/src/components/ExperimentSelectorModal.story.vue +43 -39
- package/src/components/ExperimentSelectorModal.vue +134 -122
- package/src/components/FilePicker.vue +1 -1
- package/src/components/FormBuilder.story.vue +9 -4
- package/src/components/FormBuilder.vue +46 -253
- package/src/components/FormField.story.vue +9 -50
- package/src/components/FormulaInput.story.vue +2 -2
- package/src/components/FormulaInput.vue +5 -6
- package/src/components/GeneratedPathInput.vue +8 -9
- package/src/components/GeneratedPluginView.story.vue +1 -1
- package/src/components/GeneratedPluginView.vue +29 -22
- package/src/components/GeneratedResultRenderer.vue +16 -17
- package/src/components/InstrumentStateBadge.vue +1 -1
- package/src/components/InstrumentStatusPanels.story.vue +64 -0
- package/src/components/InstrumentStatusPanels.vue +133 -0
- package/src/components/JobsStatusTray.story.vue +2 -2
- package/src/components/JobsStatusTray.vue +5 -20
- package/src/components/LoadingSpinner.story.vue +11 -11
- package/src/components/LoadingSpinner.vue +7 -5
- package/src/components/MoleculeInput.story.vue +2 -2
- package/src/components/MoleculeInput.vue +3 -3
- package/src/components/NumberInput.story.vue +55 -15
- package/src/components/NumberInput.vue +83 -24
- package/src/components/PlateEditor.story.vue +51 -43
- package/src/components/PlateEditor.vue +97 -128
- package/src/components/PlotlyChart.story.vue +1 -1
- package/src/components/PlotlyChart.vue +6 -4
- package/src/components/PluginIcon.story.vue +6 -11
- package/src/components/PluginIcon.vue +7 -2
- package/src/components/PluginWorkspaceView.controls.ts +9 -29
- package/src/components/PluginWorkspaceView.navigation.ts +2 -23
- package/src/components/PluginWorkspaceView.props.ts +17 -151
- package/src/components/PluginWorkspaceView.shell.ts +13 -24
- package/src/components/PluginWorkspaceView.story.vue +65 -63
- package/src/components/PluginWorkspaceView.vue +21 -78
- package/src/components/PresenceAvatars.story.vue +75 -0
- package/src/components/PresenceAvatars.vue +114 -0
- package/src/components/ProgressBar.story.vue +7 -7
- package/src/components/ProgressBar.vue +4 -3
- package/src/components/ProtocolStep.presentation.ts +0 -11
- package/src/components/ProtocolStepEditor.vue +6 -5
- package/src/components/ProtocolStepParameterField.vue +15 -12
- package/src/components/RuntimeUpdateNotice.vue +1 -1
- package/src/components/SampleSelector.colors.ts +1 -1
- package/src/components/SampleSelector.story.vue +1 -1
- package/src/components/SampleSelector.vue +33 -43
- package/src/components/SampleSelectorGroupNode.vue +1 -1
- package/src/components/ScheduleCalendar.vue +4 -4
- package/src/components/SecretInput.story.vue +1 -1
- package/src/components/SecretInput.vue +16 -25
- package/src/components/SectionCard.story.vue +2 -2
- package/src/components/SegmentedControl.story.vue +7 -7
- package/src/components/SegmentedControl.vue +5 -3
- package/src/components/SequenceInput.story.vue +2 -2
- package/src/components/SequenceInput.vue +3 -3
- package/src/components/SequenceProgressBar.story.vue +9 -0
- package/src/components/SequenceProgressBar.vue +6 -1
- package/src/components/SettingsModal.schema.ts +1 -1
- package/src/components/SettingsModal.story.vue +13 -14
- package/src/components/SettingsModal.vue +31 -49
- package/src/components/SmartGroup.types.ts +4 -6
- package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
- package/src/components/SmartGroupFieldRecipe.vue +7 -5
- package/src/components/SmartGroupManual.story.vue +1 -1
- package/src/components/StaleFormBanner.story.vue +90 -0
- package/src/components/StaleFormBanner.vue +83 -0
- package/src/components/StepWizard.story.vue +33 -0
- package/src/components/StepWizard.vue +8 -1
- package/src/components/TagsInput.story.vue +7 -7
- package/src/components/TagsInput.vue +7 -6
- package/src/components/ThemeToggle.vue +5 -30
- package/src/components/TimeRangeInput.story.vue +1 -1
- package/src/components/TimeRangeInput.vue +10 -8
- package/src/components/VersionConflictDialog.story.vue +60 -0
- package/src/components/VersionConflictDialog.vue +79 -0
- package/src/components/WellPlate.geometry.ts +0 -38
- package/src/components/WellPlate.rendering.ts +0 -13
- package/src/components/WellPlate.story.vue +64 -51
- package/src/components/WellPlate.vue +68 -87
- package/src/components/index.ts +3 -105
- package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
- package/src/components/{AutoGroupModal.adapter.ts → internal/AutoGroupModalInternal.adapter.ts} +8 -8
- package/src/components/{AutoGroupModal.vue → internal/AutoGroupModalInternal.vue} +23 -23
- package/src/components/{BaseToggle.vue → internal/CheckboxSwitchInternal.vue} +8 -8
- package/src/components/internal/DataStateInternal.vue +1 -1
- package/src/components/internal/DatePickerDateInternal.vue +219 -0
- package/src/components/{DateTimePicker.vue → internal/DatePickerDateTimeInternal.vue} +12 -22
- package/src/components/{TimePicker.vue → internal/DatePickerTimeInternal.vue} +12 -15
- package/src/components/internal/FilePickerListInternal.vue +8 -14
- package/src/components/{FormActions.vue → internal/FormActionsInternal.vue} +2 -2
- package/src/components/internal/FormFieldRendererInternal.vue +1 -1
- package/src/components/internal/FormSchemaInternal.vue +253 -0
- package/src/components/{UnitInput.vue → internal/NumberUnitInputInternal.vue} +28 -28
- package/src/components/internal/PlateEditorBindingInternal.vue +8 -7
- package/src/components/internal/ResourcePickerListInternal.vue +48 -88
- package/src/components/internal/SelectMultipleInternal.vue +242 -0
- package/src/components/{SearchableSelect.vue → internal/SelectSearchableInternal.vue} +26 -11
- package/src/components/internal/WellEditPopupInternal.vue +4 -9
- package/src/components/internal/WorkspaceShellInternal.vue +3 -36
- package/src/components/internal/WorkspaceSidebarInternal.vue +4 -25
- package/src/{composables → components/internal}/autoGroup/classKey.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/classify.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/columns.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/compose.ts +3 -3
- package/src/{composables → components/internal}/autoGroup/cooccurrence.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/csv-shim.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/fingerprint.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/index.ts +1 -2
- package/src/{composables → components/internal}/autoGroup/template.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/tokenLength.ts +1 -1
- package/src/components/internal/generatedJobsApi.ts +1 -1
- package/src/{composables → components/internal}/useAutoGroup.ts +3 -57
- package/src/composables/componentSpecs.ts +62 -0
- package/src/composables/controlComponentBindings.ts +7 -0
- package/src/composables/controlSchemaAdapters.ts +45 -7
- package/src/composables/controlSchemaDoseDesign.ts +16 -5
- package/src/composables/controlSchemaModel.ts +1 -1
- package/src/composables/controlSchemaTypes.ts +31 -22
- package/src/composables/{usePluginClient.ts → createClient.ts} +54 -190
- package/src/composables/{useEventStream.ts → eventStream.ts} +3 -3
- package/src/composables/experiment-utils.ts +1 -39
- package/src/composables/formBuilderRegistry.ts +6 -12
- package/src/composables/index.ts +17 -480
- package/src/composables/platformContextHelpers.ts +0 -57
- package/src/composables/pluginEndpointBuilder.ts +8 -10
- package/src/composables/pluginIdentity.ts +31 -0
- package/src/composables/pluginWorkspaceModel.ts +16 -107
- package/src/composables/useApi.ts +18 -30
- package/src/composables/useAppExperiment.ts +26 -5
- package/src/composables/{useAnalysisArtifacts.ts → useArtifacts.ts} +18 -19
- package/src/composables/useCalendarGrid.ts +4 -3
- package/src/composables/useControlSchema.ts +5 -9
- package/src/composables/useControlWorkspace.ts +4 -7
- package/src/composables/useExperiment.ts +49 -0
- package/src/composables/useExperimentData.ts +4 -4
- package/src/composables/useExperimentSelector.ts +82 -36
- package/src/composables/useFileBrowser.ts +5 -13
- package/src/composables/useFilePicker.ts +2 -2
- package/src/composables/useFormBuilder.ts +3 -4
- package/src/composables/useJobCenter.ts +324 -0
- package/src/composables/{useGeneratedAnalysis.ts → useJobsEndpoint.ts} +53 -67
- package/src/composables/useMenuKeyboard.ts +1 -1
- package/src/composables/usePlatform.ts +95 -0
- package/src/composables/usePlatformFilePickerAdapter.ts +2 -1
- package/src/composables/usePluginWorkspace.ts +62 -107
- package/src/composables/usePresence.ts +110 -0
- package/src/composables/useRackEditor.ts +3 -3
- package/src/composables/useRealtime.ts +194 -0
- package/src/composables/{useRequestSyncState.ts → useRequest.ts} +25 -48
- package/src/composables/useScheduleCalendarLayout.ts +1 -1
- package/src/composables/useToast.ts +14 -11
- package/src/composables/useVersionedSave.ts +165 -0
- package/src/data.ts +130 -0
- package/src/deprecatedRootExports.ts +226 -0
- package/src/generated/schema.ts +1 -0
- package/src/host.ts +27 -0
- package/src/index.ts +2 -71
- package/src/install.ts +15 -2
- package/src/instrument.ts +1 -6
- package/src/lab.ts +128 -0
- package/src/permissions.ts +0 -27
- package/src/runtime.ts +145 -0
- package/src/shell.ts +103 -0
- package/src/stores/auth.ts +26 -162
- package/src/stores/experiment.ts +27 -1
- package/src/styles/components/action-menu.css +0 -5
- package/src/styles/components/adduct-text.css +13 -5
- package/src/styles/components/alert-box.css +39 -40
- package/src/styles/components/app-layout.css +6 -5
- package/src/styles/components/app-page-selector.css +3 -1
- package/src/styles/components/app-pill-nav.css +11 -12
- package/src/styles/components/app-sidebar.css +9 -18
- package/src/styles/components/app-top-bar.css +64 -103
- package/src/styles/components/artifact-save-dialog.css +153 -2
- package/src/styles/components/audit-trail.css +16 -19
- package/src/styles/components/avatar.css +6 -4
- package/src/styles/components/batch-progress-list.css +38 -36
- package/src/styles/components/button.css +40 -59
- package/src/styles/components/calendar.css +12 -12
- package/src/styles/components/chart-container.css +34 -23
- package/src/styles/components/checkbox.css +3 -13
- package/src/styles/components/collapsible-card.css +28 -30
- package/src/styles/components/confirm-dialog.css +31 -16
- package/src/styles/components/dataframe.css +12 -4
- package/src/styles/components/date-picker.css +80 -92
- package/src/styles/components/datetime-picker.css +31 -43
- package/src/styles/components/divider.css +20 -20
- package/src/styles/components/dose-calculator.css +3 -3
- package/src/styles/components/empty-state.css +23 -18
- package/src/styles/components/experiment-code-badge.css +2 -0
- package/src/styles/components/experiment-popover.css +174 -329
- package/src/styles/components/experiment-selector-modal.css +75 -56
- package/src/styles/components/file-picker.css +4 -4
- package/src/styles/components/file-uploader.css +38 -49
- package/src/styles/components/form-builder.css +3 -3
- package/src/styles/components/formula-input.css +1 -1
- package/src/styles/components/icon-button.css +19 -25
- package/src/styles/components/input.css +5 -4
- package/src/styles/components/instrument-monitor.css +13 -15
- package/src/styles/components/jobs-status-tray.css +31 -25
- package/src/styles/components/loading-spinner.css +9 -12
- package/src/styles/components/modal.css +2 -4
- package/src/styles/components/molecule-input.css +2 -2
- package/src/styles/components/multi-select.css +65 -112
- package/src/styles/components/number-input.css +26 -19
- package/src/styles/components/pill.css +43 -37
- package/src/styles/components/plate-editor.css +0 -1
- package/src/styles/components/plugin-icon.css +34 -22
- package/src/styles/components/popover.css +2 -2
- package/src/styles/components/presence-avatars.css +194 -0
- package/src/styles/components/progress-bar.css +2 -0
- package/src/styles/components/protocol-step-editor.css +1 -3
- package/src/styles/components/resource-card.css +2 -2
- package/src/styles/components/resource-picker-list.css +6 -57
- package/src/styles/components/sample-hierarchy-tree.css +4 -4
- package/src/styles/components/sample-selector.css +95 -79
- package/src/styles/components/schedule-calendar.css +8 -8
- package/src/styles/components/searchable-select.css +15 -12
- package/src/styles/components/section-card.css +28 -47
- package/src/styles/components/segmented-control.css +18 -15
- package/src/styles/components/select.css +3 -3
- package/src/styles/components/sequence-input.css +2 -2
- package/src/styles/components/sequence-progress-bar.css +17 -8
- package/src/styles/components/smart-group.css +19 -24
- package/src/styles/components/step-wizard.css +52 -16
- package/src/styles/components/tabs.css +2 -2
- package/src/styles/components/textarea.css +4 -4
- package/src/styles/components/time-picker.css +36 -21
- package/src/styles/components/toast.css +12 -10
- package/src/styles/components/toggle.css +3 -13
- package/src/styles/components/tooltip.css +10 -9
- package/src/styles/components/unit-input.css +8 -7
- package/src/styles/components/version-conflict.css +122 -0
- package/src/styles/components/well-plate.css +8 -8
- package/src/styles/index.css +2 -11
- package/src/styles/variables.css +107 -602
- package/src/types/analysisArtifactTypes.ts +1 -1
- package/src/types/auth.ts +0 -10
- package/src/types/componentLabTypes.ts +103 -53
- package/src/types/componentWorkflowTypes.ts +4 -33
- package/src/types/components.ts +148 -114
- package/src/types/form-builder.ts +4 -0
- package/src/types/generated/platformContext.ts +60 -0
- package/src/types/generated-ui.ts +6 -2
- package/src/types/index.ts +15 -53
- package/src/types/instrument.ts +27 -0
- package/src/types/platform.ts +25 -89
- package/src/utils/color.ts +1 -12
- package/src/utils/dose.ts +335 -0
- package/src/utils/experimentStatus.ts +43 -0
- package/src/utils/formula.ts +292 -0
- package/src/utils/integrationHost.ts +27 -0
- package/src/utils/plotlyTemplate.ts +6 -0
- package/src/utils/pluginSecrets.ts +23 -23
- package/src/utils/presenceAvatars.ts +53 -0
- package/src/utils/records.ts +0 -5
- package/src/{composables/useTimeUtils.ts → utils/time.ts} +21 -21
- package/dist/ResourcePickerListInternal-CFAw4vTZ.js +0 -605
- package/dist/ResourcePickerListInternal-CFAw4vTZ.js.map +0 -1
- package/dist/__tests__/composables/useBioTemplatePackWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useBioTemplatePresetWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useBioTemplateWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useChemicalFormula.test.d.ts +0 -1
- package/dist/__tests__/composables/useEventStream.test.d.ts +0 -1
- package/dist/__tests__/composables/useExperimentSave.test.d.ts +0 -1
- package/dist/__tests__/composables/useGeneratedAnalysis.test.d.ts +0 -1
- package/dist/__tests__/composables/useGroupAssignment.test.d.ts +0 -1
- package/dist/__tests__/composables/useJobsStatusTray.test.d.ts +0 -1
- package/dist/__tests__/composables/useMobileSupportGate.test.d.ts +0 -1
- package/dist/__tests__/composables/usePlatformContext.test.d.ts +0 -1
- package/dist/__tests__/composables/usePluginClient.test.d.ts +0 -1
- package/dist/__tests__/composables/usePresenceHeartbeat.test.d.ts +0 -1
- package/dist/__tests__/composables/useRequestSyncState.test.d.ts +0 -1
- package/dist/__tests__/composables/useRuntimeAlignment.test.d.ts +0 -1
- package/dist/__tests__/composables/useTemplateCollection.test.d.ts +0 -1
- package/dist/__tests__/composables/useTimeUtils.test.d.ts +0 -1
- package/dist/__tests__/docs/extractDocsTemplates.test.d.ts +0 -1
- package/dist/__tests__/templates/templates.test.d.ts +0 -1
- package/dist/__tests__/templates/templatesDeprecation.test.d.ts +0 -1
- package/dist/__tests__/utils/lcms.test.d.ts +0 -1
- package/dist/__tests__/utils/rack.test.d.ts +0 -1
- package/dist/components/AppAvatarMenu.vue.d.ts +0 -47
- package/dist/components/AppTopBar.navigation.d.ts +0 -10
- package/dist/components/BaseTextarea.vue.d.ts +0 -31
- package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +0 -112
- package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +0 -86
- package/dist/components/BioTemplatePresetWorkspaceView.vue.d.ts +0 -80
- package/dist/components/BioTemplateRenderer.vue.d.ts +0 -30
- package/dist/components/ControlWorkspaceView.vue.d.ts +0 -138
- package/dist/components/DoseDesignWorkspaceView.vue.d.ts +0 -140
- package/dist/components/ExperimentDataViewer.vue.d.ts +0 -54
- package/dist/components/ExperimentTimeline.vue.d.ts +0 -70
- package/dist/components/FitPanel.vue.d.ts +0 -56
- package/dist/components/GroupAssigner.vue.d.ts +0 -26
- package/dist/components/IconButton.vue.d.ts +0 -30
- package/dist/components/MobileSupportGate.vue.d.ts +0 -32
- package/dist/components/ReagentEditor.vue.d.ts +0 -31
- package/dist/components/ReagentList.presentation.d.ts +0 -17
- package/dist/components/ReagentList.vue.d.ts +0 -58
- package/dist/components/SampleLegend.vue.d.ts +0 -33
- package/dist/components/SmartGroupModal.vue.d.ts +0 -29
- package/dist/components/index.js +0 -5
- package/dist/components-BOA5e7kb.js +0 -23137
- package/dist/components-BOA5e7kb.js.map +0 -1
- package/dist/composables/flattenWorkspaceBindings.d.ts +0 -61
- package/dist/composables/index.js +0 -7
- package/dist/composables/useBioTemplateComponents.d.ts +0 -34
- package/dist/composables/useBioTemplateControls.d.ts +0 -10
- package/dist/composables/useBioTemplatePackWorkspace.d.ts +0 -56
- package/dist/composables/useBioTemplatePresetWorkspace.d.ts +0 -79
- package/dist/composables/useBioTemplateWorkspace.d.ts +0 -39
- package/dist/composables/useExperimentSave.d.ts +0 -69
- package/dist/composables/useGroupAssignment.d.ts +0 -35
- package/dist/composables/useJobsStatusTray.d.ts +0 -87
- package/dist/composables/useMobileSupportGate.d.ts +0 -14
- package/dist/composables/usePlatformContext.d.ts +0 -218
- package/dist/composables/usePresenceHeartbeat.d.ts +0 -49
- package/dist/composables/useRuntimeAlignment.d.ts +0 -44
- package/dist/composables/useTemplateCollection.d.ts +0 -62
- package/dist/composables/workspaceRecipes.d.ts +0 -189
- package/dist/composables-izSQH8Ky.js +0 -591
- package/dist/composables-izSQH8Ky.js.map +0 -1
- package/dist/experiment-D49y_Kro.js +0 -459
- package/dist/experiment-D49y_Kro.js.map +0 -1
- package/dist/experiment-utils-DTANyVKV.js.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/lcms.d.ts +0 -38
- package/dist/settings-BG6v13Zq.js +0 -341
- package/dist/settings-BG6v13Zq.js.map +0 -1
- package/dist/tailwind.preset.d.ts +0 -63
- package/dist/tailwind.preset.js +0 -71
- package/dist/tailwind.preset.js.map +0 -1
- package/dist/templates/adapters.d.ts +0 -19
- package/dist/templates/assayLookups.d.ts +0 -3
- package/dist/templates/assayMatrixAdapters.d.ts +0 -13
- package/dist/templates/assayMatrixBuilder.d.ts +0 -3
- package/dist/templates/assayNormalizers.d.ts +0 -4
- package/dist/templates/builderIdUtils.d.ts +0 -4
- package/dist/templates/builderPresetControls.d.ts +0 -11
- package/dist/templates/builderReadUtils.d.ts +0 -8
- package/dist/templates/builders.d.ts +0 -26
- package/dist/templates/calibrationCurveAdapters.d.ts +0 -7
- package/dist/templates/calibrationCurveBuilder.d.ts +0 -3
- package/dist/templates/calibrationNormalizers.d.ts +0 -5
- package/dist/templates/catalog.d.ts +0 -192
- package/dist/templates/componentBindingCatalog.d.ts +0 -25
- package/dist/templates/componentBindingHelpers.d.ts +0 -17
- package/dist/templates/componentBindings.d.ts +0 -97
- package/dist/templates/componentDoseResponseProps.d.ts +0 -3
- package/dist/templates/componentGenericProps.d.ts +0 -8
- package/dist/templates/componentPlateHelpers.d.ts +0 -11
- package/dist/templates/componentPlateMapProps.d.ts +0 -3
- package/dist/templates/componentPropsFactory.d.ts +0 -3
- package/dist/templates/componentQpcrPlateProps.d.ts +0 -3
- package/dist/templates/componentTargetResolvers.d.ts +0 -5
- package/dist/templates/componentTemplateProps.d.ts +0 -3
- package/dist/templates/controlSchemaClone.d.ts +0 -4
- package/dist/templates/controlSchemaConstants.d.ts +0 -10
- package/dist/templates/controlSchemaMerge.d.ts +0 -3
- package/dist/templates/controlSchemaTargets.d.ts +0 -17
- package/dist/templates/controlSchemaTypes.d.ts +0 -4
- package/dist/templates/controlSchemas.d.ts +0 -34
- package/dist/templates/defaultBioTemplateBuilder.d.ts +0 -3
- package/dist/templates/doseResponseAdapters.d.ts +0 -6
- package/dist/templates/doseResponseBuilder.d.ts +0 -3
- package/dist/templates/elisaAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates/flowCytometryAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates/flowCytometryPanelBuilder.d.ts +0 -3
- package/dist/templates/flowNormalizers.d.ts +0 -8
- package/dist/templates/flowPanelAdapters.d.ts +0 -7
- package/dist/templates/index.d.ts +0 -15
- package/dist/templates/index.js +0 -2
- package/dist/templates/instrumentRunAdapterHelpers.d.ts +0 -8
- package/dist/templates/instrumentRunAdapters.d.ts +0 -19
- package/dist/templates/instrumentRunBuilder.d.ts +0 -3
- package/dist/templates/lcmsBatchCollectionBuilder.d.ts +0 -3
- package/dist/templates/lookup.d.ts +0 -4
- package/dist/templates/packs.d.ts +0 -21
- package/dist/templates/plateMapAdapters.d.ts +0 -5
- package/dist/templates/plateMapBuilder.d.ts +0 -3
- package/dist/templates/presetControlSchemas.d.ts +0 -534
- package/dist/templates/presets.d.ts +0 -106
- package/dist/templates/protocolAdapters.d.ts +0 -9
- package/dist/templates/protocolNormalizers.d.ts +0 -6
- package/dist/templates/protocolStepsBuilder.d.ts +0 -3
- package/dist/templates/qpcrAdapters.d.ts +0 -9
- package/dist/templates/qpcrExpressionCollectionBuilder.d.ts +0 -3
- package/dist/templates/qpcrPlateBuilder.d.ts +0 -3
- package/dist/templates/reagentAdapters.d.ts +0 -9
- package/dist/templates/reagentListBuilder.d.ts +0 -3
- package/dist/templates/runNormalizers.d.ts +0 -10
- package/dist/templates/sampleNormalizers.d.ts +0 -4
- package/dist/templates/samplePrepAdapters.d.ts +0 -7
- package/dist/templates/samplePrepBuilder.d.ts +0 -3
- package/dist/templates/sampleSheetAdapters.d.ts +0 -9
- package/dist/templates/sampleSheetBuilder.d.ts +0 -3
- package/dist/templates/targetedMetabolomicsCollectionBuilder.d.ts +0 -3
- package/dist/templates/targetedMetabolomicsHelpers.d.ts +0 -5
- package/dist/templates/templateAdapterTypes.d.ts +0 -48
- package/dist/templates/templateControlSchemas.d.ts +0 -400
- package/dist/templates/templateCreateOptions.d.ts +0 -165
- package/dist/templates/templateEnvelopes.d.ts +0 -17
- package/dist/templates/templatePackCollectionBuilder.d.ts +0 -3
- package/dist/templates/templatePresetCollectionBuilder.d.ts +0 -20
- package/dist/templates/templateQpcrTypes.d.ts +0 -42
- package/dist/templates/templateValidators.d.ts +0 -25
- package/dist/templates/timeCourseAdapters.d.ts +0 -9
- package/dist/templates/timeCourseBuilder.d.ts +0 -3
- package/dist/templates/types.d.ts +0 -304
- package/dist/templates/wellPlateScreenCollectionBuilder.d.ts +0 -3
- package/dist/templates/westernBlotAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates-B2DB0MCM.js +0 -12304
- package/dist/templates-B2DB0MCM.js.map +0 -1
- package/dist/utils/rack.d.ts +0 -63
- package/dist/validation-C_eH_vIg.js +0 -7999
- package/dist/validation-C_eH_vIg.js.map +0 -1
- package/src/__tests__/components/AppAvatarMenu.test.ts +0 -186
- package/src/__tests__/components/AppTopBar.navigation.test.ts +0 -68
- package/src/__tests__/components/AppTopBarPresence.test.ts +0 -47
- package/src/__tests__/components/BioTemplateExperimentWorkspaceView.test.ts +0 -159
- package/src/__tests__/components/BioTemplatePackWorkspaceView.test.ts +0 -192
- package/src/__tests__/components/BioTemplatePresetWorkspaceView.test.ts +0 -307
- package/src/__tests__/components/BioTemplateRenderer.test.ts +0 -96
- package/src/__tests__/components/ControlWorkspaceView.test.ts +0 -1100
- package/src/__tests__/components/DoseDesignWorkspaceView.test.ts +0 -183
- package/src/__tests__/components/ExperimentTimeline.test.ts +0 -108
- package/src/__tests__/components/FitPanel.test.ts +0 -96
- package/src/__tests__/components/GroupAssigner.test.ts +0 -101
- package/src/__tests__/components/MobileSupportGate.test.ts +0 -120
- package/src/__tests__/components/MultiSelect.test.ts +0 -54
- package/src/__tests__/components/ReagentList.presentation.test.ts +0 -73
- package/src/__tests__/components/ReagentList.test.ts +0 -167
- package/src/__tests__/components/SampleLegend.test.ts +0 -18
- package/src/__tests__/components/SmartGroupModal.test.ts +0 -69
- package/src/__tests__/components/WellPlate.sampleTypeIndicator.test.ts +0 -58
- package/src/__tests__/components/iconButtonIconSizing.test.ts +0 -18
- package/src/__tests__/composables/useBioTemplatePackWorkspace.test.ts +0 -125
- package/src/__tests__/composables/useBioTemplatePresetWorkspace.test.ts +0 -199
- package/src/__tests__/composables/useBioTemplateWorkspace.test.ts +0 -104
- package/src/__tests__/composables/useExperimentSave.test.ts +0 -542
- package/src/__tests__/composables/useGroupAssignment.test.ts +0 -73
- package/src/__tests__/composables/useMobileSupportGate.test.ts +0 -74
- package/src/__tests__/composables/usePlatformContext.test.ts +0 -148
- package/src/__tests__/composables/usePresenceHeartbeat.test.ts +0 -164
- package/src/__tests__/composables/useRuntimeAlignment.test.ts +0 -145
- package/src/__tests__/composables/useTemplateCollection.test.ts +0 -147
- package/src/__tests__/docs/extractDocsTemplates.test.ts +0 -53
- package/src/__tests__/fixtures/templates/dose-response.json +0 -81
- package/src/__tests__/fixtures/templates/plate-map.json +0 -54
- package/src/__tests__/fixtures/templates/qpcr-plate.json +0 -96
- package/src/__tests__/fixtures/templates/sample-sheet.json +0 -71
- package/src/__tests__/templates/templates.test.ts +0 -1235
- package/src/__tests__/templates/templatesDeprecation.test.ts +0 -78
- package/src/__tests__/utils/lcms.test.ts +0 -73
- package/src/__tests__/utils/rack.test.ts +0 -120
- package/src/components/AppAvatarMenu.story.vue +0 -155
- package/src/components/AppAvatarMenu.vue +0 -154
- package/src/components/AppTopBar.navigation.ts +0 -60
- package/src/components/AutoGroupModal.story.vue +0 -458
- package/src/components/BaseTextarea.vue +0 -58
- package/src/components/BioTemplateExperimentWorkspaceView.story.vue +0 -123
- package/src/components/BioTemplateExperimentWorkspaceView.vue +0 -339
- package/src/components/BioTemplatePackWorkspaceView.story.vue +0 -107
- package/src/components/BioTemplatePackWorkspaceView.vue +0 -180
- package/src/components/BioTemplatePresetWorkspaceView.story.vue +0 -163
- package/src/components/BioTemplatePresetWorkspaceView.vue +0 -403
- package/src/components/BioTemplateRenderer.story.vue +0 -57
- package/src/components/BioTemplateRenderer.vue +0 -64
- package/src/components/ControlWorkspaceView.story.vue +0 -347
- package/src/components/ControlWorkspaceView.vue +0 -370
- package/src/components/DoseDesignWorkspaceView.story.vue +0 -77
- package/src/components/DoseDesignWorkspaceView.vue +0 -243
- package/src/components/ExperimentDataViewer.story.vue +0 -177
- package/src/components/ExperimentDataViewer.vue +0 -313
- package/src/components/ExperimentTimeline.story.vue +0 -208
- package/src/components/ExperimentTimeline.vue +0 -383
- package/src/components/FitPanel.story.vue +0 -191
- package/src/components/FitPanel.vue +0 -168
- package/src/components/FormActions.story.vue +0 -96
- package/src/components/GroupAssigner.story.vue +0 -83
- package/src/components/GroupAssigner.vue +0 -319
- package/src/components/IconButton.story.vue +0 -140
- package/src/components/IconButton.vue +0 -69
- package/src/components/MobileSupportGate.story.vue +0 -52
- package/src/components/MobileSupportGate.vue +0 -111
- package/src/components/MultiSelect.vue +0 -119
- package/src/components/ReagentEditor.story.vue +0 -153
- package/src/components/ReagentEditor.vue +0 -414
- package/src/components/ReagentList.presentation.ts +0 -106
- package/src/components/ReagentList.story.vue +0 -155
- package/src/components/ReagentList.vue +0 -438
- package/src/components/SampleLegend.story.vue +0 -91
- package/src/components/SampleLegend.vue +0 -121
- package/src/components/SmartGroupModal.story.vue +0 -61
- package/src/components/SmartGroupModal.vue +0 -61
- package/src/components/StatusIndicator.story.vue +0 -99
- package/src/components/StatusIndicator.vue +0 -36
- package/src/components/UnitInput.story.vue +0 -194
- package/src/composables/flattenWorkspaceBindings.ts +0 -104
- package/src/composables/useBioTemplateComponents.ts +0 -117
- package/src/composables/useBioTemplateControls.ts +0 -45
- package/src/composables/useBioTemplatePackWorkspace.ts +0 -201
- package/src/composables/useBioTemplatePresetWorkspace.ts +0 -329
- package/src/composables/useBioTemplateWorkspace.ts +0 -120
- package/src/composables/useChemicalFormula.ts +0 -301
- package/src/composables/useDoseCalculator.ts +0 -370
- package/src/composables/useExperimentSave.ts +0 -348
- package/src/composables/useGroupAssignment.ts +0 -152
- package/src/composables/useJobsStatusTray.ts +0 -493
- package/src/composables/useMobileSupportGate.ts +0 -80
- package/src/composables/usePlatformContext.ts +0 -299
- package/src/composables/usePresenceHeartbeat.ts +0 -201
- package/src/composables/useRuntimeAlignment.ts +0 -184
- package/src/composables/useTemplateCollection.ts +0 -233
- package/src/composables/workspaceRecipes.ts +0 -268
- package/src/lcms.ts +0 -119
- package/src/styles/components/app-avatar-menu.css +0 -121
- package/src/styles/components/experiment-data-viewer.css +0 -138
- package/src/styles/components/experiment-timeline.css +0 -572
- package/src/styles/components/fit-panel.css +0 -153
- package/src/styles/components/group-assigner.css +0 -198
- package/src/styles/components/mobile-support-gate.css +0 -117
- package/src/styles/components/reagent-editor.css +0 -501
- package/src/styles/components/reagent-list.css +0 -408
- package/src/styles/components/sample-legend.css +0 -212
- package/src/styles/components/status-indicator.css +0 -66
- package/src/styles/components/theme-toggle.css +0 -6
- package/src/tailwind.preset.ts +0 -66
- package/src/templates/adapters.ts +0 -141
- package/src/templates/assayLookups.ts +0 -33
- package/src/templates/assayMatrixAdapters.ts +0 -85
- package/src/templates/assayMatrixBuilder.ts +0 -60
- package/src/templates/assayNormalizers.ts +0 -34
- package/src/templates/builderIdUtils.ts +0 -20
- package/src/templates/builderPresetControls.ts +0 -166
- package/src/templates/builderReadUtils.ts +0 -55
- package/src/templates/builders.ts +0 -122
- package/src/templates/calibrationCurveAdapters.ts +0 -62
- package/src/templates/calibrationCurveBuilder.ts +0 -100
- package/src/templates/calibrationNormalizers.ts +0 -60
- package/src/templates/catalog.ts +0 -249
- package/src/templates/componentBindingCatalog.ts +0 -90
- package/src/templates/componentBindingHelpers.ts +0 -93
- package/src/templates/componentBindings.ts +0 -279
- package/src/templates/componentDoseResponseProps.ts +0 -41
- package/src/templates/componentGenericProps.ts +0 -77
- package/src/templates/componentPlateHelpers.ts +0 -52
- package/src/templates/componentPlateMapProps.ts +0 -34
- package/src/templates/componentPropsFactory.ts +0 -21
- package/src/templates/componentQpcrPlateProps.ts +0 -27
- package/src/templates/componentTargetResolvers.ts +0 -67
- package/src/templates/componentTemplateProps.ts +0 -78
- package/src/templates/controlSchemaClone.ts +0 -32
- package/src/templates/controlSchemaConstants.ts +0 -11
- package/src/templates/controlSchemaMerge.ts +0 -40
- package/src/templates/controlSchemaTargets.ts +0 -85
- package/src/templates/controlSchemaTypes.ts +0 -20
- package/src/templates/controlSchemas.ts +0 -113
- package/src/templates/defaultBioTemplateBuilder.ts +0 -125
- package/src/templates/doseResponseAdapters.ts +0 -36
- package/src/templates/doseResponseBuilder.ts +0 -45
- package/src/templates/elisaAssayCollectionBuilder.ts +0 -63
- package/src/templates/flowCytometryAssayCollectionBuilder.ts +0 -42
- package/src/templates/flowCytometryPanelBuilder.ts +0 -54
- package/src/templates/flowNormalizers.ts +0 -58
- package/src/templates/flowPanelAdapters.ts +0 -61
- package/src/templates/index.ts +0 -330
- package/src/templates/instrumentRunAdapterHelpers.ts +0 -94
- package/src/templates/instrumentRunAdapters.ts +0 -174
- package/src/templates/instrumentRunBuilder.ts +0 -98
- package/src/templates/lcmsBatchCollectionBuilder.ts +0 -39
- package/src/templates/lookup.ts +0 -18
- package/src/templates/packs.ts +0 -166
- package/src/templates/plateMapAdapters.ts +0 -38
- package/src/templates/plateMapBuilder.ts +0 -44
- package/src/templates/presetControlSchemas.ts +0 -258
- package/src/templates/presets.ts +0 -183
- package/src/templates/protocolAdapters.ts +0 -73
- package/src/templates/protocolNormalizers.ts +0 -37
- package/src/templates/protocolStepsBuilder.ts +0 -37
- package/src/templates/qpcrAdapters.ts +0 -108
- package/src/templates/qpcrExpressionCollectionBuilder.ts +0 -34
- package/src/templates/qpcrPlateBuilder.ts +0 -97
- package/src/templates/reagentAdapters.ts +0 -81
- package/src/templates/reagentListBuilder.ts +0 -31
- package/src/templates/runNormalizers.ts +0 -63
- package/src/templates/sampleNormalizers.ts +0 -58
- package/src/templates/samplePrepAdapters.ts +0 -66
- package/src/templates/samplePrepBuilder.ts +0 -52
- package/src/templates/sampleSheetAdapters.ts +0 -79
- package/src/templates/sampleSheetBuilder.ts +0 -24
- package/src/templates/targetedMetabolomicsCollectionBuilder.ts +0 -80
- package/src/templates/targetedMetabolomicsHelpers.ts +0 -102
- package/src/templates/templateAdapterTypes.ts +0 -58
- package/src/templates/templateControlSchemas.ts +0 -320
- package/src/templates/templateCreateOptions.ts +0 -208
- package/src/templates/templateEnvelopes.ts +0 -145
- package/src/templates/templatePackCollectionBuilder.ts +0 -24
- package/src/templates/templatePresetCollectionBuilder.ts +0 -141
- package/src/templates/templateQpcrTypes.ts +0 -48
- package/src/templates/templateValidators.ts +0 -426
- package/src/templates/timeCourseAdapters.ts +0 -77
- package/src/templates/timeCourseBuilder.ts +0 -65
- package/src/templates/types.ts +0 -493
- package/src/templates/wellPlateScreenCollectionBuilder.ts +0 -37
- package/src/templates/westernBlotAssayCollectionBuilder.ts +0 -69
- package/src/utils/rack.ts +0 -225
- /package/dist/__tests__/components/{AppAvatarMenu.test.d.ts → BaseButton.test.d.ts} +0 -0
- /package/dist/__tests__/components/{AppTopBar.navigation.test.d.ts → BaseCheckbox.switch.test.d.ts} +0 -0
- /package/dist/__tests__/components/{AppTopBarPresence.test.d.ts → BaseSelect.multiple.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BaseToggle.test.d.ts → BaseSelect.searchable.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplateExperimentWorkspaceView.test.d.ts → ConfirmDialog.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplatePackWorkspaceView.test.d.ts → DatePicker.datetime.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplatePresetWorkspaceView.test.d.ts → DatePicker.time.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplateRenderer.test.d.ts → FormSchemaInternal.test.d.ts} +0 -0
- /package/dist/__tests__/components/{ControlWorkspaceView.test.d.ts → InstrumentStatusPanels.test.d.ts} +0 -0
- /package/dist/__tests__/components/{DateTimePicker.test.d.ts → NumberInput.units.test.d.ts} +0 -0
- /package/dist/__tests__/components/{DoseDesignWorkspaceView.test.d.ts → PresenceAvatars.test.d.ts} +0 -0
- /package/dist/__tests__/components/{ExperimentTimeline.test.d.ts → StaleFormBanner.test.d.ts} +0 -0
- /package/dist/__tests__/components/{FitPanel.test.d.ts → deprecationTags.test.d.ts} +0 -0
- /package/dist/__tests__/{components/GroupAssigner.test.d.ts → composables/createClient.test.d.ts} +0 -0
- /package/dist/__tests__/{components/MobileSupportGate.test.d.ts → composables/eventStream.test.d.ts} +0 -0
- /package/dist/__tests__/{components/MultiSelect.test.d.ts → composables/useArtifacts.test.d.ts} +0 -0
- /package/dist/__tests__/{components/ReagentList.presentation.test.d.ts → composables/useExperiment.test.d.ts} +0 -0
- /package/dist/__tests__/{components/ReagentList.test.d.ts → composables/useJobCenter.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SampleLegend.test.d.ts → composables/useJobsEndpoint.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SearchableSelect.test.d.ts → composables/usePlatform.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SmartGroupModal.test.d.ts → composables/usePresence.test.d.ts} +0 -0
- /package/dist/__tests__/{components/TimePicker.test.d.ts → composables/useRealtime.test.d.ts} +0 -0
- /package/dist/__tests__/{components/UnitInput.test.d.ts → composables/useRequest.test.d.ts} +0 -0
- /package/dist/__tests__/{components/WellPlate.sampleTypeIndicator.test.d.ts → composables/useVersionedSave.test.d.ts} +0 -0
- /package/dist/__tests__/{components/iconButtonIconSizing.test.d.ts → utils/formula.test.d.ts} +0 -0
- /package/dist/__tests__/{composables/useAnalysisArtifacts.test.d.ts → utils/time.test.d.ts} +0 -0
- /package/dist/components/{FormActions.vue.d.ts → internal/FormActionsInternal.vue.d.ts} +0 -0
- /package/dist/{composables → components/internal}/autoGroup/colors.d.ts +0 -0
- /package/dist/{composables → components/internal}/autoGroup/index.d.ts +0 -0
- /package/dist/{composables → components/internal}/autoGroup/tokenize.d.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/colors.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/tokenize.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/vocab.json +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
/** Interactive 96/384-well plate grid with drag-to-select, heatmap overlays, per-well editing, and sample-color mapping. */
|
|
3
3
|
import { computed } from 'vue'
|
|
4
|
-
import type {
|
|
4
|
+
import type { Well, WellEditField, WellEditData, WellSampleDropData, WellClassValue, WellPlateSpec } from '../types'
|
|
5
|
+
import { applySpecDefaults } from '../composables/componentSpecs'
|
|
5
6
|
import { useEventListener } from '../composables/useEventListener'
|
|
6
7
|
import WellEditPopupInternal from './internal/WellEditPopupInternal.vue'
|
|
7
8
|
import {
|
|
@@ -26,7 +27,6 @@ import {
|
|
|
26
27
|
import { useWellPlateInteraction } from './WellPlate.interaction'
|
|
27
28
|
import {
|
|
28
29
|
sampleTint,
|
|
29
|
-
warnSampleTypeIndicatorDeprecated,
|
|
30
30
|
wellBadge,
|
|
31
31
|
wellClasses,
|
|
32
32
|
wellLabel,
|
|
@@ -36,35 +36,14 @@ import { DEFAULT_WELL_LEGEND_ITEMS } from './WellPlate.legend'
|
|
|
36
36
|
import DataStateInternal from './internal/DataStateInternal.vue'
|
|
37
37
|
|
|
38
38
|
interface Props {
|
|
39
|
+
/** Structure built with defineWellPlate(). Optional: every option has a default. */
|
|
40
|
+
spec?: WellPlateSpec
|
|
41
|
+
/** Selected well ids. Bind with `v-model`. */
|
|
39
42
|
modelValue?: string[]
|
|
40
|
-
|
|
43
|
+
/** Well data keyed by well id. */
|
|
41
44
|
wells?: Record<string, Partial<Well>>
|
|
42
|
-
selectionMode?: WellPlateSelectionMode
|
|
43
|
-
showLabels?: boolean
|
|
44
|
-
showWellIds?: boolean
|
|
45
|
-
/**
|
|
46
|
-
* @deprecated No-op since MINT 1.3; removed in MINT 1.4. Wells show the 3a
|
|
47
|
-
* sample-type marker (shape per type, `Q` / `i` glyphs for QC / iQC) regardless.
|
|
48
|
-
*/
|
|
49
|
-
showSampleTypeIndicator?: boolean
|
|
50
|
-
heatmap?: HeatmapConfig
|
|
51
|
-
sampleColors?: Record<string, string>
|
|
52
|
-
zoom?: number
|
|
53
45
|
disabled?: boolean
|
|
54
46
|
readonly?: boolean
|
|
55
|
-
size?: WellPlateSize
|
|
56
|
-
wellShape?: WellShape
|
|
57
|
-
showWellLabels?: boolean
|
|
58
|
-
showBadges?: boolean
|
|
59
|
-
editable?: boolean
|
|
60
|
-
editFields?: WellEditField[]
|
|
61
|
-
defaultInjectionVolume?: number
|
|
62
|
-
showLegend?: boolean
|
|
63
|
-
legendItems?: WellLegendItem[]
|
|
64
|
-
columnConditions?: ColumnCondition[]
|
|
65
|
-
rowConditions?: RowCondition[]
|
|
66
|
-
allowSampleDrop?: boolean
|
|
67
|
-
sampleDropParser?: WellSampleDropParser
|
|
68
47
|
/** Replace the plate grid with a loading placeholder. */
|
|
69
48
|
loading?: boolean
|
|
70
49
|
/**
|
|
@@ -77,42 +56,37 @@ interface Props {
|
|
|
77
56
|
* state only replaces the grid when this message is supplied and no wells
|
|
78
57
|
* carry data.
|
|
79
58
|
*/
|
|
80
|
-
|
|
81
|
-
/** Add semantic classes to individual wells without overloading sample data. */
|
|
82
|
-
wellClass?: WellClassResolver
|
|
83
|
-
/** Add or override individual well styles after heatmap/sample styling. */
|
|
84
|
-
wellStyle?: WellStyleResolver
|
|
59
|
+
emptyText?: string
|
|
85
60
|
}
|
|
86
61
|
|
|
87
62
|
const props = withDefaults(defineProps<Props>(), {
|
|
63
|
+
spec: () => ({}),
|
|
88
64
|
modelValue: () => [],
|
|
89
|
-
format: 96,
|
|
90
65
|
wells: () => ({}),
|
|
66
|
+
disabled: false,
|
|
67
|
+
readonly: false,
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
const config = computed(() => applySpecDefaults({
|
|
71
|
+
format: 96,
|
|
91
72
|
selectionMode: 'multiple',
|
|
92
73
|
showLabels: true,
|
|
93
74
|
showWellIds: false,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
sampleColors: () => ({}),
|
|
75
|
+
heatmap: { enabled: false },
|
|
76
|
+
sampleColors: {},
|
|
97
77
|
zoom: 1,
|
|
98
|
-
disabled: false,
|
|
99
|
-
readonly: false,
|
|
100
78
|
size: 'md',
|
|
101
79
|
wellShape: 'rounded',
|
|
102
80
|
showWellLabels: false,
|
|
103
81
|
showBadges: false,
|
|
104
82
|
editable: false,
|
|
105
|
-
editFields:
|
|
83
|
+
editFields: ['label', 'sampleType', 'injectionVolume', 'injectionCount', 'customMethod'],
|
|
106
84
|
defaultInjectionVolume: 5,
|
|
107
85
|
showLegend: false,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
rowConditions: () => [],
|
|
86
|
+
columnConditions: [],
|
|
87
|
+
rowConditions: [],
|
|
111
88
|
allowSampleDrop: false,
|
|
112
|
-
|
|
113
|
-
})
|
|
114
|
-
|
|
115
|
-
if (props.showSampleTypeIndicator) warnSampleTypeIndicatorDeprecated()
|
|
89
|
+
}, props.spec))
|
|
116
90
|
|
|
117
91
|
const emit = defineEmits<{
|
|
118
92
|
'update:modelValue': [wellIds: string[]]
|
|
@@ -147,7 +121,7 @@ defineSlots<{
|
|
|
147
121
|
empty?: () => unknown
|
|
148
122
|
}>()
|
|
149
123
|
|
|
150
|
-
const plateConfig = computed(() => PLATE_CONFIGS[
|
|
124
|
+
const plateConfig = computed(() => PLATE_CONFIGS[config.value.format])
|
|
151
125
|
|
|
152
126
|
const rowLabels = computed(() => createPlateRowLabels(plateConfig.value))
|
|
153
127
|
|
|
@@ -155,19 +129,19 @@ const colLabels = computed(() => createPlateColumnLabels(plateConfig.value))
|
|
|
155
129
|
|
|
156
130
|
const wellGrid = computed(() => createWellGrid(plateConfig.value, rowLabels.value, props.wells))
|
|
157
131
|
|
|
158
|
-
const sizeConfig = computed(() => WELL_PLATE_SIZE_CONFIGS[
|
|
132
|
+
const sizeConfig = computed(() => WELL_PLATE_SIZE_CONFIGS[config.value.size])
|
|
159
133
|
|
|
160
|
-
const isFillMode = computed(() =>
|
|
134
|
+
const isFillMode = computed(() => config.value.size === 'fill')
|
|
161
135
|
|
|
162
|
-
const activeLegendItems = computed(() =>
|
|
136
|
+
const activeLegendItems = computed(() => config.value.legendItems ?? DEFAULT_WELL_LEGEND_ITEMS)
|
|
163
137
|
|
|
164
138
|
// --- Condition header helpers ---
|
|
165
139
|
|
|
166
|
-
const hasColumnConditions = computed(() =>
|
|
167
|
-
const hasRowConditions = computed(() =>
|
|
140
|
+
const hasColumnConditions = computed(() => config.value.columnConditions.length > 0)
|
|
141
|
+
const hasRowConditions = computed(() => config.value.rowConditions.length > 0)
|
|
168
142
|
|
|
169
|
-
const colConditionMap = computed(() => createColumnConditionMap(
|
|
170
|
-
const rowConditionMap = computed(() => createRowConditionMap(
|
|
143
|
+
const colConditionMap = computed(() => createColumnConditionMap(config.value.columnConditions))
|
|
144
|
+
const rowConditionMap = computed(() => createRowConditionMap(config.value.rowConditions))
|
|
171
145
|
const colConditionSpans = computed(() => createColumnConditionSpans(colLabels.value, colConditionMap.value))
|
|
172
146
|
const rowConditionSpans = computed(() => createRowConditionSpans(rowLabels.value, rowConditionMap.value))
|
|
173
147
|
const rowConditionSpanByRow = computed(() => createRowConditionSpanByRow(rowConditionSpans.value))
|
|
@@ -200,12 +174,12 @@ const {
|
|
|
200
174
|
moveAnnouncerStyle,
|
|
201
175
|
} = useWellPlateInteraction({
|
|
202
176
|
modelValue: () => props.modelValue,
|
|
203
|
-
selectionMode: () =>
|
|
177
|
+
selectionMode: () => config.value.selectionMode,
|
|
204
178
|
disabled: () => props.disabled,
|
|
205
179
|
readonly: () => props.readonly,
|
|
206
|
-
editable: () =>
|
|
207
|
-
allowSampleDrop: () =>
|
|
208
|
-
sampleDropParser: () =>
|
|
180
|
+
editable: () => config.value.editable,
|
|
181
|
+
allowSampleDrop: () => config.value.allowSampleDrop,
|
|
182
|
+
sampleDropParser: () => config.value.sampleDropParser,
|
|
209
183
|
rowLabels: () => rowLabels.value,
|
|
210
184
|
wellGrid: () => wellGrid.value,
|
|
211
185
|
emitSelected: (wellIds) => {
|
|
@@ -223,8 +197,8 @@ const {
|
|
|
223
197
|
|
|
224
198
|
function getWellClasses(well: Well): WellClassValue[] {
|
|
225
199
|
const base = wellClasses(well, {
|
|
226
|
-
wellShape:
|
|
227
|
-
selectionMode:
|
|
200
|
+
wellShape: config.value.wellShape,
|
|
201
|
+
selectionMode: config.value.selectionMode,
|
|
228
202
|
selected: isSelected(well.id),
|
|
229
203
|
dragOver: dragSelectedWells.value.has(well.id),
|
|
230
204
|
hovered: hoveredWell.value === well.id,
|
|
@@ -233,27 +207,27 @@ function getWellClasses(well: Well): WellClassValue[] {
|
|
|
233
207
|
dragSource: dragSourceWell.value === well.id,
|
|
234
208
|
dragTarget: dragTargetWell.value === well.id,
|
|
235
209
|
})
|
|
236
|
-
const custom =
|
|
210
|
+
const custom = config.value.wellClass?.(well)
|
|
237
211
|
return custom ? [base, custom] : [base]
|
|
238
212
|
}
|
|
239
213
|
|
|
240
214
|
function getWellStyle(well: Well): Record<string, string | number | undefined> {
|
|
241
215
|
return {
|
|
242
216
|
...wellStyle(well, {
|
|
243
|
-
heatmap:
|
|
244
|
-
sampleColors:
|
|
217
|
+
heatmap: config.value.heatmap,
|
|
218
|
+
sampleColors: config.value.sampleColors,
|
|
245
219
|
}),
|
|
246
|
-
...
|
|
220
|
+
...config.value.wellStyle?.(well),
|
|
247
221
|
}
|
|
248
222
|
}
|
|
249
223
|
|
|
250
224
|
function getWellLabel(well: Well): string | undefined {
|
|
251
|
-
return wellLabel(well,
|
|
225
|
+
return wellLabel(well, config.value.showWellLabels)
|
|
252
226
|
}
|
|
253
227
|
|
|
254
228
|
// A group is otherwise shown by color alone; name it from the legend.
|
|
255
229
|
function getWellGroupName(well: Well): string | undefined {
|
|
256
|
-
return well.group && (
|
|
230
|
+
return well.group && (config.value.legendItems?.find(item => item.type === well.group)?.label ?? well.group)
|
|
257
231
|
}
|
|
258
232
|
|
|
259
233
|
// Names the sample even when the cell is too small to draw it.
|
|
@@ -264,21 +238,21 @@ function getWellAriaLabel(well: Well): string {
|
|
|
264
238
|
}
|
|
265
239
|
|
|
266
240
|
function getWellBadge(well: Well): { text: string; color: string } | null {
|
|
267
|
-
return wellBadge(well,
|
|
241
|
+
return wellBadge(well, config.value.showBadges)
|
|
268
242
|
}
|
|
269
243
|
|
|
270
244
|
useEventListener(() => document, 'mouseup', handleMouseUp)
|
|
271
245
|
|
|
272
246
|
const containerStyle = computed(() =>
|
|
273
247
|
isFillMode.value ? {} : {
|
|
274
|
-
transform: `scale(${
|
|
248
|
+
transform: `scale(${config.value.zoom})`,
|
|
275
249
|
transformOrigin: 'top left',
|
|
276
250
|
}
|
|
277
251
|
)
|
|
278
252
|
|
|
279
|
-
/** Empty state is opt-in: it needs an `
|
|
253
|
+
/** Empty state is opt-in: it needs an `emptyText` and a plate with no well data. */
|
|
280
254
|
const showEmptyState = computed(() =>
|
|
281
|
-
Boolean(props.
|
|
255
|
+
Boolean(props.emptyText) && Object.keys(props.wells).length === 0,
|
|
282
256
|
)
|
|
283
257
|
|
|
284
258
|
const tableStyle = computed(() => ({
|
|
@@ -308,7 +282,7 @@ const tableStyle = computed(() => ({
|
|
|
308
282
|
|
|
309
283
|
<div v-else-if="showEmptyState" class="mint-well-plate__state">
|
|
310
284
|
<slot name="empty">
|
|
311
|
-
<DataStateInternal state="empty" :title="
|
|
285
|
+
<DataStateInternal state="empty" :title="emptyText" />
|
|
312
286
|
</slot>
|
|
313
287
|
</div>
|
|
314
288
|
|
|
@@ -317,7 +291,7 @@ const tableStyle = computed(() => ({
|
|
|
317
291
|
<table
|
|
318
292
|
class="mint-well-plate__table"
|
|
319
293
|
role="grid"
|
|
320
|
-
:aria-label="`${
|
|
294
|
+
:aria-label="`${config.format}-well plate`"
|
|
321
295
|
:style="tableStyle"
|
|
322
296
|
>
|
|
323
297
|
<!-- Column condition label row (drug name + unit) -->
|
|
@@ -345,7 +319,7 @@ const tableStyle = computed(() => ({
|
|
|
345
319
|
</tr>
|
|
346
320
|
</thead>
|
|
347
321
|
<!-- Column headers (with concentration overlay when conditions present) -->
|
|
348
|
-
<thead v-if="
|
|
322
|
+
<thead v-if="config.showLabels">
|
|
349
323
|
<tr>
|
|
350
324
|
<th :style="{ width: sizeConfig.headerWidth, height: sizeConfig.headerHeight }"></th>
|
|
351
325
|
<!-- Spacer for row condition column in column header row -->
|
|
@@ -399,7 +373,7 @@ const tableStyle = computed(() => ({
|
|
|
399
373
|
</template>
|
|
400
374
|
<!-- Row header (with concentration overlay when conditions present) -->
|
|
401
375
|
<td
|
|
402
|
-
v-if="
|
|
376
|
+
v-if="config.showLabels"
|
|
403
377
|
class="mint-well-plate__row-header"
|
|
404
378
|
:style="{
|
|
405
379
|
width: sizeConfig.headerWidth,
|
|
@@ -433,7 +407,7 @@ const tableStyle = computed(() => ({
|
|
|
433
407
|
:aria-label="getWellAriaLabel(well)"
|
|
434
408
|
:aria-selected="isSelected(well.id)"
|
|
435
409
|
:aria-disabled="props.disabled || well.state === 'disabled'"
|
|
436
|
-
:draggable="
|
|
410
|
+
:draggable="config.selectionMode === 'drag' && !!well.sampleType"
|
|
437
411
|
:class="getWellClasses(well)"
|
|
438
412
|
:style="{
|
|
439
413
|
width: isFillMode ? '100%' : sizeConfig.cellWidth,
|
|
@@ -470,11 +444,18 @@ const tableStyle = computed(() => ({
|
|
|
470
444
|
</span>
|
|
471
445
|
<!-- Well ID -->
|
|
472
446
|
<span
|
|
473
|
-
v-else-if="
|
|
447
|
+
v-else-if="config.showWellIds"
|
|
474
448
|
class="mint-well-plate__well-id"
|
|
475
449
|
>
|
|
476
450
|
{{ well.id }}
|
|
477
451
|
</span>
|
|
452
|
+
<!-- QC / iQC marker glyph when the centre is free -->
|
|
453
|
+
<span
|
|
454
|
+
v-else-if="well.sampleType === 'qc' || well.sampleType === 'iqc'"
|
|
455
|
+
class="mint-well-plate__indicator"
|
|
456
|
+
>
|
|
457
|
+
{{ well.sampleType === 'qc' ? 'Q' : 'i' }}
|
|
458
|
+
</span>
|
|
478
459
|
|
|
479
460
|
<!-- Badge (injection count or custom method) -->
|
|
480
461
|
<span
|
|
@@ -493,23 +474,23 @@ const tableStyle = computed(() => ({
|
|
|
493
474
|
|
|
494
475
|
<!-- Heatmap legend (inside content wrapper to match table width) -->
|
|
495
476
|
<div
|
|
496
|
-
v-if="
|
|
477
|
+
v-if="config.heatmap?.enabled && config.heatmap.showLegend"
|
|
497
478
|
class="mint-well-plate__legend"
|
|
498
479
|
>
|
|
499
|
-
<span class="mint-well-plate__legend-label">{{
|
|
480
|
+
<span class="mint-well-plate__legend-label">{{ config.heatmap.min ?? 0 }}</span>
|
|
500
481
|
<div class="mint-well-plate__legend-bar">
|
|
501
482
|
<div
|
|
502
|
-
v-for="(color, index) in (
|
|
483
|
+
v-for="(color, index) in (config.heatmap.colorScale === 'custom' && config.heatmap.customColors?.length ? config.heatmap.customColors : HEATMAP_COLORS[config.heatmap.colorScale || 'viridis'])"
|
|
503
484
|
:key="index"
|
|
504
485
|
class="mint-well-plate__legend-segment"
|
|
505
486
|
:style="{ backgroundColor: color }"
|
|
506
487
|
/>
|
|
507
488
|
</div>
|
|
508
|
-
<span class="mint-well-plate__legend-label">{{
|
|
489
|
+
<span class="mint-well-plate__legend-label">{{ config.heatmap.max ?? 1 }}</span>
|
|
509
490
|
</div>
|
|
510
491
|
|
|
511
492
|
<!-- Sample type legend bar -->
|
|
512
|
-
<div v-if="
|
|
493
|
+
<div v-if="config.showLegend" class="mint-well-plate__sample-legend">
|
|
513
494
|
<div
|
|
514
495
|
v-for="item in activeLegendItems"
|
|
515
496
|
:key="item.type"
|
|
@@ -526,13 +507,13 @@ const tableStyle = computed(() => ({
|
|
|
526
507
|
</div>
|
|
527
508
|
|
|
528
509
|
<!-- Edit popup -->
|
|
529
|
-
<template v-if="editable && editingWellId">
|
|
510
|
+
<template v-if="config.editable && editingWellId">
|
|
530
511
|
<slot
|
|
531
512
|
name="well-editor"
|
|
532
513
|
:well-id="editingWellId"
|
|
533
514
|
:well-data="wells[editingWellId]"
|
|
534
|
-
:edit-fields="editFields"
|
|
535
|
-
:default-injection-volume="defaultInjectionVolume"
|
|
515
|
+
:edit-fields="config.editFields"
|
|
516
|
+
:default-injection-volume="config.defaultInjectionVolume"
|
|
536
517
|
:position="editPopupPosition"
|
|
537
518
|
:save="handleEditSave"
|
|
538
519
|
:clear="handleEditClear"
|
|
@@ -541,9 +522,9 @@ const tableStyle = computed(() => ({
|
|
|
541
522
|
<WellEditPopupInternal
|
|
542
523
|
:well-id="editingWellId"
|
|
543
524
|
:well-data="wells[editingWellId]"
|
|
544
|
-
:edit-fields="editFields"
|
|
545
|
-
:default-injection-volume="defaultInjectionVolume"
|
|
546
|
-
:marker-colors="sampleColors"
|
|
525
|
+
:edit-fields="config.editFields"
|
|
526
|
+
:default-injection-volume="config.defaultInjectionVolume"
|
|
527
|
+
:marker-colors="config.sampleColors"
|
|
547
528
|
:position="editPopupPosition"
|
|
548
529
|
@save="handleEditSave"
|
|
549
530
|
@clear="handleEditClear"
|
package/src/components/index.ts
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
+
// Components exported from the package root. Lab, shell, data and runtime
|
|
2
|
+
// components are exported from their subpath entries (`src/lab.ts`, ...).
|
|
3
|
+
|
|
1
4
|
// Base components
|
|
2
5
|
export { default as BaseButton } from './BaseButton.vue'
|
|
3
6
|
export { default as BaseInput } from './BaseInput.vue'
|
|
4
|
-
export { default as BaseTextarea } from './BaseTextarea.vue'
|
|
5
7
|
export { default as BaseSelect } from './BaseSelect.vue'
|
|
6
|
-
export { default as SearchableSelect } from './SearchableSelect.vue'
|
|
7
8
|
export { default as BaseCheckbox } from './BaseCheckbox.vue'
|
|
8
|
-
export { default as BaseToggle } from './BaseToggle.vue'
|
|
9
9
|
export { default as BaseRadioGroup } from './BaseRadioGroup.vue'
|
|
10
10
|
export { default as BaseSlider } from './BaseSlider.vue'
|
|
11
11
|
export { default as BaseTabs } from './BaseTabs.vue'
|
|
12
12
|
export { default as BaseModal } from './BaseModal.vue'
|
|
13
13
|
export { default as SegmentedControl } from './SegmentedControl.vue'
|
|
14
|
-
export { default as MultiSelect } from './MultiSelect.vue'
|
|
15
14
|
export { default as BasePill } from './BasePill.vue'
|
|
16
15
|
export { default as Calendar } from './Calendar.vue'
|
|
17
16
|
export { default as DataFrame } from './DataFrame.vue'
|
|
@@ -19,140 +18,39 @@ export { default as DataFrame } from './DataFrame.vue'
|
|
|
19
18
|
// Form components
|
|
20
19
|
export { default as FormField } from './FormField.vue'
|
|
21
20
|
export { default as DatePicker } from './DatePicker.vue'
|
|
22
|
-
export { default as TimePicker } from './TimePicker.vue'
|
|
23
|
-
export { default as TagsInput } from './TagsInput.vue'
|
|
24
|
-
export { default as SecretInput } from './SecretInput.vue'
|
|
25
21
|
export { default as NumberInput } from './NumberInput.vue'
|
|
26
22
|
export { default as FileUploader } from './FileUploader.vue'
|
|
27
23
|
|
|
28
24
|
// Feedback components
|
|
29
25
|
export { default as AlertBox } from './AlertBox.vue'
|
|
30
26
|
export { default as AppToastContainer } from './AppToastContainer.vue'
|
|
31
|
-
export { default as RuntimeUpdateNotice } from './RuntimeUpdateNotice.vue'
|
|
32
27
|
|
|
33
28
|
// Action components
|
|
34
29
|
export { default as ActionMenu } from './ActionMenu.vue'
|
|
35
|
-
export { default as IconButton } from './IconButton.vue'
|
|
36
30
|
export { default as ThemeToggle } from './ThemeToggle.vue'
|
|
37
31
|
|
|
38
32
|
// Layout components
|
|
39
33
|
export { default as CollapsibleCard } from './CollapsibleCard.vue'
|
|
40
|
-
export { default as AppTopBar } from './AppTopBar.vue'
|
|
41
|
-
export { default as AppAvatarMenu } from './AppAvatarMenu.vue'
|
|
42
|
-
export { default as AppSidebar } from './AppSidebar.vue'
|
|
43
|
-
export { default as AppLayout } from './AppLayout.vue'
|
|
44
|
-
export { default as MobileSupportGate } from './MobileSupportGate.vue'
|
|
45
34
|
export { default as PluginWorkspaceView } from './PluginWorkspaceView.vue'
|
|
46
|
-
export { default as GeneratedPluginView } from './GeneratedPluginView.vue'
|
|
47
|
-
export { default as GeneratedResultRenderer } from './GeneratedResultRenderer.vue'
|
|
48
|
-
export { default as GeneratedPlotlyResult } from './GeneratedPlotlyResult.vue'
|
|
49
|
-
export { default as ComponentBindingRenderer } from './ComponentBindingRenderer.vue'
|
|
50
|
-
export { default as ControlWorkspaceView } from './ControlWorkspaceView.vue'
|
|
51
|
-
/** Complete ControlWorkspaceView page shell for WellPlate + DoseCalculator dose design. @deprecated Scheduled for removal in MINT 1.4; use `ControlWorkspaceView` instead, with `defineDoseDesignControlModel()`. */
|
|
52
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as DoseDesignWorkspaceView } from './DoseDesignWorkspaceView.vue'
|
|
53
35
|
export { default as AppContainer } from './AppContainer.vue'
|
|
54
36
|
export { default as PluginIcon } from './PluginIcon.vue'
|
|
55
|
-
export { default as LayoutResizeHandle } from './LayoutResizeHandle.vue'
|
|
56
37
|
|
|
57
38
|
// Utility components
|
|
58
39
|
export { default as Skeleton } from './Skeleton.vue'
|
|
59
40
|
export { default as LoadingSpinner } from './LoadingSpinner.vue'
|
|
60
41
|
export { default as Divider } from './Divider.vue'
|
|
61
|
-
export { default as StatusIndicator } from './StatusIndicator.vue'
|
|
62
42
|
export { default as ProgressBar } from './ProgressBar.vue'
|
|
63
43
|
export { default as Avatar } from './Avatar.vue'
|
|
64
44
|
export { default as EmptyState } from './EmptyState.vue'
|
|
65
45
|
export { default as Breadcrumb } from './Breadcrumb.vue'
|
|
66
46
|
export { default as Tooltip } from './Tooltip.vue'
|
|
67
47
|
export { default as ConfirmDialog } from './ConfirmDialog.vue'
|
|
68
|
-
export { default as ChartContainer } from './ChartContainer.vue'
|
|
69
|
-
export { default as AdductText } from './AdductText.vue'
|
|
70
48
|
export { default as SettingsModal } from './SettingsModal.vue'
|
|
71
49
|
|
|
72
|
-
// Biological experiment components
|
|
73
|
-
/** Render biology template envelopes with matching SDK components such as WellPlate, DoseCalculator, and DataFrame. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
74
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as BioTemplateRenderer } from './BioTemplateRenderer.vue'
|
|
75
|
-
/** Current-experiment template workspace with load/save/reset controls and WellPlate/DataFrame/DoseCalculator previews. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
76
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as BioTemplateExperimentWorkspaceView } from './BioTemplateExperimentWorkspaceView.vue'
|
|
77
|
-
/** Complete current-experiment workspace for a curated biology template pack with save/load controls and component-prop slots. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
78
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as BioTemplatePackWorkspaceView } from './BioTemplatePackWorkspaceView.vue'
|
|
79
|
-
/** Complete editable biology template preset workspace for WellPlate/DoseCalculator, LC-MS, qPCR, generated controls, preview components, and current-experiment save wiring. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
80
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as BioTemplatePresetWorkspaceView } from './BioTemplatePresetWorkspaceView.vue'
|
|
81
|
-
export { default as WellPlate } from './WellPlate.vue'
|
|
82
|
-
export { default as PlateEditor } from './PlateEditor.vue'
|
|
83
|
-
/** Clickable color-swatch legend for plate sample types, supporting selection, count display, add/remove, and custom color assignment. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
84
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as SampleLegend } from './SampleLegend.vue'
|
|
85
|
-
/** Horizontal or vertical timeline of ordered protocol steps with status indicators, drag-to-reorder, and step-type iconography. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
86
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as ExperimentTimeline } from './ExperimentTimeline.vue'
|
|
87
|
-
|
|
88
|
-
// Sample management components
|
|
89
|
-
/** Interactive sample list with drag-and-drop group assignment, color labeling, and smart-group support. */
|
|
90
|
-
export { default as SampleSelector } from './SampleSelector.vue'
|
|
91
|
-
/** Smart Group modal wired to the `useAutoGroup` engine. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
92
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as AutoGroupModal } from './AutoGroupModal.vue'
|
|
93
|
-
/** Drag-and-drop two-zone assigner for splitting sample groups into control and treatment arms. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
94
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as GroupAssigner } from './GroupAssigner.vue'
|
|
95
|
-
/** Smart Group modal with the auto Field Recipe and the manual cohort builder. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
96
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as SmartGroupModal } from './SmartGroupModal.vue'
|
|
97
|
-
/** Smart Group auto mode: groups samples by a field recipe. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
98
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as SmartGroupFieldRecipe } from './SmartGroupFieldRecipe.vue'
|
|
99
|
-
/** Smart Group manual mode: builds cohorts from selected samples. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
100
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as SmartGroupManual } from './SmartGroupManual.vue'
|
|
101
|
-
|
|
102
|
-
// Lab/Experiment components
|
|
103
|
-
export { default as MoleculeInput } from './MoleculeInput.vue'
|
|
104
|
-
export { default as ConcentrationInput } from './ConcentrationInput.vue'
|
|
105
|
-
export { default as DoseCalculator } from './DoseCalculator.vue'
|
|
106
|
-
/** Editor for a single reagent definition with axis orientation, dilution-series generator, and position-count validation for 96/384-well plates. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
107
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as ReagentEditor, type ReagentDefinition } from './ReagentEditor.vue'
|
|
108
|
-
/** Sortable, searchable table of experiment reagents showing lot number, expiry, storage conditions, and stock level with low-stock warnings. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
109
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as ReagentList } from './ReagentList.vue'
|
|
110
|
-
export { default as SampleHierarchyTree } from './SampleHierarchyTree.vue'
|
|
111
|
-
export { default as ProtocolStepEditor } from './ProtocolStepEditor.vue'
|
|
112
|
-
|
|
113
|
-
// Scientific display components
|
|
114
|
-
export { default as PlotlyChart } from './PlotlyChart.vue'
|
|
115
|
-
export { default as ScientificNumber } from './ScientificNumber.vue'
|
|
116
|
-
export { default as ChemicalFormula } from './ChemicalFormula.vue'
|
|
117
|
-
/** Displays LC/MS or GC/MS acquisition sequence progress with ETA and remaining-time labels. */
|
|
118
|
-
export { default as SequenceProgressBar } from './SequenceProgressBar.vue'
|
|
119
|
-
/** Status badge for instrument states: a tone dot (or dash / hollow shape for offline, never-reported and inactive) plus a label. */
|
|
120
|
-
export { default as InstrumentStateBadge } from './InstrumentStateBadge.vue'
|
|
121
|
-
|
|
122
50
|
// Scientific input components
|
|
123
|
-
export { default as FormulaInput } from './FormulaInput.vue'
|
|
124
|
-
export { default as SequenceInput } from './SequenceInput.vue'
|
|
125
|
-
export { default as UnitInput } from './UnitInput.vue'
|
|
126
|
-
|
|
127
|
-
// Workflow components
|
|
128
|
-
export { default as StepWizard } from './StepWizard.vue'
|
|
129
|
-
export { default as AuditTrail } from './AuditTrail.vue'
|
|
130
|
-
export { default as BatchProgressList } from './BatchProgressList.vue'
|
|
131
|
-
export { default as JobsStatusTray } from './JobsStatusTray.vue'
|
|
132
51
|
|
|
133
52
|
// Form builder components
|
|
134
53
|
export { default as FormBuilder } from './FormBuilder.vue'
|
|
135
|
-
export { default as FormActions } from './FormActions.vue'
|
|
136
|
-
|
|
137
|
-
// Experiment data display components
|
|
138
|
-
export { default as ExperimentDataViewer } from './ExperimentDataViewer.vue'
|
|
139
|
-
export { default as ExperimentCodeBadge } from './ExperimentCodeBadge.vue'
|
|
140
54
|
|
|
141
55
|
// Scheduling / booking components
|
|
142
|
-
export { default as DateTimePicker } from './DateTimePicker.vue'
|
|
143
|
-
export { default as TimeRangeInput } from './TimeRangeInput.vue'
|
|
144
|
-
export { default as ScheduleCalendar } from './ScheduleCalendar.vue'
|
|
145
|
-
export { default as ResourceCard } from './ResourceCard.vue'
|
|
146
56
|
export { default as SectionCard } from './SectionCard.vue'
|
|
147
|
-
|
|
148
|
-
// Experiment / analysis components
|
|
149
|
-
export { default as ExperimentSelectorModal } from './ExperimentSelectorModal.vue'
|
|
150
|
-
export { default as ArtifactSelectorModal } from './ArtifactSelectorModal.vue'
|
|
151
|
-
/** Modal picker over the read-only server mounts, recording paths rather than copying data. */
|
|
152
|
-
export { default as GeneratedPathInput } from './GeneratedPathInput.vue'
|
|
153
|
-
export { default as ArtifactSaveDialog } from './ArtifactSaveDialog.vue'
|
|
154
|
-
export { default as ExperimentPopover } from './ExperimentPopover.vue'
|
|
155
|
-
/** Control panel for running a curve-fit job with progress bar, results table, and error display. @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
156
|
-
export { /** @deprecated Removed in MINT 1.4. */ default as FitPanel } from './FitPanel.vue'
|
|
157
|
-
|
|
158
|
-
export { default as FilePicker } from './FilePicker.vue'
|
|
@@ -21,7 +21,26 @@ const emit = defineEmits<{
|
|
|
21
21
|
const openItemId = ref<string | null>(null)
|
|
22
22
|
const itemRefs = ref<Map<string, HTMLElement>>(new Map())
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
/** The bar shows this many items; the rest fold into a More dropdown. */
|
|
25
|
+
const MAX_VISIBLE_ITEMS = 4
|
|
26
|
+
const MORE_ITEM_ID = '__mint-pill-nav-more'
|
|
27
|
+
|
|
28
|
+
const allItems = computed<PillNavItem[]>(() => props.items.map(normalizePillNavItem))
|
|
29
|
+
|
|
30
|
+
const normalizedItems = computed<PillNavItem[]>(() => {
|
|
31
|
+
if (allItems.value.length <= MAX_VISIBLE_ITEMS) return allItems.value
|
|
32
|
+
const folded = allItems.value.slice(MAX_VISIBLE_ITEMS)
|
|
33
|
+
return [
|
|
34
|
+
...allItems.value.slice(0, MAX_VISIBLE_ITEMS),
|
|
35
|
+
{
|
|
36
|
+
id: MORE_ITEM_ID,
|
|
37
|
+
label: 'More',
|
|
38
|
+
dot: folded.some(item => item.dot),
|
|
39
|
+
// A folded group contributes its options; a plain item becomes one option.
|
|
40
|
+
children: folded.flatMap(item => item.children?.length ? item.children : [item]),
|
|
41
|
+
},
|
|
42
|
+
]
|
|
43
|
+
})
|
|
25
44
|
|
|
26
45
|
function handleClick(item: PillNavItem) {
|
|
27
46
|
if (item.disabled) return
|
|
@@ -35,8 +54,20 @@ function handleClick(item: PillNavItem) {
|
|
|
35
54
|
|
|
36
55
|
function handleOptionClick(option: PillNavOption, item: PillNavItem) {
|
|
37
56
|
if (option.disabled) return
|
|
38
|
-
if (!option.href && !option.to) emit('option-select', option, item)
|
|
39
57
|
openItemId.value = null
|
|
58
|
+
if (option.href || option.to) return
|
|
59
|
+
if (item.id !== MORE_ITEM_ID) {
|
|
60
|
+
emit('option-select', option, item)
|
|
61
|
+
return
|
|
62
|
+
}
|
|
63
|
+
// A folded entry reports as it would from its own pill.
|
|
64
|
+
const folded = allItems.value.find(candidate => candidate.id === option.id && !candidate.children?.length)
|
|
65
|
+
if (folded) {
|
|
66
|
+
emit('select', folded)
|
|
67
|
+
return
|
|
68
|
+
}
|
|
69
|
+
const group = allItems.value.find(candidate => candidate.children?.some(child => child.id === option.id))
|
|
70
|
+
if (group) emit('option-select', option, group)
|
|
40
71
|
}
|
|
41
72
|
|
|
42
73
|
function normalizePillNavItem(item: PillNavItemInput): PillNavItem {
|
package/src/components/{AutoGroupModal.adapter.ts → internal/AutoGroupModalInternal.adapter.ts}
RENAMED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* Pure adapters mapping the `useAutoGroup` engine state to the controlled
|
|
3
3
|
* Smart Group UI (`SmartGroupFieldRecipe` / `SmartGroupManual`) and back to an
|
|
4
4
|
* `AutoGroupResult`. Framework-free so the mapping is unit-testable in isolation
|
|
5
|
-
* from `
|
|
5
|
+
* from `AutoGroupModalInternal.vue`.
|
|
6
6
|
*/
|
|
7
|
-
import type { AutoGroupResult, ClassSchema, ColumnInfo, ColumnRole, SampleClass } from '
|
|
8
|
-
import type { SampleGroup } from '
|
|
9
|
-
import type { FieldRecipeGroup, QcRoute, SmartGroupField } from '
|
|
10
|
-
import type { ManualSample } from '
|
|
11
|
-
import type { FieldRecipeAnatomyToken, FieldRecipeQcChip, SmartGroupSeed } from '
|
|
12
|
-
import { GROUPING_FIELD_ROLES, classKey, isExperimentalKind } from '
|
|
13
|
-
import type { ExperimentHeader } from '
|
|
7
|
+
import type { AutoGroupResult, ClassSchema, ColumnInfo, ColumnRole, SampleClass } from '../../types/auto-group'
|
|
8
|
+
import type { SampleGroup } from '../../types'
|
|
9
|
+
import type { FieldRecipeGroup, QcRoute, SmartGroupField } from '../SmartGroupFieldRecipe.groups'
|
|
10
|
+
import type { ManualSample } from '../SmartGroupManual.cohorts'
|
|
11
|
+
import type { FieldRecipeAnatomyToken, FieldRecipeQcChip, SmartGroupSeed } from '../SmartGroup.types'
|
|
12
|
+
import { GROUPING_FIELD_ROLES, classKey, isExperimentalKind } from './autoGroup'
|
|
13
|
+
import type { ExperimentHeader } from './autoGroup'
|
|
14
14
|
|
|
15
15
|
const PREVIEW_VALUES = 3
|
|
16
16
|
|