@morscherlab/mint-sdk 1.3.8 → 1.4.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -177
- package/dist/ActionMenu-CScINahU.js +445 -0
- package/dist/ActionMenu-CScINahU.js.map +1 -0
- package/dist/AppSidebar-BmiiPfz9.js +3514 -0
- package/dist/AppSidebar-BmiiPfz9.js.map +1 -0
- package/dist/{experiment-utils-DTANyVKV.js → BaseModal-DfRIuVoj.js} +74 -149
- package/dist/BaseModal-DfRIuVoj.js.map +1 -0
- package/dist/ConfirmDialog-CJ7hqYUP.js +102 -0
- package/dist/ConfirmDialog-CJ7hqYUP.js.map +1 -0
- package/dist/ExperimentPopover-C4sGw-is.js +359 -0
- package/dist/ExperimentPopover-C4sGw-is.js.map +1 -0
- package/dist/ExperimentSelectorModal-D-9z7cNx.js +527 -0
- package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +1 -0
- package/dist/SegmentedControl-DERBN-Xd.js +129 -0
- package/dist/SegmentedControl-DERBN-Xd.js.map +1 -0
- package/dist/SettingsModal-CSLE31yg.js +666 -0
- package/dist/SettingsModal-CSLE31yg.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 +14 -94
- package/dist/components/AppTopBar.vue.d.ts +16 -70
- package/dist/components/ArtifactSaveDialog.vue.d.ts +4 -4
- 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 +2 -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/ExperimentSelectorModal.vue.d.ts +3 -3
- 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 +3 -3
- 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/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/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/internal/DatePickerDateInternal.vue.d.ts +22 -0
- 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} +3 -3
- 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 +3 -3
- package/dist/components/{MultiSelect.vue.d.ts → internal/SelectMultipleInternal.vue.d.ts} +11 -8
- 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} +20 -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 +6 -59
- package/dist/composables/platformContextHelpers.d.ts +0 -11
- package/dist/composables/pluginEndpointBuilder.d.ts +2 -2
- package/dist/composables/pluginWorkspaceModel.d.ts +14 -97
- package/dist/composables/useApi.d.ts +1 -3
- package/dist/composables/useAppExperiment.d.ts +1 -1
- package/dist/composables/{useAnalysisArtifacts.d.ts → useArtifacts.d.ts} +6 -6
- package/dist/composables/useExperiment.d.ts +30 -0
- 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 +63 -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-CP5-_nAj.js +95 -0
- package/dist/controlSchemaModel-CP5-_nAj.js.map +1 -0
- package/dist/data-C2PwI_dn.js +3811 -0
- package/dist/data-C2PwI_dn.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-BZmU4czV.js +60 -0
- package/dist/experimentStatus-BZmU4czV.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-DAID6c2-.js +668 -0
- package/dist/install-DAID6c2-.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-DLwRl_Ql.js +7513 -0
- package/dist/lab-DLwRl_Ql.js.map +1 -0
- package/dist/lab.d.ts +42 -0
- package/dist/lab.js +4 -0
- package/dist/permissions.d.ts +0 -4
- package/dist/permissions.js +1 -20
- package/dist/permissions.js.map +1 -1
- package/dist/records-BzTcxekG.js +3070 -0
- package/dist/records-BzTcxekG.js.map +1 -0
- package/dist/runtime-D6gVat6r.js +1495 -0
- package/dist/runtime-D6gVat6r.js.map +1 -0
- package/dist/runtime.d.ts +25 -0
- package/dist/runtime.js +8 -0
- package/dist/shell-5ju97nOS.js +197 -0
- package/dist/shell-5ju97nOS.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 +12030 -14845
- 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 +0 -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 +52 -0
- package/dist/types/generated-ui.d.ts +2 -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/useExpansionSet-CvoNMZJi.js +68 -0
- package/dist/useExpansionSet-CvoNMZJi.js.map +1 -0
- package/dist/useExperimentSamples-CxcnxZ8h.js +366 -0
- package/dist/useExperimentSamples-CxcnxZ8h.js.map +1 -0
- package/dist/useListReorder-CcbEYxX-.js +5462 -0
- package/dist/useListReorder-CcbEYxX-.js.map +1 -0
- package/dist/useRackEditor-BD5NIo5s.js +5916 -0
- package/dist/useRackEditor-BD5NIo5s.js.map +1 -0
- package/dist/useRealtime-PalKue84.js +696 -0
- package/dist/useRealtime-PalKue84.js.map +1 -0
- package/dist/useRequest-D5JDfsgZ.js +76 -0
- package/dist/useRequest-D5JDfsgZ.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} +0 -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 +181 -176
- package/src/__tests__/components/ArtifactSaveDialog.test.ts +5 -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/{MultiSelect.test.ts → BaseSelect.multiple.test.ts} +16 -7
- package/src/__tests__/components/{SearchableSelect.test.ts → BaseSelect.searchable.test.ts} +19 -9
- package/src/__tests__/components/BaseSelect.test.ts +10 -0
- package/src/__tests__/components/BaseTabs.test.ts +13 -13
- 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} +9 -7
- package/src/__tests__/components/{TimePicker.test.ts → DatePicker.time.test.ts} +18 -17
- package/src/__tests__/components/DoseCalculator.test.ts +12 -7
- package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +6 -6
- package/src/__tests__/components/ExperimentSelectorModal.test.ts +15 -15
- 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 +38 -24
- package/src/__tests__/components/GeneratedResultRenderer.test.ts +6 -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 +176 -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 -2
- package/src/__tests__/components/RetiredStyles.test.ts +0 -18
- package/src/__tests__/components/SampleSelector.test.ts +17 -17
- package/src/__tests__/components/SecretInput.test.ts +14 -19
- package/src/__tests__/components/SettingsModal.test.ts +76 -84
- package/src/__tests__/components/StaleFormBanner.test.ts +48 -0
- package/src/__tests__/components/ThemeToggle.test.ts +1 -1
- package/src/__tests__/components/WellPlate.decoration.test.ts +10 -8
- 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 +19 -2
- 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/useControlSchema.test.ts +41 -99
- package/src/__tests__/composables/useExperiment.test.ts +63 -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 +1 -1
- package/src/__tests__/styles/darkModeRules.test.ts +0 -6
- 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 +16 -1
- package/src/__tests__/{composables/useTimeUtils.test.ts → utils/time.test.ts} +2 -9
- package/src/components/ActionMenu.vue +7 -13
- package/src/components/AlertBox.story.vue +25 -25
- package/src/components/AlertBox.vue +8 -8
- package/src/components/AppLayout.story.vue +33 -44
- package/src/components/AppLayout.vue +1 -1
- package/src/components/AppSidebar.story.vue +40 -73
- package/src/components/AppSidebar.vue +66 -147
- package/src/components/AppToastContainer.story.vue +1 -1
- package/src/components/AppTopBar.story.vue +51 -100
- package/src/components/AppTopBar.vue +74 -198
- package/src/components/ArtifactSaveDialog.story.vue +9 -9
- package/src/components/ArtifactSaveDialog.vue +23 -26
- package/src/components/ArtifactSelectorModal.story.vue +4 -4
- package/src/components/ArtifactSelectorModal.vue +10 -10
- package/src/components/AuditTrail.story.vue +4 -4
- package/src/components/AuditTrail.vue +3 -3
- package/src/components/Avatar.story.vue +2 -3
- package/src/components/Avatar.vue +1 -2
- 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} +20 -14
- 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 +117 -22
- package/src/components/BaseTabs.story.vue +20 -20
- package/src/components/BaseTabs.vue +17 -9
- package/src/components/BatchProgressList.vue +3 -3
- package/src/components/ChartContainer.story.vue +8 -13
- package/src/components/ChartContainer.vue +3 -3
- 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 +21 -21
- 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 +5 -4
- package/src/components/ExperimentPopover.story.vue +1 -1
- package/src/components/ExperimentPopover.vue +4 -4
- package/src/components/ExperimentSelectorModal.story.vue +5 -5
- package/src/components/ExperimentSelectorModal.vue +11 -13
- 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 +1 -2
- 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 +23 -22
- package/src/components/GeneratedResultRenderer.vue +16 -17
- 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 +4 -19
- package/src/components/LoadingSpinner.story.vue +11 -11
- package/src/components/LoadingSpinner.vue +6 -4
- 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 +80 -18
- 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 +9 -6
- 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 +64 -62
- 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/SampleSelector.colors.ts +1 -1
- package/src/components/SampleSelector.vue +6 -6
- 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/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/SettingsModal.story.vue +13 -14
- package/src/components/SettingsModal.vue +29 -47
- package/src/components/SmartGroup.types.ts +4 -6
- package/src/components/SmartGroupFieldRecipe.vue +7 -5
- package/src/components/StaleFormBanner.story.vue +90 -0
- package/src/components/StaleFormBanner.vue +83 -0
- 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 +61 -50
- package/src/components/WellPlate.vue +61 -87
- package/src/components/index.ts +3 -105
- 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 +243 -0
- package/src/components/{DateTimePicker.vue → internal/DatePickerDateTimeInternal.vue} +9 -9
- package/src/components/{TimePicker.vue → internal/DatePickerTimeInternal.vue} +7 -7
- 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 +4 -4
- package/src/components/{MultiSelect.vue → internal/SelectMultipleInternal.vue} +21 -15
- package/src/components/{SearchableSelect.vue → internal/SelectSearchableInternal.vue} +24 -8
- 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} +52 -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 +16 -480
- package/src/composables/platformContextHelpers.ts +0 -57
- package/src/composables/pluginEndpointBuilder.ts +8 -10
- package/src/composables/pluginWorkspaceModel.ts +14 -105
- package/src/composables/useApi.ts +18 -30
- package/src/composables/useAppExperiment.ts +6 -5
- package/src/composables/{useAnalysisArtifacts.ts → useArtifacts.ts} +18 -19
- 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 +5 -5
- 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/alert-box.css +18 -0
- package/src/styles/components/app-top-bar.css +7 -48
- package/src/styles/components/button.css +12 -0
- package/src/styles/components/checkbox.css +1 -1
- package/src/styles/components/collapsible-card.css +1 -1
- package/src/styles/components/confirm-dialog.css +18 -2
- package/src/styles/components/empty-state.css +4 -2
- package/src/styles/components/file-picker.css +1 -1
- package/src/styles/components/icon-button.css +1 -1
- package/src/styles/components/loading-spinner.css +9 -12
- package/src/styles/components/multi-select.css +6 -1
- package/src/styles/components/pill.css +40 -35
- package/src/styles/components/plugin-icon.css +9 -0
- package/src/styles/components/presence-avatars.css +194 -0
- package/src/styles/components/progress-bar.css +2 -0
- package/src/styles/components/searchable-select.css +3 -0
- package/src/styles/components/smart-group.css +1 -6
- package/src/styles/components/textarea.css +1 -1
- package/src/styles/components/toggle.css +2 -2
- package/src/styles/components/version-conflict.css +122 -0
- package/src/styles/components/well-plate.css +0 -7
- package/src/styles/index.css +2 -11
- package/src/styles/variables.css +1 -527
- 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 +2 -33
- package/src/types/components.ts +148 -114
- package/src/types/form-builder.ts +4 -0
- package/src/types/generated/platformContext.ts +59 -0
- package/src/types/generated-ui.ts +2 -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} +0 -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/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/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
package/dist/index.js
CHANGED
|
@@ -1,286 +1,74 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { t as
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
1
|
+
import { i as BaseButton_default, t as BaseModal_default } from "./BaseModal-DfRIuVoj.js";
|
|
2
|
+
import { c as colorPalettes, d as tryUseSettingsStore, f as useSettingsStore, l as paletteCssVariables, m as mintApiErrorFromResponse, p as MintApiError, s as PALETTE_CSS_VARIABLES, t as useExperimentStore, u as tableDensityToSize } from "./experiment-43OJtH7R.js";
|
|
3
|
+
import { C as formatExperimentDate, F as useSelectionLimit, L as BaseInput_default, M as Tooltip_default, N as BaseSelect_default, O as FormField_default, P as useListSelection, T as FileUploader_default, _ as APP_EXPERIMENT_KEY, b as SORT_OPTIONS, c as isTerminalJobStatus, d as normalizeJobState, f as resolveJobCapabilities, i as getInjectedPlatformContext, j as BaseCheckbox_default, k as EmptyState_default, l as jobStatusLabel, o as resolveCurrentPluginId, r as Skeleton_default, s as isActiveJobStatus, u as normalizeJobPercent, v as useAppExperiment, w as resolveExperimentCode, x as datePresetToISO, y as DATE_PRESET_OPTIONS } from "./records-BzTcxekG.js";
|
|
4
|
+
import { B as defineDataFrame, C as useSequenceUtils, G as useSortedItems, H as definePluginWorkspaceView, K as BaseSlider_default, N as NumberInput_default, P as DatePicker_default, W as compareSortValues, _ as getFieldRegistryEntry, b as useConcentrationUnits, o as usePlatform, q as BaseRadioGroup_default, v as getTypeDefault } from "./useListReorder-CcbEYxX-.js";
|
|
5
|
+
import { D as BaseTabs_default, E as BasePill_default, a as useReagentSeries, b as ProgressBar_default, h as useProtocolTemplates, i as generateDilutionSeries, n as DEFAULT_PRESETS, r as DEFAULT_UNITS, v as useSampleGroups, y as SectionCard_default } from "./lab-DLwRl_Ql.js";
|
|
6
|
+
import { t as SegmentedControl_default } from "./SegmentedControl-DERBN-Xd.js";
|
|
7
|
+
import { a as AppContainer_default, i as Divider_default, n as FormBuilder_default, o as Calendar_default, r as Breadcrumb_default, t as MINTSdk } from "./install-DAID6c2-.js";
|
|
8
|
+
import { i as LoadingSpinner_default, n as AlertBox_default, t as ActionMenu_default } from "./ActionMenu-CScINahU.js";
|
|
9
|
+
import { C as hexToHsl, D as DataFrame_default, E as sampleTypeMarker, S as deriveShade, _ as mintPlotlyTemplate, r as useScheduleDrag, s as downloadBlob, t as useRackEditor, w as hslToHex } from "./useRackEditor-BD5NIo5s.js";
|
|
10
|
+
import { c as generatedJobFormSchema, d as PluginWorkspaceView_default, f as useControlWorkspace, l as normalizeGeneratedJobInput, m as useToast, p as AppToastContainer_default, s as generatedJobDefaults, u as Avatar_default } from "./runtime-D6gVat6r.js";
|
|
11
|
+
import { A as CollapsibleCard_default, M as useTheme, _ as usePluginWorkspace, b as getControlDefaults, d as useForm, j as ThemeToggle_default, k as getDefaultControlView, l as useFormBuilder, p as PluginIcon_default, u as evaluateCondition, v as defineControlComponentBindings, x as useControlSchema, y as defineControls } from "./AppSidebar-BmiiPfz9.js";
|
|
12
|
+
import { r as useAuthStore } from "./auth-SliLnFre.js";
|
|
13
|
+
import { t as defineControlModel } from "./controlSchemaModel-CP5-_nAj.js";
|
|
14
|
+
import { t as ConfirmDialog_default } from "./ConfirmDialog-CJ7hqYUP.js";
|
|
15
|
+
import { t as SettingsModal_default } from "./SettingsModal-CSLE31yg.js";
|
|
16
|
+
import { t as useRequest } from "./useRequest-D5JDfsgZ.js";
|
|
17
|
+
import { r as useExperimentSelector } from "./ExperimentSelectorModal-D-9z7cNx.js";
|
|
18
|
+
import { i as useFileBrowser, n as buildAnalysisArtifactTargetQuery, r as parseAnalysisArtifactTarget } from "./data-C2PwI_dn.js";
|
|
19
|
+
import { a as useFileImport, c as extractSampleNamesFromDesignData, i as readFileAsText, l as extractSampleOptionsFromDesignData, n as detectDelimiter, o as validateImportFile, t as useExperimentSamples, u as unwrapExperimentDesignData } from "./useExperimentSamples-CxcnxZ8h.js";
|
|
20
|
+
import { t as useExpansionSet } from "./useExpansionSet-CvoNMZJi.js";
|
|
21
|
+
import { a as useManualLayoutResize, i as resizedVerticalSplitPercent, n as resizedLeadingPanelWidth, r as resizedTrailingPanelWidth } from "./shell-5ju97nOS.js";
|
|
12
22
|
import "./stores/index.js";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
label: "Position"
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
key: "instrument_method",
|
|
34
|
-
label: "Method"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
key: "injection_volume",
|
|
38
|
-
label: "Inj Vol",
|
|
39
|
-
align: "right"
|
|
40
|
-
}
|
|
41
|
-
];
|
|
42
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
43
|
-
function extractLcmsCommonPrefix(fileNames) {
|
|
44
|
-
if (fileNames.length === 0) return "";
|
|
45
|
-
const prefixes = fileNames.map((fileName) => fileName.replace(/_\d{3}$/, "")).map((fileName) => {
|
|
46
|
-
const match = fileName.match(/^(.+?)_(POS|NEG)_/i);
|
|
47
|
-
return match ? match[1] : fileName.replace(/_[^_]+$/, "");
|
|
48
|
-
});
|
|
49
|
-
let common = prefixes[0] ?? "";
|
|
50
|
-
for (const prefix of prefixes.slice(1)) while (common && !prefix.startsWith(common)) {
|
|
51
|
-
const index = common.lastIndexOf("_");
|
|
52
|
-
common = index > 0 ? common.substring(0, index) : common.substring(0, common.length - 1);
|
|
53
|
-
}
|
|
54
|
-
return common;
|
|
55
|
-
}
|
|
56
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
57
|
-
function extractLcmsSampleName(fileName, prefix = "") {
|
|
58
|
-
let name = fileName.replace(/_\d{3}$/, "");
|
|
59
|
-
if (prefix && name.startsWith(prefix)) name = name.substring(prefix.length).replace(/^_+/, "");
|
|
60
|
-
name = name.replace(/^(POS|NEG)_/i, "");
|
|
61
|
-
return name || fileName;
|
|
62
|
-
}
|
|
63
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
64
|
-
function lcmsWellIdFromPosition(position) {
|
|
65
|
-
return position.includes(":") ? position.split(":").pop() ?? position : position;
|
|
66
|
-
}
|
|
67
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
68
|
-
function inferLcmsPlateTypeFromWellIds(wellIds) {
|
|
69
|
-
let maxCol = 0;
|
|
70
|
-
let maxRow = 0;
|
|
71
|
-
for (const wellId of wellIds) {
|
|
72
|
-
const match = wellId.match(/^([A-Z])(\d+)$/i);
|
|
73
|
-
if (!match) continue;
|
|
74
|
-
maxRow = Math.max(maxRow, match[1].toUpperCase().charCodeAt(0) - 64);
|
|
75
|
-
maxCol = Math.max(maxCol, Number(match[2]));
|
|
76
|
-
}
|
|
77
|
-
if (maxCol === 0 && maxRow === 0) return null;
|
|
78
|
-
return maxCol <= 9 && maxRow <= 6 ? "54vial" : "96well";
|
|
79
|
-
}
|
|
80
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
81
|
-
function reconstructLcmsPlateCellsFromSequenceItems(items) {
|
|
82
|
-
const unknownItems = items.filter((item) => item.sample_type === "Unknown");
|
|
83
|
-
if (unknownItems.length === 0) return null;
|
|
84
|
-
const prefix = extractLcmsCommonPrefix(unknownItems.map((item) => item.file_name));
|
|
85
|
-
const seen = /* @__PURE__ */ new Set();
|
|
86
|
-
const cells = [];
|
|
87
|
-
for (const item of unknownItems) {
|
|
88
|
-
const wellId = lcmsWellIdFromPosition(item.position);
|
|
89
|
-
if (seen.has(wellId)) continue;
|
|
90
|
-
seen.add(wellId);
|
|
91
|
-
const match = wellId.match(/^([A-Z])(\d+)$/i);
|
|
92
|
-
if (!match) continue;
|
|
93
|
-
cells.push({
|
|
94
|
-
row: match[1].toUpperCase(),
|
|
95
|
-
column: Number(match[2]),
|
|
96
|
-
sample_name: extractLcmsSampleName(item.file_name, prefix)
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
if (cells.length === 0) return null;
|
|
100
|
-
const plateType = inferLcmsPlateTypeFromWellIds(cells.map((cell) => `${cell.row}${cell.column}`));
|
|
101
|
-
if (!plateType) return null;
|
|
23
|
+
import { computed } from "vue";
|
|
24
|
+
//#region src/composables/useExperiment.ts
|
|
25
|
+
/**
|
|
26
|
+
* Read the experiment the plugin page works on.
|
|
27
|
+
*
|
|
28
|
+
* The platform selects the experiment and keeps it in step with the URL; this
|
|
29
|
+
* composable only reads it. Watch `id` to respond to a change. In standalone
|
|
30
|
+
* mode no experiment is selected and `id` stays `null`.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const experiment = useExperiment()
|
|
35
|
+
* watch(experiment.id, (id) => { if (id !== null) void load(id) }, { immediate: true })
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
function useExperiment() {
|
|
39
|
+
const store = useExperimentStore();
|
|
102
40
|
return {
|
|
103
|
-
|
|
104
|
-
|
|
41
|
+
id: computed(() => store.currentId),
|
|
42
|
+
current: computed(() => store.current),
|
|
43
|
+
status: computed(() => {
|
|
44
|
+
if (store.currentId === null) return "idle";
|
|
45
|
+
if (store.isResolving) return "loading";
|
|
46
|
+
return store.error ? "error" : "ready";
|
|
47
|
+
}),
|
|
48
|
+
error: computed(() => store.error),
|
|
49
|
+
refresh: store.refresh
|
|
105
50
|
};
|
|
106
51
|
}
|
|
107
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
108
|
-
function basenameFromWindowsPath(path) {
|
|
109
|
-
if (!path) return "";
|
|
110
|
-
return path.split(/[\\/]/).pop() ?? path;
|
|
111
|
-
}
|
|
112
52
|
//#endregion
|
|
113
|
-
//#region src/
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
"54vial": {
|
|
131
|
-
blank: {
|
|
132
|
-
row: "F",
|
|
133
|
-
column: 9
|
|
134
|
-
},
|
|
135
|
-
qc: {
|
|
136
|
-
row: "F",
|
|
137
|
-
column: 8
|
|
138
|
-
},
|
|
139
|
-
iqc: {
|
|
140
|
-
row: "F",
|
|
141
|
-
column: 7
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
var SLOT_ORDER = [
|
|
146
|
-
"R",
|
|
147
|
-
"G",
|
|
148
|
-
"B",
|
|
149
|
-
"Y"
|
|
150
|
-
];
|
|
151
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
152
|
-
function lcmsPlateTypeToRackFormat(plateType) {
|
|
153
|
-
return plateType === "96well" ? 96 : 54;
|
|
154
|
-
}
|
|
155
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
156
|
-
function rackFormatToLcmsPlateType(format) {
|
|
157
|
-
if (format === 96) return "96well";
|
|
158
|
-
if (format === 54) return "54vial";
|
|
159
|
-
throw new Error(`LCMS plate cells support only 54-vial racks and 96-well plates; received format ${format}.`);
|
|
160
|
-
}
|
|
161
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
162
|
-
function lcmsWellId(row, column) {
|
|
163
|
-
return `${row.toUpperCase()}${column}`;
|
|
164
|
-
}
|
|
165
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
166
|
-
function parseLcmsWellId(wellId) {
|
|
167
|
-
const match = /^([A-Za-z]+)(\d+)$/.exec(wellId.trim());
|
|
168
|
-
if (!match) throw new Error(`Invalid well id "${wellId}". Expected a row letter followed by a column number, e.g. A1.`);
|
|
169
|
-
return {
|
|
170
|
-
row: match[1].toUpperCase(),
|
|
171
|
-
column: Number(match[2])
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
175
|
-
function lcmsPlateCellsToRack(cells, options = {}) {
|
|
176
|
-
const format = options.format ?? (options.plateType ? lcmsPlateTypeToRackFormat(options.plateType) : inferRackFormat(cells));
|
|
177
|
-
const slot = options.slot ?? cells.find((cell) => cell.slot)?.slot ?? "R";
|
|
178
|
-
const injectionVolume = options.injectionVolume ?? inferInjectionVolume(cells) ?? 5;
|
|
179
|
-
return {
|
|
180
|
-
id: options.rackId ?? `rack-${slot}`,
|
|
181
|
-
name: options.rackName ?? `Rack ${slot}`,
|
|
182
|
-
format,
|
|
183
|
-
slot,
|
|
184
|
-
injectionVolume,
|
|
185
|
-
wells: Object.fromEntries(cells.filter((cell) => cell.sample_name.trim()).map((cell) => {
|
|
186
|
-
const wellId = lcmsWellId(cell.row, cell.column);
|
|
187
|
-
return [wellId, {
|
|
188
|
-
id: wellId,
|
|
189
|
-
row: rowIndex(cell.row),
|
|
190
|
-
col: cell.column - 1,
|
|
191
|
-
state: "filled",
|
|
192
|
-
sampleType: cell.sample_type ?? "sample",
|
|
193
|
-
metadata: {
|
|
194
|
-
label: cell.sample_name.trim(),
|
|
195
|
-
injectionVolume: cell.injection_volume ?? injectionVolume,
|
|
196
|
-
injectionCount: cell.injection_count ?? 1,
|
|
197
|
-
customMethod: cell.custom_method ?? null
|
|
198
|
-
}
|
|
199
|
-
}];
|
|
200
|
-
}))
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
204
|
-
function lcmsPlateCellsToRacks(cells, options = {}) {
|
|
205
|
-
const bySlot = /* @__PURE__ */ new Map();
|
|
206
|
-
const defaultSlot = options.defaultSlot ?? "R";
|
|
207
|
-
for (const cell of cells) {
|
|
208
|
-
const slot = cell.slot ?? defaultSlot;
|
|
209
|
-
const slotCells = bySlot.get(slot) ?? [];
|
|
210
|
-
slotCells.push(cell);
|
|
211
|
-
bySlot.set(slot, slotCells);
|
|
212
|
-
}
|
|
213
|
-
return Array.from(bySlot.entries()).sort(([a], [b]) => SLOT_ORDER.indexOf(a) - SLOT_ORDER.indexOf(b)).map(([slot, slotCells], index) => lcmsPlateCellsToRack(slotCells, {
|
|
214
|
-
...options,
|
|
215
|
-
slot,
|
|
216
|
-
rackId: options.rackId?.(slot, index) ?? `rack-${slot}`,
|
|
217
|
-
rackName: options.rackName?.(slot, index) ?? `Rack ${slot}`
|
|
218
|
-
}));
|
|
219
|
-
}
|
|
220
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
221
|
-
function rackToLcmsPlateCells(rack) {
|
|
222
|
-
return Object.entries(rack.wells).map(([wellId, well]) => wellToLcmsPlateCell(rack, wellId, well)).filter((cell) => cell !== null).sort(comparePlateCells);
|
|
223
|
-
}
|
|
224
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
225
|
-
function racksToLcmsPlateCells(racks) {
|
|
226
|
-
return racks.flatMap(rackToLcmsPlateCells);
|
|
227
|
-
}
|
|
228
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
229
|
-
function getLcmsDefaultControlWellId(plateType, sampleType) {
|
|
230
|
-
const position = LCMS_DEFAULT_CONTROL_POSITIONS[plateType][sampleType];
|
|
231
|
-
return lcmsWellId(position.row, position.column);
|
|
232
|
-
}
|
|
233
|
-
/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
|
|
234
|
-
function createLcmsControlWellEditData(sampleType, options = {}) {
|
|
235
|
-
const plateType = options.plateType ?? "54vial";
|
|
236
|
-
return {
|
|
237
|
-
wellId: options.wellId ?? getLcmsDefaultControlWellId(plateType, sampleType),
|
|
238
|
-
label: sampleType === "blank" ? "Blank" : sampleType.toUpperCase(),
|
|
239
|
-
sampleType,
|
|
240
|
-
injectionVolume: options.injectionVolume ?? 5,
|
|
241
|
-
injectionCount: 1,
|
|
242
|
-
customMethod: ""
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
function wellToLcmsPlateCell(rack, wellId, well) {
|
|
246
|
-
const metadata = well.metadata ?? {};
|
|
247
|
-
const label = getString(metadata.label);
|
|
248
|
-
if (!label) return null;
|
|
249
|
-
const parsed = parseLcmsWellId(well.id ?? wellId);
|
|
250
|
-
return {
|
|
251
|
-
row: parsed.row,
|
|
252
|
-
column: parsed.column,
|
|
253
|
-
sample_name: label,
|
|
254
|
-
sample_type: well.sampleType ?? null,
|
|
255
|
-
injection_volume: getNumber(metadata.injectionVolume) ?? rack.injectionVolume,
|
|
256
|
-
injection_count: getNumber(metadata.injectionCount) ?? 1,
|
|
257
|
-
custom_method: getNullableString(metadata.customMethod),
|
|
258
|
-
slot: rack.slot
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
|
-
function inferRackFormat(cells) {
|
|
262
|
-
return cells.some((cell) => rowIndex(cell.row) > 5 || cell.column > 9) ? 96 : 54;
|
|
263
|
-
}
|
|
264
|
-
function inferInjectionVolume(cells) {
|
|
265
|
-
return cells.find((cell) => typeof cell.injection_volume === "number")?.injection_volume ?? void 0;
|
|
266
|
-
}
|
|
267
|
-
function rowIndex(row) {
|
|
268
|
-
return row.toUpperCase().charCodeAt(0) - 65;
|
|
269
|
-
}
|
|
270
|
-
function getString(value) {
|
|
271
|
-
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
272
|
-
}
|
|
273
|
-
function getNullableString(value) {
|
|
274
|
-
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
275
|
-
}
|
|
276
|
-
function getNumber(value) {
|
|
277
|
-
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
278
|
-
}
|
|
279
|
-
function comparePlateCells(a, b) {
|
|
280
|
-
const rowDiff = rowIndex(a.row) - rowIndex(b.row);
|
|
281
|
-
return rowDiff === 0 ? a.column - b.column : rowDiff;
|
|
53
|
+
//#region src/composables/pluginFrontendBase.ts
|
|
54
|
+
function normalizePluginRoutePrefix(prefix) {
|
|
55
|
+
const candidate = prefix?.trim();
|
|
56
|
+
if (!candidate) return void 0;
|
|
57
|
+
const path = candidate.split("/").filter(Boolean).join("/");
|
|
58
|
+
return path ? `/${path}/` : "/";
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolve the Vue Router base for a plugin frontend.
|
|
62
|
+
*
|
|
63
|
+
* Integrated plugins use the platform-injected mount prefix. Standalone and
|
|
64
|
+
* development builds retain the caller's Vite base unchanged.
|
|
65
|
+
*/
|
|
66
|
+
function resolvePluginFrontendBase(fallbackBase = "/") {
|
|
67
|
+
const context = getInjectedPlatformContext();
|
|
68
|
+
if (!context?.isIntegrated) return fallbackBase;
|
|
69
|
+
return normalizePluginRoutePrefix(context.plugin?.route_prefix) ?? fallbackBase;
|
|
282
70
|
}
|
|
283
71
|
//#endregion
|
|
284
|
-
export { ADMIN_PANEL_PERMISSIONS, ADMIN_ROLE, ANALYSIS_FILE_ARTIFACT_SCHEMA, APP_EXPERIMENT_KEY, ATOMIC_WEIGHTS, ActionMenu_default as ActionMenu, AdductText_default as AdductText, AlertBox_default as AlertBox, AppAvatarMenu_default as AppAvatarMenu, AppContainer_default as AppContainer, AppLayout_default as AppLayout, AppSidebar_default as AppSidebar, AppToastContainer_default as AppToastContainer, AppTopBar_default as AppTopBar, ArtifactSaveDialog_default as ArtifactSaveDialog, ArtifactSelectorModal_default as ArtifactSelectorModal, AuditTrail_default as AuditTrail, AuthenticationRequiredError, AutoGroupModal_default as AutoGroupModal, Avatar_default as Avatar, BaseButton_default as BaseButton, BaseCheckbox_default as BaseCheckbox, BaseInput_default as BaseInput, BaseModal_default as BaseModal, BasePill_default as BasePill, BaseRadioGroup_default as BaseRadioGroup, BaseSelect_default as BaseSelect, BaseSlider_default as BaseSlider, BaseTabs_default as BaseTabs, BaseTextarea_default as BaseTextarea, BaseToggle_default as BaseToggle, BatchProgressList_default as BatchProgressList, BioTemplateExperimentWorkspaceView_default as BioTemplateExperimentWorkspaceView, BioTemplatePackWorkspaceView_default as BioTemplatePackWorkspaceView, BioTemplatePresetWorkspaceView_default as BioTemplatePresetWorkspaceView, BioTemplateRenderer_default as BioTemplateRenderer, Breadcrumb_default as Breadcrumb, Calendar_default as Calendar, ChartContainer_default as ChartContainer, ChemicalFormula_default as ChemicalFormula, CollapsibleCard_default as CollapsibleCard, ComponentBindingRenderer_default as ComponentBindingRenderer, ConcentrationInput_default as ConcentrationInput, ConfirmDialog_default as ConfirmDialog, ControlWorkspaceView_default as ControlWorkspaceView, DATE_PRESET_OPTIONS, DEFAULT_COLORS, DEFAULT_LCMS_SEQUENCE_COLUMNS, DEFAULT_MOBILE_VIEWPORT_QUERY, DEFAULT_PRESETS, DEFAULT_UNITS, DataFrame_default as DataFrame, DatePicker_default as DatePicker, DateTimePicker_default as DateTimePicker, Divider_default as Divider, DoseCalculator_default as DoseCalculator, DoseDesignWorkspaceView_default as DoseDesignWorkspaceView, EXPERIMENT_STATUS_LABELS, EXPERIMENT_STATUS_OPTIONS, EXPERIMENT_STATUS_VARIANT_MAP, EmptyState_default as EmptyState, ExperimentCodeBadge_default as ExperimentCodeBadge, ExperimentDataViewer_default as ExperimentDataViewer, ExperimentPopover_default as ExperimentPopover, ExperimentSelectorModal_default as ExperimentSelectorModal, ExperimentTimeline_default as ExperimentTimeline, FilePicker_default as FilePicker, FileUploader_default as FileUploader, FitPanel_default as FitPanel, FormActions_default as FormActions, FormBuilder_default as FormBuilder, FormField_default as FormField, FormulaInput_default as FormulaInput, GeneratedPathInput_default as GeneratedPathInput, GeneratedPlotlyResult_default as GeneratedPlotlyResult, GeneratedPluginView_default as GeneratedPluginView, GeneratedResultRenderer_default as GeneratedResultRenderer, GroupAssigner_default as GroupAssigner, IconButton_default as IconButton, InstrumentStateBadge_default as InstrumentStateBadge, JobsStatusTray_default as JobsStatusTray, LCMS_DEFAULT_CONTROL_POSITIONS, LayoutResizeHandle_default as LayoutResizeHandle, LoadingSpinner_default as LoadingSpinner, MINTSdk, MINTSdk as default, MintApiError, MobileSupportGate_default as MobileSupportGate, MoleculeInput_default as MoleculeInput, MultiSelect_default as MultiSelect, NumberInput_default as NumberInput, PALETTE_CSS_VARIABLES, PLUGIN_SECRET_FORMAT_KEY, PLUGIN_SECRET_FORMAT_REF, PLUGIN_SECRET_REF_KEY, PlateEditor_default as PlateEditor, PlotlyChart_default as PlotlyChart, PluginIcon_default as PluginIcon, PluginWorkspaceView_default as PluginWorkspaceView, ProgressBar_default as ProgressBar, ProtocolStepEditor_default as ProtocolStepEditor, REORDER_ANNOUNCER_STYLE, ReagentEditor_default as ReagentEditor, ReagentList_default as ReagentList, ResourceCard_default as ResourceCard, RuntimeUpdateNotice_default as RuntimeUpdateNotice, SORT_OPTIONS, SampleHierarchyTree_default as SampleHierarchyTree, SampleLegend_default as SampleLegend, SampleSelector_default as SampleSelector, ScheduleCalendar_default as ScheduleCalendar, ScientificNumber_default as ScientificNumber, SearchableSelect_default as SearchableSelect, SecretInput_default as SecretInput, SectionCard_default as SectionCard, SegmentedControl_default as SegmentedControl, SequenceInput_default as SequenceInput, SequenceProgressBar_default as SequenceProgressBar, SettingsModal_default as SettingsModal, Skeleton_default as Skeleton, SmartGroupFieldRecipe_default as SmartGroupFieldRecipe, SmartGroupManual_default as SmartGroupManual, SmartGroupModal_default as SmartGroupModal, StatusIndicator_default as StatusIndicator, StepWizard_default as StepWizard, TEMPLATE_COLLECTION_KEY, TagsInput_default as TagsInput, ThemeToggle_default as ThemeToggle, TimePicker_default as TimePicker, TimeRangeInput_default as TimeRangeInput, Tooltip_default as Tooltip, UnitInput_default as UnitInput, WellPlate_default as WellPlate, addMinutes, assertTemplateEnvelope, basenameFromWindowsPath, bioTemplateCatalog, bioTemplateControlsToFormSchema, bioTemplateControlsToSectionFormSchemas, bioTemplateControlsToSidebarPanels, bioTemplatePacks, bioTemplatePresetControlValuesToOptions, bioTemplatePresets, buildAnalysisArtifactTargetQuery, buildPluginEndpointUrl, canAccessAdmin, canAccessByPolicy, canAccessPlugin, candidateMatchesSearch, clearPluginSecret, colorPalettes, combinePluginJobSources, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, createAssayMatrixTemplate, createBioTemplateControlToolkit, createBioTemplatePackCollection, createBioTemplatePresetCollection, createBioTemplatePresetCollectionFromControls, createCalibrationCurveTemplate, createDefaultBioTemplate, createDoseResponseTemplate, createElisaAssayCollection, createFilePickerAdapter, createFlowCytometryAssayCollection, createFlowCytometryPanelTemplate, createGeneratedAnalysisTransport, createInstrumentRunTemplate, createLcmsBatchCollection, createLcmsControlWellEditData, createPlateMapTemplate, createPluginClient, createProtocolStepsTemplate, createQpcrExpressionCollection, createQpcrPlateTemplate, createReagentListTemplate, createSamplePrepTemplate, createSampleSheetTemplate, createTargetedMetabolomicsCollection, createTemplateCollection, createTemplateEnvelope, createTimeCourseTemplate, createWellPlateScreenCollection, createWesternBlotAssayCollection, datePresetToISO, decodePlatformPickerPath, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, deriveShade, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, encodePlatformPickerPath, ensureTemplateEnvelope, ensureTemplateFromCollection, estimateSequenceFinishDate, estimateSequenceRemainingSeconds, evaluateCondition, experimentIdFromRoute, extractLcmsCommonPrefix, extractLcmsSampleName, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, extractTemplateCollection, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatSequenceEta, formatSequenceRemaining, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, generatedJobDefaults, generatedJobFormSchema, getAccessAudience, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlDefaults, getBioTemplateControlSchema, getBioTemplateInfo, getBioTemplatePackInfo, getBioTemplatePresetInfo, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getInjectedFrontendRevision, getLcmsDefaultControlWellId, getPluginPageSelectorItems, getPresenceClientId, getRoleInfo, getTemplateData, getTypeDefault, getUserPermissions, hasAllPermissions, hasAnyPermission, hexToHsl, hslToHex, inferLcmsPlateTypeFromWellIds, isActiveJobStatus, isAdminRole, isAdminUser, isPluginSecretLocked, isPluginSecretRef, isTerminalJobStatus, isTimeInRange, jobStatusLabel, keepPluginSecret, lcmsPlateCellsToRack, lcmsPlateCellsToRacks, lcmsPlateTypeToRackFormat, lcmsWellId, lcmsWellIdFromPosition, listBioTemplateCatalog, listBioTemplateComponentBindings, listBioTemplateControlSchemas, listBioTemplatePacks, listBioTemplatePresetControlSchemas, listBioTemplatePresets, mintApiErrorFromResponse, mintPlotlyTemplate, normalizeGeneratedJobInput, normalizeJobPercent, normalizeJobState, normalizeSearchQuery, paletteCssVariables, parseAnalysisArtifactTarget, parseDelimitedText, parseLcmsWellId, parseTime, pluginFormDataFromPayload, pluginSecretId, pluginSecretLabel, pluginSecretState, rackFormatToLcmsPlateType, rackToLcmsPlateCells, racksFromPlateState, racksToLcmsPlateCells, rangesOverlap, readFileAsText, reconstructLcmsPlateCellsFromSequenceItems, reorderList, requireBioTemplateControlSchema, resizedLeadingPanelWidth, resizedTrailingPanelWidth, resizedVerticalSplitPercent, resolveCurrentPluginId, resolveExperimentCode, resolveJobCapabilities, resolvePluginBaseUrl, resolvePluginFrontendBase, sampleTypeMarker, searchBioTemplateCatalog, searchBioTemplatePacks, searchBioTemplatePresets, sequenceProgressPercent, sequenceSamplesRemaining, setPluginSecret, snapToSlot, tableDensityToSize, toAssayMatrixColumns, toAssayMatrixDataFrame, toAssayMatrixRows, toAssayMatrixSampleOptions, toBioTemplateComponentBindings, toBioTemplateComponentBindingsById, toBioTemplateComponentImports, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, toBioTemplateComponentSnippets, toBioTemplateComponentUsage, toCalibrationCurveColumns, toCalibrationCurveDataFrame, toCalibrationCurveRows, toDoseConditions, toDoseLayoutState, toFlowPanelColumns, toFlowPanelDataFrame, toFlowPanelRows, toInstrumentRunColumns, toInstrumentRunDataFrame, toInstrumentRunRows, toInstrumentRunScheduleEvents, toInstrumentRunSteps, toMinutes, toPlateMapEditorState, toProtocolColumns, toProtocolDataFrame, toProtocolRows, toProtocolSteps, toQpcrColumns, toQpcrDataFrame, toQpcrRows, toQpcrWellPlateWells, toReagentColumns, toReagentDataFrame, toReagentListItems, toReagentRows, toSampleColumns, toSampleDataFrame, toSampleOptions, toSamplePrepColumns, toSamplePrepDataFrame, toSamplePrepRows, toSampleRows, toTemplateDataFrame, toTimeCourseColumns, toTimeCourseDataFrame, toTimeCourseRows, toTimeCourseSteps, toWellMapArray, toWellPlateWells, tryUseSettingsStore, unwrapExperimentDesignData, uploadPluginEndpoint, useAnalysisArtifacts, useApi, useAppExperiment, useAuthStore, useAutoGroup, useBioTemplateComponents, useBioTemplateControls, useBioTemplatePackWorkspace, useBioTemplatePresetWorkspace, useBioTemplateWorkspace, useChemicalFormula, useConcentrationUnits, useControlSchema, useControlWorkspace, useCurrentExperiment, useDebouncedWatch, useDoseCalculator, useEventListener, useExpansionSet, useExperimentData, useExperimentSamples, useExperimentSave, useExperimentSelector, useExperimentStore, useFileBrowser, useFileImport, useFocusTrap, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListReorder, useListSelection, useManualLayoutResize, useMenuKeyboard, useMobileSupportGate, usePlatformContext, usePlatformFilePickerAdapter, usePluginClient, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, usePluginWorkspace, usePresenceHeartbeat, useProtocolTemplates, useRackEditor, useReagentSeries, useReorderAnnouncer, useRequestSyncState, useRovingFocus, useRuntimeAlignment, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSettingsStore, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, usesPluginSecretReferences, validateAssayMatrixData, validateCalibrationCurveData, validateDoseResponseData, validateFlowCytometryPanelData, validateImportFile, validateInstrumentRunData, validatePlateMapData, validateProtocolStepsData, validateQpcrPlateData, validateReagentListData, validateSamplePrepData, validateSampleSheetData, validateTimeCourseData };
|
|
72
|
+
export { APP_EXPERIMENT_KEY, ActionMenu_default as ActionMenu, AlertBox_default as AlertBox, AppContainer_default as AppContainer, AppToastContainer_default as AppToastContainer, Avatar_default as Avatar, BaseButton_default as BaseButton, BaseCheckbox_default as BaseCheckbox, BaseInput_default as BaseInput, BaseModal_default as BaseModal, BasePill_default as BasePill, BaseRadioGroup_default as BaseRadioGroup, BaseSelect_default as BaseSelect, BaseSlider_default as BaseSlider, BaseTabs_default as BaseTabs, Breadcrumb_default as Breadcrumb, Calendar_default as Calendar, CollapsibleCard_default as CollapsibleCard, ConfirmDialog_default as ConfirmDialog, DATE_PRESET_OPTIONS, DEFAULT_PRESETS, DEFAULT_UNITS, DataFrame_default as DataFrame, DatePicker_default as DatePicker, Divider_default as Divider, EmptyState_default as EmptyState, FileUploader_default as FileUploader, FormBuilder_default as FormBuilder, FormField_default as FormField, LoadingSpinner_default as LoadingSpinner, MINTSdk, MINTSdk as default, MintApiError, NumberInput_default as NumberInput, PALETTE_CSS_VARIABLES, PluginIcon_default as PluginIcon, PluginWorkspaceView_default as PluginWorkspaceView, ProgressBar_default as ProgressBar, SORT_OPTIONS, SectionCard_default as SectionCard, SegmentedControl_default as SegmentedControl, SettingsModal_default as SettingsModal, Skeleton_default as Skeleton, ThemeToggle_default as ThemeToggle, Tooltip_default as Tooltip, buildAnalysisArtifactTargetQuery, colorPalettes, compareSortValues, datePresetToISO, defineControlComponentBindings, defineControlModel, defineControls, defineDataFrame, definePluginWorkspaceView, deriveShade, detectDelimiter, downloadBlob, evaluateCondition, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, formatExperimentDate, generateDilutionSeries, generatedJobDefaults, generatedJobFormSchema, getControlDefaults, getDefaultControlView, getFieldRegistryEntry, getTypeDefault, hexToHsl, hslToHex, isActiveJobStatus, isTerminalJobStatus, jobStatusLabel, mintApiErrorFromResponse, mintPlotlyTemplate, normalizeGeneratedJobInput, normalizeJobPercent, normalizeJobState, paletteCssVariables, parseAnalysisArtifactTarget, readFileAsText, resizedLeadingPanelWidth, resizedTrailingPanelWidth, resizedVerticalSplitPercent, resolveCurrentPluginId, resolveExperimentCode, resolveJobCapabilities, resolvePluginFrontendBase, sampleTypeMarker, tableDensityToSize, tryUseSettingsStore, unwrapExperimentDesignData, useAppExperiment, useAuthStore, useConcentrationUnits, useControlSchema, useControlWorkspace, useExpansionSet, useExperiment, useExperimentSamples, useExperimentSelector, useExperimentStore, useFileBrowser, useFileImport, useForm, useFormBuilder, useListSelection, useManualLayoutResize, usePlatform, usePluginWorkspace, useProtocolTemplates, useRackEditor, useReagentSeries, useRequest, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSettingsStore, useSortedItems, useTheme, useToast, validateImportFile };
|
|
285
73
|
|
|
286
74
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/lcms.ts","../src/utils/rack.ts"],"sourcesContent":["import type { LcmsPlateCell, LcmsPlateType } from './utils/rack'\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport type LcmsPolarity = 'POS' | 'NEG' | 'BOTH'\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport type LcmsContainerType = 'VIAL' | 'PLATE'\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport interface LcmsSequenceItem {\n sample_type: string\n file_name: string\n sample_id: string\n path: string\n instrument_method: string\n position: string\n injection_volume: number\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport interface LcmsSequenceTableColumn {\n key: keyof LcmsSequenceItem | 'index' | 'actions'\n label: string\n align?: 'left' | 'right'\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport const DEFAULT_LCMS_SEQUENCE_COLUMNS: LcmsSequenceTableColumn[] = [\n { key: 'index', label: '#' },\n { key: 'sample_type', label: 'Type' },\n { key: 'file_name', label: 'File Name' },\n { key: 'position', label: 'Position' },\n { key: 'instrument_method', label: 'Method' },\n { key: 'injection_volume', label: 'Inj Vol', align: 'right' },\n]\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function extractLcmsCommonPrefix(fileNames: readonly string[]): string {\n if (fileNames.length === 0) return ''\n const stripped = fileNames.map(fileName => fileName.replace(/_\\d{3}$/, ''))\n const prefixes = stripped.map((fileName) => {\n const match = fileName.match(/^(.+?)_(POS|NEG)_/i)\n return match ? match[1] : fileName.replace(/_[^_]+$/, '')\n })\n\n let common = prefixes[0] ?? ''\n for (const prefix of prefixes.slice(1)) {\n while (common && !prefix.startsWith(common)) {\n const index = common.lastIndexOf('_')\n common = index > 0 ? common.substring(0, index) : common.substring(0, common.length - 1)\n }\n }\n return common\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function extractLcmsSampleName(fileName: string, prefix = ''): string {\n let name = fileName.replace(/_\\d{3}$/, '')\n if (prefix && name.startsWith(prefix)) {\n name = name.substring(prefix.length).replace(/^_+/, '')\n }\n name = name.replace(/^(POS|NEG)_/i, '')\n return name || fileName\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function lcmsWellIdFromPosition(position: string): string {\n return position.includes(':') ? position.split(':').pop() ?? position : position\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function inferLcmsPlateTypeFromWellIds(wellIds: readonly string[]): LcmsPlateType | null {\n let maxCol = 0\n let maxRow = 0\n for (const wellId of wellIds) {\n const match = wellId.match(/^([A-Z])(\\d+)$/i)\n if (!match) continue\n maxRow = Math.max(maxRow, match[1].toUpperCase().charCodeAt(0) - 64)\n maxCol = Math.max(maxCol, Number(match[2]))\n }\n if (maxCol === 0 && maxRow === 0) return null\n return maxCol <= 9 && maxRow <= 6 ? '54vial' : '96well'\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function reconstructLcmsPlateCellsFromSequenceItems(\n items: readonly LcmsSequenceItem[],\n): { cells: LcmsPlateCell[]; plateType: LcmsPlateType } | null {\n const unknownItems = items.filter(item => item.sample_type === 'Unknown')\n if (unknownItems.length === 0) return null\n\n const prefix = extractLcmsCommonPrefix(unknownItems.map(item => item.file_name))\n const seen = new Set<string>()\n const cells: LcmsPlateCell[] = []\n\n for (const item of unknownItems) {\n const wellId = lcmsWellIdFromPosition(item.position)\n if (seen.has(wellId)) continue\n seen.add(wellId)\n\n const match = wellId.match(/^([A-Z])(\\d+)$/i)\n if (!match) continue\n cells.push({\n row: match[1].toUpperCase(),\n column: Number(match[2]),\n sample_name: extractLcmsSampleName(item.file_name, prefix),\n })\n }\n\n if (cells.length === 0) return null\n const plateType = inferLcmsPlateTypeFromWellIds(cells.map(cell => `${cell.row}${cell.column}`))\n if (!plateType) return null\n return { cells, plateType }\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function basenameFromWindowsPath(path: string | null | undefined): string {\n if (!path) return ''\n return path.split(/[\\\\/]/).pop() ?? path\n}\n","import type { Rack, SlotPosition, Well, WellEditData, WellPlateFormat } from '../types'\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport type LcmsPlateType = '96well' | '54vial'\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport type LcmsControlSampleType = 'blank' | 'qc' | 'iqc'\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport interface LcmsPlateCell {\n row: string\n column: number\n sample_name: string\n sample_type?: string | null\n injection_volume?: number | null\n injection_count?: number | null\n custom_method?: string | null\n slot?: SlotPosition | null\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport interface LcmsPlateCellsToRackOptions {\n rackId?: string\n rackName?: string\n format?: WellPlateFormat\n plateType?: LcmsPlateType\n slot?: SlotPosition\n injectionVolume?: number\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport interface LcmsPlateCellsToRacksOptions extends Omit<LcmsPlateCellsToRackOptions, 'rackId' | 'rackName' | 'slot'> {\n defaultSlot?: SlotPosition\n rackId?: (slot: SlotPosition, index: number) => string\n rackName?: (slot: SlotPosition, index: number) => string\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport const LCMS_DEFAULT_CONTROL_POSITIONS: Record<LcmsPlateType, Record<LcmsControlSampleType, { row: string; column: number }>> = {\n '96well': {\n blank: { row: 'H', column: 12 },\n qc: { row: 'H', column: 11 },\n iqc: { row: 'H', column: 10 },\n },\n '54vial': {\n blank: { row: 'F', column: 9 },\n qc: { row: 'F', column: 8 },\n iqc: { row: 'F', column: 7 },\n },\n}\n\nconst SLOT_ORDER: SlotPosition[] = ['R', 'G', 'B', 'Y']\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function lcmsPlateTypeToRackFormat(plateType: LcmsPlateType): WellPlateFormat {\n return plateType === '96well' ? 96 : 54\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function rackFormatToLcmsPlateType(format: WellPlateFormat): LcmsPlateType {\n if (format === 96) return '96well'\n if (format === 54) return '54vial'\n throw new Error(`LCMS plate cells support only 54-vial racks and 96-well plates; received format ${format}.`)\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function lcmsWellId(row: string, column: number): string {\n return `${row.toUpperCase()}${column}`\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function parseLcmsWellId(wellId: string): { row: string; column: number } {\n const match = /^([A-Za-z]+)(\\d+)$/.exec(wellId.trim())\n if (!match) {\n throw new Error(`Invalid well id \"${wellId}\". Expected a row letter followed by a column number, e.g. A1.`)\n }\n\n return {\n row: match[1].toUpperCase(),\n column: Number(match[2]),\n }\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function lcmsPlateCellsToRack(cells: LcmsPlateCell[], options: LcmsPlateCellsToRackOptions = {}): Rack {\n const format = options.format ?? (options.plateType ? lcmsPlateTypeToRackFormat(options.plateType) : inferRackFormat(cells))\n const slot = options.slot ?? cells.find(cell => cell.slot)?.slot ?? 'R'\n const injectionVolume = options.injectionVolume ?? inferInjectionVolume(cells) ?? 5\n\n return {\n id: options.rackId ?? `rack-${slot}`,\n name: options.rackName ?? `Rack ${slot}`,\n format,\n slot,\n injectionVolume,\n wells: Object.fromEntries(\n cells\n .filter(cell => cell.sample_name.trim())\n .map((cell) => {\n const wellId = lcmsWellId(cell.row, cell.column)\n const well: Partial<Well> = {\n id: wellId,\n row: rowIndex(cell.row),\n col: cell.column - 1,\n state: 'filled',\n sampleType: cell.sample_type ?? 'sample',\n metadata: {\n label: cell.sample_name.trim(),\n injectionVolume: cell.injection_volume ?? injectionVolume,\n injectionCount: cell.injection_count ?? 1,\n customMethod: cell.custom_method ?? null,\n },\n }\n return [wellId, well]\n }),\n ),\n }\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function lcmsPlateCellsToRacks(cells: LcmsPlateCell[], options: LcmsPlateCellsToRacksOptions = {}): Rack[] {\n const bySlot = new Map<SlotPosition, LcmsPlateCell[]>()\n const defaultSlot = options.defaultSlot ?? 'R'\n\n for (const cell of cells) {\n const slot = cell.slot ?? defaultSlot\n const slotCells = bySlot.get(slot) ?? []\n slotCells.push(cell)\n bySlot.set(slot, slotCells)\n }\n\n return Array.from(bySlot.entries())\n .sort(([a], [b]) => SLOT_ORDER.indexOf(a) - SLOT_ORDER.indexOf(b))\n .map(([slot, slotCells], index) => lcmsPlateCellsToRack(slotCells, {\n ...options,\n slot,\n rackId: options.rackId?.(slot, index) ?? `rack-${slot}`,\n rackName: options.rackName?.(slot, index) ?? `Rack ${slot}`,\n }))\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function rackToLcmsPlateCells(rack: Rack): LcmsPlateCell[] {\n return Object.entries(rack.wells)\n .map(([wellId, well]) => wellToLcmsPlateCell(rack, wellId, well))\n .filter((cell): cell is LcmsPlateCell => cell !== null)\n .sort(comparePlateCells)\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function racksToLcmsPlateCells(racks: Rack[]): LcmsPlateCell[] {\n return racks.flatMap(rackToLcmsPlateCells)\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function getLcmsDefaultControlWellId(plateType: LcmsPlateType, sampleType: LcmsControlSampleType): string {\n const position = LCMS_DEFAULT_CONTROL_POSITIONS[plateType][sampleType]\n return lcmsWellId(position.row, position.column)\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function createLcmsControlWellEditData(\n sampleType: LcmsControlSampleType,\n options: {\n wellId?: string\n plateType?: LcmsPlateType\n injectionVolume?: number\n } = {},\n): WellEditData {\n const plateType = options.plateType ?? '54vial'\n return {\n wellId: options.wellId ?? getLcmsDefaultControlWellId(plateType, sampleType),\n label: sampleType === 'blank' ? 'Blank' : sampleType.toUpperCase(),\n sampleType,\n injectionVolume: options.injectionVolume ?? 5,\n injectionCount: 1,\n customMethod: '',\n }\n}\n\nfunction wellToLcmsPlateCell(rack: Rack, wellId: string, well: Partial<Well>): LcmsPlateCell | null {\n const metadata = well.metadata ?? {}\n const label = getString(metadata.label)\n if (!label) return null\n\n const parsed = parseLcmsWellId(well.id ?? wellId)\n return {\n row: parsed.row,\n column: parsed.column,\n sample_name: label,\n sample_type: well.sampleType ?? null,\n injection_volume: getNumber(metadata.injectionVolume) ?? rack.injectionVolume,\n injection_count: getNumber(metadata.injectionCount) ?? 1,\n custom_method: getNullableString(metadata.customMethod),\n slot: rack.slot,\n }\n}\n\nfunction inferRackFormat(cells: LcmsPlateCell[]): WellPlateFormat {\n return cells.some(cell => rowIndex(cell.row) > 5 || cell.column > 9) ? 96 : 54\n}\n\nfunction inferInjectionVolume(cells: LcmsPlateCell[]): number | undefined {\n return cells.find(cell => typeof cell.injection_volume === 'number')?.injection_volume ?? undefined\n}\n\nfunction rowIndex(row: string): number {\n return row.toUpperCase().charCodeAt(0) - 65\n}\n\nfunction getString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() ? value.trim() : undefined\n}\n\nfunction getNullableString(value: unknown): string | null {\n return typeof value === 'string' && value.trim() ? value.trim() : null\n}\n\nfunction getNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction comparePlateCells(a: LcmsPlateCell, b: LcmsPlateCell): number {\n const rowDiff = rowIndex(a.row) - rowIndex(b.row)\n return rowDiff === 0 ? a.column - b.column : rowDiff\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/composables/useExperiment.ts","../src/composables/pluginFrontendBase.ts"],"sourcesContent":["import { computed, type ComputedRef } from 'vue'\nimport { useExperimentStore } from '../stores/experiment'\nimport type { ExperimentSummary } from '../types'\n\n/** Load state of the current experiment record. */\nexport type ExperimentLoadStatus = 'idle' | 'loading' | 'ready' | 'error'\n\nexport interface UseExperimentReturn {\n /** Id of the current experiment; `null` when none is selected. */\n id: ComputedRef<number | null>\n /** Record of the current experiment, once the platform returned it. */\n current: ComputedRef<ExperimentSummary | null>\n /** `idle` with no selection, then `loading`, `ready` or `error`. */\n status: ComputedRef<ExperimentLoadStatus>\n /** Message of the last failed load, or `null`. */\n error: ComputedRef<string | null>\n /** Read the current experiment again. The selection does not change. */\n refresh: () => Promise<void>\n}\n\n/**\n * Read the experiment the plugin page works on.\n *\n * The platform selects the experiment and keeps it in step with the URL; this\n * composable only reads it. Watch `id` to respond to a change. In standalone\n * mode no experiment is selected and `id` stays `null`.\n *\n * @example\n * ```typescript\n * const experiment = useExperiment()\n * watch(experiment.id, (id) => { if (id !== null) void load(id) }, { immediate: true })\n * ```\n */\nexport function useExperiment(): UseExperimentReturn {\n const store = useExperimentStore()\n const id = computed(() => store.currentId)\n\n return {\n id,\n current: computed(() => store.current),\n status: computed(() => {\n if (store.currentId === null) return 'idle'\n if (store.isResolving) return 'loading'\n return store.error ? 'error' : 'ready'\n }),\n error: computed(() => store.error),\n refresh: store.refresh,\n }\n}\n","import { getInjectedPlatformContext } from './platformContextHelpers'\n\nfunction normalizePluginRoutePrefix(prefix: string | undefined): string | undefined {\n const candidate = prefix?.trim()\n if (!candidate) return undefined\n\n const path = candidate.split('/').filter(Boolean).join('/')\n return path ? `/${path}/` : '/'\n}\n\n/**\n * Resolve the Vue Router base for a plugin frontend.\n *\n * Integrated plugins use the platform-injected mount prefix. Standalone and\n * development builds retain the caller's Vite base unchanged.\n */\nexport function resolvePluginFrontendBase(fallbackBase: string = '/'): string {\n const context = getInjectedPlatformContext()\n if (!context?.isIntegrated) return fallbackBase\n\n return normalizePluginRoutePrefix(context.plugin?.route_prefix) ?? fallbackBase\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,SAAgB,gBAAqC;CACnD,MAAM,QAAQ,mBAAmB;CAGjC,OAAO;EACL,IAHS,eAAe,MAAM,SAG9B;EACA,SAAS,eAAe,MAAM,OAAO;EACrC,QAAQ,eAAe;GACrB,IAAI,MAAM,cAAc,MAAM,OAAO;GACrC,IAAI,MAAM,aAAa,OAAO;GAC9B,OAAO,MAAM,QAAQ,UAAU;EACjC,CAAC;EACD,OAAO,eAAe,MAAM,KAAK;EACjC,SAAS,MAAM;CACjB;AACF;;;AC9CA,SAAS,2BAA2B,QAAgD;CAClF,MAAM,YAAY,QAAQ,KAAK;CAC/B,IAAI,CAAC,WAAW,OAAO,KAAA;CAEvB,MAAM,OAAO,UAAU,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAC1D,OAAO,OAAO,IAAI,KAAK,KAAK;AAC9B;;;;;;;AAQA,SAAgB,0BAA0B,eAAuB,KAAa;CAC5E,MAAM,UAAU,2BAA2B;CAC3C,IAAI,CAAC,SAAS,cAAc,OAAO;CAEnC,OAAO,2BAA2B,QAAQ,QAAQ,YAAY,KAAK;AACrE"}
|