@morscherlab/mint-sdk 1.4.0-beta.2 → 1.4.0-beta.21

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 (353) hide show
  1. package/README.md +14 -3
  2. package/dist/{ActionMenu-CScINahU.js → AlertBox-DwgNTEqf.js} +40 -209
  3. package/dist/AlertBox-DwgNTEqf.js.map +1 -0
  4. package/dist/{AppSidebar-BmiiPfz9.js → AppSidebar-CZZaxni0.js} +1249 -239
  5. package/dist/AppSidebar-CZZaxni0.js.map +1 -0
  6. package/dist/{ConfirmDialog-CJ7hqYUP.js → ConfirmDialog-CjWoxAD1.js} +2 -2
  7. package/dist/{ConfirmDialog-CJ7hqYUP.js.map → ConfirmDialog-CjWoxAD1.js.map} +1 -1
  8. package/dist/ExperimentPopover-DujiuQIO.js +337 -0
  9. package/dist/ExperimentPopover-DujiuQIO.js.map +1 -0
  10. package/dist/{ExperimentSelectorModal-D-9z7cNx.js → ExperimentSelectorModal-B4j4eUOJ.js} +244 -211
  11. package/dist/ExperimentSelectorModal-B4j4eUOJ.js.map +1 -0
  12. package/dist/{SegmentedControl-DERBN-Xd.js → SegmentedControl-DyUPH3I5.js} +2 -2
  13. package/dist/{SegmentedControl-DERBN-Xd.js.map → SegmentedControl-DyUPH3I5.js.map} +1 -1
  14. package/dist/{SettingsModal-CSLE31yg.js → SettingsModal-D2MOOtuO.js} +28 -27
  15. package/dist/SettingsModal-D2MOOtuO.js.map +1 -0
  16. package/dist/__stories__/experiment-helpers.d.ts +10 -0
  17. package/dist/__tests__/components/AppTopBarOnboarding.test.d.ts +1 -0
  18. package/dist/__tests__/components/FloatingPanelsInModal.test.d.ts +1 -0
  19. package/dist/__tests__/composables/useFloatingPanel.test.d.ts +1 -0
  20. package/dist/__tests__/composables/useOnboarding.test.d.ts +1 -0
  21. package/dist/__tests__/styles/paletteTokens.test.d.ts +1 -0
  22. package/dist/__tests__/styles/v2AuditRules.test.d.ts +1 -0
  23. package/dist/components/AppSidebar.vue.d.ts +1 -1
  24. package/dist/components/AppTopBar.vue.d.ts +20 -5
  25. package/dist/components/ArtifactSaveDialog.vue.d.ts +9 -1
  26. package/dist/components/AuditTrail.vue.d.ts +1 -1
  27. package/dist/components/BaseButton.vue.d.ts +4 -2
  28. package/dist/components/BaseSelect.vue.d.ts +2 -2
  29. package/dist/components/ChartContainer.vue.d.ts +2 -0
  30. package/dist/components/DatePicker.vue.d.ts +1 -1
  31. package/dist/components/ExperimentPopover.vue.d.ts +18 -0
  32. package/dist/components/ExperimentSelectorModal.vue.d.ts +15 -5
  33. package/dist/components/FilePicker.vue.d.ts +1 -1
  34. package/dist/components/FileUploader.vue.d.ts +2 -2
  35. package/dist/components/JobsStatusTray.vue.d.ts +15 -4
  36. package/dist/components/PluginIcon.vue.d.ts +2 -2
  37. package/dist/components/PluginWorkspaceView.props.d.ts +3 -0
  38. package/dist/components/PluginWorkspaceView.vue.d.ts +3 -0
  39. package/dist/components/SampleSelector.vue.d.ts +6 -6
  40. package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
  41. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +3 -3
  42. package/dist/components/StepWizard.vue.d.ts +3 -0
  43. package/dist/components/internal/AppTopBarOnboardingInternal.vue.d.ts +7 -0
  44. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -1
  45. package/dist/components/internal/AutoGroupModalInternal.vue.d.ts +3 -3
  46. package/dist/components/internal/DatePickerTimeInternal.vue.d.ts +1 -1
  47. package/dist/components/internal/OnboardingLayerInternal.vue.d.ts +7 -0
  48. package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +2 -7
  49. package/dist/components/internal/SelectMultipleInternal.vue.d.ts +4 -0
  50. package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +8 -0
  51. package/dist/composables/createClient.d.ts +2 -0
  52. package/dist/composables/index.d.ts +1 -0
  53. package/dist/composables/pluginIdentity.d.ts +24 -0
  54. package/dist/composables/pluginWorkspaceModel.d.ts +2 -2
  55. package/dist/composables/useAppExperiment.d.ts +8 -0
  56. package/dist/composables/useCalendarGrid.d.ts +1 -1
  57. package/dist/composables/useExperimentSelector.d.ts +6 -2
  58. package/dist/composables/useFileImport.d.ts +7 -0
  59. package/dist/composables/useFloatingPanel.d.ts +29 -0
  60. package/dist/composables/useJobCenter.d.ts +41 -3
  61. package/dist/composables/useOnboarding.d.ts +119 -0
  62. package/dist/composables/usePlatform.d.ts +1 -0
  63. package/dist/{controlSchemaModel-CP5-_nAj.js → controlSchemaModel-Bsg0t5Ab.js} +2 -2
  64. package/dist/{controlSchemaModel-CP5-_nAj.js.map → controlSchemaModel-Bsg0t5Ab.js.map} +1 -1
  65. package/dist/{data-C2PwI_dn.js → data-Boeh4uPI.js} +180 -125
  66. package/dist/data-Boeh4uPI.js.map +1 -0
  67. package/dist/data.d.ts +1 -1
  68. package/dist/data.js +9 -9
  69. package/dist/{experiment-43OJtH7R.js → experiment-DyO54FQB.js} +25 -61
  70. package/dist/experiment-DyO54FQB.js.map +1 -0
  71. package/dist/{experimentStatus-BZmU4czV.js → experimentStatus-DCn2QKG7.js} +3 -3
  72. package/dist/{experimentStatus-BZmU4czV.js.map → experimentStatus-DCn2QKG7.js.map} +1 -1
  73. package/dist/index.js +20 -20
  74. package/dist/{install-DAID6c2-.js → install-BEHp7Mo-.js} +15 -14
  75. package/dist/{install-DAID6c2-.js.map → install-BEHp7Mo-.js.map} +1 -1
  76. package/dist/install.js +1 -1
  77. package/dist/{lab-DLwRl_Ql.js → lab-D61eaX6f.js} +136 -148
  78. package/dist/lab-D61eaX6f.js.map +1 -0
  79. package/dist/lab.js +4 -3
  80. package/dist/{records-BzTcxekG.js → records-D4aQXyZu.js} +647 -389
  81. package/dist/records-D4aQXyZu.js.map +1 -0
  82. package/dist/{runtime-D6gVat6r.js → runtime-q-R0CNLh.js} +417 -54
  83. package/dist/runtime-q-R0CNLh.js.map +1 -0
  84. package/dist/runtime.d.ts +1 -1
  85. package/dist/runtime.js +7 -7
  86. package/dist/{shell-5ju97nOS.js → shell-6CGFvUUw.js} +10 -5
  87. package/dist/{shell-5ju97nOS.js.map → shell-6CGFvUUw.js.map} +1 -1
  88. package/dist/shell.d.ts +1 -0
  89. package/dist/shell.js +6 -6
  90. package/dist/stores/index.d.ts +1 -1
  91. package/dist/stores/index.js +2 -2
  92. package/dist/stores/settings.d.ts +4 -12
  93. package/dist/styles.css +2753 -2101
  94. package/dist/types/componentWorkflowTypes.d.ts +2 -0
  95. package/dist/types/components.d.ts +2 -0
  96. package/dist/types/generated/platformContext.d.ts +1 -0
  97. package/dist/types/generated-ui.d.ts +4 -0
  98. package/dist/types/index.d.ts +1 -1
  99. package/dist/types/jobs.d.ts +9 -0
  100. package/dist/types/platform.d.ts +1 -1
  101. package/dist/{BaseModal-DfRIuVoj.js → useDropdownState-uFIz6Yv8.js} +75 -5
  102. package/dist/useDropdownState-uFIz6Yv8.js.map +1 -0
  103. package/dist/{useExperimentSamples-CxcnxZ8h.js → useExperimentSamples-QEFoq4tf.js} +48 -6
  104. package/dist/useExperimentSamples-QEFoq4tf.js.map +1 -0
  105. package/dist/{useListReorder-CcbEYxX-.js → useListReorder-DsuzwWGS.js} +219 -437
  106. package/dist/useListReorder-DsuzwWGS.js.map +1 -0
  107. package/dist/{useRackEditor-BD5NIo5s.js → useRackEditor-KpZ4iJ6o.js} +85 -81
  108. package/dist/useRackEditor-KpZ4iJ6o.js.map +1 -0
  109. package/dist/useRealtime-B58Lo-Tm.js +508 -0
  110. package/dist/useRealtime-B58Lo-Tm.js.map +1 -0
  111. package/dist/useRequest-BuDmW8Jc.js +215 -0
  112. package/dist/useRequest-BuDmW8Jc.js.map +1 -0
  113. package/dist/utils/time.d.ts +7 -0
  114. package/package.json +3 -2
  115. package/src/__stories__/experiment-helpers.ts +3 -3
  116. package/src/__tests__/components/ActionMenu.test.ts +2 -2
  117. package/src/__tests__/components/AppTopBar.test.ts +257 -3
  118. package/src/__tests__/components/AppTopBarOnboarding.test.ts +160 -0
  119. package/src/__tests__/components/AppTopBarPageSelector.test.ts +125 -9
  120. package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
  121. package/src/__tests__/components/ArtifactSaveDialog.test.ts +78 -0
  122. package/src/__tests__/components/BaseButton.test.ts +19 -0
  123. package/src/__tests__/components/BaseModal.test.ts +13 -0
  124. package/src/__tests__/components/BaseSelect.multiple.test.ts +87 -32
  125. package/src/__tests__/components/BaseSelect.test.ts +2 -1
  126. package/src/__tests__/components/BatchProgressList.test.ts +16 -0
  127. package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
  128. package/src/__tests__/components/ChartContainer.test.ts +11 -0
  129. package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
  130. package/src/__tests__/components/DatePicker.datetime.test.ts +6 -0
  131. package/src/__tests__/components/DatePicker.test.ts +21 -0
  132. package/src/__tests__/components/DatePicker.time.test.ts +2 -2
  133. package/src/__tests__/components/EmptyState.test.ts +1 -1
  134. package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
  135. package/src/__tests__/components/ExperimentSelectorModal.test.ts +153 -14
  136. package/src/__tests__/components/FloatingPanelsInModal.test.ts +94 -0
  137. package/src/__tests__/components/GeneratedPluginView.test.ts +23 -2
  138. package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
  139. package/src/__tests__/components/JobsStatusTray.test.ts +373 -71
  140. package/src/__tests__/components/PluginWorkspaceView.test.ts +63 -1
  141. package/src/__tests__/components/ResourcePickerListInternal.test.ts +0 -20
  142. package/src/__tests__/components/SampleSelector.test.ts +33 -8
  143. package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
  144. package/src/__tests__/components/SettingsModal.test.ts +9 -2
  145. package/src/__tests__/components/StepWizard.test.ts +11 -0
  146. package/src/__tests__/components/WellPlate.decoration.test.ts +11 -4
  147. package/src/__tests__/components/deprecationTags.test.ts +1 -1
  148. package/src/__tests__/composables/useAppExperiment.test.ts +27 -1
  149. package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
  150. package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
  151. package/src/__tests__/composables/useFileImport.test.ts +36 -0
  152. package/src/__tests__/composables/useFloatingPanel.test.ts +68 -0
  153. package/src/__tests__/composables/useJobCenter.test.ts +262 -3
  154. package/src/__tests__/composables/useOnboarding.test.ts +317 -0
  155. package/src/__tests__/docs/frontendDocsCatalog.test.ts +4 -3
  156. package/src/__tests__/fixtures/table-import/cells.xlsx +0 -0
  157. package/src/__tests__/fixtures/table-import/samples.xlsx +0 -0
  158. package/src/__tests__/stores/settings.test.ts +21 -21
  159. package/src/__tests__/styles/baseControlsRules.test.ts +6 -2
  160. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  161. package/src/__tests__/styles/cssTokens.test.ts +6 -3
  162. package/src/__tests__/styles/menusShellRefresh.test.ts +22 -12
  163. package/src/__tests__/styles/paletteTokens.test.ts +44 -0
  164. package/src/__tests__/styles/v2AuditRules.test.ts +104 -0
  165. package/src/__tests__/utils/plotlyTemplate.test.ts +4 -4
  166. package/src/__tests__/utils/time.test.ts +18 -1
  167. package/src/components/ActionMenu.vue +6 -37
  168. package/src/components/AdductText.story.vue +7 -0
  169. package/src/components/AdductText.vue +1 -1
  170. package/src/components/AlertBox.story.vue +2 -2
  171. package/src/components/AlertBox.vue +18 -16
  172. package/src/components/AppSidebar.story.vue +0 -28
  173. package/src/components/AppTopBar.onboarding.story.vue +69 -0
  174. package/src/components/AppTopBar.story.vue +105 -15
  175. package/src/components/AppTopBar.vue +248 -122
  176. package/src/components/ArtifactSaveDialog.story.vue +23 -0
  177. package/src/components/ArtifactSaveDialog.vue +102 -12
  178. package/src/components/AuditTrail.story.vue +2 -1
  179. package/src/components/AuditTrail.vue +2 -21
  180. package/src/components/Avatar.vue +10 -14
  181. package/src/components/BaseButton.vue +16 -2
  182. package/src/components/BaseModal.vue +2 -1
  183. package/src/components/BaseSelect.multiple.story.vue +13 -2
  184. package/src/components/BaseSelect.vue +4 -3
  185. package/src/components/BatchProgressList.vue +35 -25
  186. package/src/components/ChartContainer.story.vue +2 -1
  187. package/src/components/ChartContainer.vue +8 -6
  188. package/src/components/ConfirmDialog.story.vue +1 -1
  189. package/src/components/EmptyState.vue +1 -1
  190. package/src/components/ExperimentPopover.story.vue +165 -53
  191. package/src/components/ExperimentPopover.vue +169 -187
  192. package/src/components/ExperimentSelectorModal.story.vue +73 -31
  193. package/src/components/ExperimentSelectorModal.vue +144 -111
  194. package/src/components/FormField.story.vue +8 -48
  195. package/src/components/GeneratedPluginView.vue +11 -10
  196. package/src/components/GeneratedResultRenderer.vue +3 -4
  197. package/src/components/InstrumentStateBadge.vue +1 -1
  198. package/src/components/JobsStatusTray.story.vue +97 -43
  199. package/src/components/JobsStatusTray.vue +287 -290
  200. package/src/components/LayoutResizeHandle.story.vue +65 -4
  201. package/src/components/LoadingSpinner.vue +1 -1
  202. package/src/components/NumberInput.vue +3 -6
  203. package/src/components/PluginIcon.story.vue +2 -10
  204. package/src/components/PluginIcon.vue +2 -2
  205. package/src/components/PluginWorkspaceView.props.ts +3 -0
  206. package/src/components/PluginWorkspaceView.story.vue +1 -1
  207. package/src/components/PluginWorkspaceView.vue +17 -0
  208. package/src/components/RuntimeUpdateNotice.vue +1 -1
  209. package/src/components/SampleSelector.story.vue +22 -7
  210. package/src/components/SampleSelector.vue +34 -37
  211. package/src/components/SampleSelectorGroupNode.vue +1 -1
  212. package/src/components/SectionCard.story.vue +35 -2
  213. package/src/components/SequenceProgressBar.story.vue +9 -0
  214. package/src/components/SequenceProgressBar.vue +6 -1
  215. package/src/components/SettingsModal.schema.ts +1 -1
  216. package/src/components/SettingsModal.vue +9 -14
  217. package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
  218. package/src/components/SmartGroupManual.story.vue +1 -1
  219. package/src/components/StepWizard.story.vue +33 -0
  220. package/src/components/StepWizard.vue +8 -1
  221. package/src/components/Tooltip.vue +9 -32
  222. package/src/components/WellPlate.story.vue +3 -1
  223. package/src/components/WellPlate.vue +7 -0
  224. package/src/components/internal/AppTopBarOnboardingInternal.vue +172 -0
  225. package/src/components/internal/AppTopBarPageSelectorInternal.vue +140 -72
  226. package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
  227. package/src/components/internal/DatePickerDateInternal.vue +23 -85
  228. package/src/components/internal/DatePickerDateTimeInternal.vue +10 -14
  229. package/src/components/internal/DatePickerTimeInternal.vue +13 -9
  230. package/src/components/internal/NumberUnitInputInternal.vue +4 -18
  231. package/src/components/internal/OnboardingLayerInternal.vue +173 -0
  232. package/src/components/internal/ResourcePickerListInternal.vue +45 -85
  233. package/src/components/internal/SelectMultipleInternal.vue +187 -65
  234. package/src/components/internal/SelectSearchableInternal.vue +8 -4
  235. package/src/components/internal/WellEditPopupInternal.vue +11 -22
  236. package/src/components/internal/WorkspaceShellInternal.vue +12 -0
  237. package/src/composables/createClient.ts +2 -0
  238. package/src/composables/index.ts +1 -0
  239. package/src/composables/pluginIdentity.ts +31 -0
  240. package/src/composables/pluginWorkspaceModel.ts +2 -2
  241. package/src/composables/useAppExperiment.ts +20 -0
  242. package/src/composables/useCalendarGrid.ts +4 -3
  243. package/src/composables/useExperimentSelector.ts +77 -31
  244. package/src/composables/useFileImport.ts +51 -1
  245. package/src/composables/useFloatingPanel.ts +107 -0
  246. package/src/composables/useJobCenter.ts +188 -6
  247. package/src/composables/useOnboarding.ts +465 -0
  248. package/src/composables/usePluginWorkspace.ts +1 -1
  249. package/src/data.ts +1 -0
  250. package/src/runtime.ts +2 -1
  251. package/src/shell.ts +17 -0
  252. package/src/stores/index.ts +0 -2
  253. package/src/stores/settings.ts +20 -50
  254. package/src/styles/components/action-menu.css +1 -1
  255. package/src/styles/components/adduct-text.css +13 -5
  256. package/src/styles/components/alert-box.css +39 -58
  257. package/src/styles/components/app-layout.css +10 -6
  258. package/src/styles/components/app-page-selector.css +121 -44
  259. package/src/styles/components/app-pill-nav.css +11 -12
  260. package/src/styles/components/app-sidebar.css +9 -18
  261. package/src/styles/components/app-top-bar.css +219 -55
  262. package/src/styles/components/artifact-save-dialog.css +153 -2
  263. package/src/styles/components/audit-trail.css +16 -19
  264. package/src/styles/components/avatar.css +6 -4
  265. package/src/styles/components/batch-progress-list.css +38 -36
  266. package/src/styles/components/button.css +36 -59
  267. package/src/styles/components/calendar.css +12 -12
  268. package/src/styles/components/chart-container.css +34 -23
  269. package/src/styles/components/checkbox.css +2 -12
  270. package/src/styles/components/collapsible-card.css +27 -29
  271. package/src/styles/components/confirm-dialog.css +13 -14
  272. package/src/styles/components/dataframe.css +13 -5
  273. package/src/styles/components/date-picker.css +84 -94
  274. package/src/styles/components/datetime-picker.css +35 -47
  275. package/src/styles/components/divider.css +20 -20
  276. package/src/styles/components/dose-calculator.css +3 -3
  277. package/src/styles/components/empty-state.css +20 -17
  278. package/src/styles/components/experiment-code-badge.css +2 -0
  279. package/src/styles/components/experiment-popover.css +174 -329
  280. package/src/styles/components/experiment-selector-modal.css +88 -56
  281. package/src/styles/components/file-picker.css +3 -3
  282. package/src/styles/components/file-uploader.css +38 -49
  283. package/src/styles/components/form-builder.css +3 -3
  284. package/src/styles/components/formula-input.css +1 -1
  285. package/src/styles/components/icon-button.css +18 -24
  286. package/src/styles/components/input.css +5 -4
  287. package/src/styles/components/instrument-monitor.css +13 -15
  288. package/src/styles/components/jobs-status-tray.css +140 -296
  289. package/src/styles/components/layout-resize-handle.css +59 -16
  290. package/src/styles/components/modal.css +5 -7
  291. package/src/styles/components/molecule-input.css +2 -2
  292. package/src/styles/components/multi-select.css +65 -117
  293. package/src/styles/components/number-input.css +26 -19
  294. package/src/styles/components/onboarding.css +368 -0
  295. package/src/styles/components/pill.css +3 -2
  296. package/src/styles/components/plate-editor.css +0 -1
  297. package/src/styles/components/plugin-icon.css +26 -23
  298. package/src/styles/components/popover.css +2 -2
  299. package/src/styles/components/presence-avatars.css +1 -1
  300. package/src/styles/components/progress-bar.css +3 -3
  301. package/src/styles/components/protocol-step-editor.css +1 -3
  302. package/src/styles/components/resource-card.css +2 -2
  303. package/src/styles/components/resource-picker-list.css +6 -57
  304. package/src/styles/components/sample-hierarchy-tree.css +4 -4
  305. package/src/styles/components/sample-selector.css +138 -79
  306. package/src/styles/components/schedule-calendar.css +8 -8
  307. package/src/styles/components/searchable-select.css +15 -19
  308. package/src/styles/components/section-card.css +54 -49
  309. package/src/styles/components/segmented-control.css +18 -15
  310. package/src/styles/components/select.css +3 -3
  311. package/src/styles/components/sequence-input.css +2 -2
  312. package/src/styles/components/sequence-progress-bar.css +17 -8
  313. package/src/styles/components/settings-modal.css +7 -2
  314. package/src/styles/components/smart-group.css +18 -18
  315. package/src/styles/components/step-wizard.css +52 -16
  316. package/src/styles/components/tabs.css +2 -2
  317. package/src/styles/components/textarea.css +3 -3
  318. package/src/styles/components/time-picker.css +37 -25
  319. package/src/styles/components/toast.css +13 -11
  320. package/src/styles/components/toggle.css +1 -11
  321. package/src/styles/components/tooltip.css +12 -11
  322. package/src/styles/components/unit-input.css +9 -8
  323. package/src/styles/components/well-edit-popup.css +2 -2
  324. package/src/styles/components/well-plate.css +9 -2
  325. package/src/styles/index.css +1 -0
  326. package/src/styles/variables.css +247 -78
  327. package/src/types/componentWorkflowTypes.ts +2 -0
  328. package/src/types/components.ts +2 -0
  329. package/src/types/generated/platformContext.ts +1 -0
  330. package/src/types/generated-ui.ts +4 -0
  331. package/src/types/index.ts +1 -0
  332. package/src/types/jobs.ts +10 -0
  333. package/src/types/platform.ts +1 -1
  334. package/src/utils/time.ts +21 -0
  335. package/dist/ActionMenu-CScINahU.js.map +0 -1
  336. package/dist/AppSidebar-BmiiPfz9.js.map +0 -1
  337. package/dist/BaseModal-DfRIuVoj.js.map +0 -1
  338. package/dist/ExperimentPopover-C4sGw-is.js +0 -359
  339. package/dist/ExperimentPopover-C4sGw-is.js.map +0 -1
  340. package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +0 -1
  341. package/dist/SettingsModal-CSLE31yg.js.map +0 -1
  342. package/dist/data-C2PwI_dn.js.map +0 -1
  343. package/dist/experiment-43OJtH7R.js.map +0 -1
  344. package/dist/lab-DLwRl_Ql.js.map +0 -1
  345. package/dist/records-BzTcxekG.js.map +0 -1
  346. package/dist/runtime-D6gVat6r.js.map +0 -1
  347. package/dist/useExperimentSamples-CxcnxZ8h.js.map +0 -1
  348. package/dist/useListReorder-CcbEYxX-.js.map +0 -1
  349. package/dist/useRackEditor-BD5NIo5s.js.map +0 -1
  350. package/dist/useRealtime-PalKue84.js +0 -696
  351. package/dist/useRealtime-PalKue84.js.map +0 -1
  352. package/dist/useRequest-D5JDfsgZ.js +0 -76
  353. package/dist/useRequest-D5JDfsgZ.js.map +0 -1
