@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.
Files changed (91) hide show
  1. package/dist/__tests__/components/RetiredStyles.test.d.ts +1 -0
  2. package/dist/__tests__/composables/autoGroup/groupByOrder.test.d.ts +1 -0
  3. package/dist/__tests__/composables/useSampleGroups.tree.test.d.ts +1 -0
  4. package/dist/components/AppTopBar.vue.d.ts +6 -11
  5. package/dist/components/AutoGroupModal.adapter.d.ts +22 -7
  6. package/dist/components/PluginIcon.vue.d.ts +2 -2
  7. package/dist/components/PluginWorkspaceView.props.d.ts +5 -7
  8. package/dist/components/PluginWorkspaceView.vue.d.ts +0 -3
  9. package/dist/components/SampleSelector.groups.d.ts +7 -7
  10. package/dist/components/SampleSelector.selection.d.ts +6 -12
  11. package/dist/components/SampleSelector.tree.d.ts +39 -0
  12. package/dist/components/SampleSelectorGroupNode.vue.d.ts +9 -0
  13. package/dist/components/SmartGroup.types.d.ts +5 -0
  14. package/dist/components/SmartGroupFieldRecipe.groups.d.ts +3 -2
  15. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +2 -0
  16. package/dist/components/index.js +1 -1
  17. package/dist/{components-CDomhGSj.js → components-HXV-ZkBg.js} +939 -948
  18. package/dist/components-HXV-ZkBg.js.map +1 -0
  19. package/dist/composables/index.d.ts +1 -1
  20. package/dist/composables/index.js +1 -1
  21. package/dist/composables/useAutoGroup.d.ts +3 -0
  22. package/dist/composables/usePlatformContext.d.ts +3 -0
  23. package/dist/composables/useSampleGroups.d.ts +25 -0
  24. package/dist/index.js +2 -2
  25. package/dist/install.js +1 -1
  26. package/dist/styles.css +130 -557
  27. package/dist/types/platform.d.ts +1 -0
  28. package/dist/{useProtocolTemplates-BMt0LlXf.js → useProtocolTemplates-D3IZKLqr.js} +198 -24
  29. package/dist/useProtocolTemplates-D3IZKLqr.js.map +1 -0
  30. package/dist/utils/pluginIcon.d.ts +1 -1
  31. package/dist/utils/sampleGroupPath.d.ts +6 -0
  32. package/package.json +1 -1
  33. package/src/__tests__/components/AppAvatarMenu.test.ts +11 -0
  34. package/src/__tests__/components/AppTopBar.test.ts +84 -10
  35. package/src/__tests__/components/AppTopBarPageSelector.test.ts +1 -1
  36. package/src/__tests__/components/AutoGroupModal.adapter.test.ts +47 -7
  37. package/src/__tests__/components/PluginIcon.test.ts +19 -0
  38. package/src/__tests__/components/PluginWorkspaceView.test.ts +8 -0
  39. package/src/__tests__/components/RetiredStyles.test.ts +82 -0
  40. package/src/__tests__/components/SampleSelector.drag.test.ts +26 -0
  41. package/src/__tests__/components/SampleSelector.groups.test.ts +19 -6
  42. package/src/__tests__/components/SampleSelector.selection.test.ts +9 -23
  43. package/src/__tests__/components/SampleSelector.test.ts +35 -0
  44. package/src/__tests__/components/SmartGroupFieldRecipe.groups.test.ts +5 -0
  45. package/src/__tests__/composables/autoGroup/compose.test.ts +9 -10
  46. package/src/__tests__/composables/autoGroup/groupByOrder.test.ts +278 -0
  47. package/src/__tests__/composables/autoGroup/integration.test.ts +3 -7
  48. package/src/__tests__/composables/useSampleGroups.tree.test.ts +145 -0
  49. package/src/components/AppTopBar.story.vue +9 -7
  50. package/src/components/AppTopBar.vue +79 -72
  51. package/src/components/AutoGroupModal.adapter.ts +69 -13
  52. package/src/components/AutoGroupModal.story.vue +89 -0
  53. package/src/components/AutoGroupModal.vue +18 -8
  54. package/src/components/PluginIcon.story.vue +11 -9
  55. package/src/components/PluginIcon.vue +3 -3
  56. package/src/components/PluginWorkspaceView.props.ts +5 -7
  57. package/src/components/PluginWorkspaceView.vue +0 -4
  58. package/src/components/SampleSelector.drag.ts +5 -5
  59. package/src/components/SampleSelector.groups.ts +15 -15
  60. package/src/components/SampleSelector.selection.ts +7 -46
  61. package/src/components/SampleSelector.story.vue +37 -0
  62. package/src/components/SampleSelector.tree.ts +48 -0
  63. package/src/components/SampleSelector.vue +52 -320
  64. package/src/components/SampleSelectorGroupNode.vue +197 -0
  65. package/src/components/SmartGroup.types.ts +5 -0
  66. package/src/components/SmartGroupFieldRecipe.groups.ts +6 -2
  67. package/src/components/SmartGroupFieldRecipe.vue +76 -4
  68. package/src/components/internal/AppTopBarPageSelectorInternal.vue +2 -2
  69. package/src/composables/autoGroup/compose.ts +31 -10
  70. package/src/composables/index.ts +1 -0
  71. package/src/composables/useAutoGroup.ts +112 -5
  72. package/src/composables/useSampleGroups.ts +118 -33
  73. package/src/styles/components/app-avatar-menu.css +2 -1
  74. package/src/styles/components/app-plugin-switcher.css +0 -13
  75. package/src/styles/components/app-top-bar.css +13 -54
  76. package/src/styles/components/dose-calculator.css +0 -4
  77. package/src/styles/components/experiment-popover.css +2 -104
  78. package/src/styles/components/experiment-selector-modal.css +0 -7
  79. package/src/styles/components/plugin-icon.css +3 -0
  80. package/src/styles/components/protocol-step-editor.css +0 -6
  81. package/src/styles/components/reagent-editor.css +0 -5
  82. package/src/styles/components/sample-hierarchy-tree.css +0 -4
  83. package/src/styles/components/sample-selector.css +0 -96
  84. package/src/styles/components/schedule-calendar.css +0 -6
  85. package/src/styles/components/smart-group.css +22 -0
  86. package/src/styles/components/well-plate.css +1 -27
  87. package/src/types/platform.ts +1 -0
  88. package/src/utils/pluginIcon.ts +5 -2
  89. package/src/utils/sampleGroupPath.ts +19 -0
  90. package/dist/components-CDomhGSj.js.map +0 -1
  91. package/dist/useProtocolTemplates-BMt0LlXf.js.map +0 -1
