@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.
- package/README.md +14 -3
- package/dist/{ActionMenu-CScINahU.js → AlertBox-DwgNTEqf.js} +40 -209
- package/dist/AlertBox-DwgNTEqf.js.map +1 -0
- package/dist/{AppSidebar-BmiiPfz9.js → AppSidebar-CZZaxni0.js} +1249 -239
- package/dist/AppSidebar-CZZaxni0.js.map +1 -0
- package/dist/{ConfirmDialog-CJ7hqYUP.js → ConfirmDialog-CjWoxAD1.js} +2 -2
- package/dist/{ConfirmDialog-CJ7hqYUP.js.map → ConfirmDialog-CjWoxAD1.js.map} +1 -1
- package/dist/ExperimentPopover-DujiuQIO.js +337 -0
- package/dist/ExperimentPopover-DujiuQIO.js.map +1 -0
- package/dist/{ExperimentSelectorModal-D-9z7cNx.js → ExperimentSelectorModal-B4j4eUOJ.js} +244 -211
- package/dist/ExperimentSelectorModal-B4j4eUOJ.js.map +1 -0
- package/dist/{SegmentedControl-DERBN-Xd.js → SegmentedControl-DyUPH3I5.js} +2 -2
- package/dist/{SegmentedControl-DERBN-Xd.js.map → SegmentedControl-DyUPH3I5.js.map} +1 -1
- package/dist/{SettingsModal-CSLE31yg.js → SettingsModal-D2MOOtuO.js} +28 -27
- package/dist/SettingsModal-D2MOOtuO.js.map +1 -0
- package/dist/__stories__/experiment-helpers.d.ts +10 -0
- package/dist/__tests__/components/AppTopBarOnboarding.test.d.ts +1 -0
- package/dist/__tests__/components/FloatingPanelsInModal.test.d.ts +1 -0
- package/dist/__tests__/composables/useFloatingPanel.test.d.ts +1 -0
- package/dist/__tests__/composables/useOnboarding.test.d.ts +1 -0
- package/dist/__tests__/styles/paletteTokens.test.d.ts +1 -0
- package/dist/__tests__/styles/v2AuditRules.test.d.ts +1 -0
- package/dist/components/AppSidebar.vue.d.ts +1 -1
- package/dist/components/AppTopBar.vue.d.ts +20 -5
- package/dist/components/ArtifactSaveDialog.vue.d.ts +9 -1
- package/dist/components/AuditTrail.vue.d.ts +1 -1
- package/dist/components/BaseButton.vue.d.ts +4 -2
- package/dist/components/BaseSelect.vue.d.ts +2 -2
- package/dist/components/ChartContainer.vue.d.ts +2 -0
- package/dist/components/DatePicker.vue.d.ts +1 -1
- package/dist/components/ExperimentPopover.vue.d.ts +18 -0
- package/dist/components/ExperimentSelectorModal.vue.d.ts +15 -5
- package/dist/components/FilePicker.vue.d.ts +1 -1
- package/dist/components/FileUploader.vue.d.ts +2 -2
- package/dist/components/JobsStatusTray.vue.d.ts +15 -4
- package/dist/components/PluginIcon.vue.d.ts +2 -2
- package/dist/components/PluginWorkspaceView.props.d.ts +3 -0
- package/dist/components/PluginWorkspaceView.vue.d.ts +3 -0
- package/dist/components/SampleSelector.vue.d.ts +6 -6
- package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +3 -3
- package/dist/components/StepWizard.vue.d.ts +3 -0
- package/dist/components/internal/AppTopBarOnboardingInternal.vue.d.ts +7 -0
- package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -1
- package/dist/components/internal/AutoGroupModalInternal.vue.d.ts +3 -3
- package/dist/components/internal/DatePickerTimeInternal.vue.d.ts +1 -1
- package/dist/components/internal/OnboardingLayerInternal.vue.d.ts +7 -0
- package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +2 -7
- package/dist/components/internal/SelectMultipleInternal.vue.d.ts +4 -0
- package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +8 -0
- package/dist/composables/createClient.d.ts +2 -0
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/pluginIdentity.d.ts +24 -0
- package/dist/composables/pluginWorkspaceModel.d.ts +2 -2
- package/dist/composables/useAppExperiment.d.ts +8 -0
- package/dist/composables/useCalendarGrid.d.ts +1 -1
- package/dist/composables/useExperimentSelector.d.ts +6 -2
- package/dist/composables/useFileImport.d.ts +7 -0
- package/dist/composables/useFloatingPanel.d.ts +29 -0
- package/dist/composables/useJobCenter.d.ts +41 -3
- package/dist/composables/useOnboarding.d.ts +119 -0
- package/dist/composables/usePlatform.d.ts +1 -0
- package/dist/{controlSchemaModel-CP5-_nAj.js → controlSchemaModel-Bsg0t5Ab.js} +2 -2
- package/dist/{controlSchemaModel-CP5-_nAj.js.map → controlSchemaModel-Bsg0t5Ab.js.map} +1 -1
- package/dist/{data-C2PwI_dn.js → data-Boeh4uPI.js} +180 -125
- package/dist/data-Boeh4uPI.js.map +1 -0
- package/dist/data.d.ts +1 -1
- package/dist/data.js +9 -9
- package/dist/{experiment-43OJtH7R.js → experiment-DyO54FQB.js} +25 -61
- package/dist/experiment-DyO54FQB.js.map +1 -0
- package/dist/{experimentStatus-BZmU4czV.js → experimentStatus-DCn2QKG7.js} +3 -3
- package/dist/{experimentStatus-BZmU4czV.js.map → experimentStatus-DCn2QKG7.js.map} +1 -1
- package/dist/index.js +20 -20
- package/dist/{install-DAID6c2-.js → install-BEHp7Mo-.js} +15 -14
- package/dist/{install-DAID6c2-.js.map → install-BEHp7Mo-.js.map} +1 -1
- package/dist/install.js +1 -1
- package/dist/{lab-DLwRl_Ql.js → lab-D61eaX6f.js} +136 -148
- package/dist/lab-D61eaX6f.js.map +1 -0
- package/dist/lab.js +4 -3
- package/dist/{records-BzTcxekG.js → records-D4aQXyZu.js} +647 -389
- package/dist/records-D4aQXyZu.js.map +1 -0
- package/dist/{runtime-D6gVat6r.js → runtime-q-R0CNLh.js} +417 -54
- package/dist/runtime-q-R0CNLh.js.map +1 -0
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +7 -7
- package/dist/{shell-5ju97nOS.js → shell-6CGFvUUw.js} +10 -5
- package/dist/{shell-5ju97nOS.js.map → shell-6CGFvUUw.js.map} +1 -1
- package/dist/shell.d.ts +1 -0
- package/dist/shell.js +6 -6
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/index.js +2 -2
- package/dist/stores/settings.d.ts +4 -12
- package/dist/styles.css +2753 -2101
- package/dist/types/componentWorkflowTypes.d.ts +2 -0
- package/dist/types/components.d.ts +2 -0
- package/dist/types/generated/platformContext.d.ts +1 -0
- package/dist/types/generated-ui.d.ts +4 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/jobs.d.ts +9 -0
- package/dist/types/platform.d.ts +1 -1
- package/dist/{BaseModal-DfRIuVoj.js → useDropdownState-uFIz6Yv8.js} +75 -5
- package/dist/useDropdownState-uFIz6Yv8.js.map +1 -0
- package/dist/{useExperimentSamples-CxcnxZ8h.js → useExperimentSamples-QEFoq4tf.js} +48 -6
- package/dist/useExperimentSamples-QEFoq4tf.js.map +1 -0
- package/dist/{useListReorder-CcbEYxX-.js → useListReorder-DsuzwWGS.js} +219 -437
- package/dist/useListReorder-DsuzwWGS.js.map +1 -0
- package/dist/{useRackEditor-BD5NIo5s.js → useRackEditor-KpZ4iJ6o.js} +85 -81
- package/dist/useRackEditor-KpZ4iJ6o.js.map +1 -0
- package/dist/useRealtime-B58Lo-Tm.js +508 -0
- package/dist/useRealtime-B58Lo-Tm.js.map +1 -0
- package/dist/useRequest-BuDmW8Jc.js +215 -0
- package/dist/useRequest-BuDmW8Jc.js.map +1 -0
- package/dist/utils/time.d.ts +7 -0
- package/package.json +3 -2
- package/src/__stories__/experiment-helpers.ts +3 -3
- package/src/__tests__/components/ActionMenu.test.ts +2 -2
- package/src/__tests__/components/AppTopBar.test.ts +257 -3
- package/src/__tests__/components/AppTopBarOnboarding.test.ts +160 -0
- package/src/__tests__/components/AppTopBarPageSelector.test.ts +125 -9
- package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
- package/src/__tests__/components/ArtifactSaveDialog.test.ts +78 -0
- package/src/__tests__/components/BaseButton.test.ts +19 -0
- package/src/__tests__/components/BaseModal.test.ts +13 -0
- package/src/__tests__/components/BaseSelect.multiple.test.ts +87 -32
- package/src/__tests__/components/BaseSelect.test.ts +2 -1
- package/src/__tests__/components/BatchProgressList.test.ts +16 -0
- package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
- package/src/__tests__/components/ChartContainer.test.ts +11 -0
- package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
- package/src/__tests__/components/DatePicker.datetime.test.ts +6 -0
- package/src/__tests__/components/DatePicker.test.ts +21 -0
- package/src/__tests__/components/DatePicker.time.test.ts +2 -2
- package/src/__tests__/components/EmptyState.test.ts +1 -1
- package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
- package/src/__tests__/components/ExperimentSelectorModal.test.ts +153 -14
- package/src/__tests__/components/FloatingPanelsInModal.test.ts +94 -0
- package/src/__tests__/components/GeneratedPluginView.test.ts +23 -2
- package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
- package/src/__tests__/components/JobsStatusTray.test.ts +373 -71
- package/src/__tests__/components/PluginWorkspaceView.test.ts +63 -1
- package/src/__tests__/components/ResourcePickerListInternal.test.ts +0 -20
- package/src/__tests__/components/SampleSelector.test.ts +33 -8
- package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
- package/src/__tests__/components/SettingsModal.test.ts +9 -2
- package/src/__tests__/components/StepWizard.test.ts +11 -0
- package/src/__tests__/components/WellPlate.decoration.test.ts +11 -4
- package/src/__tests__/components/deprecationTags.test.ts +1 -1
- package/src/__tests__/composables/useAppExperiment.test.ts +27 -1
- package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
- package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
- package/src/__tests__/composables/useFileImport.test.ts +36 -0
- package/src/__tests__/composables/useFloatingPanel.test.ts +68 -0
- package/src/__tests__/composables/useJobCenter.test.ts +262 -3
- package/src/__tests__/composables/useOnboarding.test.ts +317 -0
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +4 -3
- package/src/__tests__/fixtures/table-import/cells.xlsx +0 -0
- package/src/__tests__/fixtures/table-import/samples.xlsx +0 -0
- package/src/__tests__/stores/settings.test.ts +21 -21
- package/src/__tests__/styles/baseControlsRules.test.ts +6 -2
- package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
- package/src/__tests__/styles/cssTokens.test.ts +6 -3
- package/src/__tests__/styles/menusShellRefresh.test.ts +22 -12
- package/src/__tests__/styles/paletteTokens.test.ts +44 -0
- package/src/__tests__/styles/v2AuditRules.test.ts +104 -0
- package/src/__tests__/utils/plotlyTemplate.test.ts +4 -4
- package/src/__tests__/utils/time.test.ts +18 -1
- package/src/components/ActionMenu.vue +6 -37
- package/src/components/AdductText.story.vue +7 -0
- package/src/components/AdductText.vue +1 -1
- package/src/components/AlertBox.story.vue +2 -2
- package/src/components/AlertBox.vue +18 -16
- package/src/components/AppSidebar.story.vue +0 -28
- package/src/components/AppTopBar.onboarding.story.vue +69 -0
- package/src/components/AppTopBar.story.vue +105 -15
- package/src/components/AppTopBar.vue +248 -122
- package/src/components/ArtifactSaveDialog.story.vue +23 -0
- package/src/components/ArtifactSaveDialog.vue +102 -12
- package/src/components/AuditTrail.story.vue +2 -1
- package/src/components/AuditTrail.vue +2 -21
- package/src/components/Avatar.vue +10 -14
- package/src/components/BaseButton.vue +16 -2
- package/src/components/BaseModal.vue +2 -1
- package/src/components/BaseSelect.multiple.story.vue +13 -2
- package/src/components/BaseSelect.vue +4 -3
- package/src/components/BatchProgressList.vue +35 -25
- package/src/components/ChartContainer.story.vue +2 -1
- package/src/components/ChartContainer.vue +8 -6
- package/src/components/ConfirmDialog.story.vue +1 -1
- package/src/components/EmptyState.vue +1 -1
- package/src/components/ExperimentPopover.story.vue +165 -53
- package/src/components/ExperimentPopover.vue +169 -187
- package/src/components/ExperimentSelectorModal.story.vue +73 -31
- package/src/components/ExperimentSelectorModal.vue +144 -111
- package/src/components/FormField.story.vue +8 -48
- package/src/components/GeneratedPluginView.vue +11 -10
- package/src/components/GeneratedResultRenderer.vue +3 -4
- package/src/components/InstrumentStateBadge.vue +1 -1
- package/src/components/JobsStatusTray.story.vue +97 -43
- package/src/components/JobsStatusTray.vue +287 -290
- package/src/components/LayoutResizeHandle.story.vue +65 -4
- package/src/components/LoadingSpinner.vue +1 -1
- package/src/components/NumberInput.vue +3 -6
- package/src/components/PluginIcon.story.vue +2 -10
- package/src/components/PluginIcon.vue +2 -2
- package/src/components/PluginWorkspaceView.props.ts +3 -0
- package/src/components/PluginWorkspaceView.story.vue +1 -1
- package/src/components/PluginWorkspaceView.vue +17 -0
- package/src/components/RuntimeUpdateNotice.vue +1 -1
- package/src/components/SampleSelector.story.vue +22 -7
- package/src/components/SampleSelector.vue +34 -37
- package/src/components/SampleSelectorGroupNode.vue +1 -1
- package/src/components/SectionCard.story.vue +35 -2
- package/src/components/SequenceProgressBar.story.vue +9 -0
- package/src/components/SequenceProgressBar.vue +6 -1
- package/src/components/SettingsModal.schema.ts +1 -1
- package/src/components/SettingsModal.vue +9 -14
- package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
- package/src/components/SmartGroupManual.story.vue +1 -1
- package/src/components/StepWizard.story.vue +33 -0
- package/src/components/StepWizard.vue +8 -1
- package/src/components/Tooltip.vue +9 -32
- package/src/components/WellPlate.story.vue +3 -1
- package/src/components/WellPlate.vue +7 -0
- package/src/components/internal/AppTopBarOnboardingInternal.vue +172 -0
- package/src/components/internal/AppTopBarPageSelectorInternal.vue +140 -72
- package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
- package/src/components/internal/DatePickerDateInternal.vue +23 -85
- package/src/components/internal/DatePickerDateTimeInternal.vue +10 -14
- package/src/components/internal/DatePickerTimeInternal.vue +13 -9
- package/src/components/internal/NumberUnitInputInternal.vue +4 -18
- package/src/components/internal/OnboardingLayerInternal.vue +173 -0
- package/src/components/internal/ResourcePickerListInternal.vue +45 -85
- package/src/components/internal/SelectMultipleInternal.vue +187 -65
- package/src/components/internal/SelectSearchableInternal.vue +8 -4
- package/src/components/internal/WellEditPopupInternal.vue +11 -22
- package/src/components/internal/WorkspaceShellInternal.vue +12 -0
- package/src/composables/createClient.ts +2 -0
- package/src/composables/index.ts +1 -0
- package/src/composables/pluginIdentity.ts +31 -0
- package/src/composables/pluginWorkspaceModel.ts +2 -2
- package/src/composables/useAppExperiment.ts +20 -0
- package/src/composables/useCalendarGrid.ts +4 -3
- package/src/composables/useExperimentSelector.ts +77 -31
- package/src/composables/useFileImport.ts +51 -1
- package/src/composables/useFloatingPanel.ts +107 -0
- package/src/composables/useJobCenter.ts +188 -6
- package/src/composables/useOnboarding.ts +465 -0
- package/src/composables/usePluginWorkspace.ts +1 -1
- package/src/data.ts +1 -0
- package/src/runtime.ts +2 -1
- package/src/shell.ts +17 -0
- package/src/stores/index.ts +0 -2
- package/src/stores/settings.ts +20 -50
- package/src/styles/components/action-menu.css +1 -1
- package/src/styles/components/adduct-text.css +13 -5
- package/src/styles/components/alert-box.css +39 -58
- package/src/styles/components/app-layout.css +10 -6
- package/src/styles/components/app-page-selector.css +121 -44
- package/src/styles/components/app-pill-nav.css +11 -12
- package/src/styles/components/app-sidebar.css +9 -18
- package/src/styles/components/app-top-bar.css +219 -55
- package/src/styles/components/artifact-save-dialog.css +153 -2
- package/src/styles/components/audit-trail.css +16 -19
- package/src/styles/components/avatar.css +6 -4
- package/src/styles/components/batch-progress-list.css +38 -36
- package/src/styles/components/button.css +36 -59
- package/src/styles/components/calendar.css +12 -12
- package/src/styles/components/chart-container.css +34 -23
- package/src/styles/components/checkbox.css +2 -12
- package/src/styles/components/collapsible-card.css +27 -29
- package/src/styles/components/confirm-dialog.css +13 -14
- package/src/styles/components/dataframe.css +13 -5
- package/src/styles/components/date-picker.css +84 -94
- package/src/styles/components/datetime-picker.css +35 -47
- package/src/styles/components/divider.css +20 -20
- package/src/styles/components/dose-calculator.css +3 -3
- package/src/styles/components/empty-state.css +20 -17
- package/src/styles/components/experiment-code-badge.css +2 -0
- package/src/styles/components/experiment-popover.css +174 -329
- package/src/styles/components/experiment-selector-modal.css +88 -56
- package/src/styles/components/file-picker.css +3 -3
- package/src/styles/components/file-uploader.css +38 -49
- package/src/styles/components/form-builder.css +3 -3
- package/src/styles/components/formula-input.css +1 -1
- package/src/styles/components/icon-button.css +18 -24
- package/src/styles/components/input.css +5 -4
- package/src/styles/components/instrument-monitor.css +13 -15
- package/src/styles/components/jobs-status-tray.css +140 -296
- package/src/styles/components/layout-resize-handle.css +59 -16
- package/src/styles/components/modal.css +5 -7
- package/src/styles/components/molecule-input.css +2 -2
- package/src/styles/components/multi-select.css +65 -117
- package/src/styles/components/number-input.css +26 -19
- package/src/styles/components/onboarding.css +368 -0
- package/src/styles/components/pill.css +3 -2
- package/src/styles/components/plate-editor.css +0 -1
- package/src/styles/components/plugin-icon.css +26 -23
- package/src/styles/components/popover.css +2 -2
- package/src/styles/components/presence-avatars.css +1 -1
- package/src/styles/components/progress-bar.css +3 -3
- package/src/styles/components/protocol-step-editor.css +1 -3
- package/src/styles/components/resource-card.css +2 -2
- package/src/styles/components/resource-picker-list.css +6 -57
- package/src/styles/components/sample-hierarchy-tree.css +4 -4
- package/src/styles/components/sample-selector.css +138 -79
- package/src/styles/components/schedule-calendar.css +8 -8
- package/src/styles/components/searchable-select.css +15 -19
- package/src/styles/components/section-card.css +54 -49
- package/src/styles/components/segmented-control.css +18 -15
- package/src/styles/components/select.css +3 -3
- package/src/styles/components/sequence-input.css +2 -2
- package/src/styles/components/sequence-progress-bar.css +17 -8
- package/src/styles/components/settings-modal.css +7 -2
- package/src/styles/components/smart-group.css +18 -18
- package/src/styles/components/step-wizard.css +52 -16
- package/src/styles/components/tabs.css +2 -2
- package/src/styles/components/textarea.css +3 -3
- package/src/styles/components/time-picker.css +37 -25
- package/src/styles/components/toast.css +13 -11
- package/src/styles/components/toggle.css +1 -11
- package/src/styles/components/tooltip.css +12 -11
- package/src/styles/components/unit-input.css +9 -8
- package/src/styles/components/well-edit-popup.css +2 -2
- package/src/styles/components/well-plate.css +9 -2
- package/src/styles/index.css +1 -0
- package/src/styles/variables.css +247 -78
- package/src/types/componentWorkflowTypes.ts +2 -0
- package/src/types/components.ts +2 -0
- package/src/types/generated/platformContext.ts +1 -0
- package/src/types/generated-ui.ts +4 -0
- package/src/types/index.ts +1 -0
- package/src/types/jobs.ts +10 -0
- package/src/types/platform.ts +1 -1
- package/src/utils/time.ts +21 -0
- package/dist/ActionMenu-CScINahU.js.map +0 -1
- package/dist/AppSidebar-BmiiPfz9.js.map +0 -1
- package/dist/BaseModal-DfRIuVoj.js.map +0 -1
- package/dist/ExperimentPopover-C4sGw-is.js +0 -359
- package/dist/ExperimentPopover-C4sGw-is.js.map +0 -1
- package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +0 -1
- package/dist/SettingsModal-CSLE31yg.js.map +0 -1
- package/dist/data-C2PwI_dn.js.map +0 -1
- package/dist/experiment-43OJtH7R.js.map +0 -1
- package/dist/lab-DLwRl_Ql.js.map +0 -1
- package/dist/records-BzTcxekG.js.map +0 -1
- package/dist/runtime-D6gVat6r.js.map +0 -1
- package/dist/useExperimentSamples-CxcnxZ8h.js.map +0 -1
- package/dist/useListReorder-CcbEYxX-.js.map +0 -1
- package/dist/useRackEditor-BD5NIo5s.js.map +0 -1
- package/dist/useRealtime-PalKue84.js +0 -696
- package/dist/useRealtime-PalKue84.js.map +0 -1
- package/dist/useRequest-D5JDfsgZ.js +0 -76
- package/dist/useRequest-D5JDfsgZ.js.map +0 -1
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as SegmentedControl_default } from "./SegmentedControl-
|
|
5
|
-
import { a as
|
|
1
|
+
import { a as BaseButton_default, n as BaseModal_default, o as __exportAll } from "./useDropdownState-uFIz6Yv8.js";
|
|
2
|
+
import { d as MintApiError, o as useApi, t as useExperimentStore } from "./experiment-DyO54FQB.js";
|
|
3
|
+
import { A as formatRelativeTime, C as formatExperimentDate, I as FormField_default, K as BaseInput_default, S as experimentIdFromRoute, T as FileUploader_default, V as BaseSelect_default, _ as APP_EXPERIMENT_KEY, b as SORT_OPTIONS, c as SecretInput_default, i as getInjectedPlatformContext, n as ResourcePickerListInternal_default, r as Skeleton_default, s as TagsInput_default, u as pluginSecrets_exports, v as useAppExperiment, w as resolveExperimentCode, x as datePresetToISO, y as DATE_PRESET_OPTIONS, z as BaseCheckbox_default } from "./records-D4aQXyZu.js";
|
|
4
|
+
import { t as SegmentedControl_default } from "./SegmentedControl-DyUPH3I5.js";
|
|
5
|
+
import { a as normalizeSearchQuery, i as candidateMatchesSearch, n as DataStateInternal_default, o as useTextSearch, t as AlertBox_default } from "./AlertBox-DwgNTEqf.js";
|
|
6
|
+
import { n as ActionMenu_default, t as useRequest } from "./useRequest-BuDmW8Jc.js";
|
|
6
7
|
import { hasAllPermissions } from "./permissions.js";
|
|
7
|
-
import {
|
|
8
|
-
import { r as useExperimentSelector, t as ExperimentSelectorModal_default } from "./ExperimentSelectorModal-
|
|
9
|
-
import {
|
|
8
|
+
import { i as JobsStatusTray_default, r as useRealtime } from "./useRealtime-B58Lo-Tm.js";
|
|
9
|
+
import { r as useExperimentSelector, t as ExperimentSelectorModal_default } from "./ExperimentSelectorModal-B4j4eUOJ.js";
|
|
10
|
+
import { t as experimentStatus_exports } from "./experimentStatus-DCn2QKG7.js";
|
|
10
11
|
import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "./analysisArtifactTypes-Cy3D0Ipg.js";
|
|
11
|
-
import { t as ExperimentPopover_default } from "./ExperimentPopover-
|
|
12
|
-
import { i as
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { RefreshCw, TriangleAlert, X } from "lucide-vue-next";
|
|
12
|
+
import { t as ExperimentPopover_default } from "./ExperimentPopover-DujiuQIO.js";
|
|
13
|
+
import { a as readTableFileAsCsv, c as useExperimentData, d as unwrapExperimentDesignData, i as readFileAsText, l as extractSampleNamesFromDesignData, n as detectDelimiter, o as useFileImport, r as parseDelimitedText, s as validateImportFile, t as useExperimentSamples, u as extractSampleOptionsFromDesignData } from "./useExperimentSamples-QEFoq4tf.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
|
-
|
|
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
|
-
|
|
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 ??
|
|
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(() =>
|
|
468
|
-
|
|
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[
|
|
612
|
-
onClose: _cache[
|
|
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[
|
|
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 ? "
|
|
687
|
+
default: withCtx(() => [createTextVNode(toDisplayString(isUpdate.value ? "Replace result" : "Save result"), 1)]),
|
|
628
688
|
_: 1
|
|
629
|
-
}, 8, [
|
|
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:
|
|
728
|
+
key: 3,
|
|
633
729
|
modelValue: activeKind.value,
|
|
634
|
-
"onUpdate:modelValue": _cache[
|
|
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:
|
|
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[
|
|
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:
|
|
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[
|
|
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:
|
|
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[
|
|
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:
|
|
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",
|
|
707
|
-
_cache[
|
|
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[
|
|
805
|
+
_cache[9] || (_cache[9] = createTextVNode(" (kind ", -1)),
|
|
710
806
|
createElementVNode("code", null, toDisplayString(existingFileKind.value ?? __props.defaultFileKind), 1),
|
|
711
|
-
_cache[
|
|
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:
|
|
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(
|
|
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
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
var
|
|
2778
|
-
|
|
2779
|
-
class: "mint-batch-
|
|
2780
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
},
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
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:
|
|
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,
|
|
3055
|
+
}, " Retry ", 8, _hoisted_26)) : createCommentVNode("", true),
|
|
3006
3056
|
item.status === "processing" ? (openBlock(), createElementBlock("button", {
|
|
3007
|
-
key:
|
|
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,
|
|
3012
|
-
])
|
|
3013
|
-
|
|
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",
|
|
@@ -3791,6 +3845,7 @@ var data_exports = /* @__PURE__ */ __exportAll({
|
|
|
3791
3845
|
parseDelimitedText: () => parseDelimitedText,
|
|
3792
3846
|
pluginSecret: () => pluginSecrets_exports,
|
|
3793
3847
|
readFileAsText: () => readFileAsText,
|
|
3848
|
+
readTableFileAsCsv: () => readTableFileAsCsv,
|
|
3794
3849
|
resolveExperimentCode: () => resolveExperimentCode,
|
|
3795
3850
|
unwrapExperimentDesignData: () => unwrapExperimentDesignData,
|
|
3796
3851
|
useAppExperiment: () => useAppExperiment,
|
|
@@ -3808,4 +3863,4 @@ var data_exports = /* @__PURE__ */ __exportAll({
|
|
|
3808
3863
|
//#endregion
|
|
3809
3864
|
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
3865
|
|
|
3811
|
-
//# sourceMappingURL=data-
|
|
3866
|
+
//# sourceMappingURL=data-Boeh4uPI.js.map
|