@@ -1,15 +1,14 @@
1
- import { a as __exportAll, i as BaseButton_default, n as useFocusTrap, r as useEventListener } from "./BaseModal-DfRIuVoj.js";
2
- import { a as authenticationRequiredError, d as tryUseSettingsStore, i as AuthenticationRequiredError, m as mintApiErrorFromResponse, o as useApi, t as useExperimentStore, u as tableDensityToSize } from "./experiment-43OJtH7R.js";
3
- import { A as useRovingFocus, L as BaseInput_default, O as FormField_default, P as useListSelection, h as FORMAT_KEY, i as getInjectedPlatformContext, j as BaseCheckbox_default, k as EmptyState_default } from "./records-BzTcxekG.js";
4
- import { A as createGeneratedAnalysisTransport, B as defineDataFrame, G as useSortedItems, L as formatTime, M as createEventStream, N as NumberInput_default, O as _plugin_vue_export_helper_default, U as defineWellPlate, b as useConcentrationUnits, i as useReorderAnnouncer, n as reorderList, o as usePlatform, r as useListReorder, y as ConcentrationInput_default, z as applySpecDefaults } from "./useListReorder-CcbEYxX-.js";
5
- import { t as SegmentedControl_default } from "./SegmentedControl-DERBN-Xd.js";
6
- import { i as LoadingSpinner_default, r as DataStateInternal_default, s as useTextSearch, t as ActionMenu_default } from "./ActionMenu-CScINahU.js";
1
+ import { a as BaseButton_default, i as useEventListener, o as __exportAll, r as useFocusTrap } from "./useDropdownState-uFIz6Yv8.js";
2
+ import { a as authenticationRequiredError, c as tableDensityToSize, f as mintApiErrorFromResponse, i as AuthenticationRequiredError, l as tryUseSettingsStore, o as useApi, t as useExperimentStore } from "./experiment-DyO54FQB.js";
3
+ import { H as useListSelection, I as FormField_default, K as BaseInput_default, R as useRovingFocus, W as useFloatingPanel, i as getInjectedPlatformContext, j as formatTime, l as FORMAT_KEY, z as BaseCheckbox_default } from "./records-D4aQXyZu.js";
4
+ import { D as _plugin_vue_export_helper_default, F as applySpecDefaults, I as defineDataFrame, M as usePlatform, N as NumberInput_default, V as useSortedItems, i as useReorderAnnouncer, j as createEventStream, k as createGeneratedAnalysisTransport, n as reorderList, r as useListReorder, v as ConcentrationInput_default, y as useConcentrationUnits, z as defineWellPlate } from "./useListReorder-DsuzwWGS.js";
5
+ import { t as SegmentedControl_default } from "./SegmentedControl-DyUPH3I5.js";
6
+ import { n as DataStateInternal_default, o as useTextSearch, r as LoadingSpinner_default } from "./AlertBox-DwgNTEqf.js";
7
+ import { n as ActionMenu_default, t as useRequest } from "./useRequest-BuDmW8Jc.js";
7
8
  import { r as useAuthStore } from "./auth-SliLnFre.js";
