@morscherlab/mint-sdk 1.1.10 → 1.1.11

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.
@@ -5,6 +5,7 @@ export { useTheme } from './useTheme';
5
5
  export { useToast } from './useToast';
6
6
  export { usePlatformContext } from './usePlatformContext';
7
7
  export { resolvePluginFrontendBase } from './pluginFrontendBase';
8
+ export { getPresenceClientId, usePresenceHeartbeat, type PresenceHeartbeatOptions, type PresenceHeartbeatPayload, type UsePresenceHeartbeatReturn, } from './usePresenceHeartbeat';
8
9
  export { useForm, type ValidationRule, type FieldRules, type FieldState, type UseFormReturn, } from './useForm';
9
10
  export { useAsync, useAsyncBatch, type AsyncError, type AsyncState, type UseAsyncReturn, type UseAsyncOptions, } from './useAsync';
10
11
  export { useWellPlateEditor, type UseWellPlateEditorOptions, type UseWellPlateEditorReturn, } from './useWellPlateEditor';
@@ -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, n as EXPERIMENT_STATUS_LABELS, o as datePresetToISO, p as useEventListener, r as EXPERIMENT_STATUS_OPTIONS, s as experimentIdFromRoute, t as DATE_PRESET_OPTIONS, u as getExperimentStatusVariant } from "../experiment-utils-CLnzPPq5.js";
2
2
  import { r as useRequestSyncState } from "../EmptyState-p90quq8Z.js";
3
3
  import { A as useConcentrationUnits, B as useAnalysisArtifacts, C as controlsToViewIds, D as getTypeDefault, E as getFieldRegistryEntry, Et as useSelectionLimit, F as ATOMIC_WEIGHTS, G as resolveCurrentPluginId, I as useChemicalFormula, J as usePluginJobs, K as createGeneratedAnalysisTransport, N as useSequenceUtils, S as controlsToTopBarSettingsConfig, St as useTimeUtils, T as getDefaultControlView, Tt as useListSelection, _ as controlsToFormSchema, _t as isTimeInRange, a as defineDoseCalculatorControlProps, b as controlsToSettingsSchema, bt as snapToSlot, c as defineWellPlateDoseComponentBindings, ct as compareTime, d as defineControlModel, dt as findNearestTimeSlotIndex, ft as formatDuration, gt as generateTimeSlots, h as controlValuesToComponentProps, ht as fromMinutes, i as useControlSchema, l as defineWellPlateDoseControlProps, lt as durationMinutes, m as controlValuesToComponentBindingsById, mt as formatTimeSlot, n as defineControls, o as defineDoseDesignControlModel, p as controlValuesToComponentBindings, pt as formatTime, q as useGeneratedAnalysis, r as getControlDefaults, s as defineWellPlateControlProps, st as addMinutes, t as defineControlComponentBindings, u as useControlWorkspace, ut as findAvailableSlots, v as controlsToSectionFormSchema, vt as parseTime, w as controlsToViewItems, x as controlsToSidebarPanels, xt as toMinutes, y as controlsToSectionFormSchemas, yt as rangesOverlap } from "../useControlSchema-BMVb2XIQ.js";
4
- import { $ as compareSortValues, A as useFileImport, B as useDoseCalculator, D as detectDelimiter, F as extractSampleNamesFromDesignData, G as useMobileSupportGate, H as useJobsStatusTray, I as extractSampleOptionsFromDesignData, J as useTheme, K as APP_EXPERIMENT_KEY, L as unwrapExperimentDesignData, M as extractSamplesFromDesignData, N as useAutoGroup, O as parseDelimitedText, Q as useTextSearch, R as DEFAULT_COLORS, U as usePluginJobCenter, V as combinePluginJobSources, W as DEFAULT_MOBILE_VIEWPORT_QUERY, X as candidateMatchesSearch, Y as useToast, Z as normalizeSearchQuery, _ as useScheduleDrag, a as useReagentSeries, b as useExpansionSet, c as useBioTemplatePresetWorkspace, d as getBioTemplateComponentProps, et as useSortedItems, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, j as validateImportFile, k as readFileAsText, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, o as useGroupAssignment, p as useBioTemplateComponents, q as useAppExperiment, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, u as useBioTemplateWorkspace, v as useExperimentSamples, x as useSampleGroups, y as useExperimentData, z as useWellPlateEditor } from "../useProtocolTemplates-D3IZKLqr.js";
4
+ import { $ as normalizeSearchQuery, A as useFileImport, B as useDoseCalculator, D as detectDelimiter, F as extractSampleNamesFromDesignData, G as useMobileSupportGate, H as useJobsStatusTray, I as extractSampleOptionsFromDesignData, J as getPresenceClientId, K as APP_EXPERIMENT_KEY, L as unwrapExperimentDesignData, M as extractSamplesFromDesignData, N as useAutoGroup, O as parseDelimitedText, Q as candidateMatchesSearch, R as DEFAULT_COLORS, U as usePluginJobCenter, V as combinePluginJobSources, W as DEFAULT_MOBILE_VIEWPORT_QUERY, X as useTheme, Y as usePresenceHeartbeat, Z as useToast, _ as useScheduleDrag, a as useReagentSeries, b as useExpansionSet, c as useBioTemplatePresetWorkspace, d as getBioTemplateComponentProps, et as useTextSearch, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, j as validateImportFile, k as readFileAsText, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, nt as useSortedItems, o as useGroupAssignment, p as useBioTemplateComponents, q as useAppExperiment, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, tt as compareSortValues, u as useBioTemplateWorkspace, v as useExperimentSamples, x as useSampleGroups, y as useExperimentData, z as useWellPlateEditor } from "../useProtocolTemplates-CIzDGj2R.js";
5
5
  import { r as useApi, t as AuthenticationRequiredError } from "../useApi-CDBq6z23.js";
6
6
  import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "../useFormBuilder-DG3HOFGA.js";
7
7
  import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "../analysisArtifactTypes-DQ0MjwHZ.js";
8
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-Cr-48-u2.js";
9
9
  import { n as useDebouncedWatch, t as useExperimentSelector } from "../useExperimentSelector-D0pjj9WH.js";
