@morscherlab/mint-sdk 1.2.10 → 1.3.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 +45 -137
- package/dist/ResourcePickerListInternal-CFAw4vTZ.js +605 -0
- package/dist/ResourcePickerListInternal-CFAw4vTZ.js.map +1 -0
- package/dist/__stories__/experiment-helpers.d.ts +12 -1
- package/dist/__tests__/components/ScientificNumber.test.d.ts +1 -0
- package/dist/__tests__/components/SequenceInput.test.d.ts +1 -0
- package/dist/__tests__/components/Skeleton.test.d.ts +1 -0
- package/dist/__tests__/components/SmartGroupFieldRecipe.test.d.ts +1 -0
- package/dist/__tests__/components/SmartGroupModal.test.d.ts +1 -0
- package/dist/__tests__/components/StepWizard.test.d.ts +1 -0
- package/dist/__tests__/components/TimeRangeInput.test.d.ts +1 -0
- package/dist/__tests__/components/UnitInput.test.d.ts +1 -0
- package/dist/__tests__/components/WellPlate.keyboard.test.d.ts +1 -0
- package/dist/__tests__/components/WellPlate.sampleTypeIndicator.test.d.ts +1 -0
- package/dist/__tests__/composables/useChemicalFormula.test.d.ts +1 -0
- package/dist/__tests__/composables/useRackEditor.test.d.ts +1 -0
- package/dist/__tests__/composables/useSequenceUtils.test.d.ts +1 -0
- package/dist/__tests__/styles/baseControlsRules.test.d.ts +1 -0
- package/dist/__tests__/styles/controlRefreshRules.test.d.ts +1 -0
- package/dist/__tests__/styles/darkModeRules.test.d.ts +1 -0
- package/dist/__tests__/styles/menusShellRefresh.test.d.ts +1 -0
- package/dist/__tests__/templates/templatesDeprecation.test.d.ts +1 -0
- package/dist/__tests__/utils/plotlyTemplate.test.d.ts +1 -0
- package/dist/__tests__/utils/sampleTypeMarker.test.d.ts +1 -0
- package/dist/{analysisArtifactTypes-DQ0MjwHZ.js → analysisArtifactTypes-Cy3D0Ipg.js} +1 -1
- package/dist/{analysisArtifactTypes-DQ0MjwHZ.js.map → analysisArtifactTypes-Cy3D0Ipg.js.map} +1 -1
- package/dist/components/ActionMenu.vue.d.ts +17 -5
- package/dist/components/AdductText.vue.d.ts +3 -2
- package/dist/components/AlertBox.vue.d.ts +11 -14
- package/dist/components/AppAvatarMenu.vue.d.ts +18 -28
- package/dist/components/AppContainer.vue.d.ts +7 -11
- package/dist/components/AppLayout.vue.d.ts +11 -13
- package/dist/components/AppSidebar.vue.d.ts +30 -28
- package/dist/components/AppToastContainer.vue.d.ts +2 -1
- package/dist/components/AppTopBar.vue.d.ts +45 -44
- package/dist/components/ArtifactSaveDialog.vue.d.ts +3 -2
- package/dist/components/ArtifactSelectorModal.vue.d.ts +5 -6
- package/dist/components/AuditTrail.vue.d.ts +17 -18
- package/dist/components/AutoGroupModal.vue.d.ts +4 -3
- package/dist/components/Avatar.vue.d.ts +2 -1
- package/dist/components/BaseButton.vue.d.ts +11 -13
- package/dist/components/BaseCheckbox.vue.d.ts +7 -1
- package/dist/components/BaseInput.vue.d.ts +15 -2
- package/dist/components/BaseModal.vue.d.ts +20 -23
- package/dist/components/BasePill.vue.d.ts +10 -13
- package/dist/components/BaseRadioGroup.vue.d.ts +2 -1
- package/dist/components/BaseSelect.vue.d.ts +3 -2
- package/dist/components/BaseSlider.vue.d.ts +18 -1
- package/dist/components/BaseTabs.vue.d.ts +2 -1
- package/dist/components/BaseTextarea.vue.d.ts +2 -1
- package/dist/components/BaseToggle.vue.d.ts +2 -1
- package/dist/components/BatchProgressList.vue.d.ts +22 -26
- package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +7 -14
- package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +6 -13
- package/dist/components/BioTemplatePresetWorkspaceView.vue.d.ts +7 -14
- package/dist/components/BioTemplateRenderer.vue.d.ts +2 -1
- package/dist/components/Breadcrumb.vue.d.ts +13 -16
- package/dist/components/Calendar.vue.d.ts +21 -23
- package/dist/components/ChartContainer.vue.d.ts +19 -25
- package/dist/components/ChemicalFormula.vue.d.ts +7 -11
- package/dist/components/CollapsibleCard.vue.d.ts +7 -11
- package/dist/components/ComponentBindingRenderer.vue.d.ts +2 -1
- package/dist/components/ConcentrationInput.vue.d.ts +2 -1
- package/dist/components/ConfirmDialog.vue.d.ts +10 -13
- package/dist/components/ControlWorkspaceView.vue.d.ts +9 -18
- package/dist/components/DataFrame.vue.d.ts +27 -24
- package/dist/components/DatePicker.vue.d.ts +3 -6
- package/dist/components/DateTimePicker.vue.d.ts +3 -6
- package/dist/components/Divider.vue.d.ts +3 -2
- package/dist/components/DoseCalculator.vue.d.ts +2 -1
- package/dist/components/DoseCalculatorVolumeField.vue.d.ts +2 -1
- package/dist/components/DoseDesignWorkspaceView.vue.d.ts +9 -18
- package/dist/components/EmptyState.vue.d.ts +9 -12
- package/dist/components/ExperimentCodeBadge.vue.d.ts +2 -1
- package/dist/components/ExperimentDataViewer.vue.d.ts +13 -15
- package/dist/components/ExperimentPopover.vue.d.ts +3 -5
- package/dist/components/ExperimentSelectorModal.vue.d.ts +3 -4
- package/dist/components/ExperimentTimeline.vue.d.ts +13 -15
- package/dist/components/FilePicker.vue.d.ts +10 -5
- package/dist/components/FileUploader.vue.d.ts +8 -16
- package/dist/components/FitPanel.vue.d.ts +26 -16
- package/dist/components/FormActions.vue.d.ts +2 -1
- package/dist/components/FormBuilder.vue.d.ts +54 -250
- package/dist/components/FormField.vue.d.ts +14 -16
- package/dist/components/FormulaInput.vue.d.ts +2 -1
- package/dist/components/GeneratedPathInput.vue.d.ts +6 -5
- package/dist/components/GeneratedPlotlyResult.vue.d.ts +2 -1
- package/dist/components/GeneratedPluginView.vue.d.ts +2 -1
- package/dist/components/GeneratedResultRenderer.vue.d.ts +2 -1
- package/dist/components/GroupAssigner.vue.d.ts +2 -1
- package/dist/components/IconButton.vue.d.ts +7 -11
- package/dist/components/InstrumentStateBadge.vue.d.ts +4 -3
- package/dist/components/JobsStatusTray.vue.d.ts +13 -29
- package/dist/components/LayoutResizeHandle.vue.d.ts +2 -1
- package/dist/components/LoadingSpinner.vue.d.ts +2 -1
- package/dist/components/MobileSupportGate.vue.d.ts +5 -13
- package/dist/components/MoleculeInput.vue.d.ts +3 -4
- package/dist/components/MultiSelect.vue.d.ts +2 -1
- package/dist/components/NumberInput.vue.d.ts +2 -1
- package/dist/components/PlateEditor.vue.d.ts +147 -0
- package/dist/components/PlotlyChart.vue.d.ts +21 -31
- package/dist/components/PluginIcon.vue.d.ts +2 -1
- package/dist/components/PluginWorkspaceView.props.d.ts +2 -6
- package/dist/components/PluginWorkspaceView.vue.d.ts +23 -51
- package/dist/components/ProgressBar.vue.d.ts +4 -9
- package/dist/components/ProtocolStepEditor.vue.d.ts +7 -5
- package/dist/components/ProtocolStepParameterField.vue.d.ts +2 -1
- package/dist/components/ReagentEditor.vue.d.ts +2 -1
- package/dist/components/ReagentList.presentation.d.ts +2 -1
- package/dist/components/ReagentList.vue.d.ts +15 -17
- package/dist/components/ResourceCard.vue.d.ts +18 -17
- package/dist/components/RuntimeUpdateNotice.vue.d.ts +3 -2
- package/dist/components/SampleHierarchyTree.vue.d.ts +21 -15
- package/dist/components/SampleLegend.vue.d.ts +2 -1
- package/dist/components/SampleSelector.vue.d.ts +15 -21
- package/dist/components/SampleSelectorGroupNode.vue.d.ts +2 -1
- package/dist/components/SampleSelectorSampleRow.vue.d.ts +2 -5
- package/dist/components/ScheduleCalendar.vue.d.ts +34 -36
- package/dist/components/ScientificNumber.vue.d.ts +3 -2
- package/dist/components/SearchableSelect.vue.d.ts +14 -32
- package/dist/components/SecretInput.vue.d.ts +2 -1
- package/dist/components/SectionCard.vue.d.ts +13 -14
- package/dist/components/SegmentedControl.vue.d.ts +2 -1
- package/dist/components/SequenceInput.vue.d.ts +10 -21
- package/dist/components/SequenceProgressBar.vue.d.ts +2 -1
- package/dist/components/SettingsModal.schema.d.ts +1 -1
- package/dist/components/SettingsModal.vue.d.ts +28 -25
- package/dist/components/Skeleton.vue.d.ts +2 -1
- package/dist/components/SmartGroup.types.d.ts +2 -2
- package/dist/components/SmartGroupFieldRecipe.groups.d.ts +2 -0
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +4 -7
- package/dist/components/SmartGroupManual.vue.d.ts +3 -2
- package/dist/components/SmartGroupModal.vue.d.ts +6 -4
- package/dist/components/StatusIndicator.vue.d.ts +2 -1
- package/dist/components/StepWizard.vue.d.ts +26 -27
- package/dist/components/TagsInput.vue.d.ts +3 -5
- package/dist/components/ThemeToggle.vue.d.ts +2 -1
- package/dist/components/TimePicker.vue.d.ts +6 -6
- package/dist/components/TimeRangeInput.vue.d.ts +9 -2
- package/dist/components/Tooltip.vue.d.ts +8 -18
- package/dist/components/UnitInput.vue.d.ts +2 -1
- package/dist/components/WellPlate.colors.d.ts +2 -4
- package/dist/components/WellPlate.rendering.d.ts +7 -1
- package/dist/components/WellPlate.sampleDrop.d.ts +2 -0
- package/dist/components/WellPlate.vue.d.ts +22 -39
- package/dist/components/index.d.ts +34 -31
- package/dist/components/index.js +5 -8
- package/dist/components/internal/ActionItemInternal.vue.d.ts +11 -13
- package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +14 -23
- package/dist/components/internal/AppTopBarPillNavInternal.vue.d.ts +2 -1
- package/dist/components/internal/CalendarGridPanelInternal.vue.d.ts +2 -1
- package/dist/components/internal/DataStateInternal.vue.d.ts +7 -11
- package/dist/components/internal/{FilePickerTreeInternal.vue.d.ts → FilePickerListInternal.vue.d.ts} +9 -6
- package/dist/components/internal/FilePickerPreviewInternal.vue.d.ts +4 -3
- package/dist/components/internal/FormFieldRendererInternal.vue.d.ts +16 -18
- package/dist/components/internal/FormSectionRenderer.vue.d.ts +36 -32
- package/dist/components/internal/PlateEditorBindingInternal.vue.d.ts +8 -0
- package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +65 -0
- package/dist/components/internal/SettingsPaneHeadInternal.vue.d.ts +15 -0
- package/dist/components/internal/WellEditPopupInternal.vue.d.ts +12 -4
- package/dist/components/internal/WorkspaceControlsInternal.vue.d.ts +6 -13
- package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +19 -42
- package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +9 -19
- package/dist/components/internal/filePickerPresentation.d.ts +8 -0
- package/dist/components/internal/generatedJobsApi.d.ts +9 -0
- package/dist/{components-Bbg_gtzF.js → components-GDDvof8D.js} +7088 -5955
- package/dist/components-GDDvof8D.js.map +1 -0
- package/dist/composables/controlSchemaTypes.d.ts +4 -43
- package/dist/composables/createFilePickerAdapter.d.ts +5 -1
- package/dist/composables/filePicker/usePickerNavigation.d.ts +7 -2
- package/dist/composables/index.d.ts +2 -13
- package/dist/composables/index.js +7 -11
- package/dist/composables/pluginWorkspaceModel.d.ts +1 -3
- package/dist/composables/useAutoGroup.d.ts +10 -0
- package/dist/composables/useBioTemplateComponents.d.ts +15 -3
- package/dist/composables/useBioTemplateControls.d.ts +5 -1
- package/dist/composables/useBioTemplatePackWorkspace.d.ts +2 -0
- package/dist/composables/useBioTemplatePresetWorkspace.d.ts +5 -1
- package/dist/composables/useBioTemplateWorkspace.d.ts +5 -1
- package/dist/composables/useChemicalFormula.d.ts +2 -1
- package/dist/composables/useDropdownState.d.ts +5 -0
- package/dist/composables/useExperimentSave.d.ts +5 -1
- package/dist/composables/useFileBrowser.d.ts +3 -2
- package/dist/composables/useFilePicker.d.ts +25 -13
- package/dist/composables/useFocusTrap.d.ts +2 -1
- package/dist/composables/useGroupAssignment.d.ts +5 -1
- package/dist/composables/useJobsStatusTray.d.ts +5 -5
- package/dist/composables/useMenuKeyboard.d.ts +3 -3
- package/dist/composables/usePlatformContext.d.ts +3 -0
- package/dist/composables/usePluginClient.d.ts +1 -1
- package/dist/composables/useRackEditor.d.ts +36 -1
- package/dist/composables/useSequenceUtils.d.ts +8 -0
- package/dist/composables/useTemplateCollection.d.ts +5 -1
- package/dist/composables/workspaceRecipes.d.ts +1 -0
- package/dist/composables-D6uqp0UF.js +591 -0
- package/dist/composables-D6uqp0UF.js.map +1 -0
- package/dist/{errors-BLuqMee5.js → experiment-DgllIc3I.js} +89 -333
- package/dist/experiment-DgllIc3I.js.map +1 -0
- package/dist/{experiment-utils-CV2Wza3z.js → experiment-utils-DTANyVKV.js} +68 -37
- package/dist/experiment-utils-DTANyVKV.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +122 -17
- package/dist/index.js.map +1 -1
- package/dist/install.js +1 -2
- package/dist/install.js.map +1 -1
- package/dist/instrument.d.ts +6 -0
- package/dist/lcms.d.ts +11 -0
- package/dist/permissions.d.ts +2 -47
- package/dist/permissions.js +2 -26
- package/dist/permissions.js.map +1 -1
- package/dist/settings-BLr8lzw6.js +341 -0
- package/dist/settings-BLr8lzw6.js.map +1 -0
- package/dist/stores/auth.d.ts +2 -150
- package/dist/stores/experiment.d.ts +2 -106
- package/dist/stores/index.js +2 -2
- package/dist/stores/settings.d.ts +2 -44
- package/dist/styles.css +8608 -6950
- package/dist/tailwind.preset.js.map +1 -1
- package/dist/templates/adapters.d.ts +3 -0
- package/dist/templates/assayMatrixAdapters.d.ts +8 -1
- package/dist/templates/assayMatrixBuilder.d.ts +1 -0
- package/dist/templates/builderPresetControls.d.ts +1 -0
- package/dist/templates/calibrationCurveAdapters.d.ts +3 -0
- package/dist/templates/calibrationCurveBuilder.d.ts +1 -0
- package/dist/templates/catalog.d.ts +6 -2
- package/dist/templates/componentBindings.d.ts +31 -5
- package/dist/templates/componentPlateHelpers.d.ts +7 -1
- package/dist/templates/controlSchemas.d.ts +9 -0
- package/dist/templates/defaultBioTemplateBuilder.d.ts +1 -0
- package/dist/templates/doseResponseAdapters.d.ts +2 -0
- package/dist/templates/doseResponseBuilder.d.ts +1 -0
- package/dist/templates/elisaAssayCollectionBuilder.d.ts +1 -0
- package/dist/templates/flowCytometryAssayCollectionBuilder.d.ts +1 -0
- package/dist/templates/flowCytometryPanelBuilder.d.ts +1 -0
- package/dist/templates/flowPanelAdapters.d.ts +3 -0
- package/dist/templates/index.d.ts +1 -1
- package/dist/templates/index.js +2 -3
- package/dist/templates/instrumentRunAdapters.d.ts +13 -2
- package/dist/templates/instrumentRunBuilder.d.ts +1 -0
- package/dist/templates/lcmsBatchCollectionBuilder.d.ts +1 -0
- package/dist/templates/packs.d.ts +4 -0
- package/dist/templates/plateMapAdapters.d.ts +2 -0
- package/dist/templates/plateMapBuilder.d.ts +1 -0
- package/dist/templates/presets.d.ts +6 -2
- package/dist/templates/protocolAdapters.d.ts +4 -0
- package/dist/templates/protocolStepsBuilder.d.ts +1 -0
- package/dist/templates/qpcrAdapters.d.ts +4 -0
- package/dist/templates/qpcrExpressionCollectionBuilder.d.ts +1 -0
- package/dist/templates/qpcrPlateBuilder.d.ts +1 -0
- package/dist/templates/reagentAdapters.d.ts +4 -0
- package/dist/templates/reagentListBuilder.d.ts +1 -0
- package/dist/templates/samplePrepAdapters.d.ts +3 -0
- package/dist/templates/samplePrepBuilder.d.ts +1 -0
- package/dist/templates/sampleSheetAdapters.d.ts +4 -0
- package/dist/templates/sampleSheetBuilder.d.ts +1 -0
- package/dist/templates/targetedMetabolomicsCollectionBuilder.d.ts +1 -0
- package/dist/templates/templateEnvelopes.d.ts +8 -0
- package/dist/templates/templatePackCollectionBuilder.d.ts +1 -0
- package/dist/templates/templatePresetCollectionBuilder.d.ts +2 -0
- package/dist/templates/templateValidators.d.ts +12 -0
- package/dist/templates/timeCourseAdapters.d.ts +4 -0
- package/dist/templates/timeCourseBuilder.d.ts +1 -0
- package/dist/templates/wellPlateScreenCollectionBuilder.d.ts +1 -0
- package/dist/templates/westernBlotAssayCollectionBuilder.d.ts +1 -0
- package/dist/templates-BU1pet28.js +12304 -0
- package/dist/templates-BU1pet28.js.map +1 -0
- package/dist/types/auth.d.ts +0 -27
- package/dist/types/componentLabTypes.d.ts +14 -7
- package/dist/types/componentWorkflowTypes.d.ts +26 -0
- package/dist/types/components.d.ts +40 -17
- package/dist/types/fileBrowserTypes.d.ts +13 -0
- package/dist/types/filePicker.d.ts +19 -1
- package/dist/types/generated-ui.d.ts +13 -0
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.js +1 -1
- package/dist/types/instrument.d.ts +43 -15
- package/dist/types/platform.d.ts +2 -0
- package/dist/utils/color.d.ts +6 -1
- package/dist/utils/formModelSync.d.ts +1 -0
- package/dist/utils/plotlyTemplate.d.ts +3 -0
- package/dist/utils/rack.d.ts +16 -0
- package/dist/utils/sampleTypeMarker.d.ts +23 -0
- package/dist/{validation-ChMyixAf.js → validation-Dmp9Q5W0.js} +3032 -838
- package/dist/validation-Dmp9Q5W0.js.map +1 -0
- package/package.json +17 -23
- package/src/__stories__/experiment-helpers.ts +8 -4
- package/src/__tests__/components/ActionMenu.test.ts +66 -0
- package/src/__tests__/components/AlertBox.test.ts +21 -0
- package/src/__tests__/components/AppAvatarMenu.test.ts +25 -0
- package/src/__tests__/components/AppTopBar.test.ts +79 -0
- package/src/__tests__/components/AppTopBarPageSelector.test.ts +20 -0
- package/src/__tests__/components/AppTopBarPillNav.test.ts +74 -0
- package/src/__tests__/components/ArtifactSelectorModal.test.ts +20 -6
- package/src/__tests__/components/AuditTrail.test.ts +38 -0
- package/src/__tests__/components/BaseCheckbox.test.ts +43 -0
- package/src/__tests__/components/BaseInput.test.ts +43 -0
- package/src/__tests__/components/BaseModal.test.ts +90 -0
- package/src/__tests__/components/BaseRadioGroup.test.ts +8 -0
- package/src/__tests__/components/BaseSlider.test.ts +116 -0
- package/src/__tests__/components/BaseToggle.test.ts +7 -0
- package/src/__tests__/components/BatchProgressList.test.ts +22 -14
- package/src/__tests__/components/BioTemplateExperimentWorkspaceView.test.ts +4 -4
- package/src/__tests__/components/BioTemplatePackWorkspaceView.test.ts +1 -1
- package/src/__tests__/components/BioTemplatePresetWorkspaceView.test.ts +8 -8
- package/src/__tests__/components/BioTemplateRenderer.test.ts +2 -2
- package/src/__tests__/components/Breadcrumb.test.ts +45 -0
- package/src/__tests__/components/CalendarGridPanel.test.ts +14 -0
- package/src/__tests__/components/ChartContainer.test.ts +23 -0
- package/src/__tests__/components/ChemicalFormula.test.ts +15 -0
- package/src/__tests__/components/CollapsibleCard.test.ts +12 -9
- package/src/__tests__/components/ComponentBindingRenderer.test.ts +45 -17
- package/src/__tests__/components/ConcentrationInput.test.ts +17 -2
- package/src/__tests__/components/DataFrame.test.ts +107 -4
- package/src/__tests__/components/DataStates.test.ts +0 -16
- package/src/__tests__/components/DatePicker.test.ts +10 -0
- package/src/__tests__/components/DoseCalculator.test.ts +47 -0
- package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +37 -34
- package/src/__tests__/components/EmptyState.test.ts +16 -1
- package/src/__tests__/components/ExperimentSelectorModal.test.ts +31 -3
- package/src/__tests__/components/ExperimentTimeline.test.ts +45 -0
- package/src/__tests__/components/FilePicker.state.test.ts +2 -2
- package/src/__tests__/components/FilePicker.test.ts +360 -13
- package/src/__tests__/components/FileUploader.test.ts +15 -0
- package/src/__tests__/components/FitPanel.test.ts +96 -0
- package/src/__tests__/components/FormulaInput.test.ts +97 -0
- package/src/__tests__/components/GeneratedPathInput.test.ts +168 -41
- package/src/__tests__/components/GeneratedPlotlyResult.test.ts +1 -1
- package/src/__tests__/components/GeneratedResultRenderer.test.ts +47 -2
- package/src/__tests__/components/InstrumentStateBadge.test.ts +50 -0
- package/src/__tests__/components/JobsStatusTray.test.ts +27 -0
- package/src/__tests__/components/MoleculeInput.test.ts +78 -0
- package/src/__tests__/components/MultiSelect.test.ts +6 -0
- package/src/__tests__/components/PlateEditor.test.ts +1134 -0
- package/src/__tests__/components/PlateEditorBindingInternal.test.ts +64 -0
- package/src/__tests__/components/PlotlyChart.test.ts +147 -1
- package/src/__tests__/components/ProgressBar.test.ts +18 -0
- package/src/__tests__/components/ProtocolStepEditor.test.ts +106 -18
- package/src/__tests__/components/ProtocolStepParameterField.test.ts +74 -29
- package/src/__tests__/components/ReagentList.presentation.test.ts +10 -5
- package/src/__tests__/components/ReagentList.test.ts +23 -0
- package/src/__tests__/components/ResourcePickerListInternal.test.ts +141 -0
- package/src/__tests__/components/RetiredStyles.test.ts +0 -6
- package/src/__tests__/components/SampleHierarchyTree.test.ts +102 -0
- package/src/__tests__/components/SampleLegend.test.ts +18 -0
- package/src/__tests__/components/SampleSelector.test.ts +92 -1
- package/src/__tests__/components/SampleSelectorSampleRow.test.ts +5 -2
- package/src/__tests__/components/ScheduleCalendar.test.ts +32 -0
- package/src/__tests__/components/ScientificNumber.test.ts +113 -0
- package/src/__tests__/components/SearchableSelect.test.ts +21 -0
- package/src/__tests__/components/SecretInput.test.ts +6 -0
- package/src/__tests__/components/SegmentedControl.test.ts +14 -0
- package/src/__tests__/components/SequenceInput.test.ts +81 -0
- package/src/__tests__/components/SettingsModal.schema.test.ts +5 -5
- package/src/__tests__/components/SettingsModal.test.ts +371 -23
- package/src/__tests__/components/Skeleton.test.ts +23 -0
- package/src/__tests__/components/SmartGroupFieldRecipe.test.ts +12 -0
- package/src/__tests__/components/SmartGroupModal.test.ts +69 -0
- package/src/__tests__/components/StepWizard.test.ts +75 -0
- package/src/__tests__/components/TagsInput.test.ts +16 -0
- package/src/__tests__/components/TimePicker.test.ts +66 -0
- package/src/__tests__/components/TimeRangeInput.test.ts +83 -0
- package/src/__tests__/components/UnitInput.test.ts +147 -0
- package/src/__tests__/components/WellEditPopupInternal.test.ts +434 -2
- package/src/__tests__/components/WellPlate.decoration.test.ts +18 -0
- package/src/__tests__/components/WellPlate.geometry.test.ts +13 -0
- package/src/__tests__/components/WellPlate.interaction.test.ts +213 -0
- package/src/__tests__/components/WellPlate.keyboard.test.ts +24 -0
- package/src/__tests__/components/WellPlate.rendering.test.ts +38 -19
- package/src/__tests__/components/WellPlate.sampleDrop.test.ts +19 -0
- package/src/__tests__/components/WellPlate.sampleTypeIndicator.test.ts +58 -0
- package/src/__tests__/composables/createFilePickerAdapter.test.ts +114 -1
- package/src/__tests__/composables/useBioTemplatePackWorkspace.test.ts +1 -1
- package/src/__tests__/composables/useBioTemplateWorkspace.test.ts +1 -1
- package/src/__tests__/composables/useChemicalFormula.test.ts +60 -0
- package/src/__tests__/composables/useControlSchema.test.ts +15 -5
- package/src/__tests__/composables/useDropdownState.test.ts +20 -1
- package/src/__tests__/composables/useGeneratedAnalysis.test.ts +52 -0
- package/src/__tests__/composables/usePickerNavigation.test.ts +61 -1
- package/src/__tests__/composables/usePlatformFilePickerAdapter.test.ts +18 -6
- package/src/__tests__/composables/useRackEditor.test.ts +270 -0
- package/src/__tests__/composables/useSequenceUtils.test.ts +28 -0
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +44 -9
- package/src/__tests__/styles/baseControlsRules.test.ts +115 -0
- package/src/__tests__/styles/controlRefreshRules.test.ts +218 -0
- package/src/__tests__/styles/cssTokens.test.ts +7 -5
- package/src/__tests__/styles/darkModeRules.test.ts +47 -0
- package/src/__tests__/styles/menusShellRefresh.test.ts +75 -0
- package/src/__tests__/templates/templates.test.ts +65 -15
- package/src/__tests__/templates/templatesDeprecation.test.ts +78 -0
- package/src/__tests__/utils/permissions.test.ts +0 -68
- package/src/__tests__/utils/plotlyTemplate.test.ts +69 -0
- package/src/__tests__/utils/sampleTypeMarker.test.ts +54 -0
- package/src/components/ActionMenu.vue +44 -23
- package/src/components/AdductText.story.vue +18 -0
- package/src/components/AdductText.vue +7 -1
- package/src/components/AlertBox.vue +3 -7
- package/src/components/AppAvatarMenu.vue +12 -10
- package/src/components/AppSidebar.vue +1 -1
- package/src/components/AppTopBar.story.vue +47 -4
- package/src/components/AppTopBar.vue +16 -22
- package/src/components/ArtifactSelectorModal.story.vue +1 -1
- package/src/components/ArtifactSelectorModal.vue +48 -160
- package/src/components/AuditTrail.vue +26 -12
- package/src/components/AutoGroupModal.vue +1 -1
- package/src/components/BaseCheckbox.story.vue +58 -2
- package/src/components/BaseCheckbox.vue +21 -3
- package/src/components/BaseInput.story.vue +51 -0
- package/src/components/BaseInput.vue +62 -1
- package/src/components/BaseModal.story.vue +55 -0
- package/src/components/BaseModal.vue +83 -50
- package/src/components/BaseRadioGroup.vue +1 -1
- package/src/components/BaseSlider.story.vue +36 -0
- package/src/components/BaseSlider.vue +56 -8
- package/src/components/BaseToggle.vue +1 -7
- package/src/components/BatchProgressList.vue +50 -52
- package/src/components/BioTemplatePresetWorkspaceView.vue +1 -1
- package/src/components/Breadcrumb.story.vue +1 -1
- package/src/components/Breadcrumb.vue +50 -15
- package/src/components/ChartContainer.story.vue +42 -0
- package/src/components/ChartContainer.vue +22 -1
- package/src/components/ChemicalFormula.story.vue +11 -11
- package/src/components/ChemicalFormula.vue +1 -0
- package/src/components/CollapsibleCard.vue +12 -32
- package/src/components/ComponentBindingRenderer.vue +6 -8
- package/src/components/ConcentrationInput.story.vue +1 -1
- package/src/components/ConcentrationInput.vue +8 -14
- package/src/components/ControlWorkspaceView.vue +1 -1
- package/src/components/DataFrame.story.vue +45 -2
- package/src/components/DataFrame.vue +28 -13
- package/src/components/DatePicker.story.vue +11 -0
- package/src/components/DatePicker.vue +5 -5
- package/src/components/DateTimePicker.story.vue +1 -1
- package/src/components/DateTimePicker.vue +8 -5
- package/src/components/Divider.story.vue +1 -1
- package/src/components/DoseCalculator.vue +44 -51
- package/src/components/DoseCalculatorVolumeField.vue +22 -35
- package/src/components/DoseDesignWorkspaceView.vue +1 -1
- package/src/components/EmptyState.story.vue +4 -4
- package/src/components/EmptyState.vue +4 -2
- package/src/components/ExperimentPopover.story.vue +2 -2
- package/src/components/ExperimentPopover.vue +6 -4
- package/src/components/ExperimentSelectorModal.story.vue +2 -1
- package/src/components/ExperimentSelectorModal.vue +91 -261
- package/src/components/ExperimentTimeline.story.vue +29 -0
- package/src/components/ExperimentTimeline.vue +20 -0
- package/src/components/FilePicker.story.vue +65 -10
- package/src/components/FilePicker.vue +203 -121
- package/src/components/FitPanel.story.vue +72 -6
- package/src/components/FitPanel.vue +70 -18
- package/src/components/FormField.vue +2 -0
- package/src/components/FormulaInput.story.vue +6 -0
- package/src/components/FormulaInput.vue +49 -70
- package/src/components/GeneratedPathInput.story.vue +121 -8
- package/src/components/GeneratedPathInput.vue +155 -86
- package/src/components/GeneratedPlotlyResult.vue +1 -1
- package/src/components/GeneratedPluginView.vue +4 -4
- package/src/components/GeneratedResultRenderer.vue +19 -0
- package/src/components/InstrumentStateBadge.story.vue +41 -0
- package/src/components/InstrumentStateBadge.vue +24 -14
- package/src/components/JobsStatusTray.vue +30 -8
- package/src/components/MoleculeInput.vue +12 -7
- package/src/components/MultiSelect.vue +3 -3
- package/src/components/PlateEditor.story.vue +333 -0
- package/src/components/PlateEditor.vue +793 -0
- package/src/components/PlotlyChart.story.vue +37 -1
- package/src/components/PlotlyChart.vue +86 -16
- package/src/components/PluginWorkspaceView.props.ts +1 -7
- package/src/components/PluginWorkspaceView.vue +0 -4
- package/src/components/ProgressBar.story.vue +0 -30
- package/src/components/ProgressBar.vue +3 -53
- package/src/components/ProtocolStepEditor.story.vue +8 -0
- package/src/components/ProtocolStepEditor.vue +55 -145
- package/src/components/ProtocolStepParameterField.vue +55 -93
- package/src/components/ReagentList.presentation.ts +7 -6
- package/src/components/ReagentList.vue +18 -17
- package/src/components/SampleHierarchyTree.story.vue +19 -0
- package/src/components/SampleHierarchyTree.vue +47 -14
- package/src/components/SampleLegend.vue +12 -4
- package/src/components/SampleSelector.story.vue +5 -1
- package/src/components/SampleSelector.vue +25 -15
- package/src/components/SampleSelectorGroupNode.vue +10 -20
- package/src/components/SampleSelectorSampleRow.vue +7 -18
- package/src/components/ScheduleCalendar.story.vue +14 -0
- package/src/components/ScheduleCalendar.vue +13 -1
- package/src/components/ScientificNumber.story.vue +15 -2
- package/src/components/ScientificNumber.vue +22 -26
- package/src/components/SearchableSelect.vue +14 -9
- package/src/components/SecretInput.vue +1 -1
- package/src/components/SegmentedControl.story.vue +23 -0
- package/src/components/SegmentedControl.vue +6 -1
- package/src/components/SequenceInput.story.vue +27 -5
- package/src/components/SequenceInput.vue +74 -29
- package/src/components/SequenceProgressBar.vue +0 -1
- package/src/components/SettingsModal.schema.ts +4 -2
- package/src/components/SettingsModal.story.vue +83 -22
- package/src/components/SettingsModal.vue +338 -79
- package/src/components/Skeleton.vue +6 -35
- package/src/components/SmartGroup.types.ts +2 -2
- package/src/components/SmartGroupFieldRecipe.groups.ts +4 -1
- package/src/components/SmartGroupFieldRecipe.vue +14 -8
- package/src/components/SmartGroupManual.vue +14 -11
- package/src/components/StepWizard.vue +16 -19
- package/src/components/TagsInput.story.vue +16 -11
- package/src/components/TagsInput.vue +20 -3
- package/src/components/TimePicker.story.vue +38 -3
- package/src/components/TimePicker.vue +26 -11
- package/src/components/TimeRangeInput.story.vue +50 -1
- package/src/components/TimeRangeInput.vue +36 -17
- package/src/components/UnitInput.story.vue +1 -1
- package/src/components/UnitInput.vue +173 -107
- package/src/components/WellPlate.colors.ts +7 -6
- package/src/components/WellPlate.geometry.ts +3 -0
- package/src/components/WellPlate.interaction.ts +39 -5
- package/src/components/WellPlate.rendering.ts +21 -27
- package/src/components/WellPlate.sampleDrop.ts +20 -12
- package/src/components/WellPlate.story.vue +18 -7
- package/src/components/WellPlate.vue +28 -22
- package/src/components/index.ts +34 -31
- package/src/components/internal/AppTopBarPageSelectorInternal.vue +13 -7
- package/src/components/internal/AppTopBarPillNavInternal.vue +12 -7
- package/src/components/internal/CalendarGridPanelInternal.vue +1 -1
- package/src/components/internal/FilePickerListInternal.vue +318 -0
- package/src/components/internal/FilePickerPreviewInternal.vue +54 -52
- package/src/components/internal/PlateEditorBindingInternal.vue +37 -0
- package/src/components/internal/ResourcePickerListInternal.vue +237 -0
- package/src/components/internal/SettingsPaneHeadInternal.vue +41 -0
- package/src/components/internal/WellEditPopupInternal.vue +219 -146
- package/src/components/internal/WorkspaceShellInternal.vue +0 -6
- package/src/components/internal/filePickerPresentation.ts +30 -0
- package/src/components/internal/generatedJobsApi.ts +12 -0
- package/src/composables/autoGroup/index.ts +3 -0
- package/src/composables/controlSchemaAdapters.ts +0 -4
- package/src/composables/controlSchemaFormFields.ts +0 -4
- package/src/composables/controlSchemaTypes.ts +4 -43
- package/src/composables/createFilePickerAdapter.ts +90 -22
- package/src/composables/filePicker/localFiles.ts +1 -0
- package/src/composables/filePicker/usePickerNavigation.ts +29 -2
- package/src/composables/index.ts +2 -71
- package/src/composables/pluginWorkspaceModel.ts +0 -3
- package/src/composables/useAutoGroup.ts +10 -0
- package/src/composables/useBioTemplateComponents.ts +15 -3
- package/src/composables/useBioTemplateControls.ts +5 -1
- package/src/composables/useBioTemplatePackWorkspace.ts +2 -0
- package/src/composables/useBioTemplatePresetWorkspace.ts +5 -1
- package/src/composables/useBioTemplateWorkspace.ts +5 -1
- package/src/composables/useChemicalFormula.ts +39 -13
- package/src/composables/useDropdownState.ts +6 -1
- package/src/composables/useExperimentSave.ts +5 -1
- package/src/composables/useFileBrowser.ts +3 -2
- package/src/composables/useFilePicker.ts +98 -13
- package/src/composables/useFocusTrap.ts +9 -6
- package/src/composables/useGeneratedAnalysis.ts +38 -0
- package/src/composables/useGroupAssignment.ts +5 -1
- package/src/composables/useJobsStatusTray.ts +5 -5
- package/src/composables/useMenuKeyboard.ts +5 -3
- package/src/composables/usePlatformFilePickerAdapter.ts +26 -4
- package/src/composables/usePluginClient.ts +1 -1
- package/src/composables/usePluginWorkspace.ts +0 -1
- package/src/composables/useRackEditor.ts +202 -12
- package/src/composables/useSequenceUtils.ts +20 -2
- package/src/composables/useTemplateCollection.ts +5 -1
- package/src/composables/workspaceRecipes.ts +1 -0
- package/src/index.ts +9 -3
- package/src/instrument.ts +6 -0
- package/src/lcms.ts +11 -0
- package/src/permissions.ts +2 -59
- package/src/styles/components/action-menu.css +9 -38
- package/src/styles/components/adduct-text.css +15 -3
- package/src/styles/components/alert-box.css +19 -70
- package/src/styles/components/app-avatar-menu.css +22 -57
- package/src/styles/components/app-container.css +4 -4
- package/src/styles/components/app-layout.css +18 -18
- package/src/styles/components/app-page-selector.css +50 -105
- package/src/styles/components/app-pill-nav.css +24 -42
- package/src/styles/components/app-sidebar.css +2 -2
- package/src/styles/components/app-top-bar.css +78 -55
- package/src/styles/components/artifact-selector-modal.css +1 -211
- package/src/styles/components/audit-trail.css +45 -38
- package/src/styles/components/avatar.css +1 -1
- package/src/styles/components/batch-progress-list.css +179 -95
- package/src/styles/components/breadcrumb.css +34 -15
- package/src/styles/components/calendar.css +2 -8
- package/src/styles/components/chart-container.css +81 -38
- package/src/styles/components/checkbox.css +8 -6
- package/src/styles/components/chemical-formula.css +8 -6
- package/src/styles/components/collapsible-card.css +6 -46
- package/src/styles/components/concentration-input.css +1 -10
- package/src/styles/components/dataframe.css +48 -67
- package/src/styles/components/date-picker.css +124 -62
- package/src/styles/components/datetime-picker.css +81 -47
- package/src/styles/components/divider.css +2 -4
- package/src/styles/components/dose-calculator.css +9 -135
- package/src/styles/components/empty-state.css +26 -35
- package/src/styles/components/experiment-code-badge.css +1 -1
- package/src/styles/components/experiment-popover.css +16 -83
- package/src/styles/components/experiment-selector-modal.css +9 -226
- package/src/styles/components/experiment-timeline.css +120 -50
- package/src/styles/components/file-picker.css +323 -299
- package/src/styles/components/file-uploader.css +4 -6
- package/src/styles/components/fit-panel.css +108 -22
- package/src/styles/components/form-field.css +6 -4
- package/src/styles/components/formula-input.css +121 -48
- package/src/styles/components/group-assigner.css +1 -3
- package/src/styles/components/icon-button.css +15 -37
- package/src/styles/components/input.css +91 -2
- package/src/styles/components/instrument-monitor.css +37 -447
- package/src/styles/components/jobs-status-tray.css +82 -61
- package/src/styles/components/loading-spinner.css +18 -0
- package/src/styles/components/mobile-support-gate.css +15 -17
- package/src/styles/components/modal.css +44 -33
- package/src/styles/components/molecule-input.css +31 -16
- package/src/styles/components/multi-select.css +33 -29
- package/src/styles/components/number-input.css +1 -1
- package/src/styles/components/plate-editor.css +497 -0
- package/src/styles/components/popover.css +162 -0
- package/src/styles/components/progress-bar.css +1 -70
- package/src/styles/components/protocol-step-editor.css +21 -333
- package/src/styles/components/radio-group.css +9 -18
- package/src/styles/components/reagent-editor.css +3 -7
- package/src/styles/components/reagent-list.css +63 -69
- package/src/styles/components/resource-card.css +4 -6
- package/src/styles/components/resource-picker-list.css +212 -0
- package/src/styles/components/sample-hierarchy-tree.css +83 -65
- package/src/styles/components/sample-legend.css +18 -7
- package/src/styles/components/sample-selector.css +41 -68
- package/src/styles/components/schedule-calendar.css +59 -54
- package/src/styles/components/scientific-number.css +72 -18
- package/src/styles/components/searchable-select.css +17 -26
- package/src/styles/components/secret-input.css +20 -23
- package/src/styles/components/section-card.css +3 -5
- package/src/styles/components/segmented-control.css +14 -1
- package/src/styles/components/select.css +19 -8
- package/src/styles/components/sequence-input.css +85 -37
- package/src/styles/components/sequence-progress-bar.css +18 -37
- package/src/styles/components/settings-modal.css +683 -34
- package/src/styles/components/skeleton.css +24 -23
- package/src/styles/components/slider.css +74 -8
- package/src/styles/components/smart-group.css +27 -39
- package/src/styles/components/status-indicator.css +1 -1
- package/src/styles/components/step-wizard.css +62 -99
- package/src/styles/components/tabs.css +2 -6
- package/src/styles/components/tags-input.css +64 -54
- package/src/styles/components/textarea.css +2 -2
- package/src/styles/components/time-picker.css +67 -38
- package/src/styles/components/time-range-input.css +16 -18
- package/src/styles/components/toast.css +1 -1
- package/src/styles/components/toggle.css +21 -31
- package/src/styles/components/tooltip.css +13 -15
- package/src/styles/components/unit-input.css +86 -36
- package/src/styles/components/well-edit-popup.css +111 -189
- package/src/styles/components/well-plate.css +7 -7
- package/src/styles/index.css +5 -7
- package/src/styles/variables.css +35 -7
- package/src/templates/adapters.ts +4 -0
- package/src/templates/assayMatrixAdapters.ts +8 -1
- package/src/templates/assayMatrixBuilder.ts +1 -0
- package/src/templates/builderPresetControls.ts +1 -0
- package/src/templates/calibrationCurveAdapters.ts +3 -0
- package/src/templates/calibrationCurveBuilder.ts +1 -0
- package/src/templates/catalog.ts +6 -2
- package/src/templates/componentBindingCatalog.ts +1 -1
- package/src/templates/componentBindings.ts +31 -5
- package/src/templates/componentDoseResponseProps.ts +0 -1
- package/src/templates/componentPlateHelpers.ts +22 -1
- package/src/templates/componentPlateMapProps.ts +7 -5
- package/src/templates/componentQpcrPlateProps.ts +0 -1
- package/src/templates/controlSchemas.ts +9 -0
- package/src/templates/defaultBioTemplateBuilder.ts +1 -0
- package/src/templates/doseResponseAdapters.ts +2 -0
- package/src/templates/doseResponseBuilder.ts +1 -0
- package/src/templates/elisaAssayCollectionBuilder.ts +1 -0
- package/src/templates/flowCytometryAssayCollectionBuilder.ts +1 -0
- package/src/templates/flowCytometryPanelBuilder.ts +1 -0
- package/src/templates/flowPanelAdapters.ts +3 -0
- package/src/templates/index.ts +4 -0
- package/src/templates/instrumentRunAdapters.ts +13 -2
- package/src/templates/instrumentRunBuilder.ts +1 -0
- package/src/templates/lcmsBatchCollectionBuilder.ts +1 -0
- package/src/templates/packs.ts +4 -0
- package/src/templates/plateMapAdapters.ts +2 -0
- package/src/templates/plateMapBuilder.ts +1 -0
- package/src/templates/presets.ts +6 -2
- package/src/templates/protocolAdapters.ts +4 -0
- package/src/templates/protocolStepsBuilder.ts +1 -0
- package/src/templates/qpcrAdapters.ts +4 -0
- package/src/templates/qpcrExpressionCollectionBuilder.ts +1 -0
- package/src/templates/qpcrPlateBuilder.ts +1 -0
- package/src/templates/reagentAdapters.ts +4 -0
- package/src/templates/reagentListBuilder.ts +1 -0
- package/src/templates/samplePrepAdapters.ts +3 -0
- package/src/templates/samplePrepBuilder.ts +1 -0
- package/src/templates/sampleSheetAdapters.ts +4 -0
- package/src/templates/sampleSheetBuilder.ts +1 -0
- package/src/templates/targetedMetabolomicsCollectionBuilder.ts +1 -0
- package/src/templates/templateEnvelopes.ts +8 -0
- package/src/templates/templatePackCollectionBuilder.ts +1 -0
- package/src/templates/templatePresetCollectionBuilder.ts +2 -0
- package/src/templates/templateValidators.ts +12 -0
- package/src/templates/timeCourseAdapters.ts +4 -0
- package/src/templates/timeCourseBuilder.ts +1 -0
- package/src/templates/wellPlateScreenCollectionBuilder.ts +1 -0
- package/src/templates/westernBlotAssayCollectionBuilder.ts +1 -0
- package/src/types/auth.ts +0 -37
- package/src/types/componentLabTypes.ts +16 -13
- package/src/types/componentWorkflowTypes.ts +29 -0
- package/src/types/components.ts +43 -20
- package/src/types/fileBrowserTypes.ts +15 -0
- package/src/types/filePicker.ts +19 -1
- package/src/types/generated-ui.ts +15 -0
- package/src/types/index.ts +12 -11
- package/src/types/instrument.ts +47 -15
- package/src/types/platform.ts +2 -0
- package/src/utils/color.ts +16 -1
- package/src/utils/formModelSync.ts +1 -1
- package/src/utils/plotlyTemplate.ts +39 -0
- package/src/utils/rack.ts +16 -0
- package/src/utils/sampleTypeMarker.ts +44 -0
- package/dist/ExperimentPopover-CJdNlCZb.js +0 -451
- package/dist/ExperimentPopover-CJdNlCZb.js.map +0 -1
- package/dist/ExperimentSelectorModal-DHE9k8TP.js +0 -507
- package/dist/ExperimentSelectorModal-DHE9k8TP.js.map +0 -1
- package/dist/SettingsModal-DELMkUFR.js +0 -492
- package/dist/SettingsModal-DELMkUFR.js.map +0 -1
- package/dist/Skeleton-jhF9wUkU.js +0 -485
- package/dist/Skeleton-jhF9wUkU.js.map +0 -1
- package/dist/__tests__/composables/usePluginConfig.test.d.ts +0 -15
- package/dist/chunk-BoAXSpZd.js +0 -33
- package/dist/components/AppPluginSwitcher.vue.d.ts +0 -40
- package/dist/components/ColorSlider.vue.d.ts +0 -34
- package/dist/components/DropdownButton.vue.d.ts +0 -49
- package/dist/components/FileBrowserModal.vue.d.ts +0 -99
- package/dist/components/InstrumentAlertLog.vue.d.ts +0 -22
- package/dist/components/InstrumentStatusCard.vue.d.ts +0 -13
- package/dist/components/LcmsSequenceTable.vue.d.ts +0 -54
- package/dist/components/PlateMapEditor.vue.d.ts +0 -50
- package/dist/components/RackEditor.vue.d.ts +0 -78
- package/dist/components/fileBrowserPresentation.d.ts +0 -10
- package/dist/components/internal/FileBrowserDialogInternal.vue.d.ts +0 -34
- package/dist/components/internal/FileBrowserListingInternal.vue.d.ts +0 -25
- package/dist/components/internal/FileBrowserToolbarInternal.vue.d.ts +0 -26
- package/dist/components/internal/PlateMapEditorToolbarInternal.vue.d.ts +0 -28
- package/dist/components-Bbg_gtzF.js.map +0 -1
- package/dist/composables/useAsync.d.ts +0 -132
- package/dist/composables/useAuth.d.ts +0 -47
- package/dist/composables/useCommandHistory.d.ts +0 -33
- package/dist/composables/useOptimisticMutation.d.ts +0 -32
- package/dist/composables/usePasskey.d.ts +0 -10
- package/dist/composables/usePluginConfig.d.ts +0 -27
- package/dist/composables/useResourceCrud.d.ts +0 -44
- package/dist/composables/useWellPainting.d.ts +0 -39
- package/dist/composables/useWellPlateAdapter.d.ts +0 -40
- package/dist/composables/useWellPlateEditor.d.ts +0 -33
- package/dist/composables/useWellPlateValidation.d.ts +0 -31
- package/dist/composables-BCbYb2lA.js +0 -2356
- package/dist/composables-BCbYb2lA.js.map +0 -1
- package/dist/errors-BLuqMee5.js.map +0 -1
- package/dist/experiment-CVDRAnqp.js +0 -90
- package/dist/experiment-CVDRAnqp.js.map +0 -1
- package/dist/experiment-utils-CV2Wza3z.js.map +0 -1
- package/dist/plotly.min-c2Sez60c.js +0 -180634
- package/dist/plotly.min-c2Sez60c.js.map +0 -1
- package/dist/templates-NuaNHohp.js +0 -5260
- package/dist/templates-NuaNHohp.js.map +0 -1
- package/dist/useControlSchema-vLiRPUmj.js +0 -7301
- package/dist/useControlSchema-vLiRPUmj.js.map +0 -1
- package/dist/useDropdownState-C7hRiVQf.js +0 -63
- package/dist/useDropdownState-C7hRiVQf.js.map +0 -1
- package/dist/useExperimentSelector-G_CAOFTX.js +0 -328
- package/dist/useExperimentSelector-G_CAOFTX.js.map +0 -1
- package/dist/useFormBuilder-D37ajgS8.js +0 -729
- package/dist/useFormBuilder-D37ajgS8.js.map +0 -1
- package/dist/validation-ChMyixAf.js.map +0 -1
- package/src/__tests__/components/AppPluginSwitcher.test.ts +0 -44
- package/src/__tests__/components/DropdownButton.test.ts +0 -628
- package/src/__tests__/components/FileBrowserModal.test.ts +0 -460
- package/src/__tests__/components/InstrumentAlertLog.test.ts +0 -59
- package/src/__tests__/components/LcmsSequenceTable.test.ts +0 -79
- package/src/__tests__/components/PlateMapEditorToolbarInternal.test.ts +0 -54
- package/src/__tests__/components/RackEditor.test.ts +0 -169
- package/src/__tests__/composables/useAuth.test.ts +0 -233
- package/src/__tests__/composables/useCommandHistory.test.ts +0 -43
- package/src/__tests__/composables/useOptimisticMutation.test.ts +0 -40
- package/src/__tests__/composables/usePluginConfig.test.ts +0 -497
- package/src/__tests__/composables/useResourceCrud.test.ts +0 -56
- package/src/__tests__/composables/useWellPainting.test.ts +0 -52
- package/src/__tests__/composables/useWellPlateAdapter.test.ts +0 -50
- package/src/__tests__/composables/useWellPlateValidation.test.ts +0 -42
- package/src/components/AppPluginSwitcher.story.vue +0 -87
- package/src/components/AppPluginSwitcher.vue +0 -134
- package/src/components/ColorSlider.story.vue +0 -120
- package/src/components/ColorSlider.vue +0 -160
- package/src/components/DropdownButton.story.vue +0 -102
- package/src/components/DropdownButton.vue +0 -181
- package/src/components/FileBrowserModal.story.vue +0 -203
- package/src/components/FileBrowserModal.vue +0 -384
- package/src/components/InstrumentAlertLog.vue +0 -187
- package/src/components/InstrumentStatusCard.vue +0 -184
- package/src/components/LcmsSequenceTable.vue +0 -222
- package/src/components/PlateMapEditor.story.vue +0 -92
- package/src/components/PlateMapEditor.vue +0 -423
- package/src/components/RackEditor.story.vue +0 -100
- package/src/components/RackEditor.vue +0 -429
- package/src/components/fileBrowserPresentation.ts +0 -39
- package/src/components/internal/FileBrowserDialogInternal.vue +0 -75
- package/src/components/internal/FileBrowserListingInternal.vue +0 -197
- package/src/components/internal/FileBrowserToolbarInternal.vue +0 -136
- package/src/components/internal/FilePickerTreeInternal.vue +0 -238
- package/src/components/internal/PlateMapEditorToolbarInternal.vue +0 -128
- package/src/composables/useAsync.ts +0 -327
- package/src/composables/useAuth.ts +0 -458
- package/src/composables/useCommandHistory.ts +0 -117
- package/src/composables/useOptimisticMutation.ts +0 -97
- package/src/composables/usePasskey.ts +0 -216
- package/src/composables/usePluginConfig.ts +0 -252
- package/src/composables/useResourceCrud.ts +0 -235
- package/src/composables/useWellPainting.ts +0 -167
- package/src/composables/useWellPlateAdapter.ts +0 -151
- package/src/composables/useWellPlateEditor.ts +0 -415
- package/src/composables/useWellPlateValidation.ts +0 -89
- package/src/plotly-dist.d.ts +0 -3
- package/src/styles/components/app-plugin-switcher.css +0 -196
- package/src/styles/components/color-slider.css +0 -110
- package/src/styles/components/dropdown-button.css +0 -280
- package/src/styles/components/file-browser-modal.css +0 -489
- package/src/styles/components/lcms-sequence-table.css +0 -204
- package/src/styles/components/plate-map-editor.css +0 -464
- package/src/styles/components/rack-editor.css +0 -287
- /package/dist/__tests__/components/{AppPluginSwitcher.test.d.ts → AlertBox.test.d.ts} +0 -0
- /package/dist/__tests__/components/{DropdownButton.test.d.ts → AuditTrail.test.d.ts} +0 -0
- /package/dist/__tests__/components/{FileBrowserModal.test.d.ts → BaseCheckbox.test.d.ts} +0 -0
- /package/dist/__tests__/components/{InstrumentAlertLog.test.d.ts → BaseSlider.test.d.ts} +0 -0
- /package/dist/__tests__/components/{LcmsSequenceTable.test.d.ts → DoseCalculator.test.d.ts} +0 -0
- /package/dist/__tests__/components/{PlateMapEditorToolbarInternal.test.d.ts → FileUploader.test.d.ts} +0 -0
- /package/dist/__tests__/components/{RackEditor.test.d.ts → FitPanel.test.d.ts} +0 -0
- /package/dist/__tests__/{composables/useAuth.test.d.ts → components/FormulaInput.test.d.ts} +0 -0
- /package/dist/__tests__/{composables/useCommandHistory.test.d.ts → components/InstrumentStateBadge.test.d.ts} +0 -0
- /package/dist/__tests__/{composables/useOptimisticMutation.test.d.ts → components/MoleculeInput.test.d.ts} +0 -0
- /package/dist/__tests__/{composables/useResourceCrud.test.d.ts → components/PlateEditor.test.d.ts} +0 -0
- /package/dist/__tests__/{composables/useWellPainting.test.d.ts → components/PlateEditorBindingInternal.test.d.ts} +0 -0
- /package/dist/__tests__/{composables/useWellPlateAdapter.test.d.ts → components/ResourcePickerListInternal.test.d.ts} +0 -0
- /package/dist/__tests__/{composables/useWellPlateValidation.test.d.ts → components/SampleLegend.test.d.ts} +0 -0
|
@@ -5,7 +5,7 @@ import type { WellPlateFormat, WellPlateSelectionMode, WellPlateSize, WellShape,
|
|
|
5
5
|
|
|
6
6
|
const formats: WellPlateFormat[] = [6, 12, 24, 48, 96, 384]
|
|
7
7
|
const selectionModes: WellPlateSelectionMode[] = ['none', 'single', 'multiple', 'rectangle']
|
|
8
|
-
const sizes: WellPlateSize[] = ['sm', 'md', 'lg', 'xl']
|
|
8
|
+
const sizes: WellPlateSize[] = ['xs', 'sm', 'md', 'lg', 'xl']
|
|
9
9
|
const shapes: WellShape[] = ['rounded', 'circle']
|
|
10
10
|
|
|
11
11
|
const selectedWells = ref<string[]>([])
|
|
@@ -23,7 +23,8 @@ const PLATE_CONFIGS: Record<WellPlateFormat, { rows: number; cols: number }> = {
|
|
|
23
23
|
function generateMockWells(format: WellPlateFormat): Record<string, Partial<Well>> {
|
|
24
24
|
const config = PLATE_CONFIGS[format]
|
|
25
25
|
const wells: Record<string, Partial<Well>> = {}
|
|
26
|
-
|
|
26
|
+
// The 3a marker set: shape per type, Q / i glyphs for QC / iQC.
|
|
27
|
+
const sampleTypes = ['sample', 'sample', 'blank', 'qc', 'iqc']
|
|
27
28
|
|
|
28
29
|
for (let row = 0; row < config.rows; row++) {
|
|
29
30
|
for (let col = 0; col < config.cols; col++) {
|
|
@@ -63,6 +64,14 @@ function generateHeatmapWells(format: WellPlateFormat): Record<string, Partial<W
|
|
|
63
64
|
const mockWells96 = generateMockWells(96)
|
|
64
65
|
const heatmapWells = generateHeatmapWells(96)
|
|
65
66
|
const mockWells6 = generateMockWells(6)
|
|
67
|
+
// One well per marker type; the Q / i glyph moves to a corner when an ID or label takes the centre.
|
|
68
|
+
const markerWells: Record<string, Partial<Well>> = {
|
|
69
|
+
A1: { id: 'A1', row: 0, col: 0, state: 'filled', sampleType: 'sample', metadata: { label: 'S-01' } },
|
|
70
|
+
A2: { id: 'A2', row: 0, col: 1, state: 'filled', sampleType: 'blank', metadata: { label: 'Blank' } },
|
|
71
|
+
A3: { id: 'A3', row: 0, col: 2, state: 'filled', sampleType: 'qc', metadata: { label: 'Pool' } },
|
|
72
|
+
B1: { id: 'B1', row: 1, col: 0, state: 'filled', sampleType: 'iqc', metadata: { label: 'Std 1' } },
|
|
73
|
+
B2: { id: 'B2', row: 1, col: 1, state: 'filled', sampleType: 'iqc' },
|
|
74
|
+
}
|
|
66
75
|
|
|
67
76
|
const rectSelected = ref<string[]>([])
|
|
68
77
|
|
|
@@ -129,7 +138,6 @@ function initState() {
|
|
|
129
138
|
wellShape: 'rounded' as WellShape,
|
|
130
139
|
showLabels: true,
|
|
131
140
|
showWellIds: false,
|
|
132
|
-
showSampleTypeIndicator: true,
|
|
133
141
|
showLegend: false,
|
|
134
142
|
disabled: false,
|
|
135
143
|
readonly: false,
|
|
@@ -153,7 +161,6 @@ function initState() {
|
|
|
153
161
|
:well-shape="state.wellShape"
|
|
154
162
|
:show-labels="state.showLabels"
|
|
155
163
|
:show-well-ids="state.showWellIds"
|
|
156
|
-
:show-sample-type-indicator="state.showSampleTypeIndicator"
|
|
157
164
|
:show-legend="state.showLegend"
|
|
158
165
|
:disabled="state.disabled"
|
|
159
166
|
:readonly="state.readonly"
|
|
@@ -191,7 +198,6 @@ function initState() {
|
|
|
191
198
|
/>
|
|
192
199
|
<HstCheckbox v-model="state.showLabels" title="Show Labels" />
|
|
193
200
|
<HstCheckbox v-model="state.showWellIds" title="Show Well IDs" />
|
|
194
|
-
<HstCheckbox v-model="state.showSampleTypeIndicator" title="Sample Type Indicator" />
|
|
195
201
|
<HstCheckbox v-model="state.showLegend" title="Show Legend" />
|
|
196
202
|
<HstCheckbox v-model="state.disabled" title="Disabled" />
|
|
197
203
|
<HstCheckbox v-model="state.readonly" title="Readonly" />
|
|
@@ -234,7 +240,6 @@ function initState() {
|
|
|
234
240
|
:wells="mockWells6"
|
|
235
241
|
selection-mode="multiple"
|
|
236
242
|
show-labels
|
|
237
|
-
show-sample-type-indicator
|
|
238
243
|
show-legend
|
|
239
244
|
size="xl"
|
|
240
245
|
well-shape="circle"
|
|
@@ -265,13 +270,19 @@ function initState() {
|
|
|
265
270
|
:wells="mockWells96"
|
|
266
271
|
selection-mode="none"
|
|
267
272
|
show-labels
|
|
268
|
-
show-sample-type-indicator
|
|
269
273
|
show-legend
|
|
270
274
|
size="md"
|
|
271
275
|
/>
|
|
272
276
|
</div>
|
|
273
277
|
</Variant>
|
|
274
278
|
|
|
279
|
+
<Variant title="Marker Glyphs with IDs and Labels">
|
|
280
|
+
<div style="padding: 2rem; display: flex; gap: 2rem;">
|
|
281
|
+
<WellPlate :format="6" :wells="markerWells" selection-mode="none" show-well-ids size="lg" />
|
|
282
|
+
<WellPlate :format="6" :wells="markerWells" selection-mode="none" show-well-labels size="lg" />
|
|
283
|
+
</div>
|
|
284
|
+
</Variant>
|
|
285
|
+
|
|
275
286
|
<Variant title="Dose-Response Conditions">
|
|
276
287
|
<div style="padding: 2rem;">
|
|
277
288
|
<h3 style="margin-bottom: 1rem; font-size: 0.875rem; color: var(--text-muted, #94a3b8);">
|
|
@@ -1,6 +1,6 @@
|
|
|
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
|
-
import {
|
|
3
|
+
import { computed } from 'vue'
|
|
4
4
|
import type { WellPlateFormat, WellPlateSelectionMode, WellPlateSize, Well, HeatmapConfig, WellShape, WellEditField, WellEditData, WellLegendItem, ColumnCondition, RowCondition, WellSampleDropData, WellSampleDropParser, WellClassResolver, WellClassValue, WellStyleResolver } from '../types'
|
|
5
5
|
import { useEventListener } from '../composables/useEventListener'
|
|
6
6
|
import WellEditPopupInternal from './internal/WellEditPopupInternal.vue'
|
|
@@ -25,7 +25,8 @@ import {
|
|
|
25
25
|
} from './WellPlate.geometry'
|
|
26
26
|
import { useWellPlateInteraction } from './WellPlate.interaction'
|
|
27
27
|
import {
|
|
28
|
-
|
|
28
|
+
sampleTint,
|
|
29
|
+
warnSampleTypeIndicatorDeprecated,
|
|
29
30
|
wellBadge,
|
|
30
31
|
wellClasses,
|
|
31
32
|
wellLabel,
|
|
@@ -41,6 +42,10 @@ interface Props {
|
|
|
41
42
|
selectionMode?: WellPlateSelectionMode
|
|
42
43
|
showLabels?: boolean
|
|
43
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
|
+
*/
|
|
44
49
|
showSampleTypeIndicator?: boolean
|
|
45
50
|
heatmap?: HeatmapConfig
|
|
46
51
|
sampleColors?: Record<string, string>
|
|
@@ -107,6 +112,8 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
107
112
|
sampleDropParser: undefined,
|
|
108
113
|
})
|
|
109
114
|
|
|
115
|
+
if (props.showSampleTypeIndicator) warnSampleTypeIndicatorDeprecated()
|
|
116
|
+
|
|
110
117
|
const emit = defineEmits<{
|
|
111
118
|
'update:modelValue': [wellIds: string[]]
|
|
112
119
|
'well-click': [wellId: string, event: MouseEvent]
|
|
@@ -140,9 +147,6 @@ defineSlots<{
|
|
|
140
147
|
empty?: () => unknown
|
|
141
148
|
}>()
|
|
142
149
|
|
|
143
|
-
const plateRef = ref<HTMLElement | null>(null)
|
|
144
|
-
const tableRef = ref<HTMLElement | null>(null)
|
|
145
|
-
|
|
146
150
|
const plateConfig = computed(() => PLATE_CONFIGS[props.format])
|
|
147
151
|
|
|
148
152
|
const rowLabels = computed(() => createPlateRowLabels(plateConfig.value))
|
|
@@ -243,20 +247,27 @@ function getWellStyle(well: Well): Record<string, string | number | undefined> {
|
|
|
243
247
|
}
|
|
244
248
|
}
|
|
245
249
|
|
|
246
|
-
function getSampleTypeIndicator(well: Well): string | null {
|
|
247
|
-
return sampleTypeIndicator(well, props.showSampleTypeIndicator)
|
|
248
|
-
}
|
|
249
|
-
|
|
250
250
|
function getWellLabel(well: Well): string | undefined {
|
|
251
251
|
return wellLabel(well, props.showWellLabels)
|
|
252
252
|
}
|
|
253
253
|
|
|
254
|
+
// A group is otherwise shown by color alone; name it from the legend.
|
|
255
|
+
function getWellGroupName(well: Well): string | undefined {
|
|
256
|
+
return well.group && (props.legendItems?.find(item => item.type === well.group)?.label ?? well.group)
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Names the sample even when the cell is too small to draw it.
|
|
260
|
+
function getWellAriaLabel(well: Well): string {
|
|
261
|
+
const name = well.metadata?.label
|
|
262
|
+
const group = getWellGroupName(well)
|
|
263
|
+
return `Well ${well.id}${name ? `, Name: ${name}` : ''}${well.sampleType ? `, Sample type: ${well.sampleType}` : ''}${group ? `, Group: ${group}` : ''}${well.value !== undefined ? `, Value: ${well.value}` : ''}`
|
|
264
|
+
}
|
|
265
|
+
|
|
254
266
|
function getWellBadge(well: Well): { text: string; color: string } | null {
|
|
255
267
|
return wellBadge(well, props.showBadges)
|
|
256
268
|
}
|
|
257
269
|
|
|
258
270
|
useEventListener(() => document, 'mouseup', handleMouseUp)
|
|
259
|
-
useEventListener(() => document, 'keydown', handleKeyDown)
|
|
260
271
|
|
|
261
272
|
const containerStyle = computed(() =>
|
|
262
273
|
isFillMode.value ? {} : {
|
|
@@ -279,9 +290,9 @@ const tableStyle = computed(() => ({
|
|
|
279
290
|
|
|
280
291
|
<template>
|
|
281
292
|
<div
|
|
282
|
-
ref="plateRef"
|
|
283
293
|
:class="['mint-well-plate', isFillMode ? 'mint-well-plate--fill' : 'mint-well-plate--inline']"
|
|
284
294
|
:style="containerStyle"
|
|
295
|
+
@keydown="handleKeyDown"
|
|
285
296
|
>
|
|
286
297
|
<div v-if="error" class="mint-well-plate__state">
|
|
287
298
|
<slot name="error" :error="error">
|
|
@@ -304,7 +315,6 @@ const tableStyle = computed(() => ({
|
|
|
304
315
|
<div v-else class="mint-well-plate__scroll">
|
|
305
316
|
<div class="mint-well-plate__content">
|
|
306
317
|
<table
|
|
307
|
-
ref="tableRef"
|
|
308
318
|
class="mint-well-plate__table"
|
|
309
319
|
role="grid"
|
|
310
320
|
:aria-label="`${props.format}-well plate`"
|
|
@@ -420,7 +430,7 @@ const tableStyle = computed(() => ({
|
|
|
420
430
|
<div
|
|
421
431
|
role="gridcell"
|
|
422
432
|
tabindex="0"
|
|
423
|
-
:aria-label="
|
|
433
|
+
:aria-label="getWellAriaLabel(well)"
|
|
424
434
|
:aria-selected="isSelected(well.id)"
|
|
425
435
|
:aria-disabled="props.disabled || well.state === 'disabled'"
|
|
426
436
|
:draggable="props.selectionMode === 'drag' && !!well.sampleType"
|
|
@@ -434,7 +444,7 @@ const tableStyle = computed(() => ({
|
|
|
434
444
|
fontSize: sizeConfig.fontSize,
|
|
435
445
|
...getWellStyle(well),
|
|
436
446
|
}"
|
|
437
|
-
:title="`${well.id}${well.sampleType ? `: ${well.sampleType}` : ''}${getWellLabel(well) ? ` - ${getWellLabel(well)}` : ''}`"
|
|
447
|
+
:title="`${well.id}${well.sampleType ? `: ${well.sampleType}` : ''}${getWellGroupName(well) ? `, ${getWellGroupName(well)}` : ''}${getWellLabel(well) ? ` - ${getWellLabel(well)}` : ''}`"
|
|
438
448
|
@click="handleWellClick(well, $event)"
|
|
439
449
|
@mousedown="handleWellMouseDown(well, $event)"
|
|
440
450
|
@mouseenter="handleWellMouseEnter(well, $event)"
|
|
@@ -448,6 +458,8 @@ const tableStyle = computed(() => ({
|
|
|
448
458
|
@keydown="handleWellMoveKeydown(well, $event)"
|
|
449
459
|
@keydown.enter.exact="handleWellClick(well, $event as unknown as MouseEvent)"
|
|
450
460
|
@keydown.space.exact.prevent="handleWellClick(well, $event as unknown as MouseEvent)"
|
|
461
|
+
@keydown.enter.shift.exact="handleWellClick(well, $event as unknown as MouseEvent)"
|
|
462
|
+
@keydown.space.shift.exact.prevent="handleWellClick(well, $event as unknown as MouseEvent)"
|
|
451
463
|
>
|
|
452
464
|
<!-- Well label text (from metadata.label) -->
|
|
453
465
|
<span
|
|
@@ -456,13 +468,6 @@ const tableStyle = computed(() => ({
|
|
|
456
468
|
>
|
|
457
469
|
{{ getWellLabel(well) }}
|
|
458
470
|
</span>
|
|
459
|
-
<!-- Sample type indicator (S/B/Q/C) -->
|
|
460
|
-
<span
|
|
461
|
-
v-else-if="getSampleTypeIndicator(well)"
|
|
462
|
-
class="mint-well-plate__indicator"
|
|
463
|
-
>
|
|
464
|
-
{{ getSampleTypeIndicator(well) }}
|
|
465
|
-
</span>
|
|
466
471
|
<!-- Well ID -->
|
|
467
472
|
<span
|
|
468
473
|
v-else-if="props.showWellIds"
|
|
@@ -512,7 +517,7 @@ const tableStyle = computed(() => ({
|
|
|
512
517
|
>
|
|
513
518
|
<span
|
|
514
519
|
class="mint-well-plate__sample-legend-dot"
|
|
515
|
-
:style="
|
|
520
|
+
:style="sampleTint(item.color)"
|
|
516
521
|
/>
|
|
517
522
|
<span class="mint-well-plate__sample-legend-text">{{ item.label }}</span>
|
|
518
523
|
</div>
|
|
@@ -538,6 +543,7 @@ const tableStyle = computed(() => ({
|
|
|
538
543
|
:well-data="wells[editingWellId]"
|
|
539
544
|
:edit-fields="editFields"
|
|
540
545
|
:default-injection-volume="defaultInjectionVolume"
|
|
546
|
+
:marker-colors="sampleColors"
|
|
541
547
|
:position="editPopupPosition"
|
|
542
548
|
@save="handleEditSave"
|
|
543
549
|
@clear="handleEditClear"
|
package/src/components/index.ts
CHANGED
|
@@ -8,15 +8,11 @@ export { default as BaseCheckbox } from './BaseCheckbox.vue'
|
|
|
8
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
|
-
/** Range slider with a gradient color track and color-coded value badge for threshold visualization. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `BaseSlider` instead. */
|
|
12
|
-
export { default as ColorSlider } from './ColorSlider.vue'
|
|
13
11
|
export { default as BaseTabs } from './BaseTabs.vue'
|
|
14
12
|
export { default as BaseModal } from './BaseModal.vue'
|
|
15
13
|
export { default as SegmentedControl } from './SegmentedControl.vue'
|
|
16
14
|
export { default as MultiSelect } from './MultiSelect.vue'
|
|
17
15
|
export { default as BasePill } from './BasePill.vue'
|
|
18
|
-
/** Button that opens a dropdown menu for selecting one option from a list. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `ActionMenu` instead. */
|
|
19
|
-
export { default as DropdownButton } from './DropdownButton.vue'
|
|
20
16
|
export { default as Calendar } from './Calendar.vue'
|
|
21
17
|
export { default as DataFrame } from './DataFrame.vue'
|
|
22
18
|
|
|
@@ -43,7 +39,6 @@ export { default as ThemeToggle } from './ThemeToggle.vue'
|
|
|
43
39
|
export { default as CollapsibleCard } from './CollapsibleCard.vue'
|
|
44
40
|
export { default as AppTopBar } from './AppTopBar.vue'
|
|
45
41
|
export { default as AppAvatarMenu } from './AppAvatarMenu.vue'
|
|
46
|
-
export { default as AppPluginSwitcher } from './AppPluginSwitcher.vue'
|
|
47
42
|
export { default as AppSidebar } from './AppSidebar.vue'
|
|
48
43
|
export { default as AppLayout } from './AppLayout.vue'
|
|
49
44
|
export { default as MobileSupportGate } from './MobileSupportGate.vue'
|
|
@@ -53,7 +48,8 @@ export { default as GeneratedResultRenderer } from './GeneratedResultRenderer.vu
|
|
|
53
48
|
export { default as GeneratedPlotlyResult } from './GeneratedPlotlyResult.vue'
|
|
54
49
|
export { default as ComponentBindingRenderer } from './ComponentBindingRenderer.vue'
|
|
55
50
|
export { default as ControlWorkspaceView } from './ControlWorkspaceView.vue'
|
|
56
|
-
|
|
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'
|
|
57
53
|
export { default as AppContainer } from './AppContainer.vue'
|
|
58
54
|
export { default as PluginIcon } from './PluginIcon.vue'
|
|
59
55
|
export { default as LayoutResizeHandle } from './LayoutResizeHandle.vue'
|
|
@@ -74,30 +70,43 @@ export { default as AdductText } from './AdductText.vue'
|
|
|
74
70
|
export { default as SettingsModal } from './SettingsModal.vue'
|
|
75
71
|
|
|
76
72
|
// Biological experiment components
|
|
77
|
-
|
|
78
|
-
export { default as
|
|
79
|
-
|
|
80
|
-
export { default as
|
|
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
81
|
export { default as WellPlate } from './WellPlate.vue'
|
|
82
|
-
export { default as
|
|
83
|
-
|
|
84
|
-
export { default as
|
|
85
|
-
|
|
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'
|
|
86
87
|
|
|
87
88
|
// Sample management components
|
|
89
|
+
/** Interactive sample list with drag-and-drop group assignment, color labeling, and smart-group support. */
|
|
88
90
|
export { default as SampleSelector } from './SampleSelector.vue'
|
|
89
|
-
|
|
90
|
-
export { default as
|
|
91
|
-
|
|
92
|
-
export { default as
|
|
93
|
-
|
|
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'
|
|
94
101
|
|
|
95
102
|
// Lab/Experiment components
|
|
96
103
|
export { default as MoleculeInput } from './MoleculeInput.vue'
|
|
97
104
|
export { default as ConcentrationInput } from './ConcentrationInput.vue'
|
|
98
105
|
export { default as DoseCalculator } from './DoseCalculator.vue'
|
|
99
|
-
|
|
100
|
-
export { default as
|
|
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'
|
|
101
110
|
export { default as SampleHierarchyTree } from './SampleHierarchyTree.vue'
|
|
102
111
|
export { default as ProtocolStepEditor } from './ProtocolStepEditor.vue'
|
|
103
112
|
|
|
@@ -105,14 +114,10 @@ export { default as ProtocolStepEditor } from './ProtocolStepEditor.vue'
|
|
|
105
114
|
export { default as PlotlyChart } from './PlotlyChart.vue'
|
|
106
115
|
export { default as ScientificNumber } from './ScientificNumber.vue'
|
|
107
116
|
export { default as ChemicalFormula } from './ChemicalFormula.vue'
|
|
117
|
+
/** Displays LC/MS or GC/MS acquisition sequence progress with ETA and remaining-time labels. */
|
|
108
118
|
export { default as SequenceProgressBar } from './SequenceProgressBar.vue'
|
|
109
|
-
/**
|
|
110
|
-
export { default as InstrumentAlertLog } from './InstrumentAlertLog.vue'
|
|
119
|
+
/** Status badge for instrument states: a tone dot (or dash / hollow shape for offline, never-reported and inactive) plus a label. */
|
|
111
120
|
export { default as InstrumentStateBadge } from './InstrumentStateBadge.vue'
|
|
112
|
-
/** Compact card for live instrument monitor status, sample, method, sequence progress, and ETA. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; instrument UI moves to the mld-ms plugins. */
|
|
113
|
-
export { default as InstrumentStatusCard } from './InstrumentStatusCard.vue'
|
|
114
|
-
/** Table for Xcalibur-compatible LCMS sequence rows with optional reorder/remove/duplicate controls. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; instrument UI moves to the mld-ms plugins. */
|
|
115
|
-
export { default as LcmsSequenceTable } from './LcmsSequenceTable.vue'
|
|
116
121
|
|
|
117
122
|
// Scientific input components
|
|
118
123
|
export { default as FormulaInput } from './FormulaInput.vue'
|
|
@@ -135,10 +140,8 @@ export { default as ExperimentCodeBadge } from './ExperimentCodeBadge.vue'
|
|
|
135
140
|
|
|
136
141
|
// Scheduling / booking components
|
|
137
142
|
export { default as DateTimePicker } from './DateTimePicker.vue'
|
|
138
|
-
/** Paired start/end time pickers that validate range order and display computed duration. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `TimePicker` instead. */
|
|
139
143
|
export { default as TimeRangeInput } from './TimeRangeInput.vue'
|
|
140
144
|
export { default as ScheduleCalendar } from './ScheduleCalendar.vue'
|
|
141
|
-
/** Card displaying a lab resource with availability status, specs, tags, and a book action. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; no platform replacement is planned. */
|
|
142
145
|
export { default as ResourceCard } from './ResourceCard.vue'
|
|
143
146
|
export { default as SectionCard } from './SectionCard.vue'
|
|
144
147
|
|
|
@@ -146,10 +149,10 @@ export { default as SectionCard } from './SectionCard.vue'
|
|
|
146
149
|
export { default as ExperimentSelectorModal } from './ExperimentSelectorModal.vue'
|
|
147
150
|
export { default as ArtifactSelectorModal } from './ArtifactSelectorModal.vue'
|
|
148
151
|
/** Modal picker over the read-only server mounts, recording paths rather than copying data. */
|
|
149
|
-
export { default as FileBrowserModal } from './FileBrowserModal.vue'
|
|
150
152
|
export { default as GeneratedPathInput } from './GeneratedPathInput.vue'
|
|
151
153
|
export { default as ArtifactSaveDialog } from './ArtifactSaveDialog.vue'
|
|
152
154
|
export { default as ExperimentPopover } from './ExperimentPopover.vue'
|
|
153
|
-
|
|
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'
|
|
154
157
|
|
|
155
158
|
export { default as FilePicker } from './FilePicker.vue'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
/** Dropdown trigger that switches between named pages, closing on outside click or Escape. */
|
|
3
|
-
import { computed } from 'vue'
|
|
3
|
+
import { computed, useTemplateRef } from 'vue'
|
|
4
4
|
import { useDropdownState } from '../../composables/useDropdownState'
|
|
5
5
|
import type { PageSelectorItem, PageSelectorItemInput } from '../../types/components'
|
|
6
6
|
import { normalizeItemInput } from '../../utils/items'
|
|
@@ -24,7 +24,10 @@ const emit = defineEmits<{
|
|
|
24
24
|
select: [page: PageSelectorItem]
|
|
25
25
|
}>()
|
|
26
26
|
|
|
27
|
-
const { isOpen,
|
|
27
|
+
const { isOpen, close, toggle } = useDropdownState({
|
|
28
|
+
rootRef: useTemplateRef<HTMLElement>('root'),
|
|
29
|
+
triggerRef: useTemplateRef<HTMLElement>('trigger'),
|
|
30
|
+
})
|
|
28
31
|
const normalizedPages = computed<PageSelectorItem[]>(() => props.pages.map(normalizeItemInput))
|
|
29
32
|
|
|
30
33
|
const current = computed<PageSelectorItem | undefined>(() =>
|
|
@@ -43,9 +46,9 @@ function handleSelect(page: PageSelectorItem) {
|
|
|
43
46
|
</script>
|
|
44
47
|
|
|
45
48
|
<template>
|
|
46
|
-
<div ref="
|
|
49
|
+
<div ref="root" class="mint-page-selector" :style="{ minWidth }">
|
|
47
50
|
<button
|
|
48
|
-
ref="
|
|
51
|
+
ref="trigger"
|
|
49
52
|
type="button"
|
|
50
53
|
class="mint-page-selector__trigger"
|
|
51
54
|
:class="{ 'mint-page-selector__trigger--open': isOpen }"
|
|
@@ -86,7 +89,7 @@ function handleSelect(page: PageSelectorItem) {
|
|
|
86
89
|
</span>
|
|
87
90
|
</button>
|
|
88
91
|
|
|
89
|
-
<div v-if="isOpen" class="mint-page-selector__menu" role="menu">
|
|
92
|
+
<div v-if="isOpen" class="mint-popover mint-page-selector__menu" role="menu">
|
|
90
93
|
<div class="mint-page-selector__menu-title">Go to</div>
|
|
91
94
|
<ActionItemInternal
|
|
92
95
|
v-for="page in normalizedPages"
|
|
@@ -95,8 +98,8 @@ function handleSelect(page: PageSelectorItem) {
|
|
|
95
98
|
:to="page.to"
|
|
96
99
|
:disabled="page.disabled"
|
|
97
100
|
:class="[
|
|
98
|
-
'mint-page-selector__item',
|
|
99
|
-
{ 'mint-page-selector__item--active': page.id === current?.id },
|
|
101
|
+
'mint-menu-item mint-page-selector__item',
|
|
102
|
+
{ 'mint-menu-item--selected mint-page-selector__item--active': page.id === current?.id },
|
|
100
103
|
{ 'mint-page-selector__item--disabled': page.disabled },
|
|
101
104
|
]"
|
|
102
105
|
role="menuitem"
|
|
@@ -118,6 +121,9 @@ function handleSelect(page: PageSelectorItem) {
|
|
|
118
121
|
</slot>
|
|
119
122
|
</span>
|
|
120
123
|
<span class="mint-page-selector__item-label">{{ page.label }}</span>
|
|
124
|
+
<svg class="mint-menu-item__check" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
125
|
+
<path d="M3.5 8.5l3 3 6-7" />
|
|
126
|
+
</svg>
|
|
121
127
|
</ActionItemInternal>
|
|
122
128
|
</div>
|
|
123
129
|
</div>
|
|
@@ -65,8 +65,8 @@ function handleClickOutside(event: MouseEvent) {
|
|
|
65
65
|
if (!clickedInside) openItemId.value = null
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
const
|
|
69
|
-
item.children?.
|
|
68
|
+
const activeChild = (item: PillNavItem) =>
|
|
69
|
+
item.children?.find(child => child.id === props.currentItemId)
|
|
70
70
|
|
|
71
71
|
function isSvgIcon(icon: PillNavItem['icon']): icon is string | string[] {
|
|
72
72
|
if (!icon) return false
|
|
@@ -89,7 +89,7 @@ useEventListener(() => document, 'click', handleClickOutside)
|
|
|
89
89
|
type="button"
|
|
90
90
|
:class="[
|
|
91
91
|
'mint-pill-nav__item',
|
|
92
|
-
{ 'mint-pill-nav__item--active': item.id === currentItemId ||
|
|
92
|
+
{ 'mint-pill-nav__item--active': item.id === currentItemId || activeChild(item) !== undefined },
|
|
93
93
|
{ 'mint-pill-nav__item--disabled': item.disabled },
|
|
94
94
|
]"
|
|
95
95
|
:disabled="item.disabled"
|
|
@@ -113,7 +113,8 @@ useEventListener(() => document, 'click', handleClickOutside)
|
|
|
113
113
|
</template>
|
|
114
114
|
<path v-else :d="item.icon" />
|
|
115
115
|
</svg>
|
|
116
|
-
{{ item.label }}
|
|
116
|
+
{{ activeChild(item)?.label ?? item.label }}
|
|
117
|
+
<span v-if="item.dot" class="mint-pill-nav__dot" role="img" aria-label="Needs attention" />
|
|
117
118
|
<svg
|
|
118
119
|
class="mint-pill-nav__chevron"
|
|
119
120
|
:class="{ 'mint-pill-nav__chevron--open': openItemId === item.id }"
|
|
@@ -158,11 +159,12 @@ useEventListener(() => document, 'click', handleClickOutside)
|
|
|
158
159
|
<path v-else :d="item.icon" />
|
|
159
160
|
</svg>
|
|
160
161
|
{{ item.label }}
|
|
162
|
+
<span v-if="item.dot" class="mint-pill-nav__dot" role="img" aria-label="Needs attention" />
|
|
161
163
|
</ActionItemInternal>
|
|
162
164
|
|
|
163
165
|
<div
|
|
164
166
|
v-if="item.children?.length && openItemId === item.id"
|
|
165
|
-
class="mint-pill-nav__dropdown"
|
|
167
|
+
class="mint-popover mint-pill-nav__dropdown"
|
|
166
168
|
role="menu"
|
|
167
169
|
>
|
|
168
170
|
<ActionItemInternal
|
|
@@ -172,8 +174,8 @@ useEventListener(() => document, 'click', handleClickOutside)
|
|
|
172
174
|
:to="option.to"
|
|
173
175
|
:disabled="option.disabled"
|
|
174
176
|
:class="[
|
|
175
|
-
'mint-pill-nav__dropdown-item',
|
|
176
|
-
{ 'mint-pill-nav__dropdown-item--active': option.id === currentItemId },
|
|
177
|
+
'mint-menu-item mint-pill-nav__dropdown-item',
|
|
178
|
+
{ 'mint-menu-item--selected mint-pill-nav__dropdown-item--active': option.id === currentItemId },
|
|
177
179
|
{ 'mint-pill-nav__dropdown-item--disabled': option.disabled },
|
|
178
180
|
]"
|
|
179
181
|
role="menuitem"
|
|
@@ -183,6 +185,9 @@ useEventListener(() => document, 'click', handleClickOutside)
|
|
|
183
185
|
<span v-if="option.description" class="mint-pill-nav__dropdown-description">
|
|
184
186
|
{{ option.description }}
|
|
185
187
|
</span>
|
|
188
|
+
<svg class="mint-menu-item__check" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
189
|
+
<path d="M3.5 8.5l3 3 6-7" />
|
|
190
|
+
</svg>
|
|
186
191
|
</ActionItemInternal>
|
|
187
192
|
</div>
|
|
188
193
|
</div>
|
|
@@ -109,7 +109,7 @@ function dayAriaLabel(date: Date): string {
|
|
|
109
109
|
!day.isCurrentMonth ? 'mint-date-picker__day--other-month' : '',
|
|
110
110
|
day.isDisabled ? 'mint-date-picker__day--disabled' : '',
|
|
111
111
|
isSameDay(day.date, selectedDate) ? 'mint-date-picker__day--selected' : '',
|
|
112
|
-
isToday(day.date)
|
|
112
|
+
isToday(day.date) ? 'mint-date-picker__day--today' : '',
|
|
113
113
|
]"
|
|
114
114
|
@click="emit('select', day)"
|
|
115
115
|
>
|