8
- import { t as ConfirmDialog_default } from "./ConfirmDialog-CJ7hqYUP.js";
9
- import { t as useRequest } from "./useRequest-D5JDfsgZ.js";
9
+ import { t as ConfirmDialog_default } from "./ConfirmDialog-CjWoxAD1.js";
10
10
  import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineComponent, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onUnmounted, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, unref, vModelText, vShow, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
11
- import { computePosition, flip, shift } from "@floating-ui/dom";
12
- import { ChevronRight, Download, Move, Plus, Redo2, Trash2, Undo2, Upload, X } from "lucide-vue-next";
11
+ import { ChartLine, ChevronRight, Download, Move, Plus, Redo2, Trash2, Undo2, Upload, X } from "lucide-vue-next";
13
12
  //#region src/components/DataFrame.vue?vue&type=script&setup=true&lang.ts
14
13
  var _hoisted_1$9 = {
15
14
  key: 0,
@@ -37,15 +36,15 @@ var _hoisted_11$5 = {
37
36
  key: 1,
38
37
  d: "M12 5v14m6-6-6 6-6-6"
39
38
  };
40
- var _hoisted_12$4 = { key: 2 };
41
- var _hoisted_13$4 = [
39
+ var _hoisted_12$5 = { key: 2 };
40
+ var _hoisted_13$5 = [
42
41
  "aria-label",
43
42
  "aria-valuemin",
44
43
  "aria-valuenow",
45
44
  "onMousedown",
46
45
  "onKeydown"
47
46
  ];
48
- var _hoisted_14$4 = [
47
+ var _hoisted_14$5 = [
49
48
  "tabindex",
50
49
  "role",
51
50
  "onClick",
@@ -79,7 +78,7 @@ var _hoisted_21$4 = {
79
78
  };
80
79
  var _hoisted_22$4 = { class: "mint-dataframe__page-info" };
81
80
  var _hoisted_23$4 = { class: "mint-dataframe__page-controls" };
82
- var _hoisted_24$3 = ["disabled"];
81
+ var _hoisted_24$4 = ["disabled"];
83
82
  var _hoisted_25$3 = { class: "mint-dataframe__page-number" };
84
83
  var _hoisted_26$2 = ["disabled"];
85
84
  /** Inbox glyph kept from the pre-1.2 hand-rolled empty state. */
@@ -412,7 +411,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
412
411
  "stroke-width": "2",
413
412
  "stroke-linecap": "round",
414
413
  "stroke-linejoin": "round"
415
- }, [activeSort.value?.key === col.key && activeSort.value?.direction === "asc" ? (openBlock(), createElementBlock("path", _hoisted_10$5)) : activeSort.value?.key === col.key && activeSort.value?.direction === "desc" ? (openBlock(), createElementBlock("path", _hoisted_11$5)) : (openBlock(), createElementBlock("g", _hoisted_12$4, [..._cache[6] || (_cache[6] = [
414
+ }, [activeSort.value?.key === col.key && activeSort.value?.direction === "asc" ? (openBlock(), createElementBlock("path", _hoisted_10$5)) : activeSort.value?.key === col.key && activeSort.value?.direction === "desc" ? (openBlock(), createElementBlock("path", _hoisted_11$5)) : (openBlock(), createElementBlock("g", _hoisted_12$5, [..._cache[6] || (_cache[6] = [
416
415
  createElementVNode("path", { d: "m21 16-4 4-4-4" }, null, -1),
417
416
  createElementVNode("path", { d: "M17 20V4" }, null, -1),
418
417
  createElementVNode("path", { d: "m3 8 4-4 4 4" }, null, -1),
@@ -436,7 +435,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
436
435
  onMousedown: ($event) => startResize(col, $event),
437
436
  onKeydown: ($event) => handleResizeKeydown($event, col),
438
437
  onClick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"]))
439
- }, null, 40, _hoisted_13$4)) : createCommentVNode("", true)], 14, _hoisted_6$6);
438
+ }, null, 40, _hoisted_13$5)) : createCommentVNode("", true)], 14, _hoisted_6$6);
440
439
  }), 128)),
