@morscherlab/mint-sdk 1.5.0-beta.1 → 1.5.0-beta.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.
Files changed (174) hide show
  1. package/dist/{AlertBox-CIhqsWbN.js → AlertBox-Cai0w7gF.js} +3 -3
  2. package/dist/{AlertBox-CIhqsWbN.js.map → AlertBox-Cai0w7gF.js.map} +1 -1
  3. package/dist/{AppSidebar-BDrd7Kwn.js → AppSidebar-C-Vq5x4I.js} +410 -127
  4. package/dist/AppSidebar-C-Vq5x4I.js.map +1 -0
  5. package/dist/{ConfirmDialog-CjWoxAD1.js → ConfirmDialog-BjFsOpBe.js} +3 -3
  6. package/dist/ConfirmDialog-BjFsOpBe.js.map +1 -0
  7. package/dist/{ExperimentPopover-BM92LlrQ.js → ExperimentPopover-DYy_s0kI.js} +25 -37
  8. package/dist/ExperimentPopover-DYy_s0kI.js.map +1 -0
  9. package/dist/{ExperimentSelectorModal-LsB1ABmh.js → ExperimentSelectorModal-Bfh5bdkv.js} +37 -8
  10. package/dist/ExperimentSelectorModal-Bfh5bdkv.js.map +1 -0
  11. package/dist/{SegmentedControl-Dz41vAFM.js → SegmentedControl-B8KgyOjd.js} +2 -2
  12. package/dist/{SegmentedControl-Dz41vAFM.js.map → SegmentedControl-B8KgyOjd.js.map} +1 -1
  13. package/dist/{SettingsModal-C-MSR-bk.js → SettingsModal-DwfrD1ER.js} +7 -7
  14. package/dist/{SettingsModal-C-MSR-bk.js.map → SettingsModal-DwfrD1ER.js.map} +1 -1
  15. package/dist/__tests__/components/AppTopBarCompact.test.d.ts +1 -0
  16. package/dist/__tests__/components/AppTopBarCompactReset.test.d.ts +1 -0
  17. package/dist/__tests__/components/AutoGroupModal.experimentLoad.test.d.ts +1 -0
  18. package/dist/components/AppTopBar.compact.d.ts +5 -0
  19. package/dist/components/AppTopBar.vue.d.ts +17 -17
  20. package/dist/components/FormBuilder.vue.d.ts +1 -1
  21. package/dist/components/PluginIcon.vue.d.ts +2 -2
  22. package/dist/components/PluginWorkspaceView.vue.d.ts +4 -0
  23. package/dist/components/SectionCard.vue.d.ts +13 -1
  24. package/dist/components/SettingsModal.vue.d.ts +1 -1
  25. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -2
  26. package/dist/components/internal/FormSchemaInternal.vue.d.ts +9 -9
  27. package/dist/components/internal/FormSectionRenderer.vue.d.ts +4 -4
  28. package/dist/components/internal/LucideIconInternal.vue.d.ts +17 -0
  29. package/dist/composables/appLayoutSidebar.d.ts +9 -0
  30. package/dist/composables/useExperimentSelector.d.ts +2 -0
  31. package/dist/composables/useOnboarding.d.ts +1 -1
  32. package/dist/composables/usePluginWorkspace.d.ts +2 -0
  33. package/dist/composables/useVersionedSave.d.ts +5 -2
  34. package/dist/{controlSchemaModel-BbXbMgc6.js → controlSchemaModel-BtFNZj8t.js} +2 -2
  35. package/dist/{controlSchemaModel-BbXbMgc6.js.map → controlSchemaModel-BtFNZj8t.js.map} +1 -1
  36. package/dist/{data-LzdkEZJ-.js → data-CJztFns8.js} +31 -15
  37. package/dist/{data-LzdkEZJ-.js.map → data-CJztFns8.js.map} +1 -1
  38. package/dist/data.js +8 -8
  39. package/dist/{experimentStatus-DCn2QKG7.js → experimentStatus-Deokk7Br.js} +2 -2
  40. package/dist/{experimentStatus-DCn2QKG7.js.map → experimentStatus-Deokk7Br.js.map} +1 -1
  41. package/dist/index.d.ts +0 -1
  42. package/dist/index.js +15 -20
  43. package/dist/index.js.map +1 -1
  44. package/dist/{install-UTqrAgHe.js → install-Bk02tJ5M.js} +15 -40
  45. package/dist/install-Bk02tJ5M.js.map +1 -0
  46. package/dist/install.js +1 -1
  47. package/dist/{lab-CbdDLAVr.js → lab-BYhb_cJI.js} +47 -117
  48. package/dist/lab-BYhb_cJI.js.map +1 -0
  49. package/dist/lab.js +4 -4
  50. package/dist/{records-CWRztE5M.js → records-GtiVMlTQ.js} +207 -171
  51. package/dist/records-GtiVMlTQ.js.map +1 -0
  52. package/dist/{runtime-DrL6lKAb.js → runtime-aZPUPxoB.js} +112 -54
  53. package/dist/runtime-aZPUPxoB.js.map +1 -0
  54. package/dist/runtime.js +6 -6
  55. package/dist/{shell-Ch7cJnjo.js → shell-Bk9mD4Lc.js} +5 -5
  56. package/dist/{shell-Ch7cJnjo.js.map → shell-Bk9mD4Lc.js.map} +1 -1
  57. package/dist/shell.js +5 -5
  58. package/dist/styles.css +315 -134
  59. package/dist/styles.d.ts +1 -0
  60. package/dist/types/components.d.ts +22 -2
  61. package/dist/types/generated-ui.d.ts +2 -0
  62. package/dist/types/index.d.ts +2 -2
  63. package/dist/types/instrument.d.ts +5 -17
  64. package/dist/{useDropdownState-uFIz6Yv8.js → useDropdownState-CcBzUYZ6.js} +14 -5
  65. package/dist/useDropdownState-CcBzUYZ6.js.map +1 -0
  66. package/dist/{useExperimentSamples-Cz2v3V_q.js → useExperimentSamples-CpNXvpUn.js} +3 -3
  67. package/dist/{useExperimentSamples-Cz2v3V_q.js.map → useExperimentSamples-CpNXvpUn.js.map} +1 -1
  68. package/dist/{useListReorder-QqJc1dpX.js → useListReorder-Bp4EAI2w.js} +16 -4
  69. package/dist/useListReorder-Bp4EAI2w.js.map +1 -0
  70. package/dist/{useRackEditor-BHGM1Ngz.js → useRackEditor-i2bdPUFf.js} +156 -27
  71. package/dist/useRackEditor-i2bdPUFf.js.map +1 -0
  72. package/dist/{useRealtime-CNQbrS01.js → useRealtime-BLQEjbuq.js} +3 -3
  73. package/dist/{useRealtime-CNQbrS01.js.map → useRealtime-BLQEjbuq.js.map} +1 -1
  74. package/dist/useRequest-CXyPw3eh.js +76 -0
  75. package/dist/useRequest-CXyPw3eh.js.map +1 -0
  76. package/dist/utils/deprecation.d.ts +2 -0
  77. package/dist/utils/lucideIcon.d.ts +4 -0
  78. package/package.json +7 -4
  79. package/src/__tests__/components/AppTopBar.test.ts +102 -20
  80. package/src/__tests__/components/AppTopBarCompact.test.ts +65 -0
  81. package/src/__tests__/components/AppTopBarCompactReset.test.ts +24 -0
  82. package/src/__tests__/components/AppTopBarOnboarding.test.ts +10 -0
  83. package/src/__tests__/components/AutoGroupModal.experimentLoad.test.ts +58 -0
  84. package/src/__tests__/components/BaseModal.test.ts +33 -2
  85. package/src/__tests__/components/ConfirmDialog.test.ts +2 -2
  86. package/src/__tests__/components/ExperimentPopover.test.ts +32 -0
  87. package/src/__tests__/components/ExperimentSelectorModal.test.ts +16 -0
  88. package/src/__tests__/components/PluginWorkspaceView.test.ts +20 -1
  89. package/src/__tests__/components/SectionCard.test.ts +33 -0
  90. package/src/__tests__/components/deprecationTags.test.ts +4 -18
  91. package/src/__tests__/composables/useJobCenter.test.ts +35 -0
  92. package/src/__tests__/composables/useJobsEndpoint.test.ts +50 -0
  93. package/src/__tests__/composables/useOnboarding.test.ts +2 -2
  94. package/src/__tests__/composables/useVersionedSave.test.ts +71 -6
  95. package/src/__tests__/docs/frontendDocsCatalog.test.ts +3 -3
  96. package/src/__tests__/styles/menusShellRefresh.test.ts +10 -0
  97. package/src/components/AppLayout.story.vue +5 -5
  98. package/src/components/AppLayout.vue +13 -1
  99. package/src/components/AppSidebar.vue +2 -2
  100. package/src/components/AppTopBar.compact.ts +60 -0
  101. package/src/components/AppTopBar.story.vue +39 -14
  102. package/src/components/AppTopBar.vue +222 -89
  103. package/src/components/BaseModal.vue +16 -5
  104. package/src/components/CollapsibleCard.vue +1 -1
  105. package/src/components/ConfirmDialog.vue +1 -1
  106. package/src/components/ExperimentPopover.story.vue +2 -2
  107. package/src/components/ExperimentPopover.vue +6 -22
  108. package/src/components/ExperimentSelectorModal.vue +35 -0
  109. package/src/components/FileUploader.vue +3 -35
  110. package/src/components/GeneratedPluginView.vue +34 -81
  111. package/src/components/GeneratedResultRenderer.vue +2 -1
  112. package/src/components/InstrumentStatusPanels.vue +3 -3
  113. package/src/components/PlotlyChart.vue +1 -1
  114. package/src/components/PluginIcon.story.vue +2 -2
  115. package/src/components/PluginIcon.vue +2 -2
  116. package/src/components/PluginWorkspaceView.vue +10 -1
  117. package/src/components/SectionCard.vue +42 -6
  118. package/src/components/internal/AppTopBarOnboardingInternal.vue +30 -14
  119. package/src/components/internal/AppTopBarPageSelectorInternal.vue +12 -0
  120. package/src/components/internal/AutoGroupModalInternal.vue +14 -3
  121. package/src/components/internal/LucideIconInternal.vue +23 -0
  122. package/src/composables/appLayoutSidebar.ts +11 -0
  123. package/src/composables/index.ts +1 -2
  124. package/src/composables/useExperimentSelector.ts +4 -0
  125. package/src/composables/useJobCenter.ts +21 -1
  126. package/src/composables/useJobsEndpoint.ts +15 -4
  127. package/src/composables/useOnboarding.ts +3 -3
  128. package/src/composables/usePluginWorkspace.ts +15 -4
  129. package/src/composables/useVersionedSave.ts +32 -7
  130. package/src/generated-ui/main.ts +3 -1
  131. package/src/index.ts +0 -3
  132. package/src/styles/components/alert-box.css +1 -1
  133. package/src/styles/components/app-layout.css +5 -0
  134. package/src/styles/components/app-sidebar.css +5 -5
  135. package/src/styles/components/app-top-bar.css +130 -9
  136. package/src/styles/components/button.css +3 -3
  137. package/src/styles/components/checkbox.css +1 -1
  138. package/src/styles/components/collapsible-card.css +1 -1
  139. package/src/styles/components/confirm-dialog.css +2 -2
  140. package/src/styles/components/file-uploader.css +3 -3
  141. package/src/styles/components/icon-button.css +3 -3
  142. package/src/styles/components/loading-spinner.css +1 -1
  143. package/src/styles/components/onboarding.css +39 -0
  144. package/src/styles/components/pill.css +1 -1
  145. package/src/styles/components/plugin-icon.css +2 -2
  146. package/src/styles/components/presence-avatars.css +4 -4
  147. package/src/styles/components/progress-bar.css +1 -1
  148. package/src/styles/components/section-card.css +65 -6
  149. package/src/styles/components/sequence-input.css +1 -1
  150. package/src/styles/components/slider.css +1 -1
  151. package/src/styles/components/toggle.css +1 -1
  152. package/src/styles/variables.css +10 -4
  153. package/src/types/components.ts +23 -2
  154. package/src/types/generated-ui.ts +2 -0
  155. package/src/types/index.ts +1 -1
  156. package/src/types/instrument.ts +5 -18
  157. package/src/utils/deprecation.ts +8 -0
  158. package/src/utils/lucideIcon.ts +25 -0
  159. package/src/utils/lucideIconIndex.d.ts +2 -0
  160. package/dist/AppSidebar-BDrd7Kwn.js.map +0 -1
  161. package/dist/ConfirmDialog-CjWoxAD1.js.map +0 -1
  162. package/dist/ExperimentPopover-BM92LlrQ.js.map +0 -1
  163. package/dist/ExperimentSelectorModal-LsB1ABmh.js.map +0 -1
  164. package/dist/deprecatedRootExports.d.ts +0 -191
  165. package/dist/install-UTqrAgHe.js.map +0 -1
  166. package/dist/lab-CbdDLAVr.js.map +0 -1
  167. package/dist/records-CWRztE5M.js.map +0 -1
  168. package/dist/runtime-DrL6lKAb.js.map +0 -1
  169. package/dist/useDropdownState-uFIz6Yv8.js.map +0 -1
  170. package/dist/useListReorder-QqJc1dpX.js.map +0 -1
  171. package/dist/useRackEditor-BHGM1Ngz.js.map +0 -1
  172. package/dist/useRequest-Bfsh7gIm.js +0 -215
  173. package/dist/useRequest-Bfsh7gIm.js.map +0 -1
  174. package/src/deprecatedRootExports.ts +0 -226
