@morscherlab/mint-sdk 1.3.9 → 1.4.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -177
- package/dist/ActionMenu-CScINahU.js +445 -0
- package/dist/ActionMenu-CScINahU.js.map +1 -0
- package/dist/AppSidebar-BmiiPfz9.js +3514 -0
- package/dist/AppSidebar-BmiiPfz9.js.map +1 -0
- package/dist/{experiment-utils-DTANyVKV.js → BaseModal-DfRIuVoj.js} +74 -149
- package/dist/BaseModal-DfRIuVoj.js.map +1 -0
- package/dist/ConfirmDialog-CJ7hqYUP.js +102 -0
- package/dist/ConfirmDialog-CJ7hqYUP.js.map +1 -0
- package/dist/ExperimentPopover-C4sGw-is.js +359 -0
- package/dist/ExperimentPopover-C4sGw-is.js.map +1 -0
- package/dist/ExperimentSelectorModal-D-9z7cNx.js +527 -0
- package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +1 -0
- package/dist/SegmentedControl-DERBN-Xd.js +129 -0
- package/dist/SegmentedControl-DERBN-Xd.js.map +1 -0
- package/dist/SettingsModal-CSLE31yg.js +666 -0
- package/dist/SettingsModal-CSLE31yg.js.map +1 -0
- package/dist/analysisArtifactTypes-Cy3D0Ipg.js.map +1 -1
- package/dist/auth-SliLnFre.js +65 -0
- package/dist/auth-SliLnFre.js.map +1 -0
- package/dist/components/ActionMenu.vue.d.ts +1 -1
- package/dist/components/AdductText.vue.d.ts +1 -1
- package/dist/components/AlertBox.vue.d.ts +3 -3
- package/dist/components/AppContainer.vue.d.ts +1 -1
- package/dist/components/AppSidebar.vue.d.ts +14 -94
- package/dist/components/AppTopBar.vue.d.ts +16 -70
- package/dist/components/ArtifactSaveDialog.vue.d.ts +4 -4
- package/dist/components/ArtifactSelectorModal.vue.d.ts +4 -4
- package/dist/components/AuditTrail.vue.d.ts +2 -2
- package/dist/components/BaseButton.vue.d.ts +11 -4
- package/dist/components/BaseCheckbox.vue.d.ts +9 -3
- package/dist/components/BaseInput.vue.d.ts +13 -9
- package/dist/components/BaseModal.vue.d.ts +4 -4
- package/dist/components/BasePill.vue.d.ts +15 -8
- package/dist/components/BaseRadioGroup.vue.d.ts +2 -2
- package/dist/components/BaseSelect.vue.d.ts +51 -19
- package/dist/components/BaseTabs.vue.d.ts +6 -5
- package/dist/components/BatchProgressList.vue.d.ts +2 -2
- package/dist/components/ChartContainer.vue.d.ts +2 -2
- package/dist/components/ChemicalFormula.vue.d.ts +2 -2
- package/dist/components/CollapsibleCard.vue.d.ts +3 -3
- package/dist/components/ComponentBindingRenderer.vue.d.ts +2 -3
- package/dist/components/ConcentrationInput.vue.d.ts +2 -2
- package/dist/components/ConfirmDialog.vue.d.ts +8 -7
- package/dist/components/DataFrame.vue.d.ts +32 -74
- package/dist/components/DatePicker.vue.d.ts +24 -2
- package/dist/components/DoseCalculator.vue.d.ts +1 -1
- package/dist/components/DoseCalculatorVolumeField.vue.d.ts +1 -1
- package/dist/components/EmptyState.vue.d.ts +3 -2
- package/dist/components/ExperimentSelectorModal.vue.d.ts +3 -3
- package/dist/components/FormBuilder.vue.d.ts +17 -74
- package/dist/components/FormulaInput.vue.d.ts +2 -2
- package/dist/components/GeneratedPluginView.vue.d.ts +1 -1
- package/dist/components/GeneratedResultRenderer.vue.d.ts +5 -1
- package/dist/components/{StatusIndicator.vue.d.ts → InstrumentStatusPanels.vue.d.ts} +8 -9
- package/dist/components/JobsStatusTray.vue.d.ts +2 -9
- package/dist/components/LoadingSpinner.vue.d.ts +3 -3
- package/dist/components/MoleculeInput.vue.d.ts +2 -2
- package/dist/components/NumberInput.vue.d.ts +19 -5
- package/dist/components/PlateEditor.vue.d.ts +11 -61
- package/dist/components/PlotlyChart.vue.d.ts +2 -2
- package/dist/components/PluginIcon.vue.d.ts +5 -1
- package/dist/components/PluginWorkspaceView.controls.d.ts +2 -9
- package/dist/components/PluginWorkspaceView.navigation.d.ts +1 -7
- package/dist/components/PluginWorkspaceView.props.d.ts +18 -137
- package/dist/components/PluginWorkspaceView.shell.d.ts +2 -10
- package/dist/components/PluginWorkspaceView.vue.d.ts +14 -84
- package/dist/components/PresenceAvatars.vue.d.ts +31 -0
- package/dist/components/ProgressBar.vue.d.ts +3 -2
- package/dist/components/ProtocolStep.presentation.d.ts +0 -1
- package/dist/components/SampleHierarchyTree.vue.d.ts +3 -3
- package/dist/components/SampleSelector.vue.d.ts +3 -3
- package/dist/components/ScheduleCalendar.vue.d.ts +1 -1
- package/dist/components/ScientificNumber.vue.d.ts +1 -1
- package/dist/components/SecretInput.vue.d.ts +2 -2
- package/dist/components/SegmentedControl.vue.d.ts +2 -2
- package/dist/components/SequenceInput.vue.d.ts +2 -2
- package/dist/components/SettingsModal.vue.d.ts +12 -20
- package/dist/components/SmartGroup.types.d.ts +0 -1
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -1
- package/dist/components/StaleFormBanner.vue.d.ts +20 -0
- package/dist/components/TagsInput.vue.d.ts +4 -3
- package/dist/components/TimeRangeInput.vue.d.ts +2 -2
- package/dist/components/VersionConflictDialog.vue.d.ts +24 -0
- package/dist/components/WellPlate.geometry.d.ts +0 -6
- package/dist/components/WellPlate.rendering.d.ts +0 -2
- package/dist/components/WellPlate.vue.d.ts +7 -52
- package/dist/components/index.d.ts +0 -90
- package/dist/components/{AutoGroupModal.adapter.d.ts → internal/AutoGroupModalInternal.adapter.d.ts} +6 -6
- package/dist/components/{AutoGroupModal.vue.d.ts → internal/AutoGroupModalInternal.vue.d.ts} +6 -6
- package/dist/components/{BaseToggle.vue.d.ts → internal/CheckboxSwitchInternal.vue.d.ts} +2 -2
- package/dist/components/internal/DatePickerDateInternal.vue.d.ts +22 -0
- package/dist/components/{DateTimePicker.vue.d.ts → internal/DatePickerDateTimeInternal.vue.d.ts} +2 -2
- package/dist/components/{TimePicker.vue.d.ts → internal/DatePickerTimeInternal.vue.d.ts} +3 -3
- package/dist/components/internal/FilePickerListInternal.vue.d.ts +2 -2
- package/dist/components/internal/FormSchemaInternal.vue.d.ts +95 -0
- package/dist/components/{UnitInput.vue.d.ts → internal/NumberUnitInputInternal.vue.d.ts} +6 -14
- package/dist/components/internal/PlateEditorBindingInternal.vue.d.ts +3 -2
- package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +3 -3
- package/dist/components/{MultiSelect.vue.d.ts → internal/SelectMultipleInternal.vue.d.ts} +11 -8
- package/dist/components/{SearchableSelect.vue.d.ts → internal/SelectSearchableInternal.vue.d.ts} +5 -2
- package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +1 -15
- package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +4 -4
- package/dist/{composables → components/internal}/autoGroup/classKey.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/classify.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/columns.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/compose.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/cooccurrence.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/csv-shim.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/fingerprint.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/template.d.ts +1 -1
- package/dist/{composables → components/internal}/autoGroup/tokenLength.d.ts +1 -1
- package/dist/components/internal/generatedJobsApi.d.ts +1 -1
- package/dist/{composables → components/internal}/useAutoGroup.d.ts +9 -18
- package/dist/composables/componentSpecs.d.ts +41 -0
- package/dist/composables/controlComponentBindings.d.ts +6 -0
- package/dist/composables/controlSchemaAdapters.d.ts +28 -2
- package/dist/composables/controlSchemaDoseDesign.d.ts +1 -1
- package/dist/composables/controlSchemaModel.d.ts +1 -1
- package/dist/composables/controlSchemaTypes.d.ts +35 -23
- package/dist/composables/{usePluginClient.d.ts → createClient.d.ts} +20 -49
- package/dist/composables/{useEventStream.d.ts → eventStream.d.ts} +2 -2
- package/dist/composables/experiment-utils.d.ts +1 -6
- package/dist/composables/index.d.ts +6 -59
- package/dist/composables/platformContextHelpers.d.ts +0 -11
- package/dist/composables/pluginEndpointBuilder.d.ts +2 -2
- package/dist/composables/pluginWorkspaceModel.d.ts +14 -97
- package/dist/composables/useApi.d.ts +1 -3
- package/dist/composables/useAppExperiment.d.ts +1 -1
- package/dist/composables/{useAnalysisArtifacts.d.ts → useArtifacts.d.ts} +6 -6
- package/dist/composables/useExperiment.d.ts +30 -0
- package/dist/composables/useFilePicker.d.ts +2 -2
- package/dist/composables/useJobCenter.d.ts +63 -0
- package/dist/composables/{useGeneratedAnalysis.d.ts → useJobsEndpoint.d.ts} +22 -23
- package/dist/composables/useMenuKeyboard.d.ts +1 -1
- package/dist/composables/usePlatform.d.ts +63 -0
- package/dist/composables/usePluginWorkspace.d.ts +6 -11
- package/dist/composables/usePresence.d.ts +41 -0
- package/dist/composables/useRackEditor.d.ts +2 -2
- package/dist/composables/useRealtime.d.ts +71 -0
- package/dist/composables/{useRequestSyncState.d.ts → useRequest.d.ts} +12 -17
- package/dist/composables/useToast.d.ts +7 -5
- package/dist/composables/useVersionedSave.d.ts +76 -0
- package/dist/controlSchemaModel-CP5-_nAj.js +95 -0
- package/dist/controlSchemaModel-CP5-_nAj.js.map +1 -0
- package/dist/data-C2PwI_dn.js +3811 -0
- package/dist/data-C2PwI_dn.js.map +1 -0
- package/dist/data.d.ts +32 -0
- package/dist/data.js +10 -0
- package/dist/deprecatedRootExports.d.ts +191 -0
- package/dist/experiment-43OJtH7R.js +673 -0
- package/dist/experiment-43OJtH7R.js.map +1 -0
- package/dist/experimentStatus-BZmU4czV.js +60 -0
- package/dist/experimentStatus-BZmU4czV.js.map +1 -0
- package/dist/host.d.ts +10 -0
- package/dist/host.js +26 -0
- package/dist/host.js.map +1 -0
- package/dist/index.d.ts +1 -12
- package/dist/index.js +65 -277
- package/dist/index.js.map +1 -1
- package/dist/install-DAID6c2-.js +668 -0
- package/dist/install-DAID6c2-.js.map +1 -0
- package/dist/install.d.ts +2 -1
- package/dist/install.js +1 -21
- package/dist/instrument.d.ts +0 -6
- package/dist/lab-DLwRl_Ql.js +7513 -0
- package/dist/lab-DLwRl_Ql.js.map +1 -0
- package/dist/lab.d.ts +42 -0
- package/dist/lab.js +4 -0
- package/dist/permissions.d.ts +0 -4
- package/dist/permissions.js +1 -20
- package/dist/permissions.js.map +1 -1
- package/dist/records-BzTcxekG.js +3070 -0
- package/dist/records-BzTcxekG.js.map +1 -0
- package/dist/runtime-D6gVat6r.js +1495 -0
- package/dist/runtime-D6gVat6r.js.map +1 -0
- package/dist/runtime.d.ts +25 -0
- package/dist/runtime.js +8 -0
- package/dist/shell-5ju97nOS.js +197 -0
- package/dist/shell-5ju97nOS.js.map +1 -0
- package/dist/shell.d.ts +16 -0
- package/dist/shell.js +8 -0
- package/dist/stores/auth.d.ts +13 -35
- package/dist/stores/experiment.d.ts +4 -0
- package/dist/stores/index.js +2 -2
- package/dist/styles.css +12030 -14845
- package/dist/types/analysisArtifactTypes.d.ts +1 -1
- package/dist/types/auth.d.ts +0 -8
- package/dist/types/componentLabTypes.d.ts +98 -34
- package/dist/types/componentWorkflowTypes.d.ts +0 -27
- package/dist/types/components.d.ts +145 -74
- package/dist/types/form-builder.d.ts +4 -0
- package/dist/types/generated/platformContext.d.ts +52 -0
- package/dist/types/generated-ui.d.ts +2 -2
- package/dist/types/index.d.ts +4 -5
- package/dist/types/instrument.d.ts +41 -0
- package/dist/types/platform.d.ts +20 -58
- package/dist/useDebouncedWatch-BPwyl6eS.js +73 -0
- package/dist/useDebouncedWatch-BPwyl6eS.js.map +1 -0
- package/dist/useExpansionSet-CvoNMZJi.js +68 -0
- package/dist/useExpansionSet-CvoNMZJi.js.map +1 -0
- package/dist/useExperimentSamples-CxcnxZ8h.js +366 -0
- package/dist/useExperimentSamples-CxcnxZ8h.js.map +1 -0
- package/dist/useListReorder-CcbEYxX-.js +5462 -0
- package/dist/useListReorder-CcbEYxX-.js.map +1 -0
- package/dist/useRackEditor-BD5NIo5s.js +5916 -0
- package/dist/useRackEditor-BD5NIo5s.js.map +1 -0
- package/dist/useRealtime-PalKue84.js +696 -0
- package/dist/useRealtime-PalKue84.js.map +1 -0
- package/dist/useRequest-D5JDfsgZ.js +76 -0
- package/dist/useRequest-D5JDfsgZ.js.map +1 -0
- package/dist/utils/color.d.ts +0 -5
- package/dist/{composables/useDoseCalculator.d.ts → utils/dose.d.ts} +10 -13
- package/dist/utils/experimentStatus.d.ts +9 -0
- package/dist/{composables/useChemicalFormula.d.ts → utils/formula.d.ts} +3 -6
- package/dist/utils/integrationHost.d.ts +18 -0
- package/dist/utils/plotlyTemplate.d.ts +2 -0
- package/dist/utils/pluginSecrets.d.ts +12 -12
- package/dist/utils/presenceAvatars.d.ts +30 -0
- package/dist/utils/records.d.ts +0 -2
- package/dist/{composables/useTimeUtils.d.ts → utils/time.d.ts} +0 -18
- package/package.json +20 -17
- package/src/__tests__/components/ActionMenu.test.ts +0 -13
- package/src/__tests__/components/AlertBox.test.ts +1 -1
- package/src/__tests__/components/AppSidebar.test.ts +119 -167
- package/src/__tests__/components/AppToastContainer.test.ts +2 -2
- package/src/__tests__/components/AppTopBar.test.ts +181 -176
- package/src/__tests__/components/ArtifactSaveDialog.test.ts +5 -3
- package/src/__tests__/components/ArtifactSelectorModal.test.ts +6 -4
- package/src/__tests__/components/AuditTrail.test.ts +1 -1
- package/src/__tests__/components/AutoGroupModal.adapter.test.ts +1 -1
- package/src/__tests__/components/AutoGroupModal.anatomy.test.ts +2 -2
- package/src/__tests__/components/AutoGroupModal.wiring.test.ts +2 -2
- package/src/__tests__/components/BaseButton.test.ts +51 -0
- package/src/__tests__/components/{BaseToggle.test.ts → BaseCheckbox.switch.test.ts} +8 -6
- package/src/__tests__/components/BaseInput.test.ts +13 -34
- package/src/__tests__/components/BaseModal.test.ts +6 -6
- package/src/__tests__/components/BasePill.test.ts +33 -39
- package/src/__tests__/components/{MultiSelect.test.ts → BaseSelect.multiple.test.ts} +16 -7
- package/src/__tests__/components/{SearchableSelect.test.ts → BaseSelect.searchable.test.ts} +19 -9
- package/src/__tests__/components/BaseSelect.test.ts +10 -0
- package/src/__tests__/components/BaseTabs.test.ts +13 -13
- package/src/__tests__/components/CollapsibleCard.test.ts +1 -1
- package/src/__tests__/components/ComponentBindingRenderer.test.ts +25 -73
- package/src/__tests__/components/ConcentrationInput.test.ts +3 -3
- package/src/__tests__/components/ConfirmDialog.test.ts +23 -0
- package/src/__tests__/components/DataFrame.test.ts +140 -142
- package/src/__tests__/components/DataStates.test.ts +6 -22
- package/src/__tests__/components/{DateTimePicker.test.ts → DatePicker.datetime.test.ts} +9 -7
- package/src/__tests__/components/{TimePicker.test.ts → DatePicker.time.test.ts} +18 -17
- package/src/__tests__/components/DoseCalculator.test.ts +12 -7
- package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +6 -6
- package/src/__tests__/components/ExperimentSelectorModal.test.ts +15 -15
- package/src/__tests__/components/FormBuilder.test.ts +49 -167
- package/src/__tests__/components/FormSchemaInternal.test.ts +91 -0
- package/src/__tests__/components/GeneratedPathInput.test.ts +18 -13
- package/src/__tests__/components/GeneratedPluginView.test.ts +38 -24
- package/src/__tests__/components/GeneratedResultRenderer.test.ts +6 -4
- package/src/__tests__/components/InstrumentStatusPanels.test.ts +79 -0
- package/src/__tests__/components/JobsStatusTray.test.ts +4 -4
- package/src/__tests__/components/NumberInput.test.ts +28 -0
- package/src/__tests__/components/{UnitInput.test.ts → NumberInput.units.test.ts} +6 -6
- package/src/__tests__/components/PlateEditor.test.ts +108 -108
- package/src/__tests__/components/PlateEditorBindingInternal.test.ts +13 -13
- package/src/__tests__/components/PlotlyChart.test.ts +1 -1
- package/src/__tests__/components/PluginIcon.test.ts +9 -4
- package/src/__tests__/components/PluginWorkspaceView.controls.test.ts +16 -29
- package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +28 -34
- package/src/__tests__/components/PluginWorkspaceView.navigation.test.ts +4 -19
- package/src/__tests__/components/PluginWorkspaceView.shell.test.ts +1 -6
- package/src/__tests__/components/PluginWorkspaceView.test.ts +176 -155
- package/src/__tests__/components/PresenceAvatars.test.ts +90 -0
- package/src/__tests__/components/ProtocolStep.presentation.test.ts +1 -3
- package/src/__tests__/components/ProtocolStepEditor.test.ts +10 -11
- package/src/__tests__/components/ProtocolStepParameterField.test.ts +8 -7
- package/src/__tests__/components/ResourcePickerListInternal.test.ts +2 -2
- package/src/__tests__/components/RetiredStyles.test.ts +0 -18
- package/src/__tests__/components/SampleSelector.test.ts +17 -17
- package/src/__tests__/components/SecretInput.test.ts +14 -19
- package/src/__tests__/components/SettingsModal.test.ts +76 -84
- package/src/__tests__/components/StaleFormBanner.test.ts +48 -0
- package/src/__tests__/components/ThemeToggle.test.ts +1 -1
- package/src/__tests__/components/WellPlate.decoration.test.ts +10 -8
- package/src/__tests__/components/WellPlate.interaction.test.ts +6 -7
- package/src/__tests__/components/WellPlate.keyboard.test.ts +2 -2
- package/src/__tests__/components/deprecationTags.test.ts +90 -0
- package/src/__tests__/composables/analysisArtifactTarget.test.ts +1 -12
- package/src/__tests__/composables/autoGroup/classKey.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/classify.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/columns.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/compose.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/cooccurrence.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/fieldEdits.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/fingerprint.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/golden.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/groupByOrder.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/groupTree.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/integration.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/template.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/tokenLength.test.ts +1 -1
- package/src/__tests__/composables/autoGroup/tokenize.test.ts +1 -1
- package/src/__tests__/composables/{usePluginClient.test.ts → createClient.test.ts} +84 -222
- package/src/__tests__/composables/{useEventStream.test.ts → eventStream.test.ts} +6 -6
- package/src/__tests__/composables/experiment-utils.test.ts +13 -14
- package/src/__tests__/composables/useApi.test.ts +32 -21
- package/src/__tests__/composables/useAppExperiment.test.ts +19 -2
- package/src/__tests__/composables/{useAnalysisArtifacts.test.ts → useArtifacts.test.ts} +19 -27
- package/src/__tests__/composables/useAutoGroup.test.ts +3 -13
- package/src/__tests__/composables/useControlSchema.test.ts +41 -99
- package/src/__tests__/composables/useExperiment.test.ts +63 -0
- package/src/__tests__/composables/useFileBrowser.test.ts +4 -6
- package/src/__tests__/composables/{useJobsStatusTray.test.ts → useJobCenter.test.ts} +31 -31
- package/src/__tests__/composables/{useGeneratedAnalysis.test.ts → useJobsEndpoint.test.ts} +213 -139
- package/src/__tests__/composables/usePlatform.test.ts +102 -0
- package/src/__tests__/composables/usePresence.test.ts +164 -0
- package/src/__tests__/composables/useRackEditor.test.ts +2 -2
- package/src/__tests__/composables/useRealtime.test.ts +196 -0
- package/src/__tests__/composables/{useRequestSyncState.test.ts → useRequest.test.ts} +32 -47
- package/src/__tests__/composables/useVersionedSave.test.ts +194 -0
- package/src/__tests__/docs/extractDocsComponents.test.ts +36 -0
- package/src/__tests__/docs/extractDocsParsing.test.ts +2 -2
- package/src/__tests__/docs/extractDocsTheme.test.ts +1 -46
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +164 -84
- package/src/__tests__/styles/baseControlsRules.test.ts +1 -1
- package/src/__tests__/styles/darkModeRules.test.ts +0 -6
- package/src/__tests__/{composables/useChemicalFormula.test.ts → utils/formula.test.ts} +3 -5
- package/src/__tests__/utils/permissions.test.ts +1 -36
- package/src/__tests__/utils/plotlyTemplate.test.ts +16 -1
- package/src/__tests__/{composables/useTimeUtils.test.ts → utils/time.test.ts} +2 -9
- package/src/components/ActionMenu.vue +7 -13
- package/src/components/AlertBox.story.vue +25 -25
- package/src/components/AlertBox.vue +8 -8
- package/src/components/AppLayout.story.vue +33 -44
- package/src/components/AppLayout.vue +1 -1
- package/src/components/AppSidebar.story.vue +40 -73
- package/src/components/AppSidebar.vue +66 -147
- package/src/components/AppToastContainer.story.vue +1 -1
- package/src/components/AppTopBar.story.vue +51 -100
- package/src/components/AppTopBar.vue +74 -198
- package/src/components/ArtifactSaveDialog.story.vue +9 -9
- package/src/components/ArtifactSaveDialog.vue +23 -26
- package/src/components/ArtifactSelectorModal.story.vue +4 -4
- package/src/components/ArtifactSelectorModal.vue +10 -10
- package/src/components/AuditTrail.story.vue +4 -4
- package/src/components/AuditTrail.vue +3 -3
- package/src/components/Avatar.story.vue +2 -3
- package/src/components/Avatar.vue +1 -2
- package/src/components/BaseButton.story.vue +25 -0
- package/src/components/BaseButton.vue +39 -10
- package/src/components/BaseCheckbox.story.vue +2 -2
- package/src/components/{BaseToggle.story.vue → BaseCheckbox.switch.story.vue} +22 -19
- package/src/components/BaseCheckbox.vue +39 -7
- package/src/components/BaseInput.story.vue +3 -15
- package/src/components/{BaseTextarea.story.vue → BaseInput.textarea.story.vue} +14 -10
- package/src/components/BaseInput.vue +53 -26
- package/src/components/BaseModal.story.vue +11 -11
- package/src/components/BaseModal.vue +8 -8
- package/src/components/BasePill.story.vue +48 -28
- package/src/components/BasePill.vue +22 -11
- package/src/components/BaseRadioGroup.story.vue +4 -4
- package/src/components/BaseRadioGroup.vue +3 -3
- package/src/components/{MultiSelect.story.vue → BaseSelect.multiple.story.vue} +20 -14
- package/src/components/{SearchableSelect.story.vue → BaseSelect.searchable.story.vue} +4 -4
- package/src/components/BaseSelect.story.vue +2 -2
- package/src/components/BaseSelect.vue +117 -22
- package/src/components/BaseTabs.story.vue +20 -20
- package/src/components/BaseTabs.vue +17 -9
- package/src/components/BatchProgressList.vue +3 -3
- package/src/components/ChartContainer.story.vue +8 -13
- package/src/components/ChartContainer.vue +3 -3
- package/src/components/ChemicalFormula.vue +1 -2
- package/src/components/CollapsibleCard.vue +5 -4
- package/src/components/ComponentBindingRenderer.story.vue +0 -29
- package/src/components/ComponentBindingRenderer.vue +15 -39
- package/src/components/ConcentrationInput.story.vue +2 -2
- package/src/components/ConcentrationInput.vue +9 -9
- package/src/components/ConfirmDialog.story.vue +21 -21
- package/src/components/ConfirmDialog.vue +15 -14
- package/src/components/DataFrame.story.vue +28 -40
- package/src/components/DataFrame.vue +112 -128
- package/src/components/{DateTimePicker.story.vue → DatePicker.datetime.story.vue} +19 -14
- package/src/components/DatePicker.story.vue +2 -2
- package/src/components/{TimePicker.story.vue → DatePicker.time.story.vue} +15 -12
- package/src/components/DatePicker.vue +82 -220
- package/src/components/DoseCalculator.vue +13 -19
- package/src/components/DoseCalculatorVolumeField.vue +6 -6
- package/src/components/EmptyState.story.vue +17 -17
- package/src/components/EmptyState.vue +5 -4
- package/src/components/ExperimentPopover.story.vue +1 -1
- package/src/components/ExperimentPopover.vue +4 -4
- package/src/components/ExperimentSelectorModal.story.vue +5 -5
- package/src/components/ExperimentSelectorModal.vue +11 -13
- package/src/components/FilePicker.vue +1 -1
- package/src/components/FormBuilder.story.vue +9 -4
- package/src/components/FormBuilder.vue +46 -253
- package/src/components/FormField.story.vue +1 -2
- package/src/components/FormulaInput.story.vue +2 -2
- package/src/components/FormulaInput.vue +5 -6
- package/src/components/GeneratedPathInput.vue +8 -9
- package/src/components/GeneratedPluginView.story.vue +1 -1
- package/src/components/GeneratedPluginView.vue +23 -22
- package/src/components/GeneratedResultRenderer.vue +16 -17
- package/src/components/InstrumentStatusPanels.story.vue +64 -0
- package/src/components/InstrumentStatusPanels.vue +133 -0
- package/src/components/JobsStatusTray.story.vue +2 -2
- package/src/components/JobsStatusTray.vue +4 -19
- package/src/components/LoadingSpinner.story.vue +11 -11
- package/src/components/LoadingSpinner.vue +6 -4
- package/src/components/MoleculeInput.story.vue +2 -2
- package/src/components/MoleculeInput.vue +3 -3
- package/src/components/NumberInput.story.vue +55 -15
- package/src/components/NumberInput.vue +80 -18
- package/src/components/PlateEditor.story.vue +51 -43
- package/src/components/PlateEditor.vue +97 -128
- package/src/components/PlotlyChart.story.vue +1 -1
- package/src/components/PlotlyChart.vue +6 -4
- package/src/components/PluginIcon.story.vue +9 -6
- package/src/components/PluginIcon.vue +7 -2
- package/src/components/PluginWorkspaceView.controls.ts +9 -29
- package/src/components/PluginWorkspaceView.navigation.ts +2 -23
- package/src/components/PluginWorkspaceView.props.ts +17 -151
- package/src/components/PluginWorkspaceView.shell.ts +13 -24
- package/src/components/PluginWorkspaceView.story.vue +64 -62
- package/src/components/PluginWorkspaceView.vue +21 -78
- package/src/components/PresenceAvatars.story.vue +75 -0
- package/src/components/PresenceAvatars.vue +114 -0
- package/src/components/ProgressBar.story.vue +7 -7
- package/src/components/ProgressBar.vue +4 -3
- package/src/components/ProtocolStep.presentation.ts +0 -11
- package/src/components/ProtocolStepEditor.vue +6 -5
- package/src/components/ProtocolStepParameterField.vue +15 -12
- package/src/components/SampleSelector.colors.ts +1 -1
- package/src/components/SampleSelector.vue +6 -6
- package/src/components/ScheduleCalendar.vue +4 -4
- package/src/components/SecretInput.story.vue +1 -1
- package/src/components/SecretInput.vue +16 -25
- package/src/components/SegmentedControl.story.vue +7 -7
- package/src/components/SegmentedControl.vue +5 -3
- package/src/components/SequenceInput.story.vue +2 -2
- package/src/components/SequenceInput.vue +3 -3
- package/src/components/SettingsModal.story.vue +13 -14
- package/src/components/SettingsModal.vue +29 -47
- package/src/components/SmartGroup.types.ts +4 -6
- package/src/components/SmartGroupFieldRecipe.vue +7 -5
- package/src/components/StaleFormBanner.story.vue +90 -0
- package/src/components/StaleFormBanner.vue +83 -0
- package/src/components/TagsInput.story.vue +7 -7
- package/src/components/TagsInput.vue +7 -6
- package/src/components/ThemeToggle.vue +5 -30
- package/src/components/TimeRangeInput.story.vue +1 -1
- package/src/components/TimeRangeInput.vue +10 -8
- package/src/components/VersionConflictDialog.story.vue +60 -0
- package/src/components/VersionConflictDialog.vue +79 -0
- package/src/components/WellPlate.geometry.ts +0 -38
- package/src/components/WellPlate.rendering.ts +0 -13
- package/src/components/WellPlate.story.vue +61 -50
- package/src/components/WellPlate.vue +61 -87
- package/src/components/index.ts +3 -105
- package/src/components/{AutoGroupModal.adapter.ts → internal/AutoGroupModalInternal.adapter.ts} +8 -8
- package/src/components/{AutoGroupModal.vue → internal/AutoGroupModalInternal.vue} +23 -23
- package/src/components/{BaseToggle.vue → internal/CheckboxSwitchInternal.vue} +8 -8
- package/src/components/internal/DataStateInternal.vue +1 -1
- package/src/components/internal/DatePickerDateInternal.vue +243 -0
- package/src/components/{DateTimePicker.vue → internal/DatePickerDateTimeInternal.vue} +9 -9
- package/src/components/{TimePicker.vue → internal/DatePickerTimeInternal.vue} +7 -7
- package/src/components/internal/FilePickerListInternal.vue +8 -14
- package/src/components/{FormActions.vue → internal/FormActionsInternal.vue} +2 -2
- package/src/components/internal/FormFieldRendererInternal.vue +1 -1
- package/src/components/internal/FormSchemaInternal.vue +253 -0
- package/src/components/{UnitInput.vue → internal/NumberUnitInputInternal.vue} +28 -28
- package/src/components/internal/PlateEditorBindingInternal.vue +8 -7
- package/src/components/internal/ResourcePickerListInternal.vue +4 -4
- package/src/components/{MultiSelect.vue → internal/SelectMultipleInternal.vue} +21 -15
- package/src/components/{SearchableSelect.vue → internal/SelectSearchableInternal.vue} +24 -8
- package/src/components/internal/WellEditPopupInternal.vue +4 -9
- package/src/components/internal/WorkspaceShellInternal.vue +3 -36
- package/src/components/internal/WorkspaceSidebarInternal.vue +4 -25
- package/src/{composables → components/internal}/autoGroup/classKey.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/classify.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/columns.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/compose.ts +3 -3
- package/src/{composables → components/internal}/autoGroup/cooccurrence.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/csv-shim.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/fingerprint.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/index.ts +1 -2
- package/src/{composables → components/internal}/autoGroup/template.ts +1 -1
- package/src/{composables → components/internal}/autoGroup/tokenLength.ts +1 -1
- package/src/components/internal/generatedJobsApi.ts +1 -1
- package/src/{composables → components/internal}/useAutoGroup.ts +3 -57
- package/src/composables/componentSpecs.ts +62 -0
- package/src/composables/controlComponentBindings.ts +7 -0
- package/src/composables/controlSchemaAdapters.ts +45 -7
- package/src/composables/controlSchemaDoseDesign.ts +16 -5
- package/src/composables/controlSchemaModel.ts +1 -1
- package/src/composables/controlSchemaTypes.ts +31 -22
- package/src/composables/{usePluginClient.ts → createClient.ts} +52 -190
- package/src/composables/{useEventStream.ts → eventStream.ts} +3 -3
- package/src/composables/experiment-utils.ts +1 -39
- package/src/composables/formBuilderRegistry.ts +6 -12
- package/src/composables/index.ts +16 -480
- package/src/composables/platformContextHelpers.ts +0 -57
- package/src/composables/pluginEndpointBuilder.ts +8 -10
- package/src/composables/pluginWorkspaceModel.ts +14 -105
- package/src/composables/useApi.ts +18 -30
- package/src/composables/useAppExperiment.ts +6 -5
- package/src/composables/{useAnalysisArtifacts.ts → useArtifacts.ts} +18 -19
- package/src/composables/useControlSchema.ts +5 -9
- package/src/composables/useControlWorkspace.ts +4 -7
- package/src/composables/useExperiment.ts +49 -0
- package/src/composables/useExperimentData.ts +4 -4
- package/src/composables/useExperimentSelector.ts +5 -5
- package/src/composables/useFileBrowser.ts +5 -13
- package/src/composables/useFilePicker.ts +2 -2
- package/src/composables/useFormBuilder.ts +3 -4
- package/src/composables/useJobCenter.ts +324 -0
- package/src/composables/{useGeneratedAnalysis.ts → useJobsEndpoint.ts} +53 -67
- package/src/composables/useMenuKeyboard.ts +1 -1
- package/src/composables/usePlatform.ts +95 -0
- package/src/composables/usePlatformFilePickerAdapter.ts +2 -1
- package/src/composables/usePluginWorkspace.ts +62 -107
- package/src/composables/usePresence.ts +110 -0
- package/src/composables/useRackEditor.ts +3 -3
- package/src/composables/useRealtime.ts +194 -0
- package/src/composables/{useRequestSyncState.ts → useRequest.ts} +25 -48
- package/src/composables/useScheduleCalendarLayout.ts +1 -1
- package/src/composables/useToast.ts +14 -11
- package/src/composables/useVersionedSave.ts +165 -0
- package/src/data.ts +130 -0
- package/src/deprecatedRootExports.ts +226 -0
- package/src/generated/schema.ts +1 -0
- package/src/host.ts +27 -0
- package/src/index.ts +2 -71
- package/src/install.ts +15 -2
- package/src/instrument.ts +1 -6
- package/src/lab.ts +128 -0
- package/src/permissions.ts +0 -27
- package/src/runtime.ts +145 -0
- package/src/shell.ts +103 -0
- package/src/stores/auth.ts +26 -162
- package/src/stores/experiment.ts +27 -1
- package/src/styles/components/action-menu.css +0 -5
- package/src/styles/components/alert-box.css +18 -0
- package/src/styles/components/app-top-bar.css +7 -48
- package/src/styles/components/button.css +12 -0
- package/src/styles/components/checkbox.css +1 -1
- package/src/styles/components/collapsible-card.css +1 -1
- package/src/styles/components/confirm-dialog.css +18 -2
- package/src/styles/components/empty-state.css +4 -2
- package/src/styles/components/file-picker.css +1 -1
- package/src/styles/components/icon-button.css +1 -1
- package/src/styles/components/loading-spinner.css +9 -12
- package/src/styles/components/multi-select.css +6 -1
- package/src/styles/components/pill.css +40 -35
- package/src/styles/components/plugin-icon.css +9 -0
- package/src/styles/components/presence-avatars.css +194 -0
- package/src/styles/components/progress-bar.css +2 -0
- package/src/styles/components/searchable-select.css +3 -0
- package/src/styles/components/smart-group.css +1 -6
- package/src/styles/components/textarea.css +1 -1
- package/src/styles/components/toggle.css +2 -2
- package/src/styles/components/version-conflict.css +122 -0
- package/src/styles/components/well-plate.css +0 -7
- package/src/styles/index.css +2 -11
- package/src/styles/variables.css +1 -527
- package/src/types/analysisArtifactTypes.ts +1 -1
- package/src/types/auth.ts +0 -10
- package/src/types/componentLabTypes.ts +103 -53
- package/src/types/componentWorkflowTypes.ts +2 -33
- package/src/types/components.ts +148 -114
- package/src/types/form-builder.ts +4 -0
- package/src/types/generated/platformContext.ts +59 -0
- package/src/types/generated-ui.ts +2 -2
- package/src/types/index.ts +15 -53
- package/src/types/instrument.ts +27 -0
- package/src/types/platform.ts +25 -89
- package/src/utils/color.ts +1 -12
- package/src/utils/dose.ts +335 -0
- package/src/utils/experimentStatus.ts +43 -0
- package/src/utils/formula.ts +292 -0
- package/src/utils/integrationHost.ts +27 -0
- package/src/utils/plotlyTemplate.ts +6 -0
- package/src/utils/pluginSecrets.ts +23 -23
- package/src/utils/presenceAvatars.ts +53 -0
- package/src/utils/records.ts +0 -5
- package/src/{composables/useTimeUtils.ts → utils/time.ts} +0 -21
- package/dist/ResourcePickerListInternal-CFAw4vTZ.js +0 -605
- package/dist/ResourcePickerListInternal-CFAw4vTZ.js.map +0 -1
- package/dist/__tests__/composables/useBioTemplatePackWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useBioTemplatePresetWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useBioTemplateWorkspace.test.d.ts +0 -1
- package/dist/__tests__/composables/useChemicalFormula.test.d.ts +0 -1
- package/dist/__tests__/composables/useEventStream.test.d.ts +0 -1
- package/dist/__tests__/composables/useExperimentSave.test.d.ts +0 -1
- package/dist/__tests__/composables/useGeneratedAnalysis.test.d.ts +0 -1
- package/dist/__tests__/composables/useGroupAssignment.test.d.ts +0 -1
- package/dist/__tests__/composables/useJobsStatusTray.test.d.ts +0 -1
- package/dist/__tests__/composables/useMobileSupportGate.test.d.ts +0 -1
- package/dist/__tests__/composables/usePlatformContext.test.d.ts +0 -1
- package/dist/__tests__/composables/usePluginClient.test.d.ts +0 -1
- package/dist/__tests__/composables/usePresenceHeartbeat.test.d.ts +0 -1
- package/dist/__tests__/composables/useRequestSyncState.test.d.ts +0 -1
- package/dist/__tests__/composables/useRuntimeAlignment.test.d.ts +0 -1
- package/dist/__tests__/composables/useTemplateCollection.test.d.ts +0 -1
- package/dist/__tests__/composables/useTimeUtils.test.d.ts +0 -1
- package/dist/__tests__/docs/extractDocsTemplates.test.d.ts +0 -1
- package/dist/__tests__/templates/templates.test.d.ts +0 -1
- package/dist/__tests__/templates/templatesDeprecation.test.d.ts +0 -1
- package/dist/__tests__/utils/lcms.test.d.ts +0 -1
- package/dist/__tests__/utils/rack.test.d.ts +0 -1
- package/dist/components/AppAvatarMenu.vue.d.ts +0 -47
- package/dist/components/AppTopBar.navigation.d.ts +0 -10
- package/dist/components/BaseTextarea.vue.d.ts +0 -31
- package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +0 -112
- package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +0 -86
- package/dist/components/BioTemplatePresetWorkspaceView.vue.d.ts +0 -80
- package/dist/components/BioTemplateRenderer.vue.d.ts +0 -30
- package/dist/components/ControlWorkspaceView.vue.d.ts +0 -138
- package/dist/components/DoseDesignWorkspaceView.vue.d.ts +0 -140
- package/dist/components/ExperimentDataViewer.vue.d.ts +0 -54
- package/dist/components/ExperimentTimeline.vue.d.ts +0 -70
- package/dist/components/FitPanel.vue.d.ts +0 -56
- package/dist/components/GroupAssigner.vue.d.ts +0 -26
- package/dist/components/IconButton.vue.d.ts +0 -30
- package/dist/components/MobileSupportGate.vue.d.ts +0 -32
- package/dist/components/ReagentEditor.vue.d.ts +0 -31
- package/dist/components/ReagentList.presentation.d.ts +0 -17
- package/dist/components/ReagentList.vue.d.ts +0 -58
- package/dist/components/SampleLegend.vue.d.ts +0 -33
- package/dist/components/SmartGroupModal.vue.d.ts +0 -29
- package/dist/components/index.js +0 -5
- package/dist/components-BOA5e7kb.js +0 -23137
- package/dist/components-BOA5e7kb.js.map +0 -1
- package/dist/composables/flattenWorkspaceBindings.d.ts +0 -61
- package/dist/composables/index.js +0 -7
- package/dist/composables/useBioTemplateComponents.d.ts +0 -34
- package/dist/composables/useBioTemplateControls.d.ts +0 -10
- package/dist/composables/useBioTemplatePackWorkspace.d.ts +0 -56
- package/dist/composables/useBioTemplatePresetWorkspace.d.ts +0 -79
- package/dist/composables/useBioTemplateWorkspace.d.ts +0 -39
- package/dist/composables/useExperimentSave.d.ts +0 -69
- package/dist/composables/useGroupAssignment.d.ts +0 -35
- package/dist/composables/useJobsStatusTray.d.ts +0 -87
- package/dist/composables/useMobileSupportGate.d.ts +0 -14
- package/dist/composables/usePlatformContext.d.ts +0 -218
- package/dist/composables/usePresenceHeartbeat.d.ts +0 -49
- package/dist/composables/useRuntimeAlignment.d.ts +0 -44
- package/dist/composables/useTemplateCollection.d.ts +0 -62
- package/dist/composables/workspaceRecipes.d.ts +0 -189
- package/dist/composables-izSQH8Ky.js +0 -591
- package/dist/composables-izSQH8Ky.js.map +0 -1
- package/dist/experiment-D49y_Kro.js +0 -459
- package/dist/experiment-D49y_Kro.js.map +0 -1
- package/dist/experiment-utils-DTANyVKV.js.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/lcms.d.ts +0 -38
- package/dist/settings-BG6v13Zq.js +0 -341
- package/dist/settings-BG6v13Zq.js.map +0 -1
- package/dist/tailwind.preset.d.ts +0 -63
- package/dist/tailwind.preset.js +0 -71
- package/dist/tailwind.preset.js.map +0 -1
- package/dist/templates/adapters.d.ts +0 -19
- package/dist/templates/assayLookups.d.ts +0 -3
- package/dist/templates/assayMatrixAdapters.d.ts +0 -13
- package/dist/templates/assayMatrixBuilder.d.ts +0 -3
- package/dist/templates/assayNormalizers.d.ts +0 -4
- package/dist/templates/builderIdUtils.d.ts +0 -4
- package/dist/templates/builderPresetControls.d.ts +0 -11
- package/dist/templates/builderReadUtils.d.ts +0 -8
- package/dist/templates/builders.d.ts +0 -26
- package/dist/templates/calibrationCurveAdapters.d.ts +0 -7
- package/dist/templates/calibrationCurveBuilder.d.ts +0 -3
- package/dist/templates/calibrationNormalizers.d.ts +0 -5
- package/dist/templates/catalog.d.ts +0 -192
- package/dist/templates/componentBindingCatalog.d.ts +0 -25
- package/dist/templates/componentBindingHelpers.d.ts +0 -17
- package/dist/templates/componentBindings.d.ts +0 -97
- package/dist/templates/componentDoseResponseProps.d.ts +0 -3
- package/dist/templates/componentGenericProps.d.ts +0 -8
- package/dist/templates/componentPlateHelpers.d.ts +0 -11
- package/dist/templates/componentPlateMapProps.d.ts +0 -3
- package/dist/templates/componentPropsFactory.d.ts +0 -3
- package/dist/templates/componentQpcrPlateProps.d.ts +0 -3
- package/dist/templates/componentTargetResolvers.d.ts +0 -5
- package/dist/templates/componentTemplateProps.d.ts +0 -3
- package/dist/templates/controlSchemaClone.d.ts +0 -4
- package/dist/templates/controlSchemaConstants.d.ts +0 -10
- package/dist/templates/controlSchemaMerge.d.ts +0 -3
- package/dist/templates/controlSchemaTargets.d.ts +0 -17
- package/dist/templates/controlSchemaTypes.d.ts +0 -4
- package/dist/templates/controlSchemas.d.ts +0 -34
- package/dist/templates/defaultBioTemplateBuilder.d.ts +0 -3
- package/dist/templates/doseResponseAdapters.d.ts +0 -6
- package/dist/templates/doseResponseBuilder.d.ts +0 -3
- package/dist/templates/elisaAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates/flowCytometryAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates/flowCytometryPanelBuilder.d.ts +0 -3
- package/dist/templates/flowNormalizers.d.ts +0 -8
- package/dist/templates/flowPanelAdapters.d.ts +0 -7
- package/dist/templates/index.d.ts +0 -15
- package/dist/templates/index.js +0 -2
- package/dist/templates/instrumentRunAdapterHelpers.d.ts +0 -8
- package/dist/templates/instrumentRunAdapters.d.ts +0 -19
- package/dist/templates/instrumentRunBuilder.d.ts +0 -3
- package/dist/templates/lcmsBatchCollectionBuilder.d.ts +0 -3
- package/dist/templates/lookup.d.ts +0 -4
- package/dist/templates/packs.d.ts +0 -21
- package/dist/templates/plateMapAdapters.d.ts +0 -5
- package/dist/templates/plateMapBuilder.d.ts +0 -3
- package/dist/templates/presetControlSchemas.d.ts +0 -534
- package/dist/templates/presets.d.ts +0 -106
- package/dist/templates/protocolAdapters.d.ts +0 -9
- package/dist/templates/protocolNormalizers.d.ts +0 -6
- package/dist/templates/protocolStepsBuilder.d.ts +0 -3
- package/dist/templates/qpcrAdapters.d.ts +0 -9
- package/dist/templates/qpcrExpressionCollectionBuilder.d.ts +0 -3
- package/dist/templates/qpcrPlateBuilder.d.ts +0 -3
- package/dist/templates/reagentAdapters.d.ts +0 -9
- package/dist/templates/reagentListBuilder.d.ts +0 -3
- package/dist/templates/runNormalizers.d.ts +0 -10
- package/dist/templates/sampleNormalizers.d.ts +0 -4
- package/dist/templates/samplePrepAdapters.d.ts +0 -7
- package/dist/templates/samplePrepBuilder.d.ts +0 -3
- package/dist/templates/sampleSheetAdapters.d.ts +0 -9
- package/dist/templates/sampleSheetBuilder.d.ts +0 -3
- package/dist/templates/targetedMetabolomicsCollectionBuilder.d.ts +0 -3
- package/dist/templates/targetedMetabolomicsHelpers.d.ts +0 -5
- package/dist/templates/templateAdapterTypes.d.ts +0 -48
- package/dist/templates/templateControlSchemas.d.ts +0 -400
- package/dist/templates/templateCreateOptions.d.ts +0 -165
- package/dist/templates/templateEnvelopes.d.ts +0 -17
- package/dist/templates/templatePackCollectionBuilder.d.ts +0 -3
- package/dist/templates/templatePresetCollectionBuilder.d.ts +0 -20
- package/dist/templates/templateQpcrTypes.d.ts +0 -42
- package/dist/templates/templateValidators.d.ts +0 -25
- package/dist/templates/timeCourseAdapters.d.ts +0 -9
- package/dist/templates/timeCourseBuilder.d.ts +0 -3
- package/dist/templates/types.d.ts +0 -304
- package/dist/templates/wellPlateScreenCollectionBuilder.d.ts +0 -3
- package/dist/templates/westernBlotAssayCollectionBuilder.d.ts +0 -3
- package/dist/templates-B2DB0MCM.js +0 -12304
- package/dist/templates-B2DB0MCM.js.map +0 -1
- package/dist/utils/rack.d.ts +0 -63
- package/dist/validation-C_eH_vIg.js +0 -7999
- package/dist/validation-C_eH_vIg.js.map +0 -1
- package/src/__tests__/components/AppAvatarMenu.test.ts +0 -186
- package/src/__tests__/components/AppTopBar.navigation.test.ts +0 -68
- package/src/__tests__/components/AppTopBarPresence.test.ts +0 -47
- package/src/__tests__/components/BioTemplateExperimentWorkspaceView.test.ts +0 -159
- package/src/__tests__/components/BioTemplatePackWorkspaceView.test.ts +0 -192
- package/src/__tests__/components/BioTemplatePresetWorkspaceView.test.ts +0 -307
- package/src/__tests__/components/BioTemplateRenderer.test.ts +0 -96
- package/src/__tests__/components/ControlWorkspaceView.test.ts +0 -1100
- package/src/__tests__/components/DoseDesignWorkspaceView.test.ts +0 -183
- package/src/__tests__/components/ExperimentTimeline.test.ts +0 -108
- package/src/__tests__/components/FitPanel.test.ts +0 -96
- package/src/__tests__/components/GroupAssigner.test.ts +0 -101
- package/src/__tests__/components/MobileSupportGate.test.ts +0 -120
- package/src/__tests__/components/ReagentList.presentation.test.ts +0 -73
- package/src/__tests__/components/ReagentList.test.ts +0 -167
- package/src/__tests__/components/SampleLegend.test.ts +0 -18
- package/src/__tests__/components/SmartGroupModal.test.ts +0 -69
- package/src/__tests__/components/WellPlate.sampleTypeIndicator.test.ts +0 -58
- package/src/__tests__/components/iconButtonIconSizing.test.ts +0 -18
- package/src/__tests__/composables/useBioTemplatePackWorkspace.test.ts +0 -125
- package/src/__tests__/composables/useBioTemplatePresetWorkspace.test.ts +0 -199
- package/src/__tests__/composables/useBioTemplateWorkspace.test.ts +0 -104
- package/src/__tests__/composables/useExperimentSave.test.ts +0 -542
- package/src/__tests__/composables/useGroupAssignment.test.ts +0 -73
- package/src/__tests__/composables/useMobileSupportGate.test.ts +0 -74
- package/src/__tests__/composables/usePlatformContext.test.ts +0 -148
- package/src/__tests__/composables/usePresenceHeartbeat.test.ts +0 -164
- package/src/__tests__/composables/useRuntimeAlignment.test.ts +0 -145
- package/src/__tests__/composables/useTemplateCollection.test.ts +0 -147
- package/src/__tests__/docs/extractDocsTemplates.test.ts +0 -53
- package/src/__tests__/fixtures/templates/dose-response.json +0 -81
- package/src/__tests__/fixtures/templates/plate-map.json +0 -54
- package/src/__tests__/fixtures/templates/qpcr-plate.json +0 -96
- package/src/__tests__/fixtures/templates/sample-sheet.json +0 -71
- package/src/__tests__/templates/templates.test.ts +0 -1235
- package/src/__tests__/templates/templatesDeprecation.test.ts +0 -78
- package/src/__tests__/utils/lcms.test.ts +0 -73
- package/src/__tests__/utils/rack.test.ts +0 -120
- package/src/components/AppAvatarMenu.story.vue +0 -155
- package/src/components/AppAvatarMenu.vue +0 -154
- package/src/components/AppTopBar.navigation.ts +0 -60
- package/src/components/AutoGroupModal.story.vue +0 -458
- package/src/components/BaseTextarea.vue +0 -58
- package/src/components/BioTemplateExperimentWorkspaceView.story.vue +0 -123
- package/src/components/BioTemplateExperimentWorkspaceView.vue +0 -339
- package/src/components/BioTemplatePackWorkspaceView.story.vue +0 -107
- package/src/components/BioTemplatePackWorkspaceView.vue +0 -180
- package/src/components/BioTemplatePresetWorkspaceView.story.vue +0 -163
- package/src/components/BioTemplatePresetWorkspaceView.vue +0 -403
- package/src/components/BioTemplateRenderer.story.vue +0 -57
- package/src/components/BioTemplateRenderer.vue +0 -64
- package/src/components/ControlWorkspaceView.story.vue +0 -347
- package/src/components/ControlWorkspaceView.vue +0 -370
- package/src/components/DoseDesignWorkspaceView.story.vue +0 -77
- package/src/components/DoseDesignWorkspaceView.vue +0 -243
- package/src/components/ExperimentDataViewer.story.vue +0 -177
- package/src/components/ExperimentDataViewer.vue +0 -313
- package/src/components/ExperimentTimeline.story.vue +0 -208
- package/src/components/ExperimentTimeline.vue +0 -383
- package/src/components/FitPanel.story.vue +0 -191
- package/src/components/FitPanel.vue +0 -168
- package/src/components/FormActions.story.vue +0 -96
- package/src/components/GroupAssigner.story.vue +0 -83
- package/src/components/GroupAssigner.vue +0 -319
- package/src/components/IconButton.story.vue +0 -140
- package/src/components/IconButton.vue +0 -69
- package/src/components/MobileSupportGate.story.vue +0 -52
- package/src/components/MobileSupportGate.vue +0 -111
- package/src/components/ReagentEditor.story.vue +0 -153
- package/src/components/ReagentEditor.vue +0 -414
- package/src/components/ReagentList.presentation.ts +0 -106
- package/src/components/ReagentList.story.vue +0 -155
- package/src/components/ReagentList.vue +0 -438
- package/src/components/SampleLegend.story.vue +0 -91
- package/src/components/SampleLegend.vue +0 -121
- package/src/components/SmartGroupModal.story.vue +0 -61
- package/src/components/SmartGroupModal.vue +0 -61
- package/src/components/StatusIndicator.story.vue +0 -99
- package/src/components/StatusIndicator.vue +0 -36
- package/src/components/UnitInput.story.vue +0 -194
- package/src/composables/flattenWorkspaceBindings.ts +0 -104
- package/src/composables/useBioTemplateComponents.ts +0 -117
- package/src/composables/useBioTemplateControls.ts +0 -45
- package/src/composables/useBioTemplatePackWorkspace.ts +0 -201
- package/src/composables/useBioTemplatePresetWorkspace.ts +0 -329
- package/src/composables/useBioTemplateWorkspace.ts +0 -120
- package/src/composables/useChemicalFormula.ts +0 -301
- package/src/composables/useDoseCalculator.ts +0 -370
- package/src/composables/useExperimentSave.ts +0 -348
- package/src/composables/useGroupAssignment.ts +0 -152
- package/src/composables/useJobsStatusTray.ts +0 -493
- package/src/composables/useMobileSupportGate.ts +0 -80
- package/src/composables/usePlatformContext.ts +0 -299
- package/src/composables/usePresenceHeartbeat.ts +0 -201
- package/src/composables/useRuntimeAlignment.ts +0 -184
- package/src/composables/useTemplateCollection.ts +0 -233
- package/src/composables/workspaceRecipes.ts +0 -268
- package/src/lcms.ts +0 -119
- package/src/styles/components/app-avatar-menu.css +0 -121
- package/src/styles/components/experiment-data-viewer.css +0 -138
- package/src/styles/components/experiment-timeline.css +0 -572
- package/src/styles/components/fit-panel.css +0 -153
- package/src/styles/components/group-assigner.css +0 -198
- package/src/styles/components/mobile-support-gate.css +0 -117
- package/src/styles/components/reagent-editor.css +0 -501
- package/src/styles/components/reagent-list.css +0 -408
- package/src/styles/components/sample-legend.css +0 -212
- package/src/styles/components/status-indicator.css +0 -66
- package/src/styles/components/theme-toggle.css +0 -6
- package/src/tailwind.preset.ts +0 -66
- package/src/templates/adapters.ts +0 -141
- package/src/templates/assayLookups.ts +0 -33
- package/src/templates/assayMatrixAdapters.ts +0 -85
- package/src/templates/assayMatrixBuilder.ts +0 -60
- package/src/templates/assayNormalizers.ts +0 -34
- package/src/templates/builderIdUtils.ts +0 -20
- package/src/templates/builderPresetControls.ts +0 -166
- package/src/templates/builderReadUtils.ts +0 -55
- package/src/templates/builders.ts +0 -122
- package/src/templates/calibrationCurveAdapters.ts +0 -62
- package/src/templates/calibrationCurveBuilder.ts +0 -100
- package/src/templates/calibrationNormalizers.ts +0 -60
- package/src/templates/catalog.ts +0 -249
- package/src/templates/componentBindingCatalog.ts +0 -90
- package/src/templates/componentBindingHelpers.ts +0 -93
- package/src/templates/componentBindings.ts +0 -279
- package/src/templates/componentDoseResponseProps.ts +0 -41
- package/src/templates/componentGenericProps.ts +0 -77
- package/src/templates/componentPlateHelpers.ts +0 -52
- package/src/templates/componentPlateMapProps.ts +0 -34
- package/src/templates/componentPropsFactory.ts +0 -21
- package/src/templates/componentQpcrPlateProps.ts +0 -27
- package/src/templates/componentTargetResolvers.ts +0 -67
- package/src/templates/componentTemplateProps.ts +0 -78
- package/src/templates/controlSchemaClone.ts +0 -32
- package/src/templates/controlSchemaConstants.ts +0 -11
- package/src/templates/controlSchemaMerge.ts +0 -40
- package/src/templates/controlSchemaTargets.ts +0 -85
- package/src/templates/controlSchemaTypes.ts +0 -20
- package/src/templates/controlSchemas.ts +0 -113
- package/src/templates/defaultBioTemplateBuilder.ts +0 -125
- package/src/templates/doseResponseAdapters.ts +0 -36
- package/src/templates/doseResponseBuilder.ts +0 -45
- package/src/templates/elisaAssayCollectionBuilder.ts +0 -63
- package/src/templates/flowCytometryAssayCollectionBuilder.ts +0 -42
- package/src/templates/flowCytometryPanelBuilder.ts +0 -54
- package/src/templates/flowNormalizers.ts +0 -58
- package/src/templates/flowPanelAdapters.ts +0 -61
- package/src/templates/index.ts +0 -330
- package/src/templates/instrumentRunAdapterHelpers.ts +0 -94
- package/src/templates/instrumentRunAdapters.ts +0 -174
- package/src/templates/instrumentRunBuilder.ts +0 -98
- package/src/templates/lcmsBatchCollectionBuilder.ts +0 -39
- package/src/templates/lookup.ts +0 -18
- package/src/templates/packs.ts +0 -166
- package/src/templates/plateMapAdapters.ts +0 -38
- package/src/templates/plateMapBuilder.ts +0 -44
- package/src/templates/presetControlSchemas.ts +0 -258
- package/src/templates/presets.ts +0 -183
- package/src/templates/protocolAdapters.ts +0 -73
- package/src/templates/protocolNormalizers.ts +0 -37
- package/src/templates/protocolStepsBuilder.ts +0 -37
- package/src/templates/qpcrAdapters.ts +0 -108
- package/src/templates/qpcrExpressionCollectionBuilder.ts +0 -34
- package/src/templates/qpcrPlateBuilder.ts +0 -97
- package/src/templates/reagentAdapters.ts +0 -81
- package/src/templates/reagentListBuilder.ts +0 -31
- package/src/templates/runNormalizers.ts +0 -63
- package/src/templates/sampleNormalizers.ts +0 -58
- package/src/templates/samplePrepAdapters.ts +0 -66
- package/src/templates/samplePrepBuilder.ts +0 -52
- package/src/templates/sampleSheetAdapters.ts +0 -79
- package/src/templates/sampleSheetBuilder.ts +0 -24
- package/src/templates/targetedMetabolomicsCollectionBuilder.ts +0 -80
- package/src/templates/targetedMetabolomicsHelpers.ts +0 -102
- package/src/templates/templateAdapterTypes.ts +0 -58
- package/src/templates/templateControlSchemas.ts +0 -320
- package/src/templates/templateCreateOptions.ts +0 -208
- package/src/templates/templateEnvelopes.ts +0 -145
- package/src/templates/templatePackCollectionBuilder.ts +0 -24
- package/src/templates/templatePresetCollectionBuilder.ts +0 -141
- package/src/templates/templateQpcrTypes.ts +0 -48
- package/src/templates/templateValidators.ts +0 -426
- package/src/templates/timeCourseAdapters.ts +0 -77
- package/src/templates/timeCourseBuilder.ts +0 -65
- package/src/templates/types.ts +0 -493
- package/src/templates/wellPlateScreenCollectionBuilder.ts +0 -37
- package/src/templates/westernBlotAssayCollectionBuilder.ts +0 -69
- package/src/utils/rack.ts +0 -225
- /package/dist/__tests__/components/{AppAvatarMenu.test.d.ts → BaseButton.test.d.ts} +0 -0
- /package/dist/__tests__/components/{AppTopBar.navigation.test.d.ts → BaseCheckbox.switch.test.d.ts} +0 -0
- /package/dist/__tests__/components/{AppTopBarPresence.test.d.ts → BaseSelect.multiple.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BaseToggle.test.d.ts → BaseSelect.searchable.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplateExperimentWorkspaceView.test.d.ts → ConfirmDialog.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplatePackWorkspaceView.test.d.ts → DatePicker.datetime.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplatePresetWorkspaceView.test.d.ts → DatePicker.time.test.d.ts} +0 -0
- /package/dist/__tests__/components/{BioTemplateRenderer.test.d.ts → FormSchemaInternal.test.d.ts} +0 -0
- /package/dist/__tests__/components/{ControlWorkspaceView.test.d.ts → InstrumentStatusPanels.test.d.ts} +0 -0
- /package/dist/__tests__/components/{DateTimePicker.test.d.ts → NumberInput.units.test.d.ts} +0 -0
- /package/dist/__tests__/components/{DoseDesignWorkspaceView.test.d.ts → PresenceAvatars.test.d.ts} +0 -0
- /package/dist/__tests__/components/{ExperimentTimeline.test.d.ts → StaleFormBanner.test.d.ts} +0 -0
- /package/dist/__tests__/components/{FitPanel.test.d.ts → deprecationTags.test.d.ts} +0 -0
- /package/dist/__tests__/{components/GroupAssigner.test.d.ts → composables/createClient.test.d.ts} +0 -0
- /package/dist/__tests__/{components/MobileSupportGate.test.d.ts → composables/eventStream.test.d.ts} +0 -0
- /package/dist/__tests__/{components/MultiSelect.test.d.ts → composables/useArtifacts.test.d.ts} +0 -0
- /package/dist/__tests__/{components/ReagentList.presentation.test.d.ts → composables/useExperiment.test.d.ts} +0 -0
- /package/dist/__tests__/{components/ReagentList.test.d.ts → composables/useJobCenter.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SampleLegend.test.d.ts → composables/useJobsEndpoint.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SearchableSelect.test.d.ts → composables/usePlatform.test.d.ts} +0 -0
- /package/dist/__tests__/{components/SmartGroupModal.test.d.ts → composables/usePresence.test.d.ts} +0 -0
- /package/dist/__tests__/{components/TimePicker.test.d.ts → composables/useRealtime.test.d.ts} +0 -0
- /package/dist/__tests__/{components/UnitInput.test.d.ts → composables/useRequest.test.d.ts} +0 -0
- /package/dist/__tests__/{components/WellPlate.sampleTypeIndicator.test.d.ts → composables/useVersionedSave.test.d.ts} +0 -0
- /package/dist/__tests__/{components/iconButtonIconSizing.test.d.ts → utils/formula.test.d.ts} +0 -0
- /package/dist/__tests__/{composables/useAnalysisArtifacts.test.d.ts → utils/time.test.d.ts} +0 -0
- /package/dist/components/{FormActions.vue.d.ts → internal/FormActionsInternal.vue.d.ts} +0 -0
- /package/dist/{composables → components/internal}/autoGroup/colors.d.ts +0 -0
- /package/dist/{composables → components/internal}/autoGroup/index.d.ts +0 -0
- /package/dist/{composables → components/internal}/autoGroup/tokenize.d.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/colors.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/tokenize.ts +0 -0
- /package/src/{composables → components/internal}/autoGroup/vocab.json +0 -0
|
@@ -34,7 +34,7 @@ export function resolveControlModel(
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
|
-
* Create a complete
|
|
37
|
+
* Create a complete control model binding for FormBuilder, SettingsModal and the PluginWorkspaceView sidebar from a simple controls data model.
|
|
38
38
|
*
|
|
39
39
|
* @example Recommended
|
|
40
40
|
* ```ts
|
|
@@ -4,23 +4,24 @@ import type {
|
|
|
4
4
|
} from 'vue'
|
|
5
5
|
import type {
|
|
6
6
|
PillNavItem,
|
|
7
|
-
SidebarBadgeTone,
|
|
8
7
|
SidebarToolSection,
|
|
9
8
|
SidebarToolSectionAction,
|
|
10
9
|
SelectOption,
|
|
11
10
|
SettingsModalSchema,
|
|
12
11
|
TopBarSettingsConfig,
|
|
12
|
+
Tone,
|
|
13
13
|
} from '../types'
|
|
14
14
|
import type { AccessPolicy } from '../permissions'
|
|
15
15
|
import type {
|
|
16
16
|
FieldCondition,
|
|
17
17
|
FieldValidation,
|
|
18
|
+
FormEnhancements,
|
|
18
19
|
FormFieldSchema,
|
|
19
20
|
FormFieldType,
|
|
20
21
|
FormSchema,
|
|
21
22
|
FormSectionSchema,
|
|
22
23
|
} from '../types/form-builder'
|
|
23
|
-
import type { WellConcentration } from '
|
|
24
|
+
import type { WellConcentration } from '../utils/dose'
|
|
24
25
|
|
|
25
26
|
export type ControlOptionValue = string | number | boolean
|
|
26
27
|
export type ControlOption = ControlOptionValue | SelectOption<unknown>
|
|
@@ -38,7 +39,7 @@ export interface ControlSectionConfig {
|
|
|
38
39
|
iconColor?: string
|
|
39
40
|
iconBg?: string
|
|
40
41
|
badge?: string | number
|
|
41
|
-
badgeTone?:
|
|
42
|
+
badgeTone?: Tone
|
|
42
43
|
actions?: SidebarToolSectionAction[]
|
|
43
44
|
columns?: 1 | 2 | 3
|
|
44
45
|
condition?: FieldCondition
|
|
@@ -107,6 +108,12 @@ export interface ControlSchemaOptions {
|
|
|
107
108
|
sectionLabel?: string
|
|
108
109
|
sections?: Record<string, ControlSectionConfig>
|
|
109
110
|
columns?: 1 | 2 | 3
|
|
111
|
+
/** Submit / cancel bar of the generated form; unset or `false` hides it. */
|
|
112
|
+
actions?: boolean | ControlFormActions
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** Labels of the generated form's submit / cancel bar. */
|
|
116
|
+
export interface ControlFormActions {
|
|
110
117
|
submitLabel?: string
|
|
111
118
|
cancelLabel?: string
|
|
112
119
|
showCancel?: boolean
|
|
@@ -114,7 +121,9 @@ export interface ControlSchemaOptions {
|
|
|
114
121
|
|
|
115
122
|
export interface ControlWorkspaceOptions extends ControlSchemaOptions {
|
|
116
123
|
initialValues?: Record<string, unknown>
|
|
117
|
-
|
|
124
|
+
/** Validators, dynamic options, a submit handler and field callbacks that JSON cannot express. */
|
|
125
|
+
enhancements?: FormEnhancements<Record<string, unknown>>
|
|
126
|
+
topBarSettings?: Omit<TopBarSettingsConfig, 'spec' | 'values'>
|
|
118
127
|
}
|
|
119
128
|
|
|
120
129
|
export interface ControlModelSectionConfig extends ControlSectionConfig {
|
|
@@ -138,7 +147,7 @@ export interface ControlModel extends Omit<ControlWorkspaceOptions, 'sections' |
|
|
|
138
147
|
componentBindings?: ControlComponentBindingsConfig
|
|
139
148
|
/** Alias for componentBindings in raw control models. */
|
|
140
149
|
components?: ControlComponentBindingsConfig
|
|
141
|
-
/** Optional
|
|
150
|
+
/** Optional componentProps mapping returned with the generated controls/options. */
|
|
142
151
|
componentProps?: ControlComponentPropsMap
|
|
143
152
|
/** Optional named componentProps mappings returned for multiple SDK components. */
|
|
144
153
|
componentPropsById?: ControlComponentPropsByIdMap
|
|
@@ -152,25 +161,28 @@ export interface ControlModelBinding {
|
|
|
152
161
|
componentPropsById?: ControlComponentPropsByIdMap
|
|
153
162
|
}
|
|
154
163
|
|
|
164
|
+
/** AppSidebar props (`v-bind`) for the generated sections and forms. */
|
|
155
165
|
export interface ControlSidebarBinding {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
166
|
+
spec: {
|
|
167
|
+
panels: Record<string, SidebarToolSection[]>
|
|
168
|
+
forms: Record<string, ControlFormSchema>
|
|
169
|
+
}
|
|
170
|
+
activeView: string
|
|
161
171
|
}
|
|
162
172
|
|
|
173
|
+
/** FormBuilder props (`v-bind`) for the generated form. */
|
|
163
174
|
export interface ControlFormBinding {
|
|
164
|
-
|
|
175
|
+
spec: ControlModelBinding
|
|
165
176
|
}
|
|
166
177
|
|
|
178
|
+
/** SettingsModal props (`v-bind`) for the generated settings. */
|
|
167
179
|
export interface ControlSettingsBinding {
|
|
168
|
-
|
|
180
|
+
spec: SettingsModalSchema
|
|
169
181
|
}
|
|
170
182
|
|
|
183
|
+
/** AppTopBar props (`v-bind`) for the generated settings button. */
|
|
171
184
|
export interface ControlTopBarSettingsBinding {
|
|
172
|
-
|
|
173
|
-
settingsConfig: TopBarSettingsConfig
|
|
185
|
+
spec: { settings: TopBarSettingsConfig }
|
|
174
186
|
}
|
|
175
187
|
|
|
176
188
|
export interface ControlWorkspaceFormBinding extends ControlFormBinding {
|
|
@@ -179,9 +191,6 @@ export interface ControlWorkspaceFormBinding extends ControlFormBinding {
|
|
|
179
191
|
}
|
|
180
192
|
|
|
181
193
|
export interface ControlWorkspaceSidebarBinding extends ControlSidebarBinding {
|
|
182
|
-
activeView: string
|
|
183
|
-
modelValue: Record<string, unknown>
|
|
184
|
-
'onUpdate:modelValue': (values: Record<string, unknown>) => void
|
|
185
194
|
values: Record<string, unknown>
|
|
186
195
|
'onUpdate:values': (values: Record<string, unknown>) => void
|
|
187
196
|
}
|
|
@@ -196,10 +205,12 @@ export interface ControlWorkspacePillNavBinding {
|
|
|
196
205
|
onSelect: (item: PillNavItem) => void
|
|
197
206
|
}
|
|
198
207
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
208
|
+
/** AppTopBar props (`v-bind`) for the generated view pills and settings button. */
|
|
209
|
+
export interface ControlWorkspaceTopBarBinding {
|
|
210
|
+
spec: { pills: PillNavItem[]; settings: TopBarSettingsConfig }
|
|
211
|
+
pill: string
|
|
202
212
|
onPillSelect: (item: PillNavItem) => void
|
|
213
|
+
onSettingsValuesChange: (values: Record<string, unknown>) => void
|
|
203
214
|
}
|
|
204
215
|
|
|
205
216
|
export type ControlWorkspaceAppTopBarPillBinding = ControlWorkspaceTopBarBinding
|
|
@@ -257,8 +268,6 @@ export interface WellPlateControlPropsOptions<TValues extends Record<string, unk
|
|
|
257
268
|
disabled?: ControlComponentPropSource<TValues>
|
|
258
269
|
readonly?: ControlComponentPropSource<TValues>
|
|
259
270
|
showLegend?: ControlComponentPropSource<TValues>
|
|
260
|
-
/** @deprecated WellPlate `showSampleTypeIndicator` is a no-op since MINT 1.3; removed in MINT 1.4. */
|
|
261
|
-
showSampleTypeIndicator?: ControlComponentPropSource<TValues>
|
|
262
271
|
/** Listener for WellPlate v-model updates. Set false to keep generated props one-way. */
|
|
263
272
|
onUpdateModelValue?: ((values: TValues) => (wellIds: string[]) => void) | false
|
|
264
273
|
}
|
|
@@ -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
|
|
|
@@ -134,12 +127,12 @@ export type PluginEndpointParamDefinition = string | {
|
|
|
134
127
|
required?: boolean
|
|
135
128
|
}
|
|
136
129
|
|
|
137
|
-
export interface
|
|
130
|
+
export interface CreateClientOptions {
|
|
138
131
|
endpoints: Record<string, PluginEndpointDefinition>
|
|
139
132
|
baseUrl?: string
|
|
140
133
|
}
|
|
141
134
|
|
|
142
|
-
export interface
|
|
135
|
+
export interface BuildEndpointUrlOptions {
|
|
143
136
|
/** Override the generated or platform-injected API base URL. */
|
|
144
137
|
baseUrl?: string
|
|
145
138
|
/** Return only the endpoint path and query string instead of base URL + path. */
|
|
@@ -158,9 +151,11 @@ export interface PluginClientRequestOptions {
|
|
|
158
151
|
signal?: AbortSignal
|
|
159
152
|
}
|
|
160
153
|
|
|
161
|
-
export interface
|
|
154
|
+
export interface DownloadEndpointOptions extends PluginEndpointRequestOptions {
|
|
162
155
|
/** Browser download filename. When omitted, the blob is returned without triggering a download. */
|
|
163
156
|
filename?: string
|
|
157
|
+
/** Save the blob as `filename` in the browser. Default true; `false` only returns the blob. */
|
|
158
|
+
save?: boolean
|
|
164
159
|
/** Delay before revoking the object URL after a browser download is triggered. */
|
|
165
160
|
revokeObjectUrlDelayMs?: number
|
|
166
161
|
}
|
|
@@ -172,7 +167,7 @@ export interface DownloadBlobOptions {
|
|
|
172
167
|
|
|
173
168
|
export type PluginSettingsValues<TSettings> = Partial<TSettings> & Record<string, unknown>
|
|
174
169
|
|
|
175
|
-
export interface
|
|
170
|
+
export interface UseSettingsEndpointOptions {
|
|
176
171
|
/** Plugin name for platform persistence. Defaults to the integrated platform plugin name. */
|
|
177
172
|
pluginName?: string
|
|
178
173
|
/** Plugin API base URL for standalone/local settings routes. Generated clients pass pluginApiPrefix. */
|
|
@@ -189,7 +184,7 @@ export interface UsePluginSettingsOptions {
|
|
|
189
184
|
loadOnMount?: boolean
|
|
190
185
|
}
|
|
191
186
|
|
|
192
|
-
export interface
|
|
187
|
+
export interface UseSettingsEndpointReturn<TSettings = Record<string, unknown>> {
|
|
193
188
|
/** Current typed settings values. */
|
|
194
189
|
settings: ComputedRef<PluginSettingsValues<TSettings>>
|
|
195
190
|
/** Editable settings values for SettingsModal. */
|
|
@@ -210,9 +205,9 @@ export interface UsePluginSettingsReturn<TSettings = Record<string, unknown>> {
|
|
|
210
205
|
reset: () => void
|
|
211
206
|
}
|
|
212
207
|
|
|
213
|
-
export type
|
|
208
|
+
export type { EventStreamMessage, UseEventStreamReturn } from './eventStream'
|
|
214
209
|
|
|
215
|
-
export interface
|
|
210
|
+
export interface StreamOptions<TData = string> {
|
|
216
211
|
/** Override the generated or platform-injected API base URL. */
|
|
217
212
|
baseUrl?: string
|
|
218
213
|
/** Start the stream immediately. Defaults to true. */
|
|
@@ -228,12 +223,10 @@ export interface PluginEventStreamOptions<TData = string> {
|
|
|
228
223
|
/** Extra request headers. Authorization is injected unless already supplied. */
|
|
229
224
|
headers?: Record<string, string>
|
|
230
225
|
onOpen?: () => void
|
|
231
|
-
onMessage?: (message:
|
|
226
|
+
onMessage?: (message: EventStreamMessage<TData>) => void
|
|
232
227
|
onError?: (error: unknown) => void
|
|
233
228
|
}
|
|
234
229
|
|
|
235
|
-
export type UsePluginEventStreamReturn<TData = string> = UseEventStreamReturn<TData>
|
|
236
|
-
|
|
237
230
|
export type PluginFormDataValue =
|
|
238
231
|
| string
|
|
239
232
|
| number
|
|
@@ -245,32 +238,6 @@ export type PluginFormDataValue =
|
|
|
245
238
|
|
|
246
239
|
export type PluginFormDataPayload = Record<string, PluginFormDataValue | PluginFormDataValue[]>
|
|
247
240
|
|
|
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
241
|
export type PluginEndpointCaller = (
|
|
275
242
|
payloadOrOptions?: unknown,
|
|
276
243
|
options?: PluginClientRequestOptions,
|
|
@@ -379,34 +346,10 @@ export function downloadBlob(blob: Blob, filename: string, options: DownloadBlob
|
|
|
379
346
|
setTimeout(() => URL.revokeObjectURL(blobUrl), options.revokeObjectUrlDelayMs ?? 100)
|
|
380
347
|
}
|
|
381
348
|
|
|
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
349
|
/** Create a typed plugin API client from a generated MINT plugin contract. */
|
|
407
|
-
export function
|
|
350
|
+
export function createClient<TClient extends object = GeneratedPluginClient>(
|
|
408
351
|
contract: PluginContract,
|
|
409
|
-
options:
|
|
352
|
+
options: CreateClientOptions,
|
|
410
353
|
): TClient {
|
|
411
354
|
const client: Record<string, PluginEndpointCaller> = {}
|
|
412
355
|
|
|
@@ -424,7 +367,6 @@ export function createPluginClient<TClient extends object = GeneratedPluginClien
|
|
|
424
367
|
const api = useApi({
|
|
425
368
|
baseUrl: parts.baseUrl,
|
|
426
369
|
withAuth: endpoint.requiresAuth !== false,
|
|
427
|
-
typedErrors: true,
|
|
428
370
|
})
|
|
429
371
|
const config = endpointRequestConfig(endpoint, parts.query, callOptions)
|
|
430
372
|
|
|
@@ -457,7 +399,7 @@ export function createPluginClient<TClient extends object = GeneratedPluginClien
|
|
|
457
399
|
}
|
|
458
400
|
|
|
459
401
|
/** Send multipart or raw binary data to a generated endpoint with contract URL, cancellation, and auth handling. */
|
|
460
|
-
export async function
|
|
402
|
+
export async function uploadEndpoint<TResponse = unknown>(
|
|
461
403
|
contract: PluginContract,
|
|
462
404
|
endpoint: PluginEndpointDefinition,
|
|
463
405
|
payload?: unknown,
|
|
@@ -471,7 +413,6 @@ export async function uploadPluginEndpoint<TResponse = unknown>(
|
|
|
471
413
|
const api = useApi({
|
|
472
414
|
baseUrl: parts.baseUrl,
|
|
473
415
|
withAuth: endpoint.requiresAuth !== false,
|
|
474
|
-
typedErrors: true,
|
|
475
416
|
})
|
|
476
417
|
const body = endpoint.hasBody
|
|
477
418
|
? requestBodyFromPayload(payload, parts.requestPayload, endpoint)
|
|
@@ -496,11 +437,11 @@ export async function uploadPluginEndpoint<TResponse = unknown>(
|
|
|
496
437
|
}
|
|
497
438
|
|
|
498
439
|
/** Fetch a generated plugin endpoint as a Blob and optionally trigger a browser download. */
|
|
499
|
-
export async function
|
|
440
|
+
export async function downloadEndpoint(
|
|
500
441
|
contract: PluginContract,
|
|
501
442
|
endpoint: PluginEndpointDefinition,
|
|
502
443
|
payload?: unknown,
|
|
503
|
-
options:
|
|
444
|
+
options: DownloadEndpointOptions = {},
|
|
504
445
|
): Promise<Blob> {
|
|
505
446
|
if (endpoint.requestContentType === MULTIPART_FORM_DATA) {
|
|
506
447
|
throw new Error('[MINT SDK] Plugin download endpoints do not support multipart request bodies')
|
|
@@ -510,7 +451,6 @@ export async function downloadPluginEndpoint(
|
|
|
510
451
|
const api = useApi({
|
|
511
452
|
baseUrl: parts.baseUrl,
|
|
512
453
|
withAuth: endpoint.requiresAuth !== false,
|
|
513
|
-
typedErrors: true,
|
|
514
454
|
})
|
|
515
455
|
const config = {
|
|
516
456
|
...(endpointRequestConfig(endpoint, parts.query, { signal: options.signal }) ?? {}),
|
|
@@ -530,7 +470,7 @@ export async function downloadPluginEndpoint(
|
|
|
530
470
|
throw new Error(`[MINT SDK] Unsupported plugin endpoint method: ${endpoint.method}`)
|
|
531
471
|
}
|
|
532
472
|
|
|
533
|
-
if (options.filename) {
|
|
473
|
+
if (options.filename && options.save !== false) {
|
|
534
474
|
downloadBlob(blob, options.filename, {
|
|
535
475
|
revokeObjectUrlDelayMs: options.revokeObjectUrlDelayMs,
|
|
536
476
|
})
|
|
@@ -539,15 +479,10 @@ export async function downloadPluginEndpoint(
|
|
|
539
479
|
return blob
|
|
540
480
|
}
|
|
541
481
|
|
|
542
|
-
function normalizePluginSettingsOptions(options:
|
|
482
|
+
function normalizePluginSettingsOptions(options: UseSettingsEndpointOptions | string = {}): UseSettingsEndpointOptions {
|
|
543
483
|
return typeof options === 'string' ? { pluginName: options } : options
|
|
544
484
|
}
|
|
545
485
|
|
|
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
486
|
const PLATFORM_OWNED_SETTINGS_KEY = 'allowed_experiment_types'
|
|
552
487
|
|
|
553
488
|
/**
|
|
@@ -561,12 +496,12 @@ function withSecretFormat(
|
|
|
561
496
|
secretFormat: string | null,
|
|
562
497
|
): Record<string, unknown> {
|
|
563
498
|
if (!secretFormat) return payload
|
|
564
|
-
return { ...payload, [
|
|
499
|
+
return { ...payload, [pluginSecret.FORMAT_KEY]: secretFormat }
|
|
565
500
|
}
|
|
566
501
|
|
|
567
502
|
function responseSecretFormat(response: unknown): string | null {
|
|
568
503
|
if (!response || typeof response !== 'object') return null
|
|
569
|
-
const format = (response as Record<string, unknown>)[
|
|
504
|
+
const format = (response as Record<string, unknown>)[pluginSecret.FORMAT_KEY]
|
|
570
505
|
return typeof format === 'string' && format ? format : null
|
|
571
506
|
}
|
|
572
507
|
|
|
@@ -631,12 +566,12 @@ function platformOwnedSettingsPatch(settings: Record<string, unknown>): Record<s
|
|
|
631
566
|
}
|
|
632
567
|
|
|
633
568
|
/** Load, edit, and persist plugin settings from platform config or the plugin-local settings router. */
|
|
634
|
-
export function
|
|
635
|
-
options:
|
|
636
|
-
):
|
|
569
|
+
export function useSettingsEndpoint<TSettings = Record<string, unknown>>(
|
|
570
|
+
options: UseSettingsEndpointOptions | string = {},
|
|
571
|
+
): UseSettingsEndpointReturn<TSettings> {
|
|
637
572
|
const resolvedOptions = normalizePluginSettingsOptions(options)
|
|
638
573
|
const injectedContext = getInjectedPlatformContext()
|
|
639
|
-
const { plugin, isIntegrated } =
|
|
574
|
+
const { plugin, integrated: isIntegrated } = usePlatform()
|
|
640
575
|
const platformApi = useApi({ baseUrl: resolvedOptions.platformApiBaseUrl ?? injectedContext?.platformApiUrl })
|
|
641
576
|
const pluginApi = useApi({ baseUrl: resolvedOptions.apiBaseUrl ?? injectedContext?.plugin?.api_prefix })
|
|
642
577
|
|
|
@@ -644,7 +579,7 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
644
579
|
const savedValues = shallowRef<Record<string, unknown>>({})
|
|
645
580
|
const revision = ref<string | null>(null)
|
|
646
581
|
const secretFormat = ref<string | null>(null)
|
|
647
|
-
const request =
|
|
582
|
+
const request = useRequest('Plugin settings request failed.')
|
|
648
583
|
const isLoading = ref(false)
|
|
649
584
|
const isSaving = ref(false)
|
|
650
585
|
|
|
@@ -667,7 +602,7 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
667
602
|
const isDirty = computed(() => JSON.stringify(values.value) !== JSON.stringify(savedValues.value))
|
|
668
603
|
const settingsConfig = computed<TopBarSettingsConfig>(() => ({
|
|
669
604
|
title: resolvedOptions.title,
|
|
670
|
-
|
|
605
|
+
spec: resolvedOptions.schema ?? undefined,
|
|
671
606
|
showAppearance: resolvedOptions.showAppearance,
|
|
672
607
|
values: values.value,
|
|
673
608
|
}))
|
|
@@ -696,11 +631,11 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
696
631
|
() => platformApi.get<{ plugin_name: string; config: Record<string, unknown> }>(
|
|
697
632
|
`/plugins/${encodeURIComponent(resolvedPluginName.value)}/config`,
|
|
698
633
|
),
|
|
699
|
-
{
|
|
634
|
+
{ kind: 'load', errorMessage: 'Failed to load plugin settings' },
|
|
700
635
|
)
|
|
701
636
|
: await request.run(
|
|
702
637
|
() => pluginApi.get<{ settings: Record<string, unknown>; mode?: string }>('/settings'),
|
|
703
|
-
{
|
|
638
|
+
{ kind: 'load', errorMessage: 'Failed to load plugin settings' },
|
|
704
639
|
)
|
|
705
640
|
applyLoaded(
|
|
706
641
|
responseSettingsPayload(response),
|
|
@@ -746,7 +681,7 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
746
681
|
),
|
|
747
682
|
},
|
|
748
683
|
),
|
|
749
|
-
{
|
|
684
|
+
{ kind: 'save', errorMessage: 'Failed to save plugin settings' },
|
|
750
685
|
)
|
|
751
686
|
nextRevision = responseSettingsRevision(response) ?? nextRevision
|
|
752
687
|
}
|
|
@@ -761,7 +696,7 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
761
696
|
`/plugins/${encodeURIComponent(resolvedPluginName.value)}/config`,
|
|
762
697
|
{ config: platformOwnedSettingsPatch(payload) },
|
|
763
698
|
),
|
|
764
|
-
{
|
|
699
|
+
{ kind: 'save', errorMessage: 'Failed to save plugin settings' },
|
|
765
700
|
)
|
|
766
701
|
nextRevision = responseSettingsRevision(response) ?? nextRevision
|
|
767
702
|
}
|
|
@@ -783,7 +718,7 @@ export function usePluginSettings<TSettings = Record<string, unknown>>(
|
|
|
783
718
|
mode?: string
|
|
784
719
|
revision?: string
|
|
785
720
|
}>('/settings', withSecretFormat(payload, secretFormat.value), ifMatch),
|
|
786
|
-
{
|
|
721
|
+
{ kind: 'save', errorMessage: 'Failed to save plugin settings' },
|
|
787
722
|
)
|
|
788
723
|
}
|
|
789
724
|
applyLoaded(
|
|
@@ -869,7 +804,7 @@ function pluginEventStreamTransport(
|
|
|
869
804
|
}
|
|
870
805
|
}
|
|
871
806
|
|
|
872
|
-
function looksLikeEventStreamOptions(value: unknown): value is
|
|
807
|
+
function looksLikeEventStreamOptions(value: unknown): value is StreamOptions {
|
|
873
808
|
if (!value || typeof value !== 'object') return false
|
|
874
809
|
const candidate = value as Record<string, unknown>
|
|
875
810
|
return [
|
|
@@ -887,23 +822,23 @@ function looksLikeEventStreamOptions(value: unknown): value is PluginEventStream
|
|
|
887
822
|
}
|
|
888
823
|
|
|
889
824
|
/** Consume a generated plugin SSE endpoint with auth headers, reconnect, and teardown. */
|
|
890
|
-
export function
|
|
825
|
+
export function useEventStream<TData = string>(
|
|
891
826
|
contract: PluginContract,
|
|
892
827
|
endpoint: PluginEndpointDefinition,
|
|
893
|
-
options?:
|
|
894
|
-
):
|
|
895
|
-
export function
|
|
828
|
+
options?: StreamOptions<TData>,
|
|
829
|
+
): UseEventStreamReturn<TData>
|
|
830
|
+
export function useEventStream<TData = string>(
|
|
896
831
|
contract: PluginContract,
|
|
897
832
|
endpoint: PluginEndpointDefinition,
|
|
898
833
|
payload?: unknown,
|
|
899
|
-
options?:
|
|
900
|
-
):
|
|
901
|
-
export function
|
|
834
|
+
options?: StreamOptions<TData>,
|
|
835
|
+
): UseEventStreamReturn<TData>
|
|
836
|
+
export function useEventStream<TData = string>(
|
|
902
837
|
contract: PluginContract,
|
|
903
838
|
endpoint: PluginEndpointDefinition,
|
|
904
839
|
payloadOrOptions?: unknown,
|
|
905
|
-
maybeOptions?:
|
|
906
|
-
):
|
|
840
|
+
maybeOptions?: StreamOptions<TData>,
|
|
841
|
+
): UseEventStreamReturn<TData> {
|
|
907
842
|
if (endpoint.method !== 'get') {
|
|
908
843
|
throw new Error(`[MINT SDK] Plugin event streams must use GET; got ${endpoint.method}`)
|
|
909
844
|
}
|
|
@@ -914,11 +849,11 @@ export function usePluginEventStream<TData = string>(
|
|
|
914
849
|
maybeOptions === undefined && looksLikeEventStreamOptions(payloadOrOptions)
|
|
915
850
|
? payloadOrOptions
|
|
916
851
|
: maybeOptions ?? {}
|
|
917
|
-
) as
|
|
852
|
+
) as StreamOptions<TData>
|
|
918
853
|
const responseType = endpoint.responseType?.trim()
|
|
919
854
|
const parseJson = options.parseJson ?? Boolean(responseType && responseType !== 'string')
|
|
920
|
-
return
|
|
921
|
-
() =>
|
|
855
|
+
return createEventStream<TData>(
|
|
856
|
+
() => buildEndpointUrl(contract, endpoint, payload, { baseUrl: options.baseUrl }),
|
|
922
857
|
{
|
|
923
858
|
transport: pluginEventStreamTransport(endpoint),
|
|
924
859
|
immediate: options.immediate,
|
|
@@ -935,76 +870,3 @@ export function usePluginEventStream<TData = string>(
|
|
|
935
870
|
},
|
|
936
871
|
)
|
|
937
872
|
}
|
|
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)
|