441
440
  config.value.deletable ? (openBlock(), createElementBlock("th", {
442
441
  key: 1,
@@ -502,7 +501,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
502
501
  title: config.value.deleteLabel,
503
502
  onClick: withModifiers(($event) => handleDeleteRow(row, rowIndex), ["stop"])
504
503
  }, [..._cache[7] || (_cache[7] = [createStaticVNode("<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 6h18\"></path><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path><path d=\"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\"></path><path d=\"M10 11v6\"></path><path d=\"M14 11v6\"></path></svg>", 1)])], 8, _hoisted_17$4)], 2)) : createCommentVNode("", true)
505
- ], 42, _hoisted_14$4);
504
+ ], 42, _hoisted_14$5);
506
505
  }), 128))])]),
507
506
  __props.error ? (openBlock(), createElementBlock("div", _hoisted_18$4, [renderSlot(_ctx.$slots, "error", { error: __props.error }, () => [createVNode(DataStateInternal_default, {
508
507
  state: "error",
@@ -527,7 +526,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
527
526
  "stroke-width": "2",
528
527
  "stroke-linecap": "round",
529
528
  "stroke-linejoin": "round"
530
- }, [createElementVNode("path", { d: "m15 18-6-6 6-6" })], -1)])], 8, _hoisted_24$3),
529
+ }, [createElementVNode("path", { d: "m15 18-6-6 6-6" })], -1)])], 8, _hoisted_24$4),
531
530
  createElementVNode("span", _hoisted_25$3, toDisplayString(currentPage.value) + " / " + toDisplayString(totalPages.value), 1),
