@morscherlab/mint-sdk 1.4.0-beta.7 → 1.4.0-beta.9

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 (257) hide show
  1. package/dist/{ActionMenu-CScINahU.js → AlertBox-B2Bgr3ei.js} +40 -209
  2. package/dist/AlertBox-B2Bgr3ei.js.map +1 -0
  3. package/dist/{AppSidebar-BmiiPfz9.js → AppSidebar-Dq9W1jE2.js} +160 -109
  4. package/dist/AppSidebar-Dq9W1jE2.js.map +1 -0
  5. package/dist/{ConfirmDialog-CJ7hqYUP.js → ConfirmDialog-nbJj51is.js} +2 -2
  6. package/dist/{ConfirmDialog-CJ7hqYUP.js.map → ConfirmDialog-nbJj51is.js.map} +1 -1
  7. package/dist/ExperimentPopover-5T1fAq2L.js +337 -0
  8. package/dist/ExperimentPopover-5T1fAq2L.js.map +1 -0
  9. package/dist/{ExperimentSelectorModal-D-9z7cNx.js → ExperimentSelectorModal-65peG4Up.js} +198 -181
  10. package/dist/ExperimentSelectorModal-65peG4Up.js.map +1 -0
  11. package/dist/{SegmentedControl-DERBN-Xd.js → SegmentedControl-BtnnjWzs.js} +2 -2
  12. package/dist/{SegmentedControl-DERBN-Xd.js.map → SegmentedControl-BtnnjWzs.js.map} +1 -1
  13. package/dist/{SettingsModal-CSLE31yg.js → SettingsModal-483nyI6b.js} +9 -9
  14. package/dist/SettingsModal-483nyI6b.js.map +1 -0
  15. package/dist/components/AppSidebar.vue.d.ts +1 -1
  16. package/dist/components/ArtifactSaveDialog.vue.d.ts +9 -1
  17. package/dist/components/AuditTrail.vue.d.ts +1 -1
  18. package/dist/components/BaseSelect.vue.d.ts +2 -2
  19. package/dist/components/ChartContainer.vue.d.ts +2 -0
  20. package/dist/components/DatePicker.vue.d.ts +1 -1
  21. package/dist/components/ExperimentPopover.vue.d.ts +18 -0
  22. package/dist/components/ExperimentSelectorModal.vue.d.ts +0 -4
  23. package/dist/components/FilePicker.vue.d.ts +1 -1
  24. package/dist/components/FileUploader.vue.d.ts +2 -2
  25. package/dist/components/PluginIcon.vue.d.ts +2 -2
  26. package/dist/components/SampleSelector.vue.d.ts +6 -6
  27. package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
  28. package/dist/components/StepWizard.vue.d.ts +3 -0
  29. package/dist/components/internal/AutoGroupModalInternal.vue.d.ts +1 -1
  30. package/dist/components/internal/DatePickerTimeInternal.vue.d.ts +1 -1
  31. package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +2 -7
  32. package/dist/components/internal/SelectMultipleInternal.vue.d.ts +4 -0
  33. package/dist/composables/createClient.d.ts +2 -0
  34. package/dist/composables/index.d.ts +1 -0
  35. package/dist/composables/pluginIdentity.d.ts +24 -0
  36. package/dist/composables/useAppExperiment.d.ts +8 -0
  37. package/dist/composables/useCalendarGrid.d.ts +1 -1
  38. package/dist/composables/useExperimentSelector.d.ts +6 -2
  39. package/dist/composables/usePlatform.d.ts +1 -0
  40. package/dist/{controlSchemaModel-CP5-_nAj.js → controlSchemaModel-B8CTXagP.js} +2 -2
  41. package/dist/{controlSchemaModel-CP5-_nAj.js.map → controlSchemaModel-B8CTXagP.js.map} +1 -1
  42. package/dist/{data-C2PwI_dn.js → data-CgILxDLW.js} +178 -124
  43. package/dist/data-CgILxDLW.js.map +1 -0
  44. package/dist/data.js +8 -8
  45. package/dist/{experimentStatus-BZmU4czV.js → experimentStatus-Cqp6qNrR.js} +3 -3
  46. package/dist/{experimentStatus-BZmU4czV.js.map → experimentStatus-Cqp6qNrR.js.map} +1 -1
  47. package/dist/index.js +19 -19
  48. package/dist/{install-DAID6c2-.js → install-BtLWTk6H.js} +15 -14
  49. package/dist/{install-DAID6c2-.js.map → install-BtLWTk6H.js.map} +1 -1
  50. package/dist/install.js +1 -1
  51. package/dist/{lab-DLwRl_Ql.js → lab-MHzp-_J8.js} +128 -147
  52. package/dist/lab-MHzp-_J8.js.map +1 -0
  53. package/dist/lab.js +4 -3
  54. package/dist/{records-BzTcxekG.js → records-B6gpM_3e.js} +472 -274
  55. package/dist/records-B6gpM_3e.js.map +1 -0
  56. package/dist/{runtime-D6gVat6r.js → runtime-7vfl_bI3.js} +27 -31
  57. package/dist/runtime-7vfl_bI3.js.map +1 -0
  58. package/dist/runtime.js +6 -6
  59. package/dist/{shell-5ju97nOS.js → shell-Cs9OJMnm.js} +5 -5
  60. package/dist/{shell-5ju97nOS.js.map → shell-Cs9OJMnm.js.map} +1 -1
  61. package/dist/shell.js +5 -5
  62. package/dist/styles.css +1606 -1666
  63. package/dist/types/componentWorkflowTypes.d.ts +2 -0
  64. package/dist/types/generated/platformContext.d.ts +1 -0
  65. package/dist/types/generated-ui.d.ts +4 -0
  66. package/dist/{BaseModal-DfRIuVoj.js → useDropdownState-8yWMu-7_.js} +60 -2
  67. package/dist/useDropdownState-8yWMu-7_.js.map +1 -0
  68. package/dist/{useExperimentSamples-CxcnxZ8h.js → useExperimentSamples-DHnxKFAF.js} +3 -3
  69. package/dist/{useExperimentSamples-CxcnxZ8h.js.map → useExperimentSamples-DHnxKFAF.js.map} +1 -1
  70. package/dist/{useListReorder-CcbEYxX-.js → useListReorder-BitdUhxn.js} +109 -277
  71. package/dist/useListReorder-BitdUhxn.js.map +1 -0
  72. package/dist/{useRackEditor-BD5NIo5s.js → useRackEditor-DiwCt77M.js} +71 -57
  73. package/dist/useRackEditor-DiwCt77M.js.map +1 -0
  74. package/dist/{useRealtime-PalKue84.js → useRealtime-C3iy9QkU.js} +7 -4
  75. package/dist/useRealtime-C3iy9QkU.js.map +1 -0
  76. package/dist/useRequest-D506eHi8.js +244 -0
  77. package/dist/useRequest-D506eHi8.js.map +1 -0
  78. package/dist/utils/time.d.ts +7 -0
  79. package/package.json +1 -1
  80. package/src/__tests__/components/AppTopBar.test.ts +51 -2
  81. package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
  82. package/src/__tests__/components/ArtifactSaveDialog.test.ts +78 -0
  83. package/src/__tests__/components/BaseSelect.multiple.test.ts +87 -32
  84. package/src/__tests__/components/BaseSelect.test.ts +2 -1
  85. package/src/__tests__/components/BatchProgressList.test.ts +16 -0
  86. package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
  87. package/src/__tests__/components/ChartContainer.test.ts +11 -0
  88. package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
  89. package/src/__tests__/components/DatePicker.datetime.test.ts +6 -0
  90. package/src/__tests__/components/DatePicker.test.ts +21 -0
  91. package/src/__tests__/components/DatePicker.time.test.ts +2 -2
  92. package/src/__tests__/components/EmptyState.test.ts +1 -1
  93. package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
  94. package/src/__tests__/components/ExperimentSelectorModal.test.ts +119 -13
  95. package/src/__tests__/components/GeneratedPluginView.test.ts +22 -1
  96. package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
  97. package/src/__tests__/components/ResourcePickerListInternal.test.ts +0 -20
  98. package/src/__tests__/components/SampleSelector.test.ts +13 -8
  99. package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
  100. package/src/__tests__/components/StepWizard.test.ts +11 -0
  101. package/src/__tests__/components/WellPlate.decoration.test.ts +11 -4
  102. package/src/__tests__/components/deprecationTags.test.ts +1 -1
  103. package/src/__tests__/composables/useAppExperiment.test.ts +27 -1
  104. package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
  105. package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
  106. package/src/__tests__/styles/baseControlsRules.test.ts +6 -2
  107. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  108. package/src/__tests__/styles/cssTokens.test.ts +2 -2
  109. package/src/__tests__/styles/menusShellRefresh.test.ts +14 -10
  110. package/src/__tests__/utils/plotlyTemplate.test.ts +4 -4
  111. package/src/__tests__/utils/time.test.ts +18 -1
  112. package/src/components/AdductText.story.vue +7 -0
  113. package/src/components/AdductText.vue +1 -1
  114. package/src/components/AlertBox.story.vue +2 -2
  115. package/src/components/AlertBox.vue +18 -16
  116. package/src/components/AppSidebar.story.vue +0 -28
  117. package/src/components/AppTopBar.story.vue +47 -12
  118. package/src/components/AppTopBar.vue +118 -114
  119. package/src/components/ArtifactSaveDialog.story.vue +23 -0
  120. package/src/components/ArtifactSaveDialog.vue +102 -12
  121. package/src/components/AuditTrail.story.vue +2 -1
  122. package/src/components/AuditTrail.vue +2 -21
  123. package/src/components/Avatar.vue +10 -14
  124. package/src/components/BaseSelect.multiple.story.vue +13 -2
  125. package/src/components/BaseSelect.vue +4 -3
  126. package/src/components/BatchProgressList.vue +35 -25
  127. package/src/components/ChartContainer.story.vue +2 -1
  128. package/src/components/ChartContainer.vue +8 -6
  129. package/src/components/ConfirmDialog.story.vue +1 -1
  130. package/src/components/EmptyState.vue +1 -1
  131. package/src/components/ExperimentPopover.story.vue +165 -53
  132. package/src/components/ExperimentPopover.vue +169 -187
  133. package/src/components/ExperimentSelectorModal.story.vue +40 -36
  134. package/src/components/ExperimentSelectorModal.vue +124 -110
  135. package/src/components/FormField.story.vue +8 -48
  136. package/src/components/GeneratedPluginView.vue +7 -1
  137. package/src/components/InstrumentStateBadge.vue +1 -1
  138. package/src/components/JobsStatusTray.vue +1 -1
  139. package/src/components/LoadingSpinner.vue +1 -1
  140. package/src/components/NumberInput.vue +3 -6
  141. package/src/components/PluginIcon.story.vue +2 -10
  142. package/src/components/PluginIcon.vue +2 -2
  143. package/src/components/PluginWorkspaceView.story.vue +1 -1
  144. package/src/components/RuntimeUpdateNotice.vue +1 -1
  145. package/src/components/SampleSelector.story.vue +1 -1
  146. package/src/components/SampleSelector.vue +27 -37
  147. package/src/components/SampleSelectorGroupNode.vue +1 -1
  148. package/src/components/SectionCard.story.vue +2 -2
  149. package/src/components/SequenceProgressBar.story.vue +9 -0
  150. package/src/components/SequenceProgressBar.vue +6 -1
  151. package/src/components/SettingsModal.schema.ts +1 -1
  152. package/src/components/SettingsModal.vue +2 -2
  153. package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
  154. package/src/components/SmartGroupManual.story.vue +1 -1
  155. package/src/components/StepWizard.story.vue +33 -0
  156. package/src/components/StepWizard.vue +8 -1
  157. package/src/components/WellPlate.story.vue +3 -1
  158. package/src/components/WellPlate.vue +7 -0
  159. package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
  160. package/src/components/internal/DatePickerDateInternal.vue +16 -40
  161. package/src/components/internal/DatePickerDateTimeInternal.vue +3 -13
  162. package/src/components/internal/DatePickerTimeInternal.vue +5 -8
  163. package/src/components/internal/ResourcePickerListInternal.vue +45 -85
  164. package/src/components/internal/SelectMultipleInternal.vue +182 -65
  165. package/src/components/internal/SelectSearchableInternal.vue +2 -3
  166. package/src/composables/createClient.ts +2 -0
  167. package/src/composables/index.ts +1 -0
  168. package/src/composables/pluginIdentity.ts +31 -0
  169. package/src/composables/useAppExperiment.ts +20 -0
  170. package/src/composables/useCalendarGrid.ts +4 -3
  171. package/src/composables/useExperimentSelector.ts +77 -31
  172. package/src/styles/components/adduct-text.css +13 -5
  173. package/src/styles/components/alert-box.css +39 -58
  174. package/src/styles/components/app-layout.css +6 -5
  175. package/src/styles/components/app-page-selector.css +3 -1
  176. package/src/styles/components/app-pill-nav.css +11 -12
  177. package/src/styles/components/app-sidebar.css +9 -18
  178. package/src/styles/components/app-top-bar.css +57 -55
  179. package/src/styles/components/artifact-save-dialog.css +153 -2
  180. package/src/styles/components/audit-trail.css +16 -19
  181. package/src/styles/components/avatar.css +6 -4
  182. package/src/styles/components/batch-progress-list.css +38 -36
  183. package/src/styles/components/button.css +28 -59
  184. package/src/styles/components/calendar.css +12 -12
  185. package/src/styles/components/chart-container.css +34 -23
  186. package/src/styles/components/checkbox.css +2 -12
  187. package/src/styles/components/collapsible-card.css +27 -29
  188. package/src/styles/components/confirm-dialog.css +13 -14
  189. package/src/styles/components/dataframe.css +12 -4
  190. package/src/styles/components/date-picker.css +80 -92
  191. package/src/styles/components/datetime-picker.css +31 -43
  192. package/src/styles/components/divider.css +20 -20
  193. package/src/styles/components/dose-calculator.css +3 -3
  194. package/src/styles/components/empty-state.css +20 -17
  195. package/src/styles/components/experiment-code-badge.css +2 -0
  196. package/src/styles/components/experiment-popover.css +174 -329
  197. package/src/styles/components/experiment-selector-modal.css +75 -56
  198. package/src/styles/components/file-picker.css +3 -3
  199. package/src/styles/components/file-uploader.css +38 -49
  200. package/src/styles/components/form-builder.css +3 -3
  201. package/src/styles/components/formula-input.css +1 -1
  202. package/src/styles/components/icon-button.css +18 -24
  203. package/src/styles/components/input.css +5 -4
  204. package/src/styles/components/instrument-monitor.css +13 -15
  205. package/src/styles/components/jobs-status-tray.css +31 -25
  206. package/src/styles/components/modal.css +2 -4
  207. package/src/styles/components/molecule-input.css +2 -2
  208. package/src/styles/components/multi-select.css +65 -117
  209. package/src/styles/components/number-input.css +26 -19
  210. package/src/styles/components/pill.css +3 -2
  211. package/src/styles/components/plate-editor.css +0 -1
  212. package/src/styles/components/plugin-icon.css +26 -23
  213. package/src/styles/components/popover.css +2 -2
  214. package/src/styles/components/presence-avatars.css +1 -1
  215. package/src/styles/components/protocol-step-editor.css +1 -3
  216. package/src/styles/components/resource-card.css +2 -2
  217. package/src/styles/components/resource-picker-list.css +6 -57
  218. package/src/styles/components/sample-hierarchy-tree.css +4 -4
  219. package/src/styles/components/sample-selector.css +95 -79
  220. package/src/styles/components/schedule-calendar.css +8 -8
  221. package/src/styles/components/searchable-select.css +12 -12
  222. package/src/styles/components/section-card.css +28 -47
  223. package/src/styles/components/segmented-control.css +18 -15
  224. package/src/styles/components/select.css +3 -3
  225. package/src/styles/components/sequence-input.css +2 -2
  226. package/src/styles/components/sequence-progress-bar.css +17 -8
  227. package/src/styles/components/smart-group.css +18 -18
  228. package/src/styles/components/step-wizard.css +52 -16
  229. package/src/styles/components/tabs.css +2 -2
  230. package/src/styles/components/textarea.css +3 -3
  231. package/src/styles/components/time-picker.css +36 -21
  232. package/src/styles/components/toast.css +12 -10
  233. package/src/styles/components/toggle.css +1 -11
  234. package/src/styles/components/tooltip.css +10 -9
  235. package/src/styles/components/unit-input.css +8 -7
  236. package/src/styles/components/well-plate.css +9 -2
  237. package/src/styles/variables.css +106 -75
  238. package/src/types/componentWorkflowTypes.ts +2 -0
  239. package/src/types/generated/platformContext.ts +1 -0
  240. package/src/types/generated-ui.ts +4 -0
  241. package/src/utils/time.ts +21 -0
  242. package/dist/ActionMenu-CScINahU.js.map +0 -1
  243. package/dist/AppSidebar-BmiiPfz9.js.map +0 -1
  244. package/dist/BaseModal-DfRIuVoj.js.map +0 -1
  245. package/dist/ExperimentPopover-C4sGw-is.js +0 -359
  246. package/dist/ExperimentPopover-C4sGw-is.js.map +0 -1
  247. package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +0 -1
  248. package/dist/SettingsModal-CSLE31yg.js.map +0 -1
  249. package/dist/data-C2PwI_dn.js.map +0 -1
  250. package/dist/lab-DLwRl_Ql.js.map +0 -1
  251. package/dist/records-BzTcxekG.js.map +0 -1
  252. package/dist/runtime-D6gVat6r.js.map +0 -1
  253. package/dist/useListReorder-CcbEYxX-.js.map +0 -1
  254. package/dist/useRackEditor-BD5NIo5s.js.map +0 -1
  255. package/dist/useRealtime-PalKue84.js.map +0 -1
  256. package/dist/useRequest-D5JDfsgZ.js +0 -76
  257. package/dist/useRequest-D5JDfsgZ.js.map +0 -1
