@morscherlab/mint-sdk 1.0.61 → 1.0.63

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.
Files changed (31) hide show
  1. package/dist/__tests__/composables/analysisArtifactTarget.test.d.ts +1 -0
  2. package/dist/analysisArtifactTypes-Cu40dzSG.js.map +1 -1
  3. package/dist/components/index.js +1 -1
  4. package/dist/{components-CpnOaPbP.js → components-DdzHh3a_.js} +2 -2
  5. package/dist/{components-CpnOaPbP.js.map → components-DdzHh3a_.js.map} +1 -1
  6. package/dist/composables/analysisArtifactTarget.d.ts +5 -0
  7. package/dist/composables/index.d.ts +2 -0
  8. package/dist/composables/index.js +3 -3
  9. package/dist/composables/platformContextHelpers.d.ts +2 -0
  10. package/dist/composables/useAnalysisArtifacts.d.ts +3 -1
  11. package/dist/{composables-OYTD0Y3r.js → composables-BUUphBqg.js} +54 -6
  12. package/dist/composables-BUUphBqg.js.map +1 -0
  13. package/dist/index.js +4 -4
  14. package/dist/install.js +1 -1
  15. package/dist/types/analysisArtifactTypes.d.ts +8 -0
  16. package/dist/types/index.d.ts +1 -1
  17. package/dist/{useAnalysisArtifacts-Ob8UtVwl.js → useAnalysisArtifacts-C3l0a0vu.js} +30 -4
  18. package/dist/useAnalysisArtifacts-C3l0a0vu.js.map +1 -0
  19. package/package.json +1 -1
  20. package/src/__tests__/composables/analysisArtifactTarget.test.ts +77 -0
  21. package/src/__tests__/composables/useAnalysisArtifacts.test.ts +74 -1
  22. package/src/__tests__/composables/usePluginClient.test.ts +95 -1
  23. package/src/composables/analysisArtifactTarget.ts +53 -0
  24. package/src/composables/index.ts +5 -0
  25. package/src/composables/platformContextHelpers.ts +10 -3
  26. package/src/composables/useAnalysisArtifacts.ts +48 -0
  27. package/src/composables/usePluginClient.ts +21 -5
  28. package/src/types/analysisArtifactTypes.ts +9 -0
  29. package/src/types/index.ts +1 -0
  30. package/dist/composables-OYTD0Y3r.js.map +0 -1
  31. package/dist/useAnalysisArtifacts-Ob8UtVwl.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"analysisArtifactTypes-Cu40dzSG.js","names":[],"sources":["../src/types/analysisArtifactTypes.ts"],"sourcesContent":["import type { TreeNode } from './componentLabTypes'\nimport type { SummaryData } from './componentWorkflowTypes'\n\n/** Result schema identifier for file-backed analysis artifacts. */\nexport const ANALYSIS_FILE_ARTIFACT_SCHEMA = 'mint.analysis_file.v1'\n\n/** Known artifact lifecycle states; kept open for forward compatibility. */\nexport type AnalysisArtifactStatus = 'active' | 'archived' | (string & {})\n\n/** Status filter vocabulary for artifact lists. */\nexport type AnalysisArtifactStatusFilter = 'active' | 'archived' | 'all'\n\n/** Summary row returned by GET /experiments/{id}/analysis-artifacts. */\nexport interface AnalysisArtifactSummary {\n id: number\n experiment_id: number\n plugin_id: string\n artifact_key: string\n display_name: string\n note?: string | null\n status: AnalysisArtifactStatus\n result_keys: string[]\n created_at?: string | null\n updated_at?: string | null\n archived_at?: string | null\n archived_by?: number | null\n}\n\n/** Full artifact returned by GET /experiments/{id}/analysis-artifacts/{artifactId}. */\nexport interface AnalysisArtifactDetail extends AnalysisArtifactSummary {\n result: Record<string, unknown>\n tree: TreeNode[]\n summary: SummaryData | null\n}\n\n/** Response of GET /experiments/{id}/analysis-artifacts. */\nexport interface AnalysisArtifactListResponse {\n artifacts: AnalysisArtifactSummary[]\n}\n\n/** Body of PATCH /experiments/{id}/analysis-artifacts/{artifactId}. */\nexport interface AnalysisArtifactMetadataUpdate {\n display_name?: string\n /** undefined = keep, string = set, null = clear. */\n note?: string | null\n}\n\n/** How a save payload should be applied by the plugin backend. */\nexport type ArtifactSaveMode = 'create' | 'upsert' | 'update'\n\n/** Where file content comes from when a plugin uses ArtifactSaveDialog. */\nexport type ArtifactFileSource = 'upload' | 'handler'\n\ninterface ArtifactSavePayloadBase {\n experimentId: number\n artifactKey: string\n}\n\n/**\n * JSON artifact save — handler maps to save_analysis_artifact, which upserts by key.\n * That call only assigns display_name/note when they are provided, and cannot clear\n * either; use the metadata PATCH (useAnalysisArtifacts.updateMetadata) for that.\n */\nexport interface JsonArtifactSavePayload extends ArtifactSavePayloadBase {\n kind: 'json'\n mode: 'create' | 'upsert'\n result: Record<string, unknown>\n displayName?: string\n note?: string\n}\n\n/** File artifact create — handler maps to save_analysis_file_artifact (create-only: a reused key conflicts). */\nexport interface FileArtifactCreatePayload extends ArtifactSavePayloadBase {\n kind: 'file'\n mode: 'create'\n file: File\n /** Maps to the Python `kind=` argument (defaults to \"file\" backend-side). */\n fileKind: string\n filename?: string\n displayName?: string\n note?: string\n contentType?: string\n metadata?: Record<string, unknown>\n}\n\n/**\n * File artifact replacement — handler maps to update_analysis_file_artifact\n * (transactional CAS replace). `kind` and `filename` are immutable backend-side, so\n * `fileKind` echoes the artifact's existing kind and no filename is carried. `note`\n * is three-state: omitted preserves, null clears, a string sets. `metadata` REPLACES\n * the previous result metadata rather than merging, so it always carries the full\n * intended map — omitting it clears whatever was there.\n */\nexport interface FileArtifactUpdatePayload extends ArtifactSavePayloadBase {\n kind: 'file'\n mode: 'update'\n file: File\n fileKind: string\n note?: string | null\n contentType?: string\n metadata?: Record<string, unknown>\n}\n\n/**\n * File artifact create where the plugin handler produces the bytes itself.\n * This is intended for server-side serialization of in-memory analysis state;\n * the browser neither fabricates nor uploads a placeholder File.\n */\nexport interface HandlerFileArtifactCreatePayload extends ArtifactSavePayloadBase {\n kind: 'file'\n mode: 'create'\n source: 'handler'\n fileKind: string\n displayName?: string\n note?: string\n metadata?: Record<string, unknown>\n}\n\n/** File artifact replacement where the plugin handler produces the bytes itself. */\nexport interface HandlerFileArtifactUpdatePayload extends ArtifactSavePayloadBase {\n kind: 'file'\n mode: 'update'\n source: 'handler'\n fileKind: string\n note?: string | null\n metadata?: Record<string, unknown>\n}\n\nexport type ArtifactSavePayload =\n | JsonArtifactSavePayload\n | FileArtifactCreatePayload\n | FileArtifactUpdatePayload\n\n/** Payloads accepted when `ArtifactSaveDialog.fileSource` is `handler`. */\nexport type HandlerArtifactSavePayload =\n | JsonArtifactSavePayload\n | HandlerFileArtifactCreatePayload\n | HandlerFileArtifactUpdatePayload\n\n/** Every payload variant the dialog can emit across both file sources. */\nexport type ArtifactSaveDialogPayload =\n | ArtifactSavePayload\n | HandlerFileArtifactCreatePayload\n | HandlerFileArtifactUpdatePayload\n\n/** Optional handler result; cleanupPending surfaces AnalysisFileArtifactUpdate.cleanup_pending. */\nexport interface ArtifactSaveResult {\n artifact?: AnalysisArtifactSummary\n cleanupPending?: boolean\n}\n\n/**\n * Plugin-supplied save handler. The dialog never writes to the platform;\n * the handler forwards the payload to the plugin backend, which calls\n * save_analysis_artifact / save_analysis_file_artifact / update_analysis_file_artifact.\n */\nexport type ArtifactSaveHandler = (\n payload: ArtifactSavePayload,\n) => Promise<ArtifactSaveResult | void>\n\n/** Save handler paired with `ArtifactSaveDialog.fileSource=\"handler\"`. */\nexport type HandlerArtifactSaveHandler = (\n payload: HandlerArtifactSavePayload,\n) => Promise<ArtifactSaveResult | void>\n\n/** Handler accepted by ArtifactSaveDialog; `fileSource` selects the payload family. */\nexport type ArtifactSaveDialogHandler = ArtifactSaveHandler | HandlerArtifactSaveHandler\n"],"mappings":";;AAIA,IAAa,gCAAgC"}