532
531
  createElementVNode("button", {
533
532
  type: "button",
@@ -814,12 +813,10 @@ var WellEditPopupInternal_default = /* @__PURE__ */ defineComponent({
814
813
  emit("close");
815
814
  }
816
815
  const containerRef = ref(null);
817
- const panelStyle = ref({ opacity: "0" });
818
- async function place() {
819
- const panel = containerRef.value;
820
- if (!panel || props.inline) return;
816
+ const pointAnchor = () => {
817
+ if (props.inline) return null;
821
818
  const { x, y } = props.position;
822
- const placed = await computePosition({ getBoundingClientRect: () => ({
819
+ return { getBoundingClientRect: () => ({
823
820
  x,
824
821
  y,
825
822
  left: x,
@@ -828,18 +825,12 @@ var WellEditPopupInternal_default = /* @__PURE__ */ defineComponent({
828
825
  bottom: y,
829
826
  width: 0,
830
827
  height: 0
831
- }) }, panel, {
832
- placement: "right-start",
833
- strategy: "fixed",
834
- middleware: [flip(), shift({ padding: 8 })]
835
- });
836
- panelStyle.value = {
837
- left: `${placed.x}px`,
838
- top: `${placed.y}px`
839
- };
840
- }
841
- watch(() => props.position, place);
842
- watch(showAdvanced, () => nextTick(place));
828
+ }) };
829
+ };
830
+ const { style: panelStyle } = useFloatingPanel(pointAnchor, containerRef, computed(() => !props.inline), {
831
+ placement: "right-start",
832
+ offset: 0
833
+ });
843
834
  const trapActive = ref(false);
844
835
  useFocusTrap({
845
836
  containerRef,
@@ -857,7 +848,6 @@ var WellEditPopupInternal_default = /* @__PURE__ */ defineComponent({
857
848
  onMounted(() => {
858
849
  if (props.inline) return focusInline();
859
850
  trapActive.value = true;
860
- place();
861
851
  nextTick(() => containerRef.value?.querySelector("[data-field=\"label\"] input")?.focus());
862
852
  });
863
853
  onBeforeUnmount(() => {
@@ -876,15 +866,15 @@ var WellEditPopupInternal_default = /* @__PURE__ */ defineComponent({
876
866
  ref_key: "containerRef",
877
867
  ref: containerRef,
878
868
  class: normalizeClass(__props.inline ? "mint-well-edit-popup mint-well-edit-popup--inline" : "mint-popover mint-well-edit-popup"),
879
- style: normalizeStyle(__props.inline ? void 0 : panelStyle.value),
869
+ style: normalizeStyle(__props.inline ? void 0 : unref(panelStyle)),
880
870
  role: __props.inline ? "region" : "dialog",
881
871
  "aria-label": `Edit well ${__props.wellId}`,
882
872
  tabindex: __props.inline ? void 0 : -1,
883
873
  onClick: _cache[12] || (_cache[12] = ($event) => __props.inline || $event.stopPropagation()),
884
- onKeydown: [_cache[13] || (_cache[13] = withKeys(($event) => {
874
+ onKeydown: [_cache[13] || (_cache[13] = withKeys(withModifiers(($event) => {
885
875
  commit();
886
876
  emit("close");
887
- }, ["escape"])), _cache[14] || (_cache[14] = ($event) => __props.inline && handleInlineEnter($event))],
877
+ }, ["prevent"]), ["escape"])), _cache[14] || (_cache[14] = ($event) => __props.inline && handleInlineEnter($event))],
888
878
  onFocusout: handleFocusout
889
879
  }, [
890
880
  createElementVNode("div", _hoisted_2$6, [
@@ -1656,12 +1646,12 @@ var _hoisted_8$4 = ["colspan"];
1656
1646
  var _hoisted_9$4 = ["colspan"];
1657
1647
  var _hoisted_10$4 = { key: 1 };
1658
1648
  var _hoisted_11$4 = ["rowspan"];
1659
- var _hoisted_12$3 = {
1649
+ var _hoisted_12$4 = {
1660
1650
  key: 0,
1661
1651
  class: "mint-well-plate__row-condition-wrap"
1662
1652
  };
1663
- var _hoisted_13$3 = { class: "mint-well-plate__row-condition-text" };
1664
- var _hoisted_14$3 = [
1653
+ var _hoisted_13$4 = { class: "mint-well-plate__row-condition-text" };
1654
+ var _hoisted_14$4 = [
1665
1655
  "aria-label",
1666
1656
  "aria-selected",
1667
1657
  "aria-disabled",
@@ -1684,19 +1674,23 @@ var _hoisted_16$3 = {
1684
1674
  key: 1,
1685
1675
  class: "mint-well-plate__well-id"
1686
1676
  };
1687
- var _hoisted_17$3 = ["title"];
1688
- var _hoisted_18$3 = {
1677
+ var _hoisted_17$3 = {
1678
+ key: 2,
1679
+ class: "mint-well-plate__indicator"
1680
+ };
1681
+ var _hoisted_18$3 = ["title"];
1682
+ var _hoisted_19$3 = {
1689
1683
  key: 0,
1690
1684
  class: "mint-well-plate__legend"
1691
1685
  };
1692
- var _hoisted_19$3 = { class: "mint-well-plate__legend-label" };
1693
- var _hoisted_20$3 = { class: "mint-well-plate__legend-bar" };
1694
- var _hoisted_21$3 = { class: "mint-well-plate__legend-label" };
1695
- var _hoisted_22$3 = {
1686
+ var _hoisted_20$3 = { class: "mint-well-plate__legend-label" };
1687
+ var _hoisted_21$3 = { class: "mint-well-plate__legend-bar" };
1688
+ var _hoisted_22$3 = { class: "mint-well-plate__legend-label" };
1689
+ var _hoisted_23$3 = {
1696
1690
  key: 1,
1697
1691
  class: "mint-well-plate__sample-legend"
1698
1692
  };
1699
- var _hoisted_23$3 = { class: "mint-well-plate__sample-legend-text" };
1693
+ var _hoisted_24$3 = { class: "mint-well-plate__sample-legend-text" };
1700
1694
  //#endregion
1701
1695
  //#region src/components/WellPlate.vue
1702
1696
  var WellPlate_default = /* @__PURE__ */ defineComponent({
@@ -1936,7 +1930,7 @@ var WellPlate_default = /* @__PURE__ */ defineComponent({
1936
1930
  fontSize: sizeConfig.value.fontSize,
1937
1931
  ..."condition" in span ? { color: span.condition.color } : {}
1938
1932
  })
1939
- }, ["condition" in span ? (openBlock(), createElementBlock("div", _hoisted_12$3, [createElementVNode("span", _hoisted_13$3, toDisplayString(span.condition.label), 1)])) : createCommentVNode("", true)], 14, _hoisted_11$4);
1933
+ }, ["condition" in span ? (openBlock(), createElementBlock("div", _hoisted_12$4, [createElementVNode("span", _hoisted_13$4, toDisplayString(span.condition.label), 1)])) : createCommentVNode("", true)], 14, _hoisted_11$4);
1940
1934
  }), 128)) : createCommentVNode("", true),
1941
1935
  config.value.showLabels ? (openBlock(), createElementBlock("td", {
1942
1936
  key: 1,
@@ -1998,35 +1992,35 @@ var WellPlate_default = /* @__PURE__ */ defineComponent({
1998
1992
  "prevent"
1999
1993
  ]), ["space"])
2000
1994
  ]
2001
- }, [getWellLabel(well) ? (openBlock(), createElementBlock("span", _hoisted_15$3, toDisplayString(getWellLabel(well)), 1)) : config.value.showWellIds ? (openBlock(), createElementBlock("span", _hoisted_16$3, toDisplayString(well.id), 1)) : createCommentVNode("", true), getWellBadge(well) ? (openBlock(), createElementBlock("span", {
2002
- key: 2,
1995
+ }, [getWellLabel(well) ? (openBlock(), createElementBlock("span", _hoisted_15$3, toDisplayString(getWellLabel(well)), 1)) : config.value.showWellIds ? (openBlock(), createElementBlock("span", _hoisted_16$3, toDisplayString(well.id), 1)) : well.sampleType === "qc" || well.sampleType === "iqc" ? (openBlock(), createElementBlock("span", _hoisted_17$3, toDisplayString(well.sampleType === "qc" ? "Q" : "i"), 1)) : createCommentVNode("", true), getWellBadge(well) ? (openBlock(), createElementBlock("span", {
1996
+ key: 3,
2003
1997
  class: "mint-well-plate__badge",
2004
1998
  style: normalizeStyle({ backgroundColor: getWellBadge(well)?.color }),
2005
1999
  title: getWellBadge(well)?.text === "+" ? "Custom method" : `${getWellBadge(well)?.text ?? ""}x injections`
2006
- }, toDisplayString(getWellBadge(well)?.text), 13, _hoisted_17$3)) : createCommentVNode("", true)], 46, _hoisted_14$3)]);
2000
+ }, toDisplayString(getWellBadge(well)?.text), 13, _hoisted_18$3)) : createCommentVNode("", true)], 46, _hoisted_14$4)]);
2007
2001
  }), 128))
2008
2002
  ]);
2009
2003
  }), 128))])
