n8n-editor-ui
Version:
Workflow Editor UI for n8n
615 lines (614 loc) • 28 kB
JavaScript
import { C as computed, Cn as toDisplayString, D as createElementBlock, E as createCommentVNode, Gt as unref, It as ref, M as createVNode, P as defineComponent, T as createBlock, _ as Fragment, bt as withCtx, et as openBlock, it as renderList, j as createTextVNode, ot as resolveComponent, st as resolveDirective, vn as normalizeClass, w as createBaseVNode, xt as withDirectives } from "./vue.runtime.esm-bundler-tP5dCd7J.js";
import { _t as useI18n } from "./_MapCache-ficiegRb.js";
import { Cn as N8nSpinner_default, It as ElTag, Mt as ElDropdownItem, Nt as ElDropdownMenu, Sn as N8nButton_default, jt as ElDropdown, lt as N8nBadge_default, xn as N8nText_default, xt as N8nIconButton_default, yn as N8nHeading_default } from "./src-DgvumQTi.js";
import "./en-CF30SCh2.js";
import "./preload-helper-CR0ecmWK.js";
import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BwBpWJRZ.js";
import { T as createEventBus, v as useRoute } from "./truncate-B1HVeveJ.js";
import { N as useWorkflowsStore, O as useTelemetry, gs as useSettingsStore, m as useMessage, v as useToast } from "./builder.store-sBTWwxRU.js";
import "./empty-BuGRxzl4.js";
import "./sanitize-html-Cc45ZKm8.js";
import "./CalendarDate-zWqgZMlk.js";
import "./path-browserify-BtCDmZ3_.js";
import { Oo as getResourcePermissions, Ro as VIEWS, bc as EnterpriseEditionFeature, rs as MODAL_CONFIRM } from "./constants-BbpucWL4.js";
import "./merge-k8vSyyXH.js";
import "./_baseOrderBy-B_6CV8x6.js";
import "./dateformat-CM9k0--B.js";
import "./useDebounce-Bnb8W2LR.js";
import { t as useExecutionsStore } from "./executions.store-CXjGPxs0.js";
import "./versions.store-BwdT833-.js";
import "./usePageRedirectionHelper-fGNB6ZKK.js";
import "./dateFormatter-DDfPHI9I.js";
import { t as useExecutionHelpers } from "./useExecutionHelpers-BhJEW8lu.js";
import "./TagsDropdown-LwHy1RX4.js";
import { t as useExecutionDebugging } from "./useExecutionDebugging-B73NIPYJ.js";
import { t as AnnotationTagsDropdown_ee_default } from "./AnnotationTagsDropdown.ee-CF7otrg2.js";
import { t as WorkflowPreview_default } from "./WorkflowPreview-CMqGPBQJ.js";
var WorkflowExecutionAnnotationPanel_ee_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
__name: "WorkflowExecutionAnnotationPanel.ee",
props: { execution: {} },
setup(__props) {
const props = __props;
const workflowsStore = useWorkflowsStore();
const route = useRoute();
const i18n = useI18n();
const annotationDropdownRef = ref(null);
const isDropdownVisible = ref(false);
const workflowId = computed(() => route.params.name);
const workflowPermissions = computed(() => getResourcePermissions(workflowsStore.getWorkflowById(workflowId.value)?.scopes).workflow);
const customDataLength = computed(() => {
return props.execution?.customData ? Object.keys(props.execution?.customData).length : 0;
});
function onEllipsisButtonBlur(event) {
if (annotationDropdownRef.value && event.relatedTarget === null) annotationDropdownRef.value.handleClose();
}
function onDropdownVisibleChange(visible) {
isDropdownVisible.value = visible;
}
return (_ctx, _cache) => {
const _directive_n8n_html = resolveDirective("n8n-html");
return _ctx.execution ? (openBlock(), createBlock(unref(ElDropdown), {
key: 0,
ref_key: "annotationDropdownRef",
ref: annotationDropdownRef,
trigger: "click",
onVisibleChange: onDropdownVisibleChange
}, {
dropdown: withCtx(() => [createBaseVNode("div", {
ref: "container",
class: normalizeClass(["execution-annotation-panel", _ctx.$style.container]),
"data-test-id": "execution-annotation-panel"
}, [createBaseVNode("div", { class: normalizeClass(_ctx.$style.section) }, [createBaseVNode("div", { class: normalizeClass(_ctx.$style.heading) }, [createVNode(unref(N8nHeading_default), {
tag: "h3",
size: "small",
color: "text-dark"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("generic.annotationData")), 1)]),
_: 1
})], 2), _ctx.execution?.customData && Object.keys(_ctx.execution?.customData).length > 0 ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.$style.metadata)
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(Object.keys(_ctx.execution?.customData), (attr) => {
return openBlock(), createElementBlock("div", {
key: attr,
class: normalizeClass(_ctx.$style.customDataEntry)
}, [createVNode(unref(N8nText_default), {
class: normalizeClass(_ctx.$style.key),
size: "small",
color: "text-base"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(attr), 1)]),
_: 2
}, 1032, ["class"]), createVNode(unref(N8nText_default), {
class: normalizeClass(_ctx.$style.value),
size: "small",
color: "text-base"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(_ctx.execution?.customData[attr]), 1)]),
_: 2
}, 1032, ["class"])], 2);
}), 128))], 2)) : (openBlock(), createElementBlock("div", {
key: 1,
class: normalizeClass(_ctx.$style.noResultsContainer),
"data-test-id": "execution-annotation-data-empty"
}, [createVNode(unref(N8nText_default), {
color: "text-base",
size: "small",
align: "center"
}, {
default: withCtx(() => [withDirectives(createBaseVNode("span", null, null, 512), [[_directive_n8n_html, unref(i18n).baseText("executionAnnotationView.data.notFound")]])]),
_: 1
})], 2))], 2)], 2)]),
default: withCtx(() => [createVNode(unref(N8nButton_default), {
title: unref(i18n).baseText("executionDetails.additionalActions"),
disabled: !workflowPermissions.value.update,
icon: "list-checks",
class: normalizeClass({
[_ctx.$style.highlightDataButton]: true,
[_ctx.$style.highlightDataButtonActive]: customDataLength.value > 0,
[_ctx.$style.highlightDataButtonOpen]: isDropdownVisible.value
}),
size: "small",
type: "secondary",
"data-test-id": "execution-preview-ellipsis-button",
onBlur: onEllipsisButtonBlur
}, {
default: withCtx(() => [customDataLength.value > 0 ? (openBlock(), createBlock(unref(N8nBadge_default), {
key: 0,
class: normalizeClass(_ctx.$style.badge),
theme: "primary"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(customDataLength.value.toString()), 1)]),
_: 1
}, 8, ["class"])) : createCommentVNode("", true)]),
_: 1
}, 8, [
"title",
"disabled",
"class"
])]),
_: 1
}, 512)) : createCommentVNode("", true);
};
}
});
var WorkflowExecutionAnnotationPanel_ee_vue_vue_type_style_index_0_lang_module_default = {
highlightDataButton: "_highlightDataButton_6a6tl_123",
highlightDataButtonActive: "_highlightDataButtonActive_6a6tl_128",
highlightDataButtonOpen: "_highlightDataButtonOpen_6a6tl_132",
badge: "_badge_6a6tl_138",
container: "_container_6a6tl_142",
section: "_section_6a6tl_154",
metadata: "_metadata_6a6tl_163",
heading: "_heading_6a6tl_167",
controls: "_controls_6a6tl_174",
customDataEntry: "_customDataEntry_6a6tl_186",
key: "_key_6a6tl_193",
noResultsContainer: "_noResultsContainer_6a6tl_197",
"execution-annotation-panel": "_execution-annotation-panel_6a6tl_202",
"el-skeleton__item": "_el-skeleton__item_6a6tl_202"
};
var WorkflowExecutionAnnotationPanel_ee_default = /* @__PURE__ */ __plugin_vue_export_helper_default(WorkflowExecutionAnnotationPanel_ee_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": WorkflowExecutionAnnotationPanel_ee_vue_vue_type_style_index_0_lang_module_default }]]);
var _hoisted_1$1 = { key: 1 };
var WorkflowExecutionAnnotationTags_ee_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
__name: "WorkflowExecutionAnnotationTags.ee",
props: { execution: {} },
setup(__props) {
const props = __props;
const locale = useI18n();
const telemetry = useTelemetry();
const { showError } = useToast();
const executionsStore = useExecutionsStore();
const tagIds = computed(() => props.execution.annotation?.tags.map((tag) => tag.id) ?? []);
const tags$1 = computed(() => props.execution.annotation?.tags);
const tagsEventBus = createEventBus();
const isTagsEditEnabled = ref(false);
const appliedTagIds = ref([]);
const tagsSaving = ref(false);
const tagsHasChanged = (prev, curr) => {
if (prev.length !== curr.length) return true;
const set = new Set(prev);
return curr.reduce((acc, val) => acc || !set.has(val), false);
};
const onTagsEditEnable = () => {
appliedTagIds.value = tagIds.value;
isTagsEditEnabled.value = true;
tagsEventBus.emit("focus");
};
const onTagsBlur = async () => {
if (!props.execution) return;
const currentTagIds = tagIds.value ?? [];
const newTagIds = appliedTagIds.value;
if (!tagsHasChanged(currentTagIds, newTagIds)) {
isTagsEditEnabled.value = false;
return;
}
if (tagsSaving.value) return;
tagsSaving.value = true;
try {
await executionsStore.annotateExecution(props.execution.id, { tags: newTagIds });
if (newTagIds.length > 0) telemetry.track("User added execution annotation tag", {
tag_ids: newTagIds,
execution_id: props.execution.id
});
} catch (e) {
showError(e, "executionAnnotationView.tag.error");
}
tagsSaving.value = false;
isTagsEditEnabled.value = false;
};
const onTagsEditEsc = () => {
isTagsEditEnabled.value = false;
};
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", { class: normalizeClass(_ctx.$style.executionDetailsTags) }, [createBaseVNode("span", {
class: normalizeClass(_ctx.$style.tags),
"data-test-id": "annotation-tags-container"
}, [isTagsEditEnabled.value ? (openBlock(), createBlock(AnnotationTagsDropdown_ee_default, {
key: 0,
ref: "dropdown",
modelValue: appliedTagIds.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => appliedTagIds.value = $event),
"create-enabled": true,
"event-bus": unref(tagsEventBus),
placeholder: unref(locale).baseText("executionAnnotationView.chooseOrCreateATag"),
class: "tags-edit",
"data-test-id": "workflow-tags-dropdown",
onBlur: onTagsBlur,
onEsc: onTagsEditEsc
}, null, 8, [
"modelValue",
"event-bus",
"placeholder"
])) : tagIds.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_1$1, [createVNode(unref(N8nButton_default), {
class: normalizeClass([_ctx.$style.addTagButton, "clickable"]),
label: unref(locale).baseText("executionAnnotationView.addTag"),
type: "secondary",
size: "mini",
outline: false,
text: true,
"data-test-id": "new-tag-link",
icon: "plus",
onClick: onTagsEditEnable
}, null, 8, ["class", "label"])])) : (openBlock(), createElementBlock("span", {
key: 2,
class: normalizeClass(["tags-container", _ctx.$style.tagsContainer]),
"data-test-id": "execution-annotation-tags",
onClick: onTagsEditEnable
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(tags$1.value, (tag) => {
return openBlock(), createElementBlock("span", {
key: tag.id,
class: "clickable"
}, [createVNode(unref(ElTag), {
title: tag.name,
type: "info",
size: "small",
"disable-transitions": true
}, {
default: withCtx(() => [createTextVNode(toDisplayString(tag.name), 1)]),
_: 2
}, 1032, ["title"])]);
}), 128)), createBaseVNode("span", { class: normalizeClass(_ctx.$style.addTagWrapper) }, [createVNode(unref(N8nButton_default), {
class: normalizeClass([
_ctx.$style.addTagButton,
_ctx.$style.addTagButtonIconOnly,
"clickable"
]),
type: "secondary",
size: "mini",
outline: false,
text: true,
"data-test-id": "new-tag-link",
icon: "plus",
onClick: onTagsEditEnable
}, null, 8, ["class"])], 2)], 2))], 2)], 2);
};
}
});
var WorkflowExecutionAnnotationTags_ee_vue_vue_type_style_index_0_lang_module_default = {
tags: "_tags_50en8_123",
addTagButton: "_addTagButton_50en8_128",
addTagButtonIconOnly: "_addTagButtonIconOnly_50en8_149",
tagsContainer: "_tagsContainer_50en8_154"
};
var WorkflowExecutionAnnotationTags_ee_default = /* @__PURE__ */ __plugin_vue_export_helper_default(WorkflowExecutionAnnotationTags_ee_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": WorkflowExecutionAnnotationTags_ee_vue_vue_type_style_index_0_lang_module_default }]]);
var VoteButtons_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
__name: "VoteButtons",
props: { vote: {} },
emits: ["vote-click"],
setup(__props, { emit: __emit }) {
const emit = __emit;
const onVoteClick = (vote) => {
emit("vote-click", vote);
};
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", { class: normalizeClass(_ctx.$style.ratingIcon) }, [createVNode(unref(N8nIconButton_default), {
class: normalizeClass([_ctx.$style.icon, _ctx.vote === "up" && _ctx.$style.up]),
type: "tertiary",
text: "",
size: "small",
icon: "thumbs-up",
onClick: _cache[0] || (_cache[0] = ($event) => onVoteClick("up"))
}, null, 8, ["class"]), createVNode(unref(N8nIconButton_default), {
class: normalizeClass([_ctx.$style.icon, _ctx.vote === "down" && _ctx.$style.down]),
type: "tertiary",
text: "",
size: "small",
icon: "thumbs-down",
onClick: _cache[1] || (_cache[1] = ($event) => onVoteClick("down"))
}, null, 8, ["class"])], 2);
};
}
});
var VoteButtons_vue_vue_type_style_index_0_lang_module_default = {
ratingIcon: "_ratingIcon_w647n_123",
icon: "_icon_w647n_127",
up: "_up_w647n_130",
down: "_down_w647n_130"
};
var VoteButtons_default = /* @__PURE__ */ __plugin_vue_export_helper_default(VoteButtons_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": VoteButtons_vue_vue_type_style_index_0_lang_module_default }]]);
var _hoisted_1 = ["data-test-id"];
var _hoisted_2 = { class: "retry-button" };
var WorkflowExecutionsPreview_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
__name: "WorkflowExecutionsPreview",
props: { execution: {} },
emits: [
"deleteCurrentExecution",
"retryExecution",
"stopExecution"
],
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
const route = useRoute();
const locale = useI18n();
const { showError } = useToast();
const executionHelpers = useExecutionHelpers();
const message = useMessage();
const executionDebugging = useExecutionDebugging();
const workflowsStore = useWorkflowsStore();
const settingsStore = useSettingsStore();
const retryDropdownRef = ref(null);
const workflowId = computed(() => route.params.name);
const workflowPermissions = computed(() => getResourcePermissions(workflowsStore.getWorkflowById(workflowId.value)?.scopes).workflow);
const executionId = computed(() => route.params.executionId);
const nodeId = computed(() => route.params.nodeId);
const executionUIDetails = computed(() => props.execution ? executionHelpers.getUIDetails(props.execution) : null);
const debugButtonData = computed(() => props.execution?.status === "success" ? {
text: locale.baseText("executionsList.debug.button.copyToEditor"),
type: "secondary"
} : {
text: locale.baseText("executionsList.debug.button.debugInEditor"),
type: "primary"
});
const isRetriable = computed(() => !!props.execution && executionHelpers.isExecutionRetriable(props.execution));
const isAnnotationEnabled = computed(() => settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.AdvancedExecutionFilters]);
const hasAnnotation = computed(() => !!props.execution?.annotation && (props.execution?.annotation.vote || props.execution?.annotation.tags.length > 0));
const executionsStore = useExecutionsStore();
const activeExecution = computed(() => {
return executionsStore.activeExecution;
});
const vote = computed(() => activeExecution.value?.annotation?.vote || null);
async function onDeleteExecution() {
const confirmationText = [hasAnnotation.value && locale.baseText("executionDetails.confirmMessage.annotationsNote"), locale.baseText("executionDetails.confirmMessage.message")].filter(Boolean).join(" ");
if (await message.confirm(confirmationText, locale.baseText("executionDetails.confirmMessage.headline"), {
type: "warning",
confirmButtonText: locale.baseText("executionDetails.confirmMessage.confirmButtonText"),
cancelButtonText: ""
}) !== "confirm") return;
emit("deleteCurrentExecution");
}
function handleRetryClick(command) {
if (props.execution) emit("retryExecution", {
execution: props.execution,
command
});
}
function handleStopClick() {
emit("stopExecution");
}
function onRetryButtonBlur(event) {
if (retryDropdownRef.value && event.relatedTarget === null) retryDropdownRef.value.handleClose();
}
const onVoteClick = async (voteValue) => {
if (!activeExecution.value) return;
const voteToSet = voteValue === vote.value ? null : voteValue;
try {
await executionsStore.annotateExecution(activeExecution.value.id, { vote: voteToSet });
} catch (e) {
showError(e, "executionAnnotationView.vote.error");
}
};
return (_ctx, _cache) => {
const _component_RouterLink = resolveComponent("RouterLink");
return executionUIDetails.value?.name === "new" ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.$style.newInfo)
}, [createVNode(unref(N8nText_default), {
class: normalizeClass(_ctx.$style.newMessage),
color: "text-light"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("executionDetails.newMessage")), 1)]),
_: 1
}, 8, ["class"]), createVNode(unref(N8nButton_default), {
class: "mt-l",
type: "tertiary",
onClick: handleStopClick
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("executionsList.stopExecution")), 1)]),
_: 1
})], 2)) : executionUIDetails.value?.name === "running" ? (openBlock(), createElementBlock("div", {
key: 1,
class: normalizeClass(_ctx.$style.runningInfo)
}, [
createBaseVNode("div", { class: normalizeClass(_ctx.$style.spinner) }, [createVNode(unref(N8nSpinner_default), { type: "ring" })], 2),
createVNode(unref(N8nText_default), {
class: normalizeClass(_ctx.$style.runningMessage),
color: "text-light"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("executionDetails.runningMessage")), 1)]),
_: 1
}, 8, ["class"]),
createVNode(unref(N8nButton_default), {
"data-test-id": "stop-execution",
class: "mt-l",
type: "tertiary",
disabled: !workflowPermissions.value.execute,
onClick: handleStopClick
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("executionsList.stopExecution")), 1)]),
_: 1
}, 8, ["disabled"])
], 2)) : executionUIDetails.value ? (openBlock(), createElementBlock("div", {
key: 2,
class: normalizeClass(_ctx.$style.previewContainer)
}, [_ctx.execution ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.$style.executionDetails),
"data-test-id": `execution-preview-details-${executionId.value}`
}, [createBaseVNode("div", { class: normalizeClass(_ctx.$style.executionDetailsLeft) }, [
createBaseVNode("div", { class: normalizeClass(_ctx.$style.executionTitle) }, [createVNode(unref(N8nText_default), {
size: "large",
color: "text-dark",
bold: true,
"data-test-id": "execution-time"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(executionUIDetails.value?.startTime), 1)]),
_: 1
}), isAnnotationEnabled.value && _ctx.execution ? (openBlock(), createBlock(VoteButtons_default, {
key: 0,
"data-test-id": "execution-preview-vote-buttons",
vote: vote.value,
class: normalizeClass(_ctx.$style.voteButtons),
onVoteClick
}, null, 8, ["vote", "class"])) : createCommentVNode("", true)], 2),
createBaseVNode("div", { class: normalizeClass(_ctx.$style.executionDetailsInfo) }, [
executionUIDetails.value?.name === "running" ? (openBlock(), createBlock(unref(N8nSpinner_default), {
key: 0,
size: "small",
class: normalizeClass([_ctx.$style.spinner, "mr-4xs"])
}, null, 8, ["class"])) : createCommentVNode("", true),
createVNode(unref(N8nText_default), {
size: "medium",
class: normalizeClass([_ctx.$style.status, _ctx.$style[executionUIDetails.value.name]]),
"data-test-id": "execution-preview-label"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(executionUIDetails.value.label), 1)]),
_: 1
}, 8, ["class"]),
_cache[1] || (_cache[1] = createTextVNode(" " + toDisplayString(" ") + " ")),
executionUIDetails.value?.showTimestamp === false ? (openBlock(), createBlock(unref(N8nText_default), {
key: 1,
color: "text-base",
size: "medium"
}, {
default: withCtx(() => [createTextVNode(" | ID#" + toDisplayString(_ctx.execution.id), 1)]),
_: 1
})) : executionUIDetails.value.name === "running" ? (openBlock(), createBlock(unref(N8nText_default), {
key: 2,
color: "text-base",
size: "medium"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("executionDetails.runningTimeRunning", { interpolate: { time: executionUIDetails.value?.runningTime } })) + " | ID#" + toDisplayString(_ctx.execution.id), 1)]),
_: 1
})) : executionUIDetails.value.name !== "waiting" ? (openBlock(), createBlock(unref(N8nText_default), {
key: 3,
color: "text-base",
size: "medium",
"data-test-id": "execution-preview-id"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("executionDetails.runningTimeFinished", { interpolate: { time: executionUIDetails.value?.runningTime ?? "unknown" } })) + " | ID#" + toDisplayString(_ctx.execution.id), 1)]),
_: 1
})) : createCommentVNode("", true)
], 2),
_ctx.execution.mode === "retry" ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.$style.executionDetailsRetry)
}, [createVNode(unref(N8nText_default), {
color: "text-base",
size: "small"
}, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("executionDetails.retry")) + " ", 1), createVNode(_component_RouterLink, {
class: normalizeClass(_ctx.$style.executionLink),
to: {
name: unref(VIEWS).EXECUTION_PREVIEW,
params: {
workflowId: _ctx.execution.workflowId,
executionId: _ctx.execution.retryOf
}
}
}, {
default: withCtx(() => [createTextVNode(" #" + toDisplayString(_ctx.execution.retryOf), 1)]),
_: 1
}, 8, ["class", "to"])]),
_: 1
})], 2)) : createCommentVNode("", true),
isAnnotationEnabled.value && _ctx.execution ? (openBlock(), createBlock(WorkflowExecutionAnnotationTags_ee_default, {
key: 1,
execution: _ctx.execution
}, null, 8, ["execution"])) : createCommentVNode("", true)
], 2), createBaseVNode("div", { class: normalizeClass(_ctx.$style.actions) }, [
createVNode(_component_RouterLink, { to: {
name: unref(VIEWS).EXECUTION_DEBUG,
params: {
name: _ctx.execution.workflowId,
executionId: _ctx.execution.id
}
} }, {
default: withCtx(() => [createVNode(unref(N8nButton_default), {
size: "medium",
type: debugButtonData.value.type,
class: normalizeClass(_ctx.$style.debugLink),
disabled: !workflowPermissions.value.update
}, {
default: withCtx(() => [createBaseVNode("span", {
"data-test-id": "execution-debug-button",
onClick: _cache[0] || (_cache[0] = (...args) => unref(executionDebugging).handleDebugLinkClick && unref(executionDebugging).handleDebugLinkClick(...args))
}, toDisplayString(debugButtonData.value.text), 1)]),
_: 1
}, 8, [
"type",
"class",
"disabled"
])]),
_: 1
}, 8, ["to"]),
isRetriable.value ? (openBlock(), createBlock(unref(ElDropdown), {
key: 0,
ref: "retryDropdown",
trigger: "click",
onCommand: handleRetryClick
}, {
dropdown: withCtx(() => [createVNode(unref(ElDropdownMenu), null, {
default: withCtx(() => [createVNode(unref(ElDropdownItem), { command: "current-workflow" }, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("executionsList.retryWithCurrentlySavedWorkflow")), 1)]),
_: 1
}), createVNode(unref(ElDropdownItem), { command: "original-workflow" }, {
default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("executionsList.retryWithOriginalWorkflow")), 1)]),
_: 1
})]),
_: 1
})]),
default: withCtx(() => [createBaseVNode("span", _hoisted_2, [createVNode(unref(N8nIconButton_default), {
size: "medium",
type: "tertiary",
title: unref(locale).baseText("executionsList.retryExecution"),
disabled: !workflowPermissions.value.update,
icon: "redo-2",
"data-test-id": "execution-preview-retry-button",
onBlur: onRetryButtonBlur
}, null, 8, ["title", "disabled"])])]),
_: 1
}, 512)) : createCommentVNode("", true),
isAnnotationEnabled.value && activeExecution.value ? (openBlock(), createBlock(WorkflowExecutionAnnotationPanel_ee_default, {
key: 1,
execution: activeExecution.value
}, null, 8, ["execution"])) : createCommentVNode("", true),
createVNode(unref(N8nIconButton_default), {
title: unref(locale).baseText("executionDetails.deleteExecution"),
disabled: !workflowPermissions.value.update,
icon: "trash-2",
size: "medium",
type: "tertiary",
"data-test-id": "execution-preview-delete-button",
onClick: onDeleteExecution
}, null, 8, ["title", "disabled"])
], 2)], 10, _hoisted_1)) : createCommentVNode("", true), (openBlock(), createBlock(WorkflowPreview_default, {
key: executionId.value,
mode: "execution",
"loader-type": "spinner",
"execution-id": executionId.value,
"execution-mode": _ctx.execution?.mode || "",
"node-id": nodeId.value
}, null, 8, [
"execution-id",
"execution-mode",
"node-id"
]))], 2)) : createCommentVNode("", true);
};
}
});
var WorkflowExecutionsPreview_vue_vue_type_style_index_0_lang_module_default = {
previewContainer: "_previewContainer_152nc_123",
executionDetails: "_executionDetails_152nc_129",
executionDetailsLeft: "_executionDetailsLeft_152nc_147",
executionTitle: "_executionTitle_152nc_153",
voteButtons: "_voteButtons_152nc_159",
spinner: "_spinner_152nc_163",
running: "_running_152nc_169",
waiting: "_waiting_152nc_174",
success: "_success_152nc_178",
error: "_error_152nc_182",
newInfo: "_newInfo_152nc_186",
runningInfo: "_runningInfo_152nc_187",
newMessage: "_newMessage_152nc_194",
runningMessage: "_runningMessage_152nc_195",
debugLink: "_debugLink_152nc_201",
actions: "_actions_152nc_206",
highlightDataButton: "_highlightDataButton_152nc_211",
highlightDataButtonActive: "_highlightDataButtonActive_152nc_216",
highlightDataButtonOpen: "_highlightDataButtonOpen_152nc_220",
badge: "_badge_152nc_226"
};
var WorkflowExecutionsPreview_default = /* @__PURE__ */ __plugin_vue_export_helper_default(WorkflowExecutionsPreview_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": WorkflowExecutionsPreview_vue_vue_type_style_index_0_lang_module_default }]]);
export { WorkflowExecutionsPreview_default as default };