@@ -1,22 +1,21 @@
1
- import { a as BaseButton_default, n as BaseModal_default, o as __exportAll } from "./useDropdownState-uFIz6Yv8.js";
1
+ import { a as BaseButton_default, n as BaseModal_default, o as __exportAll } from "./useDropdownState-CcBzUYZ6.js";
2
2
  import { o as useApi } from "./experiment-DyO54FQB.js";
3
- import { D as compareTime, G as normalizeOptionInput, H as useListSelection, I as FormField_default, K as BaseInput_default, O as durationMinutes, P as time_exports, R as useRovingFocus, V as BaseSelect_default, z as BaseCheckbox_default } from "./records-CWRztE5M.js";
4
- import { C as FormulaInput_default, D as _plugin_vue_export_helper_default, L as definePlateEditor, N as NumberInput_default, P as DatePicker_default, S as useSequenceUtils, T as renderFormulaParts, a as StepWizard_default, b as MoleculeInput_default, i as useReorderAnnouncer, m as recordValue, r as useListReorder, v as ConcentrationInput_default, w as formula_exports, x as SequenceInput_default, y as useConcentrationUnits, z as defineWellPlate } from "./useListReorder-QqJc1dpX.js";
5
- import { t as SegmentedControl_default } from "./SegmentedControl-Dz41vAFM.js";
6
- import { n as DataStateInternal_default, o as useTextSearch, r as LoadingSpinner_default, t as AlertBox_default } from "./AlertBox-CIhqsWbN.js";
7
- import { C as hexToHsl, E as sampleTypeMarker, S as deriveShade, T as WellPlate_default, _ as mintPlotlyTemplate, b as PlateEditor_default, g as ChartContainer_default, h as PlotlyChart_default, i as GeneratedResultRenderer_default, n as ScheduleCalendar_default, r as useScheduleDrag, t as useRackEditor, v as DoseCalculator_default, w as hslToHex, x as SAMPLE_GROUP_TOKENS, y as dose_exports } from "./useRackEditor-BHGM1Ngz.js";
8
- import { n as ActionMenu_default } from "./useRequest-Bfsh7gIm.js";
9
- import { t as defineControlModel } from "./controlSchemaModel-BbXbMgc6.js";
10
- import { d as unwrapExperimentDesignData, i as readFileAsText, t as useExperimentSamples } from "./useExperimentSamples-Cz2v3V_q.js";
3
+ import { B as BaseCheckbox_default, F as time_exports, H as BaseSelect_default, K as normalizeOptionInput, L as FormField_default, O as compareTime, T as ActionMenu_default, U as useListSelection, k as durationMinutes, q as BaseInput_default, z as useRovingFocus } from "./records-GtiVMlTQ.js";
4
+ import { C as FormulaInput_default, D as _plugin_vue_export_helper_default, L as definePlateEditor, N as NumberInput_default, P as DatePicker_default, S as useSequenceUtils, T as renderFormulaParts, a as StepWizard_default, b as MoleculeInput_default, i as useReorderAnnouncer, m as recordValue, r as useListReorder, v as ConcentrationInput_default, w as formula_exports, x as SequenceInput_default, y as useConcentrationUnits, z as defineWellPlate } from "./useListReorder-Bp4EAI2w.js";
5
+ import { t as SegmentedControl_default } from "./SegmentedControl-B8KgyOjd.js";
6
+ import { n as DataStateInternal_default, o as useTextSearch, r as LoadingSpinner_default, t as AlertBox_default } from "./AlertBox-Cai0w7gF.js";
7
+ import { C as hexToHsl, D as SectionCard_default, E as sampleTypeMarker, S as deriveShade, T as WellPlate_default, _ as mintPlotlyTemplate, b as PlateEditor_default, g as ChartContainer_default, h as PlotlyChart_default, i as GeneratedResultRenderer_default, n as ScheduleCalendar_default, r as useScheduleDrag, t as useRackEditor, v as DoseCalculator_default, w as hslToHex, x as SAMPLE_GROUP_TOKENS, y as dose_exports } from "./useRackEditor-i2bdPUFf.js";
8
+ import { t as defineControlModel } from "./controlSchemaModel-BtFNZj8t.js";
9
+ import { d as unwrapExperimentDesignData, i as readFileAsText, t as useExperimentSamples } from "./useExperimentSamples-CpNXvpUn.js";
11
10
  import { t as useExpansionSet } from "./useExpansionSet-CvoNMZJi.js";