2010
2004
  ], 12, _hoisted_6$4),
2011
- config.value.heatmap?.enabled && config.value.heatmap.showLegend ? (openBlock(), createElementBlock("div", _hoisted_18$3, [
2012
- createElementVNode("span", _hoisted_19$3, toDisplayString(config.value.heatmap.min ?? 0), 1),
2013
- createElementVNode("div", _hoisted_20$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(config.value.heatmap.colorScale === "custom" && config.value.heatmap.customColors?.length ? config.value.heatmap.customColors : unref(HEATMAP_COLORS)[config.value.heatmap.colorScale || "viridis"], (color, index) => {
2005
+ config.value.heatmap?.enabled && config.value.heatmap.showLegend ? (openBlock(), createElementBlock("div", _hoisted_19$3, [
2006
+ createElementVNode("span", _hoisted_20$3, toDisplayString(config.value.heatmap.min ?? 0), 1),
2007
+ createElementVNode("div", _hoisted_21$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(config.value.heatmap.colorScale === "custom" && config.value.heatmap.customColors?.length ? config.value.heatmap.customColors : unref(HEATMAP_COLORS)[config.value.heatmap.colorScale || "viridis"], (color, index) => {
2014
2008
  return openBlock(), createElementBlock("div", {
2015
2009
  key: index,
2016
2010
  class: "mint-well-plate__legend-segment",
2017
2011
  style: normalizeStyle({ backgroundColor: color })
2018
2012
  }, null, 4);
2019
2013
  }), 128))]),
2020
- createElementVNode("span", _hoisted_21$3, toDisplayString(config.value.heatmap.max ?? 1), 1)
2014
+ createElementVNode("span", _hoisted_22$3, toDisplayString(config.value.heatmap.max ?? 1), 1)
2021
2015
  ])) : createCommentVNode("", true),
2022
- config.value.showLegend ? (openBlock(), createElementBlock("div", _hoisted_22$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(activeLegendItems.value, (item) => {
2016
+ config.value.showLegend ? (openBlock(), createElementBlock("div", _hoisted_23$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(activeLegendItems.value, (item) => {
2023
2017
  return openBlock(), createElementBlock("div", {
2024
2018
  key: item.type,
2025
2019
  class: "mint-well-plate__sample-legend-item"
2026
2020
  }, [createElementVNode("span", {
2027
2021
  class: "mint-well-plate__sample-legend-dot",
2028
2022
  style: normalizeStyle(unref(sampleTint)(item.color))
2029
- }, null, 4), createElementVNode("span", _hoisted_23$3, toDisplayString(item.label), 1)]);
2023
+ }, null, 4), createElementVNode("span", _hoisted_24$3, toDisplayString(item.label), 1)]);
2030
2024
  }), 128))])) : createCommentVNode("", true)