10
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-CRR_JxQD.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, 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, getPluginPageSelectorItems, 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, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListSelection, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePluginClient, usePluginConfig, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, useProtocolTemplates, useRackEditor, useReagentSeries, useRequestSyncState, useResourceCrud, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateImportFile, wellIdToCoordinate, wellIdsInRectangle };
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, 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, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListSelection, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePluginClient, usePluginConfig, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, usePresenceHeartbeat, useProtocolTemplates, useRackEditor, useReagentSeries, useRequestSyncState, useResourceCrud, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateImportFile, wellIdToCoordinate, wellIdsInRectangle };
@@ -0,0 +1,44 @@
1
+ import { MaybeRefOrGetter, Ref } from 'vue';
2
+ export interface PresenceHeartbeatPayload {
3
+ client_id: string;
4
+ scope: string;
5
+ }
6
+ interface PresenceDocument {
7
+ readonly visibilityState: DocumentVisibilityState;
8
+ addEventListener(type: 'visibilitychange', listener: EventListener): void;
9
+ removeEventListener(type: 'visibilitychange', listener: EventListener): void;
10
+ }
11
+ interface PresenceStorage {
12
+ getItem(key: string): string | null;
13
+ setItem(key: string, value: string): void;
14
+ }
15
+ export interface PresenceHeartbeatOptions {
16
+ /** Platform, plugin id, or plugin name reported for this browser tab. */
17
+ scope: MaybeRefOrGetter<string | null | undefined>;
18
+ /** Disable all traffic, including for standalone plugins. */
19
+ enabled?: MaybeRefOrGetter<boolean>;
20
+ /** Heartbeat interval. Defaults to 30 seconds. */
21
+ intervalMs?: number;
22
+ /** Test or host storage seam. Defaults to sessionStorage. */
23
+ storage?: PresenceStorage | null;
24
+ /** Test or host document seam. Defaults to the current document. */
25
+ document?: PresenceDocument | null;
26
+ /** Test seam for generating the per-tab id. */
27
+ createClientId?: () => string;
28
+ /** Test or custom transport seam. Defaults to authenticated POST /api/presence/heartbeat. */
29
+ send?: (payload: PresenceHeartbeatPayload) => Promise<unknown> | unknown;
30
+ /** Test timing seam. Defaults to the browser scheduler. */
31
+ setInterval?: (callback: () => void, intervalMs: number) => unknown;
32
+ /** Test timing seam. Defaults to the browser scheduler. */
33
+ clearInterval?: (intervalId: unknown) => void;
34
+ }
35
+ export interface UsePresenceHeartbeatReturn {
36
+ clientId: string;
37
+ isRunning: Readonly<Ref<boolean>>;
38
+ sendNow: () => Promise<void>;
39
+ }
40
+ /** Return the stable id shared by presence callers in the current browser tab. */
41
+ export declare function getPresenceClientId(storage?: PresenceStorage | null, createClientId?: () => string): string;
42
+ /** Report one visible integrated MINT browser tab to the platform presence tracker. */
43
+ export declare function usePresenceHeartbeat(options: PresenceHeartbeatOptions): UsePresenceHeartbeatReturn;
44
+ export {};
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { a as SORT_OPTIONS, c as formatExperimentDate, d as resolveExperimentCode, f as BaseModal_default, i as EXPERIMENT_STATUS_VARIANT_MAP, l as formatExperimentStatus, m as BaseButton_default, n as EXPERIMENT_STATUS_LABELS, o as datePresetToISO, p as useEventListener, r as EXPERIMENT_STATUS_OPTIONS, s as experimentIdFromRoute, t as DATE_PRESET_OPTIONS, u as getExperimentStatusVariant } from "./experiment-utils-CLnzPPq5.js";
2
2
  import { a as BaseSelect_default, i as BasePill_default, n as Skeleton_default, r as useRequestSyncState, s as BaseInput_default, t as EmptyState_default } from "./EmptyState-p90quq8Z.js";
3
3
  import { $ as normalizeJobState, A as useConcentrationUnits, At as BaseCheckbox_default, B as useAnalysisArtifacts, C as controlsToViewIds, Ct as DatePicker_default, D as getTypeDefault, Dt as BaseSlider_default, E as getFieldRegistryEntry, Et as useSelectionLimit, F as ATOMIC_WEIGHTS, G as resolveCurrentPluginId, I as useChemicalFormula, It as BaseTextarea_default, J as usePluginJobs, K as createGeneratedAnalysisTransport, L as GeneratedPathInput_default, M as SequenceInput_default, N as useSequenceUtils, O as ConcentrationInput_default, Ot as BaseRadioGroup_default, P as FormulaInput_default, Q as normalizeJobPercent, S as controlsToTopBarSettingsConfig, St as useTimeUtils, T as getDefaultControlView, Tt as useListSelection, X as isTerminalJobStatus, Y as isActiveJobStatus, Z as jobStatusLabel, _ as controlsToFormSchema, _t as isTimeInRange, a as defineDoseCalculatorControlProps, at as TagsInput_default, b as controlsToSettingsSchema, bt as snapToSlot, c as defineWellPlateDoseComponentBindings, ct as compareTime, d as defineControlModel, dt as findNearestTimeSlotIndex, et as resolveJobCapabilities, ft as formatDuration, gt as generateTimeSlots, h as controlValuesToComponentProps, ht as fromMinutes, i as useControlSchema, it as NumberInput_default, j as MoleculeInput_default, jt as Tooltip_default, k as UnitInput_default, kt as BaseToggle_default, l as defineWellPlateDoseControlProps, lt as durationMinutes, m as controlValuesToComponentBindingsById, mt as formatTimeSlot, n as defineControls, nt as AlertBox_default, o as defineDoseDesignControlModel, ot as TimePicker_default, p as controlValuesToComponentBindings, pt as formatTime, q as useGeneratedAnalysis, r as getControlDefaults, rt as FileUploader_default, s as defineWellPlateControlProps, st as addMinutes, t as defineControlComponentBindings, tt as DateTimePicker_default, u as useControlWorkspace, ut as findAvailableSlots, v as controlsToSectionFormSchema, vt as parseTime, w as controlsToViewItems, wt as MultiSelect_default, x as controlsToSidebarPanels, xt as toMinutes, y as controlsToSectionFormSchemas, yt as rangesOverlap, z as ArtifactSelectorModal_default } from "./useControlSchema-BMVb2XIQ.js";