1
+ {"version":3,"file":"analysisArtifactTypes-Cu40dzSG.js","names":[],"sources":["../src/types/analysisArtifactTypes.ts"],"sourcesContent":["import type { TreeNode } from './componentLabTypes'\nimport type { SummaryData } from './componentWorkflowTypes'\n\n/** Result schema identifier for file-backed analysis artifacts. */\nexport const ANALYSIS_FILE_ARTIFACT_SCHEMA = 'mint.analysis_file.v1'\n\n/** Known artifact lifecycle states; kept open for forward compatibility. */\nexport type AnalysisArtifactStatus = 'active' | 'archived' | (string & {})\n\n/** Status filter vocabulary for artifact lists. */\nexport type AnalysisArtifactStatusFilter = 'active' | 'archived' | 'all'\n\n/** Summary row returned by GET /experiments/{id}/analysis-artifacts. */\nexport interface AnalysisArtifactSummary {\n id: number\n experiment_id: number\n plugin_id: string\n artifact_key: string\n display_name: string\n note?: string | null\n status: AnalysisArtifactStatus\n result_keys: string[]\n created_at?: string | null\n updated_at?: string | null\n archived_at?: string | null\n archived_by?: number | null\n}\n\n/** Full artifact returned by GET /experiments/{id}/analysis-artifacts/{artifactId}. */\nexport interface AnalysisArtifactDetail extends AnalysisArtifactSummary {\n result: Record<string, unknown>\n tree: TreeNode[]\n summary: SummaryData | null\n}\n\n/** Response of GET /experiments/{id}/analysis-artifacts. */\nexport interface AnalysisArtifactListResponse {\n artifacts: AnalysisArtifactSummary[]\n}\n\n/** Stable identity used when one plugin opens another plugin's artifact. */\nexport interface AnalysisArtifactTarget {\n experimentId: number\n artifactPluginId: string\n artifactKey: string\n /** Optional lookup hint. The stable identity remains the three fields above. */\n artifactId?: number\n}\n\n/** Body of PATCH /experiments/{id}/analysis-artifacts/{artifactId}. */\nexport interface AnalysisArtifactMetadataUpdate {\n display_name?: string\n /** undefined = keep, string = set, null = clear. */\n note?: string | null\n}\n\n/** How a save payload should be applied by the plugin backend. */\nexport type ArtifactSaveMode = 'create' | 'upsert' | 'update'\n\n/** Where file content comes from when a plugin uses ArtifactSaveDialog. */\nexport type ArtifactFileSource = 'upload' | 'handler'\n\ninterface ArtifactSavePayloadBase {\n experimentId: number\n artifactKey: string\n}\n\n/**\n * JSON artifact save — handler maps to save_analysis_artifact, which upserts by key.\n * That call only assigns display_name/note when they are provided, and cannot clear\n * either; use the metadata PATCH (useAnalysisArtifacts.updateMetadata) for that.\n */\nexport interface JsonArtifactSavePayload extends ArtifactSavePayloadBase {\n kind: 'json'\n mode: 'create' | 'upsert'\n result: Record<string, unknown>\n displayName?: string\n note?: string\n}\n\n/** File artifact create — handler maps to save_analysis_file_artifact (create-only: a reused key conflicts). */\nexport interface FileArtifactCreatePayload extends ArtifactSavePayloadBase {\n kind: 'file'\n mode: 'create'\n file: File\n /** Maps to the Python `kind=` argument (defaults to \"file\" backend-side). */\n fileKind: string\n filename?: string\n displayName?: string\n note?: string\n contentType?: string\n metadata?: Record<string, unknown>\n}\n\n/**\n * File artifact replacement — handler maps to update_analysis_file_artifact\n * (transactional CAS replace). `kind` and `filename` are immutable backend-side, so\n * `fileKind` echoes the artifact's existing kind and no filename is carried. `note`\n * is three-state: omitted preserves, null clears, a string sets. `metadata` REPLACES\n * the previous result metadata rather than merging, so it always carries the full\n * intended map — omitting it clears whatever was there.\n */\nexport interface FileArtifactUpdatePayload extends ArtifactSavePayloadBase {\n kind: 'file'\n mode: 'update'\n file: File\n fileKind: string\n note?: string | null\n contentType?: string\n metadata?: Record<string, unknown>\n}\n\n/**\n * File artifact create where the plugin handler produces the bytes itself.\n * This is intended for server-side serialization of in-memory analysis state;\n * the browser neither fabricates nor uploads a placeholder File.\n */\nexport interface HandlerFileArtifactCreatePayload extends ArtifactSavePayloadBase {\n kind: 'file'\n mode: 'create'\n source: 'handler'\n fileKind: string\n displayName?: string\n note?: string\n metadata?: Record<string, unknown>\n}\n\n/** File artifact replacement where the plugin handler produces the bytes itself. */\nexport interface HandlerFileArtifactUpdatePayload extends ArtifactSavePayloadBase {\n kind: 'file'\n mode: 'update'\n source: 'handler'\n fileKind: string\n note?: string | null\n metadata?: Record<string, unknown>\n}\n\nexport type ArtifactSavePayload =\n | JsonArtifactSavePayload\n | FileArtifactCreatePayload\n | FileArtifactUpdatePayload\n\n/** Payloads accepted when `ArtifactSaveDialog.fileSource` is `handler`. */\nexport type HandlerArtifactSavePayload =\n | JsonArtifactSavePayload\n | HandlerFileArtifactCreatePayload\n | HandlerFileArtifactUpdatePayload\n\n/** Every payload variant the dialog can emit across both file sources. */\nexport type ArtifactSaveDialogPayload =\n | ArtifactSavePayload\n | HandlerFileArtifactCreatePayload\n | HandlerFileArtifactUpdatePayload\n\n/** Optional handler result; cleanupPending surfaces AnalysisFileArtifactUpdate.cleanup_pending. */\nexport interface ArtifactSaveResult {\n artifact?: AnalysisArtifactSummary\n cleanupPending?: boolean\n}\n\n/**\n * Plugin-supplied save handler. The dialog never writes to the platform;\n * the handler forwards the payload to the plugin backend, which calls\n * save_analysis_artifact / save_analysis_file_artifact / update_analysis_file_artifact.\n */\nexport type ArtifactSaveHandler = (\n payload: ArtifactSavePayload,\n) => Promise<ArtifactSaveResult | void>\n\n/** Save handler paired with `ArtifactSaveDialog.fileSource=\"handler\"`. */\nexport type HandlerArtifactSaveHandler = (\n payload: HandlerArtifactSavePayload,\n) => Promise<ArtifactSaveResult | void>\n\n/** Handler accepted by ArtifactSaveDialog; `fileSource` selects the payload family. */\nexport type ArtifactSaveDialogHandler = ArtifactSaveHandler | HandlerArtifactSaveHandler\n"],"mappings":";;AAIA,IAAa,gCAAgC"}
@@ -1,4 +1,4 @@
1
- import { $ as AutoGroupModal_default, A as ScientificNumber_default, At as ColorSlider_default, B as BioTemplateRenderer_default, Ct as AppToastContainer_default, Dt as DropdownButton_default, Et as Calendar_default, F as GroupAssigner_default, G as StatusIndicator_default, H as Breadcrumb_default, I as RackEditor_default, J as DoseDesignWorkspaceView_default, K as Divider_default, L as BioTemplatePresetWorkspaceView_default, M as SampleHierarchyTree_default, N as ReagentEditor_default, Ot as SegmentedControl_default, P as SmartGroupModal_default, Q as SampleSelector_default, R as BioTemplatePackWorkspaceView_default, S as SequenceProgressBar_default, St as IconButton_default, Tt as DataFrame_default, U as Avatar_default, V as ChartContainer_default, W as ProgressBar_default, X as ComponentBindingRenderer_default, Y as ControlWorkspaceView_default, Z as ScheduleCalendar_default, _t as AppPluginSwitcher_default, a as ResourceCard_default, at as SampleLegend_default, b as InstrumentStateBadge_default, bt as CollapsibleCard_default, c as JobsStatusTray_default, ct as DoseCalculator_default, d as LcmsSequenceTable_default, dt as AppLayout_default, et as SmartGroupManual_default, ft as AppSidebar_default, gt as AppTopBar_default, ht as StepWizard_default, i as ArtifactSelectorModal_default, it as PlateMapEditor_default, j as ProtocolStepEditor_default, k as ChemicalFormula_default, kt as BaseTabs_default, l as BatchProgressList_default, lt as PluginWorkspaceView_default, mt as FormActions_default, n as FitPanel_default, nt as LoadingSpinner_default, o as TimeRangeInput_default, ot as WellPlate_default, pt as FormBuilder_default, q as AppContainer_default, r as ArtifactSaveDialog_default, rt as ReagentList_default, s as ExperimentDataViewer_default, st as ExperimentTimeline_default, tt as SmartGroupFieldRecipe_default, u as AuditTrail_default, ut as MobileSupportGate_default, vt as AppAvatarMenu_default, wt as AlertBox_default, x as InstrumentAlertLog_default, xt as ThemeToggle_default, y as InstrumentStatusCard_default, yt as PluginIcon_default, z as BioTemplateExperimentWorkspaceView_default } from "../components-CpnOaPbP.js";
1
+ import { $ as AutoGroupModal_default, A as ScientificNumber_default, At as ColorSlider_default, B as BioTemplateRenderer_default, Ct as AppToastContainer_default, Dt as DropdownButton_default, Et as Calendar_default, F as GroupAssigner_default, G as StatusIndicator_default, H as Breadcrumb_default, I as RackEditor_default, J as DoseDesignWorkspaceView_default, K as Divider_default, L as BioTemplatePresetWorkspaceView_default, M as SampleHierarchyTree_default, N as ReagentEditor_default, Ot as SegmentedControl_default, P as SmartGroupModal_default, Q as SampleSelector_default, R as BioTemplatePackWorkspaceView_default, S as SequenceProgressBar_default, St as IconButton_default, Tt as DataFrame_default, U as Avatar_default, V as ChartContainer_default, W as ProgressBar_default, X as ComponentBindingRenderer_default, Y as ControlWorkspaceView_default, Z as ScheduleCalendar_default, _t as AppPluginSwitcher_default, a as ResourceCard_default, at as SampleLegend_default, b as InstrumentStateBadge_default, bt as CollapsibleCard_default, c as JobsStatusTray_default, ct as DoseCalculator_default, d as LcmsSequenceTable_default, dt as AppLayout_default, et as SmartGroupManual_default, ft as AppSidebar_default, gt as AppTopBar_default, ht as StepWizard_default, i as ArtifactSelectorModal_default, it as PlateMapEditor_default, j as ProtocolStepEditor_default, k as ChemicalFormula_default, kt as BaseTabs_default, l as BatchProgressList_default, lt as PluginWorkspaceView_default, mt as FormActions_default, n as FitPanel_default, nt as LoadingSpinner_default, o as TimeRangeInput_default, ot as WellPlate_default, pt as FormBuilder_default, q as AppContainer_default, r as ArtifactSaveDialog_default, rt as ReagentList_default, s as ExperimentDataViewer_default, st as ExperimentTimeline_default, tt as SmartGroupFieldRecipe_default, u as AuditTrail_default, ut as MobileSupportGate_default, vt as AppAvatarMenu_default, wt as AlertBox_default, x as InstrumentAlertLog_default, xt as ThemeToggle_default, y as InstrumentStatusCard_default, yt as PluginIcon_default, z as BioTemplateExperimentWorkspaceView_default } from "../components-DdzHh3a_.js";
2
2
  import { t as BaseButton_default } from "../BaseButton-Dgqrze41.js";