@@ -1,18 +1,18 @@
1
- import { a as __exportAll, i as BaseButton_default, t as BaseModal_default } from "./BaseModal-DfRIuVoj.js";
1
+ import { a as BaseButton_default, n as BaseModal_default, o as __exportAll } from "./useDropdownState-8yWMu-7_.js";
2
2
  import { o as useApi, p as MintApiError, t as useExperimentStore } from "./experiment-43OJtH7R.js";
3
- import { C as formatExperimentDate, L as BaseInput_default, N as BaseSelect_default, O as FormField_default, S as experimentIdFromRoute, T as FileUploader_default, _ as APP_EXPERIMENT_KEY, b as SORT_OPTIONS, g as pluginSecrets_exports, i as getInjectedPlatformContext, j as BaseCheckbox_default, m as SecretInput_default, n as ResourcePickerListInternal_default, p as TagsInput_default, r as Skeleton_default, v as useAppExperiment, w as resolveExperimentCode, x as datePresetToISO, y as DATE_PRESET_OPTIONS } from "./records-BzTcxekG.js";
4
- import { t as SegmentedControl_default } from "./SegmentedControl-DERBN-Xd.js";
5
- import { a as candidateMatchesSearch, n as AlertBox_default, o as normalizeSearchQuery, r as DataStateInternal_default, s as useTextSearch, t as ActionMenu_default } from "./ActionMenu-CScINahU.js";
3
+ import { A as formatRelativeTime, C as formatExperimentDate, G as BaseInput_default, I as FormField_default, S as experimentIdFromRoute, T as FileUploader_default, V as BaseSelect_default, _ as APP_EXPERIMENT_KEY, b as SORT_OPTIONS, g as pluginSecrets_exports, i as getInjectedPlatformContext, m as SecretInput_default, n as ResourcePickerListInternal_default, p as TagsInput_default, r as Skeleton_default, v as useAppExperiment, w as resolveExperimentCode, x as datePresetToISO, y as DATE_PRESET_OPTIONS, z as BaseCheckbox_default } from "./records-B6gpM_3e.js";
4
+ import { t as SegmentedControl_default } from "./SegmentedControl-BtnnjWzs.js";
5
+ import { a as normalizeSearchQuery, i as candidateMatchesSearch, n as DataStateInternal_default, o as useTextSearch, t as AlertBox_default } from "./AlertBox-B2Bgr3ei.js";
6
+ import { n as ActionMenu_default, t as useRequest } from "./useRequest-D506eHi8.js";
6
7
  import { hasAllPermissions } from "./permissions.js";