4
- import { $ as SmartGroupFieldRecipe_default, A as ProtocolStepEditor_default, At as AppToastContainer_default, B as Breadcrumb_default, C as estimateSequenceRemainingSeconds, Ct as AppPluginSwitcher_default, D as sequenceSamplesRemaining, Dt as ThemeToggle_default, E as sequenceProgressPercent, Et as CollapsibleCard_default, F as RackEditor_default, Ft as BaseTabs_default, G as AppContainer_default, H as ProgressBar_default, I as BioTemplatePresetWorkspaceView_default, It as ColorSlider_default, J as ComponentBindingRenderer_default, K as DoseDesignWorkspaceView_default, L as BioTemplatePackWorkspaceView_default, M as ReagentEditor_default, Mt as Calendar_default, N as SmartGroupModal_default, Nt as DropdownButton_default, O as ChemicalFormula_default, Ot as ActionMenu_default, P as GroupAssigner_default, Pt as SegmentedControl_default, Q as SmartGroupManual_default, R as BioTemplateExperimentWorkspaceView_default, S as estimateSequenceFinishDate, St as AppTopBar_default, T as formatSequenceRemaining, Tt as PluginIcon_default, U as StatusIndicator_default, V as Avatar_default, W as Divider_default, X as SampleSelector_default, Y as ScheduleCalendar_default, Z as AutoGroupModal_default, _ as reconstructLcmsPlateCellsFromSequenceItems, _t as AppLayout_default, a as ResourceCard_default, at as DoseCalculator_default, b as InstrumentAlertLog_default, bt as FormActions_default, c as BatchProgressList_default, ct as GeneratedResultRenderer_default, d as DEFAULT_LCMS_SEQUENCE_COLUMNS, dt as LoadingSpinner_default, et as ReagentList_default, f as basenameFromWindowsPath, ft as generatedJobDefaults, g as lcmsWellIdFromPosition, gt as MobileSupportGate_default, h as inferLcmsPlateTypeFromWellIds, ht as PluginWorkspaceView_default, i as SectionCard_default, it as ExperimentTimeline_default, j as SampleHierarchyTree_default, jt as DataFrame_default, k as ScientificNumber_default, kt as IconButton_default, l as AuditTrail_default, lt as GeneratedPlotlyResult_default, m as extractLcmsSampleName, mt as normalizeGeneratedJobInput, n as FitPanel_default, nt as SampleLegend_default, o as TimeRangeInput_default, ot as GeneratedPluginView_default, p as extractLcmsCommonPrefix, pt as generatedJobFormSchema, q as ControlWorkspaceView_default, r as ArtifactSaveDialog_default, rt as WellPlate_default, s as ExperimentDataViewer_default, st as JobsStatusTray_default, tt as PlateMapEditor_default, u as LcmsSequenceTable_default, ut as ChartContainer_default, v as InstrumentStatusCard_default, vt as AppSidebar_default, w as formatSequenceEta, wt as AppAvatarMenu_default, x as SequenceProgressBar_default, xt as StepWizard_default, y as InstrumentStateBadge_default, yt as FormBuilder_default, z as BioTemplateRenderer_default } from "./components-HXV-ZkBg.js";
4
+ import { $ as SmartGroupFieldRecipe_default, A as ProtocolStepEditor_default, At as AppToastContainer_default, B as Breadcrumb_default, C as estimateSequenceRemainingSeconds, Ct as AppPluginSwitcher_default, D as sequenceSamplesRemaining, Dt as ThemeToggle_default, E as sequenceProgressPercent, Et as CollapsibleCard_default, F as RackEditor_default, Ft as BaseTabs_default, G as AppContainer_default, H as ProgressBar_default, I as BioTemplatePresetWorkspaceView_default, It as ColorSlider_default, J as ComponentBindingRenderer_default, K as DoseDesignWorkspaceView_default, L as BioTemplatePackWorkspaceView_default, M as ReagentEditor_default, Mt as Calendar_default, N as SmartGroupModal_default, Nt as DropdownButton_default, O as ChemicalFormula_default, Ot as ActionMenu_default, P as GroupAssigner_default, Pt as SegmentedControl_default, Q as SmartGroupManual_default, R as BioTemplateExperimentWorkspaceView_default, S as estimateSequenceFinishDate, St as AppTopBar_default, T as formatSequenceRemaining, Tt as PluginIcon_default, U as StatusIndicator_default, V as Avatar_default, W as Divider_default, X as SampleSelector_default, Y as ScheduleCalendar_default, Z as AutoGroupModal_default, _ as reconstructLcmsPlateCellsFromSequenceItems, _t as AppLayout_default, a as ResourceCard_default, at as DoseCalculator_default, b as InstrumentAlertLog_default, bt as FormActions_default, c as BatchProgressList_default, ct as GeneratedResultRenderer_default, d as DEFAULT_LCMS_SEQUENCE_COLUMNS, dt as LoadingSpinner_default, et as ReagentList_default, f as basenameFromWindowsPath, ft as generatedJobDefaults, g as lcmsWellIdFromPosition, gt as MobileSupportGate_default, h as inferLcmsPlateTypeFromWellIds, ht as PluginWorkspaceView_default, i as SectionCard_default, it as ExperimentTimeline_default, j as SampleHierarchyTree_default, jt as DataFrame_default, k as ScientificNumber_default, kt as IconButton_default, l as AuditTrail_default, lt as GeneratedPlotlyResult_default, m as extractLcmsSampleName, mt as normalizeGeneratedJobInput, n as FitPanel_default, nt as SampleLegend_default, o as TimeRangeInput_default, ot as GeneratedPluginView_default, p as extractLcmsCommonPrefix, pt as generatedJobFormSchema, q as ControlWorkspaceView_default, r as ArtifactSaveDialog_default, rt as WellPlate_default, s as ExperimentDataViewer_default, st as JobsStatusTray_default, tt as PlateMapEditor_default, u as LcmsSequenceTable_default, ut as ChartContainer_default, v as InstrumentStatusCard_default, vt as AppSidebar_default, w as formatSequenceEta, wt as AppAvatarMenu_default, x as SequenceProgressBar_default, xt as StepWizard_default, y as InstrumentStateBadge_default, yt as FormBuilder_default, z as BioTemplateRenderer_default } from "./components-DjJsjKqe.js";
5
5
  import { s as FormField_default, t as SettingsModal_default } from "./SettingsModal-D7LFUokT.js";
6
- import { $ as compareSortValues, A as useFileImport, B as useDoseCalculator, D as detectDelimiter, E as hslToHex, F as extractSampleNamesFromDesignData, G as useMobileSupportGate, H as useJobsStatusTray, I as extractSampleOptionsFromDesignData, J as useTheme, K as APP_EXPERIMENT_KEY, L as unwrapExperimentDesignData, M as extractSamplesFromDesignData, N as useAutoGroup, O as parseDelimitedText, Q as useTextSearch, R as DEFAULT_COLORS, T as hexToHsl, U as usePluginJobCenter, V as combinePluginJobSources, W as DEFAULT_MOBILE_VIEWPORT_QUERY, X as candidateMatchesSearch, Y as useToast, Z as normalizeSearchQuery, _ as useScheduleDrag, a as useReagentSeries, b as useExpansionSet, c as useBioTemplatePresetWorkspace, d as getBioTemplateComponentProps, et as useSortedItems, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, j as validateImportFile, k as readFileAsText, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, o as useGroupAssignment, p as useBioTemplateComponents, q as useAppExperiment, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, u as useBioTemplateWorkspace, v as useExperimentSamples, w as deriveShade, x as useSampleGroups, y as useExperimentData, z as useWellPlateEditor } from "./useProtocolTemplates-D3IZKLqr.js";
6
+ import { $ as normalizeSearchQuery, A as useFileImport, B as useDoseCalculator, D as detectDelimiter, E as hslToHex, F as extractSampleNamesFromDesignData, G as useMobileSupportGate, H as useJobsStatusTray, I as extractSampleOptionsFromDesignData, J as getPresenceClientId, K as APP_EXPERIMENT_KEY, L as unwrapExperimentDesignData, M as extractSamplesFromDesignData, N as useAutoGroup, O as parseDelimitedText, Q as candidateMatchesSearch, R as DEFAULT_COLORS, T as hexToHsl, U as usePluginJobCenter, V as combinePluginJobSources, W as DEFAULT_MOBILE_VIEWPORT_QUERY, X as useTheme, Y as usePresenceHeartbeat, Z as useToast, _ as useScheduleDrag, a as useReagentSeries, b as useExpansionSet, c as useBioTemplatePresetWorkspace, d as getBioTemplateComponentProps, et as useTextSearch, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, j as validateImportFile, k as readFileAsText, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, nt as useSortedItems, o as useGroupAssignment, p as useBioTemplateComponents, q as useAppExperiment, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, tt as compareSortValues, u as useBioTemplateWorkspace, v as useExperimentSamples, w as deriveShade, x as useSampleGroups, y as useExperimentData, z as useWellPlateEditor } from "./useProtocolTemplates-CIzDGj2R.js";
7
7
  import { a as colorPalettes, i as useAuthStore, o as useSettingsStore, r as useApi, t as AuthenticationRequiredError } from "./useApi-CDBq6z23.js";