3
3
  import { r as BaseInput_default, t as BaseSelect_default } from "../BaseSelect-ekgr9fDo.js";
4
4
  import { B as TagsInput_default, L as DateTimePicker_default, M as SequenceInput_default, O as ConcentrationInput_default, P as FormulaInput_default, R as FileUploader_default, V as TimePicker_default, at as MultiSelect_default, ct as BaseSlider_default, dt as BaseCheckbox_default, ft as Tooltip_default, it as DatePicker_default, j as MoleculeInput_default, k as UnitInput_default, lt as BaseRadioGroup_default, pt as BaseTextarea_default, ut as BaseToggle_default, z as NumberInput_default } from "../useControlSchema-BZNdalmL.js";
@@ -6,7 +6,7 @@ import { a as recordValuesEqualForKeys, c as normalizeLabelItemInput, i as pickE
6
6
  import { t as BaseModal_default } from "./BaseModal-B9UA8Y_I.js";
7
7
  import { a as BasePill_default, i as Skeleton_default, n as ExperimentCodeBadge_default, r as EmptyState_default, t as ExperimentSelectorModal_default } from "./ExperimentSelectorModal-DZeSd-yr.js";
8
8
  import { t as useDropdownState } from "./useDropdownState-Bb-c_PeE.js";
9
- import { $ as useAppExperiment, A as resolveCurrentExperimentId, D as useExperimentData, E as useExperimentSamples, H as useAutoGroup, J as useWellPlateEditor, M as useSampleGroups, Q as APP_EXPERIMENT_KEY, R as readFileAsText, T as useScheduleDrag, U as parseCSV, X as DEFAULT_MOBILE_VIEWPORT_QUERY, Y as useDoseCalculator, Z as useMobileSupportGate, _ as useBioTemplatePackWorkspace, a as jobStatusLabel, d as DEFAULT_UNITS, et as useTheme, g as useBioTemplatePresetWorkspace, h as useRackEditor, it as useTextSearch, j as useExpansionSet, k as getInjectedPlatformContext, l as useProtocolTemplates, m as useGroupAssignment, n as useJobsStatusTray, o as normalizeJobPercent, ot as useSortedItems, p as useReagentSeries, q as DEFAULT_COLORS, t as useAnalysisArtifacts, tt as useToast, u as DEFAULT_PRESETS } from "./useAnalysisArtifacts-Ob8UtVwl.js";
9
+ import { $ as APP_EXPERIMENT_KEY, A as resolveCurrentExperimentId, D as useExperimentData, E as useExperimentSamples, J as DEFAULT_COLORS, M as useExpansionSet, N as useSampleGroups, Q as useMobileSupportGate, T as useScheduleDrag, U as useAutoGroup, W as parseCSV, X as useDoseCalculator, Y as useWellPlateEditor, Z as DEFAULT_MOBILE_VIEWPORT_QUERY, _ as useBioTemplatePackWorkspace, a as jobStatusLabel, at as useTextSearch, d as DEFAULT_UNITS, et as useAppExperiment, g as useBioTemplatePresetWorkspace, h as useRackEditor, k as getInjectedPlatformContext, l as useProtocolTemplates, m as useGroupAssignment, n as useJobsStatusTray, nt as useToast, o as normalizeJobPercent, p as useReagentSeries, st as useSortedItems, t as useAnalysisArtifacts, tt as useTheme, u as DEFAULT_PRESETS, z as readFileAsText } from "./useAnalysisArtifacts-C3l0a0vu.js";
10
10
  import { i as usePlatformContext, t as useFormBuilder } from "./useFormBuilder-DKekvXRs.js";
11
11
  import { s as formatExperimentDate } from "./experiment-utils-Bfa7CwPU.js";
12
12
  import { hasAllPermissions } from "./permissions.js";
@@ -17847,4 +17847,4 @@ var components_exports = /* @__PURE__ */ __exportAll({
17847
17847
  //#endregion
17848
17848
  export { AutoGroupModal_default as $, ScientificNumber_default as A, ColorSlider_default as At, BioTemplateRenderer_default as B, estimateSequenceFinishDate as C, AppToastContainer_default as Ct, sequenceProgressPercent as D, DropdownButton_default as Dt, formatSequenceRemaining as E, Calendar_default as Et, GroupAssigner_default as F, StatusIndicator_default as G, Breadcrumb_default as H, RackEditor_default as I, DoseDesignWorkspaceView_default as J, Divider_default as K, BioTemplatePresetWorkspaceView_default as L, SampleHierarchyTree_default as M, ReagentEditor_default as N, sequenceSamplesRemaining as O, SegmentedControl_default as Ot, SmartGroupModal_default as P, SampleSelector_default as Q, BioTemplatePackWorkspaceView_default as R, SequenceProgressBar_default as S, IconButton_default as St, formatSequenceEta as T, DataFrame_default as Tt, Avatar_default as U, ChartContainer_default as V, ProgressBar_default as W, ComponentBindingRenderer_default as X, ControlWorkspaceView_default as Y, ScheduleCalendar_default as Z, lcmsWellIdFromPosition as _, AppPluginSwitcher_default as _t, ResourceCard_default as a, SampleLegend_default as at, InstrumentStateBadge_default as b, CollapsibleCard_default as bt, JobsStatusTray_default as c, DoseCalculator_default as ct, LcmsSequenceTable_default as d, AppLayout_default as dt, SmartGroupManual_default as et, DEFAULT_LCMS_SEQUENCE_COLUMNS as f, AppSidebar_default as ft, inferLcmsPlateTypeFromWellIds as g, AppTopBar_default as gt, extractLcmsSampleName as h, StepWizard_default as ht, ArtifactSelectorModal_default as i, PlateMapEditor_default as it, ProtocolStepEditor_default as j, ChemicalFormula_default as k, BaseTabs_default as kt, BatchProgressList_default as l, PluginWorkspaceView_default as lt, extractLcmsCommonPrefix as m, FormActions_default as mt, FitPanel_default as n, LoadingSpinner_default as nt, TimeRangeInput_default as o, WellPlate_default as ot, basenameFromWindowsPath as p, FormBuilder_default as pt, AppContainer_default as q, ArtifactSaveDialog_default as r, ReagentList_default as rt, ExperimentDataViewer_default as s, ExperimentTimeline_default as st, components_exports as t, SmartGroupFieldRecipe_default as tt, AuditTrail_default as u, MobileSupportGate_default as ut, reconstructLcmsPlateCellsFromSequenceItems as v, AppAvatarMenu_default as vt, estimateSequenceRemainingSeconds as w, AlertBox_default as wt, InstrumentAlertLog_default as x, ThemeToggle_default as xt, InstrumentStatusCard_default as y, PluginIcon_default as yt, BioTemplateExperimentWorkspaceView_default as z };
17849
17849
 
17850
- //# sourceMappingURL=components-CpnOaPbP.js.map
17850
+ //# sourceMappingURL=components-DdzHh3a_.js.map