n8n-editor-ui 1.89.1 → 1.90.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-BpxWKaCw.js → AnimatedSpinner-ChThynSJ.js} +1 -1
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-C2T62K8N.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-WGp2Kuen.js} +1 -1
- package/dist/assets/{AuthView-ChkPGgg-.js → AuthView-Dlhn_SQ-.js} +2 -2
- package/dist/assets/CanvasChatSwitch-BuBg7TJP.js +265 -0
- package/dist/assets/CanvasChatSwitch-CaiSjHFG.css +345 -0
- package/dist/assets/{ChangePasswordView-B38Kck9y.js → ChangePasswordView-BKYXOoDf.js} +3 -3
- package/dist/assets/CollectionParameter-CQXiWluX.js +4 -0
- package/dist/assets/{CredentialsView-DwxRSqpp.js → CredentialsView-BNWIgrLb.js} +6 -6
- package/dist/assets/DemoFooter-DR6r_2qR.js +25 -0
- package/dist/assets/{ErrorView-CbG0Uo6R.js → ErrorView-Bu8Mt5FH.js} +1 -1
- package/dist/assets/{ExecutionsTime-DZHUIJjP.css → ExecutionsTime-BuE0lHT6.css} +24 -15
- package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-TkWqVC7U.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-DvtOOOhh.js} +20 -15
- package/dist/assets/{ExecutionsView-Cm0glOsn.js → ExecutionsView-C0WZAIi0.js} +8 -8
- package/dist/assets/{FileSaver.min-DbOfV2ME.js → FileSaver.min-Cm0u4qyc.js} +1 -1
- package/dist/assets/{FixedCollectionParameter-DESxP1XH.js → FixedCollectionParameter-KmRZtBiP.js} +1 -1
- package/dist/assets/{ForgotMyPasswordView-Bhgql4BX.js → ForgotMyPasswordView-GH7SqEFu.js} +3 -3
- package/dist/assets/{InsightsChartAverageRuntime-B_W8xSC9.js → InsightsChartAverageRuntime-SeBUN06R.js} +4 -4
- package/dist/assets/{InsightsChartFailed-Buf2QmpB.js → InsightsChartFailed-TYjH8LwV.js} +4 -4
- package/dist/assets/{InsightsChartFailureRate-DHs26Nrr.js → InsightsChartFailureRate-D41Jv-6v.js} +4 -4
- package/dist/assets/{InsightsChartTimeSaved-Bjicuurm.js → InsightsChartTimeSaved-TLPDAmPx.js} +4 -4
- package/dist/assets/{InsightsChartTotal-BodC7Sun.js → InsightsChartTotal-CaKTe2mv.js} +4 -4
- package/dist/assets/{InsightsDashboard-CkipcaZC.js → InsightsDashboard-o3JS9fjz.js} +10 -10
- package/dist/assets/{InsightsPaywall-BoFT-Ik-.js → InsightsPaywall-Z4Y0nO-i.js} +1 -1
- package/dist/assets/{InsightsSummary-C-_stVav.js → InsightsSummary-DzYli0Pu.js} +1 -1
- package/dist/assets/{InsightsTableWorkflows-DvkAMkT2.js → InsightsTableWorkflows-CUHAG57c.js} +2 -2
- package/dist/assets/{Logo-DjpNa7ha.js → Logo-Dxp4M9dy.js} +1 -1
- package/dist/assets/{CanvasChatSwitch-BDVIAjN6.css → LogsPanel-DmPMCt9w.css} +425 -324
- package/dist/assets/{CanvasChatSwitch-B5IdrA6Q.js → LogsPanel-zIrTNE6j.js} +985 -641
- package/dist/assets/{MainHeader-BIrklbRX.js → MainHeader-D4cIIoUA.js} +9 -9
- package/dist/assets/{MainSidebar-QVA1U4KK.js → MainSidebar-BtW-9UPT.js} +2 -2
- package/dist/assets/{NodeCreation-BR_PsZYm.js → NodeCreation-thD32mA1.js} +4 -4
- package/dist/assets/{NodeCreator-BAsdokTf.js → NodeCreator-B4mHaU45.js} +3 -3
- package/dist/assets/{NodeDetailsView-B2kdGJ7R.css → NodeDetailsView-CGgV4Pn_.css} +27 -1185
- package/dist/assets/{NodeDetailsView-Ao8qCvow.js → NodeDetailsView-cO3Ci9jH.js} +169 -2683
- package/dist/assets/{NodeView-CY5L1Bmm.js → NodeView-E5b1ClVD.js} +12 -12
- package/dist/assets/{ProjectCardBadge-BiJ9Jmbm.js → ProjectCardBadge-LnLKqSK-.js} +5 -9
- package/dist/assets/{ProjectHeader-D42fsSzg.js → ProjectHeader-DC02ZuZ0.js} +1 -1
- package/dist/assets/{ProjectSettings-IPFHN7l5.js → ProjectSettings-Zr1UOp7s.js} +2 -2
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-DOXKnjAX.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-CM7WIpD3.js} +1 -1
- package/dist/assets/{ResourcesListLayout-b44J07nq.css → ResourcesListLayout-CglK2dXR.css} +8 -8
- package/dist/assets/{ResourcesListLayout-B_Otf91D.js → ResourcesListLayout-DTsuHdYx.js} +2 -10
- package/dist/assets/RunData-DepHcD2K.css +1833 -0
- package/dist/assets/RunData-Ds-U68nr.js +5104 -0
- package/dist/assets/{RunDataAi-CUUDqZRP.css → RunDataAi-BF2gZZGr.css} +0 -408
- package/dist/assets/RunDataAi-DdK11EHU.js +750 -0
- package/dist/assets/{RunDataJson-BRO48N-i.js → RunDataJson-B2WU5od1.js} +7 -11
- package/dist/assets/{RunDataJsonActions-C4DFiOh8.js → RunDataJsonActions-DqZ2X1yJ.js} +1 -1
- package/dist/assets/{RunDataSearch-CNfhlvrK.js → RunDataSearch-CQsyZvGK.js} +1 -1
- package/dist/assets/{RunDataTable-DEgXQifj.js → RunDataTable-BO0R4JT_.js} +36 -30
- package/dist/assets/{RunDataTable-CX7gToH4.css → RunDataTable-DyUvXWfl.css} +47 -41
- package/dist/assets/{SamlOnboarding-D903XflA.js → SamlOnboarding-CmwMX5y2.js} +3 -3
- package/dist/assets/{SettingsApiView-DCMVAa53.js → SettingsApiView-D6uBbi9-.js} +5 -5
- package/dist/assets/{SettingsCommunityNodesView-BBuil15J.js → SettingsCommunityNodesView-CJODtx_K.js} +4 -4
- package/dist/assets/{SettingsExternalSecrets-CXRYGUXv.js → SettingsExternalSecrets-CVk14P_P.js} +1 -1
- package/dist/assets/{SettingsLdapView-DhoxhX3J.js → SettingsLdapView-pg71FErj.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-CxZag4Od.js → SettingsLogStreamingView-DUOI3Xb9.js} +1 -1
- package/dist/assets/{SettingsPersonalView-wcvMUVmj.js → SettingsPersonalView-BFnOmBPC.js} +1 -1
- package/dist/assets/{SettingsSourceControl-1-N8xA9J.js → SettingsSourceControl-BUNmxcvB.js} +1 -1
- package/dist/assets/{SettingsSso-BwySnCiN.js → SettingsSso-Dx8Qw_2Z.js} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-CDI4k6UQ.js → SettingsUsageAndPlan-DTk86tXU.js} +1 -1
- package/dist/assets/{SettingsUsersView-tEm96Fhw.js → SettingsUsersView-BviXcl30.js} +1 -1
- package/dist/assets/{SettingsView-AhipcaOB.js → SettingsView-fzPdUijx.js} +1 -1
- package/dist/assets/{SetupView-BnsG-7jD.js → SetupView-DUTx1JXK.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-BNGDx7Fp.js → SetupWorkflowCredentialsButton-fApxCGHh.js} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-BuoOdqHT.js → SetupWorkflowFromTemplateView-C5t9fEKF.js} +3 -3
- package/dist/assets/{SigninView-UJnLl-xs.js → SigninView-BRVoXQRW.js} +3 -3
- package/dist/assets/{SignoutView-e5mZU_R6.js → SignoutView-Duh6wb4Y.js} +1 -1
- package/dist/assets/{SignupView-cdwgpaEM.js → SignupView-DMkpTtjs.js} +3 -3
- package/dist/assets/{TemplateDetails-DcoAjVlw.js → TemplateDetails-Df9_jph6.js} +1 -1
- package/dist/assets/{TemplateList-B6SXDRtt.js → TemplateList-qSnJvw0K.js} +1 -1
- package/dist/assets/{TemplatesCollectionView-BZmufr5v.js → TemplatesCollectionView--ccYXaCo.js} +5 -5
- package/dist/assets/{TemplatesSearchView-BJhZMdAl.js → TemplatesSearchView-D1YgHKld.js} +3 -3
- package/dist/assets/{TemplatesView-CSnT6pfC.js → TemplatesView-B9CwObHN.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-4ejYFisG.js → TemplatesWorkflowView-DtLpUF59.js} +5 -5
- package/dist/assets/{TestDefinitionEditView-BLJQ7-fz.js → TestDefinitionEditView-DFcBlKnN.js} +7 -7
- package/dist/assets/{TestDefinitionListView-uZmtRG_H.js → TestDefinitionListView-C_mbolTO.js} +1 -1
- package/dist/assets/{TestDefinitionNewView-Dfav_UeD.js → TestDefinitionNewView-CvyM6TLE.js} +2 -2
- package/dist/assets/{TestDefinitionRootView-CbVp9ZuX.js → TestDefinitionRootView-BXzJY0cY.js} +1 -1
- package/dist/assets/{VariablesView-CTSEc1xT.js → VariablesView-BHFJj5IU.js} +3 -3
- package/dist/assets/{WorkerView-s6aBeHSb.js → WorkerView-CgIksFjP.js} +6 -6
- package/dist/assets/{WorkflowActivator-BeUvx9Ri.js → WorkflowActivator-O6i5XAk2.js} +2 -2
- package/dist/assets/{WorkflowExecutionsInfoAccordion-BBtwnPZQ.css → WorkflowExecutionsInfoAccordion-53bC-IXN.css} +10 -8
- package/dist/assets/{WorkflowExecutionsInfoAccordion-D9wF-tSd.js → WorkflowExecutionsInfoAccordion-BcBLZ_Ul.js} +3 -3
- package/dist/assets/{WorkflowExecutionsLandingPage-CROT9lXB.js → WorkflowExecutionsLandingPage-B9ByHnbR.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-DyVQaOZ3.js → WorkflowExecutionsPreview-DCE7TYLh.js} +6 -6
- package/dist/assets/{WorkflowExecutionsView-T9-QI3Ve.js → WorkflowExecutionsView-DFoBpdS7.js} +7 -7
- package/dist/assets/{WorkflowHistory-271ecFaP.js → WorkflowHistory-DolmPUM2.js} +3 -3
- package/dist/assets/{WorkflowOnboardingView-C10O8PHR.js → WorkflowOnboardingView-DQW48M8_.js} +1 -1
- package/dist/assets/{WorkflowPreview-B58e-sbx.js → WorkflowPreview-BFR6V9SO.js} +1 -1
- package/dist/assets/{WorkflowsView-tVTdlhV1.js → WorkflowsView-B-feKuLZ.js} +348 -60
- package/dist/assets/{WorkflowsView-DV1tjQwB.css → WorkflowsView-CsM69PSv.css} +41 -16
- package/dist/assets/{chartjs.utils-B5AYF7KA.js → chartjs.utils-BcXTJ2Te.js} +2 -2
- package/dist/assets/{dateFormatter-DP26ifk_.js → dateFormatter-CZI1kGYK.js} +1 -1
- package/dist/assets/{easyAiWorkflowUtils-BC_3x-4F.js → easyAiWorkflowUtils-ChToD_Yl.js} +1 -1
- package/dist/assets/{global-link-actions-BxV1MUKt.js → global-link-actions-OGaZVwsw.js} +1 -1
- package/dist/assets/{import-curl-DVtpAPDa.js → import-curl-CAszzwx1.js} +1 -1
- package/dist/assets/{index-DpLYcjet.js → index-7WdERzqm.js} +1 -1
- package/dist/assets/{index-CN4JmOoA.js → index-BpdkKRP4.js} +2544 -2121
- package/dist/assets/{index-DwKuVkBg.css → index-C5OXOcIJ.css} +176 -111
- package/dist/assets/{pickBy-BAPZ2mk0.js → pickBy-mYqFOFbh.js} +1 -1
- package/dist/assets/{templateActions-Hi9EBouz.js → templateActions-BX9arLbc.js} +1 -1
- package/dist/assets/{typescript.worker-Bt3bByTc.js → typescript.worker-BsxN2afA.js} +1 -1
- package/dist/assets/{useBeforeUnload-CQDQ2xRD.js → useBeforeUnload-K7nQ15Rk.js} +1 -1
- package/dist/assets/{useCanvasMapping-BkGr1HdJ.css → useCanvasMapping-C--wac6H.css} +8 -9
- package/dist/assets/{useCanvasMapping-BrMdYioA.js → useCanvasMapping-D_UPCxYX.js} +37 -30
- package/dist/assets/{useCanvasOperations-BW3qnkOc.js → useCanvasOperations-D6VFiC3b.js} +17 -71
- package/dist/assets/{useClearExecutionButtonVisible-CRcafrkD.js → useClearExecutionButtonVisible-D_0O6f0X.js} +2 -2
- package/dist/assets/{useExecutionDebugging-Dy0Nq0u2.js → useExecutionDebugging-BNMaKOh7.js} +1 -1
- package/dist/assets/{useExecutionHelpers-Bet0YWvb.js → useExecutionHelpers-DN5HqPqY.js} +2 -2
- package/dist/assets/{useImportCurlCommand-CJX2AaLN.js → useImportCurlCommand-BSL596XF.js} +2 -2
- package/dist/assets/{usePushConnection-RVgJVlWm.js → usePushConnection-BdV7ILvK.js} +3 -3
- package/dist/assets/{useTestDefinitionForm-DjJ6ywy3.js → useTestDefinitionForm-CIhrxyve.js} +1 -1
- package/dist/assets/{useWorkflowActivate-BZzKuzDM.js → useWorkflowActivate-pZ62ib_C.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-DJtdOCSL.js +0 -4
- package/dist/assets/RunDataAi-DsidSvp-.js +0 -3166
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as toTime, a as toDayMonth } from "./dateFormatter-
|
|
5
|
-
import { u as upperFirst } from "./useCanvasOperations-
|
|
6
|
-
import "./useExecutionHelpers-Bet0YWvb.js";
|
|
1
|
+
import { b1 as inject, b2 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, J 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, aC as withDirectives, bc as vModelText, H as withKeys, w as withCtx, I as watch, h as resolveComponent, l as createTextVNode, bd as N8nText, be as useClipboard, a as useToast, c as useI18n$1, aS as N8nTooltip, bf as N8nButton, aU as _sfc_main$h, aW as createSlots, aL as useStorage, a$ as watchEffect, y as onBeforeUnmount, K as useDebounce, bg as provide, bh as useProvideTooltipAppendTo, bi as IsInPiPWindowSymbol, bj as CHAT_TRIGGER_NODE_TYPE, bk as MANUAL_CHAT_TRIGGER_NODE_TYPE, bl as NodeConnectionTypes, bm as v4, bn as get, bo as isEmpty, bp as usePinnedData, ak as useMessage, al as MODAL_CONFIRM, bq as CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE, br as AI_SUBCATEGORY, bs as AI_CATEGORY_AGENTS, bt as AI_CATEGORY_CHAINS, bu as AI_CODE_NODE_TYPE, bv as getNodeInputs, bw as getConnectionTypes, bx as getNodeOutputs, U as useWorkflowsStore, by as useNodeTypesStore, a2 as useCanvasStore, b as useRouter, bz as useNodeHelpers, bA as useRunWorkflow, V as VIEWS, a_ as LOGS_PANEL_STATE, aZ as useTemplateRef, bB as _sfc_main$j, bC as I18nT, bD as N8nIcon, au as useNDVStore, bE as ElTree, bF as N8nRadioButtons, ai as useTelemetry, bG as uniqBy, aT as N8nLink, ax as useLocalStorage, bH as LOG_DETAILS_CONTENT, b0 as N8nResizeWrapper, bI as useStyles } from "./index-BpdkKRP4.js";
|
|
2
|
+
import { u as useClearExecutionButtonVisible } from "./useClearExecutionButtonVisible-D_0O6f0X.js";
|
|
3
|
+
import { H as HighlightJS, f as formatTokenUsageCount, _ as _sfc_main$i, g as getSubtreeTotalConsumedTokens, a as getTotalConsumedTokens, R as RunData, c as createLogEntries, b as findLogEntryToAutoSelect } from "./RunData-Ds-U68nr.js";
|
|
4
|
+
import { t as toTime, a as toDayMonth } from "./dateFormatter-CZI1kGYK.js";
|
|
5
|
+
import { u as upperFirst } from "./useCanvasOperations-D6VFiC3b.js";
|
|
7
6
|
function bash(hljs) {
|
|
8
7
|
const regex = hljs.regex;
|
|
9
8
|
const VAR = {};
|
|
@@ -2519,13 +2518,13 @@ function useI18n() {
|
|
|
2519
2518
|
}
|
|
2520
2519
|
return { t, te };
|
|
2521
2520
|
}
|
|
2522
|
-
const _hoisted_1$
|
|
2521
|
+
const _hoisted_1$c = {
|
|
2523
2522
|
viewBox: "0 0 24 24",
|
|
2524
2523
|
width: "1.2em",
|
|
2525
2524
|
height: "1.2em"
|
|
2526
2525
|
};
|
|
2527
2526
|
function render$7(_ctx, _cache) {
|
|
2528
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2527
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$c, _cache[0] || (_cache[0] = [
|
|
2529
2528
|
createBaseVNode("path", {
|
|
2530
2529
|
fill: "currentColor",
|
|
2531
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"
|
|
@@ -2533,13 +2532,13 @@ function render$7(_ctx, _cache) {
|
|
|
2533
2532
|
]));
|
|
2534
2533
|
}
|
|
2535
2534
|
const IconDelete = { name: "mdi-closeThick", render: render$7 };
|
|
2536
|
-
const _hoisted_1$
|
|
2535
|
+
const _hoisted_1$b = {
|
|
2537
2536
|
viewBox: "0 0 24 24",
|
|
2538
2537
|
width: "1.2em",
|
|
2539
2538
|
height: "1.2em"
|
|
2540
2539
|
};
|
|
2541
2540
|
function render$6(_ctx, _cache) {
|
|
2542
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2541
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$b, _cache[0] || (_cache[0] = [
|
|
2543
2542
|
createBaseVNode("path", {
|
|
2544
2543
|
fill: "currentColor",
|
|
2545
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"
|
|
@@ -2547,13 +2546,13 @@ function render$6(_ctx, _cache) {
|
|
|
2547
2546
|
]));
|
|
2548
2547
|
}
|
|
2549
2548
|
const IconFileImage = { name: "mdi-fileImage", render: render$6 };
|
|
2550
|
-
const _hoisted_1$
|
|
2549
|
+
const _hoisted_1$a = {
|
|
2551
2550
|
viewBox: "0 0 24 24",
|
|
2552
2551
|
width: "1.2em",
|
|
2553
2552
|
height: "1.2em"
|
|
2554
2553
|
};
|
|
2555
2554
|
function render$5(_ctx, _cache) {
|
|
2556
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2555
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$a, _cache[0] || (_cache[0] = [
|
|
2557
2556
|
createBaseVNode("path", {
|
|
2558
2557
|
fill: "currentColor",
|
|
2559
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"
|
|
@@ -2561,13 +2560,13 @@ function render$5(_ctx, _cache) {
|
|
|
2561
2560
|
]));
|
|
2562
2561
|
}
|
|
2563
2562
|
const IconFileMusic = { name: "mdi-fileMusic", render: render$5 };
|
|
2564
|
-
const _hoisted_1$
|
|
2563
|
+
const _hoisted_1$9 = {
|
|
2565
2564
|
viewBox: "0 0 24 24",
|
|
2566
2565
|
width: "1.2em",
|
|
2567
2566
|
height: "1.2em"
|
|
2568
2567
|
};
|
|
2569
2568
|
function render$4(_ctx, _cache) {
|
|
2570
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2569
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$9, _cache[0] || (_cache[0] = [
|
|
2571
2570
|
createBaseVNode("path", {
|
|
2572
2571
|
fill: "currentColor",
|
|
2573
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"
|
|
@@ -2575,13 +2574,13 @@ function render$4(_ctx, _cache) {
|
|
|
2575
2574
|
]));
|
|
2576
2575
|
}
|
|
2577
2576
|
const IconFileText = { name: "mdi-fileText", render: render$4 };
|
|
2578
|
-
const _hoisted_1$
|
|
2577
|
+
const _hoisted_1$8 = {
|
|
2579
2578
|
viewBox: "0 0 24 24",
|
|
2580
2579
|
width: "1.2em",
|
|
2581
2580
|
height: "1.2em"
|
|
2582
2581
|
};
|
|
2583
2582
|
function render$3(_ctx, _cache) {
|
|
2584
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2583
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$8, _cache[0] || (_cache[0] = [
|
|
2585
2584
|
createBaseVNode("path", {
|
|
2586
2585
|
fill: "currentColor",
|
|
2587
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"
|
|
@@ -2589,13 +2588,13 @@ function render$3(_ctx, _cache) {
|
|
|
2589
2588
|
]));
|
|
2590
2589
|
}
|
|
2591
2590
|
const IconFileVideo = { name: "mdi-fileVideo", render: render$3 };
|
|
2592
|
-
const _hoisted_1$
|
|
2591
|
+
const _hoisted_1$7 = {
|
|
2593
2592
|
viewBox: "0 0 24 24",
|
|
2594
2593
|
width: "1.2em",
|
|
2595
2594
|
height: "1.2em"
|
|
2596
2595
|
};
|
|
2597
2596
|
function render$2(_ctx, _cache) {
|
|
2598
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2597
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$7, _cache[0] || (_cache[0] = [
|
|
2599
2598
|
createBaseVNode("path", {
|
|
2600
2599
|
fill: "currentColor",
|
|
2601
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"
|
|
@@ -2603,8 +2602,8 @@ function render$2(_ctx, _cache) {
|
|
|
2603
2602
|
]));
|
|
2604
2603
|
}
|
|
2605
2604
|
const IconPreview = { name: "mdi-openInNew", render: render$2 };
|
|
2606
|
-
const _hoisted_1$
|
|
2607
|
-
const _sfc_main$
|
|
2605
|
+
const _hoisted_1$6 = { class: "chat-file-name" };
|
|
2606
|
+
const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
2608
2607
|
__name: "ChatFile",
|
|
2609
2608
|
props: {
|
|
2610
2609
|
file: {},
|
|
@@ -2639,7 +2638,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
|
2639
2638
|
onClick
|
|
2640
2639
|
}, [
|
|
2641
2640
|
createVNode(unref(TypeIcon)),
|
|
2642
|
-
createBaseVNode("p", _hoisted_1$
|
|
2641
|
+
createBaseVNode("p", _hoisted_1$6, toDisplayString(_ctx.file.name), 1),
|
|
2643
2642
|
_ctx.isRemovable ? (openBlock(), createElementBlock("span", {
|
|
2644
2643
|
key: 0,
|
|
2645
2644
|
class: "chat-file-delete",
|
|
@@ -2654,16 +2653,16 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
|
2654
2653
|
};
|
|
2655
2654
|
}
|
|
2656
2655
|
});
|
|
2657
|
-
const ChatFile = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
2658
|
-
const _hoisted_1$
|
|
2656
|
+
const ChatFile = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-70b9370d"]]);
|
|
2657
|
+
const _hoisted_1$5 = {
|
|
2659
2658
|
key: 0,
|
|
2660
2659
|
class: "chat-message-actions"
|
|
2661
2660
|
};
|
|
2662
|
-
const _hoisted_2$
|
|
2661
|
+
const _hoisted_2$2 = {
|
|
2663
2662
|
key: 2,
|
|
2664
2663
|
class: "chat-message-files"
|
|
2665
2664
|
};
|
|
2666
|
-
const _sfc_main$
|
|
2665
|
+
const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
2667
2666
|
__name: "Message",
|
|
2668
2667
|
props: {
|
|
2669
2668
|
message: {}
|
|
@@ -2741,7 +2740,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
2741
2740
|
ref: messageContainer,
|
|
2742
2741
|
class: normalizeClass(["chat-message", classes.value])
|
|
2743
2742
|
}, [
|
|
2744
|
-
_ctx.$slots.beforeMessage ? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
2743
|
+
_ctx.$slots.beforeMessage ? (openBlock(), createElementBlock("div", _hoisted_1$5, [
|
|
2745
2744
|
renderSlot(_ctx.$slots, "beforeMessage", normalizeProps(guardReactiveProps({ message: unref(message) })))
|
|
2746
2745
|
])) : createCommentVNode("", true),
|
|
2747
2746
|
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
@@ -2752,7 +2751,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
2752
2751
|
options: markdownOptions,
|
|
2753
2752
|
plugins: [linksNewTabPlugin]
|
|
2754
2753
|
}, null, 8, ["source", "plugins"])),
|
|
2755
|
-
(unref(message).files ?? []).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
2754
|
+
(unref(message).files ?? []).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
|
|
2756
2755
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(message).files ?? [], (file) => {
|
|
2757
2756
|
return openBlock(), createElementBlock("div", {
|
|
2758
2757
|
key: file.name,
|
|
@@ -2771,13 +2770,13 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
2771
2770
|
};
|
|
2772
2771
|
}
|
|
2773
2772
|
});
|
|
2774
|
-
const _hoisted_1$
|
|
2773
|
+
const _hoisted_1$4 = {
|
|
2775
2774
|
viewBox: "0 0 24 24",
|
|
2776
2775
|
width: "1.2em",
|
|
2777
2776
|
height: "1.2em"
|
|
2778
2777
|
};
|
|
2779
2778
|
function render$1(_ctx, _cache) {
|
|
2780
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2779
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$4, _cache[0] || (_cache[0] = [
|
|
2781
2780
|
createBaseVNode("path", {
|
|
2782
2781
|
fill: "currentColor",
|
|
2783
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"
|
|
@@ -2785,13 +2784,13 @@ function render$1(_ctx, _cache) {
|
|
|
2785
2784
|
]));
|
|
2786
2785
|
}
|
|
2787
2786
|
const IconPaperclip = { name: "mdi-paperclip", render: render$1 };
|
|
2788
|
-
const _hoisted_1$
|
|
2787
|
+
const _hoisted_1$3 = {
|
|
2789
2788
|
viewBox: "0 0 24 24",
|
|
2790
2789
|
width: "1.2em",
|
|
2791
2790
|
height: "1.2em"
|
|
2792
2791
|
};
|
|
2793
2792
|
function render(_ctx, _cache) {
|
|
2794
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2793
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$3, _cache[0] || (_cache[0] = [
|
|
2795
2794
|
createBaseVNode("path", {
|
|
2796
2795
|
fill: "currentColor",
|
|
2797
2796
|
d: "m2 21l21-9L2 3v7l15 2l-15 2z"
|
|
@@ -2832,8 +2831,8 @@ function createEventBus() {
|
|
|
2832
2831
|
};
|
|
2833
2832
|
}
|
|
2834
2833
|
const chatEventBus = createEventBus();
|
|
2835
|
-
const _hoisted_1$
|
|
2836
|
-
const _hoisted_2$
|
|
2834
|
+
const _hoisted_1$2 = { class: "chat-inputs" };
|
|
2835
|
+
const _hoisted_2$1 = {
|
|
2837
2836
|
key: 0,
|
|
2838
2837
|
class: "chat-input-left-panel"
|
|
2839
2838
|
};
|
|
@@ -2845,7 +2844,7 @@ const _hoisted_7 = {
|
|
|
2845
2844
|
key: 0,
|
|
2846
2845
|
class: "chat-files"
|
|
2847
2846
|
};
|
|
2848
|
-
const _sfc_main$
|
|
2847
|
+
const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
2849
2848
|
__name: "Input",
|
|
2850
2849
|
props: {
|
|
2851
2850
|
placeholder: { default: "inputPlaceholder" }
|
|
@@ -2907,7 +2906,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2907
2906
|
resizeObserver.value = new ResizeObserver((entries) => {
|
|
2908
2907
|
for (const entry of entries) {
|
|
2909
2908
|
if (entry.target === chatTextArea.value) {
|
|
2910
|
-
|
|
2909
|
+
adjustTextAreaHeight();
|
|
2911
2910
|
}
|
|
2912
2911
|
}
|
|
2913
2912
|
});
|
|
@@ -2955,7 +2954,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2955
2954
|
return;
|
|
2956
2955
|
}
|
|
2957
2956
|
await onSubmit(event);
|
|
2958
|
-
|
|
2957
|
+
adjustTextAreaHeight();
|
|
2959
2958
|
}
|
|
2960
2959
|
function onFileRemove(file) {
|
|
2961
2960
|
if (!files.value) return;
|
|
@@ -2980,8 +2979,9 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2980
2979
|
if (isFileUploadDisabled.value) return;
|
|
2981
2980
|
openFileDialog({ accept: unref(allowedFileTypes) });
|
|
2982
2981
|
}
|
|
2983
|
-
function
|
|
2984
|
-
const textarea =
|
|
2982
|
+
function adjustTextAreaHeight() {
|
|
2983
|
+
const textarea = chatTextArea.value;
|
|
2984
|
+
if (!textarea) return;
|
|
2985
2985
|
textarea.style.height = "var(--chat--textarea--height)";
|
|
2986
2986
|
const newHeight = Math.min(textarea.scrollHeight, 480);
|
|
2987
2987
|
textarea.style.height = `${newHeight}px`;
|
|
@@ -2992,8 +2992,8 @@ const _sfc_main$f = /* @__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$2, [
|
|
2996
|
+
_ctx.$slots.leftPanel ? (openBlock(), createElementBlock("div", _hoisted_2$1, [
|
|
2997
2997
|
renderSlot(_ctx.$slots, "leftPanel", {}, void 0, true)
|
|
2998
2998
|
])) : createCommentVNode("", true),
|
|
2999
2999
|
withDirectives(createBaseVNode("textarea", {
|
|
@@ -3004,9 +3004,9 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
3004
3004
|
disabled: isInputDisabled.value,
|
|
3005
3005
|
placeholder: unref(t)(props.placeholder),
|
|
3006
3006
|
onKeydown: withKeys(onSubmitKeydown, ["enter"]),
|
|
3007
|
-
onInput:
|
|
3008
|
-
onMousedown:
|
|
3009
|
-
onFocus:
|
|
3007
|
+
onInput: adjustTextAreaHeight,
|
|
3008
|
+
onMousedown: adjustTextAreaHeight,
|
|
3009
|
+
onFocus: adjustTextAreaHeight
|
|
3010
3010
|
}, null, 40, _hoisted_3$1), [
|
|
3011
3011
|
[vModelText, input.value]
|
|
3012
3012
|
]),
|
|
@@ -3050,8 +3050,8 @@ const _sfc_main$f = /* @__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$e, [["__scopeId", "data-v-f0e5731e"]]);
|
|
3054
|
+
const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
3055
3055
|
__name: "MessageTyping",
|
|
3056
3056
|
props: {
|
|
3057
3057
|
animation: { default: "bouncing" }
|
|
@@ -3061,8 +3061,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
|
3061
3061
|
const message = {
|
|
3062
3062
|
id: "typing",
|
|
3063
3063
|
text: "",
|
|
3064
|
-
sender: "bot"
|
|
3065
|
-
createdAt: ""
|
|
3064
|
+
sender: "bot"
|
|
3066
3065
|
};
|
|
3067
3066
|
const messageContainer = ref();
|
|
3068
3067
|
const classes = computed(() => {
|
|
@@ -3076,7 +3075,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
|
3076
3075
|
messageContainer.value?.scrollToView();
|
|
3077
3076
|
});
|
|
3078
3077
|
return (_ctx, _cache) => {
|
|
3079
|
-
return openBlock(), createBlock(unref(_sfc_main$
|
|
3078
|
+
return openBlock(), createBlock(unref(_sfc_main$f), {
|
|
3080
3079
|
ref_key: "messageContainer",
|
|
3081
3080
|
ref: messageContainer,
|
|
3082
3081
|
class: normalizeClass(classes.value),
|
|
@@ -3095,11 +3094,11 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
|
3095
3094
|
};
|
|
3096
3095
|
}
|
|
3097
3096
|
});
|
|
3098
|
-
const _hoisted_1$
|
|
3097
|
+
const _hoisted_1$1 = {
|
|
3099
3098
|
key: 0,
|
|
3100
3099
|
class: "empty-container"
|
|
3101
3100
|
};
|
|
3102
|
-
const _hoisted_2
|
|
3101
|
+
const _hoisted_2 = {
|
|
3103
3102
|
class: "empty",
|
|
3104
3103
|
"data-test-id": "chat-messages-empty"
|
|
3105
3104
|
};
|
|
@@ -3107,7 +3106,7 @@ const _hoisted_3 = {
|
|
|
3107
3106
|
key: 1,
|
|
3108
3107
|
class: "chat-messages-list"
|
|
3109
3108
|
};
|
|
3110
|
-
const _sfc_main$
|
|
3109
|
+
const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
3111
3110
|
__name: "MessagesList",
|
|
3112
3111
|
props: {
|
|
3113
3112
|
messages: {},
|
|
@@ -3129,8 +3128,8 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
3129
3128
|
return (_ctx, _cache) => {
|
|
3130
3129
|
const _component_N8nIcon = resolveComponent("N8nIcon");
|
|
3131
3130
|
const _component_N8nText = resolveComponent("N8nText");
|
|
3132
|
-
return _ctx.emptyText && unref(initialMessages).length === 0 && _ctx.messages.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
3133
|
-
createBaseVNode("div", _hoisted_2
|
|
3131
|
+
return _ctx.emptyText && unref(initialMessages).length === 0 && _ctx.messages.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_1$1, [
|
|
3132
|
+
createBaseVNode("div", _hoisted_2, [
|
|
3134
3133
|
createVNode(_component_N8nIcon, {
|
|
3135
3134
|
icon: "comment",
|
|
3136
3135
|
size: "large",
|
|
@@ -3149,13 +3148,13 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
3149
3148
|
])
|
|
3150
3149
|
])) : (openBlock(), createElementBlock("div", _hoisted_3, [
|
|
3151
3150
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(initialMessages), (initialMessage) => {
|
|
3152
|
-
return openBlock(), createBlock(_sfc_main$
|
|
3151
|
+
return openBlock(), createBlock(_sfc_main$f, {
|
|
3153
3152
|
key: initialMessage.id,
|
|
3154
3153
|
message: initialMessage
|
|
3155
3154
|
}, null, 8, ["message"]);
|
|
3156
3155
|
}), 128)),
|
|
3157
3156
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.messages, (message) => {
|
|
3158
|
-
return openBlock(), createBlock(_sfc_main$
|
|
3157
|
+
return openBlock(), createBlock(_sfc_main$f, {
|
|
3159
3158
|
key: message.id,
|
|
3160
3159
|
ref_for: true,
|
|
3161
3160
|
ref_key: "messageComponents",
|
|
@@ -3168,12 +3167,12 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
3168
3167
|
_: 2
|
|
3169
3168
|
}, 1032, ["message"]);
|
|
3170
3169
|
}), 128)),
|
|
3171
|
-
unref(waitingForResponse) ? (openBlock(), createBlock(_sfc_main$
|
|
3170
|
+
unref(waitingForResponse) ? (openBlock(), createBlock(_sfc_main$d, { key: 0 })) : createCommentVNode("", true)
|
|
3172
3171
|
]));
|
|
3173
3172
|
};
|
|
3174
3173
|
}
|
|
3175
3174
|
});
|
|
3176
|
-
const _sfc_main$
|
|
3175
|
+
const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
3177
3176
|
__name: "MessageOptionTooltip",
|
|
3178
3177
|
props: {
|
|
3179
3178
|
placement: {
|
|
@@ -3208,17 +3207,17 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
3208
3207
|
};
|
|
3209
3208
|
}
|
|
3210
3209
|
});
|
|
3211
|
-
const container$
|
|
3212
|
-
const icon$
|
|
3213
|
-
const style0$
|
|
3214
|
-
container: container$
|
|
3215
|
-
icon: icon$
|
|
3210
|
+
const container$8 = "_container_pqtqf_123";
|
|
3211
|
+
const icon$3 = "_icon_pqtqf_129";
|
|
3212
|
+
const style0$a = {
|
|
3213
|
+
container: container$8,
|
|
3214
|
+
icon: icon$3
|
|
3216
3215
|
};
|
|
3217
|
-
const cssModules$
|
|
3218
|
-
"$style": style0$
|
|
3216
|
+
const cssModules$a = {
|
|
3217
|
+
"$style": style0$a
|
|
3219
3218
|
};
|
|
3220
|
-
const MessageOptionTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3221
|
-
const _sfc_main$
|
|
3219
|
+
const MessageOptionTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__cssModules", cssModules$a]]);
|
|
3220
|
+
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
3222
3221
|
__name: "MessageOptionAction",
|
|
3223
3222
|
props: {
|
|
3224
3223
|
label: {
|
|
@@ -3259,17 +3258,17 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
3259
3258
|
};
|
|
3260
3259
|
}
|
|
3261
3260
|
});
|
|
3262
|
-
const container$
|
|
3263
|
-
const icon$
|
|
3264
|
-
const style0$
|
|
3265
|
-
container: container$
|
|
3266
|
-
icon: icon$
|
|
3261
|
+
const container$7 = "_container_u1r1u_123";
|
|
3262
|
+
const icon$2 = "_icon_u1r1u_129";
|
|
3263
|
+
const style0$9 = {
|
|
3264
|
+
container: container$7,
|
|
3265
|
+
icon: icon$2
|
|
3267
3266
|
};
|
|
3268
|
-
const cssModules$
|
|
3269
|
-
"$style": style0$
|
|
3267
|
+
const cssModules$9 = {
|
|
3268
|
+
"$style": style0$9
|
|
3270
3269
|
};
|
|
3271
|
-
const MessageOptionAction = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3272
|
-
const _sfc_main$
|
|
3270
|
+
const MessageOptionAction = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__cssModules", cssModules$9]]);
|
|
3271
|
+
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
3273
3272
|
__name: "PanelHeader",
|
|
3274
3273
|
props: {
|
|
3275
3274
|
title: {}
|
|
@@ -3288,9 +3287,11 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
3288
3287
|
size: "small"
|
|
3289
3288
|
}, {
|
|
3290
3289
|
default: withCtx(() => [
|
|
3291
|
-
|
|
3290
|
+
renderSlot(_ctx.$slots, "title", {}, () => [
|
|
3291
|
+
createTextVNode(toDisplayString(_ctx.title), 1)
|
|
3292
|
+
])
|
|
3292
3293
|
]),
|
|
3293
|
-
_:
|
|
3294
|
+
_: 3
|
|
3294
3295
|
}, 8, ["class"]),
|
|
3295
3296
|
createBaseVNode("div", {
|
|
3296
3297
|
class: normalizeClass(_ctx.$style.actions)
|
|
@@ -3301,20 +3302,20 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
3301
3302
|
};
|
|
3302
3303
|
}
|
|
3303
3304
|
});
|
|
3304
|
-
const container$
|
|
3305
|
-
const title = "
|
|
3306
|
-
const actions$1 = "
|
|
3307
|
-
const style0$
|
|
3308
|
-
container: container$
|
|
3309
|
-
title,
|
|
3305
|
+
const container$6 = "_container_w45gq_123";
|
|
3306
|
+
const title$2 = "_title_w45gq_144";
|
|
3307
|
+
const actions$1 = "_actions_w45gq_152";
|
|
3308
|
+
const style0$8 = {
|
|
3309
|
+
container: container$6,
|
|
3310
|
+
title: title$2,
|
|
3310
3311
|
actions: actions$1
|
|
3311
3312
|
};
|
|
3312
|
-
const cssModules$
|
|
3313
|
-
"$style": style0$
|
|
3313
|
+
const cssModules$8 = {
|
|
3314
|
+
"$style": style0$8
|
|
3314
3315
|
};
|
|
3315
|
-
const PanelHeader = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3316
|
-
const _hoisted_1
|
|
3317
|
-
const _sfc_main$
|
|
3316
|
+
const PanelHeader = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__cssModules", cssModules$8]]);
|
|
3317
|
+
const _hoisted_1 = ["onClick"];
|
|
3318
|
+
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
3318
3319
|
__name: "ChatMessagesPanel",
|
|
3319
3320
|
props: {
|
|
3320
3321
|
pastChatMessages: {},
|
|
@@ -3322,6 +3323,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
3322
3323
|
sessionId: {},
|
|
3323
3324
|
showCloseButton: { type: Boolean },
|
|
3324
3325
|
isOpen: { type: Boolean, default: true },
|
|
3326
|
+
isReadOnly: { type: Boolean, default: false },
|
|
3325
3327
|
isNewLogsEnabled: { type: Boolean, default: false }
|
|
3326
3328
|
},
|
|
3327
3329
|
emits: ["displayExecution", "sendMessage", "refreshSession", "close", "clickHeader"],
|
|
@@ -3406,7 +3408,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
3406
3408
|
onClick: _cache[0] || (_cache[0] = ($event) => emit("clickHeader"))
|
|
3407
3409
|
}, {
|
|
3408
3410
|
actions: withCtx(() => [
|
|
3409
|
-
unref(clipboard).isSupported.value ? (openBlock(), createBlock(unref(N8nTooltip), { key: 0 }, {
|
|
3411
|
+
unref(clipboard).isSupported.value && !_ctx.isReadOnly ? (openBlock(), createBlock(unref(N8nTooltip), { key: 0 }, {
|
|
3410
3412
|
content: withCtx(() => [
|
|
3411
3413
|
createTextVNode(toDisplayString(_ctx.sessionId) + " ", 1),
|
|
3412
3414
|
_cache[5] || (_cache[5] = createBaseVNode("br", null, null, -1)),
|
|
@@ -3417,23 +3419,24 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
3417
3419
|
"data-test-id": "chat-session-id",
|
|
3418
3420
|
type: "secondary",
|
|
3419
3421
|
size: "mini",
|
|
3422
|
+
class: normalizeClass(_ctx.$style.newHeaderButton),
|
|
3420
3423
|
onClick: withModifiers(copySessionId, ["stop"])
|
|
3421
3424
|
}, {
|
|
3422
3425
|
default: withCtx(() => [
|
|
3423
3426
|
createTextVNode(toDisplayString(sessionIdText.value), 1)
|
|
3424
3427
|
]),
|
|
3425
3428
|
_: 1
|
|
3426
|
-
})
|
|
3429
|
+
}, 8, ["class"])
|
|
3427
3430
|
]),
|
|
3428
3431
|
_: 1
|
|
3429
3432
|
})) : createCommentVNode("", true),
|
|
3430
|
-
_ctx.messages.length > 0 ? (openBlock(), createBlock(unref(N8nTooltip), {
|
|
3433
|
+
_ctx.messages.length > 0 && !_ctx.isReadOnly ? (openBlock(), createBlock(unref(N8nTooltip), {
|
|
3431
3434
|
key: 1,
|
|
3432
3435
|
content: unref(locale).baseText("chat.window.session.resetSession")
|
|
3433
3436
|
}, {
|
|
3434
3437
|
default: withCtx(() => [
|
|
3435
|
-
createVNode(unref(_sfc_main$
|
|
3436
|
-
class: normalizeClass(_ctx.$style.
|
|
3438
|
+
createVNode(unref(_sfc_main$h), {
|
|
3439
|
+
class: normalizeClass(_ctx.$style.newHeaderButton),
|
|
3437
3440
|
"data-test-id": "refresh-session-button",
|
|
3438
3441
|
outline: "",
|
|
3439
3442
|
type: "secondary",
|
|
@@ -3472,7 +3475,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
3472
3475
|
]),
|
|
3473
3476
|
_: 1
|
|
3474
3477
|
}),
|
|
3475
|
-
createVNode(unref(_sfc_main$
|
|
3478
|
+
createVNode(unref(_sfc_main$h), {
|
|
3476
3479
|
class: normalizeClass(_ctx.$style.headerButton),
|
|
3477
3480
|
"data-test-id": "refresh-session-button",
|
|
3478
3481
|
outline: "",
|
|
@@ -3482,7 +3485,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
3482
3485
|
title: unref(locale).baseText("chat.window.session.reset"),
|
|
3483
3486
|
onClick: onRefreshSession
|
|
3484
3487
|
}, null, 8, ["class", "title"]),
|
|
3485
|
-
_ctx.showCloseButton ? (openBlock(), createBlock(unref(_sfc_main$
|
|
3488
|
+
_ctx.showCloseButton ? (openBlock(), createBlock(unref(_sfc_main$h), {
|
|
3486
3489
|
key: 0,
|
|
3487
3490
|
class: normalizeClass(_ctx.$style.headerButton),
|
|
3488
3491
|
outline: "",
|
|
@@ -3497,13 +3500,13 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
3497
3500
|
key: 2,
|
|
3498
3501
|
class: normalizeClass(_ctx.$style.chatBody)
|
|
3499
3502
|
}, [
|
|
3500
|
-
createVNode(_sfc_main$
|
|
3503
|
+
createVNode(_sfc_main$c, {
|
|
3501
3504
|
messages: _ctx.messages,
|
|
3502
3505
|
class: normalizeClass(_ctx.$style.messages),
|
|
3503
3506
|
"empty-text": _ctx.isNewLogsEnabled ? unref(locale).baseText("chat.window.chat.emptyChatMessage.v2") : void 0
|
|
3504
3507
|
}, {
|
|
3505
3508
|
beforeMessage: withCtx(({ message }) => [
|
|
3506
|
-
message.sender === "bot" && !message.id.includes("preload") ? (openBlock(), createBlock(MessageOptionTooltip, {
|
|
3509
|
+
!_ctx.isReadOnly && message.sender === "bot" && !message.id.includes("preload") ? (openBlock(), createBlock(MessageOptionTooltip, {
|
|
3507
3510
|
key: 0,
|
|
3508
3511
|
placement: "right",
|
|
3509
3512
|
"data-test-id": "execution-id-tooltip"
|
|
@@ -3513,11 +3516,11 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
3513
3516
|
createBaseVNode("a", {
|
|
3514
3517
|
href: "#",
|
|
3515
3518
|
onClick: ($event) => emit("displayExecution", message.id)
|
|
3516
|
-
}, toDisplayString(message.id), 9, _hoisted_1
|
|
3519
|
+
}, toDisplayString(message.id), 9, _hoisted_1)
|
|
3517
3520
|
]),
|
|
3518
3521
|
_: 2
|
|
3519
3522
|
}, 1024)) : createCommentVNode("", true),
|
|
3520
|
-
isTextMessage(message) && message.sender === "user" ? (openBlock(), createBlock(MessageOptionAction, {
|
|
3523
|
+
!_ctx.isReadOnly && isTextMessage(message) && message.sender === "user" ? (openBlock(), createBlock(MessageOptionAction, {
|
|
3521
3524
|
key: 1,
|
|
3522
3525
|
"data-test-id": "repost-message-button",
|
|
3523
3526
|
icon: "redo",
|
|
@@ -3525,7 +3528,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
3525
3528
|
placement: "left",
|
|
3526
3529
|
onClickOnce: ($event) => repostMessage(message)
|
|
3527
3530
|
}, null, 8, ["label", "onClickOnce"])) : createCommentVNode("", true),
|
|
3528
|
-
isTextMessage(message) && message.sender === "user" ? (openBlock(), createBlock(MessageOptionAction, {
|
|
3531
|
+
!_ctx.isReadOnly && isTextMessage(message) && message.sender === "user" ? (openBlock(), createBlock(MessageOptionAction, {
|
|
3529
3532
|
key: 2,
|
|
3530
3533
|
"data-test-id": "reuse-message-button",
|
|
3531
3534
|
icon: "copy",
|
|
@@ -3578,94 +3581,37 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
3578
3581
|
};
|
|
3579
3582
|
}
|
|
3580
3583
|
});
|
|
3581
|
-
const chat$
|
|
3582
|
-
const chatHeader = "
|
|
3583
|
-
const chatTitle = "
|
|
3584
|
-
const session = "
|
|
3585
|
-
const sessionId = "
|
|
3586
|
-
const copyable = "
|
|
3587
|
-
const headerButton = "
|
|
3588
|
-
const
|
|
3589
|
-
const
|
|
3590
|
-
const
|
|
3591
|
-
const
|
|
3592
|
-
|
|
3584
|
+
const chat$1 = "_chat_1r0jy_123";
|
|
3585
|
+
const chatHeader = "_chatHeader_1r0jy_148";
|
|
3586
|
+
const chatTitle = "_chatTitle_1r0jy_161";
|
|
3587
|
+
const session = "_session_1r0jy_165";
|
|
3588
|
+
const sessionId = "_sessionId_1r0jy_173";
|
|
3589
|
+
const copyable = "_copyable_1r0jy_179";
|
|
3590
|
+
const headerButton = "_headerButton_1r0jy_183";
|
|
3591
|
+
const newHeaderButton = "_newHeaderButton_1r0jy_188";
|
|
3592
|
+
const chatBody = "_chatBody_1r0jy_193";
|
|
3593
|
+
const messages = "_messages_1r0jy_202";
|
|
3594
|
+
const messagesInput = "_messagesInput_1r0jy_213";
|
|
3595
|
+
const style0$7 = {
|
|
3596
|
+
chat: chat$1,
|
|
3593
3597
|
chatHeader,
|
|
3594
3598
|
chatTitle,
|
|
3595
3599
|
session,
|
|
3596
3600
|
sessionId,
|
|
3597
3601
|
copyable,
|
|
3598
3602
|
headerButton,
|
|
3603
|
+
newHeaderButton,
|
|
3599
3604
|
chatBody,
|
|
3600
3605
|
messages,
|
|
3601
3606
|
messagesInput
|
|
3602
3607
|
};
|
|
3603
|
-
const cssModules$
|
|
3604
|
-
"$style": style0$
|
|
3605
|
-
};
|
|
3606
|
-
const ChatMessagesPanel = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__cssModules", cssModules$6]]);
|
|
3607
|
-
const _hoisted_1 = { class: "meta" };
|
|
3608
|
-
const _hoisted_2 = { key: 0 };
|
|
3609
|
-
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
3610
|
-
__name: "ChatLogsPanel",
|
|
3611
|
-
props: {
|
|
3612
|
-
node: {},
|
|
3613
|
-
slim: { type: Boolean },
|
|
3614
|
-
workflow: {}
|
|
3615
|
-
},
|
|
3616
|
-
setup(__props) {
|
|
3617
|
-
const locale = useI18n$1();
|
|
3618
|
-
return (_ctx, _cache) => {
|
|
3619
|
-
return openBlock(), createElementBlock("div", {
|
|
3620
|
-
class: normalizeClass(_ctx.$style.logsWrapper),
|
|
3621
|
-
"data-test-id": "lm-chat-logs"
|
|
3622
|
-
}, [
|
|
3623
|
-
createBaseVNode("header", {
|
|
3624
|
-
class: normalizeClass(_ctx.$style.logsHeader)
|
|
3625
|
-
}, [
|
|
3626
|
-
createBaseVNode("div", _hoisted_1, [
|
|
3627
|
-
createTextVNode(toDisplayString(unref(locale).baseText("chat.window.logs")) + " ", 1),
|
|
3628
|
-
_ctx.node ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(unref(locale).baseText("chat.window.logsFromNode", { interpolate: { nodeName: _ctx.node.name } })), 1)) : createCommentVNode("", true)
|
|
3629
|
-
]),
|
|
3630
|
-
createBaseVNode("div", {
|
|
3631
|
-
class: normalizeClass(_ctx.$style.actions)
|
|
3632
|
-
}, [
|
|
3633
|
-
renderSlot(_ctx.$slots, "actions")
|
|
3634
|
-
], 2)
|
|
3635
|
-
], 2),
|
|
3636
|
-
createBaseVNode("div", {
|
|
3637
|
-
class: normalizeClass(_ctx.$style.logs)
|
|
3638
|
-
}, [
|
|
3639
|
-
_ctx.node ? (openBlock(), createBlock(RunDataAi, {
|
|
3640
|
-
key: 0,
|
|
3641
|
-
class: normalizeClass(_ctx.$style.runData),
|
|
3642
|
-
node: _ctx.node,
|
|
3643
|
-
workflow: _ctx.workflow,
|
|
3644
|
-
slim: _ctx.slim
|
|
3645
|
-
}, null, 8, ["class", "node", "workflow", "slim"])) : createCommentVNode("", true)
|
|
3646
|
-
], 2)
|
|
3647
|
-
], 2);
|
|
3648
|
-
};
|
|
3649
|
-
}
|
|
3650
|
-
});
|
|
3651
|
-
const logsHeader = "_logsHeader_1n9n2_123";
|
|
3652
|
-
const logsWrapper = "_logsWrapper_1n9n2_140";
|
|
3653
|
-
const logsTitle = "_logsTitle_1n9n2_149";
|
|
3654
|
-
const logs$1 = "_logs_1n9n2_123";
|
|
3655
|
-
const actions = "_actions_1n9n2_159";
|
|
3656
|
-
const style0$5 = {
|
|
3657
|
-
logsHeader,
|
|
3658
|
-
logsWrapper,
|
|
3659
|
-
logsTitle,
|
|
3660
|
-
logs: logs$1,
|
|
3661
|
-
actions
|
|
3662
|
-
};
|
|
3663
|
-
const cssModules$5 = {
|
|
3664
|
-
"$style": style0$5
|
|
3608
|
+
const cssModules$7 = {
|
|
3609
|
+
"$style": style0$7
|
|
3665
3610
|
};
|
|
3666
|
-
const
|
|
3611
|
+
const ChatMessagesPanel = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__cssModules", cssModules$7]]);
|
|
3667
3612
|
const LOCAL_STORAGE_PANEL_HEIGHT = "N8N_CANVAS_CHAT_HEIGHT";
|
|
3668
3613
|
const LOCAL_STORAGE_PANEL_WIDTH = "N8N_CANVAS_CHAT_WIDTH";
|
|
3614
|
+
const LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH = "N8N_LOGS_OVERVIEW_PANEL_WIDTH";
|
|
3669
3615
|
const MAX_WIDTH_PERCENTAGE = 0.8;
|
|
3670
3616
|
const MIN_WIDTH_PERCENTAGE = 0.3;
|
|
3671
3617
|
const MIN_HEIGHT_PERCENTAGE = 0.3;
|
|
@@ -3767,7 +3713,9 @@ function usePiPWindow({
|
|
|
3767
3713
|
}) {
|
|
3768
3714
|
const pipWindow = ref();
|
|
3769
3715
|
const isUnmounting = ref(false);
|
|
3770
|
-
const canPopOut = computed(
|
|
3716
|
+
const canPopOut = computed(
|
|
3717
|
+
() => !!window.documentPictureInPicture && window.parent === window
|
|
3718
|
+
);
|
|
3771
3719
|
const isPoppedOut = computed(() => !!pipWindow.value);
|
|
3772
3720
|
const tooltipContainer = computed(
|
|
3773
3721
|
() => isPoppedOut.value ? content2.value ?? void 0 : void 0
|
|
@@ -3817,6 +3765,85 @@ function usePiPWindow({
|
|
|
3817
3765
|
});
|
|
3818
3766
|
return { canPopOut, isPoppedOut, pipWindow };
|
|
3819
3767
|
}
|
|
3768
|
+
function isChatNode(node) {
|
|
3769
|
+
return [CHAT_TRIGGER_NODE_TYPE, MANUAL_CHAT_TRIGGER_NODE_TYPE].includes(node.type);
|
|
3770
|
+
}
|
|
3771
|
+
function getInputKey(node) {
|
|
3772
|
+
if (node.type === MANUAL_CHAT_TRIGGER_NODE_TYPE && node.typeVersion < 1.1) {
|
|
3773
|
+
return "input";
|
|
3774
|
+
}
|
|
3775
|
+
if (node.type === CHAT_TRIGGER_NODE_TYPE) {
|
|
3776
|
+
return "chatInput";
|
|
3777
|
+
}
|
|
3778
|
+
return "chatInput";
|
|
3779
|
+
}
|
|
3780
|
+
function extractChatInput(workflow, resultData) {
|
|
3781
|
+
const chatTrigger = workflow.nodes.find(isChatNode);
|
|
3782
|
+
if (chatTrigger === void 0) {
|
|
3783
|
+
return void 0;
|
|
3784
|
+
}
|
|
3785
|
+
const inputKey = getInputKey(chatTrigger);
|
|
3786
|
+
const runData = (resultData.runData[chatTrigger.name] ?? [])[0];
|
|
3787
|
+
const message = runData?.data?.[NodeConnectionTypes.Main]?.[0]?.[0]?.json?.[inputKey];
|
|
3788
|
+
if (runData === void 0 || typeof message !== "string") {
|
|
3789
|
+
return void 0;
|
|
3790
|
+
}
|
|
3791
|
+
return {
|
|
3792
|
+
text: message,
|
|
3793
|
+
sender: "user",
|
|
3794
|
+
id: v4()
|
|
3795
|
+
};
|
|
3796
|
+
}
|
|
3797
|
+
function extractBotResponse(resultData, executionId, emptyText2) {
|
|
3798
|
+
const lastNodeExecuted = resultData.lastNodeExecuted;
|
|
3799
|
+
if (!lastNodeExecuted) return void 0;
|
|
3800
|
+
const nodeResponseDataArray = get(resultData.runData, lastNodeExecuted) ?? [];
|
|
3801
|
+
const nodeResponseData = nodeResponseDataArray[nodeResponseDataArray.length - 1];
|
|
3802
|
+
let responseMessage;
|
|
3803
|
+
if (get(nodeResponseData, "error")) {
|
|
3804
|
+
responseMessage = "[ERROR: " + get(nodeResponseData, "error.message") + "]";
|
|
3805
|
+
} else {
|
|
3806
|
+
const responseData = get(nodeResponseData, "data.main[0][0].json");
|
|
3807
|
+
const text = extractResponseText(responseData) ?? emptyText2;
|
|
3808
|
+
if (!text) {
|
|
3809
|
+
return void 0;
|
|
3810
|
+
}
|
|
3811
|
+
responseMessage = text;
|
|
3812
|
+
}
|
|
3813
|
+
return {
|
|
3814
|
+
text: responseMessage,
|
|
3815
|
+
sender: "bot",
|
|
3816
|
+
id: executionId ?? v4()
|
|
3817
|
+
};
|
|
3818
|
+
}
|
|
3819
|
+
function extractResponseText(responseData) {
|
|
3820
|
+
if (!responseData || isEmpty(responseData)) {
|
|
3821
|
+
return void 0;
|
|
3822
|
+
}
|
|
3823
|
+
const paths = ["output", "text", "response.text"];
|
|
3824
|
+
const matchedPath = paths.find((path) => get(responseData, path));
|
|
3825
|
+
if (!matchedPath) return JSON.stringify(responseData, null, 2);
|
|
3826
|
+
const matchedOutput = get(responseData, matchedPath);
|
|
3827
|
+
if (typeof matchedOutput === "object") {
|
|
3828
|
+
return "```json\n" + JSON.stringify(matchedOutput, null, 2) + "\n```";
|
|
3829
|
+
}
|
|
3830
|
+
return matchedOutput?.toString() ?? "";
|
|
3831
|
+
}
|
|
3832
|
+
function restoreChatHistory(workflowExecutionData, emptyText2) {
|
|
3833
|
+
if (!workflowExecutionData?.data) {
|
|
3834
|
+
return [];
|
|
3835
|
+
}
|
|
3836
|
+
const userMessage = extractChatInput(
|
|
3837
|
+
workflowExecutionData.workflowData,
|
|
3838
|
+
workflowExecutionData.data.resultData
|
|
3839
|
+
);
|
|
3840
|
+
const botMessage = extractBotResponse(
|
|
3841
|
+
workflowExecutionData.data.resultData,
|
|
3842
|
+
workflowExecutionData.id,
|
|
3843
|
+
emptyText2
|
|
3844
|
+
);
|
|
3845
|
+
return [...userMessage ? [userMessage] : [], ...botMessage ? [botMessage] : []];
|
|
3846
|
+
}
|
|
3820
3847
|
function useChatMessaging({
|
|
3821
3848
|
chatTrigger,
|
|
3822
3849
|
messages: messages2,
|
|
@@ -3874,13 +3901,7 @@ function useChatMessaging({
|
|
|
3874
3901
|
showError(new Error("Chat Trigger Node could not be found!"), "Trigger Node not found");
|
|
3875
3902
|
return;
|
|
3876
3903
|
}
|
|
3877
|
-
|
|
3878
|
-
if (triggerNode.type === MANUAL_CHAT_TRIGGER_NODE_TYPE && triggerNode.typeVersion < 1.1) {
|
|
3879
|
-
inputKey = "input";
|
|
3880
|
-
}
|
|
3881
|
-
if (triggerNode.type === CHAT_TRIGGER_NODE_TYPE) {
|
|
3882
|
-
inputKey = "chatInput";
|
|
3883
|
-
}
|
|
3904
|
+
const inputKey = getInputKey(triggerNode);
|
|
3884
3905
|
const inputPayload = {
|
|
3885
3906
|
json: {
|
|
3886
3907
|
sessionId: sessionId2.value,
|
|
@@ -3915,40 +3936,14 @@ function useChatMessaging({
|
|
|
3915
3936
|
if (!response?.executionId) {
|
|
3916
3937
|
return;
|
|
3917
3938
|
}
|
|
3918
|
-
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
|
|
3922
|
-
|
|
3923
|
-
|
|
3924
|
-
|
|
3925
|
-
let responseMessage;
|
|
3926
|
-
if (get(nodeResponseData, "error")) {
|
|
3927
|
-
responseMessage = "[ERROR: " + get(nodeResponseData, "error.message") + "]";
|
|
3928
|
-
} else {
|
|
3929
|
-
const responseData = get(nodeResponseData, "data.main[0][0].json");
|
|
3930
|
-
responseMessage = extractResponseMessage(responseData);
|
|
3931
|
-
}
|
|
3932
|
-
isLoading.value = false;
|
|
3933
|
-
messages2.value.push({
|
|
3934
|
-
text: responseMessage,
|
|
3935
|
-
sender: "bot",
|
|
3936
|
-
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
3937
|
-
id: executionId ?? v4()
|
|
3938
|
-
});
|
|
3939
|
-
}
|
|
3940
|
-
function extractResponseMessage(responseData) {
|
|
3941
|
-
if (!responseData || isEmpty(responseData)) {
|
|
3942
|
-
return locale.baseText("chat.window.chat.response.empty");
|
|
3943
|
-
}
|
|
3944
|
-
const paths = ["output", "text", "response.text"];
|
|
3945
|
-
const matchedPath = paths.find((path) => get(responseData, path));
|
|
3946
|
-
if (!matchedPath) return JSON.stringify(responseData, null, 2);
|
|
3947
|
-
const matchedOutput = get(responseData, matchedPath);
|
|
3948
|
-
if (typeof matchedOutput === "object") {
|
|
3949
|
-
return "```json\n" + JSON.stringify(matchedOutput, null, 2) + "\n```";
|
|
3939
|
+
const chatMessage = executionResultData.value ? extractBotResponse(
|
|
3940
|
+
executionResultData.value,
|
|
3941
|
+
response.executionId,
|
|
3942
|
+
locale.baseText("chat.window.chat.response.empty")
|
|
3943
|
+
) : void 0;
|
|
3944
|
+
if (chatMessage !== void 0) {
|
|
3945
|
+
messages2.value.push(chatMessage);
|
|
3950
3946
|
}
|
|
3951
|
-
return matchedOutput?.toString() ?? "";
|
|
3952
3947
|
}
|
|
3953
3948
|
async function sendMessage(message, files) {
|
|
3954
3949
|
previousMessageIndex.value = 0;
|
|
@@ -3975,7 +3970,6 @@ function useChatMessaging({
|
|
|
3975
3970
|
const newMessage = {
|
|
3976
3971
|
text: message,
|
|
3977
3972
|
sender: "user",
|
|
3978
|
-
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
3979
3973
|
sessionId: sessionId2.value,
|
|
3980
3974
|
id: v4(),
|
|
3981
3975
|
files
|
|
@@ -3986,8 +3980,7 @@ function useChatMessaging({
|
|
|
3986
3980
|
return {
|
|
3987
3981
|
previousMessageIndex,
|
|
3988
3982
|
isLoading: computed(() => isLoading.value),
|
|
3989
|
-
sendMessage
|
|
3990
|
-
extractResponseMessage
|
|
3983
|
+
sendMessage
|
|
3991
3984
|
};
|
|
3992
3985
|
}
|
|
3993
3986
|
function useChatTrigger({
|
|
@@ -4008,9 +4001,7 @@ function useChatTrigger({
|
|
|
4008
4001
|
return chatTriggerNode.value?.parameters?.options?.allowedFilesMimeTypes?.toString() ?? "";
|
|
4009
4002
|
});
|
|
4010
4003
|
function setChatTriggerNode() {
|
|
4011
|
-
const triggerNode = unref(canvasNodes).find(
|
|
4012
|
-
(node) => [CHAT_TRIGGER_NODE_TYPE$1, MANUAL_CHAT_TRIGGER_NODE_TYPE].includes(node.type)
|
|
4013
|
-
);
|
|
4004
|
+
const triggerNode = unref(canvasNodes).find(isChatNode);
|
|
4014
4005
|
if (!triggerNode) {
|
|
4015
4006
|
return;
|
|
4016
4007
|
}
|
|
@@ -4057,7 +4048,8 @@ function useChatTrigger({
|
|
|
4057
4048
|
setConnectedNode
|
|
4058
4049
|
};
|
|
4059
4050
|
}
|
|
4060
|
-
function useChatState(
|
|
4051
|
+
function useChatState(isReadOnly, onWindowResize) {
|
|
4052
|
+
const locale = useI18n$1();
|
|
4061
4053
|
const workflowsStore = useWorkflowsStore();
|
|
4062
4054
|
const nodeTypesStore = useNodeTypesStore();
|
|
4063
4055
|
const canvasStore = useCanvasStore();
|
|
@@ -4123,10 +4115,16 @@ function useChatState(isDisabled, onWindowResize) {
|
|
|
4123
4115
|
sendMessage,
|
|
4124
4116
|
currentSessionId,
|
|
4125
4117
|
isLoading,
|
|
4126
|
-
isDisabled,
|
|
4118
|
+
isDisabled: computed(() => isReadOnly),
|
|
4127
4119
|
allowFileUploads,
|
|
4128
|
-
locale
|
|
4120
|
+
locale
|
|
4129
4121
|
});
|
|
4122
|
+
const restoredChatMessages = computed(
|
|
4123
|
+
() => restoreChatHistory(
|
|
4124
|
+
workflowsStore.workflowExecutionData,
|
|
4125
|
+
locale.baseText("chat.window.chat.response.empty")
|
|
4126
|
+
)
|
|
4127
|
+
);
|
|
4130
4128
|
provide(ChatSymbol, chatConfig);
|
|
4131
4129
|
provide(ChatOptionsSymbol, chatOptions);
|
|
4132
4130
|
watch(
|
|
@@ -4136,7 +4134,7 @@ function useChatState(isDisabled, onWindowResize) {
|
|
|
4136
4134
|
setChatTriggerNode();
|
|
4137
4135
|
setConnectedNode();
|
|
4138
4136
|
setTimeout(() => {
|
|
4139
|
-
onWindowResize();
|
|
4137
|
+
onWindowResize?.();
|
|
4140
4138
|
chatEventBus.emit("focusInput");
|
|
4141
4139
|
}, 0);
|
|
4142
4140
|
}
|
|
@@ -4201,7 +4199,7 @@ function useChatState(isDisabled, onWindowResize) {
|
|
|
4201
4199
|
}
|
|
4202
4200
|
return {
|
|
4203
4201
|
currentSessionId,
|
|
4204
|
-
messages: messages2,
|
|
4202
|
+
messages: computed(() => isReadOnly ? restoredChatMessages.value : messages2.value),
|
|
4205
4203
|
chatTriggerNode,
|
|
4206
4204
|
connectedNode,
|
|
4207
4205
|
sendMessage,
|
|
@@ -4210,191 +4208,6 @@ function useChatState(isDisabled, onWindowResize) {
|
|
|
4210
4208
|
};
|
|
4211
4209
|
}
|
|
4212
4210
|
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
4213
|
-
__name: "CanvasChat",
|
|
4214
|
-
setup(__props, { expose: __expose }) {
|
|
4215
|
-
const workflowsStore = useWorkflowsStore();
|
|
4216
|
-
const canvasStore = useCanvasStore();
|
|
4217
|
-
const isDisabled = ref(false);
|
|
4218
|
-
const container2 = ref();
|
|
4219
|
-
const pipContainer = useTemplateRef("pipContainer");
|
|
4220
|
-
const pipContent2 = useTemplateRef("pipContent");
|
|
4221
|
-
const workflow = computed(() => workflowsStore.getCurrentWorkflow());
|
|
4222
|
-
const chatPanelState = computed(() => workflowsStore.logsPanelState);
|
|
4223
|
-
const previousChatMessages = computed(() => workflowsStore.getPastChatMessages);
|
|
4224
|
-
const resultData = computed(() => workflowsStore.getWorkflowRunData);
|
|
4225
|
-
const telemetry = useTelemetry();
|
|
4226
|
-
const {
|
|
4227
|
-
height,
|
|
4228
|
-
chatWidth,
|
|
4229
|
-
rootStyles,
|
|
4230
|
-
logsWidth,
|
|
4231
|
-
onResizeDebounced,
|
|
4232
|
-
onResizeChatDebounced,
|
|
4233
|
-
onWindowResize
|
|
4234
|
-
} = useResize(container2);
|
|
4235
|
-
const { canPopOut, isPoppedOut, pipWindow } = usePiPWindow({
|
|
4236
|
-
initialHeight: 400,
|
|
4237
|
-
initialWidth: window.document.body.offsetWidth * 0.8,
|
|
4238
|
-
container: pipContainer,
|
|
4239
|
-
content: pipContent2,
|
|
4240
|
-
shouldPopOut: computed(() => chatPanelState.value === LOGS_PANEL_STATE.FLOATING),
|
|
4241
|
-
onRequestClose: () => {
|
|
4242
|
-
if (chatPanelState.value === LOGS_PANEL_STATE.CLOSED) {
|
|
4243
|
-
return;
|
|
4244
|
-
}
|
|
4245
|
-
telemetry.track("User toggled log view", { new_state: "attached" });
|
|
4246
|
-
workflowsStore.setPreferPoppedOutLogsView(false);
|
|
4247
|
-
}
|
|
4248
|
-
});
|
|
4249
|
-
const {
|
|
4250
|
-
currentSessionId,
|
|
4251
|
-
messages: messages2,
|
|
4252
|
-
chatTriggerNode,
|
|
4253
|
-
connectedNode,
|
|
4254
|
-
sendMessage,
|
|
4255
|
-
refreshSession,
|
|
4256
|
-
displayExecution
|
|
4257
|
-
} = useChatState(isDisabled, onWindowResize);
|
|
4258
|
-
__expose({
|
|
4259
|
-
messages: messages2,
|
|
4260
|
-
currentSessionId,
|
|
4261
|
-
isDisabled,
|
|
4262
|
-
workflow
|
|
4263
|
-
});
|
|
4264
|
-
const closePanel = () => {
|
|
4265
|
-
workflowsStore.toggleLogsPanelOpen(false);
|
|
4266
|
-
};
|
|
4267
|
-
function onPopOut() {
|
|
4268
|
-
telemetry.track("User toggled log view", { new_state: "floating" });
|
|
4269
|
-
workflowsStore.toggleLogsPanelOpen(true);
|
|
4270
|
-
workflowsStore.setPreferPoppedOutLogsView(true);
|
|
4271
|
-
}
|
|
4272
|
-
watchEffect(() => {
|
|
4273
|
-
canvasStore.setPanelHeight(chatPanelState.value === LOGS_PANEL_STATE.ATTACHED ? height.value : 0);
|
|
4274
|
-
});
|
|
4275
|
-
return (_ctx, _cache) => {
|
|
4276
|
-
const _component_n8n_icon_button = resolveComponent("n8n-icon-button");
|
|
4277
|
-
return openBlock(), createElementBlock("div", {
|
|
4278
|
-
ref_key: "pipContainer",
|
|
4279
|
-
ref: pipContainer
|
|
4280
|
-
}, [
|
|
4281
|
-
createBaseVNode("div", {
|
|
4282
|
-
ref_key: "pipContent",
|
|
4283
|
-
ref: pipContent2,
|
|
4284
|
-
class: normalizeClass(_ctx.$style.pipContent)
|
|
4285
|
-
}, [
|
|
4286
|
-
unref(chatTriggerNode) ? (openBlock(), createBlock(unref(N8nResizeWrapper), {
|
|
4287
|
-
key: 0,
|
|
4288
|
-
"is-resizing-enabled": !unref(isPoppedOut) && chatPanelState.value === unref(LOGS_PANEL_STATE).ATTACHED,
|
|
4289
|
-
"supported-directions": ["top"],
|
|
4290
|
-
class: normalizeClass([_ctx.$style.resizeWrapper, chatPanelState.value === unref(LOGS_PANEL_STATE).CLOSED && _ctx.$style.empty]),
|
|
4291
|
-
height: unref(height),
|
|
4292
|
-
style: normalizeStyle(unref(rootStyles)),
|
|
4293
|
-
onResize: unref(onResizeDebounced)
|
|
4294
|
-
}, {
|
|
4295
|
-
default: withCtx(() => [
|
|
4296
|
-
createBaseVNode("div", {
|
|
4297
|
-
ref_key: "container",
|
|
4298
|
-
ref: container2,
|
|
4299
|
-
class: normalizeClass([_ctx.$style.container, "ignore-key-press-canvas"]),
|
|
4300
|
-
tabindex: "0"
|
|
4301
|
-
}, [
|
|
4302
|
-
chatPanelState.value !== unref(LOGS_PANEL_STATE).CLOSED ? (openBlock(), createElementBlock("div", {
|
|
4303
|
-
key: 0,
|
|
4304
|
-
class: normalizeClass(_ctx.$style.chatResizer)
|
|
4305
|
-
}, [
|
|
4306
|
-
createVNode(unref(N8nResizeWrapper), {
|
|
4307
|
-
"supported-directions": ["right"],
|
|
4308
|
-
width: unref(chatWidth),
|
|
4309
|
-
class: normalizeClass(_ctx.$style.chat),
|
|
4310
|
-
window: unref(pipWindow),
|
|
4311
|
-
onResize: unref(onResizeChatDebounced)
|
|
4312
|
-
}, {
|
|
4313
|
-
default: withCtx(() => [
|
|
4314
|
-
createBaseVNode("div", {
|
|
4315
|
-
class: normalizeClass(_ctx.$style.inner)
|
|
4316
|
-
}, [
|
|
4317
|
-
createVNode(ChatMessagesPanel, {
|
|
4318
|
-
"data-test-id": "canvas-chat",
|
|
4319
|
-
messages: unref(messages2),
|
|
4320
|
-
"session-id": unref(currentSessionId),
|
|
4321
|
-
"past-chat-messages": previousChatMessages.value,
|
|
4322
|
-
"show-close-button": !unref(isPoppedOut) && !unref(connectedNode),
|
|
4323
|
-
onClose: closePanel,
|
|
4324
|
-
onRefreshSession: unref(refreshSession),
|
|
4325
|
-
onDisplayExecution: unref(displayExecution),
|
|
4326
|
-
onSendMessage: unref(sendMessage)
|
|
4327
|
-
}, null, 8, ["messages", "session-id", "past-chat-messages", "show-close-button", "onRefreshSession", "onDisplayExecution", "onSendMessage"])
|
|
4328
|
-
], 2)
|
|
4329
|
-
]),
|
|
4330
|
-
_: 1
|
|
4331
|
-
}, 8, ["width", "class", "window", "onResize"]),
|
|
4332
|
-
unref(connectedNode) ? (openBlock(), createElementBlock("div", {
|
|
4333
|
-
key: 0,
|
|
4334
|
-
class: normalizeClass(_ctx.$style.logs)
|
|
4335
|
-
}, [
|
|
4336
|
-
(openBlock(), createBlock(ChatLogsPanel, {
|
|
4337
|
-
key: `${resultData.value?.length ?? unref(messages2)?.length}`,
|
|
4338
|
-
workflow: workflow.value,
|
|
4339
|
-
"data-test-id": "canvas-chat-logs",
|
|
4340
|
-
node: unref(connectedNode),
|
|
4341
|
-
slim: unref(logsWidth) < 700
|
|
4342
|
-
}, {
|
|
4343
|
-
actions: withCtx(() => [
|
|
4344
|
-
unref(canPopOut) && !unref(isPoppedOut) ? (openBlock(), createBlock(_component_n8n_icon_button, {
|
|
4345
|
-
key: 0,
|
|
4346
|
-
icon: "pop-out",
|
|
4347
|
-
type: "secondary",
|
|
4348
|
-
size: "medium",
|
|
4349
|
-
onClick: onPopOut
|
|
4350
|
-
})) : createCommentVNode("", true),
|
|
4351
|
-
!unref(isPoppedOut) ? (openBlock(), createBlock(_component_n8n_icon_button, {
|
|
4352
|
-
key: 1,
|
|
4353
|
-
outline: "",
|
|
4354
|
-
icon: "times",
|
|
4355
|
-
type: "secondary",
|
|
4356
|
-
size: "medium",
|
|
4357
|
-
onClick: closePanel
|
|
4358
|
-
})) : createCommentVNode("", true)
|
|
4359
|
-
]),
|
|
4360
|
-
_: 1
|
|
4361
|
-
}, 8, ["workflow", "node", "slim"]))
|
|
4362
|
-
], 2)) : createCommentVNode("", true)
|
|
4363
|
-
], 2)) : createCommentVNode("", true)
|
|
4364
|
-
], 2)
|
|
4365
|
-
]),
|
|
4366
|
-
_: 1
|
|
4367
|
-
}, 8, ["is-resizing-enabled", "class", "height", "style", "onResize"])) : createCommentVNode("", true)
|
|
4368
|
-
], 2)
|
|
4369
|
-
], 512);
|
|
4370
|
-
};
|
|
4371
|
-
}
|
|
4372
|
-
});
|
|
4373
|
-
const resizeWrapper$1 = "_resizeWrapper_1aajp_124";
|
|
4374
|
-
const pipContent$1 = "_pipContent_1aajp_129";
|
|
4375
|
-
const empty$1 = "_empty_1aajp_140";
|
|
4376
|
-
const container$4 = "_container_1aajp_146";
|
|
4377
|
-
const chatResizer = "_chatResizer_1aajp_154";
|
|
4378
|
-
const footer = "_footer_1aajp_161";
|
|
4379
|
-
const chat$1 = "_chat_1aajp_154";
|
|
4380
|
-
const inner = "_inner_1aajp_180";
|
|
4381
|
-
const logs = "_logs_1aajp_188";
|
|
4382
|
-
const style0$4 = {
|
|
4383
|
-
resizeWrapper: resizeWrapper$1,
|
|
4384
|
-
pipContent: pipContent$1,
|
|
4385
|
-
empty: empty$1,
|
|
4386
|
-
container: container$4,
|
|
4387
|
-
chatResizer,
|
|
4388
|
-
footer,
|
|
4389
|
-
chat: chat$1,
|
|
4390
|
-
inner,
|
|
4391
|
-
logs
|
|
4392
|
-
};
|
|
4393
|
-
const cssModules$4 = {
|
|
4394
|
-
"$style": style0$4
|
|
4395
|
-
};
|
|
4396
|
-
const __unplugin_components_0 = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssModules", cssModules$4]]);
|
|
4397
|
-
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
4398
4211
|
__name: "ConsumedTokenCountText",
|
|
4399
4212
|
props: {
|
|
4400
4213
|
consumedTokens: {}
|
|
@@ -4402,7 +4215,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4402
4215
|
setup(__props) {
|
|
4403
4216
|
const locale = useI18n$1();
|
|
4404
4217
|
return (_ctx, _cache) => {
|
|
4405
|
-
const _component_ConsumedTokensDetails = _sfc_main$
|
|
4218
|
+
const _component_ConsumedTokensDetails = _sfc_main$i;
|
|
4406
4219
|
return _ctx.consumedTokens !== void 0 ? (openBlock(), createBlock(unref(N8nTooltip), {
|
|
4407
4220
|
key: 0,
|
|
4408
4221
|
enterable: false
|
|
@@ -4422,12 +4235,13 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4422
4235
|
};
|
|
4423
4236
|
}
|
|
4424
4237
|
});
|
|
4425
|
-
const _sfc_main$
|
|
4238
|
+
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
4426
4239
|
__name: "LogsOverviewRow",
|
|
4427
4240
|
props: {
|
|
4428
4241
|
data: {},
|
|
4429
4242
|
node: {},
|
|
4430
4243
|
isSelected: { type: Boolean },
|
|
4244
|
+
isReadOnly: { type: Boolean },
|
|
4431
4245
|
shouldShowConsumedTokens: { type: Boolean },
|
|
4432
4246
|
isCompact: { type: Boolean }
|
|
4433
4247
|
},
|
|
@@ -4436,6 +4250,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
4436
4250
|
const props = __props;
|
|
4437
4251
|
const emit = __emit;
|
|
4438
4252
|
const locale = useI18n$1();
|
|
4253
|
+
const containerRef = useTemplateRef("containerRef");
|
|
4439
4254
|
const workflowsStore = useWorkflowsStore();
|
|
4440
4255
|
const nodeTypeStore = useNodeTypesStore();
|
|
4441
4256
|
const node = computed(() => workflowsStore.nodesByName[props.data.node]);
|
|
@@ -4470,10 +4285,21 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
4470
4285
|
const lastSibling = siblings[siblings.length - 1];
|
|
4471
4286
|
return data === void 0 && lastSibling === void 0 || data?.node === lastSibling?.node && data?.runIndex === lastSibling?.runIndex;
|
|
4472
4287
|
}
|
|
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
|
+
);
|
|
4473
4297
|
return (_ctx, _cache) => {
|
|
4474
|
-
const _component_NodeIcon = _sfc_main$
|
|
4298
|
+
const _component_NodeIcon = _sfc_main$j;
|
|
4475
4299
|
return node.value !== void 0 ? (openBlock(), createElementBlock("div", {
|
|
4476
4300
|
key: 0,
|
|
4301
|
+
ref_key: "containerRef",
|
|
4302
|
+
ref: containerRef,
|
|
4477
4303
|
class: normalizeClass({
|
|
4478
4304
|
[_ctx.$style.container]: true,
|
|
4479
4305
|
[_ctx.$style.compact]: props.isCompact,
|
|
@@ -4571,7 +4397,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
4571
4397
|
class: normalizeClass(_ctx.$style.consumedTokens)
|
|
4572
4398
|
}, {
|
|
4573
4399
|
default: withCtx(() => [
|
|
4574
|
-
subtreeConsumedTokens.value.totalTokens > 0 && (props.data.children.length === 0 || !props.node.expanded) ? (openBlock(), createBlock(_sfc_main$
|
|
4400
|
+
subtreeConsumedTokens.value.totalTokens > 0 && (props.data.children.length === 0 || !props.node.expanded) ? (openBlock(), createBlock(_sfc_main$7, {
|
|
4575
4401
|
key: 0,
|
|
4576
4402
|
"consumed-tokens": subtreeConsumedTokens.value
|
|
4577
4403
|
}, null, 8, ["consumed-tokens"])) : createCommentVNode("", true)
|
|
@@ -4585,7 +4411,8 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
4585
4411
|
icon: "exclamation-triangle",
|
|
4586
4412
|
class: normalizeClass(_ctx.$style.compactErrorIcon)
|
|
4587
4413
|
}, null, 8, ["class"])) : createCommentVNode("", true),
|
|
4588
|
-
|
|
4414
|
+
!props.isReadOnly ? (openBlock(), createBlock(unref(_sfc_main$h), {
|
|
4415
|
+
key: 2,
|
|
4589
4416
|
type: "secondary",
|
|
4590
4417
|
size: "small",
|
|
4591
4418
|
icon: "play",
|
|
@@ -4593,8 +4420,8 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
4593
4420
|
"aria-label": unref(locale).baseText("logs.overview.body.run"),
|
|
4594
4421
|
class: normalizeClass([_ctx.$style.partialExecutionButton, depth.value > 0 ? _ctx.$style.unavailable : ""]),
|
|
4595
4422
|
onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("triggerPartialExecution", props.data), ["stop"]))
|
|
4596
|
-
}, null, 8, ["aria-label", "class"]),
|
|
4597
|
-
createVNode(unref(_sfc_main$
|
|
4423
|
+
}, null, 8, ["aria-label", "class"])) : createCommentVNode("", true),
|
|
4424
|
+
createVNode(unref(_sfc_main$h), {
|
|
4598
4425
|
type: "secondary",
|
|
4599
4426
|
size: "small",
|
|
4600
4427
|
icon: "external-link-alt",
|
|
@@ -4604,7 +4431,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
4604
4431
|
onClick: _cache[1] || (_cache[1] = withModifiers(($event) => emit("openNdv", props.data), ["stop"]))
|
|
4605
4432
|
}, null, 8, ["class", "aria-label"]),
|
|
4606
4433
|
!_ctx.isCompact || props.data.children.length > 0 ? (openBlock(), createBlock(unref(N8nButton), {
|
|
4607
|
-
key:
|
|
4434
|
+
key: 3,
|
|
4608
4435
|
type: "secondary",
|
|
4609
4436
|
size: "small",
|
|
4610
4437
|
square: true,
|
|
@@ -4629,35 +4456,35 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
4629
4456
|
};
|
|
4630
4457
|
}
|
|
4631
4458
|
});
|
|
4632
|
-
const container$
|
|
4633
|
-
const background = "
|
|
4634
|
-
const selected = "
|
|
4635
|
-
const error = "
|
|
4636
|
-
const indent = "
|
|
4637
|
-
const connectorCurved = "
|
|
4638
|
-
const connectorStraight = "
|
|
4639
|
-
const icon = "
|
|
4640
|
-
const name = "
|
|
4641
|
-
const timeTook = "
|
|
4642
|
-
const errorIcon = "
|
|
4643
|
-
const compact = "
|
|
4644
|
-
const startedAt = "
|
|
4645
|
-
const consumedTokens = "
|
|
4646
|
-
const compactErrorIcon = "
|
|
4647
|
-
const partialExecutionButton = "
|
|
4648
|
-
const openNdvButton = "
|
|
4649
|
-
const unavailable = "
|
|
4650
|
-
const toggleButton = "
|
|
4651
|
-
const style0$
|
|
4652
|
-
container: container$
|
|
4459
|
+
const container$5 = "_container_jrkhv_123";
|
|
4460
|
+
const background = "_background_jrkhv_140";
|
|
4461
|
+
const selected = "_selected_jrkhv_149";
|
|
4462
|
+
const error = "_error_jrkhv_152";
|
|
4463
|
+
const indent = "_indent_jrkhv_156";
|
|
4464
|
+
const connectorCurved = "_connectorCurved_jrkhv_165";
|
|
4465
|
+
const connectorStraight = "_connectorStraight_jrkhv_175";
|
|
4466
|
+
const icon$1 = "_icon_jrkhv_184";
|
|
4467
|
+
const name$1 = "_name_jrkhv_190";
|
|
4468
|
+
const timeTook = "_timeTook_jrkhv_196";
|
|
4469
|
+
const errorIcon = "_errorIcon_jrkhv_201";
|
|
4470
|
+
const compact = "_compact_jrkhv_205";
|
|
4471
|
+
const startedAt = "_startedAt_jrkhv_215";
|
|
4472
|
+
const consumedTokens = "_consumedTokens_jrkhv_224";
|
|
4473
|
+
const compactErrorIcon = "_compactErrorIcon_jrkhv_240";
|
|
4474
|
+
const partialExecutionButton = "_partialExecutionButton_jrkhv_248";
|
|
4475
|
+
const openNdvButton = "_openNdvButton_jrkhv_249";
|
|
4476
|
+
const unavailable = "_unavailable_jrkhv_259";
|
|
4477
|
+
const toggleButton = "_toggleButton_jrkhv_267";
|
|
4478
|
+
const style0$6 = {
|
|
4479
|
+
container: container$5,
|
|
4653
4480
|
background,
|
|
4654
4481
|
selected,
|
|
4655
4482
|
error,
|
|
4656
4483
|
indent,
|
|
4657
4484
|
connectorCurved,
|
|
4658
4485
|
connectorStraight,
|
|
4659
|
-
icon,
|
|
4660
|
-
name,
|
|
4486
|
+
icon: icon$1,
|
|
4487
|
+
name: name$1,
|
|
4661
4488
|
timeTook,
|
|
4662
4489
|
errorIcon,
|
|
4663
4490
|
compact,
|
|
@@ -4669,15 +4496,62 @@ const style0$3 = {
|
|
|
4669
4496
|
unavailable,
|
|
4670
4497
|
toggleButton
|
|
4671
4498
|
};
|
|
4672
|
-
const cssModules$
|
|
4673
|
-
"$style": style0$
|
|
4499
|
+
const cssModules$6 = {
|
|
4500
|
+
"$style": style0$6
|
|
4674
4501
|
};
|
|
4675
|
-
const LogsOverviewRow = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
4502
|
+
const LogsOverviewRow = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__cssModules", cssModules$6]]);
|
|
4503
|
+
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
4504
|
+
__name: "ExecutionSummary",
|
|
4505
|
+
props: {
|
|
4506
|
+
status: {},
|
|
4507
|
+
consumedTokens: {},
|
|
4508
|
+
timeTook: {}
|
|
4509
|
+
},
|
|
4510
|
+
setup(__props) {
|
|
4511
|
+
const locale = useI18n$1();
|
|
4512
|
+
const executionStatusText = computed(
|
|
4513
|
+
() => __props.timeTook === void 0 ? upperFirst(__props.status) : locale.baseText("logs.overview.body.summaryText", {
|
|
4514
|
+
interpolate: {
|
|
4515
|
+
status: upperFirst(__props.status),
|
|
4516
|
+
time: locale.displayTimer(__props.timeTook, true)
|
|
4517
|
+
}
|
|
4518
|
+
})
|
|
4519
|
+
);
|
|
4520
|
+
return (_ctx, _cache) => {
|
|
4521
|
+
return openBlock(), createBlock(unref(N8nText), {
|
|
4522
|
+
tag: "div",
|
|
4523
|
+
color: "text-light",
|
|
4524
|
+
size: "small",
|
|
4525
|
+
class: normalizeClass(_ctx.$style.container)
|
|
4526
|
+
}, {
|
|
4527
|
+
default: withCtx(() => [
|
|
4528
|
+
createBaseVNode("span", null, toDisplayString(executionStatusText.value), 1),
|
|
4529
|
+
_ctx.consumedTokens.totalTokens > 0 ? (openBlock(), createBlock(_sfc_main$7, {
|
|
4530
|
+
key: 0,
|
|
4531
|
+
"consumed-tokens": _ctx.consumedTokens
|
|
4532
|
+
}, null, 8, ["consumed-tokens"])) : createCommentVNode("", true)
|
|
4533
|
+
]),
|
|
4534
|
+
_: 1
|
|
4535
|
+
}, 8, ["class"]);
|
|
4536
|
+
};
|
|
4537
|
+
}
|
|
4538
|
+
});
|
|
4539
|
+
const container$4 = "_container_pt5hk_123";
|
|
4540
|
+
const style0$5 = {
|
|
4541
|
+
container: container$4
|
|
4542
|
+
};
|
|
4543
|
+
const cssModules$5 = {
|
|
4544
|
+
"$style": style0$5
|
|
4545
|
+
};
|
|
4546
|
+
const ExecutionSummary = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__cssModules", cssModules$5]]);
|
|
4676
4547
|
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
4677
4548
|
__name: "LogsOverviewPanel",
|
|
4678
4549
|
props: {
|
|
4679
4550
|
isOpen: { type: Boolean },
|
|
4680
|
-
selected: {}
|
|
4551
|
+
selected: {},
|
|
4552
|
+
isReadOnly: { type: Boolean },
|
|
4553
|
+
isCompact: { type: Boolean },
|
|
4554
|
+
executionTree: {}
|
|
4681
4555
|
},
|
|
4682
4556
|
emits: ["clickHeader", "select"],
|
|
4683
4557
|
setup(__props, { emit: __emit }) {
|
|
@@ -4691,48 +4565,25 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4691
4565
|
const nodeHelpers = useNodeHelpers();
|
|
4692
4566
|
const isClearExecutionButtonVisible = useClearExecutionButtonVisible();
|
|
4693
4567
|
const workflow = computed(() => workflowsStore.getCurrentWorkflow());
|
|
4694
|
-
const executionTree = computed(
|
|
4695
|
-
() => createLogEntries(
|
|
4696
|
-
workflow.value,
|
|
4697
|
-
workflowsStore.workflowExecutionData?.data?.resultData.runData ?? {}
|
|
4698
|
-
)
|
|
4699
|
-
);
|
|
4700
4568
|
const isEmpty2 = computed(() => workflowsStore.workflowExecutionData === null);
|
|
4701
4569
|
const switchViewOptions = computed(() => [
|
|
4702
4570
|
{ label: locale.baseText("logs.overview.header.switch.details"), value: "details" },
|
|
4703
4571
|
{ label: locale.baseText("logs.overview.header.switch.overview"), value: "overview" }
|
|
4704
4572
|
]);
|
|
4705
|
-
const
|
|
4706
|
-
const execution = workflowsStore.workflowExecutionData;
|
|
4707
|
-
if (!execution) {
|
|
4708
|
-
return void 0;
|
|
4709
|
-
}
|
|
4710
|
-
if (execution.startedAt && execution.stoppedAt) {
|
|
4711
|
-
return locale.baseText("logs.overview.body.summaryText", {
|
|
4712
|
-
interpolate: {
|
|
4713
|
-
status: upperFirst(execution.status),
|
|
4714
|
-
time: locale.displayTimer(
|
|
4715
|
-
+new Date(execution.stoppedAt) - +new Date(execution.startedAt),
|
|
4716
|
-
true
|
|
4717
|
-
)
|
|
4718
|
-
}
|
|
4719
|
-
});
|
|
4720
|
-
}
|
|
4721
|
-
return upperFirst(execution.status);
|
|
4722
|
-
});
|
|
4573
|
+
const execution = computed(() => workflowsStore.workflowExecutionData);
|
|
4723
4574
|
const consumedTokens2 = computed(
|
|
4724
|
-
() => getTotalConsumedTokens(...executionTree.
|
|
4575
|
+
() => getTotalConsumedTokens(...__props.executionTree.map(getSubtreeTotalConsumedTokens))
|
|
4725
4576
|
);
|
|
4726
4577
|
function onClearExecutionData() {
|
|
4727
4578
|
workflowsStore.setWorkflowExecutionData(null);
|
|
4728
4579
|
nodeHelpers.updateNodesExecutionIssues();
|
|
4729
4580
|
}
|
|
4730
4581
|
function handleClickNode(clicked) {
|
|
4731
|
-
if (__props.selected?.node === clicked.node && __props.selected
|
|
4582
|
+
if (__props.selected?.node === clicked.node && __props.selected?.runIndex === clicked.runIndex) {
|
|
4732
4583
|
emit("select", void 0);
|
|
4733
4584
|
return;
|
|
4734
4585
|
}
|
|
4735
|
-
emit("select",
|
|
4586
|
+
emit("select", clicked);
|
|
4736
4587
|
telemetry.track("User selected node in log view", {
|
|
4737
4588
|
node_type: workflowsStore.nodesByName[clicked.node].type,
|
|
4738
4589
|
node_id: workflowsStore.nodesByName[clicked.node].id,
|
|
@@ -4741,10 +4592,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4741
4592
|
});
|
|
4742
4593
|
}
|
|
4743
4594
|
function handleSwitchView(value) {
|
|
4744
|
-
emit(
|
|
4745
|
-
"select",
|
|
4746
|
-
value === "overview" || executionTree.value.length === 0 ? void 0 : executionTree.value[0]
|
|
4747
|
-
);
|
|
4595
|
+
emit("select", value === "overview" || __props.executionTree.length === 0 ? void 0 : __props.executionTree[0]);
|
|
4748
4596
|
}
|
|
4749
4597
|
function handleToggleExpanded(treeNode) {
|
|
4750
4598
|
treeNode.expanded = !treeNode.expanded;
|
|
@@ -4776,13 +4624,14 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4776
4624
|
type: "secondary",
|
|
4777
4625
|
icon: "trash",
|
|
4778
4626
|
"icon-size": "medium",
|
|
4627
|
+
class: normalizeClass(_ctx.$style.clearButton),
|
|
4779
4628
|
onClick: withModifiers(onClearExecutionData, ["stop"])
|
|
4780
4629
|
}, {
|
|
4781
4630
|
default: withCtx(() => [
|
|
4782
4631
|
createTextVNode(toDisplayString(unref(locale).baseText("logs.overview.header.actions.clearExecution")), 1)
|
|
4783
4632
|
]),
|
|
4784
4633
|
_: 1
|
|
4785
|
-
})
|
|
4634
|
+
}, 8, ["class"])
|
|
4786
4635
|
]),
|
|
4787
4636
|
_: 1
|
|
4788
4637
|
}, 8, ["content"])) : createCommentVNode("", true),
|
|
@@ -4811,28 +4660,19 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4811
4660
|
key: 1,
|
|
4812
4661
|
class: normalizeClass(_ctx.$style.scrollable)
|
|
4813
4662
|
}, [
|
|
4814
|
-
|
|
4663
|
+
execution.value ? (openBlock(), createBlock(ExecutionSummary, {
|
|
4815
4664
|
key: 0,
|
|
4816
|
-
|
|
4817
|
-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
},
|
|
4821
|
-
|
|
4822
|
-
createBaseVNode("span", null, toDisplayString(executionStatusText.value), 1),
|
|
4823
|
-
consumedTokens2.value.totalTokens > 0 ? (openBlock(), createBlock(_sfc_main$6, {
|
|
4824
|
-
key: 0,
|
|
4825
|
-
"consumed-tokens": consumedTokens2.value
|
|
4826
|
-
}, null, 8, ["consumed-tokens"])) : createCommentVNode("", true)
|
|
4827
|
-
]),
|
|
4828
|
-
_: 1
|
|
4829
|
-
}, 8, ["class"])) : createCommentVNode("", true),
|
|
4830
|
-
executionTree.value.length > 0 ? (openBlock(), createBlock(unref(ElTree), {
|
|
4665
|
+
class: normalizeClass(_ctx.$style.summary),
|
|
4666
|
+
status: execution.value.status,
|
|
4667
|
+
"consumed-tokens": consumedTokens2.value,
|
|
4668
|
+
"time-took": execution.value.startedAt && execution.value.stoppedAt ? +new Date(execution.value.stoppedAt) - +new Date(execution.value.startedAt) : void 0
|
|
4669
|
+
}, null, 8, ["class", "status", "consumed-tokens", "time-took"])) : createCommentVNode("", true),
|
|
4670
|
+
_ctx.executionTree.length > 0 ? (openBlock(), createBlock(unref(ElTree), {
|
|
4831
4671
|
key: 1,
|
|
4832
4672
|
"node-key": "id",
|
|
4833
4673
|
class: normalizeClass(_ctx.$style.tree),
|
|
4834
4674
|
indent: 0,
|
|
4835
|
-
data: executionTree
|
|
4675
|
+
data: _ctx.executionTree,
|
|
4836
4676
|
"expand-on-click-node": false,
|
|
4837
4677
|
"default-expand-all": true,
|
|
4838
4678
|
onNodeClick: handleClickNode
|
|
@@ -4841,13 +4681,14 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4841
4681
|
createVNode(LogsOverviewRow, {
|
|
4842
4682
|
data,
|
|
4843
4683
|
node: elTreeNode,
|
|
4684
|
+
"is-read-only": _ctx.isReadOnly,
|
|
4844
4685
|
"is-selected": data.node === _ctx.selected?.node && data.runIndex === _ctx.selected?.runIndex,
|
|
4845
|
-
"is-compact": _ctx.
|
|
4686
|
+
"is-compact": _ctx.isCompact,
|
|
4846
4687
|
"should-show-consumed-tokens": consumedTokens2.value.totalTokens > 0,
|
|
4847
4688
|
onToggleExpanded: handleToggleExpanded,
|
|
4848
4689
|
onOpenNdv: handleOpenNdv,
|
|
4849
4690
|
onTriggerPartialExecution: handleTriggerPartialExecution
|
|
4850
|
-
}, null, 8, ["data", "node", "is-selected", "is-compact", "should-show-consumed-tokens"])
|
|
4691
|
+
}, null, 8, ["data", "node", "is-read-only", "is-selected", "is-compact", "should-show-consumed-tokens"])
|
|
4851
4692
|
]),
|
|
4852
4693
|
_: 1
|
|
4853
4694
|
}, 8, ["class", "data"])) : createCommentVNode("", true),
|
|
@@ -4864,16 +4705,18 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4864
4705
|
};
|
|
4865
4706
|
}
|
|
4866
4707
|
});
|
|
4867
|
-
const container$
|
|
4868
|
-
const
|
|
4869
|
-
const
|
|
4870
|
-
const
|
|
4871
|
-
const
|
|
4872
|
-
const
|
|
4873
|
-
const
|
|
4874
|
-
const
|
|
4875
|
-
const
|
|
4876
|
-
|
|
4708
|
+
const container$3 = "_container_ow69g_123";
|
|
4709
|
+
const clearButton = "_clearButton_ow69g_133";
|
|
4710
|
+
const content$1 = "_content_ow69g_138";
|
|
4711
|
+
const empty = "_empty_ow69g_147";
|
|
4712
|
+
const emptyText = "_emptyText_ow69g_152";
|
|
4713
|
+
const scrollable = "_scrollable_ow69g_157";
|
|
4714
|
+
const summary = "_summary_ow69g_163";
|
|
4715
|
+
const tree = "_tree_ow69g_169";
|
|
4716
|
+
const switchViewButtons = "_switchViewButtons_ow69g_176";
|
|
4717
|
+
const style0$4 = {
|
|
4718
|
+
container: container$3,
|
|
4719
|
+
clearButton,
|
|
4877
4720
|
content: content$1,
|
|
4878
4721
|
empty,
|
|
4879
4722
|
emptyText,
|
|
@@ -4882,29 +4725,340 @@ const style0$2 = {
|
|
|
4882
4725
|
tree,
|
|
4883
4726
|
switchViewButtons
|
|
4884
4727
|
};
|
|
4885
|
-
const cssModules$
|
|
4886
|
-
"$style": style0$
|
|
4728
|
+
const cssModules$4 = {
|
|
4729
|
+
"$style": style0$4
|
|
4887
4730
|
};
|
|
4888
|
-
const LogsOverviewPanel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__cssModules", cssModules$
|
|
4731
|
+
const LogsOverviewPanel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__cssModules", cssModules$4]]);
|
|
4889
4732
|
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
4733
|
+
__name: "RunDataView",
|
|
4734
|
+
props: {
|
|
4735
|
+
title: {},
|
|
4736
|
+
paneType: {},
|
|
4737
|
+
logEntry: {}
|
|
4738
|
+
},
|
|
4739
|
+
setup(__props) {
|
|
4740
|
+
const locale = useI18n$1();
|
|
4741
|
+
const workflowsStore = useWorkflowsStore();
|
|
4742
|
+
const ndvStore = useNDVStore();
|
|
4743
|
+
const workflow = computed(() => workflowsStore.getCurrentWorkflow());
|
|
4744
|
+
const node = computed(() => {
|
|
4745
|
+
if (__props.logEntry.depth > 0 || __props.paneType === "output") {
|
|
4746
|
+
return workflowsStore.nodesByName[__props.logEntry.node];
|
|
4747
|
+
}
|
|
4748
|
+
const parent = workflow.value.getParentNodesByDepth(__props.logEntry.node)[0];
|
|
4749
|
+
if (!parent) {
|
|
4750
|
+
return void 0;
|
|
4751
|
+
}
|
|
4752
|
+
return workflowsStore.nodesByName[parent.name];
|
|
4753
|
+
});
|
|
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
|
+
function handleClickOpenNdv() {
|
|
4761
|
+
ndvStore.setActiveNodeName(__props.logEntry.node);
|
|
4762
|
+
}
|
|
4763
|
+
return (_ctx, _cache) => {
|
|
4764
|
+
return node.value ? (openBlock(), createBlock(RunData, {
|
|
4765
|
+
key: 0,
|
|
4766
|
+
node: node.value,
|
|
4767
|
+
workflow: workflow.value,
|
|
4768
|
+
"run-index": _ctx.logEntry.runIndex,
|
|
4769
|
+
"too-much-data-title": unref(locale).baseText("ndv.output.tooMuchData.title"),
|
|
4770
|
+
"no-data-in-branch-message": unref(locale).baseText("ndv.output.noOutputDataInBranch"),
|
|
4771
|
+
"executing-message": unref(locale).baseText("ndv.output.executing"),
|
|
4772
|
+
"pane-type": _ctx.paneType,
|
|
4773
|
+
"disable-run-index-selection": true,
|
|
4774
|
+
compact: true,
|
|
4775
|
+
"disable-pin": true,
|
|
4776
|
+
"disable-edit": true,
|
|
4777
|
+
"table-header-bg-color": "light"
|
|
4778
|
+
}, createSlots({
|
|
4779
|
+
header: withCtx(() => [
|
|
4780
|
+
createVNode(unref(N8nText), {
|
|
4781
|
+
class: normalizeClass(_ctx.$style.title),
|
|
4782
|
+
bold: true,
|
|
4783
|
+
color: "text-light",
|
|
4784
|
+
size: "small"
|
|
4785
|
+
}, {
|
|
4786
|
+
default: withCtx(() => [
|
|
4787
|
+
createTextVNode(toDisplayString(_ctx.title), 1)
|
|
4788
|
+
]),
|
|
4789
|
+
_: 1
|
|
4790
|
+
}, 8, ["class"])
|
|
4791
|
+
]),
|
|
4792
|
+
"no-output-data": withCtx(() => [
|
|
4793
|
+
createVNode(unref(N8nText), {
|
|
4794
|
+
bold: true,
|
|
4795
|
+
color: "text-dark",
|
|
4796
|
+
size: "large"
|
|
4797
|
+
}, {
|
|
4798
|
+
default: withCtx(() => [
|
|
4799
|
+
createTextVNode(toDisplayString(unref(locale).baseText("ndv.output.noOutputData.title")), 1)
|
|
4800
|
+
]),
|
|
4801
|
+
_: 1
|
|
4802
|
+
})
|
|
4803
|
+
]),
|
|
4804
|
+
_: 2
|
|
4805
|
+
}, [
|
|
4806
|
+
isMultipleInput.value ? {
|
|
4807
|
+
name: "content",
|
|
4808
|
+
fn: withCtx(() => []),
|
|
4809
|
+
key: "0"
|
|
4810
|
+
} : void 0,
|
|
4811
|
+
isMultipleInput.value ? {
|
|
4812
|
+
name: "callout-message",
|
|
4813
|
+
fn: withCtx(() => [
|
|
4814
|
+
createVNode(unref(I18nT), { keypath: "logs.details.body.multipleInputs" }, {
|
|
4815
|
+
button: withCtx(() => [
|
|
4816
|
+
createVNode(unref(N8nLink), {
|
|
4817
|
+
size: "small",
|
|
4818
|
+
onClick: handleClickOpenNdv
|
|
4819
|
+
}, {
|
|
4820
|
+
default: withCtx(() => [
|
|
4821
|
+
createTextVNode(toDisplayString(unref(locale).baseText("logs.details.body.multipleInputs.openingTheNode")), 1)
|
|
4822
|
+
]),
|
|
4823
|
+
_: 1
|
|
4824
|
+
})
|
|
4825
|
+
]),
|
|
4826
|
+
_: 1
|
|
4827
|
+
})
|
|
4828
|
+
]),
|
|
4829
|
+
key: "1"
|
|
4830
|
+
} : void 0
|
|
4831
|
+
]), 1032, ["node", "workflow", "run-index", "too-much-data-title", "no-data-in-branch-message", "executing-message", "pane-type"])) : createCommentVNode("", true);
|
|
4832
|
+
};
|
|
4833
|
+
}
|
|
4834
|
+
});
|
|
4835
|
+
const title$1 = "_title_1ur7r_123";
|
|
4836
|
+
const style0$3 = {
|
|
4837
|
+
title: title$1
|
|
4838
|
+
};
|
|
4839
|
+
const cssModules$3 = {
|
|
4840
|
+
"$style": style0$3
|
|
4841
|
+
};
|
|
4842
|
+
const RunDataView = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__cssModules", cssModules$3]]);
|
|
4843
|
+
function useResizablePanel(localStorageKey, {
|
|
4844
|
+
container: container2,
|
|
4845
|
+
defaultSize,
|
|
4846
|
+
snap = true,
|
|
4847
|
+
minSize = 0,
|
|
4848
|
+
maxSize = (size) => size,
|
|
4849
|
+
position = "left",
|
|
4850
|
+
allowCollapse,
|
|
4851
|
+
allowFullSize
|
|
4852
|
+
}) {
|
|
4853
|
+
const containerSize = ref(0);
|
|
4854
|
+
const size = useLocalStorage(localStorageKey, -1, { writeDefaults: false });
|
|
4855
|
+
const isResizing = ref(false);
|
|
4856
|
+
const constrainedSize = computed(() => {
|
|
4857
|
+
if (isResizing.value && allowCollapse && size.value < 30) {
|
|
4858
|
+
return 0;
|
|
4859
|
+
}
|
|
4860
|
+
if (isResizing.value && allowFullSize && size.value > containerSize.value - 30) {
|
|
4861
|
+
return containerSize.value;
|
|
4862
|
+
}
|
|
4863
|
+
const defaultSizeValue = resolveSize(defaultSize, containerSize.value);
|
|
4864
|
+
if (Number.isNaN(size.value) || size.value < 0) {
|
|
4865
|
+
return defaultSizeValue;
|
|
4866
|
+
}
|
|
4867
|
+
const minSizeValue = resolveSize(minSize, containerSize.value);
|
|
4868
|
+
const maxSizeValue = resolveSize(maxSize, containerSize.value);
|
|
4869
|
+
return Math.max(
|
|
4870
|
+
minSizeValue,
|
|
4871
|
+
Math.min(
|
|
4872
|
+
snap && Math.abs(defaultSizeValue - size.value) < 30 ? defaultSizeValue : size.value,
|
|
4873
|
+
maxSizeValue
|
|
4874
|
+
)
|
|
4875
|
+
);
|
|
4876
|
+
});
|
|
4877
|
+
function getSize(el) {
|
|
4878
|
+
return position === "bottom" ? el.height : el.width;
|
|
4879
|
+
}
|
|
4880
|
+
function getOffsetSize(el) {
|
|
4881
|
+
return position === "bottom" ? el.offsetHeight : el.offsetWidth;
|
|
4882
|
+
}
|
|
4883
|
+
function getValue(data) {
|
|
4884
|
+
return position === "bottom" ? data.y : data.x;
|
|
4885
|
+
}
|
|
4886
|
+
function resolveSize(getter, containerSizeValue) {
|
|
4887
|
+
return typeof getter === "number" ? getter : getter(containerSizeValue);
|
|
4888
|
+
}
|
|
4889
|
+
function onResize(data) {
|
|
4890
|
+
const containerRect = unref(container2)?.getBoundingClientRect();
|
|
4891
|
+
isResizing.value = true;
|
|
4892
|
+
size.value = Math.max(
|
|
4893
|
+
0,
|
|
4894
|
+
position === "bottom" ? (containerRect ? getSize(containerRect) : 0) - getValue(data) : getValue(data) - (containerRect ? getValue(containerRect) : 0)
|
|
4895
|
+
);
|
|
4896
|
+
}
|
|
4897
|
+
function onResizeEnd() {
|
|
4898
|
+
isResizing.value = false;
|
|
4899
|
+
}
|
|
4900
|
+
watch(
|
|
4901
|
+
() => unref(container2),
|
|
4902
|
+
(el, _, onCleanUp) => {
|
|
4903
|
+
if (!el) {
|
|
4904
|
+
return;
|
|
4905
|
+
}
|
|
4906
|
+
const observer = new ResizeObserver(() => {
|
|
4907
|
+
containerSize.value = getOffsetSize(el);
|
|
4908
|
+
});
|
|
4909
|
+
observer.observe(el);
|
|
4910
|
+
containerSize.value = getOffsetSize(el);
|
|
4911
|
+
onCleanUp(() => observer.disconnect());
|
|
4912
|
+
},
|
|
4913
|
+
{ immediate: true }
|
|
4914
|
+
);
|
|
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
|
+
return {
|
|
4922
|
+
isResizing: computed(() => isResizing.value),
|
|
4923
|
+
isCollapsed: computed(() => isResizing.value && constrainedSize.value <= 0),
|
|
4924
|
+
isFullSize: computed(() => isResizing.value && constrainedSize.value >= containerSize.value),
|
|
4925
|
+
size: constrainedSize,
|
|
4926
|
+
onResize,
|
|
4927
|
+
onResizeEnd
|
|
4928
|
+
};
|
|
4929
|
+
}
|
|
4930
|
+
const MIN_IO_PANEL_WIDTH = 200;
|
|
4931
|
+
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
4890
4932
|
__name: "LogDetailsPanel",
|
|
4891
4933
|
props: {
|
|
4892
|
-
isOpen: { type: Boolean }
|
|
4934
|
+
isOpen: { type: Boolean },
|
|
4935
|
+
logEntry: {},
|
|
4936
|
+
window: {}
|
|
4893
4937
|
},
|
|
4894
4938
|
emits: ["clickHeader"],
|
|
4895
4939
|
setup(__props, { emit: __emit }) {
|
|
4896
4940
|
const emit = __emit;
|
|
4941
|
+
const locale = useI18n$1();
|
|
4942
|
+
const telemetry = useTelemetry();
|
|
4943
|
+
const workflowsStore = useWorkflowsStore();
|
|
4944
|
+
const nodeTypeStore = useNodeTypesStore();
|
|
4945
|
+
const content2 = ref(LOG_DETAILS_CONTENT.BOTH);
|
|
4946
|
+
const node = computed(() => workflowsStore.nodesByName[__props.logEntry.node]);
|
|
4947
|
+
const type = computed(() => node.value ? nodeTypeStore.getNodeType(node.value.type) : void 0);
|
|
4948
|
+
const runData = computed(
|
|
4949
|
+
() => (workflowsStore.workflowExecutionData?.data?.resultData.runData[__props.logEntry.node] ?? [])[__props.logEntry.runIndex]
|
|
4950
|
+
);
|
|
4951
|
+
const consumedTokens2 = computed(() => getSubtreeTotalConsumedTokens(__props.logEntry));
|
|
4952
|
+
const isTriggerNode = computed(() => type.value?.group.includes("trigger"));
|
|
4953
|
+
const container2 = useTemplateRef("container");
|
|
4954
|
+
const resizer = useResizablePanel("N8N_LOGS_INPUT_PANEL_WIDTH", {
|
|
4955
|
+
container: container2,
|
|
4956
|
+
defaultSize: (size) => size / 2,
|
|
4957
|
+
minSize: MIN_IO_PANEL_WIDTH,
|
|
4958
|
+
maxSize: (size) => size - MIN_IO_PANEL_WIDTH,
|
|
4959
|
+
allowCollapse: true,
|
|
4960
|
+
allowFullSize: true
|
|
4961
|
+
});
|
|
4962
|
+
const shouldResize = computed(() => content2.value === LOG_DETAILS_CONTENT.BOTH);
|
|
4963
|
+
function handleToggleInput(open) {
|
|
4964
|
+
const wasOpen = [LOG_DETAILS_CONTENT.INPUT, LOG_DETAILS_CONTENT.BOTH].includes(content2.value);
|
|
4965
|
+
if (open === wasOpen) {
|
|
4966
|
+
return;
|
|
4967
|
+
}
|
|
4968
|
+
content2.value = wasOpen ? LOG_DETAILS_CONTENT.OUTPUT : LOG_DETAILS_CONTENT.BOTH;
|
|
4969
|
+
telemetry.track("User toggled log view sub pane", {
|
|
4970
|
+
pane: "input",
|
|
4971
|
+
newState: wasOpen ? "hidden" : "visible"
|
|
4972
|
+
});
|
|
4973
|
+
}
|
|
4974
|
+
function handleToggleOutput(open) {
|
|
4975
|
+
const wasOpen = [LOG_DETAILS_CONTENT.OUTPUT, LOG_DETAILS_CONTENT.BOTH].includes(content2.value);
|
|
4976
|
+
if (open === wasOpen) {
|
|
4977
|
+
return;
|
|
4978
|
+
}
|
|
4979
|
+
content2.value = wasOpen ? LOG_DETAILS_CONTENT.INPUT : LOG_DETAILS_CONTENT.BOTH;
|
|
4980
|
+
telemetry.track("User toggled log view sub pane", {
|
|
4981
|
+
pane: "output",
|
|
4982
|
+
newState: wasOpen ? "hidden" : "visible"
|
|
4983
|
+
});
|
|
4984
|
+
}
|
|
4985
|
+
function handleResizeEnd() {
|
|
4986
|
+
if (resizer.isCollapsed.value) {
|
|
4987
|
+
handleToggleInput(false);
|
|
4988
|
+
}
|
|
4989
|
+
if (resizer.isFullSize.value) {
|
|
4990
|
+
handleToggleOutput(false);
|
|
4991
|
+
}
|
|
4992
|
+
resizer.onResizeEnd();
|
|
4993
|
+
}
|
|
4897
4994
|
return (_ctx, _cache) => {
|
|
4898
4995
|
return openBlock(), createElementBlock("div", {
|
|
4996
|
+
ref_key: "container",
|
|
4997
|
+
ref: container2,
|
|
4899
4998
|
class: normalizeClass(_ctx.$style.container),
|
|
4900
4999
|
"data-test-id": "log-details"
|
|
4901
5000
|
}, [
|
|
4902
5001
|
createVNode(PanelHeader, {
|
|
4903
|
-
|
|
4904
|
-
"data-test-id": "logs-details-header",
|
|
5002
|
+
"data-test-id": "log-details-header",
|
|
4905
5003
|
onClick: _cache[0] || (_cache[0] = ($event) => emit("clickHeader"))
|
|
4906
5004
|
}, {
|
|
5005
|
+
title: withCtx(() => [
|
|
5006
|
+
createBaseVNode("div", {
|
|
5007
|
+
class: normalizeClass(_ctx.$style.title)
|
|
5008
|
+
}, [
|
|
5009
|
+
createVNode(_sfc_main$j, {
|
|
5010
|
+
"node-type": type.value,
|
|
5011
|
+
size: 16,
|
|
5012
|
+
class: normalizeClass(_ctx.$style.icon)
|
|
5013
|
+
}, null, 8, ["node-type", "class"]),
|
|
5014
|
+
createVNode(unref(N8nText), {
|
|
5015
|
+
tag: "div",
|
|
5016
|
+
bold: true,
|
|
5017
|
+
size: "small",
|
|
5018
|
+
class: normalizeClass(_ctx.$style.name)
|
|
5019
|
+
}, {
|
|
5020
|
+
default: withCtx(() => [
|
|
5021
|
+
createTextVNode(toDisplayString(node.value?.name), 1)
|
|
5022
|
+
]),
|
|
5023
|
+
_: 1
|
|
5024
|
+
}, 8, ["class"]),
|
|
5025
|
+
_ctx.isOpen ? (openBlock(), createBlock(ExecutionSummary, {
|
|
5026
|
+
key: 0,
|
|
5027
|
+
class: normalizeClass(_ctx.$style.executionSummary),
|
|
5028
|
+
status: runData.value?.executionStatus ?? "unknown",
|
|
5029
|
+
"consumed-tokens": consumedTokens2.value,
|
|
5030
|
+
"time-took": runData.value?.executionTime
|
|
5031
|
+
}, null, 8, ["class", "status", "consumed-tokens", "time-took"])) : createCommentVNode("", true)
|
|
5032
|
+
], 2)
|
|
5033
|
+
]),
|
|
4907
5034
|
actions: withCtx(() => [
|
|
5035
|
+
_ctx.isOpen && !isTriggerNode.value ? (openBlock(), createElementBlock("div", {
|
|
5036
|
+
key: 0,
|
|
5037
|
+
class: normalizeClass(_ctx.$style.actions)
|
|
5038
|
+
}, [
|
|
5039
|
+
createVNode(unref(N8nButton), {
|
|
5040
|
+
size: "mini",
|
|
5041
|
+
type: "secondary",
|
|
5042
|
+
class: normalizeClass(content2.value === unref(LOG_DETAILS_CONTENT).OUTPUT ? "" : _ctx.$style.pressed),
|
|
5043
|
+
onClick: withModifiers(handleToggleInput, ["stop"])
|
|
5044
|
+
}, {
|
|
5045
|
+
default: withCtx(() => [
|
|
5046
|
+
createTextVNode(toDisplayString(unref(locale).baseText("logs.details.header.actions.input")), 1)
|
|
5047
|
+
]),
|
|
5048
|
+
_: 1
|
|
5049
|
+
}, 8, ["class"]),
|
|
5050
|
+
createVNode(unref(N8nButton), {
|
|
5051
|
+
size: "mini",
|
|
5052
|
+
type: "secondary",
|
|
5053
|
+
class: normalizeClass(content2.value === unref(LOG_DETAILS_CONTENT).INPUT ? "" : _ctx.$style.pressed),
|
|
5054
|
+
onClick: withModifiers(handleToggleOutput, ["stop"])
|
|
5055
|
+
}, {
|
|
5056
|
+
default: withCtx(() => [
|
|
5057
|
+
createTextVNode(toDisplayString(unref(locale).baseText("logs.details.header.actions.output")), 1)
|
|
5058
|
+
]),
|
|
5059
|
+
_: 1
|
|
5060
|
+
}, 8, ["class"])
|
|
5061
|
+
], 2)) : createCommentVNode("", true),
|
|
4908
5062
|
renderSlot(_ctx.$slots, "actions")
|
|
4909
5063
|
]),
|
|
4910
5064
|
_: 3
|
|
@@ -4913,25 +5067,80 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
4913
5067
|
key: 0,
|
|
4914
5068
|
class: normalizeClass(_ctx.$style.content),
|
|
4915
5069
|
"data-test-id": "logs-details-body"
|
|
4916
|
-
},
|
|
5070
|
+
}, [
|
|
5071
|
+
!isTriggerNode.value && content2.value !== unref(LOG_DETAILS_CONTENT).OUTPUT ? (openBlock(), createBlock(unref(N8nResizeWrapper), {
|
|
5072
|
+
key: 0,
|
|
5073
|
+
class: normalizeClass({
|
|
5074
|
+
[_ctx.$style.inputResizer]: true,
|
|
5075
|
+
[_ctx.$style.collapsed]: unref(resizer).isCollapsed.value,
|
|
5076
|
+
[_ctx.$style.full]: unref(resizer).isFullSize.value
|
|
5077
|
+
}),
|
|
5078
|
+
width: unref(resizer).size.value,
|
|
5079
|
+
style: normalizeStyle(shouldResize.value ? { width: `${unref(resizer).size.value ?? 0}px` } : void 0),
|
|
5080
|
+
"supported-directions": ["right"],
|
|
5081
|
+
"is-resizing-enabled": shouldResize.value,
|
|
5082
|
+
window: _ctx.window,
|
|
5083
|
+
onResize: unref(resizer).onResize,
|
|
5084
|
+
onResizeend: handleResizeEnd
|
|
5085
|
+
}, {
|
|
5086
|
+
default: withCtx(() => [
|
|
5087
|
+
createVNode(RunDataView, {
|
|
5088
|
+
"data-test-id": "log-details-input",
|
|
5089
|
+
"pane-type": "input",
|
|
5090
|
+
title: unref(locale).baseText("logs.details.header.actions.input"),
|
|
5091
|
+
"log-entry": _ctx.logEntry
|
|
5092
|
+
}, null, 8, ["title", "log-entry"])
|
|
5093
|
+
]),
|
|
5094
|
+
_: 1
|
|
5095
|
+
}, 8, ["class", "width", "style", "is-resizing-enabled", "window", "onResize"])) : createCommentVNode("", true),
|
|
5096
|
+
isTriggerNode.value || content2.value !== unref(LOG_DETAILS_CONTENT).INPUT ? (openBlock(), createBlock(RunDataView, {
|
|
5097
|
+
key: 1,
|
|
5098
|
+
"data-test-id": "log-details-output",
|
|
5099
|
+
"pane-type": "output",
|
|
5100
|
+
class: normalizeClass(_ctx.$style.outputPanel),
|
|
5101
|
+
title: unref(locale).baseText("logs.details.header.actions.output"),
|
|
5102
|
+
"log-entry": _ctx.logEntry
|
|
5103
|
+
}, null, 8, ["class", "title", "log-entry"])) : createCommentVNode("", true)
|
|
5104
|
+
], 2)) : createCommentVNode("", true)
|
|
4917
5105
|
], 2);
|
|
4918
5106
|
};
|
|
4919
5107
|
}
|
|
4920
5108
|
});
|
|
4921
|
-
const container$
|
|
4922
|
-
const
|
|
4923
|
-
const
|
|
4924
|
-
|
|
4925
|
-
|
|
5109
|
+
const container$2 = "_container_v1vl1_123";
|
|
5110
|
+
const actions = "_actions_v1vl1_132";
|
|
5111
|
+
const pressed = "_pressed_v1vl1_138";
|
|
5112
|
+
const title = "_title_v1vl1_142";
|
|
5113
|
+
const icon = "_icon_v1vl1_148";
|
|
5114
|
+
const name = "_name_v1vl1_152";
|
|
5115
|
+
const executionSummary = "_executionSummary_v1vl1_158";
|
|
5116
|
+
const content = "_content_v1vl1_162";
|
|
5117
|
+
const outputPanel = "_outputPanel_v1vl1_170";
|
|
5118
|
+
const inputResizer = "_inputResizer_v1vl1_175";
|
|
5119
|
+
const collapsed = "_collapsed_v1vl1_179";
|
|
5120
|
+
const full = "_full_v1vl1_179";
|
|
5121
|
+
const style0$2 = {
|
|
5122
|
+
container: container$2,
|
|
5123
|
+
actions,
|
|
5124
|
+
pressed,
|
|
5125
|
+
title,
|
|
5126
|
+
icon,
|
|
5127
|
+
name,
|
|
5128
|
+
executionSummary,
|
|
5129
|
+
content,
|
|
5130
|
+
outputPanel,
|
|
5131
|
+
inputResizer,
|
|
5132
|
+
collapsed,
|
|
5133
|
+
full
|
|
4926
5134
|
};
|
|
4927
|
-
const cssModules$
|
|
4928
|
-
"$style": style0$
|
|
5135
|
+
const cssModules$2 = {
|
|
5136
|
+
"$style": style0$2
|
|
4929
5137
|
};
|
|
4930
|
-
const LogsDetailsPanel = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
4931
|
-
const _sfc_main$
|
|
5138
|
+
const LogsDetailsPanel = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__cssModules", cssModules$2]]);
|
|
5139
|
+
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
4932
5140
|
__name: "LogsPanelActions",
|
|
4933
5141
|
props: {
|
|
4934
|
-
|
|
5142
|
+
isOpen: { type: Boolean },
|
|
5143
|
+
showToggleButton: { type: Boolean },
|
|
4935
5144
|
showPopOutButton: { type: Boolean }
|
|
4936
5145
|
},
|
|
4937
5146
|
emits: ["popOut", "toggleOpen"],
|
|
@@ -4942,19 +5151,19 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
4942
5151
|
const tooltipZIndex = computed(() => appStyles.APP_Z_INDEXES.ASK_ASSISTANT_FLOATING_BUTTON + 100);
|
|
4943
5152
|
const popOutButtonText = computed(() => locales.baseText("runData.panel.actions.popOut"));
|
|
4944
5153
|
const toggleButtonText = computed(
|
|
4945
|
-
() => locales.baseText(
|
|
4946
|
-
__props.panelState === LOGS_PANEL_STATE.ATTACHED ? "runData.panel.actions.collapse" : "runData.panel.actions.open"
|
|
4947
|
-
)
|
|
5154
|
+
() => locales.baseText(__props.isOpen ? "runData.panel.actions.collapse" : "runData.panel.actions.open")
|
|
4948
5155
|
);
|
|
4949
5156
|
return (_ctx, _cache) => {
|
|
4950
|
-
return openBlock(), createElementBlock("div",
|
|
5157
|
+
return openBlock(), createElementBlock("div", {
|
|
5158
|
+
class: normalizeClass(_ctx.$style.container)
|
|
5159
|
+
}, [
|
|
4951
5160
|
_ctx.showPopOutButton ? (openBlock(), createBlock(unref(N8nTooltip), {
|
|
4952
5161
|
key: 0,
|
|
4953
5162
|
"z-index": tooltipZIndex.value,
|
|
4954
5163
|
content: popOutButtonText.value
|
|
4955
5164
|
}, {
|
|
4956
5165
|
default: withCtx(() => [
|
|
4957
|
-
createVNode(unref(_sfc_main$
|
|
5166
|
+
createVNode(unref(_sfc_main$h), {
|
|
4958
5167
|
icon: "pop-out",
|
|
4959
5168
|
type: "secondary",
|
|
4960
5169
|
size: "small",
|
|
@@ -4965,17 +5174,17 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
4965
5174
|
]),
|
|
4966
5175
|
_: 1
|
|
4967
5176
|
}, 8, ["z-index", "content"])) : createCommentVNode("", true),
|
|
4968
|
-
_ctx.
|
|
5177
|
+
_ctx.showToggleButton ? (openBlock(), createBlock(unref(N8nTooltip), {
|
|
4969
5178
|
key: 1,
|
|
4970
5179
|
"z-index": tooltipZIndex.value,
|
|
4971
5180
|
content: toggleButtonText.value
|
|
4972
5181
|
}, {
|
|
4973
5182
|
default: withCtx(() => [
|
|
4974
|
-
createVNode(unref(_sfc_main$
|
|
5183
|
+
createVNode(unref(_sfc_main$h), {
|
|
4975
5184
|
type: "secondary",
|
|
4976
5185
|
size: "small",
|
|
4977
5186
|
"icon-size": "medium",
|
|
4978
|
-
icon: _ctx.
|
|
5187
|
+
icon: _ctx.isOpen ? "chevron-down" : "chevron-up",
|
|
4979
5188
|
"aria-label": toggleButtonText.value,
|
|
4980
5189
|
style: { "color": "var(--color-text-base)" },
|
|
4981
5190
|
onClick: _cache[1] || (_cache[1] = withModifiers(($event) => emit("toggleOpen"), ["stop"]))
|
|
@@ -4983,78 +5192,188 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
4983
5192
|
]),
|
|
4984
5193
|
_: 1
|
|
4985
5194
|
}, 8, ["z-index", "content"])) : createCommentVNode("", true)
|
|
4986
|
-
]);
|
|
5195
|
+
], 2);
|
|
4987
5196
|
};
|
|
4988
5197
|
}
|
|
4989
5198
|
});
|
|
4990
|
-
const
|
|
5199
|
+
const container$1 = "_container_1qwjg_123";
|
|
5200
|
+
const style0$1 = {
|
|
5201
|
+
container: container$1
|
|
5202
|
+
};
|
|
5203
|
+
const cssModules$1 = {
|
|
5204
|
+
"$style": style0$1
|
|
5205
|
+
};
|
|
5206
|
+
const LogsPanelActions = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules$1]]);
|
|
5207
|
+
function useLayout(pipContainer, pipContent2, container2, logsContainer2) {
|
|
5208
|
+
const canvasStore = useCanvasStore();
|
|
5209
|
+
const telemetry = useTelemetry();
|
|
5210
|
+
const workflowsStore = useWorkflowsStore();
|
|
5211
|
+
const panelState = computed(() => workflowsStore.logsPanelState);
|
|
5212
|
+
const resizer = useResizablePanel(LOCAL_STORAGE_PANEL_HEIGHT, {
|
|
5213
|
+
container: document.body,
|
|
5214
|
+
position: "bottom",
|
|
5215
|
+
snap: false,
|
|
5216
|
+
defaultSize: (size) => size * 0.3,
|
|
5217
|
+
minSize: 160,
|
|
5218
|
+
maxSize: (size) => size * 0.75,
|
|
5219
|
+
allowCollapse: true
|
|
5220
|
+
});
|
|
5221
|
+
const chatPanelResizer = useResizablePanel(LOCAL_STORAGE_PANEL_WIDTH, {
|
|
5222
|
+
container: container2,
|
|
5223
|
+
defaultSize: (size) => size * 0.3,
|
|
5224
|
+
minSize: 300,
|
|
5225
|
+
maxSize: (size) => size * 0.8
|
|
5226
|
+
});
|
|
5227
|
+
const overviewPanelResizer = useResizablePanel(LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH, {
|
|
5228
|
+
container: logsContainer2,
|
|
5229
|
+
defaultSize: (size) => size * 0.3,
|
|
5230
|
+
minSize: 80,
|
|
5231
|
+
maxSize: 500,
|
|
5232
|
+
allowFullSize: true
|
|
5233
|
+
});
|
|
5234
|
+
const isOpen = computed(
|
|
5235
|
+
() => panelState.value === LOGS_PANEL_STATE.CLOSED ? resizer.isResizing.value && resizer.size.value > 0 : !resizer.isCollapsed.value
|
|
5236
|
+
);
|
|
5237
|
+
const isCollapsingDetailsPanel = computed(() => overviewPanelResizer.isFullSize.value);
|
|
5238
|
+
const { canPopOut, isPoppedOut, pipWindow } = usePiPWindow({
|
|
5239
|
+
initialHeight: 400,
|
|
5240
|
+
initialWidth: window.document.body.offsetWidth * 0.8,
|
|
5241
|
+
container: pipContainer,
|
|
5242
|
+
content: pipContent2,
|
|
5243
|
+
shouldPopOut: computed(() => panelState.value === LOGS_PANEL_STATE.FLOATING),
|
|
5244
|
+
onRequestClose: () => {
|
|
5245
|
+
if (!isOpen.value) {
|
|
5246
|
+
return;
|
|
5247
|
+
}
|
|
5248
|
+
telemetry.track("User toggled log view", { new_state: "attached" });
|
|
5249
|
+
workflowsStore.setPreferPoppedOutLogsView(false);
|
|
5250
|
+
}
|
|
5251
|
+
});
|
|
5252
|
+
function handleToggleOpen(open) {
|
|
5253
|
+
const wasOpen = panelState.value !== LOGS_PANEL_STATE.CLOSED;
|
|
5254
|
+
if (open === wasOpen) {
|
|
5255
|
+
return;
|
|
5256
|
+
}
|
|
5257
|
+
workflowsStore.toggleLogsPanelOpen(open);
|
|
5258
|
+
telemetry.track("User toggled log view", {
|
|
5259
|
+
new_state: wasOpen ? "collapsed" : "attached"
|
|
5260
|
+
});
|
|
5261
|
+
}
|
|
5262
|
+
function handlePopOut() {
|
|
5263
|
+
telemetry.track("User toggled log view", { new_state: "floating" });
|
|
5264
|
+
workflowsStore.toggleLogsPanelOpen(true);
|
|
5265
|
+
workflowsStore.setPreferPoppedOutLogsView(true);
|
|
5266
|
+
}
|
|
5267
|
+
function handleResizeEnd() {
|
|
5268
|
+
if (panelState.value === LOGS_PANEL_STATE.CLOSED && !resizer.isCollapsed.value) {
|
|
5269
|
+
handleToggleOpen(true);
|
|
5270
|
+
}
|
|
5271
|
+
if (resizer.isCollapsed.value) {
|
|
5272
|
+
handleToggleOpen(false);
|
|
5273
|
+
}
|
|
5274
|
+
resizer.onResizeEnd();
|
|
5275
|
+
}
|
|
5276
|
+
watch([panelState, resizer.size], ([state, height]) => {
|
|
5277
|
+
canvasStore.setPanelHeight(
|
|
5278
|
+
state === LOGS_PANEL_STATE.FLOATING ? 0 : state === LOGS_PANEL_STATE.ATTACHED ? height : 32
|
|
5279
|
+
);
|
|
5280
|
+
});
|
|
5281
|
+
return {
|
|
5282
|
+
height: resizer.size,
|
|
5283
|
+
chatPanelWidth: chatPanelResizer.size,
|
|
5284
|
+
overviewPanelWidth: overviewPanelResizer.size,
|
|
5285
|
+
canPopOut,
|
|
5286
|
+
isOpen,
|
|
5287
|
+
isCollapsingDetailsPanel,
|
|
5288
|
+
isPoppedOut,
|
|
5289
|
+
isOverviewPanelFullWidth: overviewPanelResizer.isFullSize,
|
|
5290
|
+
pipWindow,
|
|
5291
|
+
onToggleOpen: handleToggleOpen,
|
|
5292
|
+
onPopOut: handlePopOut,
|
|
5293
|
+
onResize: resizer.onResize,
|
|
5294
|
+
onResizeEnd: handleResizeEnd,
|
|
5295
|
+
onChatPanelResize: chatPanelResizer.onResize,
|
|
5296
|
+
onChatPanelResizeEnd: chatPanelResizer.onResizeEnd,
|
|
5297
|
+
onOverviewPanelResize: overviewPanelResizer.onResize,
|
|
5298
|
+
onOverviewPanelResizeEnd: overviewPanelResizer.onResizeEnd
|
|
5299
|
+
};
|
|
5300
|
+
}
|
|
5301
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4991
5302
|
__name: "LogsPanel",
|
|
5303
|
+
props: {
|
|
5304
|
+
isReadOnly: { type: Boolean, default: false }
|
|
5305
|
+
},
|
|
4992
5306
|
setup(__props) {
|
|
5307
|
+
const props = __props;
|
|
4993
5308
|
const workflowsStore = useWorkflowsStore();
|
|
4994
|
-
const
|
|
4995
|
-
const
|
|
4996
|
-
const container2 = ref();
|
|
4997
|
-
const selectedLogEntry = ref(void 0);
|
|
5309
|
+
const container2 = useTemplateRef("container");
|
|
5310
|
+
const logsContainer2 = useTemplateRef("logsContainer");
|
|
4998
5311
|
const pipContainer = useTemplateRef("pipContainer");
|
|
4999
5312
|
const pipContent2 = useTemplateRef("pipContent");
|
|
5000
5313
|
const previousChatMessages = computed(() => workflowsStore.getPastChatMessages);
|
|
5314
|
+
const {
|
|
5315
|
+
height,
|
|
5316
|
+
chatPanelWidth,
|
|
5317
|
+
overviewPanelWidth,
|
|
5318
|
+
canPopOut,
|
|
5319
|
+
isOpen,
|
|
5320
|
+
isPoppedOut,
|
|
5321
|
+
isCollapsingDetailsPanel,
|
|
5322
|
+
isOverviewPanelFullWidth,
|
|
5323
|
+
pipWindow,
|
|
5324
|
+
onResize,
|
|
5325
|
+
onResizeEnd,
|
|
5326
|
+
onToggleOpen,
|
|
5327
|
+
onPopOut,
|
|
5328
|
+
onChatPanelResize,
|
|
5329
|
+
onChatPanelResizeEnd,
|
|
5330
|
+
onOverviewPanelResize,
|
|
5331
|
+
onOverviewPanelResizeEnd
|
|
5332
|
+
} = useLayout(pipContainer, pipContent2, container2, logsContainer2);
|
|
5333
|
+
const { currentSessionId, messages: messages2, sendMessage, refreshSession, displayExecution } = useChatState(
|
|
5334
|
+
props.isReadOnly
|
|
5335
|
+
);
|
|
5001
5336
|
const hasChat = computed(
|
|
5002
|
-
() => workflowsStore.workflowTriggerNodes.some(
|
|
5003
|
-
|
|
5337
|
+
() => workflowsStore.workflowTriggerNodes.some(isChatNode) && (!props.isReadOnly || messages2.value.length > 0)
|
|
5338
|
+
);
|
|
5339
|
+
const workflow = computed(() => workflowsStore.getCurrentWorkflow());
|
|
5340
|
+
const executionTree = computed(
|
|
5341
|
+
() => createLogEntries(
|
|
5342
|
+
workflow.value,
|
|
5343
|
+
workflowsStore.workflowExecutionData?.data?.resultData.runData ?? {}
|
|
5004
5344
|
)
|
|
5005
5345
|
);
|
|
5006
|
-
const
|
|
5007
|
-
const
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5346
|
+
const manualLogEntrySelection = ref({ type: "initial" });
|
|
5347
|
+
const autoSelectedLogEntry = computed(
|
|
5348
|
+
() => findLogEntryToAutoSelect(
|
|
5349
|
+
executionTree.value,
|
|
5350
|
+
workflowsStore.nodesByName,
|
|
5351
|
+
workflowsStore.workflowExecutionData?.data?.resultData.runData ?? {}
|
|
5352
|
+
)
|
|
5011
5353
|
);
|
|
5012
|
-
const
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
onRequestClose: () => {
|
|
5020
|
-
if (panelState.value === LOGS_PANEL_STATE.CLOSED) {
|
|
5021
|
-
return;
|
|
5022
|
-
}
|
|
5023
|
-
telemetry.track("User toggled log view", { new_state: "attached" });
|
|
5024
|
-
workflowsStore.setPreferPoppedOutLogsView(false);
|
|
5025
|
-
}
|
|
5026
|
-
});
|
|
5354
|
+
const selectedLogEntry = computed(
|
|
5355
|
+
() => manualLogEntrySelection.value.type === "initial" || manualLogEntrySelection.value.workflowId !== workflowsStore.workflow.id ? autoSelectedLogEntry.value : manualLogEntrySelection.value.type === "none" ? void 0 : manualLogEntrySelection.value.data
|
|
5356
|
+
);
|
|
5357
|
+
const isLogDetailsOpen = computed(
|
|
5358
|
+
() => selectedLogEntry.value !== void 0 && !isCollapsingDetailsPanel.value
|
|
5359
|
+
);
|
|
5360
|
+
const isLogDetailsOpenOrCollapsing = computed(() => selectedLogEntry.value !== void 0);
|
|
5027
5361
|
const logsPanelActionsProps = computed(() => ({
|
|
5028
|
-
|
|
5362
|
+
isOpen: isOpen.value,
|
|
5363
|
+
showToggleButton: !isPoppedOut.value,
|
|
5029
5364
|
showPopOutButton: canPopOut.value && !isPoppedOut.value,
|
|
5030
5365
|
onPopOut,
|
|
5031
5366
|
onToggleOpen
|
|
5032
5367
|
}));
|
|
5033
|
-
function onToggleOpen() {
|
|
5034
|
-
workflowsStore.toggleLogsPanelOpen();
|
|
5035
|
-
telemetry.track("User toggled log view", {
|
|
5036
|
-
new_state: panelState.value === LOGS_PANEL_STATE.CLOSED ? "attached" : "collapsed"
|
|
5037
|
-
});
|
|
5038
|
-
}
|
|
5039
|
-
function handleClickHeader() {
|
|
5040
|
-
if (panelState.value === LOGS_PANEL_STATE.CLOSED) {
|
|
5041
|
-
telemetry.track("User toggled log view", { new_state: "attached" });
|
|
5042
|
-
workflowsStore.toggleLogsPanelOpen(true);
|
|
5043
|
-
}
|
|
5044
|
-
}
|
|
5045
5368
|
function handleSelectLogEntry(selected2) {
|
|
5046
|
-
|
|
5369
|
+
manualLogEntrySelection.value = selected2 === void 0 ? { type: "none", workflowId: workflowsStore.workflow.id } : { type: "selected", workflowId: workflowsStore.workflow.id, data: selected2 };
|
|
5047
5370
|
}
|
|
5048
|
-
function
|
|
5049
|
-
|
|
5050
|
-
|
|
5051
|
-
|
|
5371
|
+
function handleResizeOverviewPanelEnd() {
|
|
5372
|
+
if (isOverviewPanelFullWidth.value) {
|
|
5373
|
+
handleSelectLogEntry(void 0);
|
|
5374
|
+
}
|
|
5375
|
+
onOverviewPanelResizeEnd();
|
|
5052
5376
|
}
|
|
5053
|
-
watch([panelState, height], ([state, h]) => {
|
|
5054
|
-
canvasStore.setPanelHeight(
|
|
5055
|
-
state === LOGS_PANEL_STATE.FLOATING ? 0 : state === LOGS_PANEL_STATE.ATTACHED ? h : 32
|
|
5056
|
-
);
|
|
5057
|
-
});
|
|
5058
5377
|
return (_ctx, _cache) => {
|
|
5059
5378
|
return openBlock(), createElementBlock("div", {
|
|
5060
5379
|
ref_key: "pipContainer",
|
|
@@ -5068,10 +5387,11 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5068
5387
|
createVNode(unref(N8nResizeWrapper), {
|
|
5069
5388
|
height: unref(height),
|
|
5070
5389
|
"supported-directions": ["top"],
|
|
5071
|
-
"is-resizing-enabled":
|
|
5072
|
-
|
|
5073
|
-
|
|
5074
|
-
onResize: unref(
|
|
5390
|
+
"is-resizing-enabled": !unref(isPoppedOut),
|
|
5391
|
+
class: normalizeClass(_ctx.$style.resizeWrapper),
|
|
5392
|
+
style: normalizeStyle({ height: unref(isOpen) ? `${unref(height)}px` : "auto" }),
|
|
5393
|
+
onResize: unref(onResize),
|
|
5394
|
+
onResizeend: unref(onResizeEnd)
|
|
5075
5395
|
}, {
|
|
5076
5396
|
default: withCtx(() => [
|
|
5077
5397
|
createBaseVNode("div", {
|
|
@@ -5083,92 +5403,116 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5083
5403
|
hasChat.value ? (openBlock(), createBlock(unref(N8nResizeWrapper), {
|
|
5084
5404
|
key: 0,
|
|
5085
5405
|
"supported-directions": ["right"],
|
|
5086
|
-
"is-resizing-enabled":
|
|
5087
|
-
width: unref(
|
|
5406
|
+
"is-resizing-enabled": unref(isOpen),
|
|
5407
|
+
width: unref(chatPanelWidth),
|
|
5408
|
+
style: normalizeStyle({ width: `${unref(chatPanelWidth)}px` }),
|
|
5088
5409
|
class: normalizeClass(_ctx.$style.chat),
|
|
5089
5410
|
window: unref(pipWindow),
|
|
5090
|
-
onResize: unref(
|
|
5411
|
+
onResize: unref(onChatPanelResize),
|
|
5412
|
+
onResizeend: unref(onChatPanelResizeEnd)
|
|
5091
5413
|
}, {
|
|
5092
5414
|
default: withCtx(() => [
|
|
5093
5415
|
createVNode(ChatMessagesPanel, {
|
|
5094
5416
|
"data-test-id": "canvas-chat",
|
|
5095
|
-
"is-open":
|
|
5417
|
+
"is-open": unref(isOpen),
|
|
5418
|
+
"is-read-only": _ctx.isReadOnly,
|
|
5096
5419
|
messages: unref(messages2),
|
|
5097
5420
|
"session-id": unref(currentSessionId),
|
|
5098
5421
|
"past-chat-messages": previousChatMessages.value,
|
|
5099
5422
|
"show-close-button": false,
|
|
5100
5423
|
"is-new-logs-enabled": true,
|
|
5101
|
-
onClose: onToggleOpen,
|
|
5424
|
+
onClose: unref(onToggleOpen),
|
|
5102
5425
|
onRefreshSession: unref(refreshSession),
|
|
5103
5426
|
onDisplayExecution: unref(displayExecution),
|
|
5104
5427
|
onSendMessage: unref(sendMessage),
|
|
5105
|
-
onClickHeader:
|
|
5106
|
-
}, null, 8, ["is-open", "messages", "session-id", "past-chat-messages", "onRefreshSession", "onDisplayExecution", "onSendMessage"])
|
|
5107
|
-
]),
|
|
5108
|
-
_: 1
|
|
5109
|
-
}, 8, ["is-resizing-enabled", "width", "class", "window", "onResize"])) : createCommentVNode("", true),
|
|
5110
|
-
createVNode(LogsOverviewPanel, {
|
|
5111
|
-
class: normalizeClass(_ctx.$style.logsOverview),
|
|
5112
|
-
"is-open": panelState.value !== unref(LOGS_PANEL_STATE).CLOSED,
|
|
5113
|
-
selected: selectedLogEntry.value,
|
|
5114
|
-
onClickHeader: handleClickHeader,
|
|
5115
|
-
onSelect: handleSelectLogEntry
|
|
5116
|
-
}, {
|
|
5117
|
-
actions: withCtx(() => [
|
|
5118
|
-
!isLogDetailsOpen.value ? (openBlock(), createBlock(_sfc_main$2, normalizeProps(mergeProps({ key: 0 }, logsPanelActionsProps.value)), null, 16)) : createCommentVNode("", true)
|
|
5119
|
-
]),
|
|
5120
|
-
_: 1
|
|
5121
|
-
}, 8, ["class", "is-open", "selected"]),
|
|
5122
|
-
selectedLogEntry.value ? (openBlock(), createBlock(LogsDetailsPanel, {
|
|
5123
|
-
key: 1,
|
|
5124
|
-
class: normalizeClass(_ctx.$style.logDetails),
|
|
5125
|
-
"is-open": panelState.value !== unref(LOGS_PANEL_STATE).CLOSED,
|
|
5126
|
-
onClickHeader: handleClickHeader
|
|
5127
|
-
}, {
|
|
5128
|
-
actions: withCtx(() => [
|
|
5129
|
-
isLogDetailsOpen.value ? (openBlock(), createBlock(_sfc_main$2, normalizeProps(mergeProps({ key: 0 }, logsPanelActionsProps.value)), null, 16)) : createCommentVNode("", true)
|
|
5428
|
+
onClickHeader: _cache[0] || (_cache[0] = ($event) => unref(onToggleOpen)(true))
|
|
5429
|
+
}, null, 8, ["is-open", "is-read-only", "messages", "session-id", "past-chat-messages", "onClose", "onRefreshSession", "onDisplayExecution", "onSendMessage"])
|
|
5130
5430
|
]),
|
|
5131
5431
|
_: 1
|
|
5132
|
-
}, 8, ["class", "
|
|
5432
|
+
}, 8, ["is-resizing-enabled", "width", "style", "class", "window", "onResize", "onResizeend"])) : createCommentVNode("", true),
|
|
5433
|
+
createBaseVNode("div", {
|
|
5434
|
+
ref_key: "logsContainer",
|
|
5435
|
+
ref: logsContainer2,
|
|
5436
|
+
class: normalizeClass(_ctx.$style.logsContainer)
|
|
5437
|
+
}, [
|
|
5438
|
+
createVNode(unref(N8nResizeWrapper), {
|
|
5439
|
+
class: normalizeClass(_ctx.$style.overviewResizer),
|
|
5440
|
+
width: unref(overviewPanelWidth),
|
|
5441
|
+
style: normalizeStyle({ width: isLogDetailsOpen.value ? `${unref(overviewPanelWidth)}px` : "" }),
|
|
5442
|
+
"supported-directions": ["right"],
|
|
5443
|
+
"is-resizing-enabled": isLogDetailsOpenOrCollapsing.value,
|
|
5444
|
+
window: unref(pipWindow),
|
|
5445
|
+
onResize: unref(onOverviewPanelResize),
|
|
5446
|
+
onResizeend: handleResizeOverviewPanelEnd
|
|
5447
|
+
}, {
|
|
5448
|
+
default: withCtx(() => [
|
|
5449
|
+
createVNode(LogsOverviewPanel, {
|
|
5450
|
+
class: normalizeClass(_ctx.$style.logsOverview),
|
|
5451
|
+
"is-open": unref(isOpen),
|
|
5452
|
+
"is-read-only": _ctx.isReadOnly,
|
|
5453
|
+
"is-compact": isLogDetailsOpen.value,
|
|
5454
|
+
selected: selectedLogEntry.value,
|
|
5455
|
+
"execution-tree": executionTree.value,
|
|
5456
|
+
onClickHeader: _cache[1] || (_cache[1] = ($event) => unref(onToggleOpen)(true)),
|
|
5457
|
+
onSelect: handleSelectLogEntry
|
|
5458
|
+
}, {
|
|
5459
|
+
actions: withCtx(() => [
|
|
5460
|
+
!isLogDetailsOpen.value ? (openBlock(), createBlock(LogsPanelActions, normalizeProps(mergeProps({ key: 0 }, logsPanelActionsProps.value)), null, 16)) : createCommentVNode("", true)
|
|
5461
|
+
]),
|
|
5462
|
+
_: 1
|
|
5463
|
+
}, 8, ["class", "is-open", "is-read-only", "is-compact", "selected", "execution-tree"])
|
|
5464
|
+
]),
|
|
5465
|
+
_: 1
|
|
5466
|
+
}, 8, ["class", "width", "style", "is-resizing-enabled", "window", "onResize"]),
|
|
5467
|
+
isLogDetailsOpenOrCollapsing.value && selectedLogEntry.value ? (openBlock(), createBlock(LogsDetailsPanel, {
|
|
5468
|
+
key: 0,
|
|
5469
|
+
class: normalizeClass(_ctx.$style.logDetails),
|
|
5470
|
+
"is-open": unref(isOpen),
|
|
5471
|
+
"log-entry": selectedLogEntry.value,
|
|
5472
|
+
window: unref(pipWindow),
|
|
5473
|
+
onClickHeader: _cache[2] || (_cache[2] = ($event) => unref(onToggleOpen)(true))
|
|
5474
|
+
}, {
|
|
5475
|
+
actions: withCtx(() => [
|
|
5476
|
+
isLogDetailsOpen.value ? (openBlock(), createBlock(LogsPanelActions, normalizeProps(mergeProps({ key: 0 }, logsPanelActionsProps.value)), null, 16)) : createCommentVNode("", true)
|
|
5477
|
+
]),
|
|
5478
|
+
_: 1
|
|
5479
|
+
}, 8, ["class", "is-open", "log-entry", "window"])) : createCommentVNode("", true)
|
|
5480
|
+
], 2)
|
|
5133
5481
|
], 2)
|
|
5134
5482
|
]),
|
|
5135
5483
|
_: 1
|
|
5136
|
-
}, 8, ["height", "is-resizing-enabled", "
|
|
5484
|
+
}, 8, ["height", "is-resizing-enabled", "class", "style", "onResize", "onResizeend"])
|
|
5137
5485
|
], 2)
|
|
5138
5486
|
], 512);
|
|
5139
5487
|
};
|
|
5140
5488
|
}
|
|
5141
5489
|
});
|
|
5142
|
-
const resizeWrapper = "
|
|
5143
|
-
const pipContent = "
|
|
5144
|
-
const
|
|
5145
|
-
const
|
|
5146
|
-
const
|
|
5147
|
-
const
|
|
5148
|
-
const
|
|
5490
|
+
const resizeWrapper = "_resizeWrapper_19m2p_124";
|
|
5491
|
+
const pipContent = "_pipContent_19m2p_129";
|
|
5492
|
+
const container = "_container_19m2p_143";
|
|
5493
|
+
const chat = "_chat_19m2p_152";
|
|
5494
|
+
const logsContainer = "_logsContainer_19m2p_156";
|
|
5495
|
+
const overviewResizer = "_overviewResizer_19m2p_166";
|
|
5496
|
+
const logsOverview = "_logsOverview_19m2p_174";
|
|
5497
|
+
const logsDetails = "_logsDetails_19m2p_178";
|
|
5149
5498
|
const style0 = {
|
|
5150
5499
|
resizeWrapper,
|
|
5151
5500
|
pipContent,
|
|
5152
|
-
isOpen,
|
|
5153
5501
|
container,
|
|
5154
5502
|
chat,
|
|
5503
|
+
logsContainer,
|
|
5504
|
+
overviewResizer,
|
|
5155
5505
|
logsOverview,
|
|
5156
|
-
|
|
5506
|
+
logsDetails
|
|
5157
5507
|
};
|
|
5158
5508
|
const cssModules = {
|
|
5159
5509
|
"$style": style0
|
|
5160
5510
|
};
|
|
5161
|
-
const LogsPanel = /* @__PURE__ */ _export_sfc(_sfc_main
|
|
5162
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5163
|
-
__name: "CanvasChatSwitch",
|
|
5164
|
-
setup(__props) {
|
|
5165
|
-
const { isNewLogsEnabled } = useSettingsStore();
|
|
5166
|
-
return (_ctx, _cache) => {
|
|
5167
|
-
const _component_CanvasChat = __unplugin_components_0;
|
|
5168
|
-
return unref(isNewLogsEnabled) ? (openBlock(), createBlock(LogsPanel, { key: 0 })) : (openBlock(), createBlock(_component_CanvasChat, { key: 1 }));
|
|
5169
|
-
};
|
|
5170
|
-
}
|
|
5171
|
-
});
|
|
5511
|
+
const LogsPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
|
|
5172
5512
|
export {
|
|
5173
|
-
|
|
5513
|
+
ChatMessagesPanel as C,
|
|
5514
|
+
LogsPanel as L,
|
|
5515
|
+
usePiPWindow as a,
|
|
5516
|
+
useChatState as b,
|
|
5517
|
+
useResize as u
|
|
5174
5518
|
};
|