8
8
  import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "./useFormBuilder-DG3HOFGA.js";
9
9
  import { ADMIN_PANEL_PERMISSIONS, ADMIN_ROLE, canAccessAdmin, canAccessByPolicy, canAccessPlugin, getAccessAudience, getRoleInfo, getUserPermissions, hasAllPermissions, hasAnyPermission, isAdminRole, isAdminUser, normalizeAccessPolicy } from "./permissions.js";
@@ -176,6 +176,6 @@ function comparePlateCells(a, b) {
176
176
  return rowDiff === 0 ? a.column - b.column : rowDiff;
177
177
  }
178
178
  //#endregion
179
- export { ADMIN_PANEL_PERMISSIONS, ADMIN_ROLE, ANALYSIS_FILE_ARTIFACT_SCHEMA, APP_EXPERIMENT_KEY, ATOMIC_WEIGHTS, ActionMenu_default as ActionMenu, AlertBox_default as AlertBox, AppAvatarMenu_default as AppAvatarMenu, AppContainer_default as AppContainer, AppLayout_default as AppLayout, AppPluginSwitcher_default as AppPluginSwitcher, AppSidebar_default as AppSidebar, AppToastContainer_default as AppToastContainer, AppTopBar_default as AppTopBar, ArtifactSaveDialog_default as ArtifactSaveDialog, ArtifactSelectorModal_default as ArtifactSelectorModal, AuditTrail_default as AuditTrail, AuthenticationRequiredError, AutoGroupModal_default as AutoGroupModal, Avatar_default as Avatar, BaseButton_default as BaseButton, BaseCheckbox_default as BaseCheckbox, BaseInput_default as BaseInput, BaseModal_default as BaseModal, BasePill_default as BasePill, BaseRadioGroup_default as BaseRadioGroup, BaseSelect_default as BaseSelect, BaseSlider_default as BaseSlider, BaseTabs_default as BaseTabs, BaseTextarea_default as BaseTextarea, BaseToggle_default as BaseToggle, BatchProgressList_default as BatchProgressList, BioTemplateExperimentWorkspaceView_default as BioTemplateExperimentWorkspaceView, BioTemplatePackWorkspaceView_default as BioTemplatePackWorkspaceView, BioTemplatePresetWorkspaceView_default as BioTemplatePresetWorkspaceView, BioTemplateRenderer_default as BioTemplateRenderer, Breadcrumb_default as Breadcrumb, Calendar_default as Calendar, ChartContainer_default as ChartContainer, ChemicalFormula_default as ChemicalFormula, CollapsibleCard_default as CollapsibleCard, ColorSlider_default as ColorSlider, ComponentBindingRenderer_default as ComponentBindingRenderer, ConcentrationInput_default as ConcentrationInput, ConfirmDialog_default as ConfirmDialog, ControlWorkspaceView_default as ControlWorkspaceView, DATE_PRESET_OPTIONS, DEFAULT_COLORS, DEFAULT_LCMS_SEQUENCE_COLUMNS, DEFAULT_MOBILE_VIEWPORT_QUERY, DEFAULT_PRESETS, DEFAULT_UNITS, DataFrame_default as DataFrame, DatePicker_default as DatePicker, DateTimePicker_default as DateTimePicker, Divider_default as Divider, DoseCalculator_default as DoseCalculator, DoseDesignWorkspaceView_default as DoseDesignWorkspaceView, DropdownButton_default as DropdownButton, EXPERIMENT_STATUS_LABELS, EXPERIMENT_STATUS_OPTIONS, EXPERIMENT_STATUS_VARIANT_MAP, EmptyState_default as EmptyState, ExperimentCodeBadge_default as ExperimentCodeBadge, ExperimentDataViewer_default as ExperimentDataViewer, ExperimentPopover_default as ExperimentPopover, ExperimentSelectorModal_default as ExperimentSelectorModal, ExperimentTimeline_default as ExperimentTimeline, FileUploader_default as FileUploader, FitPanel_default as FitPanel, FormActions_default as FormActions, FormBuilder_default as FormBuilder, FormField_default as FormField, FormulaInput_default as FormulaInput, GeneratedPathInput_default as GeneratedPathInput, GeneratedPlotlyResult_default as GeneratedPlotlyResult, GeneratedPluginView_default as GeneratedPluginView, GeneratedResultRenderer_default as GeneratedResultRenderer, GroupAssigner_default as GroupAssigner, IconButton_default as IconButton, InstrumentAlertLog_default as InstrumentAlertLog, InstrumentStateBadge_default as InstrumentStateBadge, InstrumentStatusCard_default as InstrumentStatusCard, JobsStatusTray_default as JobsStatusTray, LCMS_DEFAULT_CONTROL_POSITIONS, LcmsSequenceTable_default as LcmsSequenceTable, LoadingSpinner_default as LoadingSpinner, MINTSdk, MINTSdk as default, MobileSupportGate_default as MobileSupportGate, MoleculeInput_default as MoleculeInput, MultiSelect_default as MultiSelect, NumberInput_default as NumberInput, PlateMapEditor_default as PlateMapEditor, PluginIcon_default as PluginIcon, PluginWorkspaceView_default as PluginWorkspaceView, ProgressBar_default as ProgressBar, ProtocolStepEditor_default as ProtocolStepEditor, RackEditor_default as RackEditor, ReagentEditor_default as ReagentEditor, ReagentList_default as ReagentList, ResourceCard_default as ResourceCard, SORT_OPTIONS, SampleHierarchyTree_default as SampleHierarchyTree, SampleLegend_default as SampleLegend, SampleSelector_default as SampleSelector, ScheduleCalendar_default as ScheduleCalendar, ScientificNumber_default as ScientificNumber, SectionCard_default as SectionCard, SegmentedControl_default as SegmentedControl, SequenceInput_default as SequenceInput, SequenceProgressBar_default as SequenceProgressBar, SettingsModal_default as SettingsModal, Skeleton_default as Skeleton, SmartGroupFieldRecipe_default as SmartGroupFieldRecipe, SmartGroupManual_default as SmartGroupManual, SmartGroupModal_default as SmartGroupModal, StatusIndicator_default as StatusIndicator, StepWizard_default as StepWizard, TEMPLATE_COLLECTION_KEY, TagsInput_default as TagsInput, ThemeToggle_default as ThemeToggle, TimePicker_default as TimePicker, TimeRangeInput_default as TimeRangeInput, Tooltip_default as Tooltip, UnitInput_default as UnitInput, WellPlate_default as WellPlate, addMinutes, assertTemplateEnvelope, basenameFromWindowsPath, bioTemplateCatalog, bioTemplateControlsToFormSchema, bioTemplateControlsToSectionFormSchemas, bioTemplateControlsToSidebarPanels, bioTemplatePacks, bioTemplatePresetControlValuesToOptions, bioTemplatePresets, buildAnalysisArtifactTargetQuery, buildPluginEndpointUrl, canAccessAdmin, canAccessByPolicy, canAccessPlugin, candidateMatchesSearch, colorPalettes, combinePluginJobSources, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, coordinateToWellId, createAssayMatrixTemplate, createBioTemplateControlToolkit, createBioTemplatePackCollection, createBioTemplatePresetCollection, createBioTemplatePresetCollectionFromControls, createCalibrationCurveTemplate, createColumnConditions, createDefaultBioTemplate, createDoseResponseTemplate, createElisaAssayCollection, createFlowCytometryAssayCollection, createFlowCytometryPanelTemplate, createGeneratedAnalysisTransport, createInstrumentRunTemplate, createLcmsBatchCollection, createLcmsControlWellEditData, createPlateMapTemplate, createPluginClient, createPluginResourceClient, createProtocolStepsTemplate, createQpcrExpressionCollection, createQpcrPlateTemplate, createReagentListTemplate, createRowConditions, createSamplePrepTemplate, createSampleSheetTemplate, createTargetedMetabolomicsCollection, createTemplateCollection, createTemplateEnvelope, createTimeCourseTemplate, createWellPlateScreenCollection, createWellPlateWells, createWesternBlotAssayCollection, datePresetToISO, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, deriveShade, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, ensureTemplateEnvelope, ensureTemplateFromCollection, estimateSequenceFinishDate, estimateSequenceRemainingSeconds, evaluateCondition, experimentIdFromRoute, extractLcmsCommonPrefix, extractLcmsSampleName, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, extractTemplateCollection, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatSequenceEta, formatSequenceRemaining, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, generatedJobDefaults, generatedJobFormSchema, getAccessAudience, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlDefaults, getBioTemplateControlSchema, getBioTemplateInfo, getBioTemplatePackInfo, getBioTemplatePresetInfo, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getLcmsDefaultControlWellId, getPluginPageSelectorItems, getRoleInfo, getTemplateData, getTypeDefault, getUserPermissions, hasAllPermissions, hasAnyPermission, hexToHsl, hslToHex, inferLcmsPlateTypeFromWellIds, isActiveJobStatus, isAdminRole, isAdminUser, isTerminalJobStatus, isTimeInRange, jobStatusLabel, lcmsPlateCellsToRack, lcmsPlateCellsToRacks, lcmsPlateTypeToRackFormat, lcmsWellId, lcmsWellIdFromPosition, listBioTemplateCatalog, listBioTemplateComponentBindings, listBioTemplateControlSchemas, listBioTemplatePacks, listBioTemplatePresetControlSchemas, listBioTemplatePresets, normalizeAccessPolicy, normalizeGeneratedJobInput, normalizeJobPercent, normalizeJobState, normalizeSearchQuery, parseAnalysisArtifactTarget, parseDelimitedText, parseLcmsWellId, parseTime, pluginFormDataFromPayload, rackFormatToLcmsPlateType, rackToLcmsPlateCells, racksToLcmsPlateCells, rangesOverlap, readFileAsText, reconstructLcmsPlateCellsFromSequenceItems, requireBioTemplateControlSchema, resolveCurrentPluginId, resolveExperimentCode, resolveJobCapabilities, resolvePluginBaseUrl, resolvePluginFrontendBase, runWellPlateValidation, searchBioTemplateCatalog, searchBioTemplatePacks, searchBioTemplatePresets, sequenceProgressPercent, sequenceSamplesRemaining, snapToSlot, 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, toMinutes, 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, unwrapExperimentDesignData, uploadPluginEndpoint, useAnalysisArtifacts, useApi, useAppExperiment, useAsync, useAsyncBatch, useAuth, useAuthStore, useAutoGroup, useBioTemplateComponents, useBioTemplateControls, useBioTemplatePackWorkspace, useBioTemplatePresetWorkspace, useBioTemplateWorkspace, useChemicalFormula, useCommandHistory, useConcentrationUnits, useControlSchema, useControlWorkspace, useCurrentExperiment, useDebouncedWatch, useDoseCalculator, useEventListener, useExpansionSet, useExperimentData, useExperimentSamples, useExperimentSave, useExperimentSelector, useExperimentStore, useFileImport, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListSelection, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePluginClient, usePluginConfig, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, useProtocolTemplates, useRackEditor, useReagentSeries, useRequestSyncState, useResourceCrud, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSettingsStore, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateAssayMatrixData, validateCalibrationCurveData, validateDoseResponseData, validateFlowCytometryPanelData, validateImportFile, validateInstrumentRunData, validatePlateMapData, validateProtocolStepsData, validateQpcrPlateData, validateReagentListData, validateSamplePrepData, validateSampleSheetData, validateTimeCourseData, wellIdToCoordinate, wellIdsInRectangle };
179
+ export { ADMIN_PANEL_PERMISSIONS, ADMIN_ROLE, ANALYSIS_FILE_ARTIFACT_SCHEMA, APP_EXPERIMENT_KEY, ATOMIC_WEIGHTS, ActionMenu_default as ActionMenu, AlertBox_default as AlertBox, AppAvatarMenu_default as AppAvatarMenu, AppContainer_default as AppContainer, AppLayout_default as AppLayout, AppPluginSwitcher_default as AppPluginSwitcher, AppSidebar_default as AppSidebar, AppToastContainer_default as AppToastContainer, AppTopBar_default as AppTopBar, ArtifactSaveDialog_default as ArtifactSaveDialog, ArtifactSelectorModal_default as ArtifactSelectorModal, AuditTrail_default as AuditTrail, AuthenticationRequiredError, AutoGroupModal_default as AutoGroupModal, Avatar_default as Avatar, BaseButton_default as BaseButton, BaseCheckbox_default as BaseCheckbox, BaseInput_default as BaseInput, BaseModal_default as BaseModal, BasePill_default as BasePill, BaseRadioGroup_default as BaseRadioGroup, BaseSelect_default as BaseSelect, BaseSlider_default as BaseSlider, BaseTabs_default as BaseTabs, BaseTextarea_default as BaseTextarea, BaseToggle_default as BaseToggle, BatchProgressList_default as BatchProgressList, BioTemplateExperimentWorkspaceView_default as BioTemplateExperimentWorkspaceView, BioTemplatePackWorkspaceView_default as BioTemplatePackWorkspaceView, BioTemplatePresetWorkspaceView_default as BioTemplatePresetWorkspaceView, BioTemplateRenderer_default as BioTemplateRenderer, Breadcrumb_default as Breadcrumb, Calendar_default as Calendar, ChartContainer_default as ChartContainer, ChemicalFormula_default as ChemicalFormula, CollapsibleCard_default as CollapsibleCard, ColorSlider_default as ColorSlider, ComponentBindingRenderer_default as ComponentBindingRenderer, ConcentrationInput_default as ConcentrationInput, ConfirmDialog_default as ConfirmDialog, ControlWorkspaceView_default as ControlWorkspaceView, DATE_PRESET_OPTIONS, DEFAULT_COLORS, DEFAULT_LCMS_SEQUENCE_COLUMNS, DEFAULT_MOBILE_VIEWPORT_QUERY, DEFAULT_PRESETS, DEFAULT_UNITS, DataFrame_default as DataFrame, DatePicker_default as DatePicker, DateTimePicker_default as DateTimePicker, Divider_default as Divider, DoseCalculator_default as DoseCalculator, DoseDesignWorkspaceView_default as DoseDesignWorkspaceView, DropdownButton_default as DropdownButton, EXPERIMENT_STATUS_LABELS, EXPERIMENT_STATUS_OPTIONS, EXPERIMENT_STATUS_VARIANT_MAP, EmptyState_default as EmptyState, ExperimentCodeBadge_default as ExperimentCodeBadge, ExperimentDataViewer_default as ExperimentDataViewer, ExperimentPopover_default as ExperimentPopover, ExperimentSelectorModal_default as ExperimentSelectorModal, ExperimentTimeline_default as ExperimentTimeline, FileUploader_default as FileUploader, FitPanel_default as FitPanel, FormActions_default as FormActions, FormBuilder_default as FormBuilder, FormField_default as FormField, FormulaInput_default as FormulaInput, GeneratedPathInput_default as GeneratedPathInput, GeneratedPlotlyResult_default as GeneratedPlotlyResult, GeneratedPluginView_default as GeneratedPluginView, GeneratedResultRenderer_default as GeneratedResultRenderer, GroupAssigner_default as GroupAssigner, IconButton_default as IconButton, InstrumentAlertLog_default as InstrumentAlertLog, InstrumentStateBadge_default as InstrumentStateBadge, InstrumentStatusCard_default as InstrumentStatusCard, JobsStatusTray_default as JobsStatusTray, LCMS_DEFAULT_CONTROL_POSITIONS, LcmsSequenceTable_default as LcmsSequenceTable, LoadingSpinner_default as LoadingSpinner, MINTSdk, MINTSdk as default, MobileSupportGate_default as MobileSupportGate, MoleculeInput_default as MoleculeInput, MultiSelect_default as MultiSelect, NumberInput_default as NumberInput, PlateMapEditor_default as PlateMapEditor, PluginIcon_default as PluginIcon, PluginWorkspaceView_default as PluginWorkspaceView, ProgressBar_default as ProgressBar, ProtocolStepEditor_default as ProtocolStepEditor, RackEditor_default as RackEditor, ReagentEditor_default as ReagentEditor, ReagentList_default as ReagentList, ResourceCard_default as ResourceCard, SORT_OPTIONS, SampleHierarchyTree_default as SampleHierarchyTree, SampleLegend_default as SampleLegend, SampleSelector_default as SampleSelector, ScheduleCalendar_default as ScheduleCalendar, ScientificNumber_default as ScientificNumber, SectionCard_default as SectionCard, SegmentedControl_default as SegmentedControl, SequenceInput_default as SequenceInput, SequenceProgressBar_default as SequenceProgressBar, SettingsModal_default as SettingsModal, Skeleton_default as Skeleton, SmartGroupFieldRecipe_default as SmartGroupFieldRecipe, SmartGroupManual_default as SmartGroupManual, SmartGroupModal_default as SmartGroupModal, StatusIndicator_default as StatusIndicator, StepWizard_default as StepWizard, TEMPLATE_COLLECTION_KEY, TagsInput_default as TagsInput, ThemeToggle_default as ThemeToggle, TimePicker_default as TimePicker, TimeRangeInput_default as TimeRangeInput, Tooltip_default as Tooltip, UnitInput_default as UnitInput, WellPlate_default as WellPlate, addMinutes, assertTemplateEnvelope, basenameFromWindowsPath, bioTemplateCatalog, bioTemplateControlsToFormSchema, bioTemplateControlsToSectionFormSchemas, bioTemplateControlsToSidebarPanels, bioTemplatePacks, bioTemplatePresetControlValuesToOptions, bioTemplatePresets, buildAnalysisArtifactTargetQuery, buildPluginEndpointUrl, canAccessAdmin, canAccessByPolicy, canAccessPlugin, candidateMatchesSearch, colorPalettes, combinePluginJobSources, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, coordinateToWellId, createAssayMatrixTemplate, createBioTemplateControlToolkit, createBioTemplatePackCollection, createBioTemplatePresetCollection, createBioTemplatePresetCollectionFromControls, createCalibrationCurveTemplate, createColumnConditions, createDefaultBioTemplate, createDoseResponseTemplate, createElisaAssayCollection, createFlowCytometryAssayCollection, createFlowCytometryPanelTemplate, createGeneratedAnalysisTransport, createInstrumentRunTemplate, createLcmsBatchCollection, createLcmsControlWellEditData, createPlateMapTemplate, createPluginClient, createPluginResourceClient, createProtocolStepsTemplate, createQpcrExpressionCollection, createQpcrPlateTemplate, createReagentListTemplate, createRowConditions, createSamplePrepTemplate, createSampleSheetTemplate, createTargetedMetabolomicsCollection, createTemplateCollection, createTemplateEnvelope, createTimeCourseTemplate, createWellPlateScreenCollection, createWellPlateWells, createWesternBlotAssayCollection, datePresetToISO, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, deriveShade, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, ensureTemplateEnvelope, ensureTemplateFromCollection, estimateSequenceFinishDate, estimateSequenceRemainingSeconds, evaluateCondition, experimentIdFromRoute, extractLcmsCommonPrefix, extractLcmsSampleName, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, extractTemplateCollection, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatSequenceEta, formatSequenceRemaining, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, generatedJobDefaults, generatedJobFormSchema, getAccessAudience, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlDefaults, getBioTemplateControlSchema, getBioTemplateInfo, getBioTemplatePackInfo, getBioTemplatePresetInfo, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getLcmsDefaultControlWellId, getPluginPageSelectorItems, getPresenceClientId, getRoleInfo, getTemplateData, getTypeDefault, getUserPermissions, hasAllPermissions, hasAnyPermission, hexToHsl, hslToHex, inferLcmsPlateTypeFromWellIds, isActiveJobStatus, isAdminRole, isAdminUser, isTerminalJobStatus, isTimeInRange, jobStatusLabel, lcmsPlateCellsToRack, lcmsPlateCellsToRacks, lcmsPlateTypeToRackFormat, lcmsWellId, lcmsWellIdFromPosition, listBioTemplateCatalog, listBioTemplateComponentBindings, listBioTemplateControlSchemas, listBioTemplatePacks, listBioTemplatePresetControlSchemas, listBioTemplatePresets, normalizeAccessPolicy, normalizeGeneratedJobInput, normalizeJobPercent, normalizeJobState, normalizeSearchQuery, parseAnalysisArtifactTarget, parseDelimitedText, parseLcmsWellId, parseTime, pluginFormDataFromPayload, rackFormatToLcmsPlateType, rackToLcmsPlateCells, racksToLcmsPlateCells, rangesOverlap, readFileAsText, reconstructLcmsPlateCellsFromSequenceItems, requireBioTemplateControlSchema, resolveCurrentPluginId, resolveExperimentCode, resolveJobCapabilities, resolvePluginBaseUrl, resolvePluginFrontendBase, runWellPlateValidation, searchBioTemplateCatalog, searchBioTemplatePacks, searchBioTemplatePresets, sequenceProgressPercent, sequenceSamplesRemaining, snapToSlot, 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, toMinutes, 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, unwrapExperimentDesignData, uploadPluginEndpoint, useAnalysisArtifacts, useApi, useAppExperiment, useAsync, useAsyncBatch, useAuth, useAuthStore, useAutoGroup, useBioTemplateComponents, useBioTemplateControls, useBioTemplatePackWorkspace, useBioTemplatePresetWorkspace, useBioTemplateWorkspace, useChemicalFormula, useCommandHistory, useConcentrationUnits, useControlSchema, useControlWorkspace, useCurrentExperiment, useDebouncedWatch, useDoseCalculator, useEventListener, useExpansionSet, useExperimentData, useExperimentSamples, useExperimentSave, useExperimentSelector, useExperimentStore, useFileImport, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListSelection, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePluginClient, usePluginConfig, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, usePresenceHeartbeat, useProtocolTemplates, useRackEditor, useReagentSeries, useRequestSyncState, useResourceCrud, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSettingsStore, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateAssayMatrixData, validateCalibrationCurveData, validateDoseResponseData, validateFlowCytometryPanelData, validateImportFile, validateInstrumentRunData, validatePlateMapData, validateProtocolStepsData, validateQpcrPlateData, validateReagentListData, validateSamplePrepData, validateSampleSheetData, validateTimeCourseData, wellIdToCoordinate, wellIdsInRectangle };
180
180
 
