n8n-editor-ui 1.90.1 → 1.91.1
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/dist/assets/{AnimatedSpinner-ChThynSJ.js → AnimatedSpinner-BrkRvAXQ.js} +1 -1
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-WGp2Kuen.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DRamY8Fo.js} +1 -1
- package/dist/assets/{AuthView-Dlhn_SQ-.js → AuthView-ehh7NFh5.js} +2 -2
- package/dist/assets/{CanvasChatSwitch-BuBg7TJP.js → CanvasChatSwitch-DUBgoMXw.js} +11 -11
- package/dist/assets/{ChangePasswordView-BKYXOoDf.js → ChangePasswordView-BLFb7_-o.js} +3 -3
- package/dist/assets/CollectionParameter-BaH_a73u.js +4 -0
- package/dist/assets/{CredentialsView-BNWIgrLb.js → CredentialsView-1uYUpp0G.js} +10 -9
- package/dist/assets/{DemoFooter-DR6r_2qR.js → DemoFooter-CNfkqkRC.js} +8 -8
- package/dist/assets/{ErrorView-Bu8Mt5FH.js → ErrorView-CmYweWFA.js} +1 -1
- package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-DvtOOOhh.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-DAWTDTON.js} +2 -2
- package/dist/assets/{ExecutionsView-C0WZAIi0.js → ExecutionsView-fotg1R4V.js} +11 -10
- package/dist/assets/{FileSaver.min-Cm0u4qyc.js → FileSaver.min-CcnqpaV-.js} +1 -1
- package/dist/assets/{FixedCollectionParameter-KmRZtBiP.js → FixedCollectionParameter-BYR4RzWw.js} +1 -1
- package/dist/assets/{ForgotMyPasswordView-GH7SqEFu.js → ForgotMyPasswordView-CQMKtpr-.js} +3 -3
- package/dist/assets/{InsightsChartAverageRuntime-SeBUN06R.js → InsightsChartAverageRuntime-B-9BU5qw.js} +7 -6
- package/dist/assets/{InsightsChartFailed-TYjH8LwV.js → InsightsChartFailed-Bd1BlFEm.js} +7 -6
- package/dist/assets/{InsightsChartFailureRate-D41Jv-6v.js → InsightsChartFailureRate-DPTCueAp.js} +7 -6
- package/dist/assets/{InsightsChartTimeSaved-TLPDAmPx.js → InsightsChartTimeSaved-CSVKB08W.js} +7 -6
- package/dist/assets/{InsightsChartTotal-CaKTe2mv.js → InsightsChartTotal-Bxjmisao.js} +7 -6
- package/dist/assets/InsightsDashboard-5cOORj5z.js +372 -0
- package/dist/assets/{InsightsDashboard-DPVczYm3.css → InsightsDashboard-Bx4vx9gz.css} +16 -0
- package/dist/assets/{InsightsPaywall-Z4Y0nO-i.js → InsightsPaywall-Bdo_3Ic_.js} +1 -1
- package/dist/assets/{InsightsSummary-FixbpmPJ.css → InsightsSummary-CdlaUpAt.css} +25 -25
- package/dist/assets/{InsightsSummary-DzYli0Pu.js → InsightsSummary-DB62HhNM.js} +16 -17
- package/dist/assets/{InsightsTableWorkflows-CUHAG57c.js → InsightsTableWorkflows-BEC5Yh0b.js} +2 -2
- package/dist/assets/{Logo-Dxp4M9dy.js → Logo-CK8euEWT.js} +1 -1
- package/dist/assets/{LogsPanel-zIrTNE6j.js → LogsPanel-CrGEYFLo.js} +480 -364
- package/dist/assets/{LogsPanel-DmPMCt9w.css → LogsPanel-DLC2TAqh.css} +203 -97
- package/dist/assets/{MainHeader-D4cIIoUA.js → MainHeader-C7XOaZKu.js} +122 -295
- package/dist/assets/MainHeader-CEPLiR-5.css +1044 -0
- package/dist/assets/{MainSidebar-BtW-9UPT.js → MainSidebar-DD_ugRL3.js} +2 -2
- package/dist/assets/{NodeCreation-thD32mA1.js → NodeCreation-S2FoBcnW.js} +4 -4
- package/dist/assets/{NodeCreator-B4mHaU45.js → NodeCreator-D6TKVgLu.js} +14 -4
- package/dist/assets/{NodeDetailsView-cO3Ci9jH.js → NodeDetailsView-DtvMtBqp.js} +40 -30
- package/dist/assets/{NodeView-E5b1ClVD.js → NodeView-BPhaaoWK.js} +135 -30
- package/dist/assets/{ProjectCardBadge-LnLKqSK-.js → ProjectCardBadge-C_L_pqWA.js} +1 -1
- package/dist/assets/{ProjectHeader-DC02ZuZ0.js → ProjectHeader-C0FZTxjm.js} +1 -1
- package/dist/assets/{ProjectSettings-Zr1UOp7s.js → ProjectSettings-DlggJ6Ti.js} +2 -2
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CM7WIpD3.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-BNtCDFSj.js} +1 -1
- package/dist/assets/{ResourcesListLayout-CglK2dXR.css → ResourcesListLayout-CtGME7aU.css} +8 -8
- package/dist/assets/{ResourcesListLayout-DTsuHdYx.js → ResourcesListLayout-HzoSFUaj.js} +2 -2
- package/dist/assets/{RunData-DepHcD2K.css → RunData-C9dtm1M2.css} +92 -73
- package/dist/assets/{RunData-Ds-U68nr.js → RunData-D8Eax0cQ.js} +319 -221
- package/dist/assets/{RunDataAi-DdK11EHU.js → RunDataAi-BUnCQIRN.js} +3 -3
- package/dist/assets/{RunDataJson-Txw0lqay.css → RunDataJson-BH9HLoGC.css} +12 -8
- package/dist/assets/{RunDataJson-B2WU5od1.js → RunDataJson-DXd3nZxI.js} +20 -14
- package/dist/assets/{RunDataJsonActions-DqZ2X1yJ.js → RunDataJsonActions-aivOaol2.js} +1 -1
- package/dist/assets/{RunDataSearch-CQsyZvGK.js → RunDataSearch-DJ9BZGTu.js} +1 -1
- package/dist/assets/{RunDataTable-DyUvXWfl.css → RunDataTable-CUxj7dHx.css} +47 -39
- package/dist/assets/{RunDataTable-BO0R4JT_.js → RunDataTable-vEPCwbcC.js} +41 -30
- package/dist/assets/{SamlOnboarding-CmwMX5y2.js → SamlOnboarding--OTxMEws.js} +3 -3
- package/dist/assets/{SettingsApiView-D6uBbi9-.js → SettingsApiView-BulxWyyY.js} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-CJODtx_K.js → SettingsCommunityNodesView-4wwPXFO2.js} +4 -4
- package/dist/assets/{SettingsExternalSecrets-CVk14P_P.js → SettingsExternalSecrets-zt7dxBKK.js} +1 -1
- package/dist/assets/{SettingsLdapView-pg71FErj.js → SettingsLdapView-xneO6UIv.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-DUOI3Xb9.js → SettingsLogStreamingView-_h8wUzum.js} +1 -1
- package/dist/assets/{SettingsPersonalView-BFnOmBPC.js → SettingsPersonalView-CwYMP4sk.js} +1 -1
- package/dist/assets/{SettingsSourceControl-BUNmxcvB.js → SettingsSourceControl-B9Tg93u3.js} +1 -1
- package/dist/assets/{SettingsSso-Dx8Qw_2Z.js → SettingsSso-XaL1PzfW.js} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-DTk86tXU.js → SettingsUsageAndPlan-Ci15FW81.js} +1 -1
- package/dist/assets/{SettingsUsersView-BviXcl30.js → SettingsUsersView-DBJV4vSK.js} +1 -1
- package/dist/assets/{SettingsView-fzPdUijx.js → SettingsView-DMzdPF-1.js} +1 -1
- package/dist/assets/{SetupView-DUTx1JXK.js → SetupView-BqWgdvDq.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-fApxCGHh.js → SetupWorkflowCredentialsButton-B2wnuUnF.js} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-C5t9fEKF.js → SetupWorkflowFromTemplateView-BwC_wFSc.js} +3 -3
- package/dist/assets/{SigninView-BRVoXQRW.js → SigninView-DpTLJJwD.js} +3 -3
- package/dist/assets/{SignoutView-Duh6wb4Y.js → SignoutView-dkTtOCo1.js} +1 -1
- package/dist/assets/{SignupView-DMkpTtjs.js → SignupView-CJFJJO3L.js} +3 -3
- package/dist/assets/{TemplateDetails-Df9_jph6.js → TemplateDetails-84YElIBA.js} +1 -1
- package/dist/assets/{TemplateList-qSnJvw0K.js → TemplateList-CGsfKuVA.js} +1 -1
- package/dist/assets/{TemplatesCollectionView--ccYXaCo.js → TemplatesCollectionView-2y8KZk0I.js} +5 -5
- package/dist/assets/{TemplatesSearchView-D1YgHKld.js → TemplatesSearchView-DgosiOzl.js} +3 -3
- package/dist/assets/{TemplatesView-B9CwObHN.js → TemplatesView-CgQSZO4a.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-DtLpUF59.js → TemplatesWorkflowView-2pSUmAbX.js} +5 -5
- package/dist/assets/{TestDefinitionEditView-DFcBlKnN.js → TestDefinitionEditView-C26sWE7p.js} +8 -8
- package/dist/assets/{TestDefinitionListView-C_mbolTO.js → TestDefinitionListView-Cyl6bsLP.js} +1 -1
- package/dist/assets/{TestDefinitionNewView-CvyM6TLE.js → TestDefinitionNewView-CfIZ0atk.js} +2 -2
- package/dist/assets/{TestDefinitionRootView-BXzJY0cY.js → TestDefinitionRootView-CYg7HBL-.js} +1 -1
- package/dist/assets/{VariablesView-BHFJj5IU.js → VariablesView-BFE9B0_b.js} +3 -3
- package/dist/assets/{WorkerView-CgIksFjP.js → WorkerView-BUMCMS_B.js} +6 -6
- package/dist/assets/WorkflowActivator-BDLto9c0.js +776 -0
- package/dist/assets/{MainHeader-CWA2JfVJ.css → WorkflowActivator-DAyH7N29.css} +74 -434
- package/dist/assets/{WorkflowExecutionsInfoAccordion-BcBLZ_Ul.js → WorkflowExecutionsInfoAccordion-manN-WIj.js} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-B9ByHnbR.js → WorkflowExecutionsLandingPage-BzGmpGvf.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-DCE7TYLh.js → WorkflowExecutionsPreview-CNEV2lom.js} +6 -6
- package/dist/assets/{WorkflowExecutionsView-DFoBpdS7.js → WorkflowExecutionsView-WiNvtAmD.js} +7 -7
- package/dist/assets/{WorkflowHistory-DolmPUM2.js → WorkflowHistory-6uJJqB4x.js} +4 -4
- package/dist/assets/{WorkflowOnboardingView-DQW48M8_.js → WorkflowOnboardingView-CPt_AUR-.js} +1 -1
- package/dist/assets/{WorkflowPreview-BFR6V9SO.js → WorkflowPreview-CHUEX6H6.js} +1 -1
- package/dist/assets/{WorkflowsView-CsM69PSv.css → WorkflowsView-B2_HJCJ5.css} +28 -162
- package/dist/assets/{WorkflowsView-B-feKuLZ.js → WorkflowsView-DbGBRbfc.js} +123 -216
- package/dist/assets/{chartjs.utils-BcXTJ2Te.js → chartjs.utils-C--HONKb.js} +2 -2
- package/dist/assets/{dateFormatter-CZI1kGYK.js → dateFormatter-DbKqmK4w.js} +5 -5
- package/dist/assets/{easyAiWorkflowUtils-ChToD_Yl.js → easyAiWorkflowUtils-BWgfZ0am.js} +1 -1
- package/dist/assets/{global-link-actions-OGaZVwsw.js → global-link-actions-COf-9vBh.js} +1 -1
- package/dist/assets/{import-curl-CAszzwx1.js → import-curl-BiXaU2jk.js} +1 -1
- package/dist/assets/{index-7WdERzqm.js → index-B6xE9gZ1.js} +1 -1
- package/dist/assets/{index-BpdkKRP4.js → index-BLAboPd2.js} +14034 -12086
- package/dist/assets/{index-C5OXOcIJ.css → index-sq5ggyEC.css} +6265 -4303
- package/dist/assets/{pickBy-mYqFOFbh.js → pickBy-gZHb6vZ2.js} +1 -1
- package/dist/assets/{templateActions-BX9arLbc.js → templateActions-DCx74tPa.js} +1 -1
- package/dist/assets/{useBeforeUnload-K7nQ15Rk.js → useBeforeUnload-DbfysOS-.js} +1 -1
- package/dist/assets/{useCanvasMapping-D_UPCxYX.js → useCanvasMapping-CSuq_dYj.js} +251 -96
- package/dist/assets/{useCanvasMapping-C--wac6H.css → useCanvasMapping-cuXLM-h-.css} +185 -4
- package/dist/assets/{useCanvasOperations-D6VFiC3b.js → useCanvasOperations-C0pQBHW3.js} +3 -2
- package/dist/assets/{useClearExecutionButtonVisible-D_0O6f0X.js → useClearExecutionButtonVisible-Cvfxw8xC.js} +2 -2
- package/dist/assets/{useExecutionDebugging-BNMaKOh7.js → useExecutionDebugging-D2H5O6fT.js} +1 -1
- package/dist/assets/{useExecutionHelpers-DN5HqPqY.js → useExecutionHelpers-C--m0pTQ.js} +2 -2
- package/dist/assets/{useImportCurlCommand-BSL596XF.js → useImportCurlCommand-XFn6Ezp2.js} +2 -2
- package/dist/assets/{usePushConnection-BdV7ILvK.js → usePushConnection-x0iF1Axz.js} +5 -3
- package/dist/assets/{useTestDefinitionForm-CIhrxyve.js → useTestDefinitionForm-2YP-8pAN.js} +1 -1
- package/dist/assets/{useWorkflowActivate-pZ62ib_C.js → useWorkflowActivate-CvmIpy5T.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/vite.config.mts +15 -1
- package/dist/assets/CollectionParameter-CQXiWluX.js +0 -4
- package/dist/assets/InsightsDashboard-o3JS9fjz.js +0 -178
- package/dist/assets/WorkflowActivator-BX59FxTZ.css +0 -260
- package/dist/assets/WorkflowActivator-O6i5XAk2.js +0 -231
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { u as useClearExecutionButtonVisible } from "./useClearExecutionButtonVisible-
|
|
3
|
-
import { H as HighlightJS, f as formatTokenUsageCount, _ as _sfc_main$
|
|
4
|
-
import { t as toTime, a as toDayMonth } from "./dateFormatter-
|
|
5
|
-
import { u as upperFirst } from "./useCanvasOperations-
|
|
1
|
+
import { b0 as inject, b1 as isRef, i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, q as computed, j as createVNode, e as createBlock, f as createCommentVNode, m as unref, t as toDisplayString, b2 as withModifiers, _ as _export_sfc, b3 as toRefs, r as ref, o as onMounted, n as normalizeClass, x as renderSlot, b4 as normalizeProps, b5 as guardReactiveProps, b6 as resolveDynamicComponent, b7 as mergeProps, b8 as VueMarkdown, F as Fragment, D as renderList, b9 as markdownLink, ba as useFileDialog, bb as onUnmounted, B as normalizeStyle, aA as withDirectives, bc as vModelText, bd as withKeys, w as withCtx, X as watch, h as resolveComponent, l as createTextVNode, be as N8nText, bf as useClipboard, a as useToast, c as useI18n$1, aR as N8nTooltip, bg as N8nButton, aT as _sfc_main$i, aV as createSlots, aJ as useStorage, a_ as watchEffect, y as onBeforeUnmount, G as useDebounce, bh as provide, bi as useProvideTooltipAppendTo, bj as IsInPiPWindowSymbol, bk as CHAT_TRIGGER_NODE_TYPE, bl as MANUAL_CHAT_TRIGGER_NODE_TYPE, bm as NodeConnectionTypes, bn as v4, bo as get, bp as isEmpty, bq as usePinnedData, ai as useMessage, aj as MODAL_CONFIRM, br as CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE, bs as AI_SUBCATEGORY, bt as AI_CATEGORY_AGENTS, bu as AI_CATEGORY_CHAINS, bv as AI_CODE_NODE_TYPE, bw as getNodeInputs, bx as getConnectionTypes, by as getNodeOutputs, Q as useWorkflowsStore, bz as useNodeTypesStore, $ as useCanvasStore, b as useRouter, bA as useNodeHelpers, bB as useRunWorkflow, V as VIEWS, aZ as LOGS_PANEL_STATE, bC as _sfc_main$k, bD as I18nT, bE as N8nIcon, as as useNDVStore, bF as useVirtualList, bG as N8nRadioButtons, ag as useTelemetry, z as nextTick, bH as ndvEventBus, aS as N8nLink, av as useLocalStorage, bI as LOG_DETAILS_CONTENT, aY as useTemplateRef, a$ as N8nResizeWrapper, bJ as useStyles, bK as Workflow, bL as IN_PROGRESS_EXECUTION_ID, bM as useThrottleFn } from "./index-BLAboPd2.js";
|
|
2
|
+
import { u as useClearExecutionButtonVisible } from "./useClearExecutionButtonVisible-Cvfxw8xC.js";
|
|
3
|
+
import { H as HighlightJS, f as formatTokenUsageCount, _ as _sfc_main$j, g as getSubtreeTotalConsumedTokens, a as getTotalConsumedTokens, b as flattenLogEntries, R as RunData, c as createLogEntries, d as deepToRaw, e as findSelectedLogEntry } from "./RunData-D8Eax0cQ.js";
|
|
4
|
+
import { t as toTime, a as toDayMonth } from "./dateFormatter-DbKqmK4w.js";
|
|
5
|
+
import { u as upperFirst } from "./useCanvasOperations-C0pQBHW3.js";
|
|
6
6
|
function bash(hljs) {
|
|
7
7
|
const regex = hljs.regex;
|
|
8
8
|
const VAR = {};
|
|
@@ -2518,13 +2518,13 @@ function useI18n() {
|
|
|
2518
2518
|
}
|
|
2519
2519
|
return { t, te };
|
|
2520
2520
|
}
|
|
2521
|
-
const _hoisted_1$
|
|
2521
|
+
const _hoisted_1$e = {
|
|
2522
2522
|
viewBox: "0 0 24 24",
|
|
2523
2523
|
width: "1.2em",
|
|
2524
2524
|
height: "1.2em"
|
|
2525
2525
|
};
|
|
2526
2526
|
function render$7(_ctx, _cache) {
|
|
2527
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2527
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$e, _cache[0] || (_cache[0] = [
|
|
2528
2528
|
createBaseVNode("path", {
|
|
2529
2529
|
fill: "currentColor",
|
|
2530
2530
|
d: "M20 6.91L17.09 4L12 9.09L6.91 4L4 6.91L9.09 12L4 17.09L6.91 20L12 14.91L17.09 20L20 17.09L14.91 12z"
|
|
@@ -2532,13 +2532,13 @@ function render$7(_ctx, _cache) {
|
|
|
2532
2532
|
]));
|
|
2533
2533
|
}
|
|
2534
2534
|
const IconDelete = { name: "mdi-closeThick", render: render$7 };
|
|
2535
|
-
const _hoisted_1$
|
|
2535
|
+
const _hoisted_1$d = {
|
|
2536
2536
|
viewBox: "0 0 24 24",
|
|
2537
2537
|
width: "1.2em",
|
|
2538
2538
|
height: "1.2em"
|
|
2539
2539
|
};
|
|
2540
2540
|
function render$6(_ctx, _cache) {
|
|
2541
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2541
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$d, _cache[0] || (_cache[0] = [
|
|
2542
2542
|
createBaseVNode("path", {
|
|
2543
2543
|
fill: "currentColor",
|
|
2544
2544
|
d: "M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m0 18h12v-8l-4 4l-2-2zM8 9a2 2 0 0 0-2 2a2 2 0 0 0 2 2a2 2 0 0 0 2-2a2 2 0 0 0-2-2"
|
|
@@ -2546,13 +2546,13 @@ function render$6(_ctx, _cache) {
|
|
|
2546
2546
|
]));
|
|
2547
2547
|
}
|
|
2548
2548
|
const IconFileImage = { name: "mdi-fileImage", render: render$6 };
|
|
2549
|
-
const _hoisted_1$
|
|
2549
|
+
const _hoisted_1$c = {
|
|
2550
2550
|
viewBox: "0 0 24 24",
|
|
2551
2551
|
width: "1.2em",
|
|
2552
2552
|
height: "1.2em"
|
|
2553
2553
|
};
|
|
2554
2554
|
function render$5(_ctx, _cache) {
|
|
2555
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2555
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$c, _cache[0] || (_cache[0] = [
|
|
2556
2556
|
createBaseVNode("path", {
|
|
2557
2557
|
fill: "currentColor",
|
|
2558
2558
|
d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zm-1 11h-2v5a2 2 0 0 1-2 2a2 2 0 0 1-2-2a2 2 0 0 1 2-2c.4 0 .7.1 1 .3V11h3zm0-4V3.5L18.5 9z"
|
|
@@ -2560,13 +2560,13 @@ function render$5(_ctx, _cache) {
|
|
|
2560
2560
|
]));
|
|
2561
2561
|
}
|
|
2562
2562
|
const IconFileMusic = { name: "mdi-fileMusic", render: render$5 };
|
|
2563
|
-
const _hoisted_1$
|
|
2563
|
+
const _hoisted_1$b = {
|
|
2564
2564
|
viewBox: "0 0 24 24",
|
|
2565
2565
|
width: "1.2em",
|
|
2566
2566
|
height: "1.2em"
|
|
2567
2567
|
};
|
|
2568
2568
|
function render$4(_ctx, _cache) {
|
|
2569
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2569
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$b, _cache[0] || (_cache[0] = [
|
|
2570
2570
|
createBaseVNode("path", {
|
|
2571
2571
|
fill: "currentColor",
|
|
2572
2572
|
d: "M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m9 16v-2H6v2zm3-4v-2H6v2z"
|
|
@@ -2574,13 +2574,13 @@ function render$4(_ctx, _cache) {
|
|
|
2574
2574
|
]));
|
|
2575
2575
|
}
|
|
2576
2576
|
const IconFileText = { name: "mdi-fileText", render: render$4 };
|
|
2577
|
-
const _hoisted_1$
|
|
2577
|
+
const _hoisted_1$a = {
|
|
2578
2578
|
viewBox: "0 0 24 24",
|
|
2579
2579
|
width: "1.2em",
|
|
2580
2580
|
height: "1.2em"
|
|
2581
2581
|
};
|
|
2582
2582
|
function render$3(_ctx, _cache) {
|
|
2583
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2583
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$a, _cache[0] || (_cache[0] = [
|
|
2584
2584
|
createBaseVNode("path", {
|
|
2585
2585
|
fill: "currentColor",
|
|
2586
2586
|
d: "M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m11 17v-6l-3 2.2V13H7v6h7v-2.2z"
|
|
@@ -2588,13 +2588,13 @@ function render$3(_ctx, _cache) {
|
|
|
2588
2588
|
]));
|
|
2589
2589
|
}
|
|
2590
2590
|
const IconFileVideo = { name: "mdi-fileVideo", render: render$3 };
|
|
2591
|
-
const _hoisted_1$
|
|
2591
|
+
const _hoisted_1$9 = {
|
|
2592
2592
|
viewBox: "0 0 24 24",
|
|
2593
2593
|
width: "1.2em",
|
|
2594
2594
|
height: "1.2em"
|
|
2595
2595
|
};
|
|
2596
2596
|
function render$2(_ctx, _cache) {
|
|
2597
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2597
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$9, _cache[0] || (_cache[0] = [
|
|
2598
2598
|
createBaseVNode("path", {
|
|
2599
2599
|
fill: "currentColor",
|
|
2600
2600
|
d: "M14 3v2h3.59l-9.83 9.83l1.41 1.41L19 6.41V10h2V3m-2 16H5V5h7V3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7h-2z"
|
|
@@ -2602,8 +2602,8 @@ function render$2(_ctx, _cache) {
|
|
|
2602
2602
|
]));
|
|
2603
2603
|
}
|
|
2604
2604
|
const IconPreview = { name: "mdi-openInNew", render: render$2 };
|
|
2605
|
-
const _hoisted_1$
|
|
2606
|
-
const _sfc_main$
|
|
2605
|
+
const _hoisted_1$8 = { class: "chat-file-name" };
|
|
2606
|
+
const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
2607
2607
|
__name: "ChatFile",
|
|
2608
2608
|
props: {
|
|
2609
2609
|
file: {},
|
|
@@ -2638,7 +2638,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
2638
2638
|
onClick
|
|
2639
2639
|
}, [
|
|
2640
2640
|
createVNode(unref(TypeIcon)),
|
|
2641
|
-
createBaseVNode("p", _hoisted_1$
|
|
2641
|
+
createBaseVNode("p", _hoisted_1$8, toDisplayString(_ctx.file.name), 1),
|
|
2642
2642
|
_ctx.isRemovable ? (openBlock(), createElementBlock("span", {
|
|
2643
2643
|
key: 0,
|
|
2644
2644
|
class: "chat-file-delete",
|
|
@@ -2653,16 +2653,16 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
2653
2653
|
};
|
|
2654
2654
|
}
|
|
2655
2655
|
});
|
|
2656
|
-
const ChatFile = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
2657
|
-
const _hoisted_1$
|
|
2656
|
+
const ChatFile = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__scopeId", "data-v-70b9370d"]]);
|
|
2657
|
+
const _hoisted_1$7 = {
|
|
2658
2658
|
key: 0,
|
|
2659
2659
|
class: "chat-message-actions"
|
|
2660
2660
|
};
|
|
2661
|
-
const _hoisted_2$
|
|
2661
|
+
const _hoisted_2$3 = {
|
|
2662
2662
|
key: 2,
|
|
2663
2663
|
class: "chat-message-files"
|
|
2664
2664
|
};
|
|
2665
|
-
const _sfc_main$
|
|
2665
|
+
const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
2666
2666
|
__name: "Message",
|
|
2667
2667
|
props: {
|
|
2668
2668
|
message: {}
|
|
@@ -2740,7 +2740,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2740
2740
|
ref: messageContainer,
|
|
2741
2741
|
class: normalizeClass(["chat-message", classes.value])
|
|
2742
2742
|
}, [
|
|
2743
|
-
_ctx.$slots.beforeMessage ? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
2743
|
+
_ctx.$slots.beforeMessage ? (openBlock(), createElementBlock("div", _hoisted_1$7, [
|
|
2744
2744
|
renderSlot(_ctx.$slots, "beforeMessage", normalizeProps(guardReactiveProps({ message: unref(message) })))
|
|
2745
2745
|
])) : createCommentVNode("", true),
|
|
2746
2746
|
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
@@ -2751,7 +2751,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2751
2751
|
options: markdownOptions,
|
|
2752
2752
|
plugins: [linksNewTabPlugin]
|
|
2753
2753
|
}, null, 8, ["source", "plugins"])),
|
|
2754
|
-
(unref(message).files ?? []).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
2754
|
+
(unref(message).files ?? []).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$3, [
|
|
2755
2755
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(message).files ?? [], (file) => {
|
|
2756
2756
|
return openBlock(), createElementBlock("div", {
|
|
2757
2757
|
key: file.name,
|
|
@@ -2770,13 +2770,13 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2770
2770
|
};
|
|
2771
2771
|
}
|
|
2772
2772
|
});
|
|
2773
|
-
const _hoisted_1$
|
|
2773
|
+
const _hoisted_1$6 = {
|
|
2774
2774
|
viewBox: "0 0 24 24",
|
|
2775
2775
|
width: "1.2em",
|
|
2776
2776
|
height: "1.2em"
|
|
2777
2777
|
};
|
|
2778
2778
|
function render$1(_ctx, _cache) {
|
|
2779
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2779
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$6, _cache[0] || (_cache[0] = [
|
|
2780
2780
|
createBaseVNode("path", {
|
|
2781
2781
|
fill: "currentColor",
|
|
2782
2782
|
d: "M16.5 6v11.5a4 4 0 0 1-4 4a4 4 0 0 1-4-4V5A2.5 2.5 0 0 1 11 2.5A2.5 2.5 0 0 1 13.5 5v10.5a1 1 0 0 1-1 1a1 1 0 0 1-1-1V6H10v9.5a2.5 2.5 0 0 0 2.5 2.5a2.5 2.5 0 0 0 2.5-2.5V5a4 4 0 0 0-4-4a4 4 0 0 0-4 4v12.5a5.5 5.5 0 0 0 5.5 5.5a5.5 5.5 0 0 0 5.5-5.5V6z"
|
|
@@ -2784,13 +2784,13 @@ function render$1(_ctx, _cache) {
|
|
|
2784
2784
|
]));
|
|
2785
2785
|
}
|
|
2786
2786
|
const IconPaperclip = { name: "mdi-paperclip", render: render$1 };
|
|
2787
|
-
const _hoisted_1$
|
|
2787
|
+
const _hoisted_1$5 = {
|
|
2788
2788
|
viewBox: "0 0 24 24",
|
|
2789
2789
|
width: "1.2em",
|
|
2790
2790
|
height: "1.2em"
|
|
2791
2791
|
};
|
|
2792
2792
|
function render(_ctx, _cache) {
|
|
2793
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2793
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$5, _cache[0] || (_cache[0] = [
|
|
2794
2794
|
createBaseVNode("path", {
|
|
2795
2795
|
fill: "currentColor",
|
|
2796
2796
|
d: "m2 21l21-9L2 3v7l15 2l-15 2z"
|
|
@@ -2831,8 +2831,8 @@ function createEventBus() {
|
|
|
2831
2831
|
};
|
|
2832
2832
|
}
|
|
2833
2833
|
const chatEventBus = createEventBus();
|
|
2834
|
-
const _hoisted_1$
|
|
2835
|
-
const _hoisted_2$
|
|
2834
|
+
const _hoisted_1$4 = { class: "chat-inputs" };
|
|
2835
|
+
const _hoisted_2$2 = {
|
|
2836
2836
|
key: 0,
|
|
2837
2837
|
class: "chat-input-left-panel"
|
|
2838
2838
|
};
|
|
@@ -2844,7 +2844,7 @@ const _hoisted_7 = {
|
|
|
2844
2844
|
key: 0,
|
|
2845
2845
|
class: "chat-files"
|
|
2846
2846
|
};
|
|
2847
|
-
const _sfc_main$
|
|
2847
|
+
const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
2848
2848
|
__name: "Input",
|
|
2849
2849
|
props: {
|
|
2850
2850
|
placeholder: { default: "inputPlaceholder" }
|
|
@@ -2992,8 +2992,8 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
|
2992
2992
|
style: normalizeStyle(styleVars.value),
|
|
2993
2993
|
onKeydown: withModifiers(onKeyDown, ["stop"])
|
|
2994
2994
|
}, [
|
|
2995
|
-
createBaseVNode("div", _hoisted_1$
|
|
2996
|
-
_ctx.$slots.leftPanel ? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
2995
|
+
createBaseVNode("div", _hoisted_1$4, [
|
|
2996
|
+
_ctx.$slots.leftPanel ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
|
|
2997
2997
|
renderSlot(_ctx.$slots, "leftPanel", {}, void 0, true)
|
|
2998
2998
|
])) : createCommentVNode("", true),
|
|
2999
2999
|
withDirectives(createBaseVNode("textarea", {
|
|
@@ -3050,8 +3050,8 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
|
3050
3050
|
};
|
|
3051
3051
|
}
|
|
3052
3052
|
});
|
|
3053
|
-
const ChatInput = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3054
|
-
const _sfc_main$
|
|
3053
|
+
const ChatInput = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-f0e5731e"]]);
|
|
3054
|
+
const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
3055
3055
|
__name: "MessageTyping",
|
|
3056
3056
|
props: {
|
|
3057
3057
|
animation: { default: "bouncing" }
|
|
@@ -3075,7 +3075,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
3075
3075
|
messageContainer.value?.scrollToView();
|
|
3076
3076
|
});
|
|
3077
3077
|
return (_ctx, _cache) => {
|
|
3078
|
-
return openBlock(), createBlock(unref(_sfc_main$
|
|
3078
|
+
return openBlock(), createBlock(unref(_sfc_main$g), {
|
|
3079
3079
|
ref_key: "messageContainer",
|
|
3080
3080
|
ref: messageContainer,
|
|
3081
3081
|
class: normalizeClass(classes.value),
|
|
@@ -3094,11 +3094,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
3094
3094
|
};
|
|
3095
3095
|
}
|
|
3096
3096
|
});
|
|
3097
|
-
const _hoisted_1$
|
|
3097
|
+
const _hoisted_1$3 = {
|
|
3098
3098
|
key: 0,
|
|
3099
3099
|
class: "empty-container"
|
|
3100
3100
|
};
|
|
3101
|
-
const _hoisted_2 = {
|
|
3101
|
+
const _hoisted_2$1 = {
|
|
3102
3102
|
class: "empty",
|
|
3103
3103
|
"data-test-id": "chat-messages-empty"
|
|
3104
3104
|
};
|
|
@@ -3106,7 +3106,7 @@ const _hoisted_3 = {
|
|
|
3106
3106
|
key: 1,
|
|
3107
3107
|
class: "chat-messages-list"
|
|
3108
3108
|
};
|
|
3109
|
-
const _sfc_main$
|
|
3109
|
+
const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
3110
3110
|
__name: "MessagesList",
|
|
3111
3111
|
props: {
|
|
3112
3112
|
messages: {},
|
|
@@ -3128,8 +3128,8 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
3128
3128
|
return (_ctx, _cache) => {
|
|
3129
3129
|
const _component_N8nIcon = resolveComponent("N8nIcon");
|
|
3130
3130
|
const _component_N8nText = resolveComponent("N8nText");
|
|
3131
|
-
return _ctx.emptyText && unref(initialMessages).length === 0 && _ctx.messages.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
3132
|
-
createBaseVNode("div", _hoisted_2, [
|
|
3131
|
+
return _ctx.emptyText && unref(initialMessages).length === 0 && _ctx.messages.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_1$3, [
|
|
3132
|
+
createBaseVNode("div", _hoisted_2$1, [
|
|
3133
3133
|
createVNode(_component_N8nIcon, {
|
|
3134
3134
|
icon: "comment",
|
|
3135
3135
|
size: "large",
|
|
@@ -3148,13 +3148,13 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
3148
3148
|
])
|
|
3149
3149
|
])) : (openBlock(), createElementBlock("div", _hoisted_3, [
|
|
3150
3150
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(initialMessages), (initialMessage) => {
|
|
3151
|
-
return openBlock(), createBlock(_sfc_main$
|
|
3151
|
+
return openBlock(), createBlock(_sfc_main$g, {
|
|
3152
3152
|
key: initialMessage.id,
|
|
3153
3153
|
message: initialMessage
|
|
3154
3154
|
}, null, 8, ["message"]);
|
|
3155
3155
|
}), 128)),
|
|
3156
3156
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.messages, (message) => {
|
|
3157
|
-
return openBlock(), createBlock(_sfc_main$
|
|
3157
|
+
return openBlock(), createBlock(_sfc_main$g, {
|
|
3158
3158
|
key: message.id,
|
|
3159
3159
|
ref_for: true,
|
|
3160
3160
|
ref_key: "messageComponents",
|
|
@@ -3167,12 +3167,12 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
3167
3167
|
_: 2
|
|
3168
3168
|
}, 1032, ["message"]);
|
|
3169
3169
|
}), 128)),
|
|
3170
|
-
unref(waitingForResponse) ? (openBlock(), createBlock(_sfc_main$
|
|
3170
|
+
unref(waitingForResponse) ? (openBlock(), createBlock(_sfc_main$e, { key: 0 })) : createCommentVNode("", true)
|
|
3171
3171
|
]));
|
|
3172
3172
|
};
|
|
3173
3173
|
}
|
|
3174
3174
|
});
|
|
3175
|
-
const _sfc_main$
|
|
3175
|
+
const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
3176
3176
|
__name: "MessageOptionTooltip",
|
|
3177
3177
|
props: {
|
|
3178
3178
|
placement: {
|
|
@@ -3209,15 +3209,15 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
3209
3209
|
});
|
|
3210
3210
|
const container$8 = "_container_pqtqf_123";
|
|
3211
3211
|
const icon$3 = "_icon_pqtqf_129";
|
|
3212
|
-
const style0$
|
|
3212
|
+
const style0$b = {
|
|
3213
3213
|
container: container$8,
|
|
3214
3214
|
icon: icon$3
|
|
3215
3215
|
};
|
|
3216
|
-
const cssModules$
|
|
3217
|
-
"$style": style0$
|
|
3216
|
+
const cssModules$b = {
|
|
3217
|
+
"$style": style0$b
|
|
3218
3218
|
};
|
|
3219
|
-
const MessageOptionTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3220
|
-
const _sfc_main$
|
|
3219
|
+
const MessageOptionTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__cssModules", cssModules$b]]);
|
|
3220
|
+
const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
3221
3221
|
__name: "MessageOptionAction",
|
|
3222
3222
|
props: {
|
|
3223
3223
|
label: {
|
|
@@ -3260,15 +3260,15 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
3260
3260
|
});
|
|
3261
3261
|
const container$7 = "_container_u1r1u_123";
|
|
3262
3262
|
const icon$2 = "_icon_u1r1u_129";
|
|
3263
|
-
const style0$
|
|
3263
|
+
const style0$a = {
|
|
3264
3264
|
container: container$7,
|
|
3265
3265
|
icon: icon$2
|
|
3266
3266
|
};
|
|
3267
|
-
const cssModules$
|
|
3268
|
-
"$style": style0$
|
|
3267
|
+
const cssModules$a = {
|
|
3268
|
+
"$style": style0$a
|
|
3269
3269
|
};
|
|
3270
|
-
const MessageOptionAction = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3271
|
-
const _sfc_main$
|
|
3270
|
+
const MessageOptionAction = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__cssModules", cssModules$a]]);
|
|
3271
|
+
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
3272
3272
|
__name: "PanelHeader",
|
|
3273
3273
|
props: {
|
|
3274
3274
|
title: {}
|
|
@@ -3302,20 +3302,20 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
3302
3302
|
};
|
|
3303
3303
|
}
|
|
3304
3304
|
});
|
|
3305
|
-
const container$6 = "
|
|
3306
|
-
const title$2 = "
|
|
3307
|
-
const actions$1 = "
|
|
3308
|
-
const style0$
|
|
3305
|
+
const container$6 = "_container_1uwbw_123";
|
|
3306
|
+
const title$2 = "_title_1uwbw_144";
|
|
3307
|
+
const actions$1 = "_actions_1uwbw_152";
|
|
3308
|
+
const style0$9 = {
|
|
3309
3309
|
container: container$6,
|
|
3310
3310
|
title: title$2,
|
|
3311
3311
|
actions: actions$1
|
|
3312
3312
|
};
|
|
3313
|
-
const cssModules$
|
|
3314
|
-
"$style": style0$
|
|
3313
|
+
const cssModules$9 = {
|
|
3314
|
+
"$style": style0$9
|
|
3315
3315
|
};
|
|
3316
|
-
const PanelHeader = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3317
|
-
const _hoisted_1 = ["onClick"];
|
|
3318
|
-
const _sfc_main$
|
|
3316
|
+
const PanelHeader = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__cssModules", cssModules$9]]);
|
|
3317
|
+
const _hoisted_1$2 = ["onClick"];
|
|
3318
|
+
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
3319
3319
|
__name: "ChatMessagesPanel",
|
|
3320
3320
|
props: {
|
|
3321
3321
|
pastChatMessages: {},
|
|
@@ -3435,7 +3435,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
3435
3435
|
content: unref(locale).baseText("chat.window.session.resetSession")
|
|
3436
3436
|
}, {
|
|
3437
3437
|
default: withCtx(() => [
|
|
3438
|
-
createVNode(unref(_sfc_main$
|
|
3438
|
+
createVNode(unref(_sfc_main$i), {
|
|
3439
3439
|
class: normalizeClass(_ctx.$style.newHeaderButton),
|
|
3440
3440
|
"data-test-id": "refresh-session-button",
|
|
3441
3441
|
outline: "",
|
|
@@ -3475,7 +3475,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
3475
3475
|
]),
|
|
3476
3476
|
_: 1
|
|
3477
3477
|
}),
|
|
3478
|
-
createVNode(unref(_sfc_main$
|
|
3478
|
+
createVNode(unref(_sfc_main$i), {
|
|
3479
3479
|
class: normalizeClass(_ctx.$style.headerButton),
|
|
3480
3480
|
"data-test-id": "refresh-session-button",
|
|
3481
3481
|
outline: "",
|
|
@@ -3485,7 +3485,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
3485
3485
|
title: unref(locale).baseText("chat.window.session.reset"),
|
|
3486
3486
|
onClick: onRefreshSession
|
|
3487
3487
|
}, null, 8, ["class", "title"]),
|
|
3488
|
-
_ctx.showCloseButton ? (openBlock(), createBlock(unref(_sfc_main$
|
|
3488
|
+
_ctx.showCloseButton ? (openBlock(), createBlock(unref(_sfc_main$i), {
|
|
3489
3489
|
key: 0,
|
|
3490
3490
|
class: normalizeClass(_ctx.$style.headerButton),
|
|
3491
3491
|
outline: "",
|
|
@@ -3500,7 +3500,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
3500
3500
|
key: 2,
|
|
3501
3501
|
class: normalizeClass(_ctx.$style.chatBody)
|
|
3502
3502
|
}, [
|
|
3503
|
-
createVNode(_sfc_main$
|
|
3503
|
+
createVNode(_sfc_main$d, {
|
|
3504
3504
|
messages: _ctx.messages,
|
|
3505
3505
|
class: normalizeClass(_ctx.$style.messages),
|
|
3506
3506
|
"empty-text": _ctx.isNewLogsEnabled ? unref(locale).baseText("chat.window.chat.emptyChatMessage.v2") : void 0
|
|
@@ -3516,7 +3516,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
3516
3516
|
createBaseVNode("a", {
|
|
3517
3517
|
href: "#",
|
|
3518
3518
|
onClick: ($event) => emit("displayExecution", message.id)
|
|
3519
|
-
}, toDisplayString(message.id), 9, _hoisted_1)
|
|
3519
|
+
}, toDisplayString(message.id), 9, _hoisted_1$2)
|
|
3520
3520
|
]),
|
|
3521
3521
|
_: 2
|
|
3522
3522
|
}, 1024)) : createCommentVNode("", true),
|
|
@@ -3592,7 +3592,7 @@ const newHeaderButton = "_newHeaderButton_1r0jy_188";
|
|
|
3592
3592
|
const chatBody = "_chatBody_1r0jy_193";
|
|
3593
3593
|
const messages = "_messages_1r0jy_202";
|
|
3594
3594
|
const messagesInput = "_messagesInput_1r0jy_213";
|
|
3595
|
-
const style0$
|
|
3595
|
+
const style0$8 = {
|
|
3596
3596
|
chat: chat$1,
|
|
3597
3597
|
chatHeader,
|
|
3598
3598
|
chatTitle,
|
|
@@ -3605,10 +3605,10 @@ const style0$7 = {
|
|
|
3605
3605
|
messages,
|
|
3606
3606
|
messagesInput
|
|
3607
3607
|
};
|
|
3608
|
-
const cssModules$
|
|
3609
|
-
"$style": style0$
|
|
3608
|
+
const cssModules$8 = {
|
|
3609
|
+
"$style": style0$8
|
|
3610
3610
|
};
|
|
3611
|
-
const ChatMessagesPanel = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3611
|
+
const ChatMessagesPanel = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__cssModules", cssModules$8]]);
|
|
3612
3612
|
const LOCAL_STORAGE_PANEL_HEIGHT = "N8N_CANVAS_CHAT_HEIGHT";
|
|
3613
3613
|
const LOCAL_STORAGE_PANEL_WIDTH = "N8N_CANVAS_CHAT_WIDTH";
|
|
3614
3614
|
const LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH = "N8N_LOGS_OVERVIEW_PANEL_WIDTH";
|
|
@@ -4058,6 +4058,7 @@ function useChatState(isReadOnly, onWindowResize) {
|
|
|
4058
4058
|
const { runWorkflow } = useRunWorkflow({ router });
|
|
4059
4059
|
const messages2 = ref([]);
|
|
4060
4060
|
const currentSessionId = ref(v4().replace(/-/g, ""));
|
|
4061
|
+
const previousChatMessages = computed(() => workflowsStore.getPastChatMessages);
|
|
4061
4062
|
const canvasNodes = computed(() => workflowsStore.allNodes);
|
|
4062
4063
|
const allConnections = computed(() => workflowsStore.allConnections);
|
|
4063
4064
|
const logsPanelState = computed(() => workflowsStore.logsPanelState);
|
|
@@ -4189,6 +4190,9 @@ function useChatState(isReadOnly, onWindowResize) {
|
|
|
4189
4190
|
nodeHelpers.updateNodesExecutionIssues();
|
|
4190
4191
|
messages2.value = [];
|
|
4191
4192
|
currentSessionId.value = v4().replace(/-/g, "");
|
|
4193
|
+
if (logsPanelState.value !== LOGS_PANEL_STATE.CLOSED) {
|
|
4194
|
+
chatEventBus.emit("focusInput");
|
|
4195
|
+
}
|
|
4192
4196
|
}
|
|
4193
4197
|
function displayExecution(executionId) {
|
|
4194
4198
|
const route = router.resolve({
|
|
@@ -4200,6 +4204,7 @@ function useChatState(isReadOnly, onWindowResize) {
|
|
|
4200
4204
|
return {
|
|
4201
4205
|
currentSessionId,
|
|
4202
4206
|
messages: computed(() => isReadOnly ? restoredChatMessages.value : messages2.value),
|
|
4207
|
+
previousChatMessages,
|
|
4203
4208
|
chatTriggerNode,
|
|
4204
4209
|
connectedNode,
|
|
4205
4210
|
sendMessage,
|
|
@@ -4207,7 +4212,7 @@ function useChatState(isReadOnly, onWindowResize) {
|
|
|
4207
4212
|
displayExecution
|
|
4208
4213
|
};
|
|
4209
4214
|
}
|
|
4210
|
-
const _sfc_main$
|
|
4215
|
+
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
4211
4216
|
__name: "ConsumedTokenCountText",
|
|
4212
4217
|
props: {
|
|
4213
4218
|
consumedTokens: {}
|
|
@@ -4215,7 +4220,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
4215
4220
|
setup(__props) {
|
|
4216
4221
|
const locale = useI18n$1();
|
|
4217
4222
|
return (_ctx, _cache) => {
|
|
4218
|
-
const _component_ConsumedTokensDetails = _sfc_main$
|
|
4223
|
+
const _component_ConsumedTokensDetails = _sfc_main$j;
|
|
4219
4224
|
return _ctx.consumedTokens !== void 0 ? (openBlock(), createBlock(unref(N8nTooltip), {
|
|
4220
4225
|
key: 0,
|
|
4221
4226
|
enterable: false
|
|
@@ -4235,36 +4240,67 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
4235
4240
|
};
|
|
4236
4241
|
}
|
|
4237
4242
|
});
|
|
4243
|
+
const _hoisted_1$1 = { key: 0 };
|
|
4244
|
+
const _hoisted_2 = { key: 1 };
|
|
4245
|
+
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
4246
|
+
__name: "NodeName",
|
|
4247
|
+
props: {
|
|
4248
|
+
name: {},
|
|
4249
|
+
latestName: {},
|
|
4250
|
+
isError: { type: Boolean },
|
|
4251
|
+
isDeleted: { type: Boolean }
|
|
4252
|
+
},
|
|
4253
|
+
setup(__props) {
|
|
4254
|
+
return (_ctx, _cache) => {
|
|
4255
|
+
return openBlock(), createBlock(unref(N8nText), {
|
|
4256
|
+
tag: "div",
|
|
4257
|
+
bold: true,
|
|
4258
|
+
size: "small",
|
|
4259
|
+
class: normalizeClass(_ctx.$style.name),
|
|
4260
|
+
color: _ctx.isError ? "danger" : void 0
|
|
4261
|
+
}, {
|
|
4262
|
+
default: withCtx(() => [
|
|
4263
|
+
_ctx.isDeleted || _ctx.name !== _ctx.latestName ? (openBlock(), createElementBlock("del", _hoisted_1$1, toDisplayString(_ctx.name), 1)) : createCommentVNode("", true),
|
|
4264
|
+
!_ctx.isDeleted ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(_ctx.latestName), 1)) : createCommentVNode("", true)
|
|
4265
|
+
]),
|
|
4266
|
+
_: 1
|
|
4267
|
+
}, 8, ["class", "color"]);
|
|
4268
|
+
};
|
|
4269
|
+
}
|
|
4270
|
+
});
|
|
4271
|
+
const name$1 = "_name_1t0q3_123";
|
|
4272
|
+
const style0$7 = {
|
|
4273
|
+
name: name$1
|
|
4274
|
+
};
|
|
4275
|
+
const cssModules$7 = {
|
|
4276
|
+
"$style": style0$7
|
|
4277
|
+
};
|
|
4278
|
+
const NodeName = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssModules", cssModules$7]]);
|
|
4279
|
+
const _hoisted_1 = ["aria-expanded"];
|
|
4238
4280
|
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
4239
4281
|
__name: "LogsOverviewRow",
|
|
4240
4282
|
props: {
|
|
4241
4283
|
data: {},
|
|
4242
|
-
node: {},
|
|
4243
4284
|
isSelected: { type: Boolean },
|
|
4244
4285
|
isReadOnly: { type: Boolean },
|
|
4245
4286
|
shouldShowConsumedTokens: { type: Boolean },
|
|
4246
|
-
isCompact: { type: Boolean }
|
|
4287
|
+
isCompact: { type: Boolean },
|
|
4288
|
+
latestInfo: {},
|
|
4289
|
+
expanded: { type: Boolean }
|
|
4247
4290
|
},
|
|
4248
4291
|
emits: ["toggleExpanded", "triggerPartialExecution", "openNdv"],
|
|
4249
4292
|
setup(__props, { emit: __emit }) {
|
|
4250
4293
|
const props = __props;
|
|
4251
4294
|
const emit = __emit;
|
|
4252
4295
|
const locale = useI18n$1();
|
|
4253
|
-
const containerRef = useTemplateRef("containerRef");
|
|
4254
|
-
const workflowsStore = useWorkflowsStore();
|
|
4255
4296
|
const nodeTypeStore = useNodeTypesStore();
|
|
4256
|
-
const
|
|
4257
|
-
const runData = computed(
|
|
4258
|
-
() => node.value ? workflowsStore.workflowExecutionData?.data?.resultData.runData[node.value.name]?.[props.data.runIndex] : void 0
|
|
4259
|
-
);
|
|
4260
|
-
const type = computed(() => node.value ? nodeTypeStore.getNodeType(node.value.type) : void 0);
|
|
4261
|
-
const depth = computed(() => (props.node.level ?? 1) - 1);
|
|
4297
|
+
const type = computed(() => nodeTypeStore.getNodeType(props.data.node.type));
|
|
4262
4298
|
const isSettled = computed(
|
|
4263
|
-
() => runData.
|
|
4299
|
+
() => props.data.runData.executionStatus && ["crashed", "error", "success"].includes(props.data.runData.executionStatus)
|
|
4264
4300
|
);
|
|
4265
|
-
const isError = computed(() => !!runData.
|
|
4301
|
+
const isError = computed(() => !!props.data.runData.error);
|
|
4266
4302
|
const startedAtText = computed(() => {
|
|
4267
|
-
const time = new Date(runData.
|
|
4303
|
+
const time = new Date(props.data.runData.startTime);
|
|
4268
4304
|
return locale.baseText("logs.overview.body.started", {
|
|
4269
4305
|
interpolate: {
|
|
4270
4306
|
time: `${toTime(time, true)}, ${toDayMonth(time)}`
|
|
@@ -4277,7 +4313,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4277
4313
|
function isLastChild(level) {
|
|
4278
4314
|
let parent = props.data.parent;
|
|
4279
4315
|
let data = props.data;
|
|
4280
|
-
for (let i = 0; i < depth
|
|
4316
|
+
for (let i = 0; i < props.data.depth - level; i++) {
|
|
4281
4317
|
data = parent;
|
|
4282
4318
|
parent = parent?.parent;
|
|
4283
4319
|
}
|
|
@@ -4285,21 +4321,12 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4285
4321
|
const lastSibling = siblings[siblings.length - 1];
|
|
4286
4322
|
return data === void 0 && lastSibling === void 0 || data?.node === lastSibling?.node && data?.runIndex === lastSibling?.runIndex;
|
|
4287
4323
|
}
|
|
4288
|
-
watch(
|
|
4289
|
-
[() => props.isSelected, containerRef],
|
|
4290
|
-
([isSelected, ref2]) => {
|
|
4291
|
-
if (isSelected && ref2) {
|
|
4292
|
-
ref2.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
4293
|
-
}
|
|
4294
|
-
},
|
|
4295
|
-
{ immediate: true }
|
|
4296
|
-
);
|
|
4297
4324
|
return (_ctx, _cache) => {
|
|
4298
|
-
const _component_NodeIcon = _sfc_main$
|
|
4299
|
-
return
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
|
|
4325
|
+
const _component_NodeIcon = _sfc_main$k;
|
|
4326
|
+
return openBlock(), createElementBlock("div", {
|
|
4327
|
+
role: "treeitem",
|
|
4328
|
+
tabindex: "0",
|
|
4329
|
+
"aria-expanded": props.data.children.length > 0 && props.expanded,
|
|
4303
4330
|
class: normalizeClass({
|
|
4304
4331
|
[_ctx.$style.container]: true,
|
|
4305
4332
|
[_ctx.$style.compact]: props.isCompact,
|
|
@@ -4307,45 +4334,41 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4307
4334
|
[_ctx.$style.selected]: props.isSelected
|
|
4308
4335
|
})
|
|
4309
4336
|
}, [
|
|
4310
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(depth
|
|
4337
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(props.data.depth, (level) => {
|
|
4311
4338
|
return openBlock(), createElementBlock("div", {
|
|
4312
4339
|
key: level,
|
|
4313
4340
|
class: normalizeClass({
|
|
4314
4341
|
[_ctx.$style.indent]: true,
|
|
4315
|
-
[_ctx.$style.connectorCurved]: level === depth
|
|
4342
|
+
[_ctx.$style.connectorCurved]: level === props.data.depth,
|
|
4316
4343
|
[_ctx.$style.connectorStraight]: !isLastChild(level)
|
|
4317
4344
|
})
|
|
4318
4345
|
}, null, 2);
|
|
4319
4346
|
}), 128)),
|
|
4320
4347
|
createBaseVNode("div", {
|
|
4321
4348
|
class: normalizeClass(_ctx.$style.background),
|
|
4322
|
-
style: normalizeStyle({ "--indent-depth": depth
|
|
4349
|
+
style: normalizeStyle({ "--indent-depth": props.data.depth })
|
|
4323
4350
|
}, null, 6),
|
|
4324
4351
|
createVNode(_component_NodeIcon, {
|
|
4325
4352
|
"node-type": type.value,
|
|
4326
4353
|
size: 16,
|
|
4327
4354
|
class: normalizeClass(_ctx.$style.icon)
|
|
4328
4355
|
}, null, 8, ["node-type", "class"]),
|
|
4329
|
-
createVNode(
|
|
4330
|
-
tag: "div",
|
|
4331
|
-
bold: true,
|
|
4332
|
-
size: "small",
|
|
4356
|
+
createVNode(NodeName, {
|
|
4333
4357
|
class: normalizeClass(_ctx.$style.name),
|
|
4334
|
-
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
createVNode(unref(N8nText), {
|
|
4358
|
+
"latest-name": _ctx.latestInfo?.name ?? props.data.node.name,
|
|
4359
|
+
name: props.data.node.name,
|
|
4360
|
+
"is-error": isError.value,
|
|
4361
|
+
"is-deleted": _ctx.latestInfo?.deleted ?? false
|
|
4362
|
+
}, null, 8, ["class", "latest-name", "name", "is-error", "is-deleted"]),
|
|
4363
|
+
!_ctx.isCompact ? (openBlock(), createBlock(unref(N8nText), {
|
|
4364
|
+
key: 0,
|
|
4342
4365
|
tag: "div",
|
|
4343
4366
|
color: "text-light",
|
|
4344
4367
|
size: "small",
|
|
4345
4368
|
class: normalizeClass(_ctx.$style.timeTook)
|
|
4346
4369
|
}, {
|
|
4347
4370
|
default: withCtx(() => [
|
|
4348
|
-
isSettled.value
|
|
4371
|
+
isSettled.value ? (openBlock(), createBlock(unref(I18nT), {
|
|
4349
4372
|
key: 0,
|
|
4350
4373
|
keypath: "logs.overview.body.summaryText"
|
|
4351
4374
|
}, {
|
|
@@ -4361,24 +4384,25 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4361
4384
|
icon: "exclamation-triangle",
|
|
4362
4385
|
class: normalizeClass(_ctx.$style.errorIcon)
|
|
4363
4386
|
}, null, 8, ["class"]),
|
|
4364
|
-
createTextVNode(toDisplayString(unref(upperFirst)(runData.
|
|
4387
|
+
createTextVNode(toDisplayString(unref(upperFirst)(props.data.runData.executionStatus)), 1)
|
|
4365
4388
|
]),
|
|
4366
4389
|
_: 1
|
|
4367
4390
|
})) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
4368
|
-
createTextVNode(toDisplayString(unref(upperFirst)(runData.
|
|
4391
|
+
createTextVNode(toDisplayString(unref(upperFirst)(props.data.runData.executionStatus)), 1)
|
|
4369
4392
|
], 64))
|
|
4370
4393
|
]),
|
|
4371
4394
|
time: withCtx(() => [
|
|
4372
|
-
createTextVNode(toDisplayString(unref(locale).displayTimer(runData.
|
|
4395
|
+
createTextVNode(toDisplayString(unref(locale).displayTimer(props.data.runData.executionTime, true)), 1)
|
|
4373
4396
|
]),
|
|
4374
4397
|
_: 1
|
|
4375
4398
|
})) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
4376
|
-
createTextVNode(toDisplayString(unref(upperFirst)(runData.
|
|
4399
|
+
createTextVNode(toDisplayString(unref(upperFirst)(props.data.runData.executionStatus)), 1)
|
|
4377
4400
|
], 64))
|
|
4378
4401
|
]),
|
|
4379
4402
|
_: 1
|
|
4380
|
-
}, 8, ["class"]),
|
|
4381
|
-
|
|
4403
|
+
}, 8, ["class"])) : createCommentVNode("", true),
|
|
4404
|
+
!_ctx.isCompact ? (openBlock(), createBlock(unref(N8nText), {
|
|
4405
|
+
key: 1,
|
|
4382
4406
|
tag: "div",
|
|
4383
4407
|
color: "text-light",
|
|
4384
4408
|
size: "small",
|
|
@@ -4388,16 +4412,16 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4388
4412
|
createTextVNode(toDisplayString(startedAtText.value), 1)
|
|
4389
4413
|
]),
|
|
4390
4414
|
_: 1
|
|
4391
|
-
}, 8, ["class"]),
|
|
4392
|
-
subtreeConsumedTokens.value !== void 0 ? (openBlock(), createBlock(unref(N8nText), {
|
|
4393
|
-
key:
|
|
4415
|
+
}, 8, ["class"])) : createCommentVNode("", true),
|
|
4416
|
+
!_ctx.isCompact && subtreeConsumedTokens.value !== void 0 ? (openBlock(), createBlock(unref(N8nText), {
|
|
4417
|
+
key: 2,
|
|
4394
4418
|
tag: "div",
|
|
4395
4419
|
color: "text-light",
|
|
4396
4420
|
size: "small",
|
|
4397
4421
|
class: normalizeClass(_ctx.$style.consumedTokens)
|
|
4398
4422
|
}, {
|
|
4399
4423
|
default: withCtx(() => [
|
|
4400
|
-
subtreeConsumedTokens.value.totalTokens > 0 && (props.data.children.length === 0 || !props.
|
|
4424
|
+
subtreeConsumedTokens.value.totalTokens > 0 && (props.data.children.length === 0 || !props.expanded) ? (openBlock(), createBlock(_sfc_main$8, {
|
|
4401
4425
|
key: 0,
|
|
4402
4426
|
"consumed-tokens": subtreeConsumedTokens.value
|
|
4403
4427
|
}, null, 8, ["consumed-tokens"])) : createCommentVNode("", true)
|
|
@@ -4405,33 +4429,36 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4405
4429
|
_: 1
|
|
4406
4430
|
}, 8, ["class"])) : createCommentVNode("", true),
|
|
4407
4431
|
isError.value && _ctx.isCompact ? (openBlock(), createBlock(unref(N8nIcon), {
|
|
4408
|
-
key:
|
|
4432
|
+
key: 3,
|
|
4409
4433
|
size: "medium",
|
|
4410
4434
|
color: "danger",
|
|
4411
4435
|
icon: "exclamation-triangle",
|
|
4412
4436
|
class: normalizeClass(_ctx.$style.compactErrorIcon)
|
|
4413
4437
|
}, null, 8, ["class"])) : createCommentVNode("", true),
|
|
4414
|
-
!props.isReadOnly ? (openBlock(), createBlock(unref(_sfc_main$
|
|
4415
|
-
key:
|
|
4438
|
+
!_ctx.isCompact || !props.isReadOnly && !props.latestInfo?.deleted && !props.latestInfo?.disabled ? (openBlock(), createBlock(unref(_sfc_main$i), {
|
|
4439
|
+
key: 4,
|
|
4416
4440
|
type: "secondary",
|
|
4417
4441
|
size: "small",
|
|
4418
4442
|
icon: "play",
|
|
4419
4443
|
style: { "color": "var(--color-text-base)" },
|
|
4420
4444
|
"aria-label": unref(locale).baseText("logs.overview.body.run"),
|
|
4421
|
-
class: normalizeClass([_ctx.$style.partialExecutionButton, depth
|
|
4445
|
+
class: normalizeClass([_ctx.$style.partialExecutionButton, props.data.depth > 0 ? _ctx.$style.unavailable : ""]),
|
|
4446
|
+
disabled: props.latestInfo?.deleted || props.latestInfo?.disabled,
|
|
4422
4447
|
onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("triggerPartialExecution", props.data), ["stop"]))
|
|
4423
|
-
}, null, 8, ["aria-label", "class"])) : createCommentVNode("", true),
|
|
4424
|
-
|
|
4448
|
+
}, null, 8, ["aria-label", "class", "disabled"])) : createCommentVNode("", true),
|
|
4449
|
+
!_ctx.isCompact || !props.latestInfo?.deleted ? (openBlock(), createBlock(unref(_sfc_main$i), {
|
|
4450
|
+
key: 5,
|
|
4425
4451
|
type: "secondary",
|
|
4426
4452
|
size: "small",
|
|
4427
4453
|
icon: "external-link-alt",
|
|
4428
4454
|
style: { "color": "var(--color-text-base)" },
|
|
4455
|
+
disabled: props.latestInfo?.deleted,
|
|
4429
4456
|
class: normalizeClass(_ctx.$style.openNdvButton),
|
|
4430
4457
|
"aria-label": unref(locale).baseText("logs.overview.body.open"),
|
|
4431
4458
|
onClick: _cache[1] || (_cache[1] = withModifiers(($event) => emit("openNdv", props.data), ["stop"]))
|
|
4432
|
-
}, null, 8, ["class", "aria-label"]),
|
|
4459
|
+
}, null, 8, ["disabled", "class", "aria-label"])) : createCommentVNode("", true),
|
|
4433
4460
|
!_ctx.isCompact || props.data.children.length > 0 ? (openBlock(), createBlock(unref(N8nButton), {
|
|
4434
|
-
key:
|
|
4461
|
+
key: 6,
|
|
4435
4462
|
type: "secondary",
|
|
4436
4463
|
size: "small",
|
|
4437
4464
|
square: true,
|
|
@@ -4442,39 +4469,39 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4442
4469
|
}),
|
|
4443
4470
|
class: normalizeClass(_ctx.$style.toggleButton),
|
|
4444
4471
|
"aria-label": unref(locale).baseText("logs.overview.body.toggleRow"),
|
|
4445
|
-
onClick: _cache[2] || (_cache[2] = withModifiers(($event) => emit("toggleExpanded", props.
|
|
4472
|
+
onClick: _cache[2] || (_cache[2] = withModifiers(($event) => emit("toggleExpanded", props.data), ["stop"]))
|
|
4446
4473
|
}, {
|
|
4447
4474
|
default: withCtx(() => [
|
|
4448
4475
|
createVNode(unref(N8nIcon), {
|
|
4449
4476
|
size: "medium",
|
|
4450
|
-
icon: props.
|
|
4477
|
+
icon: props.expanded ? "chevron-down" : "chevron-up"
|
|
4451
4478
|
}, null, 8, ["icon"])
|
|
4452
4479
|
]),
|
|
4453
4480
|
_: 1
|
|
4454
4481
|
}, 8, ["style", "class", "aria-label"])) : createCommentVNode("", true)
|
|
4455
|
-
],
|
|
4482
|
+
], 10, _hoisted_1);
|
|
4456
4483
|
};
|
|
4457
4484
|
}
|
|
4458
4485
|
});
|
|
4459
|
-
const container$5 = "
|
|
4460
|
-
const background = "
|
|
4461
|
-
const selected = "
|
|
4462
|
-
const error = "
|
|
4463
|
-
const indent = "
|
|
4464
|
-
const connectorCurved = "
|
|
4465
|
-
const connectorStraight = "
|
|
4466
|
-
const icon$1 = "
|
|
4467
|
-
const name
|
|
4468
|
-
const timeTook = "
|
|
4469
|
-
const errorIcon = "
|
|
4470
|
-
const
|
|
4471
|
-
const
|
|
4472
|
-
const
|
|
4473
|
-
const
|
|
4474
|
-
const
|
|
4475
|
-
const
|
|
4476
|
-
const unavailable = "
|
|
4477
|
-
const toggleButton = "
|
|
4486
|
+
const container$5 = "_container_12bsi_123";
|
|
4487
|
+
const background = "_background_12bsi_138";
|
|
4488
|
+
const selected = "_selected_12bsi_147";
|
|
4489
|
+
const error = "_error_12bsi_153";
|
|
4490
|
+
const indent = "_indent_12bsi_157";
|
|
4491
|
+
const connectorCurved = "_connectorCurved_12bsi_166";
|
|
4492
|
+
const connectorStraight = "_connectorStraight_12bsi_176";
|
|
4493
|
+
const icon$1 = "_icon_12bsi_185";
|
|
4494
|
+
const name = "_name_12bsi_191";
|
|
4495
|
+
const timeTook = "_timeTook_12bsi_197";
|
|
4496
|
+
const errorIcon = "_errorIcon_12bsi_202";
|
|
4497
|
+
const startedAt = "_startedAt_12bsi_207";
|
|
4498
|
+
const consumedTokens = "_consumedTokens_12bsi_213";
|
|
4499
|
+
const compactErrorIcon = "_compactErrorIcon_12bsi_220";
|
|
4500
|
+
const partialExecutionButton = "_partialExecutionButton_12bsi_228";
|
|
4501
|
+
const openNdvButton = "_openNdvButton_12bsi_229";
|
|
4502
|
+
const compact = "_compact_12bsi_220";
|
|
4503
|
+
const unavailable = "_unavailable_12bsi_239";
|
|
4504
|
+
const toggleButton = "_toggleButton_12bsi_247";
|
|
4478
4505
|
const style0$6 = {
|
|
4479
4506
|
container: container$5,
|
|
4480
4507
|
background,
|
|
@@ -4484,15 +4511,15 @@ const style0$6 = {
|
|
|
4484
4511
|
connectorCurved,
|
|
4485
4512
|
connectorStraight,
|
|
4486
4513
|
icon: icon$1,
|
|
4487
|
-
name
|
|
4514
|
+
name,
|
|
4488
4515
|
timeTook,
|
|
4489
4516
|
errorIcon,
|
|
4490
|
-
compact,
|
|
4491
4517
|
startedAt,
|
|
4492
4518
|
consumedTokens,
|
|
4493
4519
|
compactErrorIcon,
|
|
4494
4520
|
partialExecutionButton,
|
|
4495
4521
|
openNdvButton,
|
|
4522
|
+
compact,
|
|
4496
4523
|
unavailable,
|
|
4497
4524
|
toggleButton
|
|
4498
4525
|
};
|
|
@@ -4526,7 +4553,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
4526
4553
|
}, {
|
|
4527
4554
|
default: withCtx(() => [
|
|
4528
4555
|
createBaseVNode("span", null, toDisplayString(executionStatusText.value), 1),
|
|
4529
|
-
_ctx.consumedTokens.totalTokens > 0 ? (openBlock(), createBlock(_sfc_main$
|
|
4556
|
+
_ctx.consumedTokens.totalTokens > 0 ? (openBlock(), createBlock(_sfc_main$8, {
|
|
4530
4557
|
key: 0,
|
|
4531
4558
|
"consumed-tokens": _ctx.consumedTokens
|
|
4532
4559
|
}, null, 8, ["consumed-tokens"])) : createCommentVNode("", true)
|
|
@@ -4551,33 +4578,32 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4551
4578
|
selected: {},
|
|
4552
4579
|
isReadOnly: { type: Boolean },
|
|
4553
4580
|
isCompact: { type: Boolean },
|
|
4554
|
-
|
|
4581
|
+
execution: {},
|
|
4582
|
+
latestNodeInfo: {},
|
|
4583
|
+
scrollToSelection: { type: Boolean }
|
|
4555
4584
|
},
|
|
4556
|
-
emits: ["clickHeader", "select"],
|
|
4585
|
+
emits: ["clickHeader", "select", "clearExecutionData"],
|
|
4557
4586
|
setup(__props, { emit: __emit }) {
|
|
4558
4587
|
const emit = __emit;
|
|
4559
4588
|
const locale = useI18n$1();
|
|
4560
4589
|
const telemetry = useTelemetry();
|
|
4561
|
-
const workflowsStore = useWorkflowsStore();
|
|
4562
4590
|
const router = useRouter();
|
|
4563
4591
|
const runWorkflow = useRunWorkflow({ router });
|
|
4564
4592
|
const ndvStore = useNDVStore();
|
|
4565
|
-
const nodeHelpers = useNodeHelpers();
|
|
4566
4593
|
const isClearExecutionButtonVisible = useClearExecutionButtonVisible();
|
|
4567
|
-
const
|
|
4568
|
-
const isEmpty2 = computed(() => workflowsStore.workflowExecutionData === null);
|
|
4594
|
+
const isEmpty2 = computed(() => __props.execution === void 0);
|
|
4569
4595
|
const switchViewOptions = computed(() => [
|
|
4570
|
-
{ label: locale.baseText("logs.overview.header.switch.
|
|
4571
|
-
{ label: locale.baseText("logs.overview.header.switch.
|
|
4596
|
+
{ label: locale.baseText("logs.overview.header.switch.overview"), value: "overview" },
|
|
4597
|
+
{ label: locale.baseText("logs.overview.header.switch.details"), value: "details" }
|
|
4572
4598
|
]);
|
|
4573
|
-
const execution = computed(() => workflowsStore.workflowExecutionData);
|
|
4574
4599
|
const consumedTokens2 = computed(
|
|
4575
|
-
() => getTotalConsumedTokens(...__props.
|
|
4600
|
+
() => getTotalConsumedTokens(...(__props.execution?.tree ?? []).map(getSubtreeTotalConsumedTokens))
|
|
4576
4601
|
);
|
|
4577
|
-
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
|
|
4602
|
+
const collapsedEntries = ref({});
|
|
4603
|
+
const flatLogEntries = computed(
|
|
4604
|
+
() => flattenLogEntries(__props.execution?.tree ?? [], collapsedEntries.value)
|
|
4605
|
+
);
|
|
4606
|
+
const virtualList = useVirtualList(flatLogEntries, { itemHeight: 32 });
|
|
4581
4607
|
function handleClickNode(clicked) {
|
|
4582
4608
|
if (__props.selected?.node === clicked.node && __props.selected?.runIndex === clicked.runIndex) {
|
|
4583
4609
|
emit("select", void 0);
|
|
@@ -4585,24 +4611,49 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4585
4611
|
}
|
|
4586
4612
|
emit("select", clicked);
|
|
4587
4613
|
telemetry.track("User selected node in log view", {
|
|
4588
|
-
node_type:
|
|
4589
|
-
node_id:
|
|
4590
|
-
execution_id:
|
|
4591
|
-
workflow_id:
|
|
4614
|
+
node_type: clicked.node.type,
|
|
4615
|
+
node_id: clicked.node.id,
|
|
4616
|
+
execution_id: __props.execution?.id,
|
|
4617
|
+
workflow_id: __props.execution?.workflowData.id
|
|
4592
4618
|
});
|
|
4593
4619
|
}
|
|
4594
4620
|
function handleSwitchView(value) {
|
|
4595
|
-
emit(
|
|
4621
|
+
emit(
|
|
4622
|
+
"select",
|
|
4623
|
+
value === "overview" || (__props.execution?.tree ?? []).length === 0 ? void 0 : __props.execution?.tree[0]
|
|
4624
|
+
);
|
|
4596
4625
|
}
|
|
4597
4626
|
function handleToggleExpanded(treeNode) {
|
|
4598
|
-
treeNode.
|
|
4627
|
+
collapsedEntries.value[treeNode.id] = !collapsedEntries.value[treeNode.id];
|
|
4599
4628
|
}
|
|
4600
4629
|
async function handleOpenNdv(treeNode) {
|
|
4601
|
-
ndvStore.setActiveNodeName(treeNode.node);
|
|
4630
|
+
ndvStore.setActiveNodeName(treeNode.node.name);
|
|
4631
|
+
await nextTick(() => {
|
|
4632
|
+
const source = treeNode.runData.source[0];
|
|
4633
|
+
const inputBranch = source?.previousNodeOutput ?? 0;
|
|
4634
|
+
ndvEventBus.emit("updateInputNodeName", source?.previousNode);
|
|
4635
|
+
ndvEventBus.emit("setInputBranchIndex", inputBranch);
|
|
4636
|
+
ndvStore.setOutputRunIndex(treeNode.runIndex);
|
|
4637
|
+
});
|
|
4602
4638
|
}
|
|
4603
4639
|
async function handleTriggerPartialExecution(treeNode) {
|
|
4604
|
-
|
|
4640
|
+
const latestName = __props.latestNodeInfo[treeNode.node.id]?.name ?? treeNode.node.name;
|
|
4641
|
+
if (latestName) {
|
|
4642
|
+
await runWorkflow.runWorkflow({ destinationNode: latestName });
|
|
4643
|
+
}
|
|
4605
4644
|
}
|
|
4645
|
+
watch(
|
|
4646
|
+
() => __props.scrollToSelection ? __props.selected : void 0,
|
|
4647
|
+
async (entry) => {
|
|
4648
|
+
if (entry) {
|
|
4649
|
+
const index = flatLogEntries.value.findIndex((e) => e.id === entry.id);
|
|
4650
|
+
if (index >= 0) {
|
|
4651
|
+
await nextTick(() => virtualList.scrollTo(index));
|
|
4652
|
+
}
|
|
4653
|
+
}
|
|
4654
|
+
},
|
|
4655
|
+
{ immediate: true }
|
|
4656
|
+
);
|
|
4606
4657
|
return (_ctx, _cache) => {
|
|
4607
4658
|
return openBlock(), createElementBlock("div", {
|
|
4608
4659
|
class: normalizeClass(_ctx.$style.container),
|
|
@@ -4611,7 +4662,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4611
4662
|
createVNode(PanelHeader, {
|
|
4612
4663
|
title: unref(locale).baseText("logs.overview.header.title"),
|
|
4613
4664
|
"data-test-id": "logs-overview-header",
|
|
4614
|
-
onClick: _cache[
|
|
4665
|
+
onClick: _cache[1] || (_cache[1] = ($event) => emit("clickHeader"))
|
|
4615
4666
|
}, {
|
|
4616
4667
|
actions: withCtx(() => [
|
|
4617
4668
|
unref(isClearExecutionButtonVisible) ? (openBlock(), createBlock(unref(N8nTooltip), {
|
|
@@ -4625,7 +4676,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4625
4676
|
icon: "trash",
|
|
4626
4677
|
"icon-size": "medium",
|
|
4627
4678
|
class: normalizeClass(_ctx.$style.clearButton),
|
|
4628
|
-
onClick: withModifiers(
|
|
4679
|
+
onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("clearExecutionData"), ["stop"]))
|
|
4629
4680
|
}, {
|
|
4630
4681
|
default: withCtx(() => [
|
|
4631
4682
|
createTextVNode(toDisplayString(unref(locale).baseText("logs.overview.header.actions.clearExecution")), 1)
|
|
@@ -4656,71 +4707,63 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4656
4707
|
createTextVNode(toDisplayString(unref(locale).baseText("logs.overview.body.empty.message")), 1)
|
|
4657
4708
|
]),
|
|
4658
4709
|
_: 1
|
|
4659
|
-
}, 8, ["class"])) : (openBlock(), createElementBlock(
|
|
4660
|
-
|
|
4661
|
-
class: normalizeClass(_ctx.$style.scrollable)
|
|
4662
|
-
}, [
|
|
4663
|
-
execution.value ? (openBlock(), createBlock(ExecutionSummary, {
|
|
4710
|
+
}, 8, ["class"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
4711
|
+
_ctx.execution ? (openBlock(), createBlock(ExecutionSummary, {
|
|
4664
4712
|
key: 0,
|
|
4665
4713
|
class: normalizeClass(_ctx.$style.summary),
|
|
4666
|
-
status: execution.
|
|
4714
|
+
status: _ctx.execution.status,
|
|
4667
4715
|
"consumed-tokens": consumedTokens2.value,
|
|
4668
|
-
"time-took": execution.
|
|
4716
|
+
"time-took": _ctx.execution.startedAt && _ctx.execution.stoppedAt ? +new Date(_ctx.execution.stoppedAt) - +new Date(_ctx.execution.startedAt) : void 0
|
|
4669
4717
|
}, null, 8, ["class", "status", "consumed-tokens", "time-took"])) : createCommentVNode("", true),
|
|
4670
|
-
|
|
4671
|
-
|
|
4672
|
-
|
|
4673
|
-
|
|
4674
|
-
|
|
4675
|
-
|
|
4676
|
-
|
|
4677
|
-
|
|
4678
|
-
|
|
4679
|
-
|
|
4680
|
-
|
|
4681
|
-
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
|
|
4685
|
-
|
|
4686
|
-
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
|
|
4692
|
-
]),
|
|
4693
|
-
_: 1
|
|
4694
|
-
}, 8, ["class", "data"])) : createCommentVNode("", true),
|
|
4718
|
+
createBaseVNode("div", mergeProps({
|
|
4719
|
+
class: _ctx.$style.tree
|
|
4720
|
+
}, unref(virtualList).containerProps), [
|
|
4721
|
+
createBaseVNode("div", mergeProps(unref(virtualList).wrapperProps.value, { role: "tree" }), [
|
|
4722
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(virtualList).list.value, ({ data }) => {
|
|
4723
|
+
return openBlock(), createBlock(LogsOverviewRow, {
|
|
4724
|
+
key: data.id,
|
|
4725
|
+
data,
|
|
4726
|
+
"is-read-only": _ctx.isReadOnly,
|
|
4727
|
+
"is-selected": data.node.name === _ctx.selected?.node.name && data.runIndex === _ctx.selected?.runIndex,
|
|
4728
|
+
"is-compact": _ctx.isCompact,
|
|
4729
|
+
"should-show-consumed-tokens": consumedTokens2.value.totalTokens > 0,
|
|
4730
|
+
"latest-info": _ctx.latestNodeInfo[data.node.id],
|
|
4731
|
+
expanded: !collapsedEntries.value[data.id],
|
|
4732
|
+
onClick: withModifiers(($event) => handleClickNode(data), ["stop"]),
|
|
4733
|
+
onToggleExpanded: handleToggleExpanded,
|
|
4734
|
+
onOpenNdv: handleOpenNdv,
|
|
4735
|
+
onTriggerPartialExecution: handleTriggerPartialExecution
|
|
4736
|
+
}, null, 8, ["data", "is-read-only", "is-selected", "is-compact", "should-show-consumed-tokens", "latest-info", "expanded", "onClick"]);
|
|
4737
|
+
}), 128))
|
|
4738
|
+
], 16)
|
|
4739
|
+
], 16),
|
|
4695
4740
|
createVNode(unref(N8nRadioButtons), {
|
|
4696
|
-
size: "medium",
|
|
4741
|
+
size: "small-medium",
|
|
4697
4742
|
class: normalizeClass(_ctx.$style.switchViewButtons),
|
|
4698
4743
|
"model-value": _ctx.selected ? "details" : "overview",
|
|
4699
4744
|
options: switchViewOptions.value,
|
|
4700
4745
|
"onUpdate:modelValue": handleSwitchView
|
|
4701
4746
|
}, null, 8, ["class", "model-value", "options"])
|
|
4702
|
-
],
|
|
4747
|
+
], 64))
|
|
4703
4748
|
], 2)) : createCommentVNode("", true)
|
|
4704
4749
|
], 2);
|
|
4705
4750
|
};
|
|
4706
4751
|
}
|
|
4707
4752
|
});
|
|
4708
|
-
const container$3 = "
|
|
4709
|
-
const clearButton = "
|
|
4710
|
-
const content$1 = "
|
|
4711
|
-
const empty = "
|
|
4712
|
-
const emptyText = "
|
|
4713
|
-
const
|
|
4714
|
-
const
|
|
4715
|
-
const
|
|
4716
|
-
const switchViewButtons = "_switchViewButtons_ow69g_176";
|
|
4753
|
+
const container$3 = "_container_acxst_123";
|
|
4754
|
+
const clearButton = "_clearButton_acxst_133";
|
|
4755
|
+
const content$1 = "_content_acxst_139";
|
|
4756
|
+
const empty = "_empty_acxst_148";
|
|
4757
|
+
const emptyText = "_emptyText_acxst_153";
|
|
4758
|
+
const summary = "_summary_acxst_158";
|
|
4759
|
+
const tree = "_tree_acxst_162";
|
|
4760
|
+
const switchViewButtons = "_switchViewButtons_acxst_169";
|
|
4717
4761
|
const style0$4 = {
|
|
4718
4762
|
container: container$3,
|
|
4719
4763
|
clearButton,
|
|
4720
4764
|
content: content$1,
|
|
4721
4765
|
empty,
|
|
4722
4766
|
emptyText,
|
|
4723
|
-
scrollable,
|
|
4724
4767
|
summary,
|
|
4725
4768
|
tree,
|
|
4726
4769
|
switchViewButtons
|
|
@@ -4734,38 +4777,36 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
4734
4777
|
props: {
|
|
4735
4778
|
title: {},
|
|
4736
4779
|
paneType: {},
|
|
4737
|
-
logEntry: {}
|
|
4780
|
+
logEntry: {},
|
|
4781
|
+
workflow: {},
|
|
4782
|
+
execution: {}
|
|
4738
4783
|
},
|
|
4739
4784
|
setup(__props) {
|
|
4740
4785
|
const locale = useI18n$1();
|
|
4741
|
-
const workflowsStore = useWorkflowsStore();
|
|
4742
4786
|
const ndvStore = useNDVStore();
|
|
4743
|
-
const
|
|
4744
|
-
const
|
|
4787
|
+
const isMultipleInput = computed(() => __props.paneType === "input" && __props.logEntry.runData.source.length > 1);
|
|
4788
|
+
const runDataProps = computed(() => {
|
|
4745
4789
|
if (__props.logEntry.depth > 0 || __props.paneType === "output") {
|
|
4746
|
-
return
|
|
4790
|
+
return { node: __props.logEntry.node, runIndex: __props.logEntry.runIndex };
|
|
4747
4791
|
}
|
|
4748
|
-
const
|
|
4749
|
-
|
|
4792
|
+
const source = __props.logEntry.runData.source[0];
|
|
4793
|
+
const node = source && __props.workflow.getNode(source.previousNode);
|
|
4794
|
+
if (!source || !node) {
|
|
4750
4795
|
return void 0;
|
|
4751
4796
|
}
|
|
4752
|
-
return
|
|
4797
|
+
return {
|
|
4798
|
+
node,
|
|
4799
|
+
runIndex: source.previousNodeRun ?? 0,
|
|
4800
|
+
overrideOutputs: [source.previousNodeOutput ?? 0]
|
|
4801
|
+
};
|
|
4753
4802
|
});
|
|
4754
|
-
const isMultipleInput = computed(
|
|
4755
|
-
() => __props.paneType === "input" && uniqBy(
|
|
4756
|
-
workflow.value.getParentNodesByDepth(__props.logEntry.node).filter((n) => n.name !== __props.logEntry.node),
|
|
4757
|
-
(n) => n.name
|
|
4758
|
-
).length > 1
|
|
4759
|
-
);
|
|
4760
4803
|
function handleClickOpenNdv() {
|
|
4761
|
-
ndvStore.setActiveNodeName(__props.logEntry.node);
|
|
4804
|
+
ndvStore.setActiveNodeName(__props.logEntry.node.name);
|
|
4762
4805
|
}
|
|
4763
4806
|
return (_ctx, _cache) => {
|
|
4764
|
-
return
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
workflow: workflow.value,
|
|
4768
|
-
"run-index": _ctx.logEntry.runIndex,
|
|
4807
|
+
return runDataProps.value ? (openBlock(), createBlock(RunData, mergeProps({ key: 0 }, runDataProps.value, {
|
|
4808
|
+
workflow: _ctx.workflow,
|
|
4809
|
+
"workflow-execution": _ctx.execution,
|
|
4769
4810
|
"too-much-data-title": unref(locale).baseText("ndv.output.tooMuchData.title"),
|
|
4770
4811
|
"no-data-in-branch-message": unref(locale).baseText("ndv.output.noOutputDataInBranch"),
|
|
4771
4812
|
"executing-message": unref(locale).baseText("ndv.output.executing"),
|
|
@@ -4774,8 +4815,9 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
4774
4815
|
compact: true,
|
|
4775
4816
|
"disable-pin": true,
|
|
4776
4817
|
"disable-edit": true,
|
|
4818
|
+
"disable-hover-highlight": true,
|
|
4777
4819
|
"table-header-bg-color": "light"
|
|
4778
|
-
}, createSlots({
|
|
4820
|
+
}), createSlots({
|
|
4779
4821
|
header: withCtx(() => [
|
|
4780
4822
|
createVNode(unref(N8nText), {
|
|
4781
4823
|
class: normalizeClass(_ctx.$style.title),
|
|
@@ -4828,7 +4870,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
4828
4870
|
]),
|
|
4829
4871
|
key: "1"
|
|
4830
4872
|
} : void 0
|
|
4831
|
-
]),
|
|
4873
|
+
]), 1040, ["workflow", "workflow-execution", "too-much-data-title", "no-data-in-branch-message", "executing-message", "pane-type"])) : createCommentVNode("", true);
|
|
4832
4874
|
};
|
|
4833
4875
|
}
|
|
4834
4876
|
});
|
|
@@ -4851,26 +4893,28 @@ function useResizablePanel(localStorageKey, {
|
|
|
4851
4893
|
allowFullSize
|
|
4852
4894
|
}) {
|
|
4853
4895
|
const containerSize = ref(0);
|
|
4854
|
-
const
|
|
4896
|
+
const persistedSize = useLocalStorage(localStorageKey, -1, { writeDefaults: false });
|
|
4855
4897
|
const isResizing = ref(false);
|
|
4898
|
+
const sizeOnResizeStart = ref();
|
|
4899
|
+
const minSizeValue = computed(() => resolveSize(minSize, containerSize.value));
|
|
4900
|
+
const maxSizeValue = computed(() => resolveSize(maxSize, containerSize.value));
|
|
4856
4901
|
const constrainedSize = computed(() => {
|
|
4857
|
-
|
|
4902
|
+
const sizeInPixels = persistedSize.value >= 0 && persistedSize.value <= 1 ? containerSize.value * persistedSize.value : -1;
|
|
4903
|
+
if (isResizing.value && allowCollapse && sizeInPixels < 30) {
|
|
4858
4904
|
return 0;
|
|
4859
4905
|
}
|
|
4860
|
-
if (isResizing.value && allowFullSize &&
|
|
4906
|
+
if (isResizing.value && allowFullSize && sizeInPixels > containerSize.value - 30) {
|
|
4861
4907
|
return containerSize.value;
|
|
4862
4908
|
}
|
|
4863
4909
|
const defaultSizeValue = resolveSize(defaultSize, containerSize.value);
|
|
4864
|
-
if (Number.isNaN(
|
|
4910
|
+
if (Number.isNaN(sizeInPixels) || !Number.isFinite(sizeInPixels) || sizeInPixels < 0) {
|
|
4865
4911
|
return defaultSizeValue;
|
|
4866
4912
|
}
|
|
4867
|
-
const minSizeValue = resolveSize(minSize, containerSize.value);
|
|
4868
|
-
const maxSizeValue = resolveSize(maxSize, containerSize.value);
|
|
4869
4913
|
return Math.max(
|
|
4870
|
-
minSizeValue,
|
|
4914
|
+
minSizeValue.value,
|
|
4871
4915
|
Math.min(
|
|
4872
|
-
snap && Math.abs(defaultSizeValue -
|
|
4873
|
-
maxSizeValue
|
|
4916
|
+
snap && Math.abs(defaultSizeValue - sizeInPixels) < 30 ? defaultSizeValue : sizeInPixels,
|
|
4917
|
+
maxSizeValue.value
|
|
4874
4918
|
)
|
|
4875
4919
|
);
|
|
4876
4920
|
});
|
|
@@ -4888,13 +4932,21 @@ function useResizablePanel(localStorageKey, {
|
|
|
4888
4932
|
}
|
|
4889
4933
|
function onResize(data) {
|
|
4890
4934
|
const containerRect = unref(container2)?.getBoundingClientRect();
|
|
4891
|
-
|
|
4892
|
-
size.value = Math.max(
|
|
4935
|
+
const newSizeInPixels = Math.max(
|
|
4893
4936
|
0,
|
|
4894
4937
|
position === "bottom" ? (containerRect ? getSize(containerRect) : 0) - getValue(data) : getValue(data) - (containerRect ? getValue(containerRect) : 0)
|
|
4895
4938
|
);
|
|
4939
|
+
isResizing.value = true;
|
|
4940
|
+
persistedSize.value = newSizeInPixels / containerSize.value;
|
|
4941
|
+
if (sizeOnResizeStart.value === void 0) {
|
|
4942
|
+
sizeOnResizeStart.value = persistedSize.value;
|
|
4943
|
+
}
|
|
4896
4944
|
}
|
|
4897
4945
|
function onResizeEnd() {
|
|
4946
|
+
if (minSizeValue.value > 0 && constrainedSize.value <= 0 || maxSizeValue.value < containerSize.value && constrainedSize.value >= containerSize.value) {
|
|
4947
|
+
persistedSize.value = sizeOnResizeStart.value;
|
|
4948
|
+
}
|
|
4949
|
+
sizeOnResizeStart.value = void 0;
|
|
4898
4950
|
isResizing.value = false;
|
|
4899
4951
|
}
|
|
4900
4952
|
watch(
|
|
@@ -4912,12 +4964,6 @@ function useResizablePanel(localStorageKey, {
|
|
|
4912
4964
|
},
|
|
4913
4965
|
{ immediate: true }
|
|
4914
4966
|
);
|
|
4915
|
-
watch(containerSize, (newValue, oldValue) => {
|
|
4916
|
-
if (size.value > 0 && oldValue > 0) {
|
|
4917
|
-
const ratio = size.value / oldValue;
|
|
4918
|
-
size.value = Math.round(newValue * ratio);
|
|
4919
|
-
}
|
|
4920
|
-
});
|
|
4921
4967
|
return {
|
|
4922
4968
|
isResizing: computed(() => isResizing.value),
|
|
4923
4969
|
isCollapsed: computed(() => isResizing.value && constrainedSize.value <= 0),
|
|
@@ -4933,21 +4979,23 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
4933
4979
|
props: {
|
|
4934
4980
|
isOpen: { type: Boolean },
|
|
4935
4981
|
logEntry: {},
|
|
4936
|
-
|
|
4982
|
+
workflow: {},
|
|
4983
|
+
execution: {},
|
|
4984
|
+
window: {},
|
|
4985
|
+
latestInfo: {}
|
|
4937
4986
|
},
|
|
4938
4987
|
emits: ["clickHeader"],
|
|
4939
4988
|
setup(__props, { emit: __emit }) {
|
|
4940
4989
|
const emit = __emit;
|
|
4941
4990
|
const locale = useI18n$1();
|
|
4942
4991
|
const telemetry = useTelemetry();
|
|
4943
|
-
const workflowsStore = useWorkflowsStore();
|
|
4944
4992
|
const nodeTypeStore = useNodeTypesStore();
|
|
4945
|
-
const content2 =
|
|
4946
|
-
|
|
4947
|
-
|
|
4948
|
-
|
|
4949
|
-
() => (workflowsStore.workflowExecutionData?.data?.resultData.runData[__props.logEntry.node] ?? [])[__props.logEntry.runIndex]
|
|
4993
|
+
const content2 = useLocalStorage(
|
|
4994
|
+
"N8N_LOGS_DETAIL_PANEL_CONTENT",
|
|
4995
|
+
LOG_DETAILS_CONTENT.OUTPUT,
|
|
4996
|
+
{ writeDefaults: false }
|
|
4950
4997
|
);
|
|
4998
|
+
const type = computed(() => nodeTypeStore.getNodeType(__props.logEntry.node.type));
|
|
4951
4999
|
const consumedTokens2 = computed(() => getSubtreeTotalConsumedTokens(__props.logEntry));
|
|
4952
5000
|
const isTriggerNode = computed(() => type.value?.group.includes("trigger"));
|
|
4953
5001
|
const container2 = useTemplateRef("container");
|
|
@@ -5000,34 +5048,29 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
5000
5048
|
}, [
|
|
5001
5049
|
createVNode(PanelHeader, {
|
|
5002
5050
|
"data-test-id": "log-details-header",
|
|
5051
|
+
class: normalizeClass(_ctx.$style.header),
|
|
5003
5052
|
onClick: _cache[0] || (_cache[0] = ($event) => emit("clickHeader"))
|
|
5004
5053
|
}, {
|
|
5005
5054
|
title: withCtx(() => [
|
|
5006
5055
|
createBaseVNode("div", {
|
|
5007
5056
|
class: normalizeClass(_ctx.$style.title)
|
|
5008
5057
|
}, [
|
|
5009
|
-
createVNode(_sfc_main$
|
|
5058
|
+
createVNode(_sfc_main$k, {
|
|
5010
5059
|
"node-type": type.value,
|
|
5011
5060
|
size: 16,
|
|
5012
5061
|
class: normalizeClass(_ctx.$style.icon)
|
|
5013
5062
|
}, null, 8, ["node-type", "class"]),
|
|
5014
|
-
createVNode(
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
}, {
|
|
5020
|
-
default: withCtx(() => [
|
|
5021
|
-
createTextVNode(toDisplayString(node.value?.name), 1)
|
|
5022
|
-
]),
|
|
5023
|
-
_: 1
|
|
5024
|
-
}, 8, ["class"]),
|
|
5063
|
+
createVNode(NodeName, {
|
|
5064
|
+
"latest-name": _ctx.latestInfo?.name ?? _ctx.logEntry.node.name,
|
|
5065
|
+
name: _ctx.logEntry.node.name,
|
|
5066
|
+
"is-deleted": _ctx.latestInfo?.deleted ?? false
|
|
5067
|
+
}, null, 8, ["latest-name", "name", "is-deleted"]),
|
|
5025
5068
|
_ctx.isOpen ? (openBlock(), createBlock(ExecutionSummary, {
|
|
5026
5069
|
key: 0,
|
|
5027
5070
|
class: normalizeClass(_ctx.$style.executionSummary),
|
|
5028
|
-
status: runData.
|
|
5071
|
+
status: _ctx.logEntry.runData.executionStatus ?? "unknown",
|
|
5029
5072
|
"consumed-tokens": consumedTokens2.value,
|
|
5030
|
-
"time-took": runData.
|
|
5073
|
+
"time-took": _ctx.logEntry.runData.executionTime
|
|
5031
5074
|
}, null, 8, ["class", "status", "consumed-tokens", "time-took"])) : createCommentVNode("", true)
|
|
5032
5075
|
], 2)
|
|
5033
5076
|
]),
|
|
@@ -5039,7 +5082,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
5039
5082
|
createVNode(unref(N8nButton), {
|
|
5040
5083
|
size: "mini",
|
|
5041
5084
|
type: "secondary",
|
|
5042
|
-
class: normalizeClass(content2
|
|
5085
|
+
class: normalizeClass(unref(content2) === unref(LOG_DETAILS_CONTENT).OUTPUT ? "" : _ctx.$style.pressed),
|
|
5043
5086
|
onClick: withModifiers(handleToggleInput, ["stop"])
|
|
5044
5087
|
}, {
|
|
5045
5088
|
default: withCtx(() => [
|
|
@@ -5050,7 +5093,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
5050
5093
|
createVNode(unref(N8nButton), {
|
|
5051
5094
|
size: "mini",
|
|
5052
5095
|
type: "secondary",
|
|
5053
|
-
class: normalizeClass(content2
|
|
5096
|
+
class: normalizeClass(unref(content2) === unref(LOG_DETAILS_CONTENT).INPUT ? "" : _ctx.$style.pressed),
|
|
5054
5097
|
onClick: withModifiers(handleToggleOutput, ["stop"])
|
|
5055
5098
|
}, {
|
|
5056
5099
|
default: withCtx(() => [
|
|
@@ -5062,13 +5105,13 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
5062
5105
|
renderSlot(_ctx.$slots, "actions")
|
|
5063
5106
|
]),
|
|
5064
5107
|
_: 3
|
|
5065
|
-
}),
|
|
5108
|
+
}, 8, ["class"]),
|
|
5066
5109
|
_ctx.isOpen ? (openBlock(), createElementBlock("div", {
|
|
5067
5110
|
key: 0,
|
|
5068
5111
|
class: normalizeClass(_ctx.$style.content),
|
|
5069
5112
|
"data-test-id": "logs-details-body"
|
|
5070
5113
|
}, [
|
|
5071
|
-
!isTriggerNode.value && content2
|
|
5114
|
+
!isTriggerNode.value && unref(content2) !== unref(LOG_DETAILS_CONTENT).OUTPUT ? (openBlock(), createBlock(unref(N8nResizeWrapper), {
|
|
5072
5115
|
key: 0,
|
|
5073
5116
|
class: normalizeClass({
|
|
5074
5117
|
[_ctx.$style.inputResizer]: true,
|
|
@@ -5088,43 +5131,47 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
5088
5131
|
"data-test-id": "log-details-input",
|
|
5089
5132
|
"pane-type": "input",
|
|
5090
5133
|
title: unref(locale).baseText("logs.details.header.actions.input"),
|
|
5091
|
-
"log-entry": _ctx.logEntry
|
|
5092
|
-
|
|
5134
|
+
"log-entry": _ctx.logEntry,
|
|
5135
|
+
workflow: _ctx.workflow,
|
|
5136
|
+
execution: _ctx.execution
|
|
5137
|
+
}, null, 8, ["title", "log-entry", "workflow", "execution"])
|
|
5093
5138
|
]),
|
|
5094
5139
|
_: 1
|
|
5095
5140
|
}, 8, ["class", "width", "style", "is-resizing-enabled", "window", "onResize"])) : createCommentVNode("", true),
|
|
5096
|
-
isTriggerNode.value || content2
|
|
5141
|
+
isTriggerNode.value || unref(content2) !== unref(LOG_DETAILS_CONTENT).INPUT ? (openBlock(), createBlock(RunDataView, {
|
|
5097
5142
|
key: 1,
|
|
5098
5143
|
"data-test-id": "log-details-output",
|
|
5099
5144
|
"pane-type": "output",
|
|
5100
5145
|
class: normalizeClass(_ctx.$style.outputPanel),
|
|
5101
5146
|
title: unref(locale).baseText("logs.details.header.actions.output"),
|
|
5102
|
-
"log-entry": _ctx.logEntry
|
|
5103
|
-
|
|
5147
|
+
"log-entry": _ctx.logEntry,
|
|
5148
|
+
workflow: _ctx.workflow,
|
|
5149
|
+
execution: _ctx.execution
|
|
5150
|
+
}, null, 8, ["class", "title", "log-entry", "workflow", "execution"])) : createCommentVNode("", true)
|
|
5104
5151
|
], 2)) : createCommentVNode("", true)
|
|
5105
5152
|
], 2);
|
|
5106
5153
|
};
|
|
5107
5154
|
}
|
|
5108
5155
|
});
|
|
5109
|
-
const container$2 = "
|
|
5110
|
-
const
|
|
5111
|
-
const
|
|
5112
|
-
const
|
|
5113
|
-
const
|
|
5114
|
-
const
|
|
5115
|
-
const executionSummary = "
|
|
5116
|
-
const content = "
|
|
5117
|
-
const outputPanel = "
|
|
5118
|
-
const inputResizer = "
|
|
5119
|
-
const collapsed = "
|
|
5120
|
-
const full = "
|
|
5156
|
+
const container$2 = "_container_pax0a_123";
|
|
5157
|
+
const header = "_header_pax0a_132";
|
|
5158
|
+
const actions = "_actions_pax0a_136";
|
|
5159
|
+
const pressed = "_pressed_pax0a_142";
|
|
5160
|
+
const title = "_title_pax0a_146";
|
|
5161
|
+
const icon = "_icon_pax0a_152";
|
|
5162
|
+
const executionSummary = "_executionSummary_pax0a_156";
|
|
5163
|
+
const content = "_content_pax0a_160";
|
|
5164
|
+
const outputPanel = "_outputPanel_pax0a_168";
|
|
5165
|
+
const inputResizer = "_inputResizer_pax0a_173";
|
|
5166
|
+
const collapsed = "_collapsed_pax0a_177";
|
|
5167
|
+
const full = "_full_pax0a_177";
|
|
5121
5168
|
const style0$2 = {
|
|
5122
5169
|
container: container$2,
|
|
5170
|
+
header,
|
|
5123
5171
|
actions,
|
|
5124
5172
|
pressed,
|
|
5125
5173
|
title,
|
|
5126
5174
|
icon,
|
|
5127
|
-
name,
|
|
5128
5175
|
executionSummary,
|
|
5129
5176
|
content,
|
|
5130
5177
|
outputPanel,
|
|
@@ -5163,7 +5210,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5163
5210
|
content: popOutButtonText.value
|
|
5164
5211
|
}, {
|
|
5165
5212
|
default: withCtx(() => [
|
|
5166
|
-
createVNode(unref(_sfc_main$
|
|
5213
|
+
createVNode(unref(_sfc_main$i), {
|
|
5167
5214
|
icon: "pop-out",
|
|
5168
5215
|
type: "secondary",
|
|
5169
5216
|
size: "small",
|
|
@@ -5180,7 +5227,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5180
5227
|
content: toggleButtonText.value
|
|
5181
5228
|
}, {
|
|
5182
5229
|
default: withCtx(() => [
|
|
5183
|
-
createVNode(unref(_sfc_main$
|
|
5230
|
+
createVNode(unref(_sfc_main$i), {
|
|
5184
5231
|
type: "secondary",
|
|
5185
5232
|
size: "small",
|
|
5186
5233
|
"icon-size": "medium",
|
|
@@ -5220,13 +5267,13 @@ function useLayout(pipContainer, pipContent2, container2, logsContainer2) {
|
|
|
5220
5267
|
});
|
|
5221
5268
|
const chatPanelResizer = useResizablePanel(LOCAL_STORAGE_PANEL_WIDTH, {
|
|
5222
5269
|
container: container2,
|
|
5223
|
-
defaultSize: (size) => size * 0.3,
|
|
5224
|
-
minSize:
|
|
5270
|
+
defaultSize: (size) => Math.min(800, size * 0.3),
|
|
5271
|
+
minSize: 240,
|
|
5225
5272
|
maxSize: (size) => size * 0.8
|
|
5226
5273
|
});
|
|
5227
5274
|
const overviewPanelResizer = useResizablePanel(LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH, {
|
|
5228
5275
|
container: logsContainer2,
|
|
5229
|
-
defaultSize: (size) => size * 0.
|
|
5276
|
+
defaultSize: (size) => Math.min(240, size * 0.2),
|
|
5230
5277
|
minSize: 80,
|
|
5231
5278
|
maxSize: 500,
|
|
5232
5279
|
allowFullSize: true
|
|
@@ -5273,11 +5320,15 @@ function useLayout(pipContainer, pipContent2, container2, logsContainer2) {
|
|
|
5273
5320
|
}
|
|
5274
5321
|
resizer.onResizeEnd();
|
|
5275
5322
|
}
|
|
5276
|
-
watch(
|
|
5277
|
-
|
|
5278
|
-
|
|
5279
|
-
|
|
5280
|
-
|
|
5323
|
+
watch(
|
|
5324
|
+
[panelState, resizer.size],
|
|
5325
|
+
([state, height]) => {
|
|
5326
|
+
canvasStore.setPanelHeight(
|
|
5327
|
+
state === LOGS_PANEL_STATE.FLOATING ? 0 : state === LOGS_PANEL_STATE.ATTACHED ? height : 32
|
|
5328
|
+
);
|
|
5329
|
+
},
|
|
5330
|
+
{ immediate: true }
|
|
5331
|
+
);
|
|
5281
5332
|
return {
|
|
5282
5333
|
height: resizer.size,
|
|
5283
5334
|
chatPanelWidth: chatPanelResizer.size,
|
|
@@ -5298,6 +5349,73 @@ function useLayout(pipContainer, pipContent2, container2, logsContainer2) {
|
|
|
5298
5349
|
onOverviewPanelResizeEnd: overviewPanelResizer.onResizeEnd
|
|
5299
5350
|
};
|
|
5300
5351
|
}
|
|
5352
|
+
function useExecutionData() {
|
|
5353
|
+
const nodeHelpers = useNodeHelpers();
|
|
5354
|
+
const workflowsStore = useWorkflowsStore();
|
|
5355
|
+
const execData = ref();
|
|
5356
|
+
const workflow = computed(
|
|
5357
|
+
() => execData.value ? new Workflow({
|
|
5358
|
+
...execData.value?.workflowData,
|
|
5359
|
+
nodeTypes: workflowsStore.getNodeTypes()
|
|
5360
|
+
}) : void 0
|
|
5361
|
+
);
|
|
5362
|
+
const latestNodeNameById = computed(
|
|
5363
|
+
() => Object.values(workflow.value?.nodes ?? {}).reduce(
|
|
5364
|
+
(acc, node) => {
|
|
5365
|
+
const nodeInStore = workflowsStore.getNodeById(node.id);
|
|
5366
|
+
acc[node.id] = {
|
|
5367
|
+
deleted: !nodeInStore,
|
|
5368
|
+
disabled: nodeInStore?.disabled ?? false,
|
|
5369
|
+
name: nodeInStore?.name ?? node.name
|
|
5370
|
+
};
|
|
5371
|
+
return acc;
|
|
5372
|
+
},
|
|
5373
|
+
{}
|
|
5374
|
+
)
|
|
5375
|
+
);
|
|
5376
|
+
const hasChat = computed(
|
|
5377
|
+
() => [Object.values(workflow.value?.nodes ?? {}), workflowsStore.workflow.nodes].some(
|
|
5378
|
+
(nodes) => nodes.some(isChatNode)
|
|
5379
|
+
)
|
|
5380
|
+
);
|
|
5381
|
+
const execution = computed(() => {
|
|
5382
|
+
if (!execData.value || !workflow.value) {
|
|
5383
|
+
return void 0;
|
|
5384
|
+
}
|
|
5385
|
+
return {
|
|
5386
|
+
...execData.value,
|
|
5387
|
+
tree: createLogEntries(workflow.value, execData.value.data?.resultData.runData ?? {})
|
|
5388
|
+
};
|
|
5389
|
+
});
|
|
5390
|
+
const updateInterval = computed(() => (execution.value?.tree.length ?? 0) > 10 ? 300 : 0);
|
|
5391
|
+
const runStatusList = computed(
|
|
5392
|
+
() => workflowsStore.workflowExecutionData?.id === IN_PROGRESS_EXECUTION_ID ? Object.values(workflowsStore.workflowExecutionData?.data?.resultData.runData ?? {}).flatMap((tasks) => tasks.map((task) => task.executionStatus ?? "")).join("|") : ""
|
|
5393
|
+
);
|
|
5394
|
+
function resetExecutionData() {
|
|
5395
|
+
execData.value = void 0;
|
|
5396
|
+
workflowsStore.setWorkflowExecutionData(null);
|
|
5397
|
+
nodeHelpers.updateNodesExecutionIssues();
|
|
5398
|
+
}
|
|
5399
|
+
watch(
|
|
5400
|
+
// Fields that should trigger update
|
|
5401
|
+
[
|
|
5402
|
+
() => workflowsStore.workflowExecutionData?.id,
|
|
5403
|
+
() => workflowsStore.workflowExecutionData?.workflowData.id,
|
|
5404
|
+
() => workflowsStore.workflowExecutionData?.status,
|
|
5405
|
+
runStatusList
|
|
5406
|
+
],
|
|
5407
|
+
useThrottleFn(
|
|
5408
|
+
() => {
|
|
5409
|
+
execData.value = deepToRaw(workflowsStore.workflowExecutionData ?? void 0);
|
|
5410
|
+
},
|
|
5411
|
+
updateInterval,
|
|
5412
|
+
true,
|
|
5413
|
+
true
|
|
5414
|
+
),
|
|
5415
|
+
{ immediate: true }
|
|
5416
|
+
);
|
|
5417
|
+
return { execution, workflow, hasChat, latestNodeNameById, resetExecutionData };
|
|
5418
|
+
}
|
|
5301
5419
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5302
5420
|
__name: "LogsPanel",
|
|
5303
5421
|
props: {
|
|
@@ -5305,12 +5423,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5305
5423
|
},
|
|
5306
5424
|
setup(__props) {
|
|
5307
5425
|
const props = __props;
|
|
5308
|
-
const workflowsStore = useWorkflowsStore();
|
|
5309
5426
|
const container2 = useTemplateRef("container");
|
|
5310
5427
|
const logsContainer2 = useTemplateRef("logsContainer");
|
|
5311
5428
|
const pipContainer = useTemplateRef("pipContainer");
|
|
5312
5429
|
const pipContent2 = useTemplateRef("pipContent");
|
|
5313
|
-
const previousChatMessages = computed(() => workflowsStore.getPastChatMessages);
|
|
5314
5430
|
const {
|
|
5315
5431
|
height,
|
|
5316
5432
|
chatPanelWidth,
|
|
@@ -5330,34 +5446,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5330
5446
|
onOverviewPanelResize,
|
|
5331
5447
|
onOverviewPanelResizeEnd
|
|
5332
5448
|
} = useLayout(pipContainer, pipContent2, container2, logsContainer2);
|
|
5333
|
-
const {
|
|
5334
|
-
|
|
5335
|
-
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
|
|
5341
|
-
|
|
5342
|
-
workflow.value,
|
|
5343
|
-
workflowsStore.workflowExecutionData?.data?.resultData.runData ?? {}
|
|
5344
|
-
)
|
|
5345
|
-
);
|
|
5449
|
+
const {
|
|
5450
|
+
currentSessionId,
|
|
5451
|
+
messages: messages2,
|
|
5452
|
+
previousChatMessages,
|
|
5453
|
+
sendMessage,
|
|
5454
|
+
refreshSession,
|
|
5455
|
+
displayExecution
|
|
5456
|
+
} = useChatState(props.isReadOnly);
|
|
5457
|
+
const { workflow, execution, hasChat, latestNodeNameById, resetExecutionData } = useExecutionData();
|
|
5346
5458
|
const manualLogEntrySelection = ref({ type: "initial" });
|
|
5347
|
-
const autoSelectedLogEntry = computed(
|
|
5348
|
-
() => findLogEntryToAutoSelect(
|
|
5349
|
-
executionTree.value,
|
|
5350
|
-
workflowsStore.nodesByName,
|
|
5351
|
-
workflowsStore.workflowExecutionData?.data?.resultData.runData ?? {}
|
|
5352
|
-
)
|
|
5353
|
-
);
|
|
5354
5459
|
const selectedLogEntry = computed(
|
|
5355
|
-
() => manualLogEntrySelection.value
|
|
5460
|
+
() => findSelectedLogEntry(manualLogEntrySelection.value, execution.value)
|
|
5356
5461
|
);
|
|
5357
|
-
const isLogDetailsOpen = computed(
|
|
5358
|
-
|
|
5462
|
+
const isLogDetailsOpen = computed(() => isOpen.value && selectedLogEntry.value !== void 0);
|
|
5463
|
+
const isLogDetailsVisuallyOpen = computed(
|
|
5464
|
+
() => isLogDetailsOpen.value && !isCollapsingDetailsPanel.value
|
|
5359
5465
|
);
|
|
5360
|
-
const isLogDetailsOpenOrCollapsing = computed(() => selectedLogEntry.value !== void 0);
|
|
5361
5466
|
const logsPanelActionsProps = computed(() => ({
|
|
5362
5467
|
isOpen: isOpen.value,
|
|
5363
5468
|
showToggleButton: !isPoppedOut.value,
|
|
@@ -5366,7 +5471,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5366
5471
|
onToggleOpen
|
|
5367
5472
|
}));
|
|
5368
5473
|
function handleSelectLogEntry(selected2) {
|
|
5369
|
-
|
|
5474
|
+
const workflowId = execution.value?.workflowData.id;
|
|
5475
|
+
if (!workflowId) {
|
|
5476
|
+
return;
|
|
5477
|
+
}
|
|
5478
|
+
manualLogEntrySelection.value = selected2 === void 0 ? { type: "none", workflowId } : { type: "selected", workflowId, data: selected2 };
|
|
5370
5479
|
}
|
|
5371
5480
|
function handleResizeOverviewPanelEnd() {
|
|
5372
5481
|
if (isOverviewPanelFullWidth.value) {
|
|
@@ -5400,7 +5509,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5400
5509
|
class: normalizeClass([_ctx.$style.container, "ignore-key-press-canvas"]),
|
|
5401
5510
|
tabindex: "0"
|
|
5402
5511
|
}, [
|
|
5403
|
-
hasChat.
|
|
5512
|
+
unref(hasChat) && (!props.isReadOnly || unref(messages2).length > 0) ? (openBlock(), createBlock(unref(N8nResizeWrapper), {
|
|
5404
5513
|
key: 0,
|
|
5405
5514
|
"supported-directions": ["right"],
|
|
5406
5515
|
"is-resizing-enabled": unref(isOpen),
|
|
@@ -5418,7 +5527,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5418
5527
|
"is-read-only": _ctx.isReadOnly,
|
|
5419
5528
|
messages: unref(messages2),
|
|
5420
5529
|
"session-id": unref(currentSessionId),
|
|
5421
|
-
"past-chat-messages": previousChatMessages
|
|
5530
|
+
"past-chat-messages": unref(previousChatMessages),
|
|
5422
5531
|
"show-close-button": false,
|
|
5423
5532
|
"is-new-logs-enabled": true,
|
|
5424
5533
|
onClose: unref(onToggleOpen),
|
|
@@ -5438,45 +5547,52 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5438
5547
|
createVNode(unref(N8nResizeWrapper), {
|
|
5439
5548
|
class: normalizeClass(_ctx.$style.overviewResizer),
|
|
5440
5549
|
width: unref(overviewPanelWidth),
|
|
5441
|
-
style: normalizeStyle({ width:
|
|
5550
|
+
style: normalizeStyle({ width: isLogDetailsVisuallyOpen.value ? `${unref(overviewPanelWidth)}px` : "" }),
|
|
5442
5551
|
"supported-directions": ["right"],
|
|
5443
|
-
"is-resizing-enabled":
|
|
5552
|
+
"is-resizing-enabled": isLogDetailsOpen.value,
|
|
5444
5553
|
window: unref(pipWindow),
|
|
5445
5554
|
onResize: unref(onOverviewPanelResize),
|
|
5446
5555
|
onResizeend: handleResizeOverviewPanelEnd
|
|
5447
5556
|
}, {
|
|
5448
5557
|
default: withCtx(() => [
|
|
5449
|
-
|
|
5558
|
+
(openBlock(), createBlock(LogsOverviewPanel, {
|
|
5559
|
+
key: unref(execution)?.id ?? "",
|
|
5450
5560
|
class: normalizeClass(_ctx.$style.logsOverview),
|
|
5451
5561
|
"is-open": unref(isOpen),
|
|
5452
5562
|
"is-read-only": _ctx.isReadOnly,
|
|
5453
|
-
"is-compact":
|
|
5563
|
+
"is-compact": isLogDetailsVisuallyOpen.value,
|
|
5454
5564
|
selected: selectedLogEntry.value,
|
|
5455
|
-
|
|
5565
|
+
execution: unref(execution),
|
|
5566
|
+
"scroll-to-selection": manualLogEntrySelection.value.type !== "selected" || manualLogEntrySelection.value.data.id !== selectedLogEntry.value?.id,
|
|
5567
|
+
"latest-node-info": unref(latestNodeNameById),
|
|
5456
5568
|
onClickHeader: _cache[1] || (_cache[1] = ($event) => unref(onToggleOpen)(true)),
|
|
5457
|
-
onSelect: handleSelectLogEntry
|
|
5569
|
+
onSelect: handleSelectLogEntry,
|
|
5570
|
+
onClearExecutionData: unref(resetExecutionData)
|
|
5458
5571
|
}, {
|
|
5459
5572
|
actions: withCtx(() => [
|
|
5460
|
-
!
|
|
5573
|
+
!isLogDetailsVisuallyOpen.value ? (openBlock(), createBlock(LogsPanelActions, normalizeProps(mergeProps({ key: 0 }, logsPanelActionsProps.value)), null, 16)) : createCommentVNode("", true)
|
|
5461
5574
|
]),
|
|
5462
5575
|
_: 1
|
|
5463
|
-
}, 8, ["class", "is-open", "is-read-only", "is-compact", "selected", "execution-
|
|
5576
|
+
}, 8, ["class", "is-open", "is-read-only", "is-compact", "selected", "execution", "scroll-to-selection", "latest-node-info", "onClearExecutionData"]))
|
|
5464
5577
|
]),
|
|
5465
5578
|
_: 1
|
|
5466
5579
|
}, 8, ["class", "width", "style", "is-resizing-enabled", "window", "onResize"]),
|
|
5467
|
-
|
|
5580
|
+
isLogDetailsVisuallyOpen.value && selectedLogEntry.value && unref(workflow) && unref(execution) ? (openBlock(), createBlock(LogsDetailsPanel, {
|
|
5468
5581
|
key: 0,
|
|
5469
5582
|
class: normalizeClass(_ctx.$style.logDetails),
|
|
5470
5583
|
"is-open": unref(isOpen),
|
|
5471
5584
|
"log-entry": selectedLogEntry.value,
|
|
5585
|
+
workflow: unref(workflow),
|
|
5586
|
+
execution: unref(execution),
|
|
5472
5587
|
window: unref(pipWindow),
|
|
5588
|
+
"latest-info": unref(latestNodeNameById)[selectedLogEntry.value.node.id],
|
|
5473
5589
|
onClickHeader: _cache[2] || (_cache[2] = ($event) => unref(onToggleOpen)(true))
|
|
5474
5590
|
}, {
|
|
5475
5591
|
actions: withCtx(() => [
|
|
5476
|
-
|
|
5592
|
+
isLogDetailsVisuallyOpen.value ? (openBlock(), createBlock(LogsPanelActions, normalizeProps(mergeProps({ key: 0 }, logsPanelActionsProps.value)), null, 16)) : createCommentVNode("", true)
|
|
5477
5593
|
]),
|
|
5478
5594
|
_: 1
|
|
5479
|
-
}, 8, ["class", "is-open", "log-entry", "window"])) : createCommentVNode("", true)
|
|
5595
|
+
}, 8, ["class", "is-open", "log-entry", "workflow", "execution", "window", "latest-info"])) : createCommentVNode("", true)
|
|
5480
5596
|
], 2)
|
|
5481
5597
|
], 2)
|
|
5482
5598
|
]),
|