@morscherlab/mint-sdk 1.0.39 → 1.0.41
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/{ExperimentPopover-DEzCbTqo.js → ExperimentPopover-8A4Rhffp.js} +1 -1
- package/dist/{ExperimentPopover-mzmSfAUp.js → ExperimentPopover-BbPkIFsI.js} +8 -2
- package/dist/ExperimentPopover-BbPkIFsI.js.map +1 -0
- package/dist/{ExperimentSelectorModal-Bn0Hmg07.js → ExperimentSelectorModal-B2qek_YG.js} +91 -46
- package/dist/ExperimentSelectorModal-B2qek_YG.js.map +1 -0
- package/dist/{ExperimentSelectorModal-BAIlIybO.js → ExperimentSelectorModal-BwPbQN1g.js} +1 -1
- package/dist/__tests__/components/AutoGroupModal.preview.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/classKey.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/groupTree.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/tokenLength.test.d.ts +1 -0
- package/dist/components/index.js +3 -3
- package/dist/{components-Cyi0IfRl.js → components-CJ2--4Ex.js} +5606 -5592
- package/dist/components-CJ2--4Ex.js.map +1 -0
- package/dist/composables/autoGroup/classKey.d.ts +1 -0
- package/dist/composables/autoGroup/index.d.ts +2 -1
- package/dist/composables/autoGroup/replicatePreGroup.d.ts +10 -12
- package/dist/composables/autoGroup/tokenLength.d.ts +17 -0
- package/dist/composables/index.js +2 -2
- package/dist/composables/useAutoGroup.d.ts +2 -0
- package/dist/{composables-CFSn4NN3.js → composables-DrE6OcZZ.js} +2 -2
- package/dist/{composables-CFSn4NN3.js.map → composables-DrE6OcZZ.js.map} +1 -1
- package/dist/index.js +5 -5
- package/dist/install.js +3 -3
- package/dist/styles.css +1497 -1453
- package/dist/types/auto-group.d.ts +19 -0
- package/dist/{useProtocolTemplates-CXP2ZosM.js → useProtocolTemplates-BbvlHoPD.js} +218 -90
- package/dist/useProtocolTemplates-BbvlHoPD.js.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/components/AutoGroupModal.preview.test.ts +46 -0
- package/src/__tests__/composables/autoGroup/classKey.test.ts +25 -0
- package/src/__tests__/composables/autoGroup/fingerprint.test.ts +72 -0
- package/src/__tests__/composables/autoGroup/groupTree.test.ts +99 -0
- package/src/__tests__/composables/autoGroup/tokenLength.test.ts +85 -0
- package/src/__tests__/composables/useAutoGroup.test.ts +111 -19
- package/src/components/AutoGroupModal.vue +23 -19
- package/src/components/BaseModal.story.vue +7 -15
- package/src/components/ExperimentDataViewer.vue +1 -0
- package/src/components/ExperimentPopover.vue +6 -4
- package/src/components/ExperimentSelectorModal.vue +30 -3
- package/src/components/IconButton.story.vue +5 -0
- package/src/components/SampleSelector.vue +3 -2
- package/src/components/SampleSelectorSampleRow.vue +4 -2
- package/src/composables/autoGroup/classKey.ts +5 -2
- package/src/composables/autoGroup/columns.ts +2 -2
- package/src/composables/autoGroup/compose.ts +56 -0
- package/src/composables/autoGroup/fingerprint.ts +15 -1
- package/src/composables/autoGroup/index.ts +2 -0
- package/src/composables/autoGroup/replicatePreGroup.ts +34 -0
- package/src/composables/autoGroup/template.ts +2 -2
- package/src/composables/autoGroup/tokenLength.ts +53 -0
- package/src/composables/autoGroup/vocab.json +1 -2
- package/src/composables/useAutoGroup.ts +34 -13
- package/src/styles/components/auto-group-modal.css +7 -11
- package/src/styles/components/button.css +10 -3
- package/src/styles/components/modal.css +3 -0
- package/src/styles/components/sample-selector.css +17 -0
- package/src/styles/variables.css +8 -0
- package/src/types/auto-group.ts +19 -0
- package/dist/ExperimentPopover-mzmSfAUp.js.map +0 -1
- package/dist/ExperimentSelectorModal-Bn0Hmg07.js.map +0 -1
- package/dist/components-Cyi0IfRl.js.map +0 -1
- package/dist/useProtocolTemplates-CXP2ZosM.js.map +0 -1
|
@@ -12,5 +12,6 @@ export { composeTemplate } from './template';
|
|
|
12
12
|
export type { TemplateOptions } from './template';
|
|
13
13
|
export { DEFAULT_COLORS, QC_OVERLAY_COLOR } from './colors';
|
|
14
14
|
export { classKey } from './classKey';
|
|
15
|
-
export { stripReplicateTokens, preGroupReplicates, expandGroupsWithReplicates, } from './replicatePreGroup';
|
|
15
|
+
export { stripReplicateTokens, preGroupReplicates, expandGroupsWithReplicates, expandTreeWithReplicates, } from './replicatePreGroup';
|
|
16
16
|
export type { ReplicatePreGrouping } from './replicatePreGroup';
|
|
17
|
+
export { splitByTokenLength } from './tokenLength';
|
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Replicate pre-grouping.
|
|
3
|
-
*
|
|
4
|
-
* Strip the replicate / injection-number markers from each sample's name, then
|
|
5
|
-
* collapse samples that share a base name. Those samples ARE replicates of one
|
|
6
|
-
* another by definition; the remaining unique base names are what the rest of
|
|
7
|
-
* the pipeline (tokenize → classify → schema → compose) should operate on.
|
|
8
|
-
*
|
|
9
|
-
* This pre-pass replaces the older "treat every sample as independent, then
|
|
10
|
-
* infer replicate columns" approach. Identifying replicate-equivalence by name
|
|
11
|
-
* before tokenisation removes a class of fragile cardinality heuristics.
|
|
12
|
-
*/
|
|
1
|
+
import { TreeNode } from '../../types/componentLabTypes';
|
|
13
2
|
/**
|
|
14
3
|
* Iteratively strip every replicate / injection-number marker from `name`.
|
|
15
4
|
* Each pattern is applied repeatedly until it stops matching, so a sample like
|
|
@@ -36,3 +25,12 @@ export declare function preGroupReplicates(samples: string[]): ReplicatePreGroup
|
|
|
36
25
|
export declare function expandGroupsWithReplicates<G extends {
|
|
37
26
|
samples: string[];
|
|
38
27
|
}>(groups: G[], preGrouping: ReplicatePreGrouping): G[];
|
|
28
|
+
/**
|
|
29
|
+
* Expand a group hierarchy (built over base names) back to original samples.
|
|
30
|
+
* Each leaf node's `label` is a base name; it is replaced by one leaf per
|
|
31
|
+
* original sample that collapsed onto it (sharing the leaf's injection badge,
|
|
32
|
+
* since collapsed replicates have identical base tokens). Every ancestor's
|
|
33
|
+
* `badge` (sample count) is recomputed from the expanded leaf count so the tree
|
|
34
|
+
* agrees with the flat groups produced by `expandGroupsWithReplicates`.
|
|
35
|
+
*/
|
|
36
|
+
export declare function expandTreeWithReplicates(nodes: TreeNode[], preGrouping: ReplicatePreGrouping): TreeNode[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SampleClass } from '../../types/auto-group';
|
|
2
|
+
/**
|
|
3
|
+
* Token-length pre-grouping.
|
|
4
|
+
*
|
|
5
|
+
* After type classification (`detectClass`), members of one class can still have
|
|
6
|
+
* different token counts — e.g. a Plasma batch where some names carry an extra
|
|
7
|
+
* descriptor field. Splitting each class so every member shares the same token
|
|
8
|
+
* length is the "group same token-length sample, then extract tokens inside the
|
|
9
|
+
* group" step: it guarantees `buildClassSchema` sees a rectangular token matrix,
|
|
10
|
+
* so column index N means the same field for every sample in the group.
|
|
11
|
+
*
|
|
12
|
+
* Each output class carries `tokenLength`; `classKey` folds that into the schema
|
|
13
|
+
* key so length-split classes never collide. The label only gains a `· N fields`
|
|
14
|
+
* suffix when a (kind, subKind) genuinely spans more than one length, keeping the
|
|
15
|
+
* common (uniform) case visually identical to before.
|
|
16
|
+
*/
|
|
17
|
+
export declare function splitByTokenLength(classes: SampleClass[], tokenized: string[][]): SampleClass[];
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "../BaseSelect-ekgr9fDo.js";
|
|
2
2
|
import { $ as parseTime, A as useConcentrationUnits, C as controlsToViewIds, D as getTypeDefault, E as getFieldRegistryEntry, F as ATOMIC_WEIGHTS, G as findAvailableSlots, H as addMinutes, I as useChemicalFormula, J as formatTime, K as findNearestTimeSlotIndex, N as useSequenceUtils, Q as isTimeInRange, S as controlsToTopBarSettingsConfig, T as getDefaultControlView, U as compareTime, W as durationMinutes, X as fromMinutes, Y as formatTimeSlot, Z as generateTimeSlots, _ as controlsToFormSchema, a as defineDoseCalculatorControlProps, b as controlsToSettingsSchema, c as defineWellPlateDoseComponentBindings, d as defineControlModel, et as rangesOverlap, h as controlValuesToComponentProps, i as useControlSchema, l as defineWellPlateDoseControlProps, m as controlValuesToComponentBindingsById, n as defineControls, nt as toMinutes, o as defineDoseDesignControlModel, ot as useListSelection, p as controlValuesToComponentBindings, q as formatDuration, r as getControlDefaults, rt as useTimeUtils, s as defineWellPlateControlProps, st as useSelectionLimit, t as defineControlComponentBindings, tt as snapToSlot, u as useControlWorkspace, v as controlsToSectionFormSchema, w as controlsToViewItems, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas } from "../useControlSchema-BZNdalmL.js";
|
|
3
3
|
import { t as useEventListener } from "../useEventListener-CfVkP9Xz.js";
|
|
4
|
-
import { B as APP_EXPERIMENT_KEY, C as useExpansionSet, G as normalizeSearchQuery, H as useTheme, I as useWellPlateEditor, J as useSortedItems, K as useTextSearch, L as useDoseCalculator, M as
|
|
4
|
+
import { A as extractSampleNamesFromDesignData, B as APP_EXPERIMENT_KEY, C as useSampleGroups, D as extractSamplesFromDesignData, F as useExpansionSet, G as normalizeSearchQuery, H as useTheme, I as useWellPlateEditor, J as useSortedItems, K as useTextSearch, L as useDoseCalculator, M as unwrapExperimentDesignData, N as DEFAULT_COLORS, O as useAutoGroup, R as DEFAULT_MOBILE_VIEWPORT_QUERY, U as useToast, V as useAppExperiment, W as candidateMatchesSearch, _ as useScheduleDrag, a as useReagentSeries, c as useBioTemplatePresetWorkspace, d as getBioTemplateComponentProps, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, j as extractSampleOptionsFromDesignData, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, o as useGroupAssignment, p as useBioTemplateComponents, q as compareSortValues, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, u as useBioTemplateWorkspace, v as useExperimentSamples, y as useExperimentData, z as useMobileSupportGate } from "../useProtocolTemplates-BbvlHoPD.js";
|
|
5
5
|
import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "../useFormBuilder-DKekvXRs.js";
|
|
6
6
|
import { a as SORT_OPTIONS, c as formatExperimentStatus, i as EXPERIMENT_STATUS_VARIANT_MAP, l as getExperimentStatusVariant, n as EXPERIMENT_STATUS_LABELS, o as datePresetToISO, r as EXPERIMENT_STATUS_OPTIONS, s as formatExperimentDate, t as DATE_PRESET_OPTIONS, u as resolveExperimentCode } from "../experiment-utils-Bfa7CwPU.js";
|
|
7
7
|
import { i as useApi, n as useDebouncedWatch, r as useRequestSyncState, t as useExperimentSelector } from "../useExperimentSelector-DdCy5VNv.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-CNbPQNID.js";
|
|
9
|
-
import { A as useCommandHistory, C as parseDelimitedText, D as createPluginResourceClient, E as validateImportFile, F as useAuth, M as useAsync, N as useAsyncBatch, O as useResourceCrud, P as usePasskey, S as detectDelimiter, T as useFileImport, _ as useWellPlateAdapter, a as pluginFormDataFromPayload, b as wellIdToCoordinate, c as usePluginClient, d as resolvePluginBaseUrl, f as runWellPlateValidation, g as createWellPlateWells, h as createRowConditions, i as getPluginPageSelectorItems, j as usePluginConfig, k as useOptimisticMutation, l as usePluginSettings, m as createColumnConditions, n as downloadBlob, o as uploadPluginEndpoint, p as useWellPlateValidation, r as downloadPluginEndpoint, s as useCurrentExperiment, t as createPluginClient, u as buildPluginEndpointUrl, v as coordinateToWellId, w as readFileAsText, x as wellIdsInRectangle, y as useWellPainting } from "../composables-
|
|
9
|
+
import { A as useCommandHistory, C as parseDelimitedText, D as createPluginResourceClient, E as validateImportFile, F as useAuth, M as useAsync, N as useAsyncBatch, O as useResourceCrud, P as usePasskey, S as detectDelimiter, T as useFileImport, _ as useWellPlateAdapter, a as pluginFormDataFromPayload, b as wellIdToCoordinate, c as usePluginClient, d as resolvePluginBaseUrl, f as runWellPlateValidation, g as createWellPlateWells, h as createRowConditions, i as getPluginPageSelectorItems, j as usePluginConfig, k as useOptimisticMutation, l as usePluginSettings, m as createColumnConditions, n as downloadBlob, o as uploadPluginEndpoint, p as useWellPlateValidation, r as downloadPluginEndpoint, s as useCurrentExperiment, t as createPluginClient, u as buildPluginEndpointUrl, v as coordinateToWellId, w as readFileAsText, x as wellIdsInRectangle, y as useWellPainting } from "../composables-DrE6OcZZ.js";
|
|
10
10
|
export { APP_EXPERIMENT_KEY, ATOMIC_WEIGHTS, 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, buildPluginEndpointUrl, candidateMatchesSearch, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, coordinateToWellId, createColumnConditions, createPluginClient, createPluginResourceClient, createRowConditions, createWellPlateWells, datePresetToISO, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, evaluateCondition, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlSchema, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getPluginPageSelectorItems, getTypeDefault, isTimeInRange, normalizeSearchQuery, parseDelimitedText, parseTime, pluginFormDataFromPayload, rangesOverlap, readFileAsText, requireBioTemplateControlSchema, resolveExperimentCode, resolvePluginBaseUrl, runWellPlateValidation, snapToSlot, toBioTemplateComponentBindings, toBioTemplateComponentBindingsById, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, toMinutes, unwrapExperimentDesignData, uploadPluginEndpoint, 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, useGroupAssignment, useListSelection, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePluginClient, usePluginConfig, usePluginSettings, useProtocolTemplates, useRackEditor, useReagentSeries, useRequestSyncState, useResourceCrud, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateImportFile, wellIdToCoordinate, wellIdsInRectangle };
|
|
@@ -30,6 +30,7 @@ export declare function useAutoGroup(): {
|
|
|
30
30
|
members: number[];
|
|
31
31
|
classTagPositions: number[];
|
|
32
32
|
disposition: ClassDisposition;
|
|
33
|
+
tokenLength?: number | undefined;
|
|
33
34
|
}[], SampleClass[] | {
|
|
34
35
|
kind: import('../types/auto-group').SampleClassKind;
|
|
35
36
|
label: string;
|
|
@@ -37,6 +38,7 @@ export declare function useAutoGroup(): {
|
|
|
37
38
|
members: number[];
|
|
38
39
|
classTagPositions: number[];
|
|
39
40
|
disposition: ClassDisposition;
|
|
41
|
+
tokenLength?: number | undefined;
|
|
40
42
|
}[]>;
|
|
41
43
|
schemas: import('vue').Ref<Record<string, ClassSchema>, Record<string, ClassSchema>>;
|
|
42
44
|
activeClassKey: import('vue').Ref<string, string>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as resolveCurrentExperimentId, b as currentExperimentFromContext, x as getInjectedPlatformContext } from "./useProtocolTemplates-
|
|
1
|
+
import { S as resolveCurrentExperimentId, b as currentExperimentFromContext, x as getInjectedPlatformContext } from "./useProtocolTemplates-BbvlHoPD.js";
|
|
2
2
|
import { r as useSettingsStore, t as useAuthStore } from "./auth-DZAwEeis.js";
|
|
3
3
|
import { i as usePlatformContext } from "./useFormBuilder-DKekvXRs.js";
|
|
4
4
|
import { i as useApi, r as useRequestSyncState } from "./useExperimentSelector-DdCy5VNv.js";
|
|
@@ -1670,4 +1670,4 @@ function useCurrentExperiment(options = {}) {
|
|
|
1670
1670
|
//#endregion
|
|
1671
1671
|
export { useCommandHistory as A, parseDelimitedText as C, createPluginResourceClient as D, validateImportFile as E, useAuth as F, useAsync as M, useAsyncBatch as N, useResourceCrud as O, usePasskey as P, detectDelimiter as S, useFileImport as T, useWellPlateAdapter as _, pluginFormDataFromPayload as a, wellIdToCoordinate as b, usePluginClient as c, resolvePluginBaseUrl as d, runWellPlateValidation as f, createWellPlateWells as g, createRowConditions as h, getPluginPageSelectorItems as i, usePluginConfig as j, useOptimisticMutation as k, usePluginSettings as l, createColumnConditions as m, downloadBlob as n, uploadPluginEndpoint as o, useWellPlateValidation as p, downloadPluginEndpoint as r, useCurrentExperiment as s, createPluginClient as t, buildPluginEndpointUrl as u, coordinateToWellId as v, readFileAsText as w, wellIdsInRectangle as x, useWellPainting as y };
|
|
1672
1672
|
|
|
1673
|
-
//# sourceMappingURL=composables-
|
|
1673
|
+
//# sourceMappingURL=composables-DrE6OcZZ.js.map
|