12
11
  import { Fragment, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, h, mergeProps, nextTick, normalizeClass, normalizeStyle, onMounted, openBlock, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, toDisplayString, toHandlers, toValue, unref, useId, vModelText, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
13
12
  import { Layers, RotateCcw, WandSparkles } from "lucide-vue-next";
14
13
  //#region src/components/BaseTabs.vue?vue&type=script&setup=true&lang.ts
15
- var _hoisted_1$17 = {
14
+ var _hoisted_1$16 = {
16
15
  class: "mint-tabs mint-tabs--underline",
17
16
  role: "tablist"
18
17
  };
19
- var _hoisted_2$17 = [
18
+ var _hoisted_2$16 = [
20
19
  "id",
21
20
  "aria-selected",
22
21
  "aria-disabled",
@@ -24,8 +23,8 @@ var _hoisted_2$17 = [
24
23
  "tabindex",
25
24
  "onClick"
26
25
  ];
27
- var _hoisted_3$14 = { class: "mint-tab__content" };
28
- var _hoisted_4$13 = {
26
+ var _hoisted_3$13 = { class: "mint-tab__content" };
27
+ var _hoisted_4$12 = {
29
28
  key: 0,
30
29
  class: "mint-tab__icon mint-tab__icon--svg",
31
30
  viewBox: "0 0 24 24",
@@ -36,8 +35,8 @@ var _hoisted_4$13 = {
36
35
  "stroke-linejoin": "round",
37
36
  "aria-hidden": "true"
38
37
  };
39
- var _hoisted_5$12 = ["d"];
40
- var _hoisted_6$9 = ["d"];
38
+ var _hoisted_5$11 = ["d"];
39
+ var _hoisted_6$8 = ["d"];
41
40
  var _hoisted_7$8 = {
42
41
  key: 1,
43
42
  class: "mint-tab__icon"
@@ -87,7 +86,7 @@ var BaseTabs_default = /* @__PURE__ */ defineComponent({
87
86
  getElement: (id) => tabButtonRefs.get(id)
88
87
  });
89
88
  return (_ctx, _cache) => {
90
- return openBlock(), createElementBlock("div", _hoisted_1$17, [(openBlock(true), createElementBlock(Fragment, null, renderList(normalizedTabs.value, (tab) => {
89
+ return openBlock(), createElementBlock("div", _hoisted_1$16, [(openBlock(true), createElementBlock(Fragment, null, renderList(normalizedTabs.value, (tab) => {
91
90
  return openBlock(), createElementBlock("button", {
92
91
  id: `mint-tab-${tab.id}`,
93
92
  key: tab.id,
@@ -106,30 +105,30 @@ var BaseTabs_default = /* @__PURE__ */ defineComponent({
106
105
  ]),
107
106
  onClick: ($event) => selectTab(tab.id),
108
107
  onKeydown: _cache[0] || (_cache[0] = (...args) => unref(handleKeydown) && unref(handleKeydown)(...args))
109
- }, [createElementVNode("span", _hoisted_3$14, [
110
- isSvgIcon(tab.icon) ? (openBlock(), createElementBlock("svg", _hoisted_4$13, [Array.isArray(tab.icon) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(tab.icon, (d, index) => {
108
+ }, [createElementVNode("span", _hoisted_3$13, [
109
+ isSvgIcon(tab.icon) ? (openBlock(), createElementBlock("svg", _hoisted_4$12, [Array.isArray(tab.icon) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(tab.icon, (d, index) => {
111
110
  return openBlock(), createElementBlock("path", {
112
111
  key: index,
113
112
  d
114
- }, null, 8, _hoisted_5$12);
113
+ }, null, 8, _hoisted_5$11);
115
114
  }), 128)) : (openBlock(), createElementBlock("path", {
116
115
  key: 1,
117
116
  d: tab.icon
118
- }, null, 8, _hoisted_6$9))])) : tab.icon ? (openBlock(), createElementBlock("span", _hoisted_7$8, toDisplayString(tab.icon), 1)) : createCommentVNode("", true),
117
+ }, null, 8, _hoisted_6$8))])) : tab.icon ? (openBlock(), createElementBlock("span", _hoisted_7$8, toDisplayString(tab.icon), 1)) : createCommentVNode("", true),
119
118
  createTextVNode(" " + toDisplayString(tab.label) + " ", 1),
120
119
  tab.badge !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_8$8, toDisplayString(tab.badge), 1)) : createCommentVNode("", true)
121
- ])], 42, _hoisted_2$17);
120
+ ])], 42, _hoisted_2$16);
122
121
  }), 128))]);
123
122
  };
124
123
  }
125
124
  });
126
125
  //#endregion
127
126
  //#region src/components/BasePill.vue?vue&type=script&setup=true&lang.ts
128
- var _hoisted_1$16 = {
127
+ var _hoisted_1$15 = {
129
128
  key: 1,
130
129
  class: "mint-pill__icon"
131
130
  };
132
- var _hoisted_2$16 = { class: "mint-pill__label" };
131
+ var _hoisted_2$15 = { class: "mint-pill__label" };
133
132
  //#endregion
134
133
  //#region src/components/BasePill.vue
135
134
  var BasePill_default = /* @__PURE__ */ defineComponent({
@@ -193,8 +192,8 @@ var BasePill_default = /* @__PURE__ */ defineComponent({
193
192
  class: normalizeClass(["mint-pill__dot", { "mint-pill__dot--pulse": __props.pulse }]),
194
193
  "aria-hidden": "true"
195
194
  }, null, 2)) : createCommentVNode("", true),
196
- __props.icon ? (openBlock(), createElementBlock("span", _hoisted_1$16, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
197
- createElementVNode("span", _hoisted_2$16, [renderSlot(_ctx.$slots, "default")]),
195
+ __props.icon ? (openBlock(), createElementBlock("span", _hoisted_1$15, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
196
+ createElementVNode("span", _hoisted_2$15, [renderSlot(_ctx.$slots, "default")]),
198
197
  __props.removable && !__props.disabled ? (openBlock(), createElementBlock("button", {
199
198
  key: 2,
200
199
  type: "button",
@@ -374,20 +373,20 @@ function updateWellsFromDoseResults(source) {
374
373
  }
375
374
  //#endregion
376
375
  //#region src/components/ProgressBar.vue?vue&type=script&setup=true&lang.ts
377
- var _hoisted_1$15 = { class: "mint-progress" };
378
- var _hoisted_2$15 = {
376
+ var _hoisted_1$14 = { class: "mint-progress" };
377
+ var _hoisted_2$14 = {
379
378
  key: 0,
380
379
  class: "mint-progress__header"
381
380
  };
382
- var _hoisted_3$13 = {
381
+ var _hoisted_3$12 = {
383
382
  key: 0,
384
383
  class: "mint-progress__label"
385
384
  };
386
- var _hoisted_4$12 = {
385
+ var _hoisted_4$11 = {
387
386
  key: 1,
388
387
  class: "mint-progress__value"
389
388
  };
390
- var _hoisted_5$11 = [
389
+ var _hoisted_5$10 = [
391
390
  "aria-valuenow",
392
391
  "aria-valuemin",
393
392
  "aria-valuemax",
@@ -421,7 +420,7 @@ var ProgressBar_default = /* @__PURE__ */ defineComponent({
421
420
  return { width: `${clampedValue.value}%` };
422
421
  });
423
422
  return (_ctx, _cache) => {
424
- return openBlock(), createElementBlock("div", _hoisted_1$15, [__props.label || __props.showValue ? (openBlock(), createElementBlock("div", _hoisted_2$15, [__props.label ? (openBlock(), createElementBlock("span", _hoisted_3$13, toDisplayString(__props.label), 1)) : createCommentVNode("", true), __props.showValue && !__props.indeterminate ? (openBlock(), createElementBlock("span", _hoisted_4$12, toDisplayString(clampedValue.value) + "%", 1)) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("div", {
423
+ return openBlock(), createElementBlock("div", _hoisted_1$14, [__props.label || __props.showValue ? (openBlock(), createElementBlock("div", _hoisted_2$14, [__props.label ? (openBlock(), createElementBlock("span", _hoisted_3$12, toDisplayString(__props.label), 1)) : createCommentVNode("", true), __props.showValue && !__props.indeterminate ? (openBlock(), createElementBlock("span", _hoisted_4$11, toDisplayString(clampedValue.value) + "%", 1)) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("div", {
425
424
  class: normalizeClass(["mint-progress__track", `mint-progress__track--${__props.size}`]),
426
425
  role: "progressbar",
427
426
  "aria-valuenow": __props.indeterminate ? void 0 : clampedValue.value,
@@ -435,85 +434,7 @@ var ProgressBar_default = /* @__PURE__ */ defineComponent({
435
434
  __props.indeterminate ? "mint-progress__bar--indeterminate" : ""
436
435
  ]),
437
436
  style: normalizeStyle(barStyle.value)
438
- }, null, 6)], 10, _hoisted_5$11)]);
439
- };
440
- }
441
- });
442
- //#endregion
443
- //#region src/components/SectionCard.vue?vue&type=script&setup=true&lang.ts
444
- var _hoisted_1$14 = {
445
- class: "mint-section-card__icon",
446
- viewBox: "0 0 24 24",
447
- fill: "none",
448
- stroke: "currentColor",
449
- "stroke-width": "2",
450
- "stroke-linecap": "round",
451
- "stroke-linejoin": "round",
452
- "aria-hidden": "true"
453
- };
454
- var _hoisted_2$14 = ["d"];
455
- var _hoisted_3$12 = {
456
- key: 1,
457
- class: "mint-section-card__count"
458
- };
459
- var _hoisted_4$11 = {
460
- key: 0,
461
- class: "mint-section-card__toolbar"
462
- };
463
- var _hoisted_5$10 = { class: "mint-section-card__body" };
464
- var _hoisted_6$8 = {
465
- key: 1,
466
- class: "mint-section-card__footer"
467
- };
468
- //#endregion
469
- //#region src/components/SectionCard.vue
470
- var SectionCard_default = /* @__PURE__ */ defineComponent({
471
- __name: "SectionCard",
472
- props: {
473
- title: {},
474
- count: { default: void 0 },
475
- icon: { default: void 0 },
476
- accent: { default: "primary" },
477
- uppercase: {
478
- type: Boolean,
479
- default: false
480
- },
481
- divider: { default: "strong" },
482
- fill: {
483
- type: Boolean,
484
- default: false
485
- }
486
- },
487
- setup(__props) {
488
- /** One-card page region from the MINT 1.1 card system: 12px radius, the
489
- * single --card-shadow token, a header strip (icon chip, title, mono count,
490
- * actions), and hairline-separated content — no card-in-card. */
491
- const props = __props;
492
- const iconPaths = computed(() => props.icon === void 0 ? [] : Array.isArray(props.icon) ? props.icon : [props.icon]);
493
- const headerClasses = computed(() => ["mint-section-card__header", props.divider === "light" ? "mint-section-card__header--divider-light" : ""]);
494
- const titleClasses = computed(() => ["mint-section-card__title", props.uppercase ? "mint-section-card__title--uppercase" : ""]);
495
- const cardClasses = computed(() => ["mint-section-card", props.fill ? "mint-section-card--fill" : ""]);
496
- return (_ctx, _cache) => {
497
- return openBlock(), createElementBlock("section", { class: normalizeClass(cardClasses.value) }, [
498
- createElementVNode("div", { class: normalizeClass(headerClasses.value) }, [
499
- iconPaths.value.length ? (openBlock(), createElementBlock("span", {
500
- key: 0,
501
- class: normalizeClass(["mint-section-card__icon-chip", `mint-section-card__icon-chip--${__props.accent}`])
502
- }, [(openBlock(), createElementBlock("svg", _hoisted_1$14, [(openBlock(true), createElementBlock(Fragment, null, renderList(iconPaths.value, (d, i) => {
503
- return openBlock(), createElementBlock("path", {
504
- key: i,
505
- d
506
- }, null, 8, _hoisted_2$14);
507
- }), 128))]))], 2)) : createCommentVNode("", true),
508
- createElementVNode("h2", { class: normalizeClass(titleClasses.value) }, toDisplayString(__props.title), 3),
509
- __props.count !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_3$12, toDisplayString(__props.count), 1)) : createCommentVNode("", true),
510
- _cache[0] || (_cache[0] = createElementVNode("div", { class: "mint-section-card__spacer" }, null, -1)),
511
- renderSlot(_ctx.$slots, "actions")
512
- ], 2),
513
- _ctx.$slots.toolbar ? (openBlock(), createElementBlock("div", _hoisted_4$11, [renderSlot(_ctx.$slots, "toolbar")])) : createCommentVNode("", true),
514
- createElementVNode("div", _hoisted_5$10, [renderSlot(_ctx.$slots, "default")]),
515
- _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_6$8, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true)
516
- ], 2);
437
+ }, null, 6)], 10, _hoisted_5$10)]);
517
438
  };
518
439
  }
519
440
  });
@@ -3874,15 +3795,20 @@ var AutoGroupModalInternal_default = /* @__PURE__ */ defineComponent({
3874
3795
  function close() {
3875
3796
  emit("update:open", false);
3876
3797
  }
3798
+ let fetchGeneration = 0;
3877
3799
  async function fetchExperimentData() {
3878
3800
  if (!props.experimentId && !props.designData) return;
3801
+ const generation = ++fetchGeneration;
3879
3802
  autoGroup.inputMode.value = "experiment";
3880
3803
  experimentError.value = null;
3881
3804
  experimentLoading.value = true;
3882
3805
  try {
3883
3806
  let pluginData;
3884
3807
  if (props.designData) pluginData = props.designData;
3885
- else pluginData = (await api.get(`/experiments/${props.experimentId}/data`)).data;
3808
+ else {
3809
+ pluginData = (await api.get(`/experiments/${props.experimentId}/data`)).data;
3810
+ if (generation !== fetchGeneration) return;
3811
+ }
3886
3812
  if (!pluginData || typeof pluginData !== "object") {
3887
3813
  experimentError.value = "No design data found for this experiment";
3888
3814
  return;
@@ -3893,13 +3819,17 @@ var AutoGroupModalInternal_default = /* @__PURE__ */ defineComponent({
3893
3819
  }
3894
3820
  setQcRouting(qcRouting.value);
3895
3821
  } catch (e) {
3896
- experimentError.value = e instanceof Error ? e.message : "Failed to fetch experiment data";
3822
+ if (generation === fetchGeneration) experimentError.value = e instanceof Error ? e.message : "Failed to fetch experiment data";
3897
3823
  } finally {
3898
- experimentLoading.value = false;
3824
+ if (generation === fetchGeneration) experimentLoading.value = false;
3899
3825
  }
3900
3826
  }
3901
3827
  watch(() => props.open, (open) => {
3902
- if (!open) return;
3828
+ if (!open) {
3829
+ fetchGeneration += 1;
3830
+ experimentLoading.value = false;
3831
+ return;
3832
+ }
3903
3833
  activeWorkflow.value = props.initialMode;
3904
3834
  experimentError.value = null;
3905
3835
  qcAsOverlay.value = true;
@@ -7070,7 +7000,7 @@ var InstrumentStatusPanels_default = /*#__PURE__*/ _plugin_vue_export_helper_def
7070
7000
  }, 8, ["title", "count"]);
7071
7001
  };
7072
7002
  }
7073
- }), [["__scopeId", "data-v-3c05755e"]]);
7003
+ }), [["__scopeId", "data-v-1a9246f6"]]);
7074
7004
  //#endregion
7075
7005
  //#region src/components/TimeRangeInput.vue?vue&type=script&setup=true&lang.ts
7076
7006
  var _hoisted_1$1 = { class: "mint-time-range" };
@@ -7496,6 +7426,6 @@ var lab_exports = /* @__PURE__ */ __exportAll({
7496
7426
  useSequenceUtils: () => useSequenceUtils
7497
7427
  });
7498
7428
  //#endregion
7499
- export { defineWellPlateControlProps as C, BaseTabs_default as D, BasePill_default as E, defineDoseDesignControlModel as S, defineWellPlateDoseControlProps as T, SampleSelector_default as _, useReagentSeries as a, ProgressBar_default as b, InstrumentStatusPanels_default as c, ChemicalFormula_default as d, AdductText_default as f, SampleHierarchyTree_default as g, useProtocolTemplates as h, generateDilutionSeries as i, InstrumentStateBadge_default as l, ProtocolStepEditor_default as m, DEFAULT_PRESETS as n, ResourceCard_default as o, ScientificNumber_default as p, DEFAULT_UNITS as r, TimeRangeInput_default as s, lab_exports as t, SequenceProgressBar_default as u, useSampleGroups as v, defineWellPlateDoseComponentBindings as w, defineDoseCalculatorControlProps as x, SectionCard_default as y };
7429
+ export { defineWellPlateDoseComponentBindings as C, BaseTabs_default as E, defineWellPlateControlProps as S, BasePill_default as T, SampleSelector_default as _, useReagentSeries as a, defineDoseCalculatorControlProps as b, InstrumentStatusPanels_default as c, ChemicalFormula_default as d, AdductText_default as f, SampleHierarchyTree_default as g, useProtocolTemplates as h, generateDilutionSeries as i, InstrumentStateBadge_default as l, ProtocolStepEditor_default as m, DEFAULT_PRESETS as n, ResourceCard_default as o, ScientificNumber_default as p, DEFAULT_UNITS as r, TimeRangeInput_default as s, lab_exports as t, SequenceProgressBar_default as u, useSampleGroups as v, defineWellPlateDoseControlProps as w, defineDoseDesignControlModel as x, ProgressBar_default as y };
7500
7430
 
7501
- //# sourceMappingURL=lab-CbdDLAVr.js.map
7431
+ //# sourceMappingURL=lab-BYhb_cJI.js.map