7
- import { t as useRequest } from "./useRequest-D5JDfsgZ.js";
8
- import { r as useExperimentSelector, t as ExperimentSelectorModal_default } from "./ExperimentSelectorModal-D-9z7cNx.js";
9
- import { n as experimentStatus_exports } from "./experimentStatus-BZmU4czV.js";
8
+ import { r as useExperimentSelector, t as ExperimentSelectorModal_default } from "./ExperimentSelectorModal-65peG4Up.js";
9
+ import { t as experimentStatus_exports } from "./experimentStatus-Cqp6qNrR.js";
10
10
  import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "./analysisArtifactTypes-Cy3D0Ipg.js";
11
- import { t as ExperimentPopover_default } from "./ExperimentPopover-C4sGw-is.js";
12
- import { i as JobsStatusTray_default, r as useRealtime } from "./useRealtime-PalKue84.js";
13
- import { a as useFileImport, c as extractSampleNamesFromDesignData, i as readFileAsText, l as extractSampleOptionsFromDesignData, n as detectDelimiter, o as validateImportFile, r as parseDelimitedText, s as useExperimentData, t as useExperimentSamples, u as unwrapExperimentDesignData } from "./useExperimentSamples-CxcnxZ8h.js";
14
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, getCurrentScope, h, isRef, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onScopeDispose, openBlock, readonly, ref, renderList, renderSlot, shallowRef, toDisplayString, toRaw, toValue, unref, useTemplateRef, watch, withCtx, withModifiers } from "vue";
15
- import { RefreshCw, TriangleAlert, X } from "lucide-vue-next";
11
+ import { t as ExperimentPopover_default } from "./ExperimentPopover-5T1fAq2L.js";
12
+ import { i as JobsStatusTray_default, r as useRealtime } from "./useRealtime-C3iy9QkU.js";
13
+ import { a as useFileImport, c as extractSampleNamesFromDesignData, i as readFileAsText, l as extractSampleOptionsFromDesignData, n as detectDelimiter, o as validateImportFile, r as parseDelimitedText, s as useExperimentData, t as useExperimentSamples, u as unwrapExperimentDesignData } from "./useExperimentSamples-DHnxKFAF.js";
14
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, getCurrentInstance, getCurrentScope, h, isRef, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onScopeDispose, openBlock, readonly, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, toValue, unref, useTemplateRef, watch, withCtx, withModifiers } from "vue";
15
+ import { CircleCheck, CircleDashed, CircleMinus, CircleX, CloudUpload, File, Loader, RefreshCw, TriangleAlert, X } from "lucide-vue-next";
16
16
  //#region src/composables/useArtifacts.ts
