@morscherlab/mint-sdk 1.1.9 → 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.
- package/dist/__tests__/components/AppTopBarPresence.test.d.ts +1 -0
- package/dist/__tests__/composables/usePresenceHeartbeat.test.d.ts +1 -0
- package/dist/components/AutoGroupModal.adapter.d.ts +12 -1
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +2 -2
- package/dist/components/index.js +1 -1
- package/dist/{components-BbtUpCTv.js → components-DjJsjKqe.js} +43 -18
- package/dist/components-DjJsjKqe.js.map +1 -0
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/index.js +2 -2
- package/dist/composables/usePresenceHeartbeat.d.ts +44 -0
- package/dist/index.js +3 -3
- package/dist/install.js +1 -1
- package/dist/{useProtocolTemplates-BWfNaynA.js → useProtocolTemplates-CIzDGj2R.js} +112 -10
- package/dist/useProtocolTemplates-CIzDGj2R.js.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/components/AppTopBarPresence.test.ts +47 -0
- package/src/__tests__/components/AutoGroupModal.adapter.test.ts +31 -1
- package/src/__tests__/components/SampleSelector.test.ts +35 -0
- package/src/__tests__/composables/autoGroup/groupByOrder.test.ts +31 -2
- package/src/__tests__/composables/usePresenceHeartbeat.test.ts +147 -0
- package/src/components/AppTopBar.vue +6 -0
- package/src/components/AutoGroupModal.adapter.ts +52 -1
- package/src/components/AutoGroupModal.vue +6 -4
- package/src/composables/index.ts +7 -0
- package/src/composables/useAutoGroup.ts +11 -7
- package/src/composables/usePresenceHeartbeat.ts +194 -0
- package/dist/components-BbtUpCTv.js.map +0 -1
- package/dist/useProtocolTemplates-BWfNaynA.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AutoGroupResult, ColumnInfo, ColumnRole } from '../types/auto-group';
|
|
1
|
+
import { AutoGroupResult, ClassSchema, ColumnInfo, ColumnRole } from '../types/auto-group';
|
|
2
2
|
import { SampleGroup } from '../types';
|
|
3
3
|
import { FieldRecipeGroup, QcRoute, SmartGroupField } from './SmartGroupFieldRecipe.groups';
|
|
4
4
|
import { ManualSample } from './SmartGroupManual.cohorts';
|
|
@@ -22,6 +22,17 @@ export declare function engineFieldsToCards(columns: ColumnInfo[], groupBy: read
|
|
|
22
22
|
enabled: boolean[];
|
|
23
23
|
layers: (number | null)[];
|
|
24
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* Build the batch-wide field recipe from every class schema. The active schema
|
|
27
|
+
* stays first for a stable card order; fields and enabled hierarchy layers that
|
|
28
|
+
* only exist in another token-length/class split are appended instead of being
|
|
29
|
+
* hidden from the controlled UI.
|
|
30
|
+
*/
|
|
31
|
+
export declare function engineSchemasToCards(schemas: Record<string, ClassSchema>, activeClassKey: string): {
|
|
32
|
+
fields: SmartGroupField[];
|
|
33
|
+
enabled: boolean[];
|
|
34
|
+
layers: (number | null)[];
|
|
35
|
+
};
|
|
25
36
|
/** Map engine sample groups to the live preview rail shape. */
|
|
26
37
|
export declare function engineGroupsToRail(groups: SampleGroup[]): FieldRecipeGroup[];
|
|
27
38
|
/** Map the Field Recipe QC label to the engine's class disposition routing. */
|
|
@@ -5,8 +5,8 @@ declare const _default: import('vue').DefineComponent<SmartGroupFieldRecipeProps
|
|
|
5
5
|
cancel: () => any;
|
|
6
6
|
close: () => any;
|
|
7
7
|
move: (index: number, direction: "up" | "down") => any;
|
|
8
|
-
manual: () => any;
|
|
9
8
|
apply: (payload: FieldRecipeApplyPayload) => any;
|
|
9
|
+
manual: () => any;
|
|
10
10
|
"update:route": (route: QcRoute) => any;
|
|
11
11
|
"csv-file": (file: File) => any;
|
|
12
12
|
"download-template": () => any;
|
|
@@ -16,8 +16,8 @@ declare const _default: import('vue').DefineComponent<SmartGroupFieldRecipeProps
|
|
|
16
16
|
onCancel?: (() => any) | undefined;
|
|
17
17
|
onClose?: (() => any) | undefined;
|
|
18
18
|
onMove?: ((index: number, direction: "up" | "down") => any) | undefined;
|
|
19
|
-
onManual?: (() => any) | undefined;
|
|
20
19
|
onApply?: ((payload: FieldRecipeApplyPayload) => any) | undefined;
|
|
20
|
+
onManual?: (() => any) | undefined;
|
|
21
21
|
"onUpdate:route"?: ((route: QcRoute) => any) | undefined;
|
|
22
22
|
"onCsv-file"?: ((file: File) => any) | undefined;
|
|
23
23
|
"onDownload-template"?: (() => any) | undefined;
|
package/dist/components/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { f as BaseModal_default, m as BaseButton_default } from "../experiment-utils-CLnzPPq5.js";
|
|
2
2
|
import { a as BaseSelect_default, i as BasePill_default, n as Skeleton_default, s as BaseInput_default, t as EmptyState_default } from "../EmptyState-p90quq8Z.js";
|
|
3
3
|
import { At as BaseCheckbox_default, Ct as DatePicker_default, Dt as BaseSlider_default, It as BaseTextarea_default, L as GeneratedPathInput_default, M as SequenceInput_default, O as ConcentrationInput_default, Ot as BaseRadioGroup_default, P as FormulaInput_default, at as TagsInput_default, it as NumberInput_default, j as MoleculeInput_default, jt as Tooltip_default, k as UnitInput_default, kt as BaseToggle_default, nt as AlertBox_default, ot as TimePicker_default, rt as FileUploader_default, tt as DateTimePicker_default, wt as MultiSelect_default, 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, Ct as AppPluginSwitcher_default, Dt as ThemeToggle_default, 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, St as AppTopBar_default, 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, _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, dt as LoadingSpinner_default, et as ReagentList_default, gt as MobileSupportGate_default, 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, n as FitPanel_default, nt as SampleLegend_default, o as TimeRangeInput_default, ot as GeneratedPluginView_default, 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, 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-
|
|
4
|
+
import { $ as SmartGroupFieldRecipe_default, A as ProtocolStepEditor_default, At as AppToastContainer_default, B as Breadcrumb_default, Ct as AppPluginSwitcher_default, Dt as ThemeToggle_default, 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, St as AppTopBar_default, 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, _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, dt as LoadingSpinner_default, et as ReagentList_default, gt as MobileSupportGate_default, 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, n as FitPanel_default, nt as SampleLegend_default, o as TimeRangeInput_default, ot as GeneratedPluginView_default, 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, 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
6
|
import { r as ConfirmDialog_default, t as ExperimentPopover_default } from "../ExperimentPopover-tLwJ7XF4.js";
|
|
7
7
|
import { r as ExperimentCodeBadge_default, t as ExperimentSelectorModal_default } from "../ExperimentSelectorModal-B6P2msT4.js";
|
|
@@ -4,7 +4,7 @@ import { a as BaseSelect_default, i as BasePill_default, n as Skeleton_default,
|
|
|
4
4
|
import { A as useConcentrationUnits, At as BaseCheckbox_default, Ct as DatePicker_default, Dt as BaseSlider_default, Ft as shift, H as getInjectedPlatformContext, I as useChemicalFormula, It as BaseTextarea_default, L as GeneratedPathInput_default, M as SequenceInput_default, Mt as computePosition, Nt as flip, O as ConcentrationInput_default, Ot as BaseRadioGroup_default, P as FormulaInput_default, Pt as offset, Q as normalizeJobPercent, R as _plugin_vue_export_helper_default, T as getDefaultControlView, Tt as useListSelection, W as resolveCurrentExperimentId, Z as jobStatusLabel, _ as controlsToFormSchema, at as TagsInput_default, ct as compareTime, f as resolveControlModel, ft as formatDuration, g as mergeControlWorkspaceOptions, h as controlValuesToComponentProps, it as NumberInput_default, j as MoleculeInput_default, jt as Tooltip_default, k as UnitInput_default, kt as BaseToggle_default, lt as durationMinutes, m as controlValuesToComponentBindingsById, 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, tt as DateTimePicker_default, u as useControlWorkspace, w as controlsToViewItems, wt as MultiSelect_default, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas, z as ArtifactSelectorModal_default } from "./useControlSchema-BMVb2XIQ.js";
|
|
5
5
|
import { a as pickExistingRecordKeys, c as normalizeItemInput, i as formSchemaFieldNames, l as normalizeLabelItemInput, o as recordValuesEqualForKeys, r as FormFieldRendererInternal_default, s as FormField_default, t as SettingsModal_default } from "./SettingsModal-D7LFUokT.js";
|
|
6
6
|
import { t as useDropdownState } from "./useDropdownState-DSb3BC3N.js";
|
|
7
|
-
import { B as useDoseCalculator, C as getSampleGroupParentPath, G as useMobileSupportGate,
|
|
7
|
+
import { B as useDoseCalculator, C as getSampleGroupParentPath, G as useMobileSupportGate, K as APP_EXPERIMENT_KEY, N as useAutoGroup, P as parseCSV, R as DEFAULT_COLORS, S as getSampleGroupMajorPrefix, U as usePluginJobCenter, 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, et as useTextSearch, k as readFileAsText, l as useBioTemplatePackWorkspace, n as DEFAULT_PRESETS, nt as useSortedItems, o as useGroupAssignment, q as useAppExperiment, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, v as useExperimentSamples, x as useSampleGroups, y as useExperimentData, z as useWellPlateEditor } from "./useProtocolTemplates-CIzDGj2R.js";
|
|
8
8
|
import { r as useApi } from "./useApi-CDBq6z23.js";
|
|
9
9
|
import { i as usePlatformContext, t as useFormBuilder } from "./useFormBuilder-DG3HOFGA.js";
|
|
10
10
|
import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "./analysisArtifactTypes-DQ0MjwHZ.js";
|
|
@@ -3218,6 +3218,10 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
3218
3218
|
const settingsOpen = ref(false);
|
|
3219
3219
|
const { isIntegrated, plugin } = usePlatformContext();
|
|
3220
3220
|
const isStandalone = computed(() => !isIntegrated.value);
|
|
3221
|
+
usePresenceHeartbeat({
|
|
3222
|
+
enabled: isIntegrated,
|
|
3223
|
+
scope: computed(() => plugin.value?.id || plugin.value?.name || "")
|
|
3224
|
+
});
|
|
3221
3225
|
const appExperiment = inject(APP_EXPERIMENT_KEY, null);
|
|
3222
3226
|
const canBindExperiment = computed(() => plugin.value?.plugin_type !== "static");
|
|
3223
3227
|
const pluginIcon = computed(() => {
|
|
@@ -10408,23 +10412,45 @@ function candidateColumns(columns, groupBy) {
|
|
|
10408
10412
|
return columns.filter((c) => c.role === "factor" || c.role === "replicate" || enabled.has(c.index));
|
|
10409
10413
|
}
|
|
10410
10414
|
/**
|
|
10411
|
-
*
|
|
10412
|
-
*
|
|
10413
|
-
*
|
|
10415
|
+
* Build the batch-wide field recipe from every class schema. The active schema
|
|
10416
|
+
* stays first for a stable card order; fields and enabled hierarchy layers that
|
|
10417
|
+
* only exist in another token-length/class split are appended instead of being
|
|
10418
|
+
* hidden from the controlled UI.
|
|
10414
10419
|
*/
|
|
10415
|
-
function
|
|
10416
|
-
const
|
|
10420
|
+
function engineSchemasToCards(schemas, activeClassKey) {
|
|
10421
|
+
const entries = Object.entries(schemas);
|
|
10422
|
+
const active = entries.find(([key]) => key === activeClassKey);
|
|
10423
|
+
const ordered = active ? [active, ...entries.filter(([key]) => key !== activeClassKey)] : entries;
|
|
10424
|
+
const candidates = /* @__PURE__ */ new Map();
|
|
10425
|
+
const enabledOrder = [];
|
|
10426
|
+
const enabled = /* @__PURE__ */ new Set();
|
|
10427
|
+
for (const [, schema] of ordered) {
|
|
10428
|
+
for (const index of schema.groupBy) {
|
|
10429
|
+
const column = schema.columns.find((candidate) => candidate.index === index);
|
|
10430
|
+
if (!column) continue;
|
|
10431
|
+
const identity = column.displayName ?? column.name;
|
|
10432
|
+
if (!enabled.has(identity)) {
|
|
10433
|
+
enabled.add(identity);
|
|
10434
|
+
enabledOrder.push(identity);
|
|
10435
|
+
}
|
|
10436
|
+
}
|
|
10437
|
+
for (const column of candidateColumns(schema.columns, schema.groupBy)) {
|
|
10438
|
+
const identity = column.displayName ?? column.name;
|
|
10439
|
+
if (!candidates.has(identity)) candidates.set(identity, column);
|
|
10440
|
+
}
|
|
10441
|
+
}
|
|
10442
|
+
const cards = [...candidates.entries()];
|
|
10417
10443
|
return {
|
|
10418
|
-
fields:
|
|
10419
|
-
key
|
|
10420
|
-
role: roleLabel(
|
|
10421
|
-
vals:
|
|
10422
|
-
rep:
|
|
10444
|
+
fields: cards.map(([key, column]) => ({
|
|
10445
|
+
key,
|
|
10446
|
+
role: roleLabel(column.role),
|
|
10447
|
+
vals: column.uniqueValues.join(", "),
|
|
10448
|
+
rep: column.role === "replicate"
|
|
10423
10449
|
})),
|
|
10424
|
-
enabled:
|
|
10425
|
-
layers:
|
|
10426
|
-
const
|
|
10427
|
-
return
|
|
10450
|
+
enabled: cards.map(([key]) => enabled.has(key)),
|
|
10451
|
+
layers: cards.map(([key]) => {
|
|
10452
|
+
const position = enabledOrder.indexOf(key);
|
|
10453
|
+
return position === -1 ? null : position + 1;
|
|
10428
10454
|
})
|
|
10429
10455
|
};
|
|
10430
10456
|
}
|
|
@@ -10600,8 +10626,7 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
|
|
|
10600
10626
|
excludeQc.value = value === "exclude";
|
|
10601
10627
|
autoGroup.setClassDispositions((c) => c.kind !== "biological" && c.kind !== "unknown", value === "exclude" ? "exclude" : value === "overlay" ? "overlay" : "group");
|
|
10602
10628
|
}
|
|
10603
|
-
const
|
|
10604
|
-
const fieldCards = computed(() => engineFieldsToCards(autoGroup.fields.value, groupByOrder.value));
|
|
10629
|
+
const fieldCards = computed(() => engineSchemasToCards(autoGroup.schemas.value, autoGroup.activeClassKey.value));
|
|
10605
10630
|
const railGroups = computed(() => engineGroupsToRail(autoGroup.result.value.experimentalGroups ?? autoGroup.groups.value));
|
|
10606
10631
|
const qcSampleCount = computed(() => autoGroup.classes.value.filter((c) => c.kind !== "biological" && c.kind !== "unknown").reduce((acc, c) => acc + c.members.length, 0));
|
|
10607
10632
|
const qcChip = computed(() => qcRouting.value !== "mix" && qcSampleCount.value > 0 ? {
|
|
@@ -18248,4 +18273,4 @@ var components_exports = /* @__PURE__ */ __exportAll({
|
|
|
18248
18273
|
//#endregion
|
|
18249
18274
|
export { SmartGroupFieldRecipe_default as $, ProtocolStepEditor_default as A, AppToastContainer_default as At, Breadcrumb_default as B, estimateSequenceRemainingSeconds as C, AppPluginSwitcher_default as Ct, sequenceSamplesRemaining as D, ThemeToggle_default as Dt, sequenceProgressPercent as E, CollapsibleCard_default as Et, RackEditor_default as F, BaseTabs_default as Ft, AppContainer_default as G, ProgressBar_default as H, BioTemplatePresetWorkspaceView_default as I, ColorSlider_default as It, ComponentBindingRenderer_default as J, DoseDesignWorkspaceView_default as K, BioTemplatePackWorkspaceView_default as L, ReagentEditor_default as M, Calendar_default as Mt, SmartGroupModal_default as N, DropdownButton_default as Nt, ChemicalFormula_default as O, ActionMenu_default as Ot, GroupAssigner_default as P, SegmentedControl_default as Pt, SmartGroupManual_default as Q, BioTemplateExperimentWorkspaceView_default as R, estimateSequenceFinishDate as S, AppTopBar_default as St, formatSequenceRemaining as T, PluginIcon_default as Tt, StatusIndicator_default as U, Avatar_default as V, Divider_default as W, SampleSelector_default as X, ScheduleCalendar_default as Y, AutoGroupModal_default as Z, reconstructLcmsPlateCellsFromSequenceItems as _, AppLayout_default as _t, ResourceCard_default as a, DoseCalculator_default as at, InstrumentAlertLog_default as b, FormActions_default as bt, BatchProgressList_default as c, GeneratedResultRenderer_default as ct, DEFAULT_LCMS_SEQUENCE_COLUMNS as d, LoadingSpinner_default as dt, ReagentList_default as et, basenameFromWindowsPath as f, generatedJobDefaults as ft, lcmsWellIdFromPosition as g, MobileSupportGate_default as gt, inferLcmsPlateTypeFromWellIds as h, PluginWorkspaceView_default as ht, SectionCard_default as i, ExperimentTimeline_default as it, SampleHierarchyTree_default as j, DataFrame_default as jt, ScientificNumber_default as k, IconButton_default as kt, AuditTrail_default as l, GeneratedPlotlyResult_default as lt, extractLcmsSampleName as m, normalizeGeneratedJobInput as mt, FitPanel_default as n, SampleLegend_default as nt, TimeRangeInput_default as o, GeneratedPluginView_default as ot, extractLcmsCommonPrefix as p, generatedJobFormSchema as pt, ControlWorkspaceView_default as q, ArtifactSaveDialog_default as r, WellPlate_default as rt, ExperimentDataViewer_default as s, JobsStatusTray_default as st, components_exports as t, PlateMapEditor_default as tt, LcmsSequenceTable_default as u, ChartContainer_default as ut, InstrumentStatusCard_default as v, AppSidebar_default as vt, formatSequenceEta as w, AppAvatarMenu_default as wt, SequenceProgressBar_default as x, StepWizard_default as xt, InstrumentStateBadge_default as y, FormBuilder_default as yt, BioTemplateRenderer_default as z };
|
|
18250
18275
|
|
|
18251
|
-
//# sourceMappingURL=components-
|
|
18276
|
+
//# sourceMappingURL=components-DjJsjKqe.js.map
|