@morscherlab/mint-sdk 1.1.8 → 1.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/components/RetiredStyles.test.d.ts +1 -0
- package/dist/__tests__/composables/autoGroup/groupByOrder.test.d.ts +1 -0
- package/dist/__tests__/composables/useSampleGroups.tree.test.d.ts +1 -0
- package/dist/components/AppTopBar.vue.d.ts +6 -11
- package/dist/components/AutoGroupModal.adapter.d.ts +22 -7
- package/dist/components/PluginIcon.vue.d.ts +2 -2
- package/dist/components/PluginWorkspaceView.props.d.ts +5 -7
- package/dist/components/PluginWorkspaceView.vue.d.ts +0 -3
- package/dist/components/SampleSelector.groups.d.ts +7 -7
- package/dist/components/SampleSelector.selection.d.ts +6 -12
- package/dist/components/SampleSelector.tree.d.ts +39 -0
- package/dist/components/SampleSelectorGroupNode.vue.d.ts +9 -0
- package/dist/components/SmartGroup.types.d.ts +5 -0
- package/dist/components/SmartGroupFieldRecipe.groups.d.ts +3 -2
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +2 -0
- package/dist/components/index.js +1 -1
- package/dist/{components-CDomhGSj.js → components-HXV-ZkBg.js} +939 -948
- package/dist/components-HXV-ZkBg.js.map +1 -0
- package/dist/composables/index.d.ts +1 -1
- package/dist/composables/index.js +1 -1
- package/dist/composables/useAutoGroup.d.ts +3 -0
- package/dist/composables/usePlatformContext.d.ts +3 -0
- package/dist/composables/useSampleGroups.d.ts +25 -0
- package/dist/index.js +2 -2
- package/dist/install.js +1 -1
- package/dist/styles.css +130 -557
- package/dist/types/platform.d.ts +1 -0
- package/dist/{useProtocolTemplates-BMt0LlXf.js → useProtocolTemplates-D3IZKLqr.js} +198 -24
- package/dist/useProtocolTemplates-D3IZKLqr.js.map +1 -0
- package/dist/utils/pluginIcon.d.ts +1 -1
- package/dist/utils/sampleGroupPath.d.ts +6 -0
- package/package.json +1 -1
- package/src/__tests__/components/AppAvatarMenu.test.ts +11 -0
- package/src/__tests__/components/AppTopBar.test.ts +84 -10
- package/src/__tests__/components/AppTopBarPageSelector.test.ts +1 -1
- package/src/__tests__/components/AutoGroupModal.adapter.test.ts +47 -7
- package/src/__tests__/components/PluginIcon.test.ts +19 -0
- package/src/__tests__/components/PluginWorkspaceView.test.ts +8 -0
- package/src/__tests__/components/RetiredStyles.test.ts +82 -0
- package/src/__tests__/components/SampleSelector.drag.test.ts +26 -0
- package/src/__tests__/components/SampleSelector.groups.test.ts +19 -6
- package/src/__tests__/components/SampleSelector.selection.test.ts +9 -23
- package/src/__tests__/components/SampleSelector.test.ts +35 -0
- package/src/__tests__/components/SmartGroupFieldRecipe.groups.test.ts +5 -0
- package/src/__tests__/composables/autoGroup/compose.test.ts +9 -10
- package/src/__tests__/composables/autoGroup/groupByOrder.test.ts +278 -0
- package/src/__tests__/composables/autoGroup/integration.test.ts +3 -7
- package/src/__tests__/composables/useSampleGroups.tree.test.ts +145 -0
- package/src/components/AppTopBar.story.vue +9 -7
- package/src/components/AppTopBar.vue +79 -72
- package/src/components/AutoGroupModal.adapter.ts +69 -13
- package/src/components/AutoGroupModal.story.vue +89 -0
- package/src/components/AutoGroupModal.vue +18 -8
- package/src/components/PluginIcon.story.vue +11 -9
- package/src/components/PluginIcon.vue +3 -3
- package/src/components/PluginWorkspaceView.props.ts +5 -7
- package/src/components/PluginWorkspaceView.vue +0 -4
- package/src/components/SampleSelector.drag.ts +5 -5
- package/src/components/SampleSelector.groups.ts +15 -15
- package/src/components/SampleSelector.selection.ts +7 -46
- package/src/components/SampleSelector.story.vue +37 -0
- package/src/components/SampleSelector.tree.ts +48 -0
- package/src/components/SampleSelector.vue +52 -320
- package/src/components/SampleSelectorGroupNode.vue +197 -0
- package/src/components/SmartGroup.types.ts +5 -0
- package/src/components/SmartGroupFieldRecipe.groups.ts +6 -2
- package/src/components/SmartGroupFieldRecipe.vue +76 -4
- package/src/components/internal/AppTopBarPageSelectorInternal.vue +2 -2
- package/src/composables/autoGroup/compose.ts +31 -10
- package/src/composables/index.ts +1 -0
- package/src/composables/useAutoGroup.ts +112 -5
- package/src/composables/useSampleGroups.ts +118 -33
- package/src/styles/components/app-avatar-menu.css +2 -1
- package/src/styles/components/app-plugin-switcher.css +0 -13
- package/src/styles/components/app-top-bar.css +13 -54
- package/src/styles/components/dose-calculator.css +0 -4
- package/src/styles/components/experiment-popover.css +2 -104
- package/src/styles/components/experiment-selector-modal.css +0 -7
- package/src/styles/components/plugin-icon.css +3 -0
- package/src/styles/components/protocol-step-editor.css +0 -6
- package/src/styles/components/reagent-editor.css +0 -5
- package/src/styles/components/sample-hierarchy-tree.css +0 -4
- package/src/styles/components/sample-selector.css +0 -96
- package/src/styles/components/schedule-calendar.css +0 -6
- package/src/styles/components/smart-group.css +22 -0
- package/src/styles/components/well-plate.css +1 -27
- package/src/types/platform.ts +1 -0
- package/src/utils/pluginIcon.ts +5 -2
- package/src/utils/sampleGroupPath.ts +19 -0
- package/dist/components-CDomhGSj.js.map +0 -1
- package/dist/useProtocolTemplates-BMt0LlXf.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -20,7 +20,7 @@ interface Props {
|
|
|
20
20
|
pillNav?: PillNavItemInput[];
|
|
21
21
|
/** Active id for the preferred centered pill navigation. */
|
|
22
22
|
currentPillId?: string;
|
|
23
|
-
/** Account dropdown entries.
|
|
23
|
+
/** Account dropdown entries. */
|
|
24
24
|
accountMenu?: AccountMenuItem[];
|
|
25
25
|
/** Show the notifications icon button. */
|
|
26
26
|
showNotifications?: boolean;
|
|
@@ -36,17 +36,15 @@ interface Props {
|
|
|
36
36
|
showStandaloneLabel?: boolean;
|
|
37
37
|
/** Custom standalone badge label. */
|
|
38
38
|
standaloneLabel?: string;
|
|
39
|
-
/** Show the
|
|
39
|
+
/** Show the admin shortcut. */
|
|
40
40
|
showAdmin?: boolean;
|
|
41
|
-
/** Route used by the
|
|
41
|
+
/** Route used by the admin shortcut. */
|
|
42
42
|
adminPath?: string;
|
|
43
|
-
/**
|
|
44
|
-
showProfile?: boolean;
|
|
45
|
-
/** Classic profile display name. */
|
|
43
|
+
/** Account display name. */
|
|
46
44
|
userName?: string;
|
|
47
|
-
/** Explicit
|
|
45
|
+
/** Explicit account avatar initial. */
|
|
48
46
|
userInitial?: string;
|
|
49
|
-
/**
|
|
47
|
+
/** Account email shown in the avatar menu. */
|
|
50
48
|
userEmail?: string;
|
|
51
49
|
}
|
|
52
50
|
declare function __VLS_template(): {
|
|
@@ -81,7 +79,6 @@ declare function __VLS_template(): {
|
|
|
81
79
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
82
80
|
declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
83
81
|
"sign-out": () => any;
|
|
84
|
-
"profile-click": () => any;
|
|
85
82
|
"admin-click": () => any;
|
|
86
83
|
"page-selector-select": (page: PageSelectorItem) => any;
|
|
87
84
|
"pill-select": (item: PillNavItem) => any;
|
|
@@ -93,7 +90,6 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
|
|
|
93
90
|
"settings-values-change": (data: Record<string, unknown>) => any;
|
|
94
91
|
}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
|
|
95
92
|
"onSign-out"?: (() => any) | undefined;
|
|
96
|
-
"onProfile-click"?: (() => any) | undefined;
|
|
97
93
|
"onAdmin-click"?: (() => any) | undefined;
|
|
98
94
|
"onPage-selector-select"?: ((page: PageSelectorItem) => any) | undefined;
|
|
99
95
|
"onPill-select"?: ((item: PillNavItem) => any) | undefined;
|
|
@@ -115,7 +111,6 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
|
|
|
115
111
|
standaloneLabel: string;
|
|
116
112
|
showAdmin: boolean;
|
|
117
113
|
adminPath: string;
|
|
118
|
-
showProfile: boolean;
|
|
119
114
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
120
115
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
121
116
|
export default _default;
|
|
@@ -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';
|
|
@@ -8,15 +8,30 @@ export declare function roleLabel(role?: ColumnRole): string;
|
|
|
8
8
|
/**
|
|
9
9
|
* Columns worth offering as grouping toggles: factors and replicates, plus any
|
|
10
10
|
* column already enabled in `groupBy` (so a manual group-by choice still shows).
|
|
11
|
-
* Preserves the engine's column order.
|
|
11
|
+
* Preserves the engine's column order. `groupBy` is the schema's ORDERED layer
|
|
12
|
+
* list — entry N is hierarchy layer N of the composed group names.
|
|
12
13
|
*/
|
|
13
|
-
export declare function candidateColumns(columns: ColumnInfo[],
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
export declare function candidateColumns(columns: ColumnInfo[], groupBy: readonly number[]): ColumnInfo[];
|
|
15
|
+
/**
|
|
16
|
+
* Map engine columns to Field Recipe cards + their on/off state (same order).
|
|
17
|
+
* `layers` aligns with the cards: the column's 1-based position in the
|
|
18
|
+
* `groupBy` layer order, or `null` when the column is not grouped by.
|
|
19
|
+
*/
|
|
20
|
+
export declare function engineFieldsToCards(columns: ColumnInfo[], groupBy: readonly number[]): {
|
|
21
|
+
fields: SmartGroupField[];
|
|
22
|
+
enabled: boolean[];
|
|
23
|
+
layers: (number | null)[];
|
|
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): {
|
|
18
32
|
fields: SmartGroupField[];
|
|
19
33
|
enabled: boolean[];
|
|
34
|
+
layers: (number | null)[];
|
|
20
35
|
};
|
|
21
36
|
/** Map engine sample groups to the live preview rail shape. */
|
|
22
37
|
export declare function engineGroupsToRail(groups: SampleGroup[]): FieldRecipeGroup[];
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
interface Props {
|
|
2
2
|
icon?: string;
|
|
3
|
-
size?: 'sm' | 'md' | 'lg';
|
|
3
|
+
size?: 'sm' | 'md' | 'topbar' | 'lg';
|
|
4
4
|
variant?: 'solid' | 'tinted';
|
|
5
5
|
tone?: string;
|
|
6
6
|
}
|
|
7
7
|
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
8
|
-
size: "sm" | "md" | "lg";
|
|
8
|
+
size: "sm" | "md" | "topbar" | "lg";
|
|
9
9
|
variant: "solid" | "tinted";
|
|
10
10
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLSpanElement>;
|
|
11
11
|
export default _default;
|
|
@@ -39,17 +39,15 @@ export interface PluginWorkspaceViewProps {
|
|
|
39
39
|
showNotifications?: boolean;
|
|
40
40
|
/** Draw a notification dot on the notifications icon. */
|
|
41
41
|
hasNotificationDot?: boolean;
|
|
42
|
-
/** Show the
|
|
42
|
+
/** Show the admin shortcut. */
|
|
43
43
|
showAdmin?: boolean;
|
|
44
|
-
/** Route used by the
|
|
44
|
+
/** Route used by the admin shortcut. */
|
|
45
45
|
adminPath?: string;
|
|
46
|
-
/**
|
|
47
|
-
showProfile?: boolean;
|
|
48
|
-
/** Classic profile display name. */
|
|
46
|
+
/** Account display name. */
|
|
49
47
|
userName?: string;
|
|
50
|
-
/** Explicit
|
|
48
|
+
/** Explicit account avatar initial. */
|
|
51
49
|
userInitial?: string;
|
|
52
|
-
/**
|
|
50
|
+
/** Account email shown in the avatar menu. */
|
|
53
51
|
userEmail?: string;
|
|
54
52
|
/** Enable the built-in AppTopBar experiment popover and selector flow. The current experiment comes from the shared experiment store, not from a prop. Keep this comment on one line — the docs extractor drops multi-line JSDoc. */
|
|
55
53
|
experimentShell?: boolean;
|
|
@@ -47,7 +47,6 @@ declare const __VLS_component: import('vue').DefineComponent<PluginWorkspaceView
|
|
|
47
47
|
"update:modelValue": (values: Record<string, unknown>) => any;
|
|
48
48
|
"sign-out": () => any;
|
|
49
49
|
"update:values": (values: Record<string, unknown>) => any;
|
|
50
|
-
"profile-click": () => any;
|
|
51
50
|
"admin-click": () => any;
|
|
52
51
|
"page-selector-select": (page: PageSelectorItem) => any;
|
|
53
52
|
"pill-select": (item: PillNavItem) => any;
|
|
@@ -69,7 +68,6 @@ declare const __VLS_component: import('vue').DefineComponent<PluginWorkspaceView
|
|
|
69
68
|
"onUpdate:modelValue"?: ((values: Record<string, unknown>) => any) | undefined;
|
|
70
69
|
"onSign-out"?: (() => any) | undefined;
|
|
71
70
|
"onUpdate:values"?: ((values: Record<string, unknown>) => any) | undefined;
|
|
72
|
-
"onProfile-click"?: (() => any) | undefined;
|
|
73
71
|
"onAdmin-click"?: (() => any) | undefined;
|
|
74
72
|
"onPage-selector-select"?: ((page: PageSelectorItem) => any) | undefined;
|
|
75
73
|
"onPill-select"?: ((item: PillNavItem) => any) | undefined;
|
|
@@ -123,7 +121,6 @@ declare const __VLS_component: import('vue').DefineComponent<PluginWorkspaceView
|
|
|
123
121
|
standaloneLabel: string;
|
|
124
122
|
showAdmin: boolean;
|
|
125
123
|
adminPath: string;
|
|
126
|
-
showProfile: boolean;
|
|
127
124
|
formEnhancements: import('..').FormEnhancements<Record<string, unknown>>;
|
|
128
125
|
showFormActions: boolean;
|
|
129
126
|
formLoading: boolean;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { SampleGroup } from '../types';
|
|
2
|
+
export { getSampleGroupMajorPrefix, getSampleGroupParentPath, splitSampleGroupPath, } from '../utils/sampleGroupPath';
|
|
2
3
|
export type GroupDragKind = 'major' | 'sub' | 'flat';
|
|
3
4
|
export type GroupReorderPosition = 'before' | 'after';
|
|
4
5
|
export declare function detectSampleGroupSeparator(groups: SampleGroup[]): string;
|
|
5
|
-
export declare function getSampleGroupMajorPrefix(groupName: string, separator: string): string;
|
|
6
6
|
export declare function moveSampleToGroup(groups: SampleGroup[], sample: string, sourceGroup: string | null, targetGroup: string): SampleGroup[];
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Drop every named group. Callers pass the concrete group names beneath the
|
|
9
|
+
* node being removed, so one helper covers a single group, a whole family, or
|
|
10
|
+
* any intermediate hierarchy level.
|
|
11
|
+
*/
|
|
12
|
+
export declare function removeSampleGroups(groups: SampleGroup[], groupNames: string[]): SampleGroup[];
|
|
13
13
|
export declare function removeSampleFromGroup(groups: SampleGroup[], sample: string, groupName: string): SampleGroup[];
|
|
14
14
|
export declare function reorderSampleGroup(groups: SampleGroup[], source: string, target: string, position: GroupReorderPosition): SampleGroup[];
|
|
15
15
|
export declare function reorderSampleMajorGroup(groups: SampleGroup[], source: string, target: string, position: GroupReorderPosition): SampleGroup[];
|
|
@@ -1,26 +1,20 @@
|
|
|
1
1
|
import { ComputedRef } from 'vue';
|
|
2
|
-
import { SampleMajorGroup } from '../composables/useSampleGroups';
|
|
3
|
-
interface SampleGroupSelectionSource {
|
|
4
|
-
samples: string[];
|
|
5
|
-
}
|
|
6
2
|
export interface UseSampleSelectorSelectionOptions {
|
|
7
3
|
selected: () => string[];
|
|
8
4
|
samples: () => string[];
|
|
9
|
-
findGroup: (groupName: string) => SampleGroupSelectionSource | undefined;
|
|
10
5
|
emitSelected: (samples: string[]) => void;
|
|
11
6
|
}
|
|
12
7
|
export interface UseSampleSelectorSelectionReturn {
|
|
13
8
|
isAllSelected: ComputedRef<boolean>;
|
|
14
9
|
toggleSelectAll: () => void;
|
|
15
10
|
toggleSample: (sample: string) => void;
|
|
16
|
-
|
|
17
|
-
toggleMajorGroupSamples: (majorGroup: SampleMajorGroup) => void;
|
|
11
|
+
toggleSamplesSelection: (samples: string[]) => void;
|
|
18
12
|
isFullySelected: (samples: string[]) => boolean;
|
|
19
13
|
isPartiallySelected: (samples: string[]) => boolean;
|
|
20
|
-
isGroupFullySelected: (groupName: string) => boolean;
|
|
21
|
-
isGroupPartiallySelected: (groupName: string) => boolean;
|
|
22
|
-
isMajorGroupFullySelected: (majorGroup: SampleMajorGroup) => boolean;
|
|
23
|
-
isMajorGroupPartiallySelected: (majorGroup: SampleMajorGroup) => boolean;
|
|
24
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Selection state for the sample selector. Works on plain sample arrays rather
|
|
17
|
+
* than group names, so any level of the group hierarchy can drive it by handing
|
|
18
|
+
* over the samples beneath that node.
|
|
19
|
+
*/
|
|
25
20
|
export declare function useSampleSelectorSelection(options: UseSampleSelectorSelectionOptions): UseSampleSelectorSelectionReturn;
|
|
26
|
-
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { SampleGroupNode } from '../composables/useSampleGroups';
|
|
2
|
+
import { GroupDragKind, GroupReorderPosition } from './SampleSelector.groups';
|
|
3
|
+
/**
|
|
4
|
+
* Handlers and state predicates shared by every level of the group tree.
|
|
5
|
+
* Passed down as a single prop so the recursive row component does not have to
|
|
6
|
+
* re-emit each event at every nesting level.
|
|
7
|
+
*/
|
|
8
|
+
export interface SampleGroupTreeContext {
|
|
9
|
+
isExpanded: (key: string) => boolean;
|
|
10
|
+
toggleExpanded: (key: string) => void;
|
|
11
|
+
isSampleSelected: (sample: string) => boolean;
|
|
12
|
+
isFullySelected: (samples: string[]) => boolean;
|
|
13
|
+
isPartiallySelected: (samples: string[]) => boolean;
|
|
14
|
+
toggleSamples: (samples: string[]) => void;
|
|
15
|
+
toggleSample: (sample: string) => void;
|
|
16
|
+
removeGroups: (groupNames: string[]) => void;
|
|
17
|
+
removeSampleFromGroup: (sample: string, groupName: string) => void;
|
|
18
|
+
openColorPicker: (groupNames: string[], event: Event) => void;
|
|
19
|
+
draggingSample: () => string | null;
|
|
20
|
+
dragOverGroup: () => string | null;
|
|
21
|
+
draggingGroup: () => string | null;
|
|
22
|
+
draggingGroupKind: () => GroupDragKind | null;
|
|
23
|
+
reorderTarget: () => string | null;
|
|
24
|
+
reorderPosition: () => GroupReorderPosition | null;
|
|
25
|
+
onSampleDragStart: (sample: string, groupName: string | null, event: DragEvent) => void;
|
|
26
|
+
onSampleDragEnd: () => void;
|
|
27
|
+
onSampleDragOver: (groupName: string, event: DragEvent) => void;
|
|
28
|
+
onSampleDragLeave: () => void;
|
|
29
|
+
onSampleDrop: (groupName: string, event: DragEvent) => void;
|
|
30
|
+
onGroupDragStart: (name: string, kind: GroupDragKind, event: DragEvent) => void;
|
|
31
|
+
onGroupDragEnd: () => void;
|
|
32
|
+
onGroupDragOver: (name: string, kind: GroupDragKind, event: DragEvent) => void;
|
|
33
|
+
onGroupDragLeave: (event: DragEvent) => void;
|
|
34
|
+
onGroupDrop: (name: string, kind: GroupDragKind, event: DragEvent) => void;
|
|
35
|
+
}
|
|
36
|
+
/** Every concrete group name beneath a node, in tree order. */
|
|
37
|
+
export declare function collectLeafGroupNames(node: SampleGroupNode): string[];
|
|
38
|
+
/** Expansion keys for a whole tree, used by "expand all". */
|
|
39
|
+
export declare function collectNodeKeys(nodes: SampleGroupNode[]): string[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SampleGroupNode } from '../composables/useSampleGroups';
|
|
2
|
+
import { SampleGroupTreeContext } from './SampleSelector.tree';
|
|
3
|
+
interface Props {
|
|
4
|
+
node: SampleGroupNode;
|
|
5
|
+
depth: number;
|
|
6
|
+
ctx: SampleGroupTreeContext;
|
|
7
|
+
}
|
|
8
|
+
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
9
|
+
export default _default;
|
|
@@ -39,6 +39,11 @@ export interface SmartGroupFieldRecipeProps {
|
|
|
39
39
|
qcColor?: string;
|
|
40
40
|
/** Controls the field toggles; when set, clicking a toggle emits `toggle`. */
|
|
41
41
|
enabled?: boolean[];
|
|
42
|
+
/**
|
|
43
|
+
* Per-card 1-based hierarchy layer (1 = the sample selector's major group),
|
|
44
|
+
* `null` for cards not grouped by. When set, reorder clicks emit `move`.
|
|
45
|
+
*/
|
|
46
|
+
layers?: (number | null)[];
|
|
42
47
|
/** Pre-computed resulting groups; when set, the rail renders these directly. */
|
|
43
48
|
groups?: FieldRecipeGroup[];
|
|
44
49
|
/** QC summary chip to show in the rail; `null` hides it (e.g. when mixed). */
|
|
@@ -35,9 +35,10 @@ export interface FieldRecipeSummary {
|
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Build the ordered group list from whichever fields are switched on.
|
|
38
|
-
* Returns an empty list when no field is active.
|
|
38
|
+
* Returns an empty list when no field is active. `layerOrder` (field indices
|
|
39
|
+
* in layer order) overrides the default field-order joining of the group name.
|
|
39
40
|
*/
|
|
40
|
-
export declare function computeFieldGroups(samples: SmartGroupSampleRecord[], fields: SmartGroupField[], on: boolean[], palette: string[]): FieldRecipeGroup[];
|
|
41
|
+
export declare function computeFieldGroups(samples: SmartGroupSampleRecord[], fields: SmartGroupField[], on: boolean[], palette: string[], layerOrder?: readonly number[]): FieldRecipeGroup[];
|
|
41
42
|
/**
|
|
42
43
|
* Append the QC pool group when QC is mixed into the biological groups.
|
|
43
44
|
* `Overlay only` and `Exclude` leave the group list untouched.
|
|
@@ -4,6 +4,7 @@ declare const _default: import('vue').DefineComponent<SmartGroupFieldRecipeProps
|
|
|
4
4
|
toggle: (index: number) => any;
|
|
5
5
|
cancel: () => any;
|
|
6
6
|
close: () => any;
|
|
7
|
+
move: (index: number, direction: "up" | "down") => any;
|
|
7
8
|
manual: () => any;
|
|
8
9
|
apply: (payload: FieldRecipeApplyPayload) => any;
|
|
9
10
|
"update:route": (route: QcRoute) => any;
|
|
@@ -14,6 +15,7 @@ declare const _default: import('vue').DefineComponent<SmartGroupFieldRecipeProps
|
|
|
14
15
|
onToggle?: ((index: number) => any) | undefined;
|
|
15
16
|
onCancel?: (() => any) | undefined;
|
|
16
17
|
onClose?: (() => any) | undefined;
|
|
18
|
+
onMove?: ((index: number, direction: "up" | "down") => any) | undefined;
|
|
17
19
|
onManual?: (() => any) | undefined;
|
|
18
20
|
onApply?: ((payload: FieldRecipeApplyPayload) => any) | undefined;
|
|
19
21
|
"onUpdate:route"?: ((route: QcRoute) => 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-HXV-ZkBg.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";
|