@morscherlab/mint-sdk 1.2.0-beta.7 → 1.2.0-beta.9
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 +30 -0
- package/dist/{ExperimentPopover-CfOdh5Rm.js → ExperimentPopover-oL0fg_A0.js} +5 -3
- package/dist/ExperimentPopover-oL0fg_A0.js.map +1 -0
- package/dist/{ExperimentSelectorModal-DvIagrxY.js → ExperimentSelectorModal-BeEOomw_.js} +4 -4
- package/dist/ExperimentSelectorModal-BeEOomw_.js.map +1 -0
- package/dist/{SettingsModal-W3TYfnP9.js → SettingsModal-Dphh3RrI.js} +4 -4
- package/dist/SettingsModal-Dphh3RrI.js.map +1 -0
- package/dist/{EmptyState-NBqf2_8z.js → Skeleton-DxtwJ5gt.js} +110 -92
- package/dist/Skeleton-DxtwJ5gt.js.map +1 -0
- package/dist/__tests__/components/ExperimentTimeline.test.d.ts +1 -0
- package/dist/__tests__/composables/useListReorder.test.d.ts +1 -0
- package/dist/__tests__/styles/cssTokens.test.d.ts +1 -0
- package/dist/components/ActionMenu.vue.d.ts +1 -1
- package/dist/components/AppPluginSwitcher.vue.d.ts +2 -0
- package/dist/components/AuditTrail.vue.d.ts +13 -0
- package/dist/components/BatchProgressList.vue.d.ts +17 -0
- package/dist/components/DataFrame.vue.d.ts +14 -2
- package/dist/components/DatePicker.vue.d.ts +1 -1
- package/dist/components/DateTimePicker.vue.d.ts +2 -0
- package/dist/components/ExperimentDataViewer.vue.d.ts +26 -1
- package/dist/components/ExperimentPopover.vue.d.ts +1 -0
- package/dist/components/ExperimentTimeline.vue.d.ts +29 -1
- package/dist/components/LcmsSequenceTable.vue.d.ts +29 -1
- package/dist/components/ProgressBar.vue.d.ts +1 -1
- package/dist/components/ProtocolStepEditor.vue.d.ts +1 -0
- package/dist/components/ReagentList.vue.d.ts +29 -1
- package/dist/components/SampleHierarchyTree.vue.d.ts +29 -1
- package/dist/components/SampleSelector.drag.d.ts +13 -0
- package/dist/components/SampleSelector.tree.d.ts +2 -0
- package/dist/components/SampleSelector.vue.d.ts +34 -1
- package/dist/components/ScheduleCalendar.vue.d.ts +20 -0
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -0
- package/dist/components/TimePicker.vue.d.ts +1 -0
- package/dist/components/WellPlate.geometry.d.ts +15 -0
- package/dist/components/WellPlate.interaction.d.ts +13 -0
- package/dist/components/WellPlate.vue.d.ts +29 -0
- package/dist/components/index.js +6 -6
- package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -0
- package/dist/components/internal/DataStateInternal.vue.d.ts +43 -0
- package/dist/{components-B80gV0P6.js → components-CgAUzF8F.js} +1930 -1688
- package/dist/components-CgAUzF8F.js.map +1 -0
- package/dist/composables/controlSchemaTypes.d.ts +34 -0
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/index.js +9 -9
- package/dist/composables/useDropdownState.d.ts +18 -2
- package/dist/composables/useEventStream.d.ts +9 -0
- package/dist/composables/useListReorder.d.ts +90 -0
- package/dist/composables/useMenuKeyboard.d.ts +2 -2
- package/dist/composables/usePluginConfig.d.ts +3 -1
- package/dist/composables/useRequestSyncState.d.ts +42 -2
- package/dist/composables/useScheduleDrag.d.ts +1 -0
- package/dist/{composables-C8mmD5ta.js → composables-B_pia3hO.js} +13 -69
- package/dist/composables-B_pia3hO.js.map +1 -0
- package/dist/{useApi-CDBq6z23.js → errors-_W0-LbA6.js} +102 -3
- package/dist/errors-_W0-LbA6.js.map +1 -0
- package/dist/{experiment-Y9Iz7KYi.js → experiment-Cwl9AYxw.js} +3 -8
- package/dist/experiment-Cwl9AYxw.js.map +1 -0
- package/dist/experiment-utils-DV3DrvE_.js.map +1 -1
- package/dist/index.js +14 -14
- package/dist/install.js +2 -7
- package/dist/install.js.map +1 -1
- package/dist/permissions.d.ts +42 -1
- package/dist/permissions.js +20 -10
- package/dist/permissions.js.map +1 -1
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/index.js +3 -3
- package/dist/stores/settings.d.ts +31 -1
- package/dist/styles.css +9572 -27877
- package/dist/templates/index.js +2 -4
- package/dist/{templates-CK72aKO1.js → templates-Qq113pyZ.js} +291 -85
- package/dist/templates-Qq113pyZ.js.map +1 -0
- package/dist/{useControlSchema-_OVhavKq.js → useControlSchema-aMZlb4Sc.js} +197 -1089
- package/dist/useControlSchema-aMZlb4Sc.js.map +1 -0
- package/dist/{useDropdownState-D5G4UvWd.js → useDropdownState-DitCtrTT.js} +21 -5
- package/dist/useDropdownState-DitCtrTT.js.map +1 -0
- package/dist/{useExperimentSelector-DSEckf_g.js → useExperimentSelector-I8HC8hUu.js} +3 -3
- package/dist/{useExperimentSelector-DSEckf_g.js.map → useExperimentSelector-I8HC8hUu.js.map} +1 -1
- package/dist/{useFormBuilder-Bd714C7y.js → useFormBuilder-TCxNnqeb.js} +2 -2
- package/dist/{useFormBuilder-Bd714C7y.js.map → useFormBuilder-TCxNnqeb.js.map} +1 -1
- package/dist/{useProtocolTemplates-Dq5Pzwyd.js → useProtocolTemplates-BmX_iVBR.js} +185 -157
- package/dist/useProtocolTemplates-BmX_iVBR.js.map +1 -0
- package/dist/utils/color.d.ts +13 -0
- package/dist/utils/errors.d.ts +9 -0
- package/package.json +1 -1
- package/src/__tests__/components/ActionMenu.test.ts +94 -0
- package/src/__tests__/components/DataFrame.test.ts +183 -11
- package/src/__tests__/components/DataStates.test.ts +176 -0
- package/src/__tests__/components/DatePicker.test.ts +76 -0
- package/src/__tests__/components/DateTimePicker.test.ts +36 -0
- package/src/__tests__/components/ExperimentTimeline.test.ts +63 -0
- package/src/__tests__/components/GroupAssigner.test.ts +53 -0
- package/src/__tests__/components/LcmsSequenceTable.test.ts +22 -0
- package/src/__tests__/components/RackEditor.test.ts +35 -0
- package/src/__tests__/components/ReagentList.test.ts +64 -2
- package/src/__tests__/components/RetiredStyles.test.ts +31 -0
- package/src/__tests__/components/SampleSelector.drag.test.ts +51 -1
- package/src/__tests__/components/ScheduleCalendar.test.ts +63 -0
- package/src/__tests__/components/SegmentedControl.test.ts +88 -0
- package/src/__tests__/components/TimePicker.test.ts +61 -0
- package/src/__tests__/components/WellPlate.interaction.test.ts +59 -0
- package/src/__tests__/composables/useDropdownState.test.ts +58 -1
- package/src/__tests__/composables/useListReorder.test.ts +145 -0
- package/src/__tests__/composables/useRequestSyncState.test.ts +140 -0
- package/src/__tests__/stores/settings.test.ts +71 -1
- package/src/__tests__/styles/cssTokens.test.ts +131 -0
- package/src/__tests__/utils/permissions.test.ts +68 -0
- package/src/components/ActionMenu.vue +45 -88
- package/src/components/AlertBox.vue +0 -4
- package/src/components/AppAvatarMenu.vue +2 -14
- package/src/components/AppLayout.vue +0 -4
- package/src/components/AppPluginSwitcher.story.vue +87 -0
- package/src/components/AppPluginSwitcher.vue +2 -5
- package/src/components/AppSidebar.vue +0 -4
- package/src/components/AppToastContainer.vue +6 -8
- package/src/components/AppTopBar.vue +0 -4
- package/src/components/ArtifactSaveDialog.vue +0 -4
- package/src/components/ArtifactSelectorModal.vue +0 -4
- package/src/components/AuditTrail.story.vue +18 -0
- package/src/components/AuditTrail.vue +27 -7
- package/src/components/AutoGroupModal.vue +0 -4
- package/src/components/Avatar.vue +0 -4
- package/src/components/BaseButton.vue +0 -4
- package/src/components/BaseCheckbox.vue +0 -4
- package/src/components/BaseInput.vue +0 -4
- package/src/components/BaseModal.vue +0 -4
- package/src/components/BasePill.vue +0 -4
- package/src/components/BaseRadioGroup.vue +0 -4
- package/src/components/BaseSelect.vue +0 -4
- package/src/components/BaseSlider.vue +0 -4
- package/src/components/BaseTabs.vue +0 -4
- package/src/components/BaseTextarea.vue +0 -4
- package/src/components/BaseToggle.vue +0 -4
- package/src/components/BatchProgressList.story.vue +18 -0
- package/src/components/BatchProgressList.vue +32 -4
- package/src/components/Breadcrumb.vue +0 -4
- package/src/components/Calendar.vue +0 -4
- package/src/components/ChartContainer.story.vue +1 -1
- package/src/components/ChartContainer.vue +0 -4
- package/src/components/ChemicalFormula.vue +0 -4
- package/src/components/CollapsibleCard.vue +0 -4
- package/src/components/ColorSlider.vue +0 -4
- package/src/components/ConcentrationInput.vue +0 -4
- package/src/components/ConfirmDialog.vue +0 -4
- package/src/components/DataFrame.story.vue +14 -0
- package/src/components/DataFrame.vue +97 -23
- package/src/components/DatePicker.vue +73 -27
- package/src/components/DateTimePicker.vue +45 -17
- package/src/components/Divider.vue +0 -4
- package/src/components/DoseCalculator.vue +0 -4
- package/src/components/DropdownButton.vue +2 -14
- package/src/components/EmptyState.vue +0 -4
- package/src/components/ExperimentCodeBadge.vue +0 -4
- package/src/components/ExperimentDataViewer.story.vue +3 -0
- package/src/components/ExperimentDataViewer.vue +33 -13
- package/src/components/ExperimentPopover.vue +2 -5
- package/src/components/ExperimentSelectorModal.vue +0 -4
- package/src/components/ExperimentTimeline.story.vue +18 -0
- package/src/components/ExperimentTimeline.vue +81 -75
- package/src/components/FileUploader.vue +0 -4
- package/src/components/FitPanel.vue +0 -4
- package/src/components/FormActions.story.vue +96 -0
- package/src/components/FormActions.vue +0 -4
- package/src/components/FormBuilder.vue +0 -4
- package/src/components/FormField.vue +0 -4
- package/src/components/FormulaInput.vue +0 -4
- package/src/components/GeneratedPathInput.story.vue +68 -0
- package/src/components/GeneratedPlotlyResult.story.vue +96 -0
- package/src/components/GeneratedPlotlyResult.vue +3 -3
- package/src/components/GeneratedPluginView.story.vue +145 -0
- package/src/components/GeneratedPluginView.vue +10 -10
- package/src/components/GeneratedResultRenderer.story.vue +117 -0
- package/src/components/GeneratedResultRenderer.vue +4 -4
- package/src/components/GroupAssigner.vue +67 -5
- package/src/components/IconButton.vue +0 -4
- package/src/components/InstrumentAlertLog.vue +0 -4
- package/src/components/InstrumentStateBadge.vue +0 -4
- package/src/components/InstrumentStatusCard.vue +0 -4
- package/src/components/JobsStatusTray.vue +0 -4
- package/src/components/LcmsSequenceTable.vue +81 -50
- package/src/components/LoadingSpinner.vue +0 -4
- package/src/components/MobileSupportGate.vue +0 -4
- package/src/components/MoleculeInput.vue +0 -4
- package/src/components/MultiSelect.vue +0 -4
- package/src/components/NumberInput.vue +0 -4
- package/src/components/PlateMapEditor.vue +3 -14
- package/src/components/PluginIcon.vue +0 -4
- package/src/components/ProgressBar.vue +0 -4
- package/src/components/ProtocolStepEditor.vue +2 -4
- package/src/components/RackEditor.vue +51 -70
- package/src/components/ReagentEditor.vue +0 -4
- package/src/components/ReagentList.story.vue +18 -0
- package/src/components/ReagentList.vue +127 -82
- package/src/components/ResourceCard.vue +0 -4
- package/src/components/RuntimeUpdateNotice.story.vue +49 -0
- package/src/components/RuntimeUpdateNotice.vue +4 -4
- package/src/components/SampleHierarchyTree.story.vue +18 -0
- package/src/components/SampleHierarchyTree.vue +32 -9
- package/src/components/SampleLegend.vue +2 -8
- package/src/components/SampleSelector.drag.ts +51 -0
- package/src/components/SampleSelector.story.vue +6 -0
- package/src/components/SampleSelector.tree.ts +2 -0
- package/src/components/SampleSelector.vue +49 -10
- package/src/components/SampleSelectorGroupNode.vue +19 -0
- package/src/components/ScheduleCalendar.story.vue +6 -0
- package/src/components/ScheduleCalendar.vue +82 -7
- package/src/components/ScientificNumber.vue +0 -4
- package/src/components/SectionCard.vue +0 -4
- package/src/components/SegmentedControl.vue +48 -5
- package/src/components/SequenceInput.vue +0 -4
- package/src/components/SequenceProgressBar.story.vue +110 -0
- package/src/components/SequenceProgressBar.vue +0 -4
- package/src/components/SettingsModal.vue +0 -4
- package/src/components/Skeleton.vue +0 -4
- package/src/components/SmartGroupFieldRecipe.vue +8 -6
- package/src/components/SmartGroupManual.vue +0 -4
- package/src/components/StatusIndicator.vue +0 -4
- package/src/components/StepWizard.vue +0 -4
- package/src/components/TagsInput.vue +4 -6
- package/src/components/ThemeToggle.vue +0 -4
- package/src/components/TimePicker.vue +36 -7
- package/src/components/TimeRangeInput.vue +0 -4
- package/src/components/Tooltip.story.vue +3 -3
- package/src/components/Tooltip.vue +0 -4
- package/src/components/UnitInput.vue +0 -4
- package/src/components/WellPlate.geometry.ts +60 -1
- package/src/components/WellPlate.interaction.ts +44 -0
- package/src/components/WellPlate.story.vue +8 -0
- package/src/components/WellPlate.vue +53 -7
- package/src/components/internal/AppTopBarPageSelectorInternal.vue +2 -5
- package/src/components/internal/AppTopBarPillNavInternal.vue +0 -4
- package/src/components/internal/DataStateInternal.vue +74 -0
- package/src/components/internal/FormSectionRenderer.vue +0 -4
- package/src/components/internal/WellEditPopupInternal.vue +0 -4
- package/src/composables/controlSchemaTypes.ts +34 -0
- package/src/composables/index.ts +10 -0
- package/src/composables/useDropdownState.ts +35 -5
- package/src/composables/useEventStream.ts +14 -2
- package/src/composables/useFileImport.ts +2 -7
- package/src/composables/useGeneratedAnalysis.ts +8 -9
- package/src/composables/useListReorder.story.vue +143 -0
- package/src/composables/useListReorder.ts +242 -0
- package/src/composables/useMenuKeyboard.ts +2 -2
- package/src/composables/useOptimisticMutation.ts +1 -15
- package/src/composables/usePluginConfig.ts +3 -1
- package/src/composables/useRackEditor.ts +2 -11
- package/src/composables/useRequestSyncState.ts +98 -28
- package/src/composables/useResourceCrud.ts +1 -15
- package/src/composables/useScheduleDrag.ts +37 -0
- package/src/composables/useWellPainting.ts +5 -29
- package/src/composables/useWellPlateEditor.ts +1 -11
- package/src/permissions.ts +48 -9
- package/src/stores/experiment.ts +2 -7
- package/src/stores/index.ts +9 -1
- package/src/stores/settings.ts +93 -1
- package/src/styles/components/audit-trail.css +5 -5
- package/src/styles/components/batch-progress-list.css +7 -0
- package/src/styles/components/color-slider.css +2 -2
- package/src/styles/components/data-state.css +30 -0
- package/src/styles/components/dataframe.css +29 -35
- package/src/styles/components/experiment-data-viewer.css +4 -4
- package/src/styles/components/experiment-timeline.css +3 -30
- package/src/styles/components/form-builder.css +5 -5
- package/src/styles/components/lcms-sequence-table.css +16 -1
- package/src/styles/components/multi-select.css +1 -1
- package/src/styles/components/reagent-list.css +38 -31
- package/src/styles/components/sample-hierarchy-tree.css +5 -19
- package/src/styles/components/sample-selector.css +9 -2
- package/src/styles/components/schedule-calendar.css +8 -0
- package/src/styles/components/scientific-number.css +1 -1
- package/src/styles/components/well-plate.css +8 -0
- package/src/styles/index.css +8 -0
- package/src/styles/variables.css +29 -0
- package/src/templates/builderPresetControls.ts +1 -1
- package/src/templates/componentPlateHelpers.ts +3 -1
- package/src/templates/doseResponseAdapters.ts +2 -13
- package/src/templates/elisaAssayCollectionBuilder.ts +2 -2
- package/src/templates/plateMapBuilder.ts +2 -2
- package/src/templates/qpcrPlateBuilder.ts +1 -1
- package/src/templates/templateValidators.ts +1 -1
- package/src/templates/timeCourseBuilder.ts +2 -2
- package/src/templates/wellPlateScreenCollectionBuilder.ts +2 -2
- package/src/utils/color.ts +51 -0
- package/src/utils/errors.ts +29 -0
- package/dist/EmptyState-NBqf2_8z.js.map +0 -1
- package/dist/ExperimentPopover-CfOdh5Rm.js.map +0 -1
- package/dist/ExperimentSelectorModal-DvIagrxY.js.map +0 -1
- package/dist/SettingsModal-W3TYfnP9.js.map +0 -1
- package/dist/components-B80gV0P6.js.map +0 -1
- package/dist/composables/autoGroupConstants.d.ts +0 -1
- package/dist/composables/autoGroupGrouping.d.ts +0 -3
- package/dist/composables/useAutoGroupInputSources.d.ts +0 -32
- package/dist/composables-C8mmD5ta.js.map +0 -1
- package/dist/experiment-Y9Iz7KYi.js.map +0 -1
- package/dist/templates/builderDefaults.d.ts +0 -1
- package/dist/templates/plateGeometry.d.ts +0 -4
- package/dist/templates-CK72aKO1.js.map +0 -1
- package/dist/useApi-CDBq6z23.js.map +0 -1
- package/dist/useControlSchema-_OVhavKq.js.map +0 -1
- package/dist/useDropdownState-D5G4UvWd.js.map +0 -1
- package/dist/useProtocolTemplates-Dq5Pzwyd.js.map +0 -1
- package/src/__tests__/composables/useAutoGroupInputSources.test.ts +0 -127
- package/src/composables/autoGroupConstants.ts +0 -4
- package/src/composables/autoGroupGrouping.ts +0 -148
- package/src/composables/useAutoGroupInputSources.ts +0 -147
- package/src/templates/builderDefaults.ts +0 -11
- package/src/templates/plateGeometry.ts +0 -62
- /package/dist/__tests__/{composables/useAutoGroupInputSources.test.d.ts → components/DataStates.test.d.ts} +0 -0
|
@@ -22,10 +22,27 @@ export interface ControlSectionConfig {
|
|
|
22
22
|
actions?: SidebarToolSectionAction[];
|
|
23
23
|
columns?: 1 | 2 | 3;
|
|
24
24
|
condition?: FieldCondition;
|
|
25
|
+
/** The access policy. Preferred over the flat fields below. */
|
|
25
26
|
access?: AccessPolicy;
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Since MINT 1.2; use `access.visibleFor` instead. The flat
|
|
29
|
+
* duplicate is removed in 1.3.
|
|
30
|
+
*/
|
|
26
31
|
visibleFor?: AccessAudienceInput;
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated Since MINT 1.2; use `access.requiresAdmin` instead. The flat
|
|
34
|
+
* duplicate is removed in 1.3.
|
|
35
|
+
*/
|
|
27
36
|
requiresAdmin?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Since MINT 1.2; use `access.permissions` instead. The flat
|
|
39
|
+
* duplicate is removed in 1.3.
|
|
40
|
+
*/
|
|
28
41
|
permissions?: readonly string[];
|
|
42
|
+
/**
|
|
43
|
+
* @deprecated Since MINT 1.2; use `access.anyPermissions` instead. The flat
|
|
44
|
+
* duplicate is removed in 1.3.
|
|
45
|
+
*/
|
|
29
46
|
anyPermissions?: readonly string[];
|
|
30
47
|
defaultOpen?: boolean;
|
|
31
48
|
showToggle?: boolean;
|
|
@@ -78,10 +95,27 @@ export interface ControlDefinition {
|
|
|
78
95
|
};
|
|
79
96
|
validation?: FieldValidation;
|
|
80
97
|
condition?: FieldCondition;
|
|
98
|
+
/** The access policy. Preferred over the flat fields below. */
|
|
81
99
|
access?: AccessPolicy;
|
|
100
|
+
/**
|
|
101
|
+
* @deprecated Since MINT 1.2; use `access.visibleFor` instead. The flat
|
|
102
|
+
* duplicate is removed in 1.3.
|
|
103
|
+
*/
|
|
82
104
|
visibleFor?: AccessAudienceInput;
|
|
105
|
+
/**
|
|
106
|
+
* @deprecated Since MINT 1.2; use `access.requiresAdmin` instead. The flat
|
|
107
|
+
* duplicate is removed in 1.3.
|
|
108
|
+
*/
|
|
83
109
|
requiresAdmin?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* @deprecated Since MINT 1.2; use `access.permissions` instead. The flat
|
|
112
|
+
* duplicate is removed in 1.3.
|
|
113
|
+
*/
|
|
84
114
|
permissions?: readonly string[];
|
|
115
|
+
/**
|
|
116
|
+
* @deprecated Since MINT 1.2; use `access.anyPermissions` instead. The flat
|
|
117
|
+
* duplicate is removed in 1.3.
|
|
118
|
+
*/
|
|
85
119
|
anyPermissions?: readonly string[];
|
|
86
120
|
options?: readonly ControlOption[];
|
|
87
121
|
section?: string;
|
|
@@ -65,4 +65,5 @@ export { usePluginWorkspace, type PluginWorkspaceSlotsLike, type UsePluginWorksp
|
|
|
65
65
|
export { type PluginWorkspaceControlsModel, type PluginWorkspaceShellModel, type PluginWorkspaceSidebarModel, } from './pluginWorkspaceModel';
|
|
66
66
|
export { useFocusTrap, type UseFocusTrapOptions, type UseFocusTrapReturn, } from './useFocusTrap';
|
|
67
67
|
export { useRovingFocus, type UseRovingFocusOptions, type UseRovingFocusReturn, } from './useRovingFocus';
|
|
68
|
+
export { reorderList, useListReorder, useReorderAnnouncer, REORDER_ANNOUNCER_STYLE, type ListReorderMove, type UseListReorderOptions, type UseListReorderReturn, type UseReorderAnnouncerReturn, } from './useListReorder';
|
|
68
69
|
export { useMenuKeyboard, type UseMenuKeyboardOptions, type UseMenuKeyboardReturn, } from './useMenuKeyboard';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { a as SORT_OPTIONS, c as formatExperimentDate, d as resolveExperimentCode, i as EXPERIMENT_STATUS_VARIANT_MAP, l as formatExperimentStatus, m as useEventListener, n as EXPERIMENT_STATUS_LABELS, o as datePresetToISO, p as useFocusTrap, r as EXPERIMENT_STATUS_OPTIONS, s as experimentIdFromRoute, t as DATE_PRESET_OPTIONS, u as getExperimentStatusVariant } from "../experiment-utils-DV3DrvE_.js";
|
|
2
|
-
import {
|
|
3
|
-
import { A as useConcentrationUnits, At as formatTimeSlot, C as controlsToViewIds, Ct as addMinutes, D as getTypeDefault, Dt as findNearestTimeSlotIndex, E as getFieldRegistryEntry, Et as findAvailableSlots, F as ATOMIC_WEIGHTS, Ft as rangesOverlap, G as createGeneratedAnalysisTransport, Ht as useSelectionLimit, I as useChemicalFormula, It as snapToSlot, K as useGeneratedAnalysis, Lt as toMinutes, Mt as generateTimeSlots, N as useSequenceUtils, Nt as isTimeInRange, Ot as formatDuration, Pt as parseTime, Rt as useTimeUtils, S as controlsToTopBarSettingsConfig, T as getDefaultControlView, Tt as durationMinutes, Vt as useListSelection, W as resolveCurrentPluginId, _ as controlsToFormSchema, a as defineDoseCalculatorControlProps, b as controlsToSettingsSchema, c as defineWellPlateDoseComponentBindings, d as defineControlModel, h as controlValuesToComponentProps, i as useControlSchema, jt as fromMinutes, kt as formatTime, l as defineWellPlateDoseControlProps, m as controlValuesToComponentBindingsById, n as defineControls, o as defineDoseDesignControlModel, p as controlValuesToComponentBindings, q as usePluginJobs, r as getControlDefaults, s as defineWellPlateControlProps, t as defineControlComponentBindings, u as useControlWorkspace, v as controlsToSectionFormSchema, w as controlsToViewItems, wt as compareTime, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas, z as useAnalysisArtifacts } from "../useControlSchema-
|
|
4
|
-
import { $ as
|
|
5
|
-
import {
|
|
6
|
-
import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "../useFormBuilder-
|
|
2
|
+
import { n as useRequestSyncState } from "../Skeleton-DxtwJ5gt.js";
|
|
3
|
+
import { A as useConcentrationUnits, At as formatTimeSlot, C as controlsToViewIds, Ct as addMinutes, D as getTypeDefault, Dt as findNearestTimeSlotIndex, E as getFieldRegistryEntry, Et as findAvailableSlots, F as ATOMIC_WEIGHTS, Ft as rangesOverlap, G as createGeneratedAnalysisTransport, Ht as useSelectionLimit, I as useChemicalFormula, It as snapToSlot, K as useGeneratedAnalysis, Lt as toMinutes, Mt as generateTimeSlots, N as useSequenceUtils, Nt as isTimeInRange, Ot as formatDuration, Pt as parseTime, Rt as useTimeUtils, S as controlsToTopBarSettingsConfig, T as getDefaultControlView, Tt as durationMinutes, Vt as useListSelection, W as resolveCurrentPluginId, _ as controlsToFormSchema, a as defineDoseCalculatorControlProps, b as controlsToSettingsSchema, c as defineWellPlateDoseComponentBindings, d as defineControlModel, h as controlValuesToComponentProps, i as useControlSchema, jt as fromMinutes, kt as formatTime, l as defineWellPlateDoseControlProps, m as controlValuesToComponentBindingsById, n as defineControls, o as defineDoseDesignControlModel, p as controlValuesToComponentBindings, q as usePluginJobs, r as getControlDefaults, s as defineWellPlateControlProps, t as defineControlComponentBindings, u as useControlWorkspace, v as controlsToSectionFormSchema, w as controlsToViewItems, wt as compareTime, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas, z as useAnalysisArtifacts } from "../useControlSchema-aMZlb4Sc.js";
|
|
4
|
+
import { $ as usePresenceHeartbeat, A as useAutoGroup, B as useReorderAnnouncer, D as useFileImport, E as readFileAsText, F as DEFAULT_COLORS, G as usePluginWorkspace, H as combinePluginJobSources, I as useWellPlateEditor, J as APP_EXPERIMENT_KEY, K as DEFAULT_MOBILE_VIEWPORT_QUERY, L as REORDER_ANNOUNCER_STYLE, M as extractSampleNamesFromDesignData, N as extractSampleOptionsFromDesignData, O as validateImportFile, P as unwrapExperimentDesignData, Q as getPresenceClientId, R as reorderList, T as parseDelimitedText, U as useJobsStatusTray, V as useDoseCalculator, W as usePluginJobCenter, X as getInjectedFrontendRevision, Y as useAppExperiment, Z as useRuntimeAlignment, _ as useScheduleDrag, a as useReagentSeries, at as compareSortValues, b as useExpansionSet, c as useBioTemplatePresetWorkspace, ct as useRovingFocus, d as getBioTemplateComponentProps, et as useTheme, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, it as useTextSearch, k as extractSamplesFromDesignData, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, nt as candidateMatchesSearch, o as useGroupAssignment, ot as useSortedItems, p as useBioTemplateComponents, q as useMobileSupportGate, r as DEFAULT_UNITS, rt as normalizeSearchQuery, s as useRackEditor, st as useMenuKeyboard, t as useProtocolTemplates, tt as useToast, u as useBioTemplateWorkspace, v as useExperimentSamples, w as detectDelimiter, x as useSampleGroups, y as useExperimentData, z as useListReorder } from "../useProtocolTemplates-BmX_iVBR.js";
|
|
5
|
+
import { i as useApi, n as AuthenticationRequiredError } from "../errors-_W0-LbA6.js";
|
|
6
|
+
import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "../useFormBuilder-TCxNnqeb.js";
|
|
7
7
|
import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "../analysisArtifactTypes-DQ0MjwHZ.js";
|
|
8
|
-
import { B as toBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, P as getBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, l as requireBioTemplateControlSchema, o as getBioTemplateControlSchema } from "../templates-
|
|
9
|
-
import { n as useDebouncedWatch, t as useExperimentSelector } from "../useExperimentSelector-
|
|
10
|
-
import { A as useAsync, C as createPluginResourceClient, D as buildAnalysisArtifactTargetQuery, E as useCommandHistory, M as resolvePluginFrontendBase, N as usePasskey, O as parseAnalysisArtifactTarget, P as useAuth, S as wellIdsInRectangle, T as useOptimisticMutation, _ as createWellPlateWells, a as pluginFormDataFromPayload, b as useWellPainting, c as usePluginClient, d as buildPluginEndpointUrl, f as resolvePluginBaseUrl, g as createRowConditions, h as createColumnConditions, i as getPluginPageSelectorItems, j as useAsyncBatch, k as usePluginConfig, l as usePluginEventStream, m as useWellPlateValidation, n as downloadBlob, o as uploadPluginEndpoint, p as runWellPlateValidation, r as downloadPluginEndpoint, s as useCurrentExperiment, t as createPluginClient, u as usePluginSettings, v as useWellPlateAdapter, w as useResourceCrud, x as wellIdToCoordinate, y as coordinateToWellId } from "../composables-
|
|
11
|
-
export { ANALYSIS_FILE_ARTIFACT_SCHEMA, APP_EXPERIMENT_KEY, ATOMIC_WEIGHTS, AuthenticationRequiredError, DATE_PRESET_OPTIONS, DEFAULT_COLORS, DEFAULT_MOBILE_VIEWPORT_QUERY, DEFAULT_PRESETS, DEFAULT_UNITS, EXPERIMENT_STATUS_LABELS, EXPERIMENT_STATUS_OPTIONS, EXPERIMENT_STATUS_VARIANT_MAP, SORT_OPTIONS, addMinutes, buildAnalysisArtifactTargetQuery, buildPluginEndpointUrl, candidateMatchesSearch, combinePluginJobSources, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, coordinateToWellId, createColumnConditions, createGeneratedAnalysisTransport, createPluginClient, createPluginResourceClient, createRowConditions, createWellPlateWells, datePresetToISO, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, evaluateCondition, experimentIdFromRoute, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlSchema, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getInjectedFrontendRevision, getPluginPageSelectorItems, getPresenceClientId, getTypeDefault, isTimeInRange, normalizeSearchQuery, parseAnalysisArtifactTarget, parseDelimitedText, parseTime, pluginFormDataFromPayload, rangesOverlap, readFileAsText, requireBioTemplateControlSchema, resolveCurrentPluginId, resolveExperimentCode, resolvePluginBaseUrl, resolvePluginFrontendBase, runWellPlateValidation, snapToSlot, toBioTemplateComponentBindings, toBioTemplateComponentBindingsById, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, toMinutes, unwrapExperimentDesignData, uploadPluginEndpoint, useAnalysisArtifacts, useApi, useAppExperiment, useAsync, useAsyncBatch, useAuth, useAutoGroup, useBioTemplateComponents, useBioTemplateControls, useBioTemplatePackWorkspace, useBioTemplatePresetWorkspace, useBioTemplateWorkspace, useChemicalFormula, useCommandHistory, useConcentrationUnits, useControlSchema, useControlWorkspace, useCurrentExperiment, useDebouncedWatch, useDoseCalculator, useEventListener, useExpansionSet, useExperimentData, useExperimentSamples, useExperimentSave, useExperimentSelector, useFileImport, useFocusTrap, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListSelection, useMenuKeyboard, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePluginClient, usePluginConfig, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, usePluginWorkspace, usePresenceHeartbeat, useProtocolTemplates, useRackEditor, useReagentSeries, useRequestSyncState, useResourceCrud, useRovingFocus, useRuntimeAlignment, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateImportFile, wellIdToCoordinate, wellIdsInRectangle };
|
|
8
|
+
import { B as toBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, P as getBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, l as requireBioTemplateControlSchema, o as getBioTemplateControlSchema } from "../templates-Qq113pyZ.js";
|
|
9
|
+
import { n as useDebouncedWatch, t as useExperimentSelector } from "../useExperimentSelector-I8HC8hUu.js";
|
|
10
|
+
import { A as useAsync, C as createPluginResourceClient, D as buildAnalysisArtifactTargetQuery, E as useCommandHistory, M as resolvePluginFrontendBase, N as usePasskey, O as parseAnalysisArtifactTarget, P as useAuth, S as wellIdsInRectangle, T as useOptimisticMutation, _ as createWellPlateWells, a as pluginFormDataFromPayload, b as useWellPainting, c as usePluginClient, d as buildPluginEndpointUrl, f as resolvePluginBaseUrl, g as createRowConditions, h as createColumnConditions, i as getPluginPageSelectorItems, j as useAsyncBatch, k as usePluginConfig, l as usePluginEventStream, m as useWellPlateValidation, n as downloadBlob, o as uploadPluginEndpoint, p as runWellPlateValidation, r as downloadPluginEndpoint, s as useCurrentExperiment, t as createPluginClient, u as usePluginSettings, v as useWellPlateAdapter, w as useResourceCrud, x as wellIdToCoordinate, y as coordinateToWellId } from "../composables-B_pia3hO.js";
|
|
11
|
+
export { ANALYSIS_FILE_ARTIFACT_SCHEMA, APP_EXPERIMENT_KEY, ATOMIC_WEIGHTS, AuthenticationRequiredError, DATE_PRESET_OPTIONS, DEFAULT_COLORS, DEFAULT_MOBILE_VIEWPORT_QUERY, DEFAULT_PRESETS, DEFAULT_UNITS, EXPERIMENT_STATUS_LABELS, EXPERIMENT_STATUS_OPTIONS, EXPERIMENT_STATUS_VARIANT_MAP, REORDER_ANNOUNCER_STYLE, SORT_OPTIONS, addMinutes, buildAnalysisArtifactTargetQuery, buildPluginEndpointUrl, candidateMatchesSearch, combinePluginJobSources, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, coordinateToWellId, createColumnConditions, createGeneratedAnalysisTransport, createPluginClient, createPluginResourceClient, createRowConditions, createWellPlateWells, datePresetToISO, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, evaluateCondition, experimentIdFromRoute, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlSchema, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getInjectedFrontendRevision, getPluginPageSelectorItems, getPresenceClientId, getTypeDefault, isTimeInRange, normalizeSearchQuery, parseAnalysisArtifactTarget, parseDelimitedText, parseTime, pluginFormDataFromPayload, rangesOverlap, readFileAsText, reorderList, requireBioTemplateControlSchema, resolveCurrentPluginId, resolveExperimentCode, resolvePluginBaseUrl, resolvePluginFrontendBase, runWellPlateValidation, snapToSlot, toBioTemplateComponentBindings, toBioTemplateComponentBindingsById, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, toMinutes, unwrapExperimentDesignData, uploadPluginEndpoint, useAnalysisArtifacts, useApi, useAppExperiment, useAsync, useAsyncBatch, useAuth, useAutoGroup, useBioTemplateComponents, useBioTemplateControls, useBioTemplatePackWorkspace, useBioTemplatePresetWorkspace, useBioTemplateWorkspace, useChemicalFormula, useCommandHistory, useConcentrationUnits, useControlSchema, useControlWorkspace, useCurrentExperiment, useDebouncedWatch, useDoseCalculator, useEventListener, useExpansionSet, useExperimentData, useExperimentSamples, useExperimentSave, useExperimentSelector, useFileImport, useFocusTrap, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListReorder, useListSelection, useMenuKeyboard, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePluginClient, usePluginConfig, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, usePluginWorkspace, usePresenceHeartbeat, useProtocolTemplates, useRackEditor, useReagentSeries, useReorderAnnouncer, useRequestSyncState, useResourceCrud, useRovingFocus, useRuntimeAlignment, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateImportFile, wellIdToCoordinate, wellIdsInRectangle };
|
|
@@ -2,18 +2,34 @@ import { Ref } from 'vue';
|
|
|
2
2
|
export interface UseDropdownStateOptions {
|
|
3
3
|
closeOnOutsideClick?: boolean;
|
|
4
4
|
closeOnEscape?: boolean;
|
|
5
|
+
/** Close the panel when the page scrolls or the viewport resizes. Default `false`. */
|
|
6
|
+
closeOnScroll?: boolean;
|
|
5
7
|
insideRefs?: Array<Ref<HTMLElement | null>>;
|
|
8
|
+
/**
|
|
9
|
+
* Element focus returns to when the panel closes with `close(true)` (Escape).
|
|
10
|
+
* Pass one when the trigger lives outside `rootRef`; otherwise bind the
|
|
11
|
+
* returned `triggerRef` to the trigger element.
|
|
12
|
+
*/
|
|
13
|
+
triggerRef?: Ref<HTMLElement | null>;
|
|
6
14
|
onOpen?: () => void;
|
|
7
15
|
onClose?: () => void;
|
|
8
16
|
}
|
|
9
17
|
export interface UseDropdownStateReturn {
|
|
10
18
|
isOpen: Ref<boolean>;
|
|
11
19
|
rootRef: Ref<HTMLElement | null>;
|
|
20
|
+
/** Bind to the trigger element so Escape can return focus to it. */
|
|
21
|
+
triggerRef: Ref<HTMLElement | null>;
|
|
12
22
|
open: () => void;
|
|
13
|
-
|
|
23
|
+
/** Closes the panel; `returnFocus` moves focus back to `triggerRef`. */
|
|
24
|
+
close: (returnFocus?: boolean) => void;
|
|
14
25
|
toggle: () => void;
|
|
15
26
|
handleClickOutside: (event: MouseEvent) => void;
|
|
16
27
|
handleKeydown: (event: KeyboardEvent) => void;
|
|
17
28
|
}
|
|
18
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Shared disclosure state for dropdown-style SDK components: open/close state,
|
|
31
|
+
* outside-click and Escape closing, optional scroll/resize closing, and focus
|
|
32
|
+
* return to the trigger. `close(returnFocus)` mirrors `useMenuKeyboard`'s
|
|
33
|
+
* contract, so the two compose directly.
|
|
34
|
+
*/
|
|
19
35
|
export declare function useDropdownState(options?: UseDropdownStateOptions): UseDropdownStateReturn;
|
|
@@ -12,7 +12,16 @@ export interface EventStreamOptions<TData = string> {
|
|
|
12
12
|
headers?: HeadersInit;
|
|
13
13
|
credentials?: RequestCredentials;
|
|
14
14
|
immediate?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Reconnect after a dropped stream. Left unset, it follows the platform's
|
|
17
|
+
* `wsAutoReconnect` setting, defaulting to `true` without a settings store.
|
|
18
|
+
*/
|
|
15
19
|
reconnect?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Delay before the first reconnect attempt. Left unset, it follows the
|
|
22
|
+
* platform's `wsReconnectInterval` setting, defaulting to 2000 ms without a
|
|
23
|
+
* settings store. A server-sent `retry:` field still overrides it.
|
|
24
|
+
*/
|
|
16
25
|
reconnectDelayMs?: number;
|
|
17
26
|
parseJson?: boolean;
|
|
18
27
|
shouldReconnect?: (cause?: unknown) => boolean;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
/** Inline style for a visually hidden `aria-live` region (no global utility class in the SDK). */
|
|
3
|
+
export declare const REORDER_ANNOUNCER_STYLE: Readonly<{
|
|
4
|
+
position: "absolute";
|
|
5
|
+
width: "1px";
|
|
6
|
+
height: "1px";
|
|
7
|
+
padding: "0";
|
|
8
|
+
margin: "-1px";
|
|
9
|
+
overflow: "hidden";
|
|
10
|
+
clip: "rect(0, 0, 0, 0)";
|
|
11
|
+
whiteSpace: "nowrap";
|
|
12
|
+
border: "0";
|
|
13
|
+
}>;
|
|
14
|
+
export interface UseReorderAnnouncerReturn {
|
|
15
|
+
/** Bind to a polite live region's text content. */
|
|
16
|
+
announcement: Ref<string>;
|
|
17
|
+
/** Publishes a message to the live region. */
|
|
18
|
+
announce: (message: string) => void;
|
|
19
|
+
/** Bind to the live region's `style` so it stays visually hidden. */
|
|
20
|
+
announcerStyle: typeof REORDER_ANNOUNCER_STYLE;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Screen-reader announcements for drag/keyboard move interactions. Bind
|
|
24
|
+
* `announcement` to a `role="status" aria-live="polite"` element styled with
|
|
25
|
+
* `announcerStyle`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function useReorderAnnouncer(): UseReorderAnnouncerReturn;
|
|
28
|
+
export interface ListReorderMove<T> {
|
|
29
|
+
/** Index the item moved from, within `items()`. */
|
|
30
|
+
fromIndex: number;
|
|
31
|
+
/** Index the item moved to, within `items()`. */
|
|
32
|
+
toIndex: number;
|
|
33
|
+
/** The reordered array (a copy — `items()` is never mutated). */
|
|
34
|
+
items: T[];
|
|
35
|
+
/** Whether the move came from the keyboard or a pointer drag. */
|
|
36
|
+
source: 'keyboard' | 'drag';
|
|
37
|
+
}
|
|
38
|
+
export interface UseListReorderOptions<T> {
|
|
39
|
+
/** The list being reordered, in its canonical (not merely rendered) order. */
|
|
40
|
+
items: () => T[];
|
|
41
|
+
/** Stable id for an item; falls back to the render index when ids repeat. */
|
|
42
|
+
getId: (item: T, index: number) => string;
|
|
43
|
+
/** Applies the move. The composable never mutates the source array. */
|
|
44
|
+
onReorder: (move: ListReorderMove<T>) => void;
|
|
45
|
+
/** Human-readable name used in announcements. Defaults to the item's id. */
|
|
46
|
+
getLabel?: (item: T, index: number) => string;
|
|
47
|
+
/** Blocks every reorder while it returns `true` (readonly / non-sortable lists). */
|
|
48
|
+
disabled?: () => boolean;
|
|
49
|
+
/** Resolves the focusable element for an id so keyboard moves keep focus on the item. */
|
|
50
|
+
getElement?: (id: string) => HTMLElement | null | undefined;
|
|
51
|
+
/** Noun used in announcements, e.g. `'Reagent'`. Default `'Item'`. */
|
|
52
|
+
itemNoun?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface UseListReorderReturn<T> {
|
|
55
|
+
/** Id of the item currently being dragged, or `null`. */
|
|
56
|
+
draggingId: Ref<string | null>;
|
|
57
|
+
/** Id of the item the pointer is hovering as a drop target, or `null`. */
|
|
58
|
+
dragOverId: Ref<string | null>;
|
|
59
|
+
isDragging: (id: string) => boolean;
|
|
60
|
+
isDragOver: (id: string) => boolean;
|
|
61
|
+
announcement: Ref<string>;
|
|
62
|
+
announcerStyle: typeof REORDER_ANNOUNCER_STYLE;
|
|
63
|
+
announce: (message: string) => void;
|
|
64
|
+
/** Bind to the draggable element's `@dragstart`. */
|
|
65
|
+
onDragStart: (event: DragEvent, item: T, index: number) => void;
|
|
66
|
+
/** Bind to `@dragover` — calls `preventDefault()` so the drop is accepted. */
|
|
67
|
+
onDragOver: (event: DragEvent, item: T, index: number) => void;
|
|
68
|
+
/** Bind to `@dragleave`. */
|
|
69
|
+
onDragLeave: () => void;
|
|
70
|
+
/** Bind to `@drop`. */
|
|
71
|
+
onDrop: (event: DragEvent, item: T, index: number) => void;
|
|
72
|
+
/** Bind to `@dragend`. */
|
|
73
|
+
onDragEnd: () => void;
|
|
74
|
+
/**
|
|
75
|
+
* Bind to the item's (or its drag handle's) `@keydown`: Alt+ArrowUp / Alt+ArrowLeft
|
|
76
|
+
* moves the item one position earlier, Alt+ArrowDown / Alt+ArrowRight one later.
|
|
77
|
+
*/
|
|
78
|
+
onKeydown: (event: KeyboardEvent, item: T, index: number) => void;
|
|
79
|
+
/** Moves an item between two indices of `items()` programmatically. */
|
|
80
|
+
move: (fromIndex: number, toIndex: number, source?: 'keyboard' | 'drag') => void;
|
|
81
|
+
}
|
|
82
|
+
/** Pure helper: a copy of `items` with the entry at `from` moved to `to`. */
|
|
83
|
+
export declare function reorderList<T>(items: T[], from: number, to: number): T[];
|
|
84
|
+
/**
|
|
85
|
+
* Keyboard-accessible list reordering shared by the SDK's drag-to-reorder lists.
|
|
86
|
+
* It owns the HTML5 drag state, the drop-index maths, and an Alt+Arrow keyboard
|
|
87
|
+
* alternative that announces every move through a polite live region — so a
|
|
88
|
+
* reorder never depends on a pointer.
|
|
89
|
+
*/
|
|
90
|
+
export declare function useListReorder<T>(options: UseListReorderOptions<T>): UseListReorderReturn<T>;
|
|
@@ -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 AppAvatarMenu and DropdownButton
|
|
27
|
-
*
|
|
26
|
+
* WAI-ARIA menu button pattern). Used by ActionMenu, AppAvatarMenu and DropdownButton,
|
|
27
|
+
* each pairing it with `useDropdownState` for the disclosure state itself.
|
|
28
28
|
*/
|
|
29
29
|
export declare function useMenuKeyboard(options: UseMenuKeyboardOptions): UseMenuKeyboardReturn;
|
|
@@ -21,5 +21,7 @@ export interface UsePluginConfigReturn {
|
|
|
21
21
|
/** Restore the last loaded or saved configuration snapshot. */
|
|
22
22
|
reset: () => void;
|
|
23
23
|
}
|
|
24
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `usePluginSettings()` for typed plugin settings.
|
|
26
|
+
*/
|
|
25
27
|
export declare function usePluginConfig(pluginName?: string): UsePluginConfigReturn;
|
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
import { Ref } from 'vue';
|
|
2
2
|
export type RequestSyncSuccessKind = 'load' | 'save' | 'run';
|
|
3
|
+
/**
|
|
4
|
+
* The unit of work `run()` drives.
|
|
5
|
+
*
|
|
6
|
+
* It receives an `AbortSignal` that fires when the run is superseded by a
|
|
7
|
+
* newer `run()` or by `cancel()`. Zero-argument operations stay valid and
|
|
8
|
+
* simply ignore it.
|
|
9
|
+
*/
|
|
10
|
+
export type RequestSyncOperation<T> = (signal: AbortSignal) => Promise<T>;
|
|
3
11
|
export interface RequestSyncRunOptions {
|
|
4
12
|
success?: RequestSyncSuccessKind;
|
|
5
13
|
errorMessage?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Abort the previously started run when this one starts. Default `true`;
|
|
16
|
+
* pass `false` to let overlapping runs finish their own work (the stale
|
|
17
|
+
* guard on shared state still applies either way).
|
|
18
|
+
*/
|
|
19
|
+
abortPrevious?: boolean;
|
|
20
|
+
/** Caller-owned signal; aborting it aborts this run's signal too. */
|
|
21
|
+
signal?: AbortSignal;
|
|
6
22
|
}
|
|
7
23
|
export interface UseRequestSyncStateReturn {
|
|
8
24
|
/** Whether a request is in progress. */
|
|
@@ -27,8 +43,32 @@ export interface UseRequestSyncStateReturn {
|
|
|
27
43
|
markSaved: (date?: Date) => void;
|
|
28
44
|
/** Mark the operation as successfully run. */
|
|
29
45
|
markRun: (date?: Date) => void;
|
|
30
|
-
/**
|
|
31
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Run a request with shared loading/error handling and optional sync marking.
|
|
48
|
+
*
|
|
49
|
+
* ## Stale-response semantics
|
|
50
|
+
*
|
|
51
|
+
* Every call takes a monotonically increasing token. Starting a run
|
|
52
|
+
* supersedes any run started before it, and a superseded run writes **no**
|
|
53
|
+
* shared state when it finally settles: it does not clear `loading`, does not
|
|
54
|
+
* set `error`, and does not move `lastLoadedAt` / `lastSavedAt` / `lastRunAt`.
|
|
55
|
+
* Only the newest run owns those.
|
|
56
|
+
*
|
|
57
|
+
* The caller's own promise is untouched by the guard — a superseded run still
|
|
58
|
+
* resolves with its value or rejects with its own error, exactly as the
|
|
59
|
+
* operation did. The guard never invents a rejection, so a caller awaiting
|
|
60
|
+
* `run()` never sees a "superseded" error it did not cause.
|
|
61
|
+
*
|
|
62
|
+
* The operation additionally receives an `AbortSignal` that fires when its
|
|
63
|
+
* run is superseded or `cancel()` is called, so an operation that forwards
|
|
64
|
+
* the signal (`fetch(url, { signal })`) stops work instead of racing.
|
|
65
|
+
*/
|
|
66
|
+
run: <T>(operation: RequestSyncOperation<T>, options?: RequestSyncRunOptions) => Promise<T>;
|
|
67
|
+
/**
|
|
68
|
+
* Abort the in-flight run and drop `loading`. The aborted run's completion
|
|
69
|
+
* is treated as stale and writes no state.
|
|
70
|
+
*/
|
|
71
|
+
cancel: () => void;
|
|
32
72
|
}
|
|
33
73
|
/** Shared loading/error/timestamp state for generated plugin request helpers. */
|
|
34
74
|
export declare function useRequestSyncState(defaultErrorMessage?: string): UseRequestSyncStateReturn;
|
|
@@ -75,4 +75,5 @@ export declare function useScheduleDrag(options: UseScheduleDragOptions): {
|
|
|
75
75
|
startCreate: (date: Date, y: number, dayIndex: number) => void;
|
|
76
76
|
startMove: (event: ScheduleEvent, y: number, dayIndex: number) => void;
|
|
77
77
|
startResize: (event: ScheduleEvent, edge: "top" | "bottom", y: number, dayIndex: number) => void;
|
|
78
|
+
nudgeEvent: (event: ScheduleEvent, direction: -1 | 1, mode?: "move" | "resize") => boolean;
|
|
78
79
|
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { B as currentExperimentFromContext, U as resolveCurrentExperimentId, V as getInjectedPlatformContext, et as useEventStream, lt as PLUGIN_SECRET_FORMAT_KEY } from "./useControlSchema-
|
|
3
|
-
import {
|
|
4
|
-
import { i as usePlatformContext } from "./useFormBuilder-
|
|
1
|
+
import { n as useRequestSyncState } from "./Skeleton-DxtwJ5gt.js";
|
|
2
|
+
import { B as currentExperimentFromContext, U as resolveCurrentExperimentId, V as getInjectedPlatformContext, et as useEventStream, lt as PLUGIN_SECRET_FORMAT_KEY } from "./useControlSchema-aMZlb4Sc.js";
|
|
3
|
+
import { a as useAuthStore, d as useSettingsStore, i as useApi, n as AuthenticationRequiredError, r as authenticationRequiredError, t as readErrorMessage } from "./errors-_W0-LbA6.js";
|
|
4
|
+
import { i as usePlatformContext } from "./useFormBuilder-TCxNnqeb.js";
|
|
5
|
+
import { bn as rowLabel, pn as PLATE_CONFIGS, yn as rowIndex } from "./templates-Qq113pyZ.js";
|
|
5
6
|
import { computed, getCurrentInstance, onMounted, onUnmounted, ref, shallowRef, toValue, watch } from "vue";
|
|
6
7
|
import axios from "axios";
|
|
7
8
|
//#region src/composables/useAuth.ts
|
|
@@ -637,7 +638,9 @@ function platformOwnedConfigPatch(config) {
|
|
|
637
638
|
function responseConfigPayload(response) {
|
|
638
639
|
return response.config ?? response.settings ?? {};
|
|
639
640
|
}
|
|
640
|
-
/**
|
|
641
|
+
/**
|
|
642
|
+
* @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `usePluginSettings()` for typed plugin settings.
|
|
643
|
+
*/
|
|
641
644
|
function usePluginConfig(pluginName) {
|
|
642
645
|
const injectedContext = getInjectedPlatformContext();
|
|
643
646
|
const { plugin } = usePlatformContext();
|
|
@@ -887,7 +890,7 @@ function useOptimisticMutation(options) {
|
|
|
887
890
|
return result;
|
|
888
891
|
} catch (err) {
|
|
889
892
|
options.rollback?.(snapshot, variables, err);
|
|
890
|
-
error.value = options.readErrorMessage?.(err) ?? readErrorMessage
|
|
893
|
+
error.value = options.readErrorMessage?.(err) ?? readErrorMessage(err);
|
|
891
894
|
options.onError?.(err, context);
|
|
892
895
|
throw err;
|
|
893
896
|
} finally {
|
|
@@ -906,12 +909,6 @@ function useOptimisticMutation(options) {
|
|
|
906
909
|
reset
|
|
907
910
|
};
|
|
908
911
|
}
|
|
909
|
-
function readErrorMessage$1(value) {
|
|
910
|
-
if (value instanceof Error && value.message) return value.message;
|
|
911
|
-
if (typeof value === "string" && value.trim()) return value;
|
|
912
|
-
if (typeof value === "object" && value !== null && "message" in value && typeof value.message === "string" && value.message.trim()) return value.message;
|
|
913
|
-
return "Request failed.";
|
|
914
|
-
}
|
|
915
912
|
//#endregion
|
|
916
913
|
//#region src/composables/useResourceCrud.ts
|
|
917
914
|
/**
|
|
@@ -1046,45 +1043,8 @@ function resolveKey(keyOrItem, getKey) {
|
|
|
1046
1043
|
if (typeof keyOrItem === "string" || typeof keyOrItem === "number") return keyOrItem;
|
|
1047
1044
|
return getKey(keyOrItem);
|
|
1048
1045
|
}
|
|
1049
|
-
function readErrorMessage(value) {
|
|
1050
|
-
if (value instanceof Error && value.message) return value.message;
|
|
1051
|
-
if (typeof value === "string" && value.trim()) return value;
|
|
1052
|
-
if (typeof value === "object" && value !== null && "message" in value && typeof value.message === "string" && value.message.trim()) return value.message;
|
|
1053
|
-
return "Request failed.";
|
|
1054
|
-
}
|
|
1055
1046
|
//#endregion
|
|
1056
1047
|
//#region src/composables/useWellPainting.ts
|
|
1057
|
-
var ROW_LABELS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
1058
|
-
var PLATE_DIMENSIONS = {
|
|
1059
|
-
6: {
|
|
1060
|
-
rows: 2,
|
|
1061
|
-
cols: 3
|
|
1062
|
-
},
|
|
1063
|
-
12: {
|
|
1064
|
-
rows: 3,
|
|
1065
|
-
cols: 4
|
|
1066
|
-
},
|
|
1067
|
-
24: {
|
|
1068
|
-
rows: 4,
|
|
1069
|
-
cols: 6
|
|
1070
|
-
},
|
|
1071
|
-
48: {
|
|
1072
|
-
rows: 6,
|
|
1073
|
-
cols: 8
|
|
1074
|
-
},
|
|
1075
|
-
54: {
|
|
1076
|
-
rows: 6,
|
|
1077
|
-
cols: 9
|
|
1078
|
-
},
|
|
1079
|
-
96: {
|
|
1080
|
-
rows: 8,
|
|
1081
|
-
cols: 12
|
|
1082
|
-
},
|
|
1083
|
-
384: {
|
|
1084
|
-
rows: 16,
|
|
1085
|
-
cols: 24
|
|
1086
|
-
}
|
|
1087
|
-
};
|
|
1088
1048
|
/**
|
|
1089
1049
|
* Pointer painting/rectangle selection state for WellPlate-based editors.
|
|
1090
1050
|
*
|
|
@@ -1164,15 +1124,15 @@ function wellIdToCoordinate(wellId) {
|
|
|
1164
1124
|
const match = /^([A-Z]+)(\d+)$/i.exec(wellId.trim());
|
|
1165
1125
|
if (!match) return null;
|
|
1166
1126
|
return {
|
|
1167
|
-
row:
|
|
1127
|
+
row: rowIndex(match[1].toUpperCase()),
|
|
1168
1128
|
col: Number(match[2]) - 1
|
|
1169
1129
|
};
|
|
1170
1130
|
}
|
|
1171
1131
|
function coordinateToWellId(coord) {
|
|
1172
|
-
return `${
|
|
1132
|
+
return `${rowLabel(coord.row)}${coord.col + 1}`;
|
|
1173
1133
|
}
|
|
1174
1134
|
function wellIdsInRectangle(start, end, format) {
|
|
1175
|
-
const dimensions =
|
|
1135
|
+
const dimensions = PLATE_CONFIGS[format];
|
|
1176
1136
|
const minRow = Math.max(0, Math.min(start.row, end.row));
|
|
1177
1137
|
const maxRow = Math.min(dimensions.rows - 1, Math.max(start.row, end.row));
|
|
1178
1138
|
const minCol = Math.max(0, Math.min(start.col, end.col));
|
|
@@ -1184,22 +1144,6 @@ function wellIdsInRectangle(start, end, format) {
|
|
|
1184
1144
|
}));
|
|
1185
1145
|
return ids;
|
|
1186
1146
|
}
|
|
1187
|
-
function rowLabelToIndex$1(label) {
|
|
1188
|
-
let result = 0;
|
|
1189
|
-
for (const char of label) result = result * 26 + (char.charCodeAt(0) - 64);
|
|
1190
|
-
return result - 1;
|
|
1191
|
-
}
|
|
1192
|
-
function indexToRowLabel$1(index) {
|
|
1193
|
-
if (index < 26) return ROW_LABELS[index];
|
|
1194
|
-
let value = index + 1;
|
|
1195
|
-
let label = "";
|
|
1196
|
-
while (value > 0) {
|
|
1197
|
-
value--;
|
|
1198
|
-
label = ROW_LABELS[value % 26] + label;
|
|
1199
|
-
value = Math.floor(value / 26);
|
|
1200
|
-
}
|
|
1201
|
-
return label;
|
|
1202
|
-
}
|
|
1203
1147
|
//#endregion
|
|
1204
1148
|
//#region src/composables/useWellPlateAdapter.ts
|
|
1205
1149
|
/**
|
|
@@ -1948,4 +1892,4 @@ function useCurrentExperiment(options = {}) {
|
|
|
1948
1892
|
//#endregion
|
|
1949
1893
|
export { useAsync as A, createPluginResourceClient as C, buildAnalysisArtifactTargetQuery as D, useCommandHistory as E, resolvePluginFrontendBase as M, usePasskey as N, parseAnalysisArtifactTarget as O, useAuth as P, wellIdsInRectangle as S, useOptimisticMutation as T, createWellPlateWells as _, pluginFormDataFromPayload as a, useWellPainting as b, usePluginClient as c, buildPluginEndpointUrl as d, resolvePluginBaseUrl as f, createRowConditions as g, createColumnConditions as h, getPluginPageSelectorItems as i, useAsyncBatch as j, usePluginConfig as k, usePluginEventStream as l, useWellPlateValidation as m, downloadBlob as n, uploadPluginEndpoint as o, runWellPlateValidation as p, downloadPluginEndpoint as r, useCurrentExperiment as s, createPluginClient as t, usePluginSettings as u, useWellPlateAdapter as v, useResourceCrud as w, wellIdToCoordinate as x, coordinateToWellId as y };
|
|
1950
1894
|
|
|
1951
|
-
//# sourceMappingURL=composables-
|
|
1895
|
+
//# sourceMappingURL=composables-B_pia3hO.js.map
|