2031
2025
  ])])),
2032
2026
  config.value.editable && unref(editingWellId) ? renderSlot(_ctx.$slots, "well-editor", {
@@ -2247,16 +2241,16 @@ var _hoisted_11$3 = {
2247
2241
  key: 0,
2248
2242
  class: "mint-plate-editor__field mint-plate-editor__field--format"
2249
2243
  };
2250
- var _hoisted_12$2 = {
2244
+ var _hoisted_12$3 = {
2251
2245
  key: 1,
2252
2246
  class: "mint-plate-editor__field"
2253
2247
  };
2254
- var _hoisted_13$2 = {
2248
+ var _hoisted_13$3 = {
2255
2249
  class: "mint-plate-editor__slots",
2256
2250
  role: "group",
2257
2251
  "aria-label": "Slot"
2258
2252
  };
2259
- var _hoisted_14$2 = ["aria-pressed", "onClick"];
2253
+ var _hoisted_14$3 = ["aria-pressed", "onClick"];
2260
2254
  var _hoisted_15$2 = { class: "mint-plate-editor__toolbar-end" };
2261
2255
  var _hoisted_16$2 = ["disabled", "title"];
2262
2256
  var _hoisted_17$2 = ["aria-pressed"];
@@ -2765,7 +2759,7 @@ var PlateEditor_default = /* @__PURE__ */ defineComponent({
2765
2759
  "aria-label": "Format",
2766
2760
  "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => emit("update:format", activeRack.value.id, Number($event)))
2767
2761
  }, null, 8, ["model-value", "options"])])) : createCommentVNode("", true),
2768
- slotOptions.value.length ? (openBlock(), createElementBlock("div", _hoisted_12$2, [_cache[22] || (_cache[22] = createElementVNode("span", { class: "mint-plate-editor__label" }, "Slot", -1)), createElementVNode("div", _hoisted_13$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(slotOptions.value, (slot) => {
2762
+ slotOptions.value.length ? (openBlock(), createElementBlock("div", _hoisted_12$3, [_cache[22] || (_cache[22] = createElementVNode("span", { class: "mint-plate-editor__label" }, "Slot", -1)), createElementVNode("div", _hoisted_13$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(slotOptions.value, (slot) => {
2769
2763
  return openBlock(), createElementBlock("button", {
2770
2764
  key: slot,
2771
2765
  type: "button",
@@ -2776,7 +2770,7 @@ var PlateEditor_default = /* @__PURE__ */ defineComponent({
2776
2770
  { "mint-plate-editor__slot--active": activeRack.value.slot === slot }
2777
2771
  ]),
2778
2772
  onClick: ($event) => emit("update:slot", activeRack.value.id, slot)
2779
- }, toDisplayString(slot), 11, _hoisted_14$2);
2773
+ }, toDisplayString(slot), 11, _hoisted_14$3);
2780
2774
  }), 128))])])) : createCommentVNode("", true),
2781
2775
  createElementVNode("div", _hoisted_15$2, [
2782
2776
  config.value.fillSeries ? (openBlock(), createElementBlock("button", {
@@ -3321,12 +3315,12 @@ var _hoisted_8$2 = { class: "mint-dose-calculator__result-value" };
3321
3315
  var _hoisted_9$2 = { class: "mint-dose-calculator__result-row" };
3322
3316
  var _hoisted_10$2 = { class: "mint-dose-calculator__result-value" };
3323
3317
  var _hoisted_11$2 = { class: "mint-dose-calculator__result-row" };
3324
- var _hoisted_12$1 = { class: "mint-dose-calculator__result-value" };
3325
- var _hoisted_13$1 = {
3318
+ var _hoisted_12$2 = { class: "mint-dose-calculator__result-value" };
3319
+ var _hoisted_13$2 = {
3326
3320
  key: 1,
3327
3321
  class: "mint-dose-calculator__error"
3328
3322
  };
3329
- var _hoisted_14$1 = {
3323
+ var _hoisted_14$2 = {
3330
3324
  key: 2,
3331
3325
  class: "mint-dose-calculator__form",
3332
3326
  role: "tabpanel"
@@ -3546,9 +3540,9 @@ var DoseCalculator_default = /* @__PURE__ */ defineComponent({
3546
3540
  _cache[13] || (_cache[13] = createElementVNode("div", { class: "mint-dose-calculator__result-title" }, "Result", -1)),
3547
3541
  createElementVNode("div", _hoisted_7$2, [_cache[10] || (_cache[10] = createElementVNode("span", { class: "mint-dose-calculator__result-label" }, "Stock volume", -1)), createElementVNode("span", _hoisted_8$2, toDisplayString(unref(formatVolume)(dilutionResult.value.stockVolume)), 1)]),
3548
3542
  createElementVNode("div", _hoisted_9$2, [_cache[11] || (_cache[11] = createElementVNode("span", { class: "mint-dose-calculator__result-label" }, "Diluent volume", -1)), createElementVNode("span", _hoisted_10$2, toDisplayString(unref(formatVolume)(dilutionResult.value.diluentVolume)), 1)]),
3549
- createElementVNode("div", _hoisted_11$2, [_cache[12] || (_cache[12] = createElementVNode("span", { class: "mint-dose-calculator__result-label" }, "Dilution factor", -1)), createElementVNode("span", _hoisted_12$1, toDisplayString(dilutionResult.value.dilutionFactor.toFixed(1)) + "× ", 1)])
3550
- ])) : dilutionResult.value?.error ? (openBlock(), createElementBlock("div", _hoisted_13$1, toDisplayString(dilutionResult.value.error), 1)) : createCommentVNode("", true)
3551
- ])) : activeMode.value === "serial" ? (openBlock(), createElementBlock("div", _hoisted_14$1, [
3543
+ createElementVNode("div", _hoisted_11$2, [_cache[12] || (_cache[12] = createElementVNode("span", { class: "mint-dose-calculator__result-label" }, "Dilution factor", -1)), createElementVNode("span", _hoisted_12$2, toDisplayString(dilutionResult.value.dilutionFactor.toFixed(1)) + "× ", 1)])
3544
+ ])) : dilutionResult.value?.error ? (openBlock(), createElementBlock("div", _hoisted_13$2, toDisplayString(dilutionResult.value.error), 1)) : createCommentVNode("", true)
3545
+ ])) : activeMode.value === "serial" ? (openBlock(), createElementBlock("div", _hoisted_14$2, [
3552
3546
  createVNode(FormField_default, { label: "Starting Concentration" }, {
3553
3547
  default: withCtx(() => [createVNode(ConcentrationInput_default, {
3554
3548
  modelValue: serialStartConcentration.value,
@@ -3702,11 +3696,17 @@ var _hoisted_9$1 = {
3702
3696
  key: 0,
3703
3697
  class: "mint-chart__loading-overlay"
3704
3698
  };
3705
- var _hoisted_10$1 = {
3699
+ var _hoisted_10$1 = { class: "mint-chart__empty" };
3700
+ var _hoisted_11$1 = { class: "mint-chart__empty-title" };
3701
+ var _hoisted_12$1 = {
3702
+ key: 0,
3703
+ class: "mint-chart__empty-hint"
3704
+ };
3705
+ var _hoisted_13$1 = {
3706
3706
  key: 1,
3707
3707
  class: "mint-chart__legend"
3708
3708
  };
3709
- var _hoisted_11$1 = {
3709
+ var _hoisted_14$1 = {
3710
3710
  key: 2,
3711
3711
  class: "mint-chart__footer"
3712
3712
  };
@@ -3726,6 +3726,7 @@ var ChartContainer_default = /* @__PURE__ */ defineComponent({
3726
3726
  default: false
3727
3727
  },
3728
3728
  emptyText: { default: "No data available" },
3729
+ emptyHint: {},
3729
3730
  variant: { default: "card" },
3730
3731
  legendItems: {}
3731
3732
  },
@@ -3753,13 +3754,16 @@ var ChartContainer_default = /* @__PURE__ */ defineComponent({
3753
3754
  _ctx.$slots.toolbar ? (openBlock(), createElementBlock("div", _hoisted_7$1, [renderSlot(_ctx.$slots, "toolbar")])) : createCommentVNode("", true)
3754
3755
  ])) : createCommentVNode("", true),
3755
3756
  renderSlot(_ctx.$slots, "subhead"),
3756
- createElementVNode("div", _hoisted_8$1, [__props.loading ? (openBlock(), createElementBlock("div", _hoisted_9$1, [createVNode(LoadingSpinner_default, { size: "lg" })])) : __props.empty ? renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(EmptyState_default, {
3757
- title: __props.emptyText,
3758
- size: "sm",
3759
- "icon-path": "M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z"
3760
- }, null, 8, ["title"])], void 0, 1) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 2)]),
3761
- _ctx.$slots.legend ? (openBlock(), createElementBlock("div", _hoisted_10$1, [renderSlot(_ctx.$slots, "legend")])) : createCommentVNode("", true),
3762
- _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_11$1, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true)
3757
+ createElementVNode("div", _hoisted_8$1, [__props.loading ? (openBlock(), createElementBlock("div", _hoisted_9$1, [createVNode(LoadingSpinner_default, { size: "lg" })])) : __props.empty ? renderSlot(_ctx.$slots, "empty", {}, () => [createElementVNode("div", _hoisted_10$1, [
3758
+ createVNode(unref(ChartLine), {
3759
+ size: 22,
3760
+ "aria-hidden": "true"
3761
+ }),
3762
+ createElementVNode("span", _hoisted_11$1, toDisplayString(__props.emptyText), 1),
3763
+ __props.emptyHint ? (openBlock(), createElementBlock("span", _hoisted_12$1, toDisplayString(__props.emptyHint), 1)) : createCommentVNode("", true)
3764
+ ])], void 0, 1) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 2)]),
3765
+ _ctx.$slots.legend ? (openBlock(), createElementBlock("div", _hoisted_13$1, [renderSlot(_ctx.$slots, "legend")])) : createCommentVNode("", true),
3766
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_14$1, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true)
3763
3767
  ], 2);
3764
3768
  };
3765
3769
  }
@@ -4750,7 +4754,7 @@ var GeneratedResultRenderer_default = /*#__PURE__*/ _plugin_vue_export_helper_de
4750
4754
  }, [createElementVNode("span", null, toDisplayString(__props.result.name), 1), createElementVNode("small", null, toDisplayString(__props.result.media_type), 1)], 8, _hoisted_5$1))]);
