@morscherlab/mint-sdk 1.1.25 → 1.2.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -12
- package/dist/{ExperimentPopover-tLwJ7XF4.js → ExperimentPopover-oL0fg_A0.js} +6 -4
- package/dist/ExperimentPopover-oL0fg_A0.js.map +1 -0
- package/dist/{ExperimentSelectorModal-B6P2msT4.js → ExperimentSelectorModal-BeEOomw_.js} +5 -5
- package/dist/ExperimentSelectorModal-BeEOomw_.js.map +1 -0
- package/dist/{SettingsModal-BW3Ar-uy.js → SettingsModal-Dphh3RrI.js} +5 -8
- package/dist/SettingsModal-Dphh3RrI.js.map +1 -0
- package/dist/{EmptyState-p90quq8Z.js → Skeleton-DxtwJ5gt.js} +111 -93
- package/dist/Skeleton-DxtwJ5gt.js.map +1 -0
- package/dist/__tests__/components/ExperimentTimeline.test.d.ts +1 -0
- package/dist/__tests__/components/PluginWorkspaceView.internal.test.d.ts +1 -0
- package/dist/__tests__/components/SecretInput.test.d.ts +1 -0
- package/dist/__tests__/components/WellEditPopupInternal.test.d.ts +1 -0
- package/dist/__tests__/composables/useEventStream.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/AppAvatarMenu.vue.d.ts +4 -0
- package/dist/components/AppPluginSwitcher.vue.d.ts +2 -0
- package/dist/components/AppSidebar.vue.d.ts +1 -1
- package/dist/components/AuditTrail.vue.d.ts +13 -0
- package/dist/components/BatchProgressList.vue.d.ts +17 -0
- package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +1 -1
- 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/DropdownButton.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/FitPanel.vue.d.ts +1 -1
- package/dist/components/LcmsSequenceTable.vue.d.ts +29 -1
- package/dist/components/PluginWorkspaceView.props.d.ts +29 -1
- package/dist/components/PluginWorkspaceView.vue.d.ts +5 -5
- 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/SecretInput.vue.d.ts +28 -0
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +2 -1
- 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.d.ts +9 -0
- package/dist/components/index.js +8 -8
- package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -0
- package/dist/components/internal/DataStateInternal.vue.d.ts +43 -0
- package/dist/components/internal/WellEditPopupInternal.vue.d.ts +3 -1
- package/dist/components/internal/WorkspaceControlsInternal.vue.d.ts +23 -0
- package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +70 -0
- package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +43 -0
- package/dist/{components-DQt0tcpY.js → components-CgAUzF8F.js} +2491 -2235
- package/dist/components-CgAUzF8F.js.map +1 -0
- package/dist/composables/controlSchemaTypes.d.ts +34 -0
- package/dist/composables/flattenWorkspaceBindings.d.ts +61 -0
- package/dist/composables/index.d.ts +8 -2
- package/dist/composables/index.js +10 -10
- package/dist/composables/pluginWorkspaceModel.d.ts +164 -0
- package/dist/composables/useAsync.d.ts +5 -1
- package/dist/composables/useBioTemplateWorkspace.d.ts +4 -20
- package/dist/composables/useCommandHistory.d.ts +5 -1
- package/dist/composables/useDropdownState.d.ts +18 -2
- package/dist/composables/useEventStream.d.ts +52 -0
- package/dist/composables/useFocusTrap.d.ts +21 -0
- package/dist/composables/useJobsStatusTray.d.ts +1 -1
- package/dist/composables/useListReorder.d.ts +90 -0
- package/dist/composables/useMenuKeyboard.d.ts +29 -0
- package/dist/composables/useOptimisticMutation.d.ts +5 -1
- package/dist/composables/usePluginClient.d.ts +4 -17
- package/dist/composables/usePluginConfig.d.ts +3 -1
- package/dist/composables/usePluginWorkspace.d.ts +51 -0
- package/dist/composables/useRequestSyncState.d.ts +42 -2
- package/dist/composables/useResourceCrud.d.ts +5 -1
- package/dist/composables/useRovingFocus.d.ts +24 -0
- package/dist/composables/useScheduleDrag.d.ts +1 -0
- package/dist/composables/useWellPainting.d.ts +5 -1
- package/dist/composables/useWellPlateAdapter.d.ts +5 -1
- package/dist/composables/useWellPlateValidation.d.ts +5 -1
- package/dist/composables/workspaceRecipes.d.ts +188 -0
- package/dist/{composables-CkXDe7nm.js → composables-B_pia3hO.js} +105 -254
- 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-CLnzPPq5.js → experiment-utils-DV3DrvE_.js} +70 -51
- package/dist/experiment-utils-DV3DrvE_.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +15 -15
- 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 +11247 -29501
- package/dist/templates/builderReadUtils.d.ts +1 -1
- package/dist/templates/index.js +2 -4
- package/dist/{templates-CovvRZ-9.js → templates-Qq113pyZ.js} +303 -106
- package/dist/templates-Qq113pyZ.js.map +1 -0
- package/dist/types/form-builder.d.ts +1 -1
- package/dist/{useControlSchema-BhoJzWzx.js → useControlSchema-aMZlb4Sc.js} +684 -1216
- package/dist/useControlSchema-aMZlb4Sc.js.map +1 -0
- package/dist/{useDropdownState-DSb3BC3N.js → useDropdownState-DitCtrTT.js} +22 -6
- package/dist/useDropdownState-DitCtrTT.js.map +1 -0
- package/dist/{useExperimentSelector-D0pjj9WH.js → useExperimentSelector-I8HC8hUu.js} +4 -4
- package/dist/{useExperimentSelector-D0pjj9WH.js.map → useExperimentSelector-I8HC8hUu.js.map} +1 -1
- package/dist/{useFormBuilder-DiEcDis2.js → useFormBuilder-TCxNnqeb.js} +2 -2
- package/dist/{useFormBuilder-DiEcDis2.js.map → useFormBuilder-TCxNnqeb.js.map} +1 -1
- package/dist/{useProtocolTemplates-DHwSveE6.js → useProtocolTemplates-BmX_iVBR.js} +660 -197
- 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/dist/utils/pluginSecrets.d.ts +53 -0
- package/dist/utils/records.d.ts +4 -0
- package/package.json +1 -1
- package/src/__tests__/components/ActionMenu.test.ts +94 -0
- package/src/__tests__/components/AppAvatarMenu.test.ts +123 -0
- package/src/__tests__/components/BaseTabs.test.ts +67 -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/DropdownButton.test.ts +134 -0
- package/src/__tests__/components/ExperimentTimeline.test.ts +63 -0
- package/src/__tests__/components/GeneratedPluginView.test.ts +0 -5
- package/src/__tests__/components/GroupAssigner.test.ts +53 -0
- package/src/__tests__/components/JobsStatusTray.test.ts +20 -18
- package/src/__tests__/components/LcmsSequenceTable.test.ts +22 -0
- package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +230 -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/SecretInput.test.ts +87 -0
- package/src/__tests__/components/SegmentedControl.test.ts +88 -0
- package/src/__tests__/components/TimePicker.test.ts +61 -0
- package/src/__tests__/components/WellEditPopupInternal.test.ts +108 -0
- package/src/__tests__/components/WellPlate.interaction.test.ts +59 -0
- package/src/__tests__/composables/useAuth.test.ts +25 -0
- package/src/__tests__/composables/useDropdownState.test.ts +58 -1
- package/src/__tests__/composables/useEventStream.test.ts +140 -0
- package/src/__tests__/composables/useGeneratedAnalysis.test.ts +103 -0
- package/src/__tests__/composables/useJobsStatusTray.test.ts +25 -161
- package/src/__tests__/composables/useListReorder.test.ts +145 -0
- package/src/__tests__/composables/usePluginClient.test.ts +148 -13
- package/src/__tests__/composables/useRequestSyncState.test.ts +140 -0
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +55 -2
- 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 +26 -7
- 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 +8 -60
- 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 +26 -5
- 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/BioTemplateExperimentWorkspaceView.vue +10 -21
- package/src/components/BioTemplatePackWorkspaceView.vue +11 -15
- package/src/components/BioTemplatePresetWorkspaceView.vue +8 -13
- 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/ComponentBindingRenderer.vue +1 -3
- package/src/components/ConcentrationInput.vue +0 -4
- package/src/components/ConfirmDialog.vue +0 -4
- package/src/components/ControlWorkspaceView.vue +11 -22
- 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/DoseDesignWorkspaceView.vue +6 -25
- package/src/components/DropdownButton.vue +24 -6
- 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.story.vue +6 -10
- 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/PluginWorkspaceView.props.ts +38 -0
- package/src/components/PluginWorkspaceView.vue +53 -224
- 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/SecretInput.story.vue +79 -0
- package/src/components/SecretInput.vue +150 -0
- 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/index.ts +9 -0
- 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 +20 -5
- package/src/components/internal/WorkspaceControlsInternal.vue +20 -0
- package/src/components/internal/WorkspaceShellInternal.vue +125 -0
- package/src/components/internal/WorkspaceSidebarInternal.vue +82 -0
- package/src/composables/controlSchemaTypes.ts +34 -0
- package/src/composables/experimentDesignData.ts +1 -3
- package/src/composables/flattenWorkspaceBindings.ts +104 -0
- package/src/composables/formBuilderRegistry.ts +5 -0
- package/src/composables/index.ts +41 -5
- package/src/composables/pluginWorkspaceModel.ts +182 -0
- package/src/composables/useAsync.ts +5 -1
- package/src/composables/useBioTemplatePackWorkspace.ts +15 -9
- package/src/composables/useBioTemplatePresetWorkspace.ts +14 -15
- package/src/composables/useBioTemplateWorkspace.ts +18 -43
- package/src/composables/useCommandHistory.ts +5 -1
- package/src/composables/useDropdownState.ts +35 -5
- package/src/composables/useEventStream.ts +326 -0
- package/src/composables/useFileImport.ts +2 -7
- package/src/composables/useFocusTrap.ts +91 -0
- package/src/composables/useGeneratedAnalysis.ts +46 -103
- package/src/composables/useJobsStatusTray.ts +1 -1
- package/src/composables/useListReorder.story.vue +143 -0
- package/src/composables/useListReorder.ts +242 -0
- package/src/composables/useMenuKeyboard.ts +90 -0
- package/src/composables/useOptimisticMutation.ts +6 -16
- package/src/composables/usePluginClient.ts +91 -252
- package/src/composables/usePluginConfig.ts +3 -1
- package/src/composables/usePluginWorkspace.ts +208 -0
- package/src/composables/useRackEditor.ts +2 -11
- package/src/composables/useRequestSyncState.ts +98 -28
- package/src/composables/useResourceCrud.ts +6 -16
- package/src/composables/useRovingFocus.ts +66 -0
- package/src/composables/useScheduleDrag.ts +37 -0
- package/src/composables/useWellPainting.ts +10 -30
- package/src/composables/useWellPlateAdapter.ts +5 -1
- package/src/composables/useWellPlateEditor.ts +1 -11
- package/src/composables/useWellPlateValidation.ts +5 -1
- package/src/composables/workspaceRecipes.ts +267 -0
- package/src/index.ts +16 -0
- 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/secret-input.css +60 -0
- package/src/styles/components/well-plate.css +8 -0
- package/src/styles/index.css +9 -0
- package/src/styles/variables.css +29 -0
- package/src/templates/builderPresetControls.ts +1 -1
- package/src/templates/builderReadUtils.ts +1 -3
- package/src/templates/componentPlateHelpers.ts +3 -1
- package/src/templates/componentTargetResolvers.ts +1 -3
- package/src/templates/controlSchemaTargets.ts +1 -3
- 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/types/form-builder.ts +1 -0
- package/src/utils/color.ts +51 -0
- package/src/utils/errors.ts +29 -0
- package/src/utils/formModelSync.ts +1 -3
- package/src/utils/pluginIcon.ts +1 -3
- package/src/utils/pluginSecrets.ts +102 -0
- package/src/utils/records.ts +9 -0
- package/dist/EmptyState-p90quq8Z.js.map +0 -1
- package/dist/ExperimentPopover-tLwJ7XF4.js.map +0 -1
- package/dist/ExperimentSelectorModal-B6P2msT4.js.map +0 -1
- package/dist/SettingsModal-BW3Ar-uy.js.map +0 -1
- package/dist/components-DQt0tcpY.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-CkXDe7nm.js.map +0 -1
- package/dist/experiment-Y9Iz7KYi.js.map +0 -1
- package/dist/experiment-utils-CLnzPPq5.js.map +0 -1
- package/dist/templates/builderDefaults.d.ts +0 -1
- package/dist/templates/plateGeometry.d.ts +0 -4
- package/dist/templates-CovvRZ-9.js.map +0 -1
- package/dist/useApi-CDBq6z23.js.map +0 -1
- package/dist/useControlSchema-BhoJzWzx.js.map +0 -1
- package/dist/useDropdownState-DSb3BC3N.js.map +0 -1
- package/dist/useProtocolTemplates-DHwSveE6.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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { isRecord } from '../utils/records';
|
|
2
2
|
export declare function readStringList(value: unknown, fallback: string[]): string[];
|
|
3
3
|
export declare function readNumberList(value: unknown, fallback: number[]): number[];
|
|
4
4
|
export declare function readString(value: unknown, fallback: string): string;
|
package/dist/templates/index.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import "../
|
|
2
|
-
import "../
|
|
3
|
-
import "../useControlSchema-BhoJzWzx.js";
|
|
4
|
-
import { $ as toTimeCourseRows, $t as listBioTemplatePacks, A as createSamplePrepTemplate, At as toCalibrationCurveRows, B as toBioTemplateComponentProps, Bt as validatePlateMapData, C as createFlowCytometryPanelTemplate, Ct as toInstrumentRunScheduleEvents, D as createTimeCourseTemplate, Dt as toFlowPanelRows, E as createProtocolStepsTemplate, Et as toFlowPanelDataFrame, F as getBioTemplateComponentProps, Ft as validateAssayMatrixData, G as toTemplateDataFrame, Gt as validateSampleSheetData, H as toBioTemplateComponentPropsById, Ht as validateQpcrPlateData, I as listBioTemplateComponentBindings, It as validateCalibrationCurveData, J as toDoseLayoutState, Jt as getBioTemplatePresetInfo, K as toWellMapArray, Kt as validateTimeCourseData, L as toBioTemplateComponentBindings, Lt as validateDoseResponseData, M as createPlateMapTemplate, Mt as toAssayMatrixDataFrame, N as bioTemplatePresetControlValuesToOptions, Nt as toAssayMatrixRows, O as createCalibrationCurveTemplate, Ot as toCalibrationCurveColumns, P as getBioTemplateComponentBindings, Pt as toAssayMatrixSampleOptions, Q as toTimeCourseDataFrame, Qt as getBioTemplatePackInfo, R as toBioTemplateComponentBindingsById, Rt as validateFlowCytometryPanelData, S as createInstrumentRunTemplate, St as toInstrumentRunRows, T as createAssayMatrixTemplate, Tt as toFlowPanelColumns, U as toBioTemplateComponentSnippets, Ut as validateReagentListData, V as toBioTemplateComponentPropsByComponent, Vt as validateProtocolStepsData, W as toBioTemplateComponentUsage, Wt as validateSamplePrepData, X as toWellPlateWells, Xt as searchBioTemplatePresets, Y as toPlateMapEditorState, Yt as listBioTemplatePresets, Z as toTimeCourseColumns, Zt as bioTemplatePacks, _ as createElisaAssayCollection, _t as toProtocolDataFrame, a as getBioTemplateControlDefaults, an as TEMPLATE_COLLECTION_KEY, at as toSamplePrepColumns, b as createQpcrExpressionCollection, bt as toInstrumentRunColumns, c as listBioTemplatePresetControlSchemas, cn as createTemplateEnvelope, ct as toReagentColumns, d as createBioTemplatePresetCollectionFromControls, dn as extractTemplateCollection, dt as toReagentRows, en as searchBioTemplatePacks, et as toTimeCourseSteps, f as createWellPlateScreenCollection, fn as getTemplateData, ft as toQpcrColumns, g as createFlowCytometryAssayCollection, gt as toProtocolColumns, h as createWesternBlotAssayCollection, ht as toQpcrWellPlateWells, i as createBioTemplateControlToolkit, in as searchBioTemplateCatalog, it as toSampleRows, j as createSampleSheetTemplate, jt as toAssayMatrixColumns, k as createDoseResponseTemplate, kt as toCalibrationCurveDataFrame, l as requireBioTemplateControlSchema, ln as ensureTemplateEnvelope, lt as toReagentDataFrame, m as createDefaultBioTemplate, mt as toQpcrRows, n as bioTemplateControlsToSectionFormSchemas, nn as getBioTemplateInfo, nt as toSampleDataFrame, o as getBioTemplateControlSchema, on as assertTemplateEnvelope, ot as toSamplePrepDataFrame, p as createBioTemplatePackCollection, pt as toQpcrDataFrame, q as toDoseConditions, qt as bioTemplatePresets, r as bioTemplateControlsToSidebarPanels, rn as listBioTemplateCatalog, rt as toSampleOptions, s as listBioTemplateControlSchemas, sn as createTemplateCollection, st as toSamplePrepRows, t as bioTemplateControlsToFormSchema, tn as bioTemplateCatalog, tt as toSampleColumns, u as createBioTemplatePresetCollection, un as ensureTemplateFromCollection, ut as toReagentListItems, v as createTargetedMetabolomicsCollection, vt as toProtocolRows, w as createReagentListTemplate, wt as toInstrumentRunSteps, x as createQpcrPlateTemplate, xt as toInstrumentRunDataFrame, y as createLcmsBatchCollection, yt as toProtocolSteps, z as toBioTemplateComponentImports, zt as validateInstrumentRunData } from "../templates-CovvRZ-9.js";
|
|
1
|
+
import "../useControlSchema-aMZlb4Sc.js";
|
|
2
|
+
import { $ as toTimeCourseRows, $t as listBioTemplatePacks, A as createSamplePrepTemplate, At as toCalibrationCurveRows, B as toBioTemplateComponentProps, Bt as validatePlateMapData, C as createFlowCytometryPanelTemplate, Ct as toInstrumentRunScheduleEvents, D as createTimeCourseTemplate, Dt as toFlowPanelRows, E as createProtocolStepsTemplate, Et as toFlowPanelDataFrame, F as getBioTemplateComponentProps, Ft as validateAssayMatrixData, G as toTemplateDataFrame, Gt as validateSampleSheetData, H as toBioTemplateComponentPropsById, Ht as validateQpcrPlateData, I as listBioTemplateComponentBindings, It as validateCalibrationCurveData, J as toDoseLayoutState, Jt as getBioTemplatePresetInfo, K as toWellMapArray, Kt as validateTimeCourseData, L as toBioTemplateComponentBindings, Lt as validateDoseResponseData, M as createPlateMapTemplate, Mt as toAssayMatrixDataFrame, N as bioTemplatePresetControlValuesToOptions, Nt as toAssayMatrixRows, O as createCalibrationCurveTemplate, Ot as toCalibrationCurveColumns, P as getBioTemplateComponentBindings, Pt as toAssayMatrixSampleOptions, Q as toTimeCourseDataFrame, Qt as getBioTemplatePackInfo, R as toBioTemplateComponentBindingsById, Rt as validateFlowCytometryPanelData, S as createInstrumentRunTemplate, St as toInstrumentRunRows, T as createAssayMatrixTemplate, Tt as toFlowPanelColumns, U as toBioTemplateComponentSnippets, Ut as validateReagentListData, V as toBioTemplateComponentPropsByComponent, Vt as validateProtocolStepsData, W as toBioTemplateComponentUsage, Wt as validateSamplePrepData, X as toWellPlateWells, Xt as searchBioTemplatePresets, Y as toPlateMapEditorState, Yt as listBioTemplatePresets, Z as toTimeCourseColumns, Zt as bioTemplatePacks, _ as createElisaAssayCollection, _t as toProtocolDataFrame, a as getBioTemplateControlDefaults, an as TEMPLATE_COLLECTION_KEY, at as toSamplePrepColumns, b as createQpcrExpressionCollection, bt as toInstrumentRunColumns, c as listBioTemplatePresetControlSchemas, cn as createTemplateEnvelope, ct as toReagentColumns, d as createBioTemplatePresetCollectionFromControls, dn as extractTemplateCollection, dt as toReagentRows, en as searchBioTemplatePacks, et as toTimeCourseSteps, f as createWellPlateScreenCollection, fn as getTemplateData, ft as toQpcrColumns, g as createFlowCytometryAssayCollection, gt as toProtocolColumns, h as createWesternBlotAssayCollection, ht as toQpcrWellPlateWells, i as createBioTemplateControlToolkit, in as searchBioTemplateCatalog, it as toSampleRows, j as createSampleSheetTemplate, jt as toAssayMatrixColumns, k as createDoseResponseTemplate, kt as toCalibrationCurveDataFrame, l as requireBioTemplateControlSchema, ln as ensureTemplateEnvelope, lt as toReagentDataFrame, m as createDefaultBioTemplate, mt as toQpcrRows, n as bioTemplateControlsToSectionFormSchemas, nn as getBioTemplateInfo, nt as toSampleDataFrame, o as getBioTemplateControlSchema, on as assertTemplateEnvelope, ot as toSamplePrepDataFrame, p as createBioTemplatePackCollection, pt as toQpcrDataFrame, q as toDoseConditions, qt as bioTemplatePresets, r as bioTemplateControlsToSidebarPanels, rn as listBioTemplateCatalog, rt as toSampleOptions, s as listBioTemplateControlSchemas, sn as createTemplateCollection, st as toSamplePrepRows, t as bioTemplateControlsToFormSchema, tn as bioTemplateCatalog, tt as toSampleColumns, u as createBioTemplatePresetCollection, un as ensureTemplateFromCollection, ut as toReagentListItems, v as createTargetedMetabolomicsCollection, vt as toProtocolRows, w as createReagentListTemplate, wt as toInstrumentRunSteps, x as createQpcrPlateTemplate, xt as toInstrumentRunDataFrame, y as createLcmsBatchCollection, yt as toProtocolSteps, z as toBioTemplateComponentImports, zt as validateInstrumentRunData } from "../templates-Qq113pyZ.js";
|
|
5
3
|
export { TEMPLATE_COLLECTION_KEY, assertTemplateEnvelope, bioTemplateCatalog, bioTemplateControlsToFormSchema, bioTemplateControlsToSectionFormSchemas, bioTemplateControlsToSidebarPanels, bioTemplatePacks, bioTemplatePresetControlValuesToOptions, bioTemplatePresets, createAssayMatrixTemplate, createBioTemplateControlToolkit, createBioTemplatePackCollection, createBioTemplatePresetCollection, createBioTemplatePresetCollectionFromControls, createCalibrationCurveTemplate, createDefaultBioTemplate, createDoseResponseTemplate, createElisaAssayCollection, createFlowCytometryAssayCollection, createFlowCytometryPanelTemplate, createInstrumentRunTemplate, createLcmsBatchCollection, createPlateMapTemplate, createProtocolStepsTemplate, createQpcrExpressionCollection, createQpcrPlateTemplate, createReagentListTemplate, createSamplePrepTemplate, createSampleSheetTemplate, createTargetedMetabolomicsCollection, createTemplateCollection, createTemplateEnvelope, createTimeCourseTemplate, createWellPlateScreenCollection, createWesternBlotAssayCollection, ensureTemplateEnvelope, ensureTemplateFromCollection, extractTemplateCollection, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlDefaults, getBioTemplateControlSchema, getBioTemplateInfo, getBioTemplatePackInfo, getBioTemplatePresetInfo, getTemplateData, listBioTemplateCatalog, listBioTemplateComponentBindings, listBioTemplateControlSchemas, listBioTemplatePacks, listBioTemplatePresetControlSchemas, listBioTemplatePresets, requireBioTemplateControlSchema, searchBioTemplateCatalog, searchBioTemplatePacks, searchBioTemplatePresets, toAssayMatrixColumns, toAssayMatrixDataFrame, toAssayMatrixRows, toAssayMatrixSampleOptions, toBioTemplateComponentBindings, toBioTemplateComponentBindingsById, toBioTemplateComponentImports, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, toBioTemplateComponentSnippets, toBioTemplateComponentUsage, toCalibrationCurveColumns, toCalibrationCurveDataFrame, toCalibrationCurveRows, toDoseConditions, toDoseLayoutState, toFlowPanelColumns, toFlowPanelDataFrame, toFlowPanelRows, toInstrumentRunColumns, toInstrumentRunDataFrame, toInstrumentRunRows, toInstrumentRunScheduleEvents, toInstrumentRunSteps, toPlateMapEditorState, toProtocolColumns, toProtocolDataFrame, toProtocolRows, toProtocolSteps, toQpcrColumns, toQpcrDataFrame, toQpcrRows, toQpcrWellPlateWells, toReagentColumns, toReagentDataFrame, toReagentListItems, toReagentRows, toSampleColumns, toSampleDataFrame, toSampleOptions, toSamplePrepColumns, toSamplePrepDataFrame, toSamplePrepRows, toSampleRows, toTemplateDataFrame, toTimeCourseColumns, toTimeCourseDataFrame, toTimeCourseRows, toTimeCourseSteps, toWellMapArray, toWellPlateWells, validateAssayMatrixData, validateCalibrationCurveData, validateDoseResponseData, validateFlowCytometryPanelData, validateInstrumentRunData, validatePlateMapData, validateProtocolStepsData, validateQpcrPlateData, validateReagentListData, validateSamplePrepData, validateSampleSheetData, validateTimeCourseData };
|
|
@@ -1,8 +1,287 @@
|
|
|
1
|
-
import { _ as controlsToFormSchema, i as useControlSchema, r as getControlDefaults, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas } from "./useControlSchema-
|
|
2
|
-
//#region src/
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { _ as controlsToFormSchema, i as useControlSchema, nt as isObjectLike, r as getControlDefaults, rt as isRecord, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas } from "./useControlSchema-aMZlb4Sc.js";
|
|
2
|
+
//#region src/utils/color.ts
|
|
3
|
+
/**
|
|
4
|
+
* Canonical categorical scale for sample types, plate maps, dose-response
|
|
5
|
+
* series and legends. Mirrors `--mint-sample-1` … `--mint-sample-9`.
|
|
6
|
+
*/
|
|
7
|
+
var SAMPLE_COLOR_SCALE = [
|
|
8
|
+
"#3B82F6",
|
|
9
|
+
"#10B981",
|
|
10
|
+
"#EF4444",
|
|
11
|
+
"#F59E0B",
|
|
12
|
+
"#8B5CF6",
|
|
13
|
+
"#F97316",
|
|
14
|
+
"#06B6D4",
|
|
15
|
+
"#14B8A6",
|
|
16
|
+
"#6B7280"
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Slot-position colors shared by `PlateMapEditor` and `RackEditor`.
|
|
20
|
+
* Mirrors `--mint-slot-r`, `--mint-slot-g`, `--mint-slot-b`, `--mint-slot-y`.
|
|
21
|
+
*/
|
|
22
|
+
var SLOT_COLORS = {
|
|
23
|
+
R: "#ef4444",
|
|
24
|
+
G: "#22c55e",
|
|
25
|
+
B: "#3b82f6",
|
|
26
|
+
Y: "#eab308"
|
|
27
|
+
};
|
|
28
|
+
/** Slot positions in their canonical display order. */
|
|
29
|
+
var SLOT_ORDER = [
|
|
30
|
+
"R",
|
|
31
|
+
"G",
|
|
32
|
+
"B",
|
|
33
|
+
"Y"
|
|
34
|
+
];
|
|
35
|
+
var HEX_RE = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
36
|
+
function clamp(n, min, max) {
|
|
37
|
+
return Math.min(max, Math.max(min, n));
|
|
38
|
+
}
|
|
39
|
+
function hexToHsl(hex) {
|
|
40
|
+
const match = HEX_RE.exec(hex.trim());
|
|
41
|
+
if (!match) return {
|
|
42
|
+
h: 0,
|
|
43
|
+
s: 0,
|
|
44
|
+
l: 50
|
|
45
|
+
};
|
|
46
|
+
let raw = match[1];
|
|
47
|
+
if (raw.length === 3) raw = raw.split("").map((c) => c + c).join("");
|
|
48
|
+
const r = parseInt(raw.slice(0, 2), 16) / 255;
|
|
49
|
+
const g = parseInt(raw.slice(2, 4), 16) / 255;
|
|
50
|
+
const b = parseInt(raw.slice(4, 6), 16) / 255;
|
|
51
|
+
const max = Math.max(r, g, b);
|
|
52
|
+
const min = Math.min(r, g, b);
|
|
53
|
+
const delta = max - min;
|
|
54
|
+
let h = 0;
|
|
55
|
+
if (delta !== 0) if (max === r) h = (g - b) / delta % 6;
|
|
56
|
+
else if (max === g) h = (b - r) / delta + 2;
|
|
57
|
+
else h = (r - g) / delta + 4;
|
|
58
|
+
h = (h * 60 + 360) % 360;
|
|
59
|
+
const l = (max + min) / 2;
|
|
60
|
+
const s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));
|
|
61
|
+
return {
|
|
62
|
+
h,
|
|
63
|
+
s: s * 100,
|
|
64
|
+
l: l * 100
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function hslToHex(h, s, l) {
|
|
68
|
+
const sNorm = clamp(s, 0, 100) / 100;
|
|
69
|
+
const lNorm = clamp(l, 0, 100) / 100;
|
|
70
|
+
const hNorm = (h % 360 + 360) % 360;
|
|
71
|
+
const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm;
|
|
72
|
+
const x = c * (1 - Math.abs(hNorm / 60 % 2 - 1));
|
|
73
|
+
const m = lNorm - c / 2;
|
|
74
|
+
let r = 0, g = 0, b = 0;
|
|
75
|
+
if (hNorm < 60) [r, g, b] = [
|
|
76
|
+
c,
|
|
77
|
+
x,
|
|
78
|
+
0
|
|
79
|
+
];
|
|
80
|
+
else if (hNorm < 120) [r, g, b] = [
|
|
81
|
+
x,
|
|
82
|
+
c,
|
|
83
|
+
0
|
|
84
|
+
];
|
|
85
|
+
else if (hNorm < 180) [r, g, b] = [
|
|
86
|
+
0,
|
|
87
|
+
c,
|
|
88
|
+
x
|
|
89
|
+
];
|
|
90
|
+
else if (hNorm < 240) [r, g, b] = [
|
|
91
|
+
0,
|
|
92
|
+
x,
|
|
93
|
+
c
|
|
94
|
+
];
|
|
95
|
+
else if (hNorm < 300) [r, g, b] = [
|
|
96
|
+
x,
|
|
97
|
+
0,
|
|
98
|
+
c
|
|
99
|
+
];
|
|
100
|
+
else [r, g, b] = [
|
|
101
|
+
c,
|
|
102
|
+
0,
|
|
103
|
+
x
|
|
104
|
+
];
|
|
105
|
+
const toHex = (n) => Math.round((n + m) * 255).toString(16).padStart(2, "0");
|
|
106
|
+
return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Derive a same-hue-family shade of `parentHex` for child at `index` of `total`.
|
|
110
|
+
*
|
|
111
|
+
* Lightness is distributed evenly within [35, 75] so all children remain
|
|
112
|
+
* readable on light/dark backgrounds. Hue and saturation are inherited from
|
|
113
|
+
* the parent. With `total <= 1`, returns the parent unchanged.
|
|
114
|
+
*
|
|
115
|
+
* Children are ordered light → dark by index, so index 0 is the brightest
|
|
116
|
+
* sibling and index `total - 1` is the darkest.
|
|
117
|
+
*/
|
|
118
|
+
function deriveShade(parentHex, index, total) {
|
|
119
|
+
if (total <= 1) return parentHex;
|
|
120
|
+
const { h, s, l } = hexToHsl(parentHex);
|
|
121
|
+
const L_MIN = 35;
|
|
122
|
+
const L_MAX = 75;
|
|
123
|
+
const spread = Math.min(L_MAX - L_MIN, 40);
|
|
124
|
+
const center = clamp(l, L_MIN + spread / 2, L_MAX - spread / 2);
|
|
125
|
+
const top = center + spread / 2;
|
|
126
|
+
const bot = center - spread / 2;
|
|
127
|
+
const childL = top - (total === 1 ? .5 : index / (total - 1)) * (top - bot);
|
|
128
|
+
return hslToHex(h, clamp(s, 35, 100), childL);
|
|
129
|
+
}
|
|
130
|
+
//#endregion
|
|
131
|
+
//#region src/components/WellPlate.geometry.ts
|
|
132
|
+
var PLATE_CONFIGS = {
|
|
133
|
+
6: {
|
|
134
|
+
rows: 2,
|
|
135
|
+
cols: 3
|
|
136
|
+
},
|
|
137
|
+
12: {
|
|
138
|
+
rows: 3,
|
|
139
|
+
cols: 4
|
|
140
|
+
},
|
|
141
|
+
24: {
|
|
142
|
+
rows: 4,
|
|
143
|
+
cols: 6
|
|
144
|
+
},
|
|
145
|
+
48: {
|
|
146
|
+
rows: 6,
|
|
147
|
+
cols: 8
|
|
148
|
+
},
|
|
149
|
+
54: {
|
|
150
|
+
rows: 6,
|
|
151
|
+
cols: 9
|
|
152
|
+
},
|
|
153
|
+
96: {
|
|
154
|
+
rows: 8,
|
|
155
|
+
cols: 12
|
|
156
|
+
},
|
|
157
|
+
384: {
|
|
158
|
+
rows: 16,
|
|
159
|
+
cols: 24
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
var WELL_PLATE_SIZE_CONFIGS = {
|
|
163
|
+
sm: {
|
|
164
|
+
cellWidth: "40px",
|
|
165
|
+
cellHeight: "40px",
|
|
166
|
+
headerWidth: "32px",
|
|
167
|
+
headerHeight: "32px",
|
|
168
|
+
fontSize: "0.625rem",
|
|
169
|
+
gap: "2px"
|
|
170
|
+
},
|
|
171
|
+
md: {
|
|
172
|
+
cellWidth: "56px",
|
|
173
|
+
cellHeight: "32px",
|
|
174
|
+
headerWidth: "32px",
|
|
175
|
+
headerHeight: "24px",
|
|
176
|
+
fontSize: "0.75rem",
|
|
177
|
+
gap: "3px"
|
|
178
|
+
},
|
|
179
|
+
lg: {
|
|
180
|
+
cellWidth: "80px",
|
|
181
|
+
cellHeight: "40px",
|
|
182
|
+
headerWidth: "40px",
|
|
183
|
+
headerHeight: "32px",
|
|
184
|
+
fontSize: "0.875rem",
|
|
185
|
+
gap: "4px"
|
|
186
|
+
},
|
|
187
|
+
xl: {
|
|
188
|
+
cellWidth: "96px",
|
|
189
|
+
cellHeight: "48px",
|
|
190
|
+
headerWidth: "48px",
|
|
191
|
+
headerHeight: "40px",
|
|
192
|
+
fontSize: "1rem",
|
|
193
|
+
gap: "4px"
|
|
194
|
+
},
|
|
195
|
+
fill: {
|
|
196
|
+
cellWidth: "100%",
|
|
197
|
+
cellHeight: "32px",
|
|
198
|
+
headerWidth: "32px",
|
|
199
|
+
headerHeight: "24px",
|
|
200
|
+
fontSize: "0.75rem",
|
|
201
|
+
gap: "2px"
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* Spreadsheet-style row label for a zero-based row index: A…Z, then AA, AB, …
|
|
206
|
+
*
|
|
207
|
+
* This is the single row-label generator for the SDK — plate grids, rack
|
|
208
|
+
* grids, well-id parsing and the template builders all go through it.
|
|
209
|
+
*/
|
|
210
|
+
function rowLabel(index) {
|
|
211
|
+
let label = "";
|
|
212
|
+
let current = index;
|
|
213
|
+
for (;;) {
|
|
214
|
+
label = String.fromCharCode(65 + current % 26) + label;
|
|
215
|
+
current = Math.floor(current / 26) - 1;
|
|
216
|
+
if (current < 0) return label;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/** Inverse of {@link rowLabel}: 'A' → 0, 'Z' → 25, 'AA' → 26. */
|
|
220
|
+
function rowIndex(label) {
|
|
221
|
+
return [...label].reduce((value, char) => value * 26 + char.charCodeAt(0) - 64, 0) - 1;
|
|
222
|
+
}
|
|
223
|
+
function createPlateRowLabels(config) {
|
|
224
|
+
return Array.from({ length: config.rows }, (_, index) => rowLabel(index));
|
|
225
|
+
}
|
|
226
|
+
function plateConfigOrThrow(format) {
|
|
227
|
+
const config = PLATE_CONFIGS[format];
|
|
228
|
+
if (!config) throw new Error(`Unsupported plate format '${format}'.`);
|
|
229
|
+
return config;
|
|
230
|
+
}
|
|
231
|
+
/** Every well id of a plate, row-major (A1, A2, … B1, …). */
|
|
232
|
+
function wellIdsForFormat(format) {
|
|
233
|
+
const { rows, cols } = plateConfigOrThrow(format);
|
|
234
|
+
return Array.from({ length: rows }, (_, row) => Array.from({ length: cols }, (_col, col) => `${rowLabel(row)}${col + 1}`)).flat();
|
|
235
|
+
}
|
|
236
|
+
/** Throw unless `wellId` names a well that exists on a `format`-well plate. */
|
|
237
|
+
function assertWellInFormat(wellId, format) {
|
|
238
|
+
const { rows, cols } = plateConfigOrThrow(format);
|
|
239
|
+
const match = /^([A-Z]+)([1-9][0-9]*)$/.exec(wellId.toUpperCase());
|
|
240
|
+
if (!match) throw new Error(`Invalid well id '${wellId}'.`);
|
|
241
|
+
const row = rowIndex(match[1]);
|
|
242
|
+
const col = Number(match[2]) - 1;
|
|
243
|
+
if (row < 0 || col < 0 || row >= rows || col >= cols) throw new Error(`Well '${wellId}' is outside a ${format}-well plate.`);
|
|
244
|
+
}
|
|
245
|
+
/** Coerce an unknown value to a supported plate format, else `fallback`. */
|
|
246
|
+
function readPlateFormat(value, fallback) {
|
|
247
|
+
const parsed = typeof value === "number" ? value : typeof value === "string" ? Number(value) : NaN;
|
|
248
|
+
return parsed in PLATE_CONFIGS ? parsed : fallback;
|
|
249
|
+
}
|
|
250
|
+
function createPlateColumnLabels(config) {
|
|
251
|
+
return Array.from({ length: config.cols }, (_, index) => index + 1);
|
|
252
|
+
}
|
|
253
|
+
function createWellGrid(config, rowLabels, wells) {
|
|
254
|
+
const grid = [];
|
|
255
|
+
for (let row = 0; row < config.rows; row++) {
|
|
256
|
+
const rowWells = [];
|
|
257
|
+
for (let col = 0; col < config.cols; col++) {
|
|
258
|
+
const id = `${rowLabels[row]}${col + 1}`;
|
|
259
|
+
const wellData = wells[id] || {};
|
|
260
|
+
rowWells.push({
|
|
261
|
+
id,
|
|
262
|
+
row,
|
|
263
|
+
col,
|
|
264
|
+
state: wellData.state || "empty",
|
|
265
|
+
sampleType: wellData.sampleType,
|
|
266
|
+
value: wellData.value,
|
|
267
|
+
metadata: wellData.metadata
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
grid.push(rowWells);
|
|
271
|
+
}
|
|
272
|
+
return grid;
|
|
273
|
+
}
|
|
274
|
+
function getRectangleWellIds(start, end, rowLabels) {
|
|
275
|
+
const minRow = Math.min(start.row, end.row);
|
|
276
|
+
const maxRow = Math.max(start.row, end.row);
|
|
277
|
+
const minCol = Math.min(start.col, end.col);
|
|
278
|
+
const maxCol = Math.max(start.col, end.col);
|
|
279
|
+
const wells = /* @__PURE__ */ new Set();
|
|
280
|
+
for (let row = minRow; row <= maxRow; row++) for (let col = minCol; col <= maxCol; col++) wells.add(`${rowLabels[row]}${col + 1}`);
|
|
281
|
+
return wells;
|
|
5
282
|
}
|
|
283
|
+
//#endregion
|
|
284
|
+
//#region src/templates/builderReadUtils.ts
|
|
6
285
|
function readStringList(value, fallback) {
|
|
7
286
|
if (Array.isArray(value)) {
|
|
8
287
|
const items = value.map((item) => String(item).trim()).filter(Boolean);
|
|
@@ -65,10 +344,10 @@ function extractTemplateCollection(value) {
|
|
|
65
344
|
assertGenericTemplateEnvelope(value);
|
|
66
345
|
return { [value.template_id]: value };
|
|
67
346
|
}
|
|
68
|
-
if (!isRecord
|
|
347
|
+
if (!isRecord(value)) throw new Error("Template collection payload must be an object.");
|
|
69
348
|
const rawCollection = value[TEMPLATE_COLLECTION_KEY];
|
|
70
349
|
if (rawCollection === void 0) return {};
|
|
71
|
-
if (!isRecord
|
|
350
|
+
if (!isRecord(rawCollection)) throw new Error("Template collection must be an object.");
|
|
72
351
|
const collection = {};
|
|
73
352
|
for (const [templateId, template] of Object.entries(rawCollection)) {
|
|
74
353
|
assertGenericTemplateEnvelope(template);
|
|
@@ -99,14 +378,14 @@ function getTemplateData(template, templateId) {
|
|
|
99
378
|
return template;
|
|
100
379
|
}
|
|
101
380
|
function assertGenericTemplateEnvelope(value) {
|
|
102
|
-
if (!isRecord
|
|
381
|
+
if (!isRecord(value)) throw new Error("Template envelope must be an object.");
|
|
103
382
|
if (typeof value.template_id !== "string" || value.template_id.length === 0) throw new Error("Template envelope requires a template_id string.");
|
|
104
383
|
if (typeof value.template_version !== "string" || value.template_version.length === 0) throw new Error("Template envelope requires a template_version string.");
|
|
105
|
-
if (!isRecord
|
|
106
|
-
if ("metadata" in value && !isRecord
|
|
384
|
+
if (!isRecord(value.data)) throw new Error("Template envelope data must be an object.");
|
|
385
|
+
if ("metadata" in value && !isRecord(value.metadata)) throw new Error("Template envelope metadata must be an object.");
|
|
107
386
|
}
|
|
108
387
|
function isEnvelope(value) {
|
|
109
|
-
return isRecord
|
|
388
|
+
return isRecord(value) && "template_id" in value && "data" in value;
|
|
110
389
|
}
|
|
111
390
|
//#endregion
|
|
112
391
|
//#region src/templates/lookup.ts
|
|
@@ -956,19 +1235,16 @@ function resolveComponentTemplateIds(target) {
|
|
|
956
1235
|
return Object.keys(extractTemplateCollection(target)).map((templateId) => getBioTemplateInfo(templateId)?.template_id).filter((templateId) => templateId !== void 0);
|
|
957
1236
|
}
|
|
958
1237
|
function isTemplateEnvelope$1(value) {
|
|
959
|
-
return
|
|
1238
|
+
return isObjectLike(value) && typeof value.template_id === "string" && "data" in value;
|
|
960
1239
|
}
|
|
961
1240
|
function collectionPresetName$1(value) {
|
|
962
|
-
if (!
|
|
1241
|
+
if (!isObjectLike(value) || !isObjectLike(value.metadata)) return void 0;
|
|
963
1242
|
return typeof value.metadata.preset === "string" ? value.metadata.preset : void 0;
|
|
964
1243
|
}
|
|
965
1244
|
function collectionPackName$1(value) {
|
|
966
|
-
if (!
|
|
1245
|
+
if (!isObjectLike(value) || !isObjectLike(value.metadata)) return void 0;
|
|
967
1246
|
return typeof value.metadata.pack === "string" ? value.metadata.pack : void 0;
|
|
968
1247
|
}
|
|
969
|
-
function isRecord$1(value) {
|
|
970
|
-
return typeof value === "object" && value !== null;
|
|
971
|
-
}
|
|
972
1248
|
//#endregion
|
|
973
1249
|
//#region src/templates/componentBindingHelpers.ts
|
|
974
1250
|
function cloneBindingMap(bindings) {
|
|
@@ -1126,49 +1402,6 @@ function binding(templateId, component, adapters, props, description) {
|
|
|
1126
1402
|
};
|
|
1127
1403
|
}
|
|
1128
1404
|
//#endregion
|
|
1129
|
-
//#region src/templates/plateGeometry.ts
|
|
1130
|
-
var PLATE_DIMENSIONS = {
|
|
1131
|
-
6: [2, 3],
|
|
1132
|
-
12: [3, 4],
|
|
1133
|
-
24: [4, 6],
|
|
1134
|
-
48: [6, 8],
|
|
1135
|
-
54: [6, 9],
|
|
1136
|
-
96: [8, 12],
|
|
1137
|
-
384: [16, 24]
|
|
1138
|
-
};
|
|
1139
|
-
function wellIdsForFormat(format) {
|
|
1140
|
-
const dimensions = PLATE_DIMENSIONS[format];
|
|
1141
|
-
if (!dimensions) throw new Error(`Unsupported plate format '${format}'.`);
|
|
1142
|
-
const [rows, cols] = dimensions;
|
|
1143
|
-
return Array.from({ length: rows }, (_, row) => Array.from({ length: cols }, (_col, col) => `${rowLabel(row)}${col + 1}`)).flat();
|
|
1144
|
-
}
|
|
1145
|
-
function assertWellInFormat(wellId, format) {
|
|
1146
|
-
const dimensions = PLATE_DIMENSIONS[format];
|
|
1147
|
-
if (!dimensions) throw new Error(`Unsupported plate format '${format}'.`);
|
|
1148
|
-
const match = /^([A-Z]+)([1-9][0-9]*)$/.exec(wellId.toUpperCase());
|
|
1149
|
-
if (!match) throw new Error(`Invalid well id '${wellId}'.`);
|
|
1150
|
-
const row = rowIndex(match[1]);
|
|
1151
|
-
const col = Number(match[2]) - 1;
|
|
1152
|
-
const [rows, cols] = dimensions;
|
|
1153
|
-
if (row < 0 || col < 0 || row >= rows || col >= cols) throw new Error(`Well '${wellId}' is outside a ${format}-well plate.`);
|
|
1154
|
-
}
|
|
1155
|
-
function readPlateFormat(value, fallback) {
|
|
1156
|
-
const parsed = typeof value === "number" ? value : typeof value === "string" ? Number(value) : NaN;
|
|
1157
|
-
return parsed in PLATE_DIMENSIONS ? parsed : fallback;
|
|
1158
|
-
}
|
|
1159
|
-
function rowLabel(index) {
|
|
1160
|
-
let label = "";
|
|
1161
|
-
let current = index;
|
|
1162
|
-
while (true) {
|
|
1163
|
-
label = String.fromCharCode(65 + current % 26) + label;
|
|
1164
|
-
current = Math.floor(current / 26) - 1;
|
|
1165
|
-
if (current < 0) return label;
|
|
1166
|
-
}
|
|
1167
|
-
}
|
|
1168
|
-
function rowIndex(label) {
|
|
1169
|
-
return [...label].reduce((value, char) => value * 26 + char.charCodeAt(0) - 64, 0) - 1;
|
|
1170
|
-
}
|
|
1171
|
-
//#endregion
|
|
1172
1405
|
//#region src/templates/templateValidators.ts
|
|
1173
1406
|
function validatePlateMapData(data) {
|
|
1174
1407
|
if (!Array.isArray(data.plates) || data.plates.length === 0) throw new Error("Plate-map template requires at least one plate.");
|
|
@@ -2319,23 +2552,12 @@ function toWellPlateWells(template, plateId) {
|
|
|
2319
2552
|
}
|
|
2320
2553
|
//#endregion
|
|
2321
2554
|
//#region src/templates/doseResponseAdapters.ts
|
|
2322
|
-
var CONDITION_COLORS = [
|
|
2323
|
-
"#3B82F6",
|
|
2324
|
-
"#10B981",
|
|
2325
|
-
"#EF4444",
|
|
2326
|
-
"#F59E0B",
|
|
2327
|
-
"#8B5CF6",
|
|
2328
|
-
"#F97316",
|
|
2329
|
-
"#06B6D4",
|
|
2330
|
-
"#14B8A6",
|
|
2331
|
-
"#6B7280"
|
|
2332
|
-
];
|
|
2333
2555
|
function toDoseConditions(template) {
|
|
2334
2556
|
const data = getTemplateData(template, "dose-response");
|
|
2335
2557
|
validateDoseResponseData(data);
|
|
2336
2558
|
return data.compounds.map((compound, index) => ({
|
|
2337
2559
|
label: compound.name,
|
|
2338
|
-
color: String(compound.metadata?.color ??
|
|
2560
|
+
color: String(compound.metadata?.color ?? SAMPLE_COLOR_SCALE[index % SAMPLE_COLOR_SCALE.length]),
|
|
2339
2561
|
concentrations: compound.concentrations,
|
|
2340
2562
|
unit: data.unit
|
|
2341
2563
|
}));
|
|
@@ -2381,16 +2603,7 @@ function legendItemsFromPlateState(state) {
|
|
|
2381
2603
|
}));
|
|
2382
2604
|
}
|
|
2383
2605
|
function colorForIndex(index) {
|
|
2384
|
-
const colors =
|
|
2385
|
-
"#3B82F6",
|
|
2386
|
-
"#10B981",
|
|
2387
|
-
"#EF4444",
|
|
2388
|
-
"#F59E0B",
|
|
2389
|
-
"#8B5CF6",
|
|
2390
|
-
"#F97316",
|
|
2391
|
-
"#06B6D4",
|
|
2392
|
-
"#14B8A6"
|
|
2393
|
-
];
|
|
2606
|
+
const colors = SAMPLE_COLOR_SCALE.slice(0, 8);
|
|
2394
2607
|
return colors[index % colors.length];
|
|
2395
2608
|
}
|
|
2396
2609
|
//#endregion
|
|
@@ -2734,19 +2947,6 @@ function bioTemplatePresetControlValuesToOptions(name, values) {
|
|
|
2734
2947
|
throw new Error(`Unknown template preset '${name}'.`);
|
|
2735
2948
|
}
|
|
2736
2949
|
//#endregion
|
|
2737
|
-
//#region src/templates/builderDefaults.ts
|
|
2738
|
-
var DEFAULT_SAMPLE_COLORS = [
|
|
2739
|
-
"#3B82F6",
|
|
2740
|
-
"#10B981",
|
|
2741
|
-
"#EF4444",
|
|
2742
|
-
"#F59E0B",
|
|
2743
|
-
"#8B5CF6",
|
|
2744
|
-
"#F97316",
|
|
2745
|
-
"#06B6D4",
|
|
2746
|
-
"#14B8A6",
|
|
2747
|
-
"#6B7280"
|
|
2748
|
-
];
|
|
2749
|
-
//#endregion
|
|
2750
2950
|
//#region src/templates/builderIdUtils.ts
|
|
2751
2951
|
function sampleIdFromName(name, index) {
|
|
2752
2952
|
return idFromName(name, `sample-${index + 1}`);
|
|
@@ -2770,7 +2970,7 @@ function createPlateMapTemplate(options = {}) {
|
|
|
2770
2970
|
return {
|
|
2771
2971
|
id: sampleIdFromName(sample, index),
|
|
2772
2972
|
name: sample,
|
|
2773
|
-
color:
|
|
2973
|
+
color: SAMPLE_COLOR_SCALE[index % SAMPLE_COLOR_SCALE.length]
|
|
2774
2974
|
};
|
|
2775
2975
|
});
|
|
2776
2976
|
return createTemplateEnvelope("plate-map", {
|
|
@@ -3073,7 +3273,7 @@ function createTimeCourseTemplate(options) {
|
|
|
3073
3273
|
return {
|
|
3074
3274
|
id: idFromName(condition, `condition-${index + 1}`),
|
|
3075
3275
|
name: condition,
|
|
3076
|
-
color:
|
|
3276
|
+
color: SAMPLE_COLOR_SCALE[index % SAMPLE_COLOR_SCALE.length],
|
|
3077
3277
|
metadata: {}
|
|
3078
3278
|
};
|
|
3079
3279
|
});
|
|
@@ -3688,7 +3888,7 @@ function createElisaAssayCollection(options = {}) {
|
|
|
3688
3888
|
...sampleRecords.map((sample, index) => ({
|
|
3689
3889
|
id: sample.sampleId,
|
|
3690
3890
|
name: sample.name ?? sample.sampleId,
|
|
3691
|
-
color:
|
|
3891
|
+
color: SAMPLE_COLOR_SCALE[index % SAMPLE_COLOR_SCALE.length]
|
|
3692
3892
|
}))
|
|
3693
3893
|
]
|
|
3694
3894
|
}),
|
|
@@ -4030,7 +4230,7 @@ function createWellPlateScreenCollection(options = {}) {
|
|
|
4030
4230
|
samples: sampleRecords.map((sample, index) => ({
|
|
4031
4231
|
id: sample.sampleId,
|
|
4032
4232
|
name: sample.name ?? sample.sampleId,
|
|
4033
|
-
color:
|
|
4233
|
+
color: SAMPLE_COLOR_SCALE[index % SAMPLE_COLOR_SCALE.length]
|
|
4034
4234
|
}))
|
|
4035
4235
|
});
|
|
4036
4236
|
return createTemplateCollection([
|
|
@@ -4167,19 +4367,16 @@ function describeControlTarget(target) {
|
|
|
4167
4367
|
return collectionPresetName(target) ?? collectionPackName(target) ?? "template collection";
|
|
4168
4368
|
}
|
|
4169
4369
|
function isTemplateEnvelope(value) {
|
|
4170
|
-
return
|
|
4370
|
+
return isObjectLike(value) && typeof value.template_id === "string" && "data" in value;
|
|
4171
4371
|
}
|
|
4172
4372
|
function collectionPresetName(value) {
|
|
4173
|
-
if (!
|
|
4373
|
+
if (!isObjectLike(value) || !isObjectLike(value.metadata)) return void 0;
|
|
4174
4374
|
return typeof value.metadata.preset === "string" ? value.metadata.preset : void 0;
|
|
4175
4375
|
}
|
|
4176
4376
|
function collectionPackName(value) {
|
|
4177
|
-
if (!
|
|
4377
|
+
if (!isObjectLike(value) || !isObjectLike(value.metadata)) return void 0;
|
|
4178
4378
|
return typeof value.metadata.pack === "string" ? value.metadata.pack : void 0;
|
|
4179
4379
|
}
|
|
4180
|
-
function isRecord(value) {
|
|
4181
|
-
return typeof value === "object" && value !== null;
|
|
4182
|
-
}
|
|
4183
4380
|
//#endregion
|
|
4184
4381
|
//#region src/templates/controlSchemaConstants.ts
|
|
4185
4382
|
var ICONS = {
|
|
@@ -5058,6 +5255,6 @@ function getBioTemplateControlDefaults(target) {
|
|
|
5058
5255
|
return getControlDefaults(requireBioTemplateControlSchema(target));
|
|
5059
5256
|
}
|
|
5060
5257
|
//#endregion
|
|
5061
|
-
export { toTimeCourseRows as $, listBioTemplatePacks as $t, createSamplePrepTemplate as A, toCalibrationCurveRows as At, toBioTemplateComponentProps as B, validatePlateMapData as Bt, createFlowCytometryPanelTemplate as C, toInstrumentRunScheduleEvents as Ct, createTimeCourseTemplate as D, toFlowPanelRows as Dt, createProtocolStepsTemplate as E, toFlowPanelDataFrame as Et, getBioTemplateComponentProps as F, validateAssayMatrixData as Ft, toTemplateDataFrame as G, validateSampleSheetData as Gt, toBioTemplateComponentPropsById as H, validateQpcrPlateData as Ht, listBioTemplateComponentBindings as I, validateCalibrationCurveData as It, toDoseLayoutState as J, getBioTemplatePresetInfo as Jt, toWellMapArray as K, validateTimeCourseData as Kt, toBioTemplateComponentBindings as L, validateDoseResponseData as Lt, createPlateMapTemplate as M, toAssayMatrixDataFrame as Mt, bioTemplatePresetControlValuesToOptions as N, toAssayMatrixRows as Nt, createCalibrationCurveTemplate as O, toCalibrationCurveColumns as Ot, getBioTemplateComponentBindings as P, toAssayMatrixSampleOptions as Pt, toTimeCourseDataFrame as Q, getBioTemplatePackInfo as Qt, toBioTemplateComponentBindingsById as R, validateFlowCytometryPanelData as Rt, createInstrumentRunTemplate as S, toInstrumentRunRows as St, createAssayMatrixTemplate as T, toFlowPanelColumns as Tt, toBioTemplateComponentSnippets as U, validateReagentListData as Ut, toBioTemplateComponentPropsByComponent as V, validateProtocolStepsData as Vt, toBioTemplateComponentUsage as W, validateSamplePrepData as Wt, toWellPlateWells as X, searchBioTemplatePresets as Xt, toPlateMapEditorState as Y, listBioTemplatePresets as Yt, toTimeCourseColumns as Z, bioTemplatePacks as Zt, createElisaAssayCollection as _, toProtocolDataFrame as _t, getBioTemplateControlDefaults as a, TEMPLATE_COLLECTION_KEY as an, toSamplePrepColumns as at, createQpcrExpressionCollection as b, toInstrumentRunColumns as bt, listBioTemplatePresetControlSchemas as c, createTemplateEnvelope as cn, toReagentColumns as ct, createBioTemplatePresetCollectionFromControls as d, extractTemplateCollection as dn, toReagentRows as dt, searchBioTemplatePacks as en, toTimeCourseSteps as et, createWellPlateScreenCollection as f, getTemplateData as fn, toQpcrColumns as ft, createFlowCytometryAssayCollection as g, toProtocolColumns as gt, createWesternBlotAssayCollection as h, toQpcrWellPlateWells as ht, createBioTemplateControlToolkit as i, searchBioTemplateCatalog as in, toSampleRows as it, createSampleSheetTemplate as j, toAssayMatrixColumns as jt, createDoseResponseTemplate as k, toCalibrationCurveDataFrame as kt, requireBioTemplateControlSchema as l, ensureTemplateEnvelope as ln, toReagentDataFrame as lt, createDefaultBioTemplate as m, toQpcrRows as mt, bioTemplateControlsToSectionFormSchemas as n, getBioTemplateInfo as nn, toSampleDataFrame as nt, getBioTemplateControlSchema as o, assertTemplateEnvelope as on, toSamplePrepDataFrame as ot, createBioTemplatePackCollection as p, toQpcrDataFrame as pt, toDoseConditions as q, bioTemplatePresets as qt, bioTemplateControlsToSidebarPanels as r, listBioTemplateCatalog as rn, toSampleOptions as rt, listBioTemplateControlSchemas as s, createTemplateCollection as sn, toSamplePrepRows as st, bioTemplateControlsToFormSchema as t, bioTemplateCatalog as tn, toSampleColumns as tt, createBioTemplatePresetCollection as u, ensureTemplateFromCollection as un, toReagentListItems as ut, createTargetedMetabolomicsCollection as v, toProtocolRows as vt, createReagentListTemplate as w, toInstrumentRunSteps as wt, createQpcrPlateTemplate as x, toInstrumentRunDataFrame as xt, createLcmsBatchCollection as y, toProtocolSteps as yt, toBioTemplateComponentImports as z, validateInstrumentRunData as zt };
|
|
5258
|
+
export { toTimeCourseRows as $, listBioTemplatePacks as $t, createSamplePrepTemplate as A, toCalibrationCurveRows as At, toBioTemplateComponentProps as B, validatePlateMapData as Bt, createFlowCytometryPanelTemplate as C, SLOT_ORDER as Cn, toInstrumentRunScheduleEvents as Ct, createTimeCourseTemplate as D, toFlowPanelRows as Dt, createProtocolStepsTemplate as E, hslToHex as En, toFlowPanelDataFrame as Et, getBioTemplateComponentProps as F, validateAssayMatrixData as Ft, toTemplateDataFrame as G, validateSampleSheetData as Gt, toBioTemplateComponentPropsById as H, validateQpcrPlateData as Ht, listBioTemplateComponentBindings as I, validateCalibrationCurveData as It, toDoseLayoutState as J, getBioTemplatePresetInfo as Jt, toWellMapArray as K, validateTimeCourseData as Kt, toBioTemplateComponentBindings as L, validateDoseResponseData as Lt, createPlateMapTemplate as M, toAssayMatrixDataFrame as Mt, bioTemplatePresetControlValuesToOptions as N, toAssayMatrixRows as Nt, createCalibrationCurveTemplate as O, toCalibrationCurveColumns as Ot, getBioTemplateComponentBindings as P, toAssayMatrixSampleOptions as Pt, toTimeCourseDataFrame as Q, getBioTemplatePackInfo as Qt, toBioTemplateComponentBindingsById as R, validateFlowCytometryPanelData as Rt, createInstrumentRunTemplate as S, SLOT_COLORS as Sn, toInstrumentRunRows as St, createAssayMatrixTemplate as T, hexToHsl as Tn, toFlowPanelColumns as Tt, toBioTemplateComponentSnippets as U, validateReagentListData as Ut, toBioTemplateComponentPropsByComponent as V, validateProtocolStepsData as Vt, toBioTemplateComponentUsage as W, validateSamplePrepData as Wt, toWellPlateWells as X, searchBioTemplatePresets as Xt, toPlateMapEditorState as Y, listBioTemplatePresets as Yt, toTimeCourseColumns as Z, bioTemplatePacks as Zt, createElisaAssayCollection as _, createWellGrid as _n, toProtocolDataFrame as _t, getBioTemplateControlDefaults as a, TEMPLATE_COLLECTION_KEY as an, toSamplePrepColumns as at, createQpcrExpressionCollection as b, rowLabel as bn, toInstrumentRunColumns as bt, listBioTemplatePresetControlSchemas as c, createTemplateEnvelope as cn, toReagentColumns as ct, createBioTemplatePresetCollectionFromControls as d, extractTemplateCollection as dn, toReagentRows as dt, searchBioTemplatePacks as en, toTimeCourseSteps as et, createWellPlateScreenCollection as f, getTemplateData as fn, toQpcrColumns as ft, createFlowCytometryAssayCollection as g, createPlateRowLabels as gn, toProtocolColumns as gt, createWesternBlotAssayCollection as h, createPlateColumnLabels as hn, toQpcrWellPlateWells as ht, createBioTemplateControlToolkit as i, searchBioTemplateCatalog as in, toSampleRows as it, createSampleSheetTemplate as j, toAssayMatrixColumns as jt, createDoseResponseTemplate as k, toCalibrationCurveDataFrame as kt, requireBioTemplateControlSchema as l, ensureTemplateEnvelope as ln, toReagentDataFrame as lt, createDefaultBioTemplate as m, WELL_PLATE_SIZE_CONFIGS as mn, toQpcrRows as mt, bioTemplateControlsToSectionFormSchemas as n, getBioTemplateInfo as nn, toSampleDataFrame as nt, getBioTemplateControlSchema as o, assertTemplateEnvelope as on, toSamplePrepDataFrame as ot, createBioTemplatePackCollection as p, PLATE_CONFIGS as pn, toQpcrDataFrame as pt, toDoseConditions as q, bioTemplatePresets as qt, bioTemplateControlsToSidebarPanels as r, listBioTemplateCatalog as rn, toSampleOptions as rt, listBioTemplateControlSchemas as s, createTemplateCollection as sn, toSamplePrepRows as st, bioTemplateControlsToFormSchema as t, bioTemplateCatalog as tn, toSampleColumns as tt, createBioTemplatePresetCollection as u, ensureTemplateFromCollection as un, toReagentListItems as ut, createTargetedMetabolomicsCollection as v, getRectangleWellIds as vn, toProtocolRows as vt, createReagentListTemplate as w, deriveShade as wn, toInstrumentRunSteps as wt, createQpcrPlateTemplate as x, SAMPLE_COLOR_SCALE as xn, toInstrumentRunDataFrame as xt, createLcmsBatchCollection as y, rowIndex as yn, toProtocolSteps as yt, toBioTemplateComponentImports as z, validateInstrumentRunData as zt };
|
|
5062
5259
|
|
|
5063
|
-
//# sourceMappingURL=templates-
|
|
5260
|
+
//# sourceMappingURL=templates-Qq113pyZ.js.map
|