17
17
  /**
18
18
  * Lists and manages analysis artifacts through the user-facing platform API.
@@ -387,6 +387,33 @@ var ArtifactSelectorModal_default = /* @__PURE__ */ defineComponent({
387
387
  //#region src/components/ArtifactSaveDialog.vue?vue&type=script&setup=true&lang.ts
388
388
  var _hoisted_1$8 = { class: "mint-artifact-save-dialog" };
389
389
  var _hoisted_2$7 = {
390
+ key: 0,
391
+ class: "mint-artifact-save-dialog__experiment"
392
+ };
393
+ var _hoisted_3$6 = {
394
+ key: 0,
395
+ class: "mint-exp-code mint-exp-code--sm"
396
+ };
397
+ var _hoisted_4$6 = { class: "mint-artifact-save-dialog__experiment-name" };
398
+ var _hoisted_5$5 = {
399
+ key: 1,
400
+ class: "mint-artifact-save-dialog__modes",
401
+ role: "radiogroup",
402
+ "aria-label": "Save mode"
403
+ };
404
+ var _hoisted_6$5 = ["aria-checked", "onClick"];
405
+ var _hoisted_7$5 = { class: "mint-artifact-save-dialog__mode-text" };
406
+ var _hoisted_8$5 = {
407
+ key: 2,
408
+ class: "mint-artifact-save-dialog__list"
409
+ };
410
+ var _hoisted_9$5 = { class: "mint-artifact-save-dialog__row mint-artifact-save-dialog__row--selected" };
411
+ var _hoisted_10$5 = { class: "mint-artifact-save-dialog__row-name" };
412
+ var _hoisted_11$5 = {
413
+ key: 0,
414
+ class: "mint-artifact-save-dialog__row-meta"
415
+ };
416
+ var _hoisted_12$5 = {
390
417
  key: 1,
391
418
  class: "mint-artifact-save-dialog__immutable"
392
419
  };
@@ -401,6 +428,7 @@ var ArtifactSaveDialog_default = /* @__PURE__ */ defineComponent({
401
428
  fileSource: { default: "upload" },
402
429
  result: {},
403
430
  experimentId: { default: null },
431
+ experiment: { default: null },
404
432
  existingArtifact: { default: null },
405
433
  existingArtifactKeys: {},
406
434
  title: {},
@@ -416,16 +444,29 @@ var ArtifactSaveDialog_default = /* @__PURE__ */ defineComponent({
416
444
  "update:open",
417
445
  "saved",
418
446
  "error",
419
- "cancel"
447
+ "cancel",
448
+ "change-experiment"
420
449
  ],
421
450
  setup(__props, { emit: __emit }) {
422
451
  /** Save/update dialog for analysis artifacts; delegates the write to a plugin-supplied handler. */
423
452
  const props = __props;
424
453
  const emit = __emit;
454
+ const canChangeExperiment = Boolean(getCurrentInstance()?.vnode.props?.onChangeExperiment);
425
455
  const ARTIFACT_KEY_PATTERN = /^[a-z0-9][a-z0-9._-]*$/;
426
456
  const experimentStore = useExperimentStore();
427
457
  const request = useRequest("Failed to save analysis artifact.");
428
- const isUpdate = computed(() => props.existingArtifact !== null);
458
+ /** With an existing artifact the user picks: replace it, or save a separate one. */
459
+ const saveMode = ref("replace");
460
+ const isUpdate = computed(() => props.existingArtifact !== null && saveMode.value === "replace");
461
+ const SAVE_MODES = [{
462
+ value: "replace",
463
+ label: "Replace an existing result",
464
+ description: "Keeps the key; collaborators see the new version."
465
+ }, {
466
+ value: "new",
467
+ label: "Save as a new result",
468
+ description: "Adds a separate artifact next to the others."
469
+ }];
429
470
  const existingResult = computed(() => props.existingArtifact?.result ?? {});
430
471
  const existingIsFile = computed(() => existingResult.value.schema_version === ANALYSIS_FILE_ARTIFACT_SCHEMA);
431
472
  const existingFileKind = computed(() => typeof existingResult.value.kind === "string" ? existingResult.value.kind : void 0);
@@ -441,7 +482,12 @@ var ArtifactSaveDialog_default = /* @__PURE__ */ defineComponent({
441
482
  const selectedFile = shallowRef(null);
442
483
  let initialNote = "";
443
484
  function resetForm() {
444
- const existing = props.existingArtifact;
485
+ saveMode.value = "replace";
486
+ syncFields();
487
+ }
488
+ /** Fills the fields for the current save mode; a mode switch calls only this. */
489
+ function syncFields() {
490
+ const existing = isUpdate.value ? props.existingArtifact : null;
445
491
  activeKind.value = existing ? existingIsFile.value ? "file" : "json" : props.mode === "json" ? "json" : "file";
446
492
  keyInput.value = existing?.artifact_key ?? props.defaultArtifactKey;
447
493
  displayNameInput.value = existing?.display_name ?? props.defaultDisplayName ?? "";
@@ -454,8 +500,18 @@ var ArtifactSaveDialog_default = /* @__PURE__ */ defineComponent({
454
500
  watch(() => props.open, (open) => {
455
501
  if (open) resetForm();
456
502
  });
503
+ watch(saveMode, syncFields);
457
504
  watch(() => props.existingArtifact ? `${props.existingArtifact.id}:${props.existingArtifact.artifact_key}` : null, resetForm);
458
- const resolvedTitle = computed(() => props.title ?? (isUpdate.value ? "Update Analysis Artifact" : "Save Analysis Artifact"));
505
+ const resolvedTitle = computed(() => props.title ?? "Save to experiment");
506
+ const stripExperiment = computed(() => {
507
+ if (props.experiment) return props.experiment;
508
+ const current = experimentStore.current;
509
+ return current && current.id === resolveExperimentId() ? current : null;
510
+ });
511
+ const existingUpdated = computed(() => {
512
+ const date = props.existingArtifact?.updated_at ?? props.existingArtifact?.created_at;
513
+ return date ? formatExperimentDate(date) : "";
514
+ });
459
515
  const showKindToggle = computed(() => !isUpdate.value && props.mode === "both");
460
516
  const showFileUploader = computed(() => activeKind.value === "file" && props.fileSource === "upload");
461
517
  const showNoteField = computed(() => !isUpdate.value || existingIsFile.value);
@@ -464,8 +520,11 @@ var ArtifactSaveDialog_default = /* @__PURE__ */ defineComponent({
464
520
  return keyInput.value.trim() || props.defaultArtifactKey;
465
521
  });
466
522
  const keyValid = computed(() => ARTIFACT_KEY_PATTERN.test(effectiveKey.value));
467
- const keyExists = computed(() => !isUpdate.value && (props.existingArtifactKeys ?? []).includes(effectiveKey.value));
468
- const keyBlocked = computed(() => keyExists.value && activeKind.value === "file");
523
+ const keyExists = computed(() => {
524
+ if (isUpdate.value) return false;
525
+ return [...props.existingArtifactKeys ?? [], props.existingArtifact?.artifact_key].includes(effectiveKey.value);
526
+ });
527
+ const keyBlocked = computed(() => keyExists.value && (activeKind.value === "file" || props.existingArtifact !== null && saveMode.value === "new"));
469
528
  const keyError = computed(() => {
470
529
  if (!keyValid.value) return "Use lowercase letters, digits, dots, dashes, or underscores.";
471
530
  if (keyBlocked.value) return "This key is already used. Choose another, or replace the existing artifact.";
@@ -608,30 +667,67 @@ var ArtifactSaveDialog_default = /* @__PURE__ */ defineComponent({
608
667
  title: resolvedTitle.value,
609
668
  size: __props.size,
610
669
  closable: !unref(request).isLoading.value,
611
- "onUpdate:open": _cache[4] || (_cache[4] = ($event) => emit("update:open", $event)),
612
- onClose: _cache[5] || (_cache[5] = ($event) => emit("cancel"))
670
+ "onUpdate:open": _cache[5] || (_cache[5] = ($event) => emit("update:open", $event)),
671
+ onClose: _cache[6] || (_cache[6] = ($event) => emit("cancel"))
613
672
  }, {
614
673
  footer: withCtx(() => [createVNode(BaseButton_default, {
615
674
  variant: "secondary",
616
675
  disabled: unref(request).isLoading.value,
617
676
  onClick: handleCancel
618
677
  }, {
619
- default: withCtx(() => [..._cache[9] || (_cache[9] = [createTextVNode(" Cancel ", -1)])]),
678
+ default: withCtx(() => [..._cache[11] || (_cache[11] = [createTextVNode(" Cancel ", -1)])]),
620
679
  _: 1
621
680
  }, 8, ["disabled"]), createVNode(BaseButton_default, {
622
681
  class: "mint-artifact-save-dialog__submit",
682
+ icon: unref(CloudUpload),
623
683
  loading: unref(request).isLoading.value,
624
684
  disabled: !canSubmit.value,
625
685
  onClick: handleSubmit
626
686
  }, {
627
- default: withCtx(() => [createTextVNode(toDisplayString(isUpdate.value ? "Update Artifact" : "Save Artifact"), 1)]),
687
+ default: withCtx(() => [createTextVNode(toDisplayString(isUpdate.value ? "Replace result" : "Save result"), 1)]),
628
688
  _: 1
629
- }, 8, ["loading", "disabled"])]),
689
+ }, 8, [
690
+ "icon",
691
+ "loading",
692
+ "disabled"
693
+ ])]),
630
694
  default: withCtx(() => [createElementVNode("div", _hoisted_1$8, [
695
+ stripExperiment.value ? (openBlock(), createElementBlock("div", _hoisted_2$7, [
696
+ stripExperiment.value.experiment_code ? (openBlock(), createElementBlock("span", _hoisted_3$6, toDisplayString(stripExperiment.value.experiment_code), 1)) : createCommentVNode("", true),
697
+ createElementVNode("span", _hoisted_4$6, toDisplayString(stripExperiment.value.name), 1),
698
+ unref(canChangeExperiment) ? (openBlock(), createElementBlock("button", {
699
+ key: 1,
700
+ type: "button",
701
+ class: "mint-artifact-save-dialog__change",
702
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("change-experiment"))
703
+ }, " Change ")) : createCommentVNode("", true)
704
+ ])) : createCommentVNode("", true),
705
+ __props.existingArtifact ? (openBlock(), createElementBlock("div", _hoisted_5$5, [(openBlock(), createElementBlock(Fragment, null, renderList(SAVE_MODES, (option) => {
706
+ return createElementVNode("button", {
707
+ key: option.value,
708
+ type: "button",
709
+ role: "radio",
710
+ "aria-checked": saveMode.value === option.value,
711
+ class: "mint-artifact-save-dialog__mode",
712
+ onClick: ($event) => saveMode.value = option.value
713
+ }, [_cache[7] || (_cache[7] = createElementVNode("span", {
714
+ class: "mint-artifact-save-dialog__mode-dot",
715
+ "aria-hidden": "true"
716
+ }, null, -1)), createElementVNode("span", _hoisted_7$5, [createElementVNode("b", null, toDisplayString(option.label), 1), createElementVNode("span", null, toDisplayString(option.description), 1)])], 8, _hoisted_6$5);
717
+ }), 64))])) : createCommentVNode("", true),
718
+ isUpdate.value && __props.existingArtifact ? (openBlock(), createElementBlock("div", _hoisted_8$5, [createElementVNode("div", _hoisted_9$5, [
719
+ createVNode(unref(File), {
720
+ class: "mint-artifact-save-dialog__row-icon",
721
+ size: 15,
722
+ "aria-hidden": "true"
723
+ }),
724
+ createElementVNode("span", _hoisted_10$5, [createTextVNode(toDisplayString(__props.existingArtifact.display_name) + " ", 1), createElementVNode("span", null, toDisplayString(__props.existingArtifact.artifact_key), 1)]),
725
+ existingUpdated.value ? (openBlock(), createElementBlock("span", _hoisted_11$5, toDisplayString(existingUpdated.value), 1)) : createCommentVNode("", true)
726
+ ])])) : createCommentVNode("", true),
631
727
  showKindToggle.value ? (openBlock(), createBlock(SegmentedControl_default, {
632
- key: 0,
728
+ key: 3,
633
729
  modelValue: activeKind.value,
634
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => activeKind.value = $event),
730
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => activeKind.value = $event),
635
731
  class: "mint-artifact-save-dialog__kind-toggle",
636
732
  options: [{
637
733
  value: "file",
@@ -643,7 +739,7 @@ var ArtifactSaveDialog_default = /* @__PURE__ */ defineComponent({
643
739
  "full-width": ""
644
740
  }, null, 8, ["modelValue"])) : createCommentVNode("", true),
645
741
  keyExists.value && !keyBlocked.value ? (openBlock(), createBlock(AlertBox_default, {
646
- key: 1,
742
+ key: 4,
647
743
  tone: "warning",
648
744
  class: "mint-artifact-save-dialog__warning"
649
745
  }, {
@@ -658,7 +754,7 @@ var ArtifactSaveDialog_default = /* @__PURE__ */ defineComponent({
658
754
  }, {
659
755
  default: withCtx(() => [createVNode(BaseInput_default, {
660
756
  modelValue: keyInput.value,
661
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => keyInput.value = $event),
757
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => keyInput.value = $event),
662
758
  readonly: isUpdate.value,
663
759
  invalid: Boolean(keyError.value),
664
760
  placeholder: __props.defaultArtifactKey
@@ -671,31 +767,31 @@ var ArtifactSaveDialog_default = /* @__PURE__ */ defineComponent({
671
767
  _: 1
672
768
  }, 8, ["error", "hint"]),
673
769
  !isUpdate.value ? (openBlock(), createBlock(FormField_default, {
674
- key: 2,
770
+ key: 5,
675
771
  label: "Display name",
676
772
  class: "mint-artifact-save-dialog__name"
677
773
  }, {
678
774
  default: withCtx(() => [createVNode(BaseInput_default, {
679
775
  modelValue: displayNameInput.value,
680
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => displayNameInput.value = $event),
776
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => displayNameInput.value = $event),
681
777
  placeholder: "Shown in artifact lists"
682
778
  }, null, 8, ["modelValue"])]),
683
779
  _: 1
684
780
  })) : createCommentVNode("", true),
685
781
  showNoteField.value ? (openBlock(), createBlock(FormField_default, {
686
- key: 3,
782
+ key: 6,
687
783
  label: "Note",
688
784
  class: "mint-artifact-save-dialog__note"
689
785
  }, {
690
786
  default: withCtx(() => [createVNode(BaseInput_default, {
691
787
  type: "textarea",
692
788
  modelValue: noteInput.value,
693
- "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => noteInput.value = $event),
789
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => noteInput.value = $event),
694
790
  placeholder: "Optional context for this artifact"
695
791
  }, null, 8, ["modelValue"])]),
696
792
  _: 1
697
793
  })) : createCommentVNode("", true),
698
- activeKind.value === "file" ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [showFileUploader.value ? (openBlock(), createBlock(FileUploader_default, {
794
+ activeKind.value === "file" ? (openBlock(), createElementBlock(Fragment, { key: 7 }, [showFileUploader.value ? (openBlock(), createBlock(FileUploader_default, {
699
795
  key: 0,
700
796
  class: "mint-artifact-save-dialog__file",
701
797
  accept: __props.accept,
@@ -703,15 +799,15 @@ var ArtifactSaveDialog_default = /* @__PURE__ */ defineComponent({
703
799
  multiple: false,
704
800
  onUpload: handleFileUpload,
705
801
  onError: handleFileError
706
- }, null, 8, ["accept", "max-size"])) : createCommentVNode("", true), isUpdate.value && existingFilename.value ? (openBlock(), createElementBlock("p", _hoisted_2$7, [
707
- _cache[6] || (_cache[6] = createTextVNode(" Replaces the content of ", -1)),
802
+ }, null, 8, ["accept", "max-size"])) : createCommentVNode("", true), isUpdate.value && existingFilename.value ? (openBlock(), createElementBlock("p", _hoisted_12$5, [
803
+ _cache[8] || (_cache[8] = createTextVNode(" Replaces the content of ", -1)),
708
804
  createElementVNode("code", null, toDisplayString(existingFilename.value), 1),
709
- _cache[7] || (_cache[7] = createTextVNode(" (kind ", -1)),
805
+ _cache[9] || (_cache[9] = createTextVNode(" (kind ", -1)),
710
806
  createElementVNode("code", null, toDisplayString(existingFileKind.value ?? __props.defaultFileKind), 1),
711
- _cache[8] || (_cache[8] = createTextVNode("); filename and kind stay unchanged. ", -1))
807
+ _cache[10] || (_cache[10] = createTextVNode("); filename and kind stay unchanged. ", -1))
712
808
  ])) : createCommentVNode("", true)], 64)) : createCommentVNode("", true),
713
809
  unref(request).error.value ? (openBlock(), createBlock(AlertBox_default, {
714
- key: 5,
810
+ key: 8,
715
811
  tone: "error",
716
812
  class: "mint-artifact-save-dialog__error",
717
813
  role: "alert"
@@ -2634,23 +2730,6 @@ var AuditTrail_default = /* @__PURE__ */ defineComponent({
2634
2730
  if (words.length >= 2) return (words[0][0] + words[1][0]).toUpperCase();
2635
2731
  return (words[0]?.[0] ?? "").toUpperCase();
2636
2732
  }
2637
- const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
2638
- function formatTimestamp(timestamp) {
2639
- const date = timestamp instanceof Date ? timestamp : new Date(timestamp);
2640
- const now = Date.now();
2641
- const diffMs = date.getTime() - now;
2642
- const diffSec = Math.round(diffMs / 1e3);
2643
- const diffMin = Math.round(diffSec / 60);
2644
- const diffHr = Math.round(diffMin / 60);
2645
- const diffDay = Math.round(diffHr / 24);
2646
- const diffWeek = Math.round(diffDay / 7);
2647
- if (Math.abs(diffSec) < 60) return rtf.format(diffSec, "second");
2648
- if (Math.abs(diffMin) < 60) return rtf.format(diffMin, "minute");
2649
- if (Math.abs(diffHr) < 24) return rtf.format(diffHr, "hour");
2650
- if (Math.abs(diffDay) < 7) return rtf.format(diffDay, "day");
2651
- if (Math.abs(diffWeek) < 5) return rtf.format(diffWeek, "week");
2652
- return date.toLocaleDateString();
2653
- }
2654
2733
  function handleEntryClick(entry) {
2655
2734
  emit("entry-click", entry);
2656
2735
  }
@@ -2691,7 +2770,7 @@ var AuditTrail_default = /* @__PURE__ */ defineComponent({
2691
2770
  _cache[2] || (_cache[2] = createTextVNode()),
2692
2771
  createElementVNode("span", _hoisted_8$1, toDisplayString(entry.action), 1)
2693
2772
  ]),
2694
- createElementVNode("span", _hoisted_9$1, toDisplayString(formatTimestamp(entry.timestamp)), 1)
2773
+ createElementVNode("span", _hoisted_9$1, toDisplayString(unref(formatRelativeTime)(entry.timestamp, { weeks: true })), 1)
2695
2774
  ]),
2696
2775
  entry.detail ? (openBlock(), createElementBlock("div", _hoisted_10$1, toDisplayString(entry.detail), 1)) : createCommentVNode("", true),
2697
2776
  entry.metadata && Object.keys(entry.metadata).length ? (openBlock(), createElementBlock("div", _hoisted_11$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(entry.metadata, (value, key) => {
@@ -2770,39 +2849,16 @@ var _hoisted_20 = {
2770
2849
  };
2771
2850
  var _hoisted_21 = ["data-item-id"];
2772
2851
  var _hoisted_22 = { class: "mint-batch-progress__item-row" };
2773
- var _hoisted_23 = {
2774
- key: 0,
2775
- class: "mint-batch-progress__pending-ring"
2776
- };
2777
- var _hoisted_24 = {
2778
- key: 1,
2779
- class: "mint-batch-progress__shape",
2780
- viewBox: "0 0 16 16",
2781
- fill: "none"
2782
- };
2783
- var _hoisted_25 = {
2784
- key: 2,
2785
- class: "mint-batch-progress__shape",
2786
- viewBox: "0 0 16 16",
2787
- fill: "none"
2788
- };
2789
- var _hoisted_26 = {
2790
- key: 3,
2791
- class: "mint-batch-progress__shape",
2792
- viewBox: "0 0 16 16"
2793
- };
2794
- var _hoisted_27 = {
2795
- key: 4,
2796
- class: "mint-batch-progress__shape",
2797
- viewBox: "0 0 16 16",
2798
- fill: "none"
2852
+ var _hoisted_23 = { class: "mint-batch-progress__item-label" };
2853
+ var _hoisted_24 = { class: "mint-batch-progress__item-meta" };
2854
+ var _hoisted_25 = { class: "mint-batch-progress__item-status" };
2855
+ var _hoisted_26 = ["onClick"];
2856
+ var _hoisted_27 = ["onClick"];
2857
+ var _hoisted_28 = {
2858
+ class: "mint-batch-progress__item-progress",
2859
+ "aria-hidden": "true"
2799
2860
  };
2800
- var _hoisted_28 = { class: "mint-batch-progress__item-label" };
2801
- var _hoisted_29 = { class: "mint-batch-progress__item-meta" };
2802
- var _hoisted_30 = { class: "mint-batch-progress__item-progress" };
2803
- var _hoisted_31 = ["onClick"];
2804
- var _hoisted_32 = ["onClick"];
2805
- var _hoisted_33 = {
2861
+ var _hoisted_29 = {
2806
2862
  key: 0,
2807
2863
  class: "mint-batch-progress__item-message"
2808
2864
  };
@@ -2834,6 +2890,24 @@ var BatchProgressList_default = /* @__PURE__ */ defineComponent({
2834
2890
  /** Scrollable list tracking per-item status for a batch operation with overall progress summary. */
2835
2891
  const props = __props;
2836
2892
  const emit = __emit;
2893
+ const STATUS_ICONS = {
2894
+ completed: CircleCheck,
2895
+ processing: Loader,
2896
+ pending: CircleDashed,
2897
+ error: CircleX,
2898
+ skipped: CircleMinus
2899
+ };
2900
+ const STATUS_TEXT = {
2901
+ pending: "Queued",
2902
+ error: "Failed",
2903
+ skipped: "Skipped"
2904
+ };
2905
+ function itemPercent(item) {
2906
+ return item.status === "completed" ? 100 : item.progress ?? 0;
2907
+ }
2908
+ function statusText(item) {
2909
+ return STATUS_TEXT[item.status] ?? `${itemPercent(item)}%`;
2910
+ }
2837
2911
  const listRef = ref(null);
2838
2912
  const showCompleted = ref(false);
2839
2913
  const visibleItems = computed(() => showCompleted.value ? props.items : props.items.filter((i) => i.status !== "completed"));
@@ -2965,52 +3039,32 @@ var BatchProgressList_default = /* @__PURE__ */ defineComponent({
2965
3039
  "data-item-id": item.id,
2966
3040
  class: normalizeClass(["mint-batch-progress__item", `mint-batch-progress__item--${item.status}`])
2967
3041
  }, [renderSlot(_ctx.$slots, "item", { item }, () => [createElementVNode("div", _hoisted_22, [
2968
- createElementVNode("span", {
3042
+ (openBlock(), createBlock(resolveDynamicComponent(STATUS_ICONS[item.status]), {
2969
3043
  class: normalizeClass(["mint-batch-progress__item-icon", `mint-batch-progress__item-icon--${item.status}`]),
3044
+ size: 16,
2970
3045
  "aria-hidden": "true"
2971
- }, [item.status === "pending" ? (openBlock(), createElementBlock("span", _hoisted_23)) : item.status === "processing" ? (openBlock(), createElementBlock("svg", _hoisted_24, [..._cache[11] || (_cache[11] = [createElementVNode("circle", {
2972
- class: "mint-batch-progress__arc-track",
2973
- cx: "8",
2974
- cy: "8",
2975
- r: "6"
2976
- }, null, -1), createElementVNode("path", {
2977
- class: "mint-batch-progress__arc",
2978
- d: "M8 2a6 6 0 0 1 6 6"
2979
- }, null, -1)])])) : item.status === "completed" ? (openBlock(), createElementBlock("svg", _hoisted_25, [..._cache[12] || (_cache[12] = [createElementVNode("path", {
2980
- class: "mint-batch-progress__check",
2981
- d: "M3.5 8.5l3 3 6-7"
2982
- }, null, -1)])])) : item.status === "error" ? (openBlock(), createElementBlock("svg", _hoisted_26, [..._cache[13] || (_cache[13] = [createElementVNode("circle", {
2983
- class: "mint-batch-progress__error-disc",
2984
- cx: "8",
2985
- cy: "8",
2986
- r: "7"
2987
- }, null, -1), createElementVNode("path", {
2988
- class: "mint-batch-progress__error-mark",
2989
- d: "M8 4.5v4M8 11v.01"
2990
- }, null, -1)])])) : (openBlock(), createElementBlock("svg", _hoisted_27, [..._cache[14] || (_cache[14] = [createElementVNode("path", {
2991
- class: "mint-batch-progress__dash",
2992
- d: "M4 8h8"
2993
- }, null, -1)])]))], 2),
2994
- createElementVNode("span", _hoisted_28, toDisplayString(item.label), 1),
2995
- createElementVNode("span", _hoisted_29, [
2996
- item.status === "processing" && item.progress !== void 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createElementVNode("span", _hoisted_30, [createElementVNode("span", {
2997
- class: "mint-batch-progress__item-progress-bar",
2998
- style: normalizeStyle({ width: `${item.progress}%` })
2999
- }, null, 4)]), createTextVNode(" " + toDisplayString(item.progress) + "% ", 1)], 64)) : createCommentVNode("", true),
3046
+ }, null, 8, ["class"])),
3047
+ createElementVNode("span", _hoisted_23, toDisplayString(item.label), 1),
3048
+ createElementVNode("span", _hoisted_24, [
3049
+ createElementVNode("span", _hoisted_25, toDisplayString(statusText(item)), 1),
3000
3050
  item.status === "error" ? (openBlock(), createElementBlock("button", {
3001
- key: 1,
3051
+ key: 0,
3002
3052
  type: "button",
3003
3053
  class: "mint-batch-progress__retry-btn",
3004
3054
  onClick: withModifiers(($event) => emit("retry", item.id), ["stop"])
3005
- }, " Retry ", 8, _hoisted_31)) : createCommentVNode("", true),
3055
+ }, " Retry ", 8, _hoisted_26)) : createCommentVNode("", true),
3006
3056
  item.status === "processing" ? (openBlock(), createElementBlock("button", {
3007
- key: 2,
3057
+ key: 1,
3008
3058
  type: "button",
3009
3059
  class: "mint-batch-progress__cancel-btn",
3010
3060
  onClick: withModifiers(($event) => emit("cancel", item.id), ["stop"])
3011
- }, " Cancel ", 8, _hoisted_32)) : createCommentVNode("", true)
3012
- ])
3013
- ]), item.status === "error" && item.message ? (openBlock(), createElementBlock("div", _hoisted_33, toDisplayString(item.message), 1)) : createCommentVNode("", true)])], 10, _hoisted_21);
3061
+ }, " Cancel ", 8, _hoisted_27)) : createCommentVNode("", true)
3062
+ ]),
3063
+ createElementVNode("span", _hoisted_28, [createElementVNode("span", {
3064
+ class: "mint-batch-progress__item-progress-bar",
3065
+ style: normalizeStyle({ width: `${itemPercent(item)}%` })
3066
+ }, null, 4)])
3067
+ ]), item.status === "error" && item.message ? (openBlock(), createElementBlock("div", _hoisted_29, toDisplayString(item.message), 1)) : createCommentVNode("", true)])], 10, _hoisted_21);
3014
3068
  }), 128)), summary.value.completed ? (openBlock(), createElementBlock("button", {
3015
3069
  key: 0,
3016
3070
  type: "button",
@@ -3808,4 +3862,4 @@ var data_exports = /* @__PURE__ */ __exportAll({
3808
3862
  //#endregion
3809
3863
  export { ArtifactSaveDialog_default as _, usePlatformFilePickerAdapter as a, encodePlatformPickerPath as c, StaleFormBanner_default as d, VersionConflictDialog_default as f, ExperimentCodeBadge_default as g, FilePicker_default as h, useFileBrowser as i, fieldNameLabel as l, AuditTrail_default as m, buildAnalysisArtifactTargetQuery as n, createFilePickerAdapter as o, BatchProgressList_default as p, parseAnalysisArtifactTarget as r, decodePlatformPickerPath as s, data_exports as t, useVersionedSave as u, ArtifactSelectorModal_default as v, useArtifacts as y };
3810
3864
 
3811
- //# sourceMappingURL=data-C2PwI_dn.js.map
3865
+ //# sourceMappingURL=data-CgILxDLW.js.map