@@ -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. Takes precedence over the classic profile button. */
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 classic admin shortcut. */
39
+ /** Show the admin shortcut. */
40
40
  showAdmin?: boolean;
41
- /** Route used by the classic admin shortcut. */
41
+ /** Route used by the admin shortcut. */
42
42
  adminPath?: string;
43
- /** Show the classic profile button when accountMenu is not provided. */
44
- showProfile?: boolean;
45
- /** Classic profile display name. */
43
+ /** Account display name. */
46
44
  userName?: string;
47
- /** Explicit classic profile initial. */
45
+ /** Explicit account avatar initial. */
48
46
  userInitial?: string;
49
- /** Classic profile email, used by avatar/account layouts. */
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[], enabled: ReadonlySet<number>): ColumnInfo[];
14
- /** The candidate column indices in display order, so card index → engine column. */
15
- export declare function candidateColumnIndices(columns: ColumnInfo[], enabled: ReadonlySet<number>): number[];
16
- /** Map engine columns to Field Recipe cards + their on/off state (same order). */
17
- export declare function engineFieldsToCards(columns: ColumnInfo[], enabled: ReadonlySet<number>): {
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 classic admin shortcut. */
42
+ /** Show the admin shortcut. */
43
43
  showAdmin?: boolean;
44
- /** Route used by the classic admin shortcut. */
44
+ /** Route used by the admin shortcut. */
45
45
  adminPath?: string;
46
- /** Show the classic profile button when accountMenu is not provided. */
47
- showProfile?: boolean;
48
- /** Classic profile display name. */
46
+ /** Account display name. */
49
47
  userName?: string;
50
- /** Explicit classic profile initial. */
48
+ /** Explicit account avatar initial. */
51
49
  userInitial?: string;
52
- /** Classic profile email. */
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
- export declare function removeSampleGroup(groups: SampleGroup[], groupName: string): SampleGroup[];
8
- export declare function removeSampleMajorGroup(groups: SampleGroup[], majorGroup: {
9
- subGroups: Array<{
10
- name: string;
11
- }>;
12
- }): SampleGroup[];
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
- toggleGroupSamples: (groupName: string) => void;
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;
@@ -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-CDomhGSj.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-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";