4751
4755
  };
4752
4756
  }
4753
- }), [["__scopeId", "data-v-d4b8e2aa"]]);
4757
+ }), [["__scopeId", "data-v-f242a75c"]]);
4754
4758
  //#endregion
4755
4759
  //#region src/composables/useScheduleDrag.ts
4756
4760
  /** Handles pointer-driven create, move, and resize drag interactions for the ScheduleCalendar grid. */
@@ -5913,4 +5917,4 @@ function useRackEditor(initialRacks, options) {
5913
5917
  //#endregion
5914
5918
  export { hexToHsl as C, DataFrame_default as D, sampleTypeMarker as E, deriveShade as S, WellPlate_default as T, mintPlotlyTemplate as _, GeneratedPlotlyResult_default as a, PlateEditor_default as b, downloadEndpoint as c, useEventStream as d, useSettingsEndpoint as f, ChartContainer_default as g, PlotlyChart_default as h, GeneratedResultRenderer_default as i, pluginFormDataFromPayload as l, resolvePluginBaseUrl as m, ScheduleCalendar_default as n, createClient as o, buildEndpointUrl as p, useScheduleDrag as r, downloadBlob as s, useRackEditor as t, uploadEndpoint as u, DoseCalculator_default as v, hslToHex as w, SAMPLE_GROUP_TOKENS as x, dose_exports as y };
5915
5919
 
5916
- //# sourceMappingURL=useRackEditor-BD5NIo5s.js.map
5920
+ //# sourceMappingURL=useRackEditor-KpZ4iJ6o.js.map