@morscherlab/mint-sdk 1.3.11 → 1.4.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -177
- package/dist/AlertBox-B2Bgr3ei.js +276 -0
- package/dist/AlertBox-B2Bgr3ei.js.map +1 -0
- package/dist/AppSidebar-mvm--GxN.js +3565 -0
- package/dist/AppSidebar-mvm--GxN.js.map +1 -0
- package/dist/ConfirmDialog-nbJj51is.js +102 -0
- package/dist/ConfirmDialog-nbJj51is.js.map +1 -0
- package/dist/ExperimentPopover-5T1fAq2L.js +337 -0
- package/dist/ExperimentPopover-5T1fAq2L.js.map +1 -0
- package/dist/ExperimentSelectorModal-65peG4Up.js +544 -0
- package/dist/ExperimentSelectorModal-65peG4Up.js.map +1 -0
- package/dist/SegmentedControl-BtnnjWzs.js +129 -0
- package/dist/SegmentedControl-BtnnjWzs.js.map +1 -0
- package/dist/SettingsModal-DO3IZ7qz.js +666 -0
- package/dist/SettingsModal-DO3IZ7qz.js.map +1 -0
- package/dist/analysisArtifactTypes-Cy3D0Ipg.js.map +1 -1
- package/dist/auth-SliLnFre.js +65 -0
- package/dist/auth-SliLnFre.js.map +1 -0
- package/dist/components/ActionMenu.vue.d.ts +1 -1
- package/dist/components/AdductText.vue.d.ts +1 -1
- package/dist/components/AlertBox.vue.d.ts +3 -3
- package/dist/components/AppContainer.vue.d.ts +1 -1
- package/dist/components/AppSidebar.vue.d.ts +15 -95
- package/dist/components/AppTopBar.vue.d.ts +16 -70
- package/dist/components/ArtifactSaveDialog.vue.d.ts +13 -5
- package/dist/components/ArtifactSelectorModal.vue.d.ts +4 -4
- package/dist/components/AuditTrail.vue.d.ts +2 -2
- package/dist/components/BaseButton.vue.d.ts +11 -4
- package/dist/components/BaseCheckbox.vue.d.ts +9 -3
- package/dist/components/BaseInput.vue.d.ts +13 -9
- package/dist/components/BaseModal.vue.d.ts +4 -4
- package/dist/components/BasePill.vue.d.ts +15 -8
- package/dist/components/BaseRadioGroup.vue.d.ts +2 -2
- package/dist/components/BaseSelect.vue.d.ts +51 -19
- package/dist/components/BaseTabs.vue.d.ts +6 -5
- package/dist/components/BatchProgressList.vue.d.ts +2 -2
- package/dist/components/ChartContainer.vue.d.ts +4 -2
- package/dist/components/ChemicalFormula.vue.d.ts +2 -2
- package/dist/components/CollapsibleCard.vue.d.ts +3 -3
- package/dist/components/ComponentBindingRenderer.vue.d.ts +2 -3
- package/dist/components/ConcentrationInput.vue.d.ts +2 -2
- package/dist/components/ConfirmDialog.vue.d.ts +8 -7
- package/dist/components/DataFrame.vue.d.ts +32 -74
- package/dist/components/DatePicker.vue.d.ts +24 -2
- package/dist/components/DoseCalculator.vue.d.ts +1 -1
- package/dist/components/DoseCalculatorVolumeField.vue.d.ts +1 -1
- package/dist/components/EmptyState.vue.d.ts +3 -2
- package/dist/components/ExperimentPopover.vue.d.ts +18 -0
- package/dist/components/ExperimentSelectorModal.vue.d.ts +3 -7
- package/dist/components/FilePicker.vue.d.ts +1 -1
- package/dist/components/FileUploader.vue.d.ts +2 -2
- package/dist/components/FormBuilder.vue.d.ts +17 -74
- package/dist/components/FormulaInput.vue.d.ts +2 -2
- package/dist/components/GeneratedPluginView.vue.d.ts +1 -1
- package/dist/components/GeneratedResultRenderer.vue.d.ts +5 -1
- package/dist/components/{StatusIndicator.vue.d.ts → InstrumentStatusPanels.vue.d.ts} +8 -9
- package/dist/components/JobsStatusTray.vue.d.ts +2 -9
- package/dist/components/LoadingSpinner.vue.d.ts +3 -3
- package/dist/components/MoleculeInput.vue.d.ts +2 -2
- package/dist/components/NumberInput.vue.d.ts +19 -5
- package/dist/components/PlateEditor.vue.d.ts +11 -61
- package/dist/components/PlotlyChart.vue.d.ts +2 -2
- package/dist/components/PluginIcon.vue.d.ts +5 -1
- package/dist/components/PluginWorkspaceView.controls.d.ts +2 -9
- package/dist/components/PluginWorkspaceView.navigation.d.ts +1 -7
- package/dist/components/PluginWorkspaceView.props.d.ts +18 -137
- package/dist/components/PluginWorkspaceView.shell.d.ts +2 -10
- package/dist/components/PluginWorkspaceView.vue.d.ts +14 -84
- package/dist/components/PresenceAvatars.vue.d.ts +31 -0
- package/dist/components/ProgressBar.vue.d.ts +3 -2
- package/dist/components/ProtocolStep.presentation.d.ts +0 -1
- package/dist/components/SampleHierarchyTree.vue.d.ts +3 -3
- package/dist/components/SampleSelector.vue.d.ts +8 -8
- package/dist/components/ScheduleCalendar.vue.d.ts +1 -1
- package/dist/components/ScientificNumber.vue.d.ts +1 -1
- package/dist/components/SecretInput.vue.d.ts +2 -2
- package/dist/components/SegmentedControl.vue.d.ts +2 -2
- package/dist/components/SequenceInput.vue.d.ts +2 -2
- package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
- package/dist/components/SettingsModal.vue.d.ts +12 -20
- package/dist/components/SmartGroup.types.d.ts +0 -1
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -1
- package/dist/components/StaleFormBanner.vue.d.ts +20 -0
- package/dist/components/StepWizard.vue.d.ts +3 -0
- package/dist/components/TagsInput.vue.d.ts +4 -3
- package/dist/components/TimeRangeInput.vue.d.ts +2 -2
- package/dist/components/VersionConflictDialog.vue.d.ts +24 -0
- package/dist/components/WellPlate.geometry.d.ts +0 -6
- package/dist/components/WellPlate.rendering.d.ts +0 -2
- package/dist/components/WellPlate.vue.d.ts +7 -52
- package/dist/components/index.d.ts +0 -90
- package/dist/components/{AutoGroupModal.adapter.d.ts → internal/AutoGroupModalInternal.adapter.d.ts} +6 -6
- package/dist/components/{AutoGroupModal.vue.d.ts → internal/AutoGroupModalInternal.vue.d.ts} +6 -6
- package/dist/components/{BaseToggle.vue.d.ts → internal/CheckboxSwitchInternal.vue.d.ts} +2 -2
- package/dist/components/{MultiSelect.vue.d.ts → internal/DatePickerDateInternal.vue.d.ts} +11 -9
- package/dist/components/{DateTimePicker.vue.d.ts → internal/DatePickerDateTimeInternal.vue.d.ts} +2 -2
- package/dist/components/{TimePicker.vue.d.ts → internal/DatePickerTimeInternal.vue.d.ts} +4 -4
- package/dist/components/internal/FilePickerListInternal.vue.d.ts +2 -2
- package/dist/components/internal/FormSchemaInternal.vue.d.ts +95 -0
- package/dist/components/{UnitInput.vue.d.ts → internal/NumberUnitInputInternal.vue.d.ts} +6 -14
- package/dist/components/internal/PlateEditorBindingInternal.vue.d.ts +3 -2
- package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +5 -10
- package/dist/components/internal/SelectMultipleInternal.vue.d.ts +27 -0
- package/dist/components/{SearchableSelect.vue.d.ts → internal/SelectSearchableInternal.vue.d.ts} +5 -2
- package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +1 -15
- package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +4 -4
- package/dist/{composables → components/internal}/autoGroup/classKey.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/classify.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/columns.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/compose.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/cooccurrence.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/csv-shim.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/fingerprint.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/template.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/tokenLength.d.ts +1 -1
- package/dist/components/internal/generatedJobsApi.d.ts +1 -1
- package/dist/{composables → components/internal}/useAutoGroup.d.ts +9 -18
- package/dist/composables/componentSpecs.d.ts +41 -0
- package/dist/composables/controlComponentBindings.d.ts +6 -0
- package/dist/composables/controlSchemaAdapters.d.ts +28 -2
- package/dist/composables/controlSchemaDoseDesign.d.ts +1 -1
- package/dist/composables/controlSchemaModel.d.ts +1 -1
- package/dist/composables/controlSchemaTypes.d.ts +35 -23
- package/dist/composables/{usePluginClient.d.ts → createClient.d.ts} +22 -49
- package/dist/composables/{useEventStream.d.ts → eventStream.d.ts} +2 -2
- package/dist/composables/experiment-utils.d.ts +1 -6
- package/dist/composables/index.d.ts +7 -59
- package/dist/composables/platformContextHelpers.d.ts +0 -11
- package/dist/composables/pluginEndpointBuilder.d.ts +2 -2
- package/dist/composables/pluginIdentity.d.ts +24 -0
- package/dist/composables/pluginWorkspaceModel.d.ts +16 -99
- package/dist/composables/useApi.d.ts +1 -3
- package/dist/composables/useAppExperiment.d.ts +9 -1
- package/dist/composables/{useAnalysisArtifacts.d.ts → useArtifacts.d.ts} +6 -6
- package/dist/composables/useCalendarGrid.d.ts +1 -1
- package/dist/composables/useExperiment.d.ts +30 -0
- package/dist/composables/useExperimentSelector.d.ts +6 -2
- package/dist/composables/useFilePicker.d.ts +2 -2
- package/dist/composables/useJobCenter.d.ts +63 -0
- package/dist/composables/{useGeneratedAnalysis.d.ts → useJobsEndpoint.d.ts} +22 -23
- package/dist/composables/useMenuKeyboard.d.ts +1 -1
- package/dist/composables/usePlatform.d.ts +64 -0
- package/dist/composables/usePluginWorkspace.d.ts +6 -11
- package/dist/composables/usePresence.d.ts +41 -0
- package/dist/composables/useRackEditor.d.ts +2 -2
- package/dist/composables/useRealtime.d.ts +71 -0
- package/dist/composables/{useRequestSyncState.d.ts → useRequest.d.ts} +12 -17
- package/dist/composables/useToast.d.ts +7 -5
- package/dist/composables/useVersionedSave.d.ts +76 -0
- package/dist/controlSchemaModel-B8CTXagP.js +95 -0
- package/dist/controlSchemaModel-B8CTXagP.js.map +1 -0
- package/dist/data-CgILxDLW.js +3865 -0
- package/dist/data-CgILxDLW.js.map +1 -0
- package/dist/data.d.ts +32 -0
- package/dist/data.js +10 -0
- package/dist/deprecatedRootExports.d.ts +191 -0
- package/dist/experiment-43OJtH7R.js +673 -0
- package/dist/experiment-43OJtH7R.js.map +1 -0
- package/dist/experimentStatus-Cqp6qNrR.js +60 -0
- package/dist/experimentStatus-Cqp6qNrR.js.map +1 -0
- package/dist/host.d.ts +10 -0
- package/dist/host.js +26 -0
- package/dist/host.js.map +1 -0
- package/dist/index.d.ts +1 -12
- package/dist/index.js +65 -277
- package/dist/index.js.map +1 -1
- package/dist/install-CsPFJSx3.js +669 -0
- package/dist/install-CsPFJSx3.js.map +1 -0
- package/dist/install.d.ts +2 -1
- package/dist/install.js +1 -21
- package/dist/instrument.d.ts +0 -6
- package/dist/lab-MHzp-_J8.js +7494 -0
- package/dist/lab-MHzp-_J8.js.map +1 -0
- package/dist/lab.d.ts +42 -0
- package/dist/lab.js +5 -0
- package/dist/permissions.d.ts +0 -4
- package/dist/permissions.js +1 -20
- package/dist/permissions.js.map +1 -1
- package/dist/records-B6gpM_3e.js +3268 -0
- package/dist/records-B6gpM_3e.js.map +1 -0
- package/dist/runtime-8bs8EogX.js +1491 -0
- package/dist/runtime-8bs8EogX.js.map +1 -0
- package/dist/runtime.d.ts +25 -0
- package/dist/runtime.js +8 -0
- package/dist/shell-CywENwBT.js +197 -0
- package/dist/shell-CywENwBT.js.map +1 -0
- package/dist/shell.d.ts +16 -0
- package/dist/shell.js +8 -0
- package/dist/stores/auth.d.ts +13 -35
- package/dist/stores/experiment.d.ts +4 -0
- package/dist/stores/index.js +2 -2
- package/dist/styles.css +12161 -15036
- package/dist/types/analysisArtifactTypes.d.ts +1 -1
- package/dist/types/auth.d.ts +0 -8
- package/dist/types/componentLabTypes.d.ts +98 -34
- package/dist/types/componentWorkflowTypes.d.ts +2 -27
- package/dist/types/components.d.ts +145 -74
- package/dist/types/form-builder.d.ts +4 -0
- package/dist/types/generated/platformContext.d.ts +53 -0
- package/dist/types/generated-ui.d.ts +6 -2
- package/dist/types/index.d.ts +4 -5
- package/dist/types/instrument.d.ts +41 -0
- package/dist/types/platform.d.ts +20 -58
- package/dist/useDebouncedWatch-BPwyl6eS.js +73 -0
- package/dist/useDebouncedWatch-BPwyl6eS.js.map +1 -0
- package/dist/{experiment-utils-DTANyVKV.js → useDropdownState-8yWMu-7_.js} +127 -144
- package/dist/useDropdownState-8yWMu-7_.js.map +1 -0
- package/dist/useExpansionSet-CvoNMZJi.js +68 -0
- package/dist/useExpansionSet-CvoNMZJi.js.map +1 -0
- package/dist/useExperimentSamples-DHnxKFAF.js +366 -0
- package/dist/useExperimentSamples-DHnxKFAF.js.map +1 -0
- package/dist/useListReorder-BitdUhxn.js +5294 -0
- package/dist/useListReorder-BitdUhxn.js.map +1 -0
- package/dist/useRackEditor-DiwCt77M.js +5930 -0
- package/dist/useRackEditor-DiwCt77M.js.map +1 -0
- package/dist/useRealtime-C3iy9QkU.js +699 -0
- package/dist/useRealtime-C3iy9QkU.js.map +1 -0
- package/dist/useRequest-D506eHi8.js +244 -0
- package/dist/useRequest-D506eHi8.js.map +1 -0
- package/dist/utils/color.d.ts +0 -5
- package/dist/{composables/useDoseCalculator.d.ts → utils/dose.d.ts} +10 -13
- package/dist/utils/experimentStatus.d.ts +9 -0
- package/dist/{composables/useChemicalFormula.d.ts → utils/formula.d.ts} +3 -6
- package/dist/utils/integrationHost.d.ts +18 -0
- package/dist/utils/plotlyTemplate.d.ts +2 -0
- package/dist/utils/pluginSecrets.d.ts +12 -12
- package/dist/utils/presenceAvatars.d.ts +30 -0
- package/dist/utils/records.d.ts +0 -2
- package/dist/{composables/useTimeUtils.d.ts → utils/time.d.ts} +7 -18
- package/package.json +20 -17
- package/src/__tests__/components/ActionMenu.test.ts +0 -13
- package/src/__tests__/components/AlertBox.test.ts +1 -1
- package/src/__tests__/components/AppSidebar.test.ts +119 -167
- package/src/__tests__/components/AppToastContainer.test.ts +2 -2
- package/src/__tests__/components/AppTopBar.test.ts +230 -176
- package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
- package/src/__tests__/components/ArtifactSaveDialog.test.ts +83 -3
- package/src/__tests__/components/ArtifactSelectorModal.test.ts +6 -4
- package/src/__tests__/components/AuditTrail.test.ts +1 -1
- package/src/__tests__/components/AutoGroupModal.adapter.test.ts +1 -1
- package/src/__tests__/components/AutoGroupModal.anatomy.test.ts +2 -2
- package/src/__tests__/components/AutoGroupModal.wiring.test.ts +2 -2
- package/src/__tests__/components/BaseButton.test.ts +51 -0
- package/src/__tests__/components/{BaseToggle.test.ts → BaseCheckbox.switch.test.ts} +8 -6
- package/src/__tests__/components/BaseInput.test.ts +13 -34
- package/src/__tests__/components/BaseModal.test.ts +6 -6
- package/src/__tests__/components/BasePill.test.ts +33 -39
- package/src/__tests__/components/BaseSelect.multiple.test.ts +118 -0
- package/src/__tests__/components/{SearchableSelect.test.ts → BaseSelect.searchable.test.ts} +19 -9
- package/src/__tests__/components/BaseSelect.test.ts +11 -0
- package/src/__tests__/components/BaseTabs.test.ts +13 -13
- package/src/__tests__/components/BatchProgressList.test.ts +16 -0
- package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
- package/src/__tests__/components/ChartContainer.test.ts +11 -0
- package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
- package/src/__tests__/components/CollapsibleCard.test.ts +1 -1
- package/src/__tests__/components/ComponentBindingRenderer.test.ts +25 -73
- package/src/__tests__/components/ConcentrationInput.test.ts +3 -3
- package/src/__tests__/components/ConfirmDialog.test.ts +23 -0
- package/src/__tests__/components/DataFrame.test.ts +140 -142
- package/src/__tests__/components/DataStates.test.ts +6 -22
- package/src/__tests__/components/{DateTimePicker.test.ts → DatePicker.datetime.test.ts} +15 -7
- package/src/__tests__/components/DatePicker.test.ts +21 -0
- package/src/__tests__/components/{TimePicker.test.ts → DatePicker.time.test.ts} +20 -19
- package/src/__tests__/components/DoseCalculator.test.ts +12 -7
- package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +6 -6
- package/src/__tests__/components/EmptyState.test.ts +1 -1
- package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
- package/src/__tests__/components/ExperimentSelectorModal.test.ts +134 -28
- package/src/__tests__/components/FormBuilder.test.ts +49 -167
- package/src/__tests__/components/FormSchemaInternal.test.ts +91 -0
- package/src/__tests__/components/GeneratedPathInput.test.ts +18 -13
- package/src/__tests__/components/GeneratedPluginView.test.ts +60 -25
- package/src/__tests__/components/GeneratedResultRenderer.test.ts +6 -4
- package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
- package/src/__tests__/components/InstrumentStatusPanels.test.ts +79 -0
- package/src/__tests__/components/JobsStatusTray.test.ts +4 -4
- package/src/__tests__/components/NumberInput.test.ts +28 -0
- package/src/__tests__/components/{UnitInput.test.ts → NumberInput.units.test.ts} +6 -6
- package/src/__tests__/components/PlateEditor.test.ts +108 -108
- package/src/__tests__/components/PlateEditorBindingInternal.test.ts +13 -13
- package/src/__tests__/components/PlotlyChart.test.ts +1 -1
- package/src/__tests__/components/PluginIcon.test.ts +9 -4
- package/src/__tests__/components/PluginWorkspaceView.controls.test.ts +16 -29
- package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +28 -34
- package/src/__tests__/components/PluginWorkspaceView.navigation.test.ts +4 -19
- package/src/__tests__/components/PluginWorkspaceView.shell.test.ts +1 -6
- package/src/__tests__/components/PluginWorkspaceView.test.ts +183 -155
- package/src/__tests__/components/PresenceAvatars.test.ts +90 -0
- package/src/__tests__/components/ProtocolStep.presentation.test.ts +1 -3
- package/src/__tests__/components/ProtocolStepEditor.test.ts +10 -11
- package/src/__tests__/components/ProtocolStepParameterField.test.ts +8 -7
- package/src/__tests__/components/ResourcePickerListInternal.test.ts +2 -22
- package/src/__tests__/components/RetiredStyles.test.ts +0 -18
- package/src/__tests__/components/SampleSelector.test.ts +30 -25
- package/src/__tests__/components/SecretInput.test.ts +14 -19
- package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
- package/src/__tests__/components/SettingsModal.test.ts +76 -84
- package/src/__tests__/components/StaleFormBanner.test.ts +48 -0
- package/src/__tests__/components/StepWizard.test.ts +11 -0
- package/src/__tests__/components/ThemeToggle.test.ts +1 -1
- package/src/__tests__/components/WellPlate.decoration.test.ts +20 -11
- package/src/__tests__/components/WellPlate.interaction.test.ts +6 -7
- package/src/__tests__/components/WellPlate.keyboard.test.ts +2 -2
- package/src/__tests__/components/deprecationTags.test.ts +90 -0
- package/src/__tests__/composables/analysisArtifactTarget.test.ts +1 -12
- package/src/__tests__/composables/autoGroup/classKey.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/classify.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/columns.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/compose.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/cooccurrence.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/fieldEdits.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/fingerprint.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/golden.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/groupByOrder.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/groupTree.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/integration.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/template.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/tokenLength.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/tokenize.test.ts +1 -1
- package/src/__tests__/composables/{usePluginClient.test.ts → createClient.test.ts} +84 -222
- package/src/__tests__/composables/{useEventStream.test.ts → eventStream.test.ts} +6 -6
- package/src/__tests__/composables/experiment-utils.test.ts +13 -14
- package/src/__tests__/composables/useApi.test.ts +32 -21
- package/src/__tests__/composables/useAppExperiment.test.ts +46 -3
- package/src/__tests__/composables/{useAnalysisArtifacts.test.ts → useArtifacts.test.ts} +19 -27
- package/src/__tests__/composables/useAutoGroup.test.ts +3 -13
- package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
- package/src/__tests__/composables/useControlSchema.test.ts +41 -99
- package/src/__tests__/composables/useExperiment.test.ts +63 -0
- package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
- package/src/__tests__/composables/useFileBrowser.test.ts +4 -6
- package/src/__tests__/composables/{useJobsStatusTray.test.ts → useJobCenter.test.ts} +31 -31
- package/src/__tests__/composables/{useGeneratedAnalysis.test.ts → useJobsEndpoint.test.ts} +213 -139
- package/src/__tests__/composables/usePlatform.test.ts +102 -0
- package/src/__tests__/composables/usePresence.test.ts +164 -0
- package/src/__tests__/composables/useRackEditor.test.ts +2 -2
- package/src/__tests__/composables/useRealtime.test.ts +196 -0
- package/src/__tests__/composables/{useRequestSyncState.test.ts → useRequest.test.ts} +32 -47
- package/src/__tests__/composables/useVersionedSave.test.ts +194 -0
- package/src/__tests__/docs/extractDocsComponents.test.ts +36 -0
- package/src/__tests__/docs/extractDocsParsing.test.ts +2 -2
- package/src/__tests__/docs/extractDocsTheme.test.ts +1 -46
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +164 -84
- package/src/__tests__/styles/baseControlsRules.test.ts +7 -3
- package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
- package/src/__tests__/styles/cssTokens.test.ts +2 -2
- package/src/__tests__/styles/darkModeRules.test.ts +0 -6
- package/src/__tests__/styles/menusShellRefresh.test.ts +14 -10
- package/src/__tests__/{composables/useChemicalFormula.test.ts → utils/formula.test.ts} +3 -5
- package/src/__tests__/utils/permissions.test.ts +1 -36
- package/src/__tests__/utils/plotlyTemplate.test.ts +20 -5
- package/src/__tests__/{composables/useTimeUtils.test.ts → utils/time.test.ts} +18 -8
- package/src/components/ActionMenu.vue +7 -13
- package/src/components/AdductText.story.vue +7 -0
- package/src/components/AdductText.vue +1 -1
- package/src/components/AlertBox.story.vue +27 -27
- package/src/components/AlertBox.vue +22 -20
- package/src/components/AppLayout.story.vue +33 -44
- package/src/components/AppLayout.vue +1 -1
- package/src/components/AppSidebar.story.vue +40 -101
- package/src/components/AppSidebar.vue +66 -147
- package/src/components/AppToastContainer.story.vue +1 -1
- package/src/components/AppTopBar.story.vue +97 -111
- package/src/components/AppTopBar.vue +170 -290
- package/src/components/ArtifactSaveDialog.story.vue +32 -9
- package/src/components/ArtifactSaveDialog.vue +125 -38
- package/src/components/ArtifactSelectorModal.story.vue +4 -4
- package/src/components/ArtifactSelectorModal.vue +10 -10
- package/src/components/AuditTrail.story.vue +6 -5
- package/src/components/AuditTrail.vue +5 -24
- package/src/components/Avatar.story.vue +2 -3
- package/src/components/Avatar.vue +11 -16
- package/src/components/BaseButton.story.vue +25 -0
- package/src/components/BaseButton.vue +39 -10
- package/src/components/BaseCheckbox.story.vue +2 -2
- package/src/components/{BaseToggle.story.vue → BaseCheckbox.switch.story.vue} +22 -19
- package/src/components/BaseCheckbox.vue +39 -7
- package/src/components/BaseInput.story.vue +3 -15
- package/src/components/{BaseTextarea.story.vue → BaseInput.textarea.story.vue} +14 -10
- package/src/components/BaseInput.vue +53 -26
- package/src/components/BaseModal.story.vue +11 -11
- package/src/components/BaseModal.vue +8 -8
- package/src/components/BasePill.story.vue +48 -28
- package/src/components/BasePill.vue +22 -11
- package/src/components/BaseRadioGroup.story.vue +4 -4
- package/src/components/BaseRadioGroup.vue +3 -3
- package/src/components/{MultiSelect.story.vue → BaseSelect.multiple.story.vue} +33 -16
- package/src/components/{SearchableSelect.story.vue → BaseSelect.searchable.story.vue} +4 -4
- package/src/components/BaseSelect.story.vue +2 -2
- package/src/components/BaseSelect.vue +118 -22
- package/src/components/BaseTabs.story.vue +20 -20
- package/src/components/BaseTabs.vue +17 -9
- package/src/components/BatchProgressList.vue +38 -28
- package/src/components/ChartContainer.story.vue +9 -13
- package/src/components/ChartContainer.vue +10 -8
- package/src/components/ChemicalFormula.vue +1 -2
- package/src/components/CollapsibleCard.vue +5 -4
- package/src/components/ComponentBindingRenderer.story.vue +0 -29
- package/src/components/ComponentBindingRenderer.vue +15 -39
- package/src/components/ConcentrationInput.story.vue +2 -2
- package/src/components/ConcentrationInput.vue +9 -9
- package/src/components/ConfirmDialog.story.vue +22 -22
- package/src/components/ConfirmDialog.vue +15 -14
- package/src/components/DataFrame.story.vue +28 -40
- package/src/components/DataFrame.vue +112 -128
- package/src/components/{DateTimePicker.story.vue → DatePicker.datetime.story.vue} +19 -14
- package/src/components/DatePicker.story.vue +2 -2
- package/src/components/{TimePicker.story.vue → DatePicker.time.story.vue} +15 -12
- package/src/components/DatePicker.vue +82 -220
- package/src/components/DoseCalculator.vue +13 -19
- package/src/components/DoseCalculatorVolumeField.vue +6 -6
- package/src/components/EmptyState.story.vue +17 -17
- package/src/components/EmptyState.vue +6 -5
- package/src/components/ExperimentPopover.story.vue +165 -53
- package/src/components/ExperimentPopover.vue +172 -190
- package/src/components/ExperimentSelectorModal.story.vue +43 -39
- package/src/components/ExperimentSelectorModal.vue +134 -122
- package/src/components/FilePicker.vue +1 -1
- package/src/components/FormBuilder.story.vue +9 -4
- package/src/components/FormBuilder.vue +46 -253
- package/src/components/FormField.story.vue +9 -50
- package/src/components/FormulaInput.story.vue +2 -2
- package/src/components/FormulaInput.vue +5 -6
- package/src/components/GeneratedPathInput.vue +8 -9
- package/src/components/GeneratedPluginView.story.vue +1 -1
- package/src/components/GeneratedPluginView.vue +29 -22
- package/src/components/GeneratedResultRenderer.vue +16 -17
- package/src/components/InstrumentStateBadge.vue +1 -1
- package/src/components/InstrumentStatusPanels.story.vue +64 -0
- package/src/components/InstrumentStatusPanels.vue +133 -0
- package/src/components/JobsStatusTray.story.vue +2 -2
- package/src/components/JobsStatusTray.vue +5 -20
- package/src/components/LoadingSpinner.story.vue +11 -11
- package/src/components/LoadingSpinner.vue +7 -5
- package/src/components/MoleculeInput.story.vue +2 -2
- package/src/components/MoleculeInput.vue +3 -3
- package/src/components/NumberInput.story.vue +55 -15
- package/src/components/NumberInput.vue +83 -24
- package/src/components/PlateEditor.story.vue +51 -43
- package/src/components/PlateEditor.vue +97 -128
- package/src/components/PlotlyChart.story.vue +1 -1
- package/src/components/PlotlyChart.vue +6 -4
- package/src/components/PluginIcon.story.vue +6 -11
- package/src/components/PluginIcon.vue +7 -2
- package/src/components/PluginWorkspaceView.controls.ts +9 -29
- package/src/components/PluginWorkspaceView.navigation.ts +2 -23
- package/src/components/PluginWorkspaceView.props.ts +17 -151
- package/src/components/PluginWorkspaceView.shell.ts +13 -24
- package/src/components/PluginWorkspaceView.story.vue +65 -63
- package/src/components/PluginWorkspaceView.vue +21 -78
- package/src/components/PresenceAvatars.story.vue +75 -0
- package/src/components/PresenceAvatars.vue +114 -0
- package/src/components/ProgressBar.story.vue +7 -7
- package/src/components/ProgressBar.vue +4 -3
- package/src/components/ProtocolStep.presentation.ts +0 -11
- package/src/components/ProtocolStepEditor.vue +6 -5
- package/src/components/ProtocolStepParameterField.vue +15 -12
- package/src/components/RuntimeUpdateNotice.vue +1 -1
- package/src/components/SampleSelector.colors.ts +1 -1
- package/src/components/SampleSelector.story.vue +1 -1
- package/src/components/SampleSelector.vue +33 -43
- package/src/components/SampleSelectorGroupNode.vue +1 -1
- package/src/components/ScheduleCalendar.vue +4 -4
- package/src/components/SecretInput.story.vue +1 -1
- package/src/components/SecretInput.vue +16 -25
- package/src/components/SectionCard.story.vue +2 -2
- package/src/components/SegmentedControl.story.vue +7 -7
- package/src/components/SegmentedControl.vue +5 -3
- package/src/components/SequenceInput.story.vue +2 -2
- package/src/components/SequenceInput.vue +3 -3
- package/src/components/SequenceProgressBar.story.vue +9 -0
- package/src/components/SequenceProgressBar.vue +6 -1
- package/src/components/SettingsModal.schema.ts +1 -1
- package/src/components/SettingsModal.story.vue +13 -14
- package/src/components/SettingsModal.vue +31 -49
- package/src/components/SmartGroup.types.ts +4 -6
- package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
- package/src/components/SmartGroupFieldRecipe.vue +7 -5
- package/src/components/SmartGroupManual.story.vue +1 -1
- package/src/components/StaleFormBanner.story.vue +90 -0
- package/src/components/StaleFormBanner.vue +83 -0
- package/src/components/StepWizard.story.vue +33 -0
- package/src/components/StepWizard.vue +8 -1
- package/src/components/TagsInput.story.vue +7 -7
- package/src/components/TagsInput.vue +7 -6
- package/src/components/ThemeToggle.vue +5 -30
- package/src/components/TimeRangeInput.story.vue +1 -1
- package/src/components/TimeRangeInput.vue +10 -8
- package/src/components/VersionConflictDialog.story.vue +60 -0
- package/src/components/VersionConflictDialog.vue +79 -0
- package/src/components/WellPlate.geometry.ts +0 -38
- package/src/components/WellPlate.rendering.ts +0 -13
- package/src/components/WellPlate.story.vue +64 -51
- package/src/components/WellPlate.vue +68 -87
- package/src/components/index.ts +3 -105
- package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
- package/src/components/{AutoGroupModal.adapter.ts → internal/AutoGroupModalInternal.adapter.ts} +8 -8
- package/src/components/{AutoGroupModal.vue → internal/AutoGroupModalInternal.vue} +23 -23
- package/src/components/{BaseToggle.vue → internal/CheckboxSwitchInternal.vue} +8 -8
- package/src/components/internal/DataStateInternal.vue +1 -1
- package/src/components/internal/DatePickerDateInternal.vue +219 -0
- package/src/components/{DateTimePicker.vue → internal/DatePickerDateTimeInternal.vue} +12 -22
- package/src/components/{TimePicker.vue → internal/DatePickerTimeInternal.vue} +12 -15
- package/src/components/internal/FilePickerListInternal.vue +8 -14
- package/src/components/{FormActions.vue → internal/FormActionsInternal.vue} +2 -2
- package/src/components/internal/FormFieldRendererInternal.vue +1 -1
- package/src/components/internal/FormSchemaInternal.vue +253 -0
- package/src/components/{UnitInput.vue → internal/NumberUnitInputInternal.vue} +28 -28
- package/src/components/internal/PlateEditorBindingInternal.vue +8 -7
- package/src/components/internal/ResourcePickerListInternal.vue +48 -88
- package/src/components/internal/SelectMultipleInternal.vue +242 -0
- package/src/components/{SearchableSelect.vue → internal/SelectSearchableInternal.vue} +26 -11
- package/src/components/internal/WellEditPopupInternal.vue +4 -9
- package/src/components/internal/WorkspaceShellInternal.vue +3 -36
- package/src/components/internal/WorkspaceSidebarInternal.vue +4 -25
- package/src/{composables → components/internal}/autoGroup/classKey.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/classify.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/columns.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/compose.ts +3 -3
- package/src/{composables → components/internal}/autoGroup/cooccurrence.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/csv-shim.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/fingerprint.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/index.ts +1 -2
- package/src/{composables → components/internal}/autoGroup/template.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/tokenLength.ts +1 -1
- package/src/components/internal/generatedJobsApi.ts +1 -1
- package/src/{composables → components/internal}/useAutoGroup.ts +3 -57
- package/src/composables/componentSpecs.ts +62 -0
- package/src/composables/controlComponentBindings.ts +7 -0
- package/src/composables/controlSchemaAdapters.ts +45 -7
- package/src/composables/controlSchemaDoseDesign.ts +16 -5
- package/src/composables/controlSchemaModel.ts +1 -1
- package/src/composables/controlSchemaTypes.ts +31 -22
- package/src/composables/{usePluginClient.ts → createClient.ts} +54 -190
- package/src/composables/{useEventStream.ts → eventStream.ts} +3 -3
- package/src/composables/experiment-utils.ts +1 -39
- package/src/composables/formBuilderRegistry.ts +6 -12
- package/src/composables/index.ts +17 -480
- package/src/composables/platformContextHelpers.ts +0 -57
- package/src/composables/pluginEndpointBuilder.ts +8 -10
- package/src/composables/pluginIdentity.ts +31 -0
- package/src/composables/pluginWorkspaceModel.ts +16 -107
- package/src/composables/useApi.ts +18 -30
- package/src/composables/useAppExperiment.ts +26 -5
- package/src/composables/{useAnalysisArtifacts.ts → useArtifacts.ts} +18 -19
- package/src/composables/useCalendarGrid.ts +4 -3
- package/src/composables/useControlSchema.ts +5 -9
- package/src/composables/useControlWorkspace.ts +4 -7
- package/src/composables/useExperiment.ts +49 -0
- package/src/composables/useExperimentData.ts +4 -4
- package/src/composables/useExperimentSelector.ts +82 -36
- package/src/composables/useFileBrowser.ts +5 -13
- package/src/composables/useFilePicker.ts +2 -2
- package/src/composables/useFormBuilder.ts +3 -4
- package/src/composables/useJobCenter.ts +324 -0
- package/src/composables/{useGeneratedAnalysis.ts → useJobsEndpoint.ts} +53 -67
- package/src/composables/useMenuKeyboard.ts +1 -1
- package/src/composables/usePlatform.ts +95 -0
- package/src/composables/usePlatformFilePickerAdapter.ts +2 -1
- package/src/composables/usePluginWorkspace.ts +62 -107
- package/src/composables/usePresence.ts +110 -0
- package/src/composables/useRackEditor.ts +3 -3
- package/src/composables/useRealtime.ts +194 -0
- package/src/composables/{useRequestSyncState.ts → useRequest.ts} +25 -48
- package/src/composables/useScheduleCalendarLayout.ts +1 -1
- package/src/composables/useToast.ts +14 -11
- package/src/composables/useVersionedSave.ts +165 -0
- package/src/data.ts +130 -0
- package/src/deprecatedRootExports.ts +226 -0
- package/src/generated/schema.ts +1 -0
- package/src/host.ts +27 -0
- package/src/index.ts +2 -71
- package/src/install.ts +15 -2
- package/src/instrument.ts +1 -6
- package/src/lab.ts +128 -0
- package/src/permissions.ts +0 -27
- package/src/runtime.ts +145 -0
- package/src/shell.ts +103 -0
- package/src/stores/auth.ts +26 -162
- package/src/stores/experiment.ts +27 -1
- package/src/styles/components/action-menu.css +0 -5
- package/src/styles/components/adduct-text.css +13 -5
- package/src/styles/components/alert-box.css +39 -40
- package/src/styles/components/app-layout.css +6 -5
- package/src/styles/components/app-page-selector.css +3 -1
- package/src/styles/components/app-pill-nav.css +11 -12
- package/src/styles/components/app-sidebar.css +9 -18
- package/src/styles/components/app-top-bar.css +64 -103
- package/src/styles/components/artifact-save-dialog.css +153 -2
- package/src/styles/components/audit-trail.css +16 -19
- package/src/styles/components/avatar.css +6 -4
- package/src/styles/components/batch-progress-list.css +38 -36
- package/src/styles/components/button.css +40 -59
- package/src/styles/components/calendar.css +12 -12
- package/src/styles/components/chart-container.css +34 -23
- package/src/styles/components/checkbox.css +3 -13
- package/src/styles/components/collapsible-card.css +28 -30
- package/src/styles/components/confirm-dialog.css +31 -16
- package/src/styles/components/dataframe.css +12 -4
- package/src/styles/components/date-picker.css +80 -92
- package/src/styles/components/datetime-picker.css +31 -43
- package/src/styles/components/divider.css +20 -20
- package/src/styles/components/dose-calculator.css +3 -3
- package/src/styles/components/empty-state.css +23 -18
- package/src/styles/components/experiment-code-badge.css +2 -0
- package/src/styles/components/experiment-popover.css +174 -329
- package/src/styles/components/experiment-selector-modal.css +75 -56
- package/src/styles/components/file-picker.css +4 -4
- package/src/styles/components/file-uploader.css +38 -49
- package/src/styles/components/form-builder.css +3 -3
- package/src/styles/components/formula-input.css +1 -1
- package/src/styles/components/icon-button.css +19 -25
- package/src/styles/components/input.css +5 -4
- package/src/styles/components/instrument-monitor.css +13 -15
- package/src/styles/components/jobs-status-tray.css +31 -25
- package/src/styles/components/loading-spinner.css +9 -12
- package/src/styles/components/modal.css +2 -4
- package/src/styles/components/molecule-input.css +2 -2
- package/src/styles/components/multi-select.css +65 -112
- package/src/styles/components/number-input.css +26 -19
- package/src/styles/components/pill.css +43 -37
- package/src/styles/components/plate-editor.css +0 -1
- package/src/styles/components/plugin-icon.css +34 -22
- package/src/styles/components/popover.css +2 -2
- package/src/styles/components/presence-avatars.css +194 -0
- package/src/styles/components/progress-bar.css +2 -0
- package/src/styles/components/protocol-step-editor.css +1 -3
- package/src/styles/components/resource-card.css +2 -2
- package/src/styles/components/resource-picker-list.css +6 -57
- package/src/styles/components/sample-hierarchy-tree.css +4 -4
- package/src/styles/components/sample-selector.css +95 -79
- package/src/styles/components/schedule-calendar.css +8 -8
- package/src/styles/components/searchable-select.css +15 -12
- package/src/styles/components/section-card.css +28 -47
- package/src/styles/components/segmented-control.css +18 -15
- package/src/styles/components/select.css +3 -3
- package/src/styles/components/sequence-input.css +2 -2
- package/src/styles/components/sequence-progress-bar.css +17 -8
- package/src/styles/components/smart-group.css +19 -24
- package/src/styles/components/step-wizard.css +52 -16
- package/src/styles/components/tabs.css +2 -2
- package/src/styles/components/textarea.css +4 -4
- package/src/styles/components/time-picker.css +36 -21
- package/src/styles/components/toast.css +12 -10
- package/src/styles/components/toggle.css +3 -13
- package/src/styles/components/tooltip.css +10 -9
- package/src/styles/components/unit-input.css +8 -7
- package/src/styles/components/version-conflict.css +122 -0
- package/src/styles/components/well-plate.css +8 -8
- package/src/styles/index.css +2 -11
- package/src/styles/variables.css +107 -602
- package/src/types/analysisArtifactTypes.ts +1 -1
- package/src/types/auth.ts +0 -10
- package/src/types/componentLabTypes.ts +103 -53
- package/src/types/componentWorkflowTypes.ts +4 -33
- package/src/types/components.ts +148 -114
- package/src/types/form-builder.ts +4 -0
- package/src/types/generated/platformContext.ts +60 -0
- package/src/types/generated-ui.ts +6 -2
- package/src/types/index.ts +15 -53
- package/src/types/instrument.ts +27 -0
- package/src/types/platform.ts +25 -89
- package/src/utils/color.ts +1 -12
- package/src/utils/dose.ts +335 -0
- package/src/utils/experimentStatus.ts +43 -0
- package/src/utils/formula.ts +292 -0
- package/src/utils/integrationHost.ts +27 -0
- package/src/utils/plotlyTemplate.ts +6 -0
- package/src/utils/pluginSecrets.ts +23 -23
- package/src/utils/presenceAvatars.ts +53 -0
- package/src/utils/records.ts +0 -5
- package/src/{composables/useTimeUtils.ts → utils/time.ts} +21 -21
- package/dist/ResourcePickerListInternal-CFAw4vTZ.js +0 -605
- package/dist/ResourcePickerListInternal-CFAw4vTZ.js.map +0 -1
- package/dist/__tests__/composables/useBioTemplatePackWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useBioTemplatePresetWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useBioTemplateWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useChemicalFormula.test.d.ts +0 -1
- package/dist/__tests__/composables/useEventStream.test.d.ts +0 -1
- package/dist/__tests__/composables/useExperimentSave.test.d.ts +0 -1
- package/dist/__tests__/composables/useGeneratedAnalysis.test.d.ts +0 -1
- package/dist/__tests__/composables/useGroupAssignment.test.d.ts +0 -1
- package/dist/__tests__/composables/useJobsStatusTray.test.d.ts +0 -1
- package/dist/__tests__/composables/useMobileSupportGate.test.d.ts +0 -1
- package/dist/__tests__/composables/usePlatformContext.test.d.ts +0 -1
- package/dist/__tests__/composables/usePluginClient.test.d.ts +0 -1
- package/dist/__tests__/composables/usePresenceHeartbeat.test.d.ts +0 -1
- package/dist/__tests__/composables/useRequestSyncState.test.d.ts +0 -1
- package/dist/__tests__/composables/useRuntimeAlignment.test.d.ts +0 -1
- package/dist/__tests__/composables/useTemplateCollection.test.d.ts +0 -1
- package/dist/__tests__/composables/useTimeUtils.test.d.ts +0 -1
- package/dist/__tests__/docs/extractDocsTemplates.test.d.ts +0 -1
- package/dist/__tests__/templates/templates.test.d.ts +0 -1
- package/dist/__tests__/templates/templatesDeprecation.test.d.ts +0 -1
- package/dist/__tests__/utils/lcms.test.d.ts +0 -1
- package/dist/__tests__/utils/rack.test.d.ts +0 -1
- package/dist/components/AppAvatarMenu.vue.d.ts +0 -47
- package/dist/components/AppTopBar.navigation.d.ts +0 -10
- package/dist/components/BaseTextarea.vue.d.ts +0 -31
- package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +0 -112
- package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +0 -86
- package/dist/components/BioTemplatePresetWorkspaceView.vue.d.ts +0 -80
- package/dist/components/BioTemplateRenderer.vue.d.ts +0 -30
- package/dist/components/ControlWorkspaceView.vue.d.ts +0 -138
- package/dist/components/DoseDesignWorkspaceView.vue.d.ts +0 -140
- package/dist/components/ExperimentDataViewer.vue.d.ts +0 -54
- package/dist/components/ExperimentTimeline.vue.d.ts +0 -70
- package/dist/components/FitPanel.vue.d.ts +0 -56
- package/dist/components/GroupAssigner.vue.d.ts +0 -26
- package/dist/components/IconButton.vue.d.ts +0 -30
- package/dist/components/MobileSupportGate.vue.d.ts +0 -32
- package/dist/components/ReagentEditor.vue.d.ts +0 -31
- package/dist/components/ReagentList.presentation.d.ts +0 -17
- package/dist/components/ReagentList.vue.d.ts +0 -58
- package/dist/components/SampleLegend.vue.d.ts +0 -33
- package/dist/components/SmartGroupModal.vue.d.ts +0 -29
- package/dist/components/index.js +0 -5
- package/dist/components-BOA5e7kb.js +0 -23137
- package/dist/components-BOA5e7kb.js.map +0 -1
- package/dist/composables/flattenWorkspaceBindings.d.ts +0 -61
- package/dist/composables/index.js +0 -7
- package/dist/composables/useBioTemplateComponents.d.ts +0 -34
- package/dist/composables/useBioTemplateControls.d.ts +0 -10
- package/dist/composables/useBioTemplatePackWorkspace.d.ts +0 -56
- package/dist/composables/useBioTemplatePresetWorkspace.d.ts +0 -79
- package/dist/composables/useBioTemplateWorkspace.d.ts +0 -39
- package/dist/composables/useExperimentSave.d.ts +0 -69
- package/dist/composables/useGroupAssignment.d.ts +0 -35
- package/dist/composables/useJobsStatusTray.d.ts +0 -87
- package/dist/composables/useMobileSupportGate.d.ts +0 -14
- package/dist/composables/usePlatformContext.d.ts +0 -218
- package/dist/composables/usePresenceHeartbeat.d.ts +0 -49
- package/dist/composables/useRuntimeAlignment.d.ts +0 -44
- package/dist/composables/useTemplateCollection.d.ts +0 -62
- package/dist/composables/workspaceRecipes.d.ts +0 -189
- package/dist/composables-izSQH8Ky.js +0 -591
- package/dist/composables-izSQH8Ky.js.map +0 -1
- package/dist/experiment-D49y_Kro.js +0 -459
- package/dist/experiment-D49y_Kro.js.map +0 -1
- package/dist/experiment-utils-DTANyVKV.js.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/lcms.d.ts +0 -38
- package/dist/settings-BG6v13Zq.js +0 -341
- package/dist/settings-BG6v13Zq.js.map +0 -1
- package/dist/tailwind.preset.d.ts +0 -63
- package/dist/tailwind.preset.js +0 -71
- package/dist/tailwind.preset.js.map +0 -1
- package/dist/templates/adapters.d.ts +0 -19
- package/dist/templates/assayLookups.d.ts +0 -3
- package/dist/templates/assayMatrixAdapters.d.ts +0 -13
- package/dist/templates/assayMatrixBuilder.d.ts +0 -3
- package/dist/templates/assayNormalizers.d.ts +0 -4
- package/dist/templates/builderIdUtils.d.ts +0 -4
- package/dist/templates/builderPresetControls.d.ts +0 -11
- package/dist/templates/builderReadUtils.d.ts +0 -8
- package/dist/templates/builders.d.ts +0 -26
- package/dist/templates/calibrationCurveAdapters.d.ts +0 -7
- package/dist/templates/calibrationCurveBuilder.d.ts +0 -3
- package/dist/templates/calibrationNormalizers.d.ts +0 -5
- package/dist/templates/catalog.d.ts +0 -192
- package/dist/templates/componentBindingCatalog.d.ts +0 -25
- package/dist/templates/componentBindingHelpers.d.ts +0 -17
- package/dist/templates/componentBindings.d.ts +0 -97
- package/dist/templates/componentDoseResponseProps.d.ts +0 -3
- package/dist/templates/componentGenericProps.d.ts +0 -8
- package/dist/templates/componentPlateHelpers.d.ts +0 -11
- package/dist/templates/componentPlateMapProps.d.ts +0 -3
- package/dist/templates/componentPropsFactory.d.ts +0 -3
- package/dist/templates/componentQpcrPlateProps.d.ts +0 -3
- package/dist/templates/componentTargetResolvers.d.ts +0 -5
- package/dist/templates/componentTemplateProps.d.ts +0 -3
- package/dist/templates/controlSchemaClone.d.ts +0 -4
- package/dist/templates/controlSchemaConstants.d.ts +0 -10
- package/dist/templates/controlSchemaMerge.d.ts +0 -3
- package/dist/templates/controlSchemaTargets.d.ts +0 -17
- package/dist/templates/controlSchemaTypes.d.ts +0 -4
- package/dist/templates/controlSchemas.d.ts +0 -34
- package/dist/templates/defaultBioTemplateBuilder.d.ts +0 -3
- package/dist/templates/doseResponseAdapters.d.ts +0 -6
- package/dist/templates/doseResponseBuilder.d.ts +0 -3
- package/dist/templates/elisaAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates/flowCytometryAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates/flowCytometryPanelBuilder.d.ts +0 -3
- package/dist/templates/flowNormalizers.d.ts +0 -8
- package/dist/templates/flowPanelAdapters.d.ts +0 -7
- package/dist/templates/index.d.ts +0 -15
- package/dist/templates/index.js +0 -2
- package/dist/templates/instrumentRunAdapterHelpers.d.ts +0 -8
- package/dist/templates/instrumentRunAdapters.d.ts +0 -19
- package/dist/templates/instrumentRunBuilder.d.ts +0 -3
- package/dist/templates/lcmsBatchCollectionBuilder.d.ts +0 -3
- package/dist/templates/lookup.d.ts +0 -4
- package/dist/templates/packs.d.ts +0 -21
- package/dist/templates/plateMapAdapters.d.ts +0 -5
- package/dist/templates/plateMapBuilder.d.ts +0 -3
- package/dist/templates/presetControlSchemas.d.ts +0 -534
- package/dist/templates/presets.d.ts +0 -106
- package/dist/templates/protocolAdapters.d.ts +0 -9
- package/dist/templates/protocolNormalizers.d.ts +0 -6
- package/dist/templates/protocolStepsBuilder.d.ts +0 -3
- package/dist/templates/qpcrAdapters.d.ts +0 -9
- package/dist/templates/qpcrExpressionCollectionBuilder.d.ts +0 -3
- package/dist/templates/qpcrPlateBuilder.d.ts +0 -3
- package/dist/templates/reagentAdapters.d.ts +0 -9
- package/dist/templates/reagentListBuilder.d.ts +0 -3
- package/dist/templates/runNormalizers.d.ts +0 -10
- package/dist/templates/sampleNormalizers.d.ts +0 -4
- package/dist/templates/samplePrepAdapters.d.ts +0 -7
- package/dist/templates/samplePrepBuilder.d.ts +0 -3
- package/dist/templates/sampleSheetAdapters.d.ts +0 -9
- package/dist/templates/sampleSheetBuilder.d.ts +0 -3
- package/dist/templates/targetedMetabolomicsCollectionBuilder.d.ts +0 -3
- package/dist/templates/targetedMetabolomicsHelpers.d.ts +0 -5
- package/dist/templates/templateAdapterTypes.d.ts +0 -48
- package/dist/templates/templateControlSchemas.d.ts +0 -400
- package/dist/templates/templateCreateOptions.d.ts +0 -165
- package/dist/templates/templateEnvelopes.d.ts +0 -17
- package/dist/templates/templatePackCollectionBuilder.d.ts +0 -3
- package/dist/templates/templatePresetCollectionBuilder.d.ts +0 -20
- package/dist/templates/templateQpcrTypes.d.ts +0 -42
- package/dist/templates/templateValidators.d.ts +0 -25
- package/dist/templates/timeCourseAdapters.d.ts +0 -9
- package/dist/templates/timeCourseBuilder.d.ts +0 -3
- package/dist/templates/types.d.ts +0 -304
- package/dist/templates/wellPlateScreenCollectionBuilder.d.ts +0 -3
- package/dist/templates/westernBlotAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates-B2DB0MCM.js +0 -12304
- package/dist/templates-B2DB0MCM.js.map +0 -1
- package/dist/utils/rack.d.ts +0 -63
- package/dist/validation-C_eH_vIg.js +0 -7999
- package/dist/validation-C_eH_vIg.js.map +0 -1
- package/src/__tests__/components/AppAvatarMenu.test.ts +0 -186
- package/src/__tests__/components/AppTopBar.navigation.test.ts +0 -68
- package/src/__tests__/components/AppTopBarPresence.test.ts +0 -47
- package/src/__tests__/components/BioTemplateExperimentWorkspaceView.test.ts +0 -159
- package/src/__tests__/components/BioTemplatePackWorkspaceView.test.ts +0 -192
- package/src/__tests__/components/BioTemplatePresetWorkspaceView.test.ts +0 -307
- package/src/__tests__/components/BioTemplateRenderer.test.ts +0 -96
- package/src/__tests__/components/ControlWorkspaceView.test.ts +0 -1100
- package/src/__tests__/components/DoseDesignWorkspaceView.test.ts +0 -183
- package/src/__tests__/components/ExperimentTimeline.test.ts +0 -108
- package/src/__tests__/components/FitPanel.test.ts +0 -96
- package/src/__tests__/components/GroupAssigner.test.ts +0 -101
- package/src/__tests__/components/MobileSupportGate.test.ts +0 -120
- package/src/__tests__/components/MultiSelect.test.ts +0 -54
- package/src/__tests__/components/ReagentList.presentation.test.ts +0 -73
- package/src/__tests__/components/ReagentList.test.ts +0 -167
- package/src/__tests__/components/SampleLegend.test.ts +0 -18
- package/src/__tests__/components/SmartGroupModal.test.ts +0 -69
- package/src/__tests__/components/WellPlate.sampleTypeIndicator.test.ts +0 -58
- package/src/__tests__/components/iconButtonIconSizing.test.ts +0 -18
- package/src/__tests__/composables/useBioTemplatePackWorkspace.test.ts +0 -125
- package/src/__tests__/composables/useBioTemplatePresetWorkspace.test.ts +0 -199
- package/src/__tests__/composables/useBioTemplateWorkspace.test.ts +0 -104
- package/src/__tests__/composables/useExperimentSave.test.ts +0 -542
- package/src/__tests__/composables/useGroupAssignment.test.ts +0 -73
- package/src/__tests__/composables/useMobileSupportGate.test.ts +0 -74
- package/src/__tests__/composables/usePlatformContext.test.ts +0 -148
- package/src/__tests__/composables/usePresenceHeartbeat.test.ts +0 -164
- package/src/__tests__/composables/useRuntimeAlignment.test.ts +0 -145
- package/src/__tests__/composables/useTemplateCollection.test.ts +0 -147
- package/src/__tests__/docs/extractDocsTemplates.test.ts +0 -53
- package/src/__tests__/fixtures/templates/dose-response.json +0 -81
- package/src/__tests__/fixtures/templates/plate-map.json +0 -54
- package/src/__tests__/fixtures/templates/qpcr-plate.json +0 -96
- package/src/__tests__/fixtures/templates/sample-sheet.json +0 -71
- package/src/__tests__/templates/templates.test.ts +0 -1235
- package/src/__tests__/templates/templatesDeprecation.test.ts +0 -78
- package/src/__tests__/utils/lcms.test.ts +0 -73
- package/src/__tests__/utils/rack.test.ts +0 -120
- package/src/components/AppAvatarMenu.story.vue +0 -155
- package/src/components/AppAvatarMenu.vue +0 -154
- package/src/components/AppTopBar.navigation.ts +0 -60
- package/src/components/AutoGroupModal.story.vue +0 -458
- package/src/components/BaseTextarea.vue +0 -58
- package/src/components/BioTemplateExperimentWorkspaceView.story.vue +0 -123
- package/src/components/BioTemplateExperimentWorkspaceView.vue +0 -339
- package/src/components/BioTemplatePackWorkspaceView.story.vue +0 -107
- package/src/components/BioTemplatePackWorkspaceView.vue +0 -180
- package/src/components/BioTemplatePresetWorkspaceView.story.vue +0 -163
- package/src/components/BioTemplatePresetWorkspaceView.vue +0 -403
- package/src/components/BioTemplateRenderer.story.vue +0 -57
- package/src/components/BioTemplateRenderer.vue +0 -64
- package/src/components/ControlWorkspaceView.story.vue +0 -347
- package/src/components/ControlWorkspaceView.vue +0 -370
- package/src/components/DoseDesignWorkspaceView.story.vue +0 -77
- package/src/components/DoseDesignWorkspaceView.vue +0 -243
- package/src/components/ExperimentDataViewer.story.vue +0 -177
- package/src/components/ExperimentDataViewer.vue +0 -313
- package/src/components/ExperimentTimeline.story.vue +0 -208
- package/src/components/ExperimentTimeline.vue +0 -383
- package/src/components/FitPanel.story.vue +0 -191
- package/src/components/FitPanel.vue +0 -168
- package/src/components/FormActions.story.vue +0 -96
- package/src/components/GroupAssigner.story.vue +0 -83
- package/src/components/GroupAssigner.vue +0 -319
- package/src/components/IconButton.story.vue +0 -140
- package/src/components/IconButton.vue +0 -69
- package/src/components/MobileSupportGate.story.vue +0 -52
- package/src/components/MobileSupportGate.vue +0 -111
- package/src/components/MultiSelect.vue +0 -119
- package/src/components/ReagentEditor.story.vue +0 -153
- package/src/components/ReagentEditor.vue +0 -414
- package/src/components/ReagentList.presentation.ts +0 -106
- package/src/components/ReagentList.story.vue +0 -155
- package/src/components/ReagentList.vue +0 -438
- package/src/components/SampleLegend.story.vue +0 -91
- package/src/components/SampleLegend.vue +0 -121
- package/src/components/SmartGroupModal.story.vue +0 -61
- package/src/components/SmartGroupModal.vue +0 -61
- package/src/components/StatusIndicator.story.vue +0 -99
- package/src/components/StatusIndicator.vue +0 -36
- package/src/components/UnitInput.story.vue +0 -194
- package/src/composables/flattenWorkspaceBindings.ts +0 -104
- package/src/composables/useBioTemplateComponents.ts +0 -117
- package/src/composables/useBioTemplateControls.ts +0 -45
- package/src/composables/useBioTemplatePackWorkspace.ts +0 -201
- package/src/composables/useBioTemplatePresetWorkspace.ts +0 -329
- package/src/composables/useBioTemplateWorkspace.ts +0 -120
- package/src/composables/useChemicalFormula.ts +0 -301
- package/src/composables/useDoseCalculator.ts +0 -370
- package/src/composables/useExperimentSave.ts +0 -348
- package/src/composables/useGroupAssignment.ts +0 -152
- package/src/composables/useJobsStatusTray.ts +0 -493
- package/src/composables/useMobileSupportGate.ts +0 -80
- package/src/composables/usePlatformContext.ts +0 -299
- package/src/composables/usePresenceHeartbeat.ts +0 -201
- package/src/composables/useRuntimeAlignment.ts +0 -184
- package/src/composables/useTemplateCollection.ts +0 -233
- package/src/composables/workspaceRecipes.ts +0 -268
- package/src/lcms.ts +0 -119
- package/src/styles/components/app-avatar-menu.css +0 -121
- package/src/styles/components/experiment-data-viewer.css +0 -138
- package/src/styles/components/experiment-timeline.css +0 -572
- package/src/styles/components/fit-panel.css +0 -153
- package/src/styles/components/group-assigner.css +0 -198
- package/src/styles/components/mobile-support-gate.css +0 -117
- package/src/styles/components/reagent-editor.css +0 -501
- package/src/styles/components/reagent-list.css +0 -408
- package/src/styles/components/sample-legend.css +0 -212
- package/src/styles/components/status-indicator.css +0 -66
- package/src/styles/components/theme-toggle.css +0 -6
- package/src/tailwind.preset.ts +0 -66
- package/src/templates/adapters.ts +0 -141
- package/src/templates/assayLookups.ts +0 -33
- package/src/templates/assayMatrixAdapters.ts +0 -85
- package/src/templates/assayMatrixBuilder.ts +0 -60
- package/src/templates/assayNormalizers.ts +0 -34
- package/src/templates/builderIdUtils.ts +0 -20
- package/src/templates/builderPresetControls.ts +0 -166
- package/src/templates/builderReadUtils.ts +0 -55
- package/src/templates/builders.ts +0 -122
- package/src/templates/calibrationCurveAdapters.ts +0 -62
- package/src/templates/calibrationCurveBuilder.ts +0 -100
- package/src/templates/calibrationNormalizers.ts +0 -60
- package/src/templates/catalog.ts +0 -249
- package/src/templates/componentBindingCatalog.ts +0 -90
- package/src/templates/componentBindingHelpers.ts +0 -93
- package/src/templates/componentBindings.ts +0 -279
- package/src/templates/componentDoseResponseProps.ts +0 -41
- package/src/templates/componentGenericProps.ts +0 -77
- package/src/templates/componentPlateHelpers.ts +0 -52
- package/src/templates/componentPlateMapProps.ts +0 -34
- package/src/templates/componentPropsFactory.ts +0 -21
- package/src/templates/componentQpcrPlateProps.ts +0 -27
- package/src/templates/componentTargetResolvers.ts +0 -67
- package/src/templates/componentTemplateProps.ts +0 -78
- package/src/templates/controlSchemaClone.ts +0 -32
- package/src/templates/controlSchemaConstants.ts +0 -11
- package/src/templates/controlSchemaMerge.ts +0 -40
- package/src/templates/controlSchemaTargets.ts +0 -85
- package/src/templates/controlSchemaTypes.ts +0 -20
- package/src/templates/controlSchemas.ts +0 -113
- package/src/templates/defaultBioTemplateBuilder.ts +0 -125
- package/src/templates/doseResponseAdapters.ts +0 -36
- package/src/templates/doseResponseBuilder.ts +0 -45
- package/src/templates/elisaAssayCollectionBuilder.ts +0 -63
- package/src/templates/flowCytometryAssayCollectionBuilder.ts +0 -42
- package/src/templates/flowCytometryPanelBuilder.ts +0 -54
- package/src/templates/flowNormalizers.ts +0 -58
- package/src/templates/flowPanelAdapters.ts +0 -61
- package/src/templates/index.ts +0 -330
- package/src/templates/instrumentRunAdapterHelpers.ts +0 -94
- package/src/templates/instrumentRunAdapters.ts +0 -174
- package/src/templates/instrumentRunBuilder.ts +0 -98
- package/src/templates/lcmsBatchCollectionBuilder.ts +0 -39
- package/src/templates/lookup.ts +0 -18
- package/src/templates/packs.ts +0 -166
- package/src/templates/plateMapAdapters.ts +0 -38
- package/src/templates/plateMapBuilder.ts +0 -44
- package/src/templates/presetControlSchemas.ts +0 -258
- package/src/templates/presets.ts +0 -183
- package/src/templates/protocolAdapters.ts +0 -73
- package/src/templates/protocolNormalizers.ts +0 -37
- package/src/templates/protocolStepsBuilder.ts +0 -37
- package/src/templates/qpcrAdapters.ts +0 -108
- package/src/templates/qpcrExpressionCollectionBuilder.ts +0 -34
- package/src/templates/qpcrPlateBuilder.ts +0 -97
- package/src/templates/reagentAdapters.ts +0 -81
- package/src/templates/reagentListBuilder.ts +0 -31
- package/src/templates/runNormalizers.ts +0 -63
- package/src/templates/sampleNormalizers.ts +0 -58
- package/src/templates/samplePrepAdapters.ts +0 -66
- package/src/templates/samplePrepBuilder.ts +0 -52
- package/src/templates/sampleSheetAdapters.ts +0 -79
- package/src/templates/sampleSheetBuilder.ts +0 -24
- package/src/templates/targetedMetabolomicsCollectionBuilder.ts +0 -80
- package/src/templates/targetedMetabolomicsHelpers.ts +0 -102
- package/src/templates/templateAdapterTypes.ts +0 -58
- package/src/templates/templateControlSchemas.ts +0 -320
- package/src/templates/templateCreateOptions.ts +0 -208
- package/src/templates/templateEnvelopes.ts +0 -145
- package/src/templates/templatePackCollectionBuilder.ts +0 -24
- package/src/templates/templatePresetCollectionBuilder.ts +0 -141
- package/src/templates/templateQpcrTypes.ts +0 -48
- package/src/templates/templateValidators.ts +0 -426
- package/src/templates/timeCourseAdapters.ts +0 -77
- package/src/templates/timeCourseBuilder.ts +0 -65
- package/src/templates/types.ts +0 -493
- package/src/templates/wellPlateScreenCollectionBuilder.ts +0 -37
- package/src/templates/westernBlotAssayCollectionBuilder.ts +0 -69
- package/src/utils/rack.ts +0 -225
- /package/dist/__tests__/components/{AppAvatarMenu.test.d.ts → BaseButton.test.d.ts} +0 -0
- /package/dist/__tests__/components/{AppTopBar.navigation.test.d.ts → BaseCheckbox.switch.test.d.ts} +0 -0
- /package/dist/__tests__/components/{AppTopBarPresence.test.d.ts → BaseSelect.multiple.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BaseToggle.test.d.ts → BaseSelect.searchable.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplateExperimentWorkspaceView.test.d.ts → ConfirmDialog.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplatePackWorkspaceView.test.d.ts → DatePicker.datetime.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplatePresetWorkspaceView.test.d.ts → DatePicker.time.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplateRenderer.test.d.ts → FormSchemaInternal.test.d.ts} +0 -0
- /package/dist/__tests__/components/{ControlWorkspaceView.test.d.ts → InstrumentStatusPanels.test.d.ts} +0 -0
- /package/dist/__tests__/components/{DateTimePicker.test.d.ts → NumberInput.units.test.d.ts} +0 -0
- /package/dist/__tests__/components/{DoseDesignWorkspaceView.test.d.ts → PresenceAvatars.test.d.ts} +0 -0
- /package/dist/__tests__/components/{ExperimentTimeline.test.d.ts → StaleFormBanner.test.d.ts} +0 -0
- /package/dist/__tests__/components/{FitPanel.test.d.ts → deprecationTags.test.d.ts} +0 -0
- /package/dist/__tests__/{components/GroupAssigner.test.d.ts → composables/createClient.test.d.ts} +0 -0
- /package/dist/__tests__/{components/MobileSupportGate.test.d.ts → composables/eventStream.test.d.ts} +0 -0
- /package/dist/__tests__/{components/MultiSelect.test.d.ts → composables/useArtifacts.test.d.ts} +0 -0
- /package/dist/__tests__/{components/ReagentList.presentation.test.d.ts → composables/useExperiment.test.d.ts} +0 -0
- /package/dist/__tests__/{components/ReagentList.test.d.ts → composables/useJobCenter.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SampleLegend.test.d.ts → composables/useJobsEndpoint.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SearchableSelect.test.d.ts → composables/usePlatform.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SmartGroupModal.test.d.ts → composables/usePresence.test.d.ts} +0 -0
- /package/dist/__tests__/{components/TimePicker.test.d.ts → composables/useRealtime.test.d.ts} +0 -0
- /package/dist/__tests__/{components/UnitInput.test.d.ts → composables/useRequest.test.d.ts} +0 -0
- /package/dist/__tests__/{components/WellPlate.sampleTypeIndicator.test.d.ts → composables/useVersionedSave.test.d.ts} +0 -0
- /package/dist/__tests__/{components/iconButtonIconSizing.test.d.ts → utils/formula.test.d.ts} +0 -0
- /package/dist/__tests__/{composables/useAnalysisArtifacts.test.d.ts → utils/time.test.d.ts} +0 -0
- /package/dist/components/{FormActions.vue.d.ts → internal/FormActionsInternal.vue.d.ts} +0 -0
- /package/dist/{composables → components/internal}/autoGroup/colors.d.ts +0 -0
- /package/dist/{composables → components/internal}/autoGroup/index.d.ts +0 -0
- /package/dist/{composables → components/internal}/autoGroup/tokenize.d.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/colors.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/tokenize.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/vocab.json +0 -0
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
onMounted,
|
|
4
4
|
ref,
|
|
5
5
|
shallowRef,
|
|
6
|
-
watch,
|
|
7
6
|
type ComputedRef,
|
|
8
7
|
type Ref,
|
|
9
8
|
} from 'vue'
|
|
@@ -12,37 +11,31 @@ import {
|
|
|
12
11
|
authenticationRequiredError,
|
|
13
12
|
useApi,
|
|
14
13
|
} from './useApi'
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
14
|
+
import { usePlatform } from './usePlatform'
|
|
15
|
+
import { useRequest } from './useRequest'
|
|
17
16
|
import { useAuthStore } from '../stores/auth'
|
|
18
|
-
import
|
|
17
|
+
import * as pluginSecret from '../utils/pluginSecrets'
|
|
18
|
+
import { getInjectedPlatformContext } from './platformContextHelpers'
|
|
19
19
|
import {
|
|
20
|
-
|
|
21
|
-
getInjectedPlatformContext,
|
|
22
|
-
resolveCurrentExperimentId,
|
|
23
|
-
} from './platformContextHelpers'
|
|
24
|
-
import {
|
|
25
|
-
buildPluginEndpointUrl,
|
|
20
|
+
buildEndpointUrl,
|
|
26
21
|
hasKeys,
|
|
27
22
|
pluginEndpointRequestParts,
|
|
28
23
|
requestBodyFromPayload,
|
|
29
24
|
} from './pluginEndpointBuilder'
|
|
30
25
|
import {
|
|
31
|
-
|
|
26
|
+
createEventStream,
|
|
32
27
|
type EventStreamMessage,
|
|
33
28
|
type EventStreamTransport,
|
|
34
29
|
type UseEventStreamReturn,
|
|
35
|
-
} from './
|
|
30
|
+
} from './eventStream'
|
|
36
31
|
import type {
|
|
37
|
-
ExperimentSummary,
|
|
38
32
|
GeneratedJobDefinition,
|
|
39
|
-
PageSelectorItem,
|
|
40
33
|
SettingsModalSchema,
|
|
41
34
|
TopBarSettingsConfig,
|
|
42
35
|
} from '../types'
|
|
43
36
|
|
|
44
37
|
export {
|
|
45
|
-
|
|
38
|
+
buildEndpointUrl,
|
|
46
39
|
resolvePluginBaseUrl,
|
|
47
40
|
} from './pluginEndpointBuilder'
|
|
48
41
|
|
|
@@ -77,7 +70,7 @@ export interface PluginNavItemContract {
|
|
|
77
70
|
icon?: string
|
|
78
71
|
description?: string
|
|
79
72
|
requiresAuth?: boolean
|
|
80
|
-
|
|
73
|
+
access?: 'use' | 'configure' | 'admin'
|
|
81
74
|
requiresFeature?: string
|
|
82
75
|
}
|
|
83
76
|
|
|
@@ -93,6 +86,8 @@ export interface PluginContract {
|
|
|
93
86
|
schemaVersion: 2
|
|
94
87
|
plugin: {
|
|
95
88
|
name?: string
|
|
89
|
+
displayName?: string
|
|
90
|
+
subtitle?: string
|
|
96
91
|
packageName?: string
|
|
97
92
|
version?: string
|
|
98
93
|
description?: string
|
|
@@ -134,12 +129,12 @@ export type PluginEndpointParamDefinition = string | {
|
|
|
134
129
|
required?: boolean
|
|
135
130
|
}
|
|
136
131
|
|
|
137
|
-
export interface
|
|
132
|
+
export interface CreateClientOptions {
|
|
138
133
|
endpoints: Record<string, PluginEndpointDefinition>
|
|
139
134
|
baseUrl?: string
|
|
140
135
|
}
|
|
141
136
|
|
|
142
|
-
export interface
|
|
137
|
+
export interface BuildEndpointUrlOptions {
|
|
143
138
|
/** Override the generated or platform-injected API base URL. */
|
|
144
139
|
baseUrl?: string
|
|
145
140
|
/** Return only the endpoint path and query string instead of base URL + path. */
|
|
@@ -158,9 +153,11 @@ export interface PluginClientRequestOptions {
|
|
|
158
153
|
signal?: AbortSignal
|
|
159
154
|
}
|
|
160
155
|
|
|
161
|
-
export interface
|
|
156
|
+
export interface DownloadEndpointOptions extends PluginEndpointRequestOptions {
|
|
162
157
|
/** Browser download filename. When omitted, the blob is returned without triggering a download. */
|
|
163
158
|
filename?: string
|
|
159
|
+
/** Save the blob as `filename` in the browser. Default true; `false` only returns the blob. */
|
|
160
|
+
save?: boolean
|
|
164
161
|
/** Delay before revoking the object URL after a browser download is triggered. */
|
|
165
162
|
revokeObjectUrlDelayMs?: number
|
|
166
163
|
}
|
|
@@ -172,7 +169,7 @@ export interface DownloadBlobOptions {
|
|
|
172
169
|
|
|
173
170
|
export type PluginSettingsValues<TSettings> = Partial<TSettings> & Record<string, unknown>
|
|
174
171
|
|
|
175
|
-
export interface
|
|
172
|
+
export interface UseSettingsEndpointOptions {
|
|
176
173
|
/** Plugin name for platform persistence. Defaults to the integrated platform plugin name. */
|
|
177
174
|
pluginName?: string
|
|
178
175
|
/** Plugin API base URL for standalone/local settings routes. Generated clients pass pluginApiPrefix. */
|
|
@@ -189,7 +186,7 @@ export interface UsePluginSettingsOptions {
|
|
|
189
186
|
loadOnMount?: boolean
|
|
190
187
|
}
|
|
191
188
|
|
|
192
|
-
export interface
|
|
189
|
+
export interface UseSettingsEndpointReturn<TSettings = Record<string, unknown>> {
|
|
193
190
|
/** Current typed settings values. */
|
|
194
191
|
settings: ComputedRef<PluginSettingsValues<TSettings>>
|
|
195
192
|
/** Editable settings values for SettingsModal. */
|
|
@@ -210,9 +207,9 @@ export interface UsePluginSettingsReturn<TSettings = Record<string, unknown>> {
|
|
|
210
207
|
reset: () => void
|
|
211
208
|
}
|
|
212
209
|
|
|
213
|
-
export type
|
|
210
|
+
export type { EventStreamMessage, UseEventStreamReturn } from './eventStream'
|
|
214
211
|
|
|
215
|
-
export interface
|
|
212
|
+
export interface StreamOptions<TData = string> {
|
|
216
213
|
/** Override the generated or platform-injected API base URL. */
|
|
217
214
|
baseUrl?: string
|
|
218
215
|
/** Start the stream immediately. Defaults to true. */
|
|
@@ -228,12 +225,10 @@ export interface PluginEventStreamOptions<TData = string> {
|
|
|
228
225
|
/** Extra request headers. Authorization is injected unless already supplied. */
|
|
229
226
|
headers?: Record<string, string>
|
|
230
227
|
onOpen?: () => void
|
|
231
|
-
onMessage?: (message:
|
|
228
|
+
onMessage?: (message: EventStreamMessage<TData>) => void
|
|
232
229
|
onError?: (error: unknown) => void
|
|
233
230
|
}
|
|
234
231
|
|
|
235
|
-
export type UsePluginEventStreamReturn<TData = string> = UseEventStreamReturn<TData>
|
|
236
|
-
|
|
237
232
|
export type PluginFormDataValue =
|
|
238
233
|
| string
|
|
239
234
|
| number
|
|
@@ -245,32 +240,6 @@ export type PluginFormDataValue =
|
|
|
245
240
|
|
|
246
241
|
export type PluginFormDataPayload = Record<string, PluginFormDataValue | PluginFormDataValue[]>
|
|
247
242
|
|
|
248
|
-
export interface UseCurrentExperimentOptions {
|
|
249
|
-
apiBaseUrl?: string
|
|
250
|
-
immediate?: boolean
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
export interface UseCurrentExperimentReturn<TExperiment = ExperimentSummary> {
|
|
254
|
-
/** Current experiment id resolved from platform injection or URL conventions. */
|
|
255
|
-
experimentId: ComputedRef<number | undefined>
|
|
256
|
-
/** Whether a current experiment id is available. */
|
|
257
|
-
hasExperiment: ComputedRef<boolean>
|
|
258
|
-
/** Current experiment payload, if injected or successfully fetched. */
|
|
259
|
-
experiment: Ref<TExperiment | undefined>
|
|
260
|
-
/** Whether the current experiment is currently loading. */
|
|
261
|
-
isLoading: Ref<boolean>
|
|
262
|
-
/** Error message from the last failed current-experiment fetch, or null. */
|
|
263
|
-
error: Ref<string | null>
|
|
264
|
-
/** Timestamp of the last successful current-experiment fetch, or null. */
|
|
265
|
-
lastLoadedAt: Ref<Date | null>
|
|
266
|
-
/** Return the current experiment id or throw a clear SDK error when absent. */
|
|
267
|
-
requireExperimentId: () => number
|
|
268
|
-
/** Fetch a specific experiment id, defaulting to the current experiment id. */
|
|
269
|
-
fetch: (experimentId?: number) => Promise<TExperiment | undefined>
|
|
270
|
-
/** Refetch the currently resolved experiment id. */
|
|
271
|
-
refresh: () => Promise<TExperiment | undefined>
|
|
272
|
-
}
|
|
273
|
-
|
|
274
243
|
export type PluginEndpointCaller = (
|
|
275
244
|
payloadOrOptions?: unknown,
|
|
276
245
|
options?: PluginClientRequestOptions,
|
|
@@ -379,34 +348,10 @@ export function downloadBlob(blob: Blob, filename: string, options: DownloadBlob
|
|
|
379
348
|
setTimeout(() => URL.revokeObjectURL(blobUrl), options.revokeObjectUrlDelayMs ?? 100)
|
|
380
349
|
}
|
|
381
350
|
|
|
382
|
-
function normalizePluginNavPath(path: string): string {
|
|
383
|
-
const raw = path.trim() || '/'
|
|
384
|
-
const prefixed = raw.startsWith('/') ? raw : `/${raw}`
|
|
385
|
-
return prefixed.replace(/\/+$/, '') || '/'
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
function pluginPageIdFromPath(path: string, fallbackIndex: number): string {
|
|
389
|
-
const normalizedPath = normalizePluginNavPath(path)
|
|
390
|
-
if (normalizedPath === '/') return 'dashboard'
|
|
391
|
-
return normalizedPath.replace(/^\/+/, '').replace(/\/+/g, '-') || `page-${fallbackIndex + 1}`
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
/** Convert resolved @mint_plugin nav_items into page selectors for the topbar and homepage PluginCards. */
|
|
395
|
-
export function getPluginPageSelectorItems(contract: PluginContract): PageSelectorItem[] {
|
|
396
|
-
const pluginIcon = contract.plugin.icon ?? ''
|
|
397
|
-
const navItems = contract.plugin.navItems ?? []
|
|
398
|
-
return navItems.map((item, index) => ({
|
|
399
|
-
id: item.id || pluginPageIdFromPath(item.path, index),
|
|
400
|
-
label: item.label,
|
|
401
|
-
to: normalizePluginNavPath(item.path),
|
|
402
|
-
icon: item.icon || pluginIcon || undefined,
|
|
403
|
-
}))
|
|
404
|
-
}
|
|
405
|
-
|
|
406
351
|
/** Create a typed plugin API client from a generated MINT plugin contract. */
|
|
407
|
-
export function
|
|
352
|
+
export function createClient<TClient extends object = GeneratedPluginClient>(
|
|
408
353
|
contract: PluginContract,
|
|
409
|
-
options:
|
|
354
|
+
options: CreateClientOptions,
|
|
410
355
|
): TClient {
|
|
411
356
|
const client: Record<string, PluginEndpointCaller> = {}
|
|
412
357
|
|
|
@@ -424,7 +369,6 @@ export function createPluginClient<TClient extends object = GeneratedPluginClien
|
|
|
424
369
|
const api = useApi({
|
|
425
370
|
baseUrl: parts.baseUrl,
|
|
426
371
|
withAuth: endpoint.requiresAuth !== false,
|
|
427
|
-
typedErrors: true,
|
|
428
372
|
})
|
|
429
373
|
const config = endpointRequestConfig(endpoint, parts.query, callOptions)
|
|
430
374
|
|
|
@@ -457,7 +401,7 @@ export function createPluginClient<TClient extends object = GeneratedPluginClien
|
|
|
457
401
|
}
|
|
458
402
|
|
|
459
403
|
/** Send multipart or raw binary data to a generated endpoint with contract URL, cancellation, and auth handling. */
|
|
460
|
-
export async function
|
|
404
|
+
export async function uploadEndpoint<TResponse = unknown>(
|
|
461
405
|
contract: PluginContract,
|
|
462
406
|
endpoint: PluginEndpointDefinition,
|
|
463
407
|
payload?: unknown,
|
|
@@ -471,7 +415,6 @@ export async function uploadPluginEndpoint<TResponse = unknown>(
|
|
|
471
415
|
const api = useApi({
|
|
472
416
|
baseUrl: parts.baseUrl,
|
|
473
417
|
withAuth: endpoint.requiresAuth !== false,
|
|
474
|
-
typedErrors: true,
|
|
475
418
|
})
|
|
476
419
|
const body = endpoint.hasBody
|
|
477
420
|
? requestBodyFromPayload(payload, parts.requestPayload, endpoint)
|
|
@@ -496,11 +439,11 @@ export async function uploadPluginEndpoint<TResponse = unknown>(
|
|
|
496
439
|
}
|
|
497
440
|
|
|
498
441
|
/** Fetch a generated plugin endpoint as a Blob and optionally trigger a browser download. */
|
|
499
|
-
export async function
|
|
442
|
+
export async function downloadEndpoint(
|
|
500
443
|
contract: PluginContract,
|
|
501
444
|
endpoint: PluginEndpointDefinition,
|
|
502
445
|
payload?: unknown,
|
|
503
|
-
options:
|
|
446
|
+
options: DownloadEndpointOptions = {},
|
|
504
447
|
): Promise<Blob> {
|
|
505
448
|
if (endpoint.requestContentType === MULTIPART_FORM_DATA) {
|
|
506
449
|
throw new Error('[MINT SDK] Plugin download endpoints do not support multipart request bodies')
|
|
@@ -510,7 +453,6 @@ export async function downloadPluginEndpoint(
|
|
|
510
453
|
const api = useApi({
|
|
511
454
|
baseUrl: parts.baseUrl,
|
|
512
455
|
withAuth: endpoint.requiresAuth !== false,
|
|
513
|
-
typedErrors: true,
|
|
514
456
|
})
|
|
515
457
|
const config = {
|
|
516
458
|
...(endpointRequestConfig(endpoint, parts.query, { signal: options.signal }) ?? {}),
|
|
@@ -530,7 +472,7 @@ export async function downloadPluginEndpoint(
|
|
|
530
472
|
throw new Error(`[MINT SDK] Unsupported plugin endpoint method: ${endpoint.method}`)
|
|
531
473
|
}
|
|
532
474
|
|
|
533
|
-
if (options.filename) {
|
|
475
|
+
if (options.filename && options.save !== false) {
|
|
534
476
|
downloadBlob(blob, options.filename, {
|
|
535
477
|
revokeObjectUrlDelayMs: options.revokeObjectUrlDelayMs,
|
|
536
478
|
})
|
|
@@ -539,15 +481,10 @@ export async function downloadPluginEndpoint(
|
|
|
539
481
|
return blob
|
|
540
482
|
}
|
|
541
483
|
|
|
542
|
-
function normalizePluginSettingsOptions(options:
|
|
484
|
+
function normalizePluginSettingsOptions(options: UseSettingsEndpointOptions | string = {}): UseSettingsEndpointOptions {
|
|
543
485
|
return typeof options === 'string' ? { pluginName: options } : options
|
|
544
486
|
}
|
|
545
487
|
|
|
546
|
-
/** @deprecated Removed in MINT 1.4; use `useGeneratedPluginClient()` for generated clients. */
|
|
547
|
-
export function usePluginClient<TClient>(client: TClient): TClient {
|
|
548
|
-
return client
|
|
549
|
-
}
|
|
550
|
-
|
|
551
488
|
const PLATFORM_OWNED_SETTINGS_KEY = 'allowed_experiment_types'
|
|
552
489
|
|
|
553
490
|
/**
|
|
@@ -561,12 +498,12 @@ function withSecretFormat(
|
|
|
561
498
|
secretFormat: string | null,
|
|
562
499
|
): Record<string, unknown> {
|
|
563
500
|
if (!secretFormat) return payload
|
|
564
|
-
return { ...payload, [
|
|
501
|
+
return { ...payload, [pluginSecret.FORMAT_KEY]: secretFormat }
|
|
565
502
|
}
|
|
566
503
|
|
|
567
504
|
function responseSecretFormat(response: unknown): string | null {
|
|
568
505
|
if (!response || typeof response !== 'object') return null
|
|
569
|
-
const format = (response as Record<string, unknown>)[
|
|
506
|
+
const format = (response as Record<string, unknown>)[pluginSecret.FORMAT_KEY]
|
|
570
507
|
return typeof format === 'string' && format ? format : null
|
|
571
508
|
}
|
|
572
509
|
|
|
@@ -631,12 +568,12 @@ function platformOwnedSettingsPatch(settings: Record<string, unknown>): Record<s
|
|
|
631
568
|
}
|
|
632
569
|
|
|
633
570
|
/** Load, edit, and persist plugin settings from platform config or the plugin-local settings router. */
|
|
634
|
-
export function
|
|
635
|
-
options:
|
|
636
|
-
):
|
|
571
|
+
export function useSettingsEndpoint<TSettings = Record<string, unknown>>(
|
|
572
|
+
options: UseSettingsEndpointOptions | string = {},
|
|
573
|
+
): UseSettingsEndpointReturn<TSettings> {
|
|
637
574
|
const resolvedOptions = normalizePluginSettingsOptions(options)
|
|
638
575
|
const injectedContext = getInjectedPlatformContext()
|
|
639
|
-
const { plugin, isIntegrated } =
|
|
576
|
+
const { plugin, integrated: isIntegrated } = usePlatform()
|
|
640
577
|
const platformApi = useApi({ baseUrl: resolvedOptions.platformApiBaseUrl ?? injectedContext?.platformApiUrl })
|
|
641
578
|
const pluginApi = useApi({ baseUrl: resolvedOptions.apiBaseUrl ?? injectedContext?.plugin?.api_prefix })
|
|
642
579
|
|
|
@@ -644,7 +581,7 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
644
581
|
const savedValues = shallowRef<Record<string, unknown>>({})
|
|
645
582
|
const revision = ref<string | null>(null)
|
|
646
583
|
const secretFormat = ref<string | null>(null)
|
|
647
|
-
const request =
|
|
584
|
+
const request = useRequest('Plugin settings request failed.')
|
|
648
585
|
const isLoading = ref(false)
|
|
649
586
|
const isSaving = ref(false)
|
|
650
587
|
|
|
@@ -667,7 +604,7 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
667
604
|
const isDirty = computed(() => JSON.stringify(values.value) !== JSON.stringify(savedValues.value))
|
|
668
605
|
const settingsConfig = computed<TopBarSettingsConfig>(() => ({
|
|
669
606
|
title: resolvedOptions.title,
|
|
670
|
-
|
|
607
|
+
spec: resolvedOptions.schema ?? undefined,
|
|
671
608
|
showAppearance: resolvedOptions.showAppearance,
|
|
672
609
|
values: values.value,
|
|
673
610
|
}))
|
|
@@ -696,11 +633,11 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
696
633
|
() => platformApi.get<{ plugin_name: string; config: Record<string, unknown> }>(
|
|
697
634
|
`/plugins/${encodeURIComponent(resolvedPluginName.value)}/config`,
|
|
698
635
|
),
|
|
699
|
-
{
|
|
636
|
+
{ kind: 'load', errorMessage: 'Failed to load plugin settings' },
|
|
700
637
|
)
|
|
701
638
|
: await request.run(
|
|
702
639
|
() => pluginApi.get<{ settings: Record<string, unknown>; mode?: string }>('/settings'),
|
|
703
|
-
{
|
|
640
|
+
{ kind: 'load', errorMessage: 'Failed to load plugin settings' },
|
|
704
641
|
)
|
|
705
642
|
applyLoaded(
|
|
706
643
|
responseSettingsPayload(response),
|
|
@@ -746,7 +683,7 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
746
683
|
),
|
|
747
684
|
},
|
|
748
685
|
),
|
|
749
|
-
{
|
|
686
|
+
{ kind: 'save', errorMessage: 'Failed to save plugin settings' },
|
|
750
687
|
)
|
|
751
688
|
nextRevision = responseSettingsRevision(response) ?? nextRevision
|
|
752
689
|
}
|
|
@@ -761,7 +698,7 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
761
698
|
`/plugins/${encodeURIComponent(resolvedPluginName.value)}/config`,
|
|
762
699
|
{ config: platformOwnedSettingsPatch(payload) },
|
|
763
700
|
),
|
|
764
|
-
{
|
|
701
|
+
{ kind: 'save', errorMessage: 'Failed to save plugin settings' },
|
|
765
702
|
)
|
|
766
703
|
nextRevision = responseSettingsRevision(response) ?? nextRevision
|
|
767
704
|
}
|
|
@@ -783,7 +720,7 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
783
720
|
mode?: string
|
|
784
721
|
revision?: string
|
|
785
722
|
}>('/settings', withSecretFormat(payload, secretFormat.value), ifMatch),
|
|
786
|
-
{
|
|
723
|
+
{ kind: 'save', errorMessage: 'Failed to save plugin settings' },
|
|
787
724
|
)
|
|
788
725
|
}
|
|
789
726
|
applyLoaded(
|
|
@@ -869,7 +806,7 @@ function pluginEventStreamTransport(
|
|
|
869
806
|
}
|
|
870
807
|
}
|
|
871
808
|
|
|
872
|
-
function looksLikeEventStreamOptions(value: unknown): value is
|
|
809
|
+
function looksLikeEventStreamOptions(value: unknown): value is StreamOptions {
|
|
873
810
|
if (!value || typeof value !== 'object') return false
|
|
874
811
|
const candidate = value as Record<string, unknown>
|
|
875
812
|
return [
|
|
@@ -887,23 +824,23 @@ function looksLikeEventStreamOptions(value: unknown): value is PluginEventStream
|
|
|
887
824
|
}
|
|
888
825
|
|
|
889
826
|
/** Consume a generated plugin SSE endpoint with auth headers, reconnect, and teardown. */
|
|
890
|
-
export function
|
|
827
|
+
export function useEventStream<TData = string>(
|
|
891
828
|
contract: PluginContract,
|
|
892
829
|
endpoint: PluginEndpointDefinition,
|
|
893
|
-
options?:
|
|
894
|
-
):
|
|
895
|
-
export function
|
|
830
|
+
options?: StreamOptions<TData>,
|
|
831
|
+
): UseEventStreamReturn<TData>
|
|
832
|
+
export function useEventStream<TData = string>(
|
|
896
833
|
contract: PluginContract,
|
|
897
834
|
endpoint: PluginEndpointDefinition,
|
|
898
835
|
payload?: unknown,
|
|
899
|
-
options?:
|
|
900
|
-
):
|
|
901
|
-
export function
|
|
836
|
+
options?: StreamOptions<TData>,
|
|
837
|
+
): UseEventStreamReturn<TData>
|
|
838
|
+
export function useEventStream<TData = string>(
|
|
902
839
|
contract: PluginContract,
|
|
903
840
|
endpoint: PluginEndpointDefinition,
|
|
904
841
|
payloadOrOptions?: unknown,
|
|
905
|
-
maybeOptions?:
|
|
906
|
-
):
|
|
842
|
+
maybeOptions?: StreamOptions<TData>,
|
|
843
|
+
): UseEventStreamReturn<TData> {
|
|
907
844
|
if (endpoint.method !== 'get') {
|
|
908
845
|
throw new Error(`[MINT SDK] Plugin event streams must use GET; got ${endpoint.method}`)
|
|
909
846
|
}
|
|
@@ -914,11 +851,11 @@ export function usePluginEventStream<TData = string>(
|
|
|
914
851
|
maybeOptions === undefined && looksLikeEventStreamOptions(payloadOrOptions)
|
|
915
852
|
? payloadOrOptions
|
|
916
853
|
: maybeOptions ?? {}
|
|
917
|
-
) as
|
|
854
|
+
) as StreamOptions<TData>
|
|
918
855
|
const responseType = endpoint.responseType?.trim()
|
|
919
856
|
const parseJson = options.parseJson ?? Boolean(responseType && responseType !== 'string')
|
|
920
|
-
return
|
|
921
|
-
() =>
|
|
857
|
+
return createEventStream<TData>(
|
|
858
|
+
() => buildEndpointUrl(contract, endpoint, payload, { baseUrl: options.baseUrl }),
|
|
922
859
|
{
|
|
923
860
|
transport: pluginEventStreamTransport(endpoint),
|
|
924
861
|
immediate: options.immediate,
|
|
@@ -935,76 +872,3 @@ export function usePluginEventStream<TData = string>(
|
|
|
935
872
|
},
|
|
936
873
|
)
|
|
937
874
|
}
|
|
938
|
-
|
|
939
|
-
/** Read and optionally load the current platform experiment for integrated plugin views. */
|
|
940
|
-
export function useCurrentExperiment<TExperiment = ExperimentSummary>(
|
|
941
|
-
options: UseCurrentExperimentOptions = {},
|
|
942
|
-
): UseCurrentExperimentReturn<TExperiment> {
|
|
943
|
-
const api = useApi({ baseUrl: options.apiBaseUrl ?? getInjectedPlatformContext()?.platformApiUrl })
|
|
944
|
-
const experiment = shallowRef<TExperiment | undefined>(currentExperimentFromContext<TExperiment>())
|
|
945
|
-
const request = useRequestSyncState('Failed to load current experiment')
|
|
946
|
-
const isLoading = request.loading
|
|
947
|
-
const error = request.error
|
|
948
|
-
const lastLoadedAt = request.lastLoadedAt
|
|
949
|
-
|
|
950
|
-
const experimentId = computed<number | undefined>(() => {
|
|
951
|
-
return resolveCurrentExperimentId()
|
|
952
|
-
})
|
|
953
|
-
const hasExperiment = computed(() => experimentId.value !== undefined)
|
|
954
|
-
|
|
955
|
-
function requireExperimentId(): number {
|
|
956
|
-
const id = experimentId.value
|
|
957
|
-
if (id === undefined) {
|
|
958
|
-
throw new Error('[MINT SDK] No current experiment is selected.')
|
|
959
|
-
}
|
|
960
|
-
return id
|
|
961
|
-
}
|
|
962
|
-
|
|
963
|
-
async function fetchExperiment(id = experimentId.value): Promise<TExperiment | undefined> {
|
|
964
|
-
if (id === undefined) {
|
|
965
|
-
experiment.value = currentExperimentFromContext<TExperiment>()
|
|
966
|
-
return experiment.value
|
|
967
|
-
}
|
|
968
|
-
|
|
969
|
-
try {
|
|
970
|
-
const result = await request.run(
|
|
971
|
-
() => api.get<TExperiment>(`/experiments/${id}`),
|
|
972
|
-
{ success: 'load', errorMessage: 'Failed to load current experiment' },
|
|
973
|
-
)
|
|
974
|
-
experiment.value = result
|
|
975
|
-
return result
|
|
976
|
-
} catch (e) {
|
|
977
|
-
experiment.value = undefined
|
|
978
|
-
return undefined
|
|
979
|
-
}
|
|
980
|
-
}
|
|
981
|
-
|
|
982
|
-
async function refresh(): Promise<TExperiment | undefined> {
|
|
983
|
-
return fetchExperiment()
|
|
984
|
-
}
|
|
985
|
-
|
|
986
|
-
watch(
|
|
987
|
-
experimentId,
|
|
988
|
-
(id) => {
|
|
989
|
-
if (options.immediate === false) return
|
|
990
|
-
if (id === undefined) {
|
|
991
|
-
experiment.value = currentExperimentFromContext<TExperiment>()
|
|
992
|
-
return
|
|
993
|
-
}
|
|
994
|
-
void fetchExperiment(id)
|
|
995
|
-
},
|
|
996
|
-
{ immediate: options.immediate !== false },
|
|
997
|
-
)
|
|
998
|
-
|
|
999
|
-
return {
|
|
1000
|
-
experimentId,
|
|
1001
|
-
hasExperiment,
|
|
1002
|
-
experiment,
|
|
1003
|
-
isLoading,
|
|
1004
|
-
error,
|
|
1005
|
-
lastLoadedAt,
|
|
1006
|
-
requireExperimentId,
|
|
1007
|
-
fetch: fetchExperiment,
|
|
1008
|
-
refresh,
|
|
1009
|
-
}
|
|
1010
|
-
}
|
|
@@ -22,7 +22,7 @@ export interface EventStreamMessage<TData = string> {
|
|
|
22
22
|
raw: string
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
export interface
|
|
25
|
+
export interface CreateEventStreamOptions<TData = string> {
|
|
26
26
|
transport?: EventStreamTransport
|
|
27
27
|
headers?: HeadersInit
|
|
28
28
|
credentials?: RequestCredentials
|
|
@@ -112,9 +112,9 @@ export function parseEventStreamBlock<TData>(
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
/** Shared fetch-based SSE lifecycle with cancellation and reconnect safety. */
|
|
115
|
-
export function
|
|
115
|
+
export function createEventStream<TData = string>(
|
|
116
116
|
url: string | (() => string),
|
|
117
|
-
options:
|
|
117
|
+
options: CreateEventStreamOptions<TData> = {},
|
|
118
118
|
): UseEventStreamReturn<TData> {
|
|
119
119
|
const isConnected = ref(false)
|
|
120
120
|
const isConnecting = ref(false)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DatePreset,
|
|
1
|
+
import type { DatePreset, SelectOption } from '../types'
|
|
2
2
|
|
|
3
3
|
interface ExperimentCodeSource {
|
|
4
4
|
id?: number | null
|
|
@@ -24,44 +24,6 @@ export function datePresetToISO(preset: DatePreset): string {
|
|
|
24
24
|
return d.toISOString()
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
export const EXPERIMENT_STATUS_OPTIONS: SelectOption<string>[] = [
|
|
28
|
-
{ value: '', label: 'All statuses' },
|
|
29
|
-
{ value: 'planned', label: 'Planned' },
|
|
30
|
-
{ value: 'ongoing', label: 'Ongoing' },
|
|
31
|
-
{ value: 'completed', label: 'Completed' },
|
|
32
|
-
{ value: 'cancelled', label: 'Cancelled' },
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
export const EXPERIMENT_STATUS_VARIANT_MAP: Record<ExperimentStatus, PillVariant> = {
|
|
36
|
-
planned: 'default',
|
|
37
|
-
ongoing: 'primary',
|
|
38
|
-
completed: 'success',
|
|
39
|
-
cancelled: 'error',
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export const EXPERIMENT_STATUS_LABELS: Record<ExperimentStatus, string> = {
|
|
43
|
-
planned: 'Planned',
|
|
44
|
-
ongoing: 'Ongoing',
|
|
45
|
-
completed: 'Completed',
|
|
46
|
-
cancelled: 'Cancelled',
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export function formatExperimentStatus(status?: ExperimentStatus | string | null): string {
|
|
50
|
-
if (!status) return ''
|
|
51
|
-
if (status in EXPERIMENT_STATUS_LABELS) {
|
|
52
|
-
return EXPERIMENT_STATUS_LABELS[status as ExperimentStatus]
|
|
53
|
-
}
|
|
54
|
-
const label = String(status).replace(/[-_]+/g, ' ').trim()
|
|
55
|
-
return label ? label.replace(/^\w/, c => c.toUpperCase()) : ''
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export function getExperimentStatusVariant(status?: ExperimentStatus | string | null): PillVariant {
|
|
59
|
-
if (status && status in EXPERIMENT_STATUS_VARIANT_MAP) {
|
|
60
|
-
return EXPERIMENT_STATUS_VARIANT_MAP[status as ExperimentStatus]
|
|
61
|
-
}
|
|
62
|
-
return 'default'
|
|
63
|
-
}
|
|
64
|
-
|
|
65
27
|
export function resolveExperimentCode(experiment: ExperimentCodeSource): string | undefined {
|
|
66
28
|
if (experiment.experiment_code) return experiment.experiment_code
|
|
67
29
|
return undefined
|
|
@@ -3,25 +3,19 @@ import type { FormFieldType } from '../types/form-builder'
|
|
|
3
3
|
|
|
4
4
|
import BaseInput from '../components/BaseInput.vue'
|
|
5
5
|
import SecretInput from '../components/SecretInput.vue'
|
|
6
|
-
import BaseTextarea from '../components/BaseTextarea.vue'
|
|
7
6
|
import BaseSelect from '../components/BaseSelect.vue'
|
|
8
|
-
import MultiSelect from '../components/MultiSelect.vue'
|
|
9
7
|
import BaseCheckbox from '../components/BaseCheckbox.vue'
|
|
10
|
-
import BaseToggle from '../components/BaseToggle.vue'
|
|
11
8
|
import BaseRadioGroup from '../components/BaseRadioGroup.vue'
|
|
12
9
|
import BaseSlider from '../components/BaseSlider.vue'
|
|
13
10
|
import TagsInput from '../components/TagsInput.vue'
|
|
14
11
|
import NumberInput from '../components/NumberInput.vue'
|
|
15
12
|
import DatePicker from '../components/DatePicker.vue'
|
|
16
|
-
import TimePicker from '../components/TimePicker.vue'
|
|
17
|
-
import DateTimePicker from '../components/DateTimePicker.vue'
|
|
18
13
|
import FileUploader from '../components/FileUploader.vue'
|
|
19
14
|
import GeneratedPathInput from '../components/GeneratedPathInput.vue'
|
|
20
15
|
import FormulaInput from '../components/FormulaInput.vue'
|
|
21
16
|
import SequenceInput from '../components/SequenceInput.vue'
|
|
22
17
|
import MoleculeInput from '../components/MoleculeInput.vue'
|
|
23
18
|
import ConcentrationInput from '../components/ConcentrationInput.vue'
|
|
24
|
-
import UnitInput from '../components/UnitInput.vue'
|
|
25
19
|
|
|
26
20
|
export interface RegistryEntry {
|
|
27
21
|
component: Component
|
|
@@ -40,24 +34,24 @@ const registry: Record<FormFieldType, RegistryEntry> = {
|
|
|
40
34
|
url: { component: BaseInput, defaults: { type: 'url' }, vModel: true },
|
|
41
35
|
search: { component: BaseInput, defaults: { type: 'search' }, vModel: true },
|
|
42
36
|
number: { component: NumberInput, defaults: {}, vModel: true },
|
|
43
|
-
textarea: { component:
|
|
37
|
+
textarea: { component: BaseInput, defaults: { type: 'textarea' }, vModel: true },
|
|
44
38
|
select: { component: BaseSelect, defaults: {}, vModel: true },
|
|
45
|
-
multiselect: { component:
|
|
39
|
+
multiselect: { component: BaseSelect, defaults: { multiple: true }, vModel: true },
|
|
46
40
|
checkbox: { component: BaseCheckbox, defaults: {}, vModel: true },
|
|
47
|
-
toggle: { component:
|
|
41
|
+
toggle: { component: BaseCheckbox, defaults: { type: 'switch' }, vModel: true },
|
|
48
42
|
radio: { component: BaseRadioGroup, defaults: {}, vModel: true },
|
|
49
43
|
slider: { component: BaseSlider, defaults: {}, vModel: true },
|
|
50
44
|
tags: { component: TagsInput, defaults: {}, vModel: true },
|
|
51
45
|
date: { component: DatePicker, defaults: {}, vModel: true },
|
|
52
|
-
time: { component:
|
|
53
|
-
datetime: { component:
|
|
46
|
+
time: { component: DatePicker, defaults: { type: 'time' }, vModel: true },
|
|
47
|
+
datetime: { component: DatePicker, defaults: { type: 'datetime' }, vModel: true },
|
|
54
48
|
file: { component: FileUploader, defaults: {}, vModel: false },
|
|
55
49
|
path: { component: GeneratedPathInput, defaults: {}, vModel: true },
|
|
56
50
|
formula: { component: FormulaInput, defaults: {}, vModel: true },
|
|
57
51
|
sequence: { component: SequenceInput, defaults: {}, vModel: true },
|
|
58
52
|
molecule: { component: MoleculeInput, defaults: {}, vModel: true },
|
|
59
53
|
concentration: { component: ConcentrationInput, defaults: {}, vModel: true },
|
|
60
|
-
unit: { component:
|
|
54
|
+
unit: { component: NumberInput, defaults: {}, vModel: true },
|
|
61
55
|
}
|
|
62
56
|
|
|
63
57
|
/** Return the registry entry for a given field type. Throws if the type is unregistered. */
|