181
181
  //# sourceMappingURL=index.js.map
package/dist/install.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import "./experiment-utils-CLnzPPq5.js";
2
2
  import "./EmptyState-p90quq8Z.js";
3
3
  import "./useControlSchema-BMVb2XIQ.js";
4
- import { t as components_exports } from "./components-HXV-ZkBg.js";
4
+ import { t as components_exports } from "./components-DjJsjKqe.js";
5
5
  import "./SettingsModal-D7LFUokT.js";
6
6
  import "./ExperimentPopover-tLwJ7XF4.js";
7
7
  import "./ExperimentSelectorModal-B6P2msT4.js";
@@ -4,7 +4,7 @@ import { $ as normalizeJobState, A as useConcentrationUnits, H as getInjectedPla
4
4
  import { o as useSettingsStore, r as useApi } from "./useApi-CDBq6z23.js";
5
5
  import { t as useExperimentStore } from "./experiment-Y9Iz7KYi.js";
6
6
  import { B as toBioTemplateComponentProps, F as getBioTemplateComponentProps$1, H as toBioTemplateComponentPropsById, Jt as getBioTemplatePresetInfo, L as toBioTemplateComponentBindings, P as getBioTemplateComponentBindings, Qt as getBioTemplatePackInfo, R as toBioTemplateComponentBindingsById, U as toBioTemplateComponentSnippets, V as toBioTemplateComponentPropsByComponent$1, W as toBioTemplateComponentUsage, d as createBioTemplatePresetCollectionFromControls, dn as extractTemplateCollection, i as createBioTemplateControlToolkit, p as createBioTemplatePackCollection, sn as createTemplateCollection, u as createBioTemplatePresetCollection, un as ensureTemplateFromCollection, z as toBioTemplateComponentImports } from "./templates-Cr-48-u2.js";
7
- import { computed, effectScope, getCurrentScope, inject, onMounted, onScopeDispose, onUnmounted, provide, reactive, ref, shallowRef, toRaw, toValue, unref, watch } from "vue";
7
+ import { computed, effectScope, getCurrentScope, inject, onMounted, onScopeDispose, onUnmounted, provide, reactive, readonly, ref, shallowRef, toRaw, toValue, unref, watch } from "vue";
8
8
  //#region src/composables/useSortedItems.ts
9
9
  /** Shared sorting for SDK tables and lists with stable empty-value handling. */
10
10
  function useSortedItems(options) {
@@ -147,6 +147,109 @@ function useTheme() {
147
147
  };
148
148
  }
149
149
  //#endregion
150
+ //#region src/composables/usePresenceHeartbeat.ts
151
+ var PRESENCE_CLIENT_ID_KEY = "mint:presence:client-id";
152
+ var DEFAULT_HEARTBEAT_INTERVAL_MS = 3e4;
153
+ var pageFallbackClientId = null;
154
+ function defaultClientId() {
155
+ if (typeof globalThis.crypto?.randomUUID === "function") return globalThis.crypto.randomUUID();
156
+ return `presence-${Date.now()}-${Math.random().toString(36).slice(2)}`;
157
+ }
158
+ function defaultStorage() {
159
+ try {
160
+ return globalThis.sessionStorage ?? null;
161
+ } catch {
162
+ return null;
163
+ }
164
+ }
165
+ function defaultDocument() {
166
+ return typeof globalThis.document === "undefined" ? null : globalThis.document;
167
+ }
168
+ /** Return the stable id shared by presence callers in the current browser tab. */
169
+ function getPresenceClientId(storage = defaultStorage(), createClientId = defaultClientId) {
170
+ try {
171
+ const stored = storage?.getItem(PRESENCE_CLIENT_ID_KEY);
172
+ if (stored) return stored;
173
+ } catch {}
174
+ const nextClientId = createClientId();
175
+ try {
176
+ if (storage) {
177
+ storage.setItem(PRESENCE_CLIENT_ID_KEY, nextClientId);
178
+ return nextClientId;
179
+ }
180
+ } catch {}
181
+ if (!pageFallbackClientId) pageFallbackClientId = nextClientId;
182
+ return pageFallbackClientId;
183
+ }
184
+ /** Report one visible integrated MINT browser tab to the platform presence tracker. */
185
+ function usePresenceHeartbeat(options) {
186
+ const presenceDocument = options.document === void 0 ? defaultDocument() : options.document;
187
+ const clientId = getPresenceClientId(options.storage === void 0 ? defaultStorage() : options.storage, options.createClientId ?? defaultClientId);
188
+ const intervalMs = options.intervalMs ?? DEFAULT_HEARTBEAT_INTERVAL_MS;
189
+ const scheduleInterval = options.setInterval ?? ((callback, delayMs) => globalThis.setInterval(callback, delayMs));
190
+ const cancelInterval = options.clearInterval ?? ((intervalId) => {
191
+ globalThis.clearInterval(intervalId);
192
+ });
193
+ if (intervalMs <= 0) throw new Error("Presence heartbeat interval must be positive");
194
+ const api = options.send ? null : useApi({ baseUrl: "/api" });
195
+ const send = options.send ?? ((payload) => api.post("/presence/heartbeat", payload));
196
+ const enabled = computed(() => toValue(options.enabled ?? true));
197
+ const scope = computed(() => toValue(options.scope)?.trim() ?? "");
198
+ const isRunning = ref(false);
199
+ let intervalId = null;
200
+ let sending = false;
201
+ let mounted = false;
202
+ function isVisible() {
203
+ return presenceDocument?.visibilityState !== "hidden";
204
+ }
205
+ function shouldRun() {
206
+ return mounted && enabled.value && Boolean(scope.value) && isVisible();
207
+ }
208
+ async function sendNow() {
209
+ if (!shouldRun() || sending) return;
210
+ sending = true;
211
+ try {
212
+ await send({
213
+ client_id: clientId,
214
+ scope: scope.value
215
+ });
216
+ } catch {} finally {
217
+ sending = false;
218
+ }
219
+ }
220
+ function stop() {
221
+ if (intervalId !== null) cancelInterval(intervalId);
222
+ intervalId = null;
223
+ isRunning.value = false;
224
+ }
225
+ function start() {
226
+ stop();
227
+ if (!shouldRun()) return;
228
+ isRunning.value = true;
229
+ sendNow();
230
+ intervalId = scheduleInterval(() => void sendNow(), intervalMs);
231
+ }
232
+ function handleVisibilityChange() {
233
+ start();
234
+ }
235
+ watch([enabled, scope], start);
236
+ onMounted(() => {
237
+ mounted = true;
238
+ presenceDocument?.addEventListener("visibilitychange", handleVisibilityChange);
239
+ start();
240
+ });
241
+ onScopeDispose(() => {
242
+ mounted = false;
243
+ presenceDocument?.removeEventListener("visibilitychange", handleVisibilityChange);
244
+ stop();
245
+ });
246
+ return {
247
+ clientId,
248
+ isRunning: readonly(isRunning),
249
+ sendNow
250
+ };
251
+ }
252
+ //#endregion
150
253
  //#region src/composables/useAppExperiment.ts
151
254
  var APP_EXPERIMENT_KEY = Symbol("app-experiment");
152
255
  /**
@@ -4934,6 +5037,6 @@ function useProtocolTemplates() {
4934
5037
  };
4935
5038
  }
4936
5039
  //#endregion
4937
- export { compareSortValues as $, useFileImport as A, useDoseCalculator as B, getSampleGroupParentPath as C, detectDelimiter as D, hslToHex as E, extractSampleNamesFromDesignData as F, useMobileSupportGate as G, useJobsStatusTray as H, extractSampleOptionsFromDesignData as I, useTheme as J, APP_EXPERIMENT_KEY as K, unwrapExperimentDesignData as L, extractSamplesFromDesignData as M, useAutoGroup as N, parseDelimitedText as O, parseCSV as P, useTextSearch as Q, DEFAULT_COLORS as R, getSampleGroupMajorPrefix as S, hexToHsl as T, usePluginJobCenter as U, combinePluginJobSources as V, DEFAULT_MOBILE_VIEWPORT_QUERY as W, candidateMatchesSearch as X, useToast as Y, normalizeSearchQuery as Z, useScheduleDrag as _, useReagentSeries as a, useExpansionSet as b, useBioTemplatePresetWorkspace as c, getBioTemplateComponentProps as d, useSortedItems as et, toBioTemplateComponentPropsByComponent as f, useExperimentSave as g, useTemplateCollection as h, generateDilutionSeries as i, validateImportFile as j, readFileAsText as k, useBioTemplatePackWorkspace as l, useBioTemplateControls as m, DEFAULT_PRESETS as n, useGroupAssignment as o, useBioTemplateComponents as p, useAppExperiment as q, DEFAULT_UNITS as r, useRackEditor as s, useProtocolTemplates as t, useBioTemplateWorkspace as u, useExperimentSamples as v, deriveShade as w, useSampleGroups as x, useExperimentData as y, useWellPlateEditor as z };
5040
+ export { normalizeSearchQuery as $, useFileImport as A, useDoseCalculator as B, getSampleGroupParentPath as C, detectDelimiter as D, hslToHex as E, extractSampleNamesFromDesignData as F, useMobileSupportGate as G, useJobsStatusTray as H, extractSampleOptionsFromDesignData as I, getPresenceClientId as J, APP_EXPERIMENT_KEY as K, unwrapExperimentDesignData as L, extractSamplesFromDesignData as M, useAutoGroup as N, parseDelimitedText as O, parseCSV as P, candidateMatchesSearch as Q, DEFAULT_COLORS as R, getSampleGroupMajorPrefix as S, hexToHsl as T, usePluginJobCenter as U, combinePluginJobSources as V, DEFAULT_MOBILE_VIEWPORT_QUERY as W, useTheme as X, usePresenceHeartbeat as Y, useToast as Z, useScheduleDrag as _, useReagentSeries as a, useExpansionSet as b, useBioTemplatePresetWorkspace as c, getBioTemplateComponentProps as d, useTextSearch as et, toBioTemplateComponentPropsByComponent as f, useExperimentSave as g, useTemplateCollection as h, generateDilutionSeries as i, validateImportFile as j, readFileAsText as k, useBioTemplatePackWorkspace as l, useBioTemplateControls as m, DEFAULT_PRESETS as n, useSortedItems as nt, useGroupAssignment as o, useBioTemplateComponents as p, useAppExperiment as q, DEFAULT_UNITS as r, useRackEditor as s, useProtocolTemplates as t, compareSortValues as tt, useBioTemplateWorkspace as u, useExperimentSamples as v, deriveShade as w, useSampleGroups as x, useExperimentData as y, useWellPlateEditor as z };
4938
5041
 
4939
- //# sourceMappingURL=useProtocolTemplates-D3IZKLqr.js.map
5042
+ //# sourceMappingURL=useProtocolTemplates-CIzDGj2R.js.map