@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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ComputedRef, MaybeRefOrGetter, Ref } from 'vue';
|
|
2
2
|
import { AnalysisArtifactDetail, AnalysisArtifactMetadataUpdate, AnalysisArtifactStatusFilter, AnalysisArtifactSummary, AnalysisArtifactTarget } from '../types/analysisArtifactTypes';
|
|
3
3
|
export { ANALYSIS_FILE_ARTIFACT_SCHEMA } from '../types/analysisArtifactTypes';
|
|
4
|
-
export interface
|
|
5
|
-
/** Experiment id; defaults to
|
|
4
|
+
export interface UseArtifactsOptions {
|
|
5
|
+
/** Experiment id; defaults to the current experiment (`useExperimentStore`). Refetches when it changes. */
|
|
6
6
|
experimentId?: MaybeRefOrGetter<number | undefined>;
|
|
7
7
|
/** Override API base URL. */
|
|
8
8
|
apiBaseUrl?: string;
|
|
@@ -13,14 +13,14 @@ export interface UseAnalysisArtifactsOptions {
|
|
|
13
13
|
/** Fetch as soon as an experiment id is available. */
|
|
14
14
|
immediate?: boolean;
|
|
15
15
|
}
|
|
16
|
-
export interface
|
|
16
|
+
export interface UseArtifactsReturn {
|
|
17
17
|
/** Fetched artifacts, scoped to pluginId when set. */
|
|
18
18
|
artifacts: ComputedRef<AnalysisArtifactSummary[]>;
|
|
19
19
|
/** Artifacts after applying statusFilter, pluginFilter, and search. */
|
|
20
20
|
visibleArtifacts: ComputedRef<AnalysisArtifactSummary[]>;
|
|
21
21
|
/** Detail loaded by the last successful getDetail call, or null. */
|
|
22
22
|
selectedDetail: Ref<AnalysisArtifactDetail | null>;
|
|
23
|
-
/** Resolved experiment id from options
|
|
23
|
+
/** Resolved experiment id from options or the current experiment. */
|
|
24
24
|
currentExperimentId: ComputedRef<number | undefined>;
|
|
25
25
|
/** Whether an experiment id is available. */
|
|
26
26
|
hasCurrentExperiment: ComputedRef<boolean>;
|
|
@@ -62,8 +62,8 @@ export interface UseAnalysisArtifactsReturn {
|
|
|
62
62
|
*
|
|
63
63
|
* @example Recommended
|
|
64
64
|
* ```ts
|
|
65
|
-
* const artifacts =
|
|
65
|
+
* const artifacts = useArtifacts({ pluginId: 'LEAF' })
|
|
66
66
|
* await artifacts.list()
|
|
67
67
|
* ```
|
|
68
68
|
*/
|
|
69
|
-
export declare function
|
|
69
|
+
export declare function useArtifacts(options?: UseArtifactsOptions): UseArtifactsReturn;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ComputedRef } from 'vue';
|
|
2
|
+
import { ExperimentSummary } from '../types';
|
|
3
|
+
/** Load state of the current experiment record. */
|
|
4
|
+
export type ExperimentLoadStatus = 'idle' | 'loading' | 'ready' | 'error';
|
|
5
|
+
export interface UseExperimentReturn {
|
|
6
|
+
/** Id of the current experiment; `null` when none is selected. */
|
|
7
|
+
id: ComputedRef<number | null>;
|
|
8
|
+
/** Record of the current experiment, once the platform returned it. */
|
|
9
|
+
current: ComputedRef<ExperimentSummary | null>;
|
|
10
|
+
/** `idle` with no selection, then `loading`, `ready` or `error`. */
|
|
11
|
+
status: ComputedRef<ExperimentLoadStatus>;
|
|
12
|
+
/** Message of the last failed load, or `null`. */
|
|
13
|
+
error: ComputedRef<string | null>;
|
|
14
|
+
/** Read the current experiment again. The selection does not change. */
|
|
15
|
+
refresh: () => Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Read the experiment the plugin page works on.
|
|
19
|
+
*
|
|
20
|
+
* The platform selects the experiment and keeps it in step with the URL; this
|
|
21
|
+
* composable only reads it. Watch `id` to respond to a change. In standalone
|
|
22
|
+
* mode no experiment is selected and `id` stays `null`.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const experiment = useExperiment()
|
|
27
|
+
* watch(experiment.id, (id) => { if (id !== null) void load(id) }, { immediate: true })
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function useExperiment(): UseExperimentReturn;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Ref } from 'vue';
|
|
2
2
|
import { PickerAdapter, PickerCapabilities, PickerNode, PickerSelection, PickerSelectionMode, PickerSort, PickerSource } from '../types/filePicker';
|
|
3
|
-
import {
|
|
3
|
+
import { OptionPrimitive, SelectOption } from '../types';
|
|
4
4
|
interface PickerStateProps {
|
|
5
5
|
open: boolean;
|
|
6
6
|
adapter: PickerAdapter;
|
|
@@ -21,7 +21,7 @@ type PickerEmit = {
|
|
|
21
21
|
export declare function useFilePicker(props: PickerStateProps, emit: PickerEmit, searchArea: Ref<HTMLElement | null>): {
|
|
22
22
|
previewNode: import('vue').ComputedRef<PickerNode>;
|
|
23
23
|
sourceNames: Record<PickerSource, string>;
|
|
24
|
-
segments: import('vue').ComputedRef<
|
|
24
|
+
segments: import('vue').ComputedRef<SelectOption<OptionPrimitive>[]>;
|
|
25
25
|
activeSegment: import('vue').ComputedRef<string>;
|
|
26
26
|
mounts: import('vue').ShallowRef<PickerNode[], PickerNode[]>;
|
|
27
27
|
mountView: import('vue').ComputedRef<boolean>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue';
|
|
2
|
+
import { JobListPayload, JobState, JobStateInput } from '../types/jobs';
|
|
3
|
+
export type JobsStatusTrayTab = 'active' | 'history';
|
|
4
|
+
/**
|
|
5
|
+
* The canonical owner of a collection of plugin jobs.
|
|
6
|
+
*
|
|
7
|
+
* Sources, rather than job-center UI, own polling, event streams, and all job
|
|
8
|
+
* mutations. This keeps components and consumers on one reactive job graph.
|
|
9
|
+
*/
|
|
10
|
+
export interface PluginJobCenterSource {
|
|
11
|
+
jobs: MaybeRefOrGetter<readonly JobStateInput[]>;
|
|
12
|
+
refresh?: () => Promise<JobListPayload | readonly JobStateInput[] | void>;
|
|
13
|
+
cancel?: (jobId: string) => Promise<JobStateInput | void>;
|
|
14
|
+
delete?: (jobId: string) => Promise<boolean | void>;
|
|
15
|
+
clear?: () => Promise<number | void>;
|
|
16
|
+
dispose?: () => void;
|
|
17
|
+
}
|
|
18
|
+
export interface CombinedPluginJobCenterSource extends PluginJobCenterSource {
|
|
19
|
+
jobs: ComputedRef<readonly JobStateInput[]>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Combines independent job runtimes without copying their reactive state.
|
|
23
|
+
*
|
|
24
|
+
* Job ids must be globally unique across the sources. A duplicate id throws
|
|
25
|
+
* when jobs are read or an id-routed action is requested, rather than silently
|
|
26
|
+
* dispatching a mutation to the wrong owner.
|
|
27
|
+
*/
|
|
28
|
+
export declare function combinePluginJobSources(sources: readonly PluginJobCenterSource[]): CombinedPluginJobCenterSource;
|
|
29
|
+
export interface UseJobCenterOptions {
|
|
30
|
+
source?: MaybeRefOrGetter<PluginJobCenterSource | undefined>;
|
|
31
|
+
loadOnMount?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface UseJobCenterReturn {
|
|
34
|
+
jobs: ComputedRef<JobState[]>;
|
|
35
|
+
activeJobs: ComputedRef<JobState[]>;
|
|
36
|
+
historyJobs: ComputedRef<JobState[]>;
|
|
37
|
+
deletableJobs: ComputedRef<JobState[]>;
|
|
38
|
+
featuredJob: ComputedRef<JobState | null>;
|
|
39
|
+
canRefresh: ComputedRef<boolean>;
|
|
40
|
+
canCancel: ComputedRef<boolean>;
|
|
41
|
+
canDelete: ComputedRef<boolean>;
|
|
42
|
+
canClearFinished: ComputedRef<boolean>;
|
|
43
|
+
isOpen: Ref<boolean>;
|
|
44
|
+
activeTab: Ref<JobsStatusTrayTab>;
|
|
45
|
+
isLoading: Ref<boolean>;
|
|
46
|
+
error: ShallowRef<string | null>;
|
|
47
|
+
pendingJobIds: Ref<Set<string>>;
|
|
48
|
+
open: () => void;
|
|
49
|
+
close: () => void;
|
|
50
|
+
toggle: () => void;
|
|
51
|
+
refresh: () => Promise<boolean>;
|
|
52
|
+
cancelJob: (job: JobState) => Promise<boolean>;
|
|
53
|
+
deleteJob: (job: JobState) => Promise<boolean>;
|
|
54
|
+
clearFinished: () => Promise<boolean>;
|
|
55
|
+
isPending: (job: JobState) => boolean;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Headless controller for plugin job presentation and actions.
|
|
59
|
+
*
|
|
60
|
+
* Every job list is derived directly from the source. The controller never
|
|
61
|
+
* mirrors source jobs into another ref.
|
|
62
|
+
*/
|
|
63
|
+
export declare function useJobCenter(options?: UseJobCenterOptions): UseJobCenterReturn;
|
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
import { ComputedRef, Ref, ShallowRef } from 'vue';
|
|
2
|
-
import {
|
|
2
|
+
import { PluginJobCenterSource } from './useJobCenter';
|
|
3
3
|
import { GeneratedAnalysisJob, GeneratedAnalysisResult, GeneratedSession, GeneratedAnalysisManifest, PluginJobPathInput, PluginJobPathUpload, PluginJobStagedPartInput, PluginJobStagedPartUploadResult, PluginJobStaging, PluginJobStagingPagination } from '../types/generated-ui';
|
|
4
4
|
export type GeneratedAnalysisTransport = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
5
5
|
export interface GeneratedAnalysisTransportOptions {
|
|
6
6
|
fetcher?: typeof fetch;
|
|
7
7
|
getAccessToken?: () => string | null | undefined;
|
|
8
8
|
}
|
|
9
|
-
export interface
|
|
9
|
+
export interface UseJobsEndpointOptions {
|
|
10
10
|
baseUrl: string;
|
|
11
11
|
transport?: GeneratedAnalysisTransport;
|
|
12
12
|
storage?: Storage;
|
|
13
13
|
createId?: () => string;
|
|
14
|
-
|
|
14
|
+
/** Milliseconds between job list polls while no event stream is open. Default 750. */
|
|
15
|
+
poll?: number;
|
|
15
16
|
stream?: boolean;
|
|
16
17
|
streamReconnectDelay?: number;
|
|
18
|
+
/** List the existing jobs at once instead of on the first `submit()` or `refresh()`. */
|
|
17
19
|
immediate?: boolean;
|
|
20
|
+
/** Load the generated UI manifest (`/generated/manifest`) before the jobs. */
|
|
21
|
+
manifest?: boolean;
|
|
18
22
|
}
|
|
19
|
-
export type GeneratedAnalysisOptions = UsePluginJobsOptions;
|
|
20
23
|
export interface PluginJobWaitOptions {
|
|
21
24
|
signal?: AbortSignal;
|
|
22
25
|
rejectOnFailure?: boolean;
|
|
@@ -24,7 +27,7 @@ export interface PluginJobWaitOptions {
|
|
|
24
27
|
export interface PluginJobRequestOptions {
|
|
25
28
|
signal?: AbortSignal;
|
|
26
29
|
}
|
|
27
|
-
export interface
|
|
30
|
+
export interface UseJobsEndpointReturn extends PluginJobCenterSource {
|
|
28
31
|
manifest: ShallowRef<GeneratedAnalysisManifest | null>;
|
|
29
32
|
session: ShallowRef<GeneratedSession | null>;
|
|
30
33
|
jobs: ShallowRef<GeneratedAnalysisJob[]>;
|
|
@@ -33,39 +36,35 @@ export interface UsePluginJobsReturn extends PluginJobCenterSource {
|
|
|
33
36
|
isSubmitting: Ref<boolean>;
|
|
34
37
|
error: ShallowRef<string | null>;
|
|
35
38
|
status: ShallowRef<'idle' | 'initializing' | 'ready' | 'paused' | 'error' | 'disposed'>;
|
|
36
|
-
initialize: () => Promise<void>;
|
|
37
|
-
ready: () => Promise<void>;
|
|
38
39
|
uploadPath: (input: PluginJobPathInput, definitionId?: string) => Promise<PluginJobPathUpload>;
|
|
39
40
|
uploadStagedPart: <Metadata>(input: PluginJobStagedPartInput<Metadata>) => Promise<PluginJobStagedPartUploadResult<Metadata>>;
|
|
40
41
|
getJobStaging: <Metadata = unknown>(job: GeneratedAnalysisJob | string, pagination?: PluginJobStagingPagination) => Promise<PluginJobStaging<Metadata>>;
|
|
41
42
|
sealJob: (job: GeneratedAnalysisJob | string) => Promise<GeneratedAnalysisJob>;
|
|
43
|
+
/** Submit a job. The first call opens the job session. */
|
|
42
44
|
submit: (definitionId: string, inputs: Record<string, unknown>) => Promise<GeneratedAnalysisJob>;
|
|
43
|
-
|
|
45
|
+
result: (job: GeneratedAnalysisJob) => Promise<GeneratedAnalysisResult | null>;
|
|
44
46
|
resultForJob: (jobId: string) => GeneratedAnalysisResult | null;
|
|
45
|
-
|
|
47
|
+
/** List the jobs again. The first call opens the job session. */
|
|
46
48
|
refresh: () => Promise<GeneratedAnalysisJob[]>;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
get: (jobId: string, options?: PluginJobRequestOptions) => Promise<GeneratedAnalysisJob>;
|
|
50
|
+
wait: (job: GeneratedAnalysisJob | string, options?: PluginJobWaitOptions) => Promise<GeneratedAnalysisJob>;
|
|
49
51
|
jobsFor: (definitionId: string) => GeneratedAnalysisJob[];
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
cancel: (job: GeneratedAnalysisJob | string) => Promise<GeneratedAnalysisJob>;
|
|
53
|
+
delete: (job: GeneratedAnalysisJob | string) => Promise<boolean>;
|
|
54
|
+
clear: (definitionId?: string) => Promise<number>;
|
|
53
55
|
pause: () => void;
|
|
54
56
|
resume: () => void;
|
|
55
57
|
dispose: () => void;
|
|
56
|
-
/** @deprecated Pass the runtime itself to SDK job UI as its source. */
|
|
57
|
-
jobsAdapter: JobsStatusTrayAdapter;
|
|
58
58
|
}
|
|
59
|
-
export type UseGeneratedAnalysisReturn = UsePluginJobsReturn;
|
|
60
59
|
export declare function createGeneratedAnalysisTransport(options?: GeneratedAnalysisTransportOptions): GeneratedAnalysisTransport;
|
|
61
|
-
export declare function useGeneratedAnalysis(options: GeneratedAnalysisOptions): UseGeneratedAnalysisReturn;
|
|
62
60
|
/**
|
|
63
|
-
* Connect a
|
|
61
|
+
* Connect a frontend to the SDK-owned job lifecycle of one plugin API prefix.
|
|
62
|
+
* Generated clients use it through `useJobs()`.
|
|
64
63
|
*
|
|
65
|
-
* @example
|
|
64
|
+
* @example
|
|
66
65
|
* ```ts
|
|
67
|
-
* const jobs =
|
|
68
|
-
* await jobs.
|
|
66
|
+
* const jobs = useJobsEndpoint({ baseUrl: '/api/leaf', immediate: true })
|
|
67
|
+
* const job = await jobs.submit('fit-plate', inputs)
|
|
69
68
|
* ```
|
|
70
69
|
*/
|
|
71
|
-
export declare function
|
|
70
|
+
export declare function useJobsEndpoint(options: UseJobsEndpointOptions): UseJobsEndpointReturn;
|
|
@@ -23,7 +23,7 @@ export interface UseMenuKeyboardReturn {
|
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Shared keyboard contract for menu- and listbox-style disclosure panels (the
|
|
26
|
-
* WAI-ARIA menu button pattern). Used by ActionMenu and
|
|
26
|
+
* WAI-ARIA menu button pattern). Used by ActionMenu and the platform account menu,
|
|
27
27
|
* each pairing it with `useDropdownState` for the disclosure state itself.
|
|
28
28
|
*/
|
|
29
29
|
export declare function useMenuKeyboard(options: UseMenuKeyboardOptions): UseMenuKeyboardReturn;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Access, ThemeMode } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Read the platform context the MINT platform injects into a plugin page.
|
|
4
|
+
*
|
|
5
|
+
* `can(access)` answers with the same three levels as the Python `access`
|
|
6
|
+
* option. A page with no signed-in user passes every check when it runs
|
|
7
|
+
* standalone or the platform reports `authRequired: false`; the platform
|
|
8
|
+
* still checks every request.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const platform = usePlatform()
|
|
13
|
+
* const canConfigure = computed(() => platform.can('configure'))
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function usePlatform(): {
|
|
17
|
+
integrated: import('vue').ComputedRef<boolean>;
|
|
18
|
+
plugin: import('vue').ComputedRef<{
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
display_name: string;
|
|
22
|
+
version: string;
|
|
23
|
+
plugin_type: string;
|
|
24
|
+
route_prefix: string;
|
|
25
|
+
api_prefix: string;
|
|
26
|
+
settings_api: "plugin" | "platform";
|
|
27
|
+
description?: string | undefined;
|
|
28
|
+
icon?: string | undefined;
|
|
29
|
+
color?: string | undefined;
|
|
30
|
+
frontend_revision?: string | undefined;
|
|
31
|
+
nav_items?: {
|
|
32
|
+
path: string;
|
|
33
|
+
label: string;
|
|
34
|
+
id?: string | undefined;
|
|
35
|
+
icon?: string | undefined;
|
|
36
|
+
description?: string | undefined;
|
|
37
|
+
requiresAuth?: boolean | undefined;
|
|
38
|
+
access?: "use" | "configure" | "admin" | undefined;
|
|
39
|
+
requiresFeature?: string | undefined;
|
|
40
|
+
children?: /*elided*/ any[] | undefined;
|
|
41
|
+
}[] | undefined;
|
|
42
|
+
settings?: import('..').PluginSettings | undefined;
|
|
43
|
+
} | undefined>;
|
|
44
|
+
user: import('vue').ComputedRef<{
|
|
45
|
+
id: number;
|
|
46
|
+
username: string;
|
|
47
|
+
role: string;
|
|
48
|
+
shortname?: string | undefined;
|
|
49
|
+
role_obj?: {
|
|
50
|
+
id: number;
|
|
51
|
+
slug: string;
|
|
52
|
+
name: string;
|
|
53
|
+
color: string;
|
|
54
|
+
permissions: string[];
|
|
55
|
+
project_scope: string;
|
|
56
|
+
plugin_access: string[] | "all" | null;
|
|
57
|
+
} | undefined;
|
|
58
|
+
} | undefined>;
|
|
59
|
+
theme: import('vue').ComputedRef<ThemeMode>;
|
|
60
|
+
features: import('vue').ComputedRef<Record<string, boolean> | undefined>;
|
|
61
|
+
isAdmin: import('vue').ComputedRef<boolean>;
|
|
62
|
+
can: (access: Access) => boolean;
|
|
63
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComputedRef } from 'vue';
|
|
2
|
-
import {
|
|
2
|
+
import { PillNavItem } from '../types';
|
|
3
3
|
import { PluginWorkspaceViewEmit, PluginWorkspaceViewProps } from '../components/PluginWorkspaceView.props';
|
|
4
4
|
import { PluginWorkspaceControlsModel, PluginWorkspaceShellModel, PluginWorkspaceSidebarModel } from './pluginWorkspaceModel';
|
|
5
5
|
/**
|
|
@@ -25,24 +25,19 @@ export interface UsePluginWorkspaceReturn {
|
|
|
25
25
|
controls: ComputedRef<PluginWorkspaceControlsModel>;
|
|
26
26
|
/** Whether AppLayout should render a sidebar surface at all. */
|
|
27
27
|
hasSidebarSurface: ComputedRef<boolean>;
|
|
28
|
-
/** Applies an AppSidebar `update:
|
|
28
|
+
/** Applies an AppSidebar `update:values` payload to the shared control values and emits `update:values`. */
|
|
29
29
|
handleControlValuesUpdate: (values: Record<string, unknown>) => void;
|
|
30
|
-
/** Resolves an AppTopBar `
|
|
31
|
-
handlePageSelectorSelect: (page: PageSelectorItem) => void;
|
|
32
|
-
/** Resolves an AppTopBar `pill-select` payload into the active view and emits `pill-select`. */
|
|
30
|
+
/** Resolves an AppTopBar `pill-select` payload into the active view and emits `update:pill` and `pill-select`. */
|
|
33
31
|
handlePillSelect: (item: PillNavItem) => void;
|
|
34
32
|
}
|
|
35
33
|
/**
|
|
36
|
-
* Maps PluginWorkspaceView's
|
|
34
|
+
* Maps PluginWorkspaceView's `spec` and `v-model`s into the three typed model objects
|
|
37
35
|
* (`shell`, `sidebar`, `controls`) rendered by its internal pieces
|
|
38
|
-
* (WorkspaceShellInternal, WorkspaceSidebarInternal, WorkspaceControlsInternal).
|
|
39
|
-
* existing `usePluginWorkspaceControls` / `usePluginWorkspaceNavigation` composables and the
|
|
40
|
-
* PluginWorkspaceView.shell slot-detection helpers, so it changes only how that state is
|
|
41
|
-
* assembled and exposed, not the underlying behavior.
|
|
36
|
+
* (WorkspaceShellInternal, WorkspaceSidebarInternal, WorkspaceControlsInternal).
|
|
42
37
|
*
|
|
43
38
|
* @example Recommended
|
|
44
39
|
* ```ts
|
|
45
|
-
* const props =
|
|
40
|
+
* const props = defineProps<PluginWorkspaceViewProps>()
|
|
46
41
|
* const emit = defineEmits<PluginWorkspaceViewEmits>()
|
|
47
42
|
* const slots = useSlots()
|
|
48
43
|
* const { shell, sidebar, controls } = usePluginWorkspace({ props, slots, emit })
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* What a viewer does on a topic. The platform accepts a fixed set per topic
|
|
4
|
+
* kind: `experiment:{id}` takes all four labels, `project:{id}` only
|
|
5
|
+
* `viewing` and `editing`. `editing` means a form with unsaved edits is open;
|
|
6
|
+
* it is a hint, not a lock.
|
|
7
|
+
*/
|
|
8
|
+
export type PresenceActivity = 'viewing' | 'viewing_design' | 'viewing_results' | 'editing';
|
|
9
|
+
/** One user with an open realtime stream on the topic. */
|
|
10
|
+
export interface PresenceViewer {
|
|
11
|
+
user_id: string;
|
|
12
|
+
activity: PresenceActivity;
|
|
13
|
+
}
|
|
14
|
+
export interface UsePresenceReturn {
|
|
15
|
+
/** The viewers, `editing` first, at most 20; the current user is included. Empty while the stream is closed. */
|
|
16
|
+
viewers: Readonly<Ref<readonly PresenceViewer[]>>;
|
|
17
|
+
/** Every viewer, also those beyond the 20 in `viewers`. */
|
|
18
|
+
count: Readonly<Ref<number>>;
|
|
19
|
+
/** True while the shared realtime stream is open. */
|
|
20
|
+
connected: Readonly<Ref<boolean>>;
|
|
21
|
+
/** Unsubscribe; also runs when the calling component or effect scope is disposed. */
|
|
22
|
+
stop: () => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Who else views an `experiment:{id}` or `project:{id}` topic (RFC #439).
|
|
26
|
+
*
|
|
27
|
+
* Built on `useRealtime`: the tab's open stream on the topic is its presence,
|
|
28
|
+
* and `presence.changed` events update `viewers`. When `activity` is given,
|
|
29
|
+
* the label is sent to `POST /api/presence/activity` when the call starts on
|
|
30
|
+
* an open stream, each time the stream opens and each time the label changes;
|
|
31
|
+
* `stop` (also the end of the calling scope) sets it back to `viewing`.
|
|
32
|
+
* Without it, the platform shows the tab as `viewing`. Like `useRealtime`, it needs the platform's `realtime`
|
|
33
|
+
* feature flag; check that flag first.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* const { viewers } = usePresence(
|
|
37
|
+
* () => `experiment:${id.value}`,
|
|
38
|
+
* () => (dirty.value ? 'editing' : 'viewing'),
|
|
39
|
+
* )
|
|
40
|
+
*/
|
|
41
|
+
export declare function usePresence(topic: MaybeRefOrGetter<string>, activity?: MaybeRefOrGetter<PresenceActivity>): UsePresenceReturn;
|
|
@@ -26,7 +26,7 @@ export interface UseRackEditorReturn {
|
|
|
26
26
|
/**
|
|
27
27
|
* Applies every PlateEditor intent to this state, so the component can hold
|
|
28
28
|
* data it never mutates itself:
|
|
29
|
-
* `<PlateEditor :model-value="racks" :active-rack
|
|
29
|
+
* `<PlateEditor :model-value="racks" :active-rack="activeRackId" v-on="plateEditorListeners" />`
|
|
30
30
|
*/
|
|
31
31
|
plateEditorListeners: PlateEditorListeners;
|
|
32
32
|
/** Steps back through every change to `racks` (at most 50), restoring the plate that was showing. */
|
|
@@ -46,7 +46,7 @@ export interface UseRackEditorReturn {
|
|
|
46
46
|
}
|
|
47
47
|
/** Handlers for PlateEditor's intent events, keyed by event name (bind with `v-on`). */
|
|
48
48
|
export interface PlateEditorListeners {
|
|
49
|
-
'update:
|
|
49
|
+
'update:activeRack': (rackId: string) => void;
|
|
50
50
|
'rack-add': () => void;
|
|
51
51
|
'rack-remove': (rackId: string) => void;
|
|
52
52
|
'rack-reorder': (rackIds: string[]) => void;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, Ref } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* One event of the platform's realtime stream (`GET /api/events`).
|
|
4
|
+
*
|
|
5
|
+
* Platform events carry no entity data: refetch the entity through REST.
|
|
6
|
+
* `type` is `resync` (refetch everything you show), the audit action of a
|
|
7
|
+
* committed write, such as `experiment.update` or `analysis.artifact_create`,
|
|
8
|
+
* or the `"<plugin>.<event>"` name of a plugin event, which carries `payload`.
|
|
9
|
+
* Only `usePresence` receives `presence.changed`.
|
|
10
|
+
*/
|
|
11
|
+
export interface RealtimeEvent {
|
|
12
|
+
type: string;
|
|
13
|
+
id?: string;
|
|
14
|
+
/**
|
|
15
|
+
* `experiment:{id}`, `project:{id}`, `experiments`, `user:{id}`, or a plugin's
|
|
16
|
+
* `plugin:{name}` / `plugin:{name}:experiment:{id}`; absent on `resync`.
|
|
17
|
+
*/
|
|
18
|
+
topic?: string;
|
|
19
|
+
/** A plugin event: the JSON payload the plugin published (at most 16 KiB). */
|
|
20
|
+
payload?: unknown;
|
|
21
|
+
/** Changed fields of an update, when the write names them. */
|
|
22
|
+
fields?: string[] | null;
|
|
23
|
+
actor_id?: string | null;
|
|
24
|
+
request_id?: string | null;
|
|
25
|
+
at?: string;
|
|
26
|
+
/** `presence.changed`: the topic's viewers (at most 20, `editing` first). */
|
|
27
|
+
viewers?: {
|
|
28
|
+
user_id: string;
|
|
29
|
+
activity: string;
|
|
30
|
+
}[];
|
|
31
|
+
/** `presence.changed`: the number of viewers, also those beyond `viewers`. */
|
|
32
|
+
count?: number;
|
|
33
|
+
}
|
|
34
|
+
export type RealtimeHandler = (event: RealtimeEvent) => void;
|
|
35
|
+
export interface UseRealtimeReturn {
|
|
36
|
+
/** True while the shared stream is open. */
|
|
37
|
+
connected: Readonly<Ref<boolean>>;
|
|
38
|
+
/** Unsubscribe; also runs when the calling component or effect scope is disposed. */
|
|
39
|
+
stop: () => void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Subscribe to topics of the platform's realtime stream.
|
|
43
|
+
*
|
|
44
|
+
* Every caller in a tab shares one `EventSource`, opened on the union of
|
|
45
|
+
* their topics and reopened when that union changes. `handler` receives the
|
|
46
|
+
* write events of the caller's own topics (not `presence.changed`, which goes
|
|
47
|
+
* to `usePresence`) plus every `resync`: one comes from the
|
|
48
|
+
* server when this tab fell behind, and one follows each open of the stream:
|
|
49
|
+
* the first open, each reconnect (backoff from 1 s to 30 s) and each reopen for
|
|
50
|
+
* a changed topic union. On `resync`, refetch. The union of all callers' topics
|
|
51
|
+
* in a tab may hold at most 50 topics; the platform refuses a larger stream.
|
|
52
|
+
*
|
|
53
|
+
* The stream authenticates with the session cookie, so it works in the
|
|
54
|
+
* platform and in plugin frontends served by it. It exists only when the
|
|
55
|
+
* platform's `realtime` feature flag is on; check that flag first.
|
|
56
|
+
*
|
|
57
|
+
* A plugin topic reaches a caller whose role may use the plugin; an
|
|
58
|
+
* experiment plugin topic also needs a caller who may view the experiment.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* useRealtime(() => [`experiment:${id.value}`], () => refetch())
|
|
62
|
+
* @example
|
|
63
|
+
* useRealtime(['plugin:drp'], (event) => {
|
|
64
|
+
* if (event.type === 'drp.run.progress') progress.value = event.payload as RunProgress
|
|
65
|
+
* })
|
|
66
|
+
*/
|
|
67
|
+
export declare function useRealtime(topics: MaybeRefOrGetter<string[]>, handler: RealtimeHandler): UseRealtimeReturn;
|
|
68
|
+
/** The last `presence.changed` of `topic` while the open stream views it (for `usePresence`). */
|
|
69
|
+
export declare function currentPresence(topic: string): RealtimeEvent | undefined;
|
|
70
|
+
/** `useRealtime`, and with `withPresence` also the `presence.changed` events (for `usePresence`). */
|
|
71
|
+
export declare function subscribeRealtime(topics: MaybeRefOrGetter<string[]>, handler: RealtimeHandler, withPresence: boolean): UseRealtimeReturn;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Ref } from 'vue';
|
|
2
|
-
export type
|
|
2
|
+
export type RequestKind = 'load' | 'save' | 'run';
|
|
3
3
|
/**
|
|
4
4
|
* The unit of work `run()` drives.
|
|
5
5
|
*
|
|
@@ -7,9 +7,10 @@ export type RequestSyncSuccessKind = 'load' | 'save' | 'run';
|
|
|
7
7
|
* newer `run()` or by `cancel()`. Zero-argument operations stay valid and
|
|
8
8
|
* simply ignore it.
|
|
9
9
|
*/
|
|
10
|
-
export type
|
|
11
|
-
export interface
|
|
12
|
-
|
|
10
|
+
export type RequestOperation<T> = (signal: AbortSignal) => Promise<T>;
|
|
11
|
+
export interface RequestRunOptions {
|
|
12
|
+
/** Which timestamp a successful run moves: `lastLoadedAt`, `lastSavedAt` or `lastRunAt`. */
|
|
13
|
+
kind?: RequestKind;
|
|
13
14
|
errorMessage?: string;
|
|
14
15
|
/**
|
|
15
16
|
* Abort the previously started run when this one starts. Default `true`;
|
|
@@ -20,9 +21,9 @@ export interface RequestSyncRunOptions {
|
|
|
20
21
|
/** Caller-owned signal; aborting it aborts this run's signal too. */
|
|
21
22
|
signal?: AbortSignal;
|
|
22
23
|
}
|
|
23
|
-
export interface
|
|
24
|
+
export interface UseRequestReturn {
|
|
24
25
|
/** Whether a request is in progress. */
|
|
25
|
-
|
|
26
|
+
isLoading: Ref<boolean>;
|
|
26
27
|
/** Message from the last failed request, or null. */
|
|
27
28
|
error: Ref<string | null>;
|
|
28
29
|
/** Timestamp of the last successful load operation, or null. */
|
|
@@ -37,12 +38,6 @@ export interface UseRequestSyncStateReturn {
|
|
|
37
38
|
readErrorMessage: (value: unknown, fallback?: string) => string;
|
|
38
39
|
/** Store and return a normalized error message. */
|
|
39
40
|
setError: (value: unknown, fallback?: string) => string;
|
|
40
|
-
/** Mark the resource as successfully loaded. */
|
|
41
|
-
markLoaded: (date?: Date) => void;
|
|
42
|
-
/** Mark the resource as successfully saved. */
|
|
43
|
-
markSaved: (date?: Date) => void;
|
|
44
|
-
/** Mark the operation as successfully run. */
|
|
45
|
-
markRun: (date?: Date) => void;
|
|
46
41
|
/**
|
|
47
42
|
* Run a request with shared loading/error handling and optional sync marking.
|
|
48
43
|
*
|
|
@@ -50,7 +45,7 @@ export interface UseRequestSyncStateReturn {
|
|
|
50
45
|
*
|
|
51
46
|
* Every call takes a monotonically increasing token. Starting a run
|
|
52
47
|
* supersedes any run started before it, and a superseded run writes **no**
|
|
53
|
-
* shared state when it finally settles: it does not clear `
|
|
48
|
+
* shared state when it finally settles: it does not clear `isLoading`, does not
|
|
54
49
|
* set `error`, and does not move `lastLoadedAt` / `lastSavedAt` / `lastRunAt`.
|
|
55
50
|
* Only the newest run owns those.
|
|
56
51
|
*
|
|
@@ -63,12 +58,12 @@ export interface UseRequestSyncStateReturn {
|
|
|
63
58
|
* run is superseded or `cancel()` is called, so an operation that forwards
|
|
64
59
|
* the signal (`fetch(url, { signal })`) stops work instead of racing.
|
|
65
60
|
*/
|
|
66
|
-
run: <T>(operation:
|
|
61
|
+
run: <T>(operation: RequestOperation<T>, options?: RequestRunOptions) => Promise<T>;
|
|
67
62
|
/**
|
|
68
|
-
* Abort the in-flight run and drop `
|
|
63
|
+
* Abort the in-flight run and drop `isLoading`. The aborted run's completion
|
|
69
64
|
* is treated as stale and writes no state.
|
|
70
65
|
*/
|
|
71
66
|
cancel: () => void;
|
|
72
67
|
}
|
|
73
|
-
/**
|
|
74
|
-
export declare function
|
|
68
|
+
/** Loading, error and timestamp state for one request at a time; `run()` drives it. */
|
|
69
|
+
export declare function useRequest(defaultErrorMessage?: string): UseRequestReturn;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { Toast, ToastOptions } from '../types';
|
|
2
|
+
/** Options of `success()`, `error()`, `warning()` and `info()`: the message is the title. */
|
|
3
|
+
type ToastMessageOptions = Omit<ToastOptions, 'title' | 'type'>;
|
|
2
4
|
/** Reactive global toast queue with success/error/warning/info variants and auto-dismiss timers. */
|
|
3
5
|
export declare function useToast(): {
|
|
4
6
|
toasts: import('vue').Ref<{
|
|
@@ -33,11 +35,11 @@ export declare function useToast(): {
|
|
|
33
35
|
count?: number | undefined;
|
|
34
36
|
}[]>;
|
|
35
37
|
push: (options: ToastOptions) => number;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
info: (message: string, duration?: number) => void;
|
|
38
|
+
success: (message: string, options?: ToastMessageOptions) => number;
|
|
39
|
+
error: (message: string, options?: ToastMessageOptions) => number;
|
|
40
|
+
warning: (message: string, options?: ToastMessageOptions) => number;
|
|
41
|
+
info: (message: string, options?: ToastMessageOptions) => number;
|
|
41
42
|
dismiss: (id: number) => void;
|
|
42
43
|
clear: () => void;
|
|
43
44
|
};
|
|
45
|
+
export {};
|