n8n-editor-ui 1.107.3 → 1.109.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/assets/{AddDataStoreModal-BWJ9lPXD.js → AddDataStoreModal-DQSrUeGv.js} +27 -10
  2. package/dist/assets/{AnimatedSpinner-DNlzAAjE.js → AnimatedSpinner-DG0OJkY1.js} +1 -1
  3. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CNykFw3C.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DL7yrAdr.js} +1 -1
  4. package/dist/assets/{AuthView-CBZF2tp7.js → AuthView-BjsoW1-5.js} +2 -2
  5. package/dist/assets/{ChangePasswordView-BNZ4Lec-.js → ChangePasswordView-wL-Pegb8.js} +3 -3
  6. package/dist/assets/CollectionParameter-CGRCLW5F.js +4 -0
  7. package/dist/assets/{ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CWb4OBYA.js → ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-Y9jgPwUm.js} +1 -1
  8. package/dist/assets/{CredentialsView-CsNObRPu.js → CredentialsView-Cp-dKa-6.js} +8 -8
  9. package/dist/assets/DataStoreActions.vue_vue_type_script_setup_true_lang-jUSBJd47.js +89 -0
  10. package/dist/assets/{WorkflowActivator-22RW64G2.css → DataStoreDetailsView-BxDmY87S.css} +268 -200
  11. package/dist/assets/DataStoreDetailsView-D9YNa5HC.js +41178 -0
  12. package/dist/assets/{DataStoreView-BNXibrgV.js → DataStoreView-Bs-qcZ8z.js} +63 -155
  13. package/dist/assets/{DataStoreView-D-Wmcgs5.css → DataStoreView-bZrewhaR.css} +10 -15
  14. package/dist/assets/{DemoFooter-DN__rQTx.js → DemoFooter-DPTKA9IL.js} +6 -6
  15. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-BLs3shin.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-DiIUOGo1.js} +1 -1
  16. package/dist/assets/{EntityNotFound-DwzIV-IA.js → EntityNotFound-7GWizCKV.js} +1 -1
  17. package/dist/assets/{EntityUnAuthorised-Uk7UofGI.js → EntityUnAuthorised-BGNR4Y6R.js} +1 -1
  18. package/dist/assets/{ErrorView-2aaHp4mm.js → ErrorView-Dbc4jM8G.js} +1 -1
  19. package/dist/assets/{EvaluationsRootView-DajOMNNe.js → EvaluationsRootView-bKi3SFkK.js} +1 -1
  20. package/dist/assets/{EvaluationsView-D9B7p6ca.js → EvaluationsView-URJMmngS.js} +4 -4
  21. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-xG0FUKDV.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-C8GA5YsR.js} +4 -4
  22. package/dist/assets/{ExecutionsView-CcstUltt.js → ExecutionsView-C32NF_Mi.js} +11 -11
  23. package/dist/assets/{FixedCollectionParameter-B0MexyJU.js → FixedCollectionParameter-C32o7Xw1.js} +1 -1
  24. package/dist/assets/{ForgotMyPasswordView-Bah9hI_a.js → ForgotMyPasswordView-BIGcjM0k.js} +3 -3
  25. package/dist/assets/{InfoAccordion-BL8J1chC.js → InfoAccordion-DVdDpADr.js} +2 -2
  26. package/dist/assets/{InsightsChartAverageRuntime-PuDIJUWO.js → InsightsChartAverageRuntime-CjOAk50Z.js} +4 -4
  27. package/dist/assets/{InsightsChartFailed-e8gNXvOD.js → InsightsChartFailed-DCQYezXm.js} +4 -4
  28. package/dist/assets/{InsightsChartFailureRate-CTHQ0RyF.js → InsightsChartFailureRate-L674yUIQ.js} +4 -4
  29. package/dist/assets/{InsightsChartTimeSaved-DnvNXWyi.js → InsightsChartTimeSaved-B6a4bv2j.js} +4 -4
  30. package/dist/assets/{InsightsChartTotal-DD_g0FlT.js → InsightsChartTotal-BGmz_E44.js} +4 -4
  31. package/dist/assets/{InsightsDashboard-Dd6ng80b.js → InsightsDashboard-CbtPLqME.js} +10 -10
  32. package/dist/assets/{InsightsPaywall-CMRBFk7F.js → InsightsPaywall-iTfZzLCq.js} +1 -1
  33. package/dist/assets/{InsightsSummary-od7C9keP.js → InsightsSummary-D0XZxoWu.js} +2 -2
  34. package/dist/assets/{InsightsTableWorkflows-bDP7Feik.js → InsightsTableWorkflows-DYL5sIeL.js} +15 -13
  35. package/dist/assets/{Logo-DccSZavS.js → Logo-BF6xE_TK.js} +1 -1
  36. package/dist/assets/{LogsPanel-B-Tmod-K.css → LogsPanel-BinqqXXh.css} +14 -17
  37. package/dist/assets/{LogsPanel-CgRsN0f1.js → LogsPanel-DhSbCRI8.js} +193 -141
  38. package/dist/assets/{MainHeader-C7eM_NQZ.css → MainHeader-BofAi8wS.css} +42 -42
  39. package/dist/assets/{MainHeader-BuQIia5G.js → MainHeader-C992btCf.js} +488 -481
  40. package/dist/assets/{MainSidebar-DmJW5X0O.js → MainSidebar-CfBkhJuz.js} +47 -66
  41. package/dist/assets/{NodeCreation-BWPpAKFI.js → NodeCreation-C4-JrWkw.js} +4 -4
  42. package/dist/assets/{NodeCreator-CcJ3ERxm.js → NodeCreator-BHFu5J3H.js} +19 -17
  43. package/dist/assets/{NodeCreator-COgNP4W1.css → NodeCreator-vQ-Sfr_5.css} +8 -9
  44. package/dist/assets/{NodeDetailsView-CCLWHias.js → NodeDetailsView-DucQbxES.js} +14 -14
  45. package/dist/assets/{NodeDetailsViewV2-dXQZWfaF.js → NodeDetailsViewV2-By7jano3.js} +25 -25
  46. package/dist/assets/{NodeDetailsViewV2-Bn1PbAPe.css → NodeDetailsViewV2-J_3cfdea.css} +15 -15
  47. package/dist/assets/{NodeView-DXfRa5dq.js → NodeView-Bi4OfDJp.js} +15 -11
  48. package/dist/assets/ProjectBreadcrumb-B1Hnf5da.css +445 -0
  49. package/dist/assets/ProjectBreadcrumb-l5PnV6Jp.js +381 -0
  50. package/dist/assets/{ProjectHeader-B9EjwT8u.js → ProjectHeader-D1veUs2f.js} +27 -30
  51. package/dist/assets/{ProjectSettings-DxChDPJp.js → ProjectSettings-CiMu32JB.js} +6 -6
  52. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CAcI_6zc.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-Cl5RoRJK.js} +2 -2
  53. package/dist/assets/{ResourcesListLayout-BXykiIem.js → ResourcesListLayout-V2ovJZd-.js} +3 -3
  54. package/dist/assets/{RunDataJson-DQ-wEydT.js → RunDataJson--o61ywP4.js} +3 -3
  55. package/dist/assets/{RunDataJsonActions-DkwJw6g0.js → RunDataJsonActions-BuTnnCdp.js} +14 -14
  56. package/dist/assets/{RunDataParsedAiContent-pthnU6es.js → RunDataParsedAiContent-Dv43fJJj.js} +2 -2
  57. package/dist/assets/{RunDataSearch-Dz5_0Sop.js → RunDataSearch-DhhRomuh.js} +1 -1
  58. package/dist/assets/{RunDataTable-DlwkWBoU.js → RunDataTable-BRNjCbjf.js} +6 -6
  59. package/dist/assets/{SamlOnboarding-BfiycZyp.js → SamlOnboarding-ChVfS2ix.js} +3 -3
  60. package/dist/assets/{SettingsApiView-D6E5CVxl.js → SettingsApiView-EJcHWxis.js} +1 -1
  61. package/dist/assets/{SettingsCommunityNodesView-CQV4UbKm.js → SettingsCommunityNodesView-BCGKGJGl.js} +5 -5
  62. package/dist/assets/{SettingsExternalSecrets-nYlsTral.js → SettingsExternalSecrets-DQ6GuwI_.js} +1 -1
  63. package/dist/assets/{SettingsLdapView-C35iJN3N.js → SettingsLdapView-YMEEL5g4.js} +1 -1
  64. package/dist/assets/{SettingsLogStreamingView-DF2IVwuv.js → SettingsLogStreamingView-CMRM9qEX.js} +1 -1
  65. package/dist/assets/{SettingsPersonalView-DvTBCV7u.js → SettingsPersonalView-CQ3j6jFh.js} +2 -2
  66. package/dist/assets/{SettingsSourceControl-Bp7kBNsF.js → SettingsSourceControl-W3xQHBQs.js} +2 -2
  67. package/dist/assets/{SettingsSso-D3MsGwAG.js → SettingsSso-B-RJISS8.js} +8 -6
  68. package/dist/assets/{SettingsUsageAndPlan-BvSyV6eq.js → SettingsUsageAndPlan-BI4z3ArV.js} +2 -2
  69. package/dist/assets/{SettingsUsersView-BKx9xQmw.js → SettingsUsersView-FdTxfP_9.js} +3 -3
  70. package/dist/assets/{SettingsView-N1braOIS.js → SettingsView-enVRJi4X.js} +1 -1
  71. package/dist/assets/{SetupView-DB325RA-.js → SetupView-DhQVRFto.js} +3 -3
  72. package/dist/assets/{SetupWorkflowCredentialsButton-Bv6XJXPb.js → SetupWorkflowCredentialsButton-o-0v9TC0.js} +1 -1
  73. package/dist/assets/{SetupWorkflowFromTemplateView-DvJ9hJNk.js → SetupWorkflowFromTemplateView-t24Wf8j0.js} +4 -4
  74. package/dist/assets/{SigninView-Do_ZE4PN.js → SigninView-CqnnxcHH.js} +3 -3
  75. package/dist/assets/{SignoutView-RMWoU9ka.js → SignoutView-BYkRErR0.js} +1 -1
  76. package/dist/assets/{SignupView-DaSOlcHH.js → SignupView-CZ5xz8Ej.js} +3 -3
  77. package/dist/assets/{TableBase-DEfTMdd5.js → TableBase-DZ3KHAaq.js} +1 -1
  78. package/dist/assets/{Tag-Bpg7pWwM.js → Tag-BZXOdJeY.js} +1 -1
  79. package/dist/assets/{Tags-BOko1qXh.js → Tags-BGrNA-zc.js} +2 -2
  80. package/dist/assets/{TemplateDetails-DKT_t-A1.js → TemplateDetails-CGeXTU0J.js} +2 -2
  81. package/dist/assets/{TemplateList-CKb1zA2_.js → TemplateList-BUJPQKR1.js} +1 -1
  82. package/dist/assets/{TemplatesCollectionView-D47Zvruw.js → TemplatesCollectionView-CDz25qgN.js} +7 -7
  83. package/dist/assets/{TemplatesSearchView-C1Drn--8.js → TemplatesSearchView-l-Ueq6ha.js} +3 -3
  84. package/dist/assets/{TemplatesView-DLGApF1u.js → TemplatesView-CbzVhmOD.js} +1 -1
  85. package/dist/assets/{TemplatesWorkflowView-BU_v7Vg5.js → TemplatesWorkflowView-D2fR5qLE.js} +7 -7
  86. package/dist/assets/{TriggerPanel-DmVMaaLr.css → TriggerPanel-BFPMKijE.css} +4 -4
  87. package/dist/assets/{TriggerPanel-BEWhhdtu.js → TriggerPanel-BNb8Fkp3.js} +23 -12
  88. package/dist/assets/{VariablesView-CvBjaoev.js → VariablesView-ZO4oTir0.js} +9 -9
  89. package/dist/assets/{WorkerView-cFswonAF.js → WorkerView-DjYjCGEz.js} +6 -6
  90. package/dist/assets/{WorkflowActivator-mjgVWRcp.js → WorkflowActivator-CFrLXTxM.js} +13 -389
  91. package/dist/assets/WorkflowActivator-jI4sUqXL.css +391 -0
  92. package/dist/assets/{WorkflowExecutionsInfoAccordion-CZwCkYjJ.js → WorkflowExecutionsInfoAccordion-C8Tc4Mno.js} +3 -3
  93. package/dist/assets/{WorkflowExecutionsLandingPage-C5AsTUva.js → WorkflowExecutionsLandingPage-BiuuJ3ll.js} +3 -3
  94. package/dist/assets/{WorkflowExecutionsPreview-1HvxolBT.js → WorkflowExecutionsPreview-CYoDxL8E.js} +4 -4
  95. package/dist/assets/{WorkflowExecutionsView-YiB3L6cC.js → WorkflowExecutionsView-C78loZuv.js} +8 -8
  96. package/dist/assets/{WorkflowHistory-DMhEstvs.js → WorkflowHistory-CqoFF8_8.js} +4 -4
  97. package/dist/assets/{WorkflowOnboardingView-Dnm-Rnp-.js → WorkflowOnboardingView-dpvpoau1.js} +1 -1
  98. package/dist/assets/{WorkflowPreview-Dy8KQCnA.js → WorkflowPreview-83_iB67I.js} +1 -1
  99. package/dist/assets/{WorkflowsView-Cv689d2r.js → WorkflowsView-Bhr5Vfcw.js} +24 -23
  100. package/dist/assets/{WorkflowsView-eYGsq80b.css → WorkflowsView-BuvoAeDm.css} +18 -17
  101. package/dist/assets/{canvas-DBxg3FGB.js → canvas-Kg89rGSt.js} +1 -1
  102. package/dist/assets/{chartjs.utils-ziIypBRK.js → chartjs.utils-6nSeP00a.js} +2 -2
  103. package/dist/assets/{core-BQX74yIJ.js → core-BiQ8TPaF.js} +9 -8
  104. package/dist/assets/dataStore.store-Bru4R38e.js +268 -0
  105. package/dist/assets/{en-CdefH_p-.js → en-CZDXhi4W.js} +50 -27
  106. package/dist/assets/{global-link-actions-BgqtAMjH.js → global-link-actions-BfwrTt1h.js} +1 -1
  107. package/dist/assets/{index-BFyMw9-0.css → index-Am8RmnT4.css} +233 -241
  108. package/dist/assets/{index-D4wn1X5v.js → index-CZxO9Y7t.js} +1 -1
  109. package/dist/assets/{index-eiGMGof4.js → index-V25MIkzH.js} +6310 -5682
  110. package/dist/assets/{pickBy-D-ZGPPK6.js → pickBy-CInoejW7.js} +1 -1
  111. package/dist/assets/{polyfills-eMEFRc79.js → polyfills-BhZQ1FDI.js} +44 -0
  112. package/dist/assets/{readyToRunWorkflows.store-BAFBPhWS.js → readyToRunWorkflows.store-D8qADh9A.js} +1 -1
  113. package/dist/assets/{templateActions-BI7pkM1w.js → templateActions-CytValxU.js} +1 -1
  114. package/dist/assets/{typescript.worker-ku8s_Oaf.js → typescript.worker-BcoVIdo9.js} +8 -8
  115. package/dist/assets/{useBeforeUnload-BjekgFaf.js → useBeforeUnload-yQFY1z_s.js} +1 -1
  116. package/dist/assets/{useExecutionDebugging-B38snoEK.js → useExecutionDebugging-DiCw9NpL.js} +1 -1
  117. package/dist/assets/{useImportCurlCommand-Cm4bDewX.js → useImportCurlCommand-UhCp_Hxn.js} +44 -37
  118. package/dist/assets/{useProjectPages-ALKmwRBA.js → useProjectPages-DNuz01tw.js} +1 -1
  119. package/dist/assets/{usePushConnection-CEXhOxd5.js → usePushConnection-BOddel3U.js} +3 -3
  120. package/dist/assets/{useWorkflowActivate-B8jSp35O.js → useWorkflowActivate-DKZ9PzgK.js} +1 -1
  121. package/dist/index.html +3 -3
  122. package/package.json +1 -1
  123. package/dist/assets/CollectionParameter-BNLFCXfs.js +0 -4
  124. package/dist/assets/dataStore.store-BPclFpMe.js +0 -98
@@ -1,8 +1,8 @@
1
- import { bB as addTokenUsageData, bC as emptyTokenUsageData, bD as parseErrorMetadata, bE as isChatNode, bF as NodeConnectionTypes, bG as v4, bH as get, bI as isRef, bJ as isReactive, bK as isProxy, bL as toRaw, bM as AGENT_LANGCHAIN_NODE_TYPE, bN as MANUAL_CHAT_TRIGGER_NODE_TYPE, bO as CHAT_TRIGGER_NODE_TYPE, bP as isEmpty, a as useToast, r as ref, x as computed, c as useI18n$1, bQ as usePinnedData, aq as useMessage, ar as MODAL_CONFIRM, a9 as useWorkflowsStore, at as useRootStore, bR as useLogsStore, b as useRouter, bS as useNodeHelpers, bT as useRunWorkflow, V as VIEWS, bU as chatEventBus, af as watch, bV as provide, d as defineComponent, h as createElementBlock, g as openBlock, n as normalizeClass, i as createVNode, j as createBaseVNode, l as unref, p as N8nText, w as withCtx, Q as renderSlot, k as createTextVNode, t as toDisplayString, _ as _export_sfc, aa as useRoute, aj as useSourceControlStore, bW as useCanvasOperations, ah as useNodeTypesStore, bX as START_NODE_TYPE, e as createBlock, f as createCommentVNode, a4 as N8nTooltip, bY as formatTokenUsageCount, bZ as getDefaultExportFromCjs, b_ as requireUpperFirst, F as Fragment, aH as useTemplateRef, b$ as useTimestamp, c0 as toTime, c1 as toDayMonth, B as withModifiers, A as renderList, U as normalizeStyle, c2 as NodeIcon, a6 as I18nT, N as N8nIcon, a5 as _sfc_main$k, q as N8nButton, R as nextTick, c3 as getScrollbarWidth, c4 as useVirtualList, c5 as toRef, K as mergeProps, O as N8nRadioButtons, c6 as inject, c7 as toRefs, o as onMounted, c8 as normalizeProps, c9 as guardReactiveProps, ca as resolveDynamicComponent, cb as markdownLink, cc as useFileDialog, cd as onUnmounted, b4 as withDirectives, ce as vModelText, ba as withKeys, cf as useAttrs, cg as useClipboard, bu as createSlots, a_ as useNDVStore, ch as PiPWindowSymbol, ci as resolveDirective, cj as RunData, C as N8nLink, ck as waitingNodeTooltip, b0 as useLocalStorage, cl as LOG_DETAILS_PANEL_STATE, cm as KeyboardShortcutTooltip, cn as N8nResizeWrapper, co as useStyles, aN as N8nActionDropdown, cp as Workflow, cq as useThrottleFn, cr as parse, cs as shallowRef, Z as useUIStore, au as useCanvasStore, ap as useTelemetry, ct as onScopeDispose, P as onBeforeUnmount, cu as applyThemeToBody, cv as useProvideTooltipAppendTo, cw as LOGS_PANEL_STATE, cx as LOCAL_STORAGE_PANEL_HEIGHT, cy as LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH, cz as LOCAL_STORAGE_PANEL_WIDTH, cA as useActiveElement, cB as useKeybindings, cC as ndvEventBus } from "./index-eiGMGof4.js";
2
- import { _ as __unplugin_components_1 } from "./AnimatedSpinner-DNlzAAjE.js";
3
- import { _ as _sfc_main$j } from "./ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CWb4OBYA.js";
4
- import { H as HighlightJS, V as VueMarkdown } from "./core-BQX74yIJ.js";
5
- import { c as canvasEventBus } from "./canvas-DBxg3FGB.js";
1
+ import { bx as addTokenUsageData, by as emptyTokenUsageData, bz as parseErrorMetadata, bA as isChatNode, bB as NodeConnectionTypes, bC as v4, bD as get, bE as AGENT_LANGCHAIN_NODE_TYPE, bF as MANUAL_CHAT_TRIGGER_NODE_TYPE, bG as CHAT_TRIGGER_NODE_TYPE, bH as isEmpty, a as useToast, r as ref, x as computed, c as useI18n$1, bI as usePinnedData, am as useMessage, an as MODAL_CONFIRM, a1 as useWorkflowsStore, at as useRootStore, bJ as useLogsStore, b as useRouter, bK as useNodeHelpers, bL as useRunWorkflow, V as VIEWS, bM as chatEventBus, a7 as watch, bN as provide, d as defineComponent, h as createElementBlock, g as openBlock, n as normalizeClass, i as createVNode, j as createBaseVNode, l as unref, p as N8nText, w as withCtx, X as renderSlot, k as createTextVNode, t as toDisplayString, _ as _export_sfc, a2 as useRoute, af as useSourceControlStore, bO as useCanvasOperations, ad as useNodeTypesStore, bP as START_NODE_TYPE, e as createBlock, f as createCommentVNode, a9 as Tooltip, bQ as formatTokenUsageCount, bR as getDefaultExportFromCjs, bS as requireUpperFirst, F as Fragment, aG as useTemplateRef, bT as useTimestamp, bU as toTime, bV as toDayMonth, B as withModifiers, A as renderList, ap as normalizeStyle, bW as NodeIcon, ab as I18nT, N as N8nIcon, aa as _sfc_main$k, q as N8nButton, Y as nextTick, bX as getScrollbarWidth, bY as useVirtualList, bZ as toRef, K as mergeProps, O as N8nRadioButtons, b_ as inject, b$ as isRef, c0 as toRefs, o as onMounted, c1 as normalizeProps, c2 as guardReactiveProps, c3 as resolveDynamicComponent, c4 as markdownLink, c5 as useFileDialog, c6 as onUnmounted, b2 as withDirectives, c7 as vModelText, b8 as withKeys, c8 as useAttrs, c9 as useClipboard, bq as createSlots, aY as useNDVStore, ca as PopOutWindowKey, cb as resolveDirective, cc as RunData, C as N8nLink, cd as waitingNodeTooltip, a_ as useLocalStorage, ce as LOG_DETAILS_PANEL_STATE, cf as KeyboardShortcutTooltip, cg as N8nResizeWrapper, ch as useStyles, aM as N8nActionDropdown, ci as Workflow, cj as useThrottleFn, ck as parse, cl as shallowRef, Q as useUIStore, cm as useCanvasStore, al as useTelemetry, ax as useDocumentTitle, cn as onScopeDispose, W as onBeforeUnmount, co as useProvideTooltipAppendTo, cp as LOGS_PANEL_STATE, cq as LOCAL_STORAGE_PANEL_HEIGHT, cr as LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH, cs as LOCAL_STORAGE_PANEL_WIDTH, ct as useActiveElement, bm as useKeybindings, cu as ndvEventBus } from "./index-V25MIkzH.js";
2
+ import { _ as __unplugin_components_1 } from "./AnimatedSpinner-DG0OJkY1.js";
3
+ import { _ as _sfc_main$j } from "./ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-Y9jgPwUm.js";
4
+ import { H as HighlightJS, V as VueMarkdown } from "./core-BiQ8TPaF.js";
5
+ import { c as canvasEventBus } from "./canvas-Kg89rGSt.js";
6
6
  const TOOL_EXECUTOR_NODE_NAME = "PartialExecutionToolExecutor";
7
7
  function constructChatWebsocketUrl(url, executionId, sessionId2, isPublic) {
8
8
  const baseUrl = new URL(url).origin;
@@ -189,31 +189,6 @@ function findSelectedLogEntry(selection, entries, isExecuting) {
189
189
  }
190
190
  }
191
191
  }
192
- function deepToRaw(sourceObj) {
193
- const seen = /* @__PURE__ */ new WeakMap();
194
- const objectIterator = (input) => {
195
- if (seen.has(input)) {
196
- return input;
197
- }
198
- if (input !== null && typeof input === "object") {
199
- seen.set(input, true);
200
- }
201
- if (Array.isArray(input)) {
202
- return input.map((item) => objectIterator(item));
203
- }
204
- if (isRef(input) || isReactive(input) || isProxy(input)) {
205
- return objectIterator(toRaw(input));
206
- }
207
- if (input !== null && typeof input === "object" && Object.getPrototypeOf(input) === Object.prototype) {
208
- return Object.keys(input).reduce((acc, key) => {
209
- acc[key] = objectIterator(input[key]);
210
- return acc;
211
- }, {});
212
- }
213
- return input;
214
- };
215
- return objectIterator(sourceObj);
216
- }
217
192
  function flattenLogEntries(entries, collapsedEntryIds, ret = []) {
218
193
  for (const entry of entries) {
219
194
  ret.push(entry);
@@ -796,7 +771,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
796
771
  const locale = useI18n$1();
797
772
  return (_ctx, _cache) => {
798
773
  const _component_ConsumedTokensDetails = _sfc_main$j;
799
- return _ctx.consumedTokens !== void 0 ? (openBlock(), createBlock(unref(N8nTooltip), {
774
+ return _ctx.consumedTokens !== void 0 ? (openBlock(), createBlock(unref(Tooltip), {
800
775
  key: 0,
801
776
  enterable: false
802
777
  }, {
@@ -1294,7 +1269,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1294
1269
  onClick: _cache[1] || (_cache[1] = ($event) => emit("clickHeader"))
1295
1270
  }, {
1296
1271
  actions: withCtx(() => [
1297
- unref(isClearExecutionButtonVisible) ? (openBlock(), createBlock(unref(N8nTooltip), {
1272
+ unref(isClearExecutionButtonVisible) ? (openBlock(), createBlock(unref(Tooltip), {
1298
1273
  key: 0,
1299
1274
  content: unref(locale).baseText("logs.overview.header.actions.clearExecution.tooltip")
1300
1275
  }, {
@@ -1439,6 +1414,18 @@ function bash(hljs) {
1439
1414
  end: /\)/,
1440
1415
  contains: [hljs.BACKSLASH_ESCAPE]
1441
1416
  };
1417
+ const COMMENT = hljs.inherit(
1418
+ hljs.COMMENT(),
1419
+ {
1420
+ match: [
1421
+ /(^|\s)/,
1422
+ /#.*$/
1423
+ ],
1424
+ scope: {
1425
+ 2: "comment"
1426
+ }
1427
+ }
1428
+ );
1442
1429
  const HERE_DOC = {
1443
1430
  begin: /<<-?\s*(?=\w+)/,
1444
1431
  starts: { contains: [
@@ -1511,6 +1498,7 @@ function bash(hljs) {
1511
1498
  "else",
1512
1499
  "elif",
1513
1500
  "fi",
1501
+ "time",
1514
1502
  "for",
1515
1503
  "while",
1516
1504
  "until",
@@ -1519,6 +1507,7 @@ function bash(hljs) {
1519
1507
  "done",
1520
1508
  "case",
1521
1509
  "esac",
1510
+ "coproc",
1522
1511
  "function",
1523
1512
  "select"
1524
1513
  ];
@@ -1565,6 +1554,7 @@ function bash(hljs) {
1565
1554
  "read",
1566
1555
  "readarray",
1567
1556
  "source",
1557
+ "sudo",
1568
1558
  "type",
1569
1559
  "typeset",
1570
1560
  "ulimit",
@@ -1747,7 +1737,10 @@ function bash(hljs) {
1747
1737
  ];
1748
1738
  return {
1749
1739
  name: "Bash",
1750
- aliases: ["sh"],
1740
+ aliases: [
1741
+ "sh",
1742
+ "zsh"
1743
+ ],
1751
1744
  keywords: {
1752
1745
  $pattern: /\b[a-z][a-z0-9._-]+\b/,
1753
1746
  keyword: KEYWORDS2,
@@ -1769,7 +1762,7 @@ function bash(hljs) {
1769
1762
  // to catch unknown shells but still highlight the shebang
1770
1763
  FUNCTION,
1771
1764
  ARITHMETIC,
1772
- hljs.HASH_COMMENT_MODE,
1765
+ COMMENT,
1773
1766
  HERE_DOC,
1774
1767
  PATH_MODE,
1775
1768
  QUOTE_STRING,
@@ -1823,7 +1816,9 @@ const KEYWORDS$1 = [
1823
1816
  "import",
1824
1817
  "from",
1825
1818
  "export",
1826
- "extends"
1819
+ "extends",
1820
+ // It's reached stage 3, which is "recommended for implementation":
1821
+ "using"
1827
1822
  ];
1828
1823
  const LITERALS$1 = [
1829
1824
  "true",
@@ -2021,7 +2016,7 @@ function javascript$1(hljs) {
2021
2016
  // defined later
2022
2017
  };
2023
2018
  const HTML_TEMPLATE = {
2024
- begin: "html`",
2019
+ begin: ".?html`",
2025
2020
  end: "",
2026
2021
  starts: {
2027
2022
  end: "`",
@@ -2034,7 +2029,7 @@ function javascript$1(hljs) {
2034
2029
  }
2035
2030
  };
2036
2031
  const CSS_TEMPLATE = {
2037
- begin: "css`",
2032
+ begin: ".?css`",
2038
2033
  end: "",
2039
2034
  starts: {
2040
2035
  end: "`",
@@ -2047,7 +2042,7 @@ function javascript$1(hljs) {
2047
2042
  }
2048
2043
  };
2049
2044
  const GRAPHQL_TEMPLATE = {
2050
- begin: "gql`",
2045
+ begin: ".?gql`",
2051
2046
  end: "",
2052
2047
  starts: {
2053
2048
  end: "`",
@@ -2143,7 +2138,7 @@ function javascript$1(hljs) {
2143
2138
  const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([
2144
2139
  // eat recursive parens in sub expressions
2145
2140
  {
2146
- begin: /\(/,
2141
+ begin: /(\s*)\(/,
2147
2142
  end: /\)/,
2148
2143
  keywords: KEYWORDS$1$1,
2149
2144
  contains: ["self"].concat(SUBST_AND_COMMENTS)
@@ -2151,7 +2146,9 @@ function javascript$1(hljs) {
2151
2146
  ]);
2152
2147
  const PARAMS = {
2153
2148
  className: "params",
2154
- begin: /\(/,
2149
+ // convert this to negative lookbehind in v12
2150
+ begin: /(\s*)\(/,
2151
+ // to match the parms with
2155
2152
  end: /\)/,
2156
2153
  excludeBegin: true,
2157
2154
  excludeEnd: true,
@@ -2264,9 +2261,9 @@ function javascript$1(hljs) {
2264
2261
  ...BUILT_IN_GLOBALS$1,
2265
2262
  "super",
2266
2263
  "import"
2267
- ]),
2264
+ ].map((x) => `${x}\\s*\\(`)),
2268
2265
  IDENT_RE$1$1,
2269
- regex.lookahead(/\(/)
2266
+ regex.lookahead(/\s*\(/)
2270
2267
  ),
2271
2268
  className: "title.function",
2272
2269
  relevance: 0
@@ -2347,8 +2344,8 @@ function javascript$1(hljs) {
2347
2344
  NUMBER,
2348
2345
  CLASS_REFERENCE,
2349
2346
  {
2350
- className: "attr",
2351
- begin: IDENT_RE$1$1 + regex.lookahead(":"),
2347
+ scope: "attr",
2348
+ match: IDENT_RE$1$1 + regex.lookahead(":"),
2352
2349
  relevance: 0
2353
2350
  },
2354
2351
  FUNCTION_VARIABLE,
@@ -2382,7 +2379,7 @@ function javascript$1(hljs) {
2382
2379
  skip: true
2383
2380
  },
2384
2381
  {
2385
- begin: /\(/,
2382
+ begin: /(\s*)\(/,
2386
2383
  end: /\)/,
2387
2384
  excludeBegin: true,
2388
2385
  excludeEnd: true,
@@ -2823,7 +2820,8 @@ function python(hljs) {
2823
2820
  NUMBER,
2824
2821
  {
2825
2822
  // very common convention
2826
- begin: /\bself\b/
2823
+ scope: "variable.language",
2824
+ match: /\bself\b/
2827
2825
  },
2828
2826
  {
2829
2827
  // eat "if" prior to string so that it won't accidentally be
@@ -2831,6 +2829,7 @@ function python(hljs) {
2831
2829
  beginKeywords: "if",
2832
2830
  relevance: 0
2833
2831
  },
2832
+ { match: /\bor\b/, scope: "keyword" },
2834
2833
  STRING,
2835
2834
  COMMENT_TYPE,
2836
2835
  hljs.HASH_COMMENT_MODE,
@@ -2929,7 +2928,9 @@ const KEYWORDS = [
2929
2928
  "import",
2930
2929
  "from",
2931
2930
  "export",
2932
- "extends"
2931
+ "extends",
2932
+ // It's reached stage 3, which is "recommended for implementation":
2933
+ "using"
2933
2934
  ];
2934
2935
  const LITERALS = [
2935
2936
  "true",
@@ -3127,7 +3128,7 @@ function javascript(hljs) {
3127
3128
  // defined later
3128
3129
  };
3129
3130
  const HTML_TEMPLATE = {
3130
- begin: "html`",
3131
+ begin: ".?html`",
3131
3132
  end: "",
3132
3133
  starts: {
3133
3134
  end: "`",
@@ -3140,7 +3141,7 @@ function javascript(hljs) {
3140
3141
  }
3141
3142
  };
3142
3143
  const CSS_TEMPLATE = {
3143
- begin: "css`",
3144
+ begin: ".?css`",
3144
3145
  end: "",
3145
3146
  starts: {
3146
3147
  end: "`",
@@ -3153,7 +3154,7 @@ function javascript(hljs) {
3153
3154
  }
3154
3155
  };
3155
3156
  const GRAPHQL_TEMPLATE = {
3156
- begin: "gql`",
3157
+ begin: ".?gql`",
3157
3158
  end: "",
3158
3159
  starts: {
3159
3160
  end: "`",
@@ -3249,7 +3250,7 @@ function javascript(hljs) {
3249
3250
  const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([
3250
3251
  // eat recursive parens in sub expressions
3251
3252
  {
3252
- begin: /\(/,
3253
+ begin: /(\s*)\(/,
3253
3254
  end: /\)/,
3254
3255
  keywords: KEYWORDS$12,
3255
3256
  contains: ["self"].concat(SUBST_AND_COMMENTS)
@@ -3257,7 +3258,9 @@ function javascript(hljs) {
3257
3258
  ]);
3258
3259
  const PARAMS = {
3259
3260
  className: "params",
3260
- begin: /\(/,
3261
+ // convert this to negative lookbehind in v12
3262
+ begin: /(\s*)\(/,
3263
+ // to match the parms with
3261
3264
  end: /\)/,
3262
3265
  excludeBegin: true,
3263
3266
  excludeEnd: true,
@@ -3370,9 +3373,9 @@ function javascript(hljs) {
3370
3373
  ...BUILT_IN_GLOBALS,
3371
3374
  "super",
3372
3375
  "import"
3373
- ]),
3376
+ ].map((x) => `${x}\\s*\\(`)),
3374
3377
  IDENT_RE$12,
3375
- regex.lookahead(/\(/)
3378
+ regex.lookahead(/\s*\(/)
3376
3379
  ),
3377
3380
  className: "title.function",
3378
3381
  relevance: 0
@@ -3453,8 +3456,8 @@ function javascript(hljs) {
3453
3456
  NUMBER,
3454
3457
  CLASS_REFERENCE,
3455
3458
  {
3456
- className: "attr",
3457
- begin: IDENT_RE$12 + regex.lookahead(":"),
3459
+ scope: "attr",
3460
+ match: IDENT_RE$12 + regex.lookahead(":"),
3458
3461
  relevance: 0
3459
3462
  },
3460
3463
  FUNCTION_VARIABLE,
@@ -3488,7 +3491,7 @@ function javascript(hljs) {
3488
3491
  skip: true
3489
3492
  },
3490
3493
  {
3491
- begin: /\(/,
3494
+ begin: /(\s*)\(/,
3492
3495
  end: /\)/,
3493
3496
  excludeBegin: true,
3494
3497
  excludeEnd: true,
@@ -3582,6 +3585,7 @@ function javascript(hljs) {
3582
3585
  };
3583
3586
  }
3584
3587
  function typescript(hljs) {
3588
+ const regex = hljs.regex;
3585
3589
  const tsLanguage = javascript(hljs);
3586
3590
  const IDENT_RE$12 = IDENT_RE;
3587
3591
  const TYPES2 = [
@@ -3597,10 +3601,15 @@ function typescript(hljs) {
3597
3601
  "unknown"
3598
3602
  ];
3599
3603
  const NAMESPACE = {
3600
- beginKeywords: "namespace",
3601
- end: /\{/,
3602
- excludeEnd: true,
3603
- contains: [tsLanguage.exports.CLASS_REFERENCE]
3604
+ begin: [
3605
+ /namespace/,
3606
+ /\s+/,
3607
+ hljs.IDENT_RE
3608
+ ],
3609
+ beginScope: {
3610
+ 1: "keyword",
3611
+ 3: "title.class"
3612
+ }
3604
3613
  };
3605
3614
  const INTERFACE = {
3606
3615
  beginKeywords: "interface",
@@ -3619,7 +3628,7 @@ function typescript(hljs) {
3619
3628
  };
3620
3629
  const TS_SPECIFIC_KEYWORDS = [
3621
3630
  "type",
3622
- "namespace",
3631
+ // "namespace",
3623
3632
  "interface",
3624
3633
  "public",
3625
3634
  "private",
@@ -3629,7 +3638,8 @@ function typescript(hljs) {
3629
3638
  "abstract",
3630
3639
  "readonly",
3631
3640
  "enum",
3632
- "override"
3641
+ "override",
3642
+ "satisfies"
3633
3643
  ];
3634
3644
  const KEYWORDS$12 = {
3635
3645
  $pattern: IDENT_RE,
@@ -3651,10 +3661,26 @@ function typescript(hljs) {
3651
3661
  };
3652
3662
  Object.assign(tsLanguage.keywords, KEYWORDS$12);
3653
3663
  tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR);
3664
+ const ATTRIBUTE_HIGHLIGHT = tsLanguage.contains.find((c) => c.scope === "attr");
3665
+ const OPTIONAL_KEY_OR_ARGUMENT = Object.assign(
3666
+ {},
3667
+ ATTRIBUTE_HIGHLIGHT,
3668
+ { match: regex.concat(IDENT_RE$12, regex.lookahead(/\s*\?:/)) }
3669
+ );
3670
+ tsLanguage.exports.PARAMS_CONTAINS.push([
3671
+ tsLanguage.exports.CLASS_REFERENCE,
3672
+ // class reference for highlighting the params types
3673
+ ATTRIBUTE_HIGHLIGHT,
3674
+ // highlight the params key
3675
+ OPTIONAL_KEY_OR_ARGUMENT
3676
+ // Added for optional property assignment highlighting
3677
+ ]);
3654
3678
  tsLanguage.contains = tsLanguage.contains.concat([
3655
3679
  DECORATOR,
3656
3680
  NAMESPACE,
3657
- INTERFACE
3681
+ INTERFACE,
3682
+ OPTIONAL_KEY_OR_ARGUMENT
3683
+ // Added for optional property assignment highlighting
3658
3684
  ]);
3659
3685
  swapMode(tsLanguage, "shebang", hljs.SHEBANG());
3660
3686
  swapMode(tsLanguage, "use_strict", USE_STRICT);
@@ -4639,7 +4665,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
4639
4665
  setup(__props) {
4640
4666
  return (_ctx, _cache) => {
4641
4667
  const _component_n8n_icon = N8nIcon;
4642
- const _component_n8n_tooltip = N8nTooltip;
4668
+ const _component_n8n_tooltip = Tooltip;
4643
4669
  return openBlock(), createElementBlock("div", {
4644
4670
  class: normalizeClass(_ctx.$style.container)
4645
4671
  }, [
@@ -4687,7 +4713,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
4687
4713
  };
4688
4714
  return (_ctx, _cache) => {
4689
4715
  const _component_n8n_icon = N8nIcon;
4690
- const _component_n8n_tooltip = N8nTooltip;
4716
+ const _component_n8n_tooltip = Tooltip;
4691
4717
  return openBlock(), createElementBlock("div", {
4692
4718
  class: normalizeClass(_ctx.$style.container)
4693
4719
  }, [
@@ -4812,7 +4838,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4812
4838
  onClick: _cache[0] || (_cache[0] = ($event) => emit("clickHeader"))
4813
4839
  }, {
4814
4840
  actions: withCtx(() => [
4815
- unref(clipboard).isSupported && !_ctx.isReadOnly ? (openBlock(), createBlock(unref(N8nTooltip), { key: 0 }, {
4841
+ unref(clipboard).isSupported && !_ctx.isReadOnly ? (openBlock(), createBlock(unref(Tooltip), { key: 0 }, {
4816
4842
  content: withCtx(() => [
4817
4843
  createTextVNode(toDisplayString(_ctx.sessionId) + " ", 1),
4818
4844
  _cache[3] || (_cache[3] = createBaseVNode("br", null, null, -1)),
@@ -4834,7 +4860,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4834
4860
  ]),
4835
4861
  _: 1
4836
4862
  })) : createCommentVNode("", true),
4837
- _ctx.messages.length > 0 && !_ctx.isReadOnly ? (openBlock(), createBlock(unref(N8nTooltip), {
4863
+ _ctx.messages.length > 0 && !_ctx.isReadOnly ? (openBlock(), createBlock(unref(Tooltip), {
4838
4864
  key: 1,
4839
4865
  content: unref(locale).baseText("chat.window.session.resetSession")
4840
4866
  }, {
@@ -4985,7 +5011,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
4985
5011
  const emit = __emit;
4986
5012
  const locale = useI18n$1();
4987
5013
  const ndvStore = useNDVStore();
4988
- const pipWindow = inject(PiPWindowSymbol, ref());
5014
+ const popOutWindow = inject(PopOutWindowKey, ref());
4989
5015
  const displayMode = ref(__props.paneType === "input" ? "schema" : "table");
4990
5016
  const isMultipleInput = computed(
4991
5017
  () => __props.paneType === "input" && (__props.logEntry.runData?.source.length ?? 0) > 1
@@ -5021,7 +5047,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
5021
5047
  return (_ctx, _cache) => {
5022
5048
  const _directive_n8n_html = resolveDirective("n8n-html");
5023
5049
  return runDataProps.value ? (openBlock(), createBlock(RunData, mergeProps({ key: 0 }, runDataProps.value, {
5024
- key: `run-data${unref(pipWindow) ? "-pip" : ""}`,
5050
+ key: `run-data${unref(popOutWindow) ? "-pop-out" : ""}`,
5025
5051
  class: _ctx.$style.component,
5026
5052
  "workflow-object": _ctx.logEntry.workflow,
5027
5053
  "workflow-execution": _ctx.logEntry.execution,
@@ -5468,7 +5494,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
5468
5494
  }
5469
5495
  }
5470
5496
  return (_ctx, _cache) => {
5471
- const _component_N8nTooltip = N8nTooltip;
5497
+ const _component_N8nTooltip = Tooltip;
5472
5498
  return openBlock(), createElementBlock("div", {
5473
5499
  class: normalizeClass(_ctx.$style.container)
5474
5500
  }, [
@@ -5610,11 +5636,9 @@ function useLogsExecutionData() {
5610
5636
  ],
5611
5637
  useThrottleFn(
5612
5638
  ([executionId], [previousExecutionId]) => {
5613
- execData.value = workflowsStore.workflowExecutionData === null ? void 0 : deepToRaw(
5614
- mergeStartData(
5615
- workflowsStore.workflowExecutionStartedData?.[1] ?? {},
5616
- workflowsStore.workflowExecutionData
5617
- )
5639
+ execData.value = workflowsStore.workflowExecutionData === null ? void 0 : mergeStartData(
5640
+ workflowsStore.workflowExecutionStartedData?.[1] ?? {},
5641
+ workflowsStore.workflowExecutionData
5618
5642
  );
5619
5643
  if (executionId !== previousExecutionId) {
5620
5644
  subWorkflowExecData.value = {};
@@ -5764,7 +5788,17 @@ function syncStyleMutations(destination, mutations) {
5764
5788
  }
5765
5789
  }
5766
5790
  }
5767
- function usePiPWindow({
5791
+ function copyFavicon(source, target) {
5792
+ const iconUrl = source.document.querySelector("link[rel=icon]")?.getAttribute("href");
5793
+ if (iconUrl) {
5794
+ const link = target.document.createElement("link");
5795
+ link.setAttribute("rel", "icon");
5796
+ link.setAttribute("href", iconUrl);
5797
+ target.document.head.appendChild(link);
5798
+ }
5799
+ }
5800
+ function usePopOutWindow({
5801
+ title: title2,
5768
5802
  container: container2,
5769
5803
  content: content2,
5770
5804
  initialHeight,
@@ -5772,66 +5806,70 @@ function usePiPWindow({
5772
5806
  shouldPopOut,
5773
5807
  onRequestClose
5774
5808
  }) {
5775
- const pipWindow = ref();
5809
+ const popOutWindow = ref();
5776
5810
  const isUnmounting = ref(false);
5777
5811
  const canPopOut = computed(
5778
- () => !!window.documentPictureInPicture && window.parent === window
5812
+ () => window.parent === window
5813
+ /* Not in iframe */
5779
5814
  );
5780
- const isPoppedOut = computed(() => !!pipWindow.value);
5815
+ const isPoppedOut = computed(() => !!popOutWindow.value);
5781
5816
  const tooltipContainer = computed(
5782
5817
  () => isPoppedOut.value ? content2.value ?? void 0 : void 0
5783
5818
  );
5784
- const uiStore = useUIStore();
5785
5819
  const observer = new MutationObserver((mutations) => {
5786
- if (pipWindow.value) {
5787
- syncStyleMutations(pipWindow.value, mutations);
5820
+ if (popOutWindow.value) {
5821
+ syncStyleMutations(popOutWindow.value, mutations);
5788
5822
  }
5789
5823
  });
5824
+ const documentTitle = useDocumentTitle(popOutWindow);
5790
5825
  observer.observe(document.head, { childList: true, subtree: true });
5791
- provide(PiPWindowSymbol, pipWindow);
5826
+ provide(PopOutWindowKey, popOutWindow);
5792
5827
  useProvideTooltipAppendTo(tooltipContainer);
5793
- async function showPip() {
5828
+ async function showPopOut() {
5794
5829
  if (!content2.value) {
5795
5830
  return;
5796
5831
  }
5797
- pipWindow.value = pipWindow.value ?? await window.documentPictureInPicture?.requestWindow({
5798
- width: initialWidth,
5799
- height: initialHeight,
5800
- disallowReturnToOpener: true
5801
- });
5802
- [...document.styleSheets].forEach((styleSheet) => {
5832
+ if (!popOutWindow.value) {
5833
+ const options = `popup=yes,width=${initialWidth},height=${initialHeight},left=100,top=100,toolbar=no,menubar=no,scrollbars=yes,resizable=yes`;
5834
+ popOutWindow.value = window.open("", "_blank", options) ?? void 0;
5835
+ }
5836
+ if (!popOutWindow.value) {
5837
+ return;
5838
+ }
5839
+ copyFavicon(window, popOutWindow.value);
5840
+ for (const styleSheet of [...document.styleSheets]) {
5803
5841
  try {
5804
5842
  const cssRules = [...styleSheet.cssRules].map((rule) => rule.cssText).join("");
5805
5843
  const style = document.createElement("style");
5806
5844
  style.textContent = cssRules;
5807
- pipWindow.value?.document.head.appendChild(style);
5845
+ popOutWindow.value.document.head.appendChild(style);
5808
5846
  } catch (e) {
5809
5847
  const link = document.createElement("link");
5810
5848
  link.rel = "stylesheet";
5811
5849
  link.type = styleSheet.type;
5812
5850
  link.media = styleSheet.media;
5813
5851
  link.href = styleSheet.href;
5814
- pipWindow.value?.document.head.appendChild(link);
5852
+ popOutWindow.value.document.head.appendChild(link);
5815
5853
  }
5816
- });
5817
- pipWindow.value?.document.body.append(content2.value);
5818
- pipWindow.value?.addEventListener("pagehide", () => !isUnmounting.value && onRequestClose());
5854
+ }
5855
+ popOutWindow.value.document.body.append(content2.value);
5856
+ popOutWindow.value.addEventListener("pagehide", () => !isUnmounting.value && onRequestClose());
5819
5857
  }
5820
- function hidePiP() {
5821
- pipWindow.value?.close();
5822
- pipWindow.value = void 0;
5858
+ function hidePopOut() {
5859
+ popOutWindow.value?.close();
5860
+ popOutWindow.value = void 0;
5823
5861
  if (content2.value) {
5824
5862
  container2.value?.appendChild(content2.value);
5825
5863
  }
5826
5864
  }
5827
- watch(shouldPopOut, (value) => value ? requestAnimationFrame(showPip) : hidePiP(), {
5865
+ watch(shouldPopOut, (value) => value ? requestAnimationFrame(showPopOut) : hidePopOut(), {
5828
5866
  immediate: true
5829
5867
  });
5830
5868
  watch(
5831
- [() => uiStore.appliedTheme, pipWindow],
5832
- ([theme, pip]) => {
5833
- if (pip) {
5834
- applyThemeToBody(theme, pip);
5869
+ [title2, popOutWindow],
5870
+ ([newTitle, win]) => {
5871
+ if (win) {
5872
+ documentTitle.set(newTitle);
5835
5873
  }
5836
5874
  },
5837
5875
  { immediate: true }
@@ -5841,11 +5879,14 @@ function usePiPWindow({
5841
5879
  });
5842
5880
  onBeforeUnmount(() => {
5843
5881
  isUnmounting.value = true;
5844
- pipWindow.value?.close();
5882
+ if (popOutWindow.value) {
5883
+ popOutWindow.value.close();
5884
+ onRequestClose();
5885
+ }
5845
5886
  });
5846
- return { canPopOut, isPoppedOut, pipWindow };
5887
+ return { canPopOut, isPoppedOut, popOutWindow };
5847
5888
  }
5848
- function useLogsPanelLayout(pipContainer, pipContent2, container2, logsContainer2) {
5889
+ function useLogsPanelLayout(workflowName, popOutContainer, popOutContent2, container2, logsContainer2) {
5849
5890
  const logsStore = useLogsStore();
5850
5891
  const telemetry = useTelemetry();
5851
5892
  const resizer = useResizablePanel(LOCAL_STORAGE_PANEL_HEIGHT, {
@@ -5874,12 +5915,19 @@ function useLogsPanelLayout(pipContainer, pipContent2, container2, logsContainer
5874
5915
  () => logsStore.isOpen ? !resizer.isCollapsed.value : resizer.isResizing.value && resizer.size.value > 0
5875
5916
  );
5876
5917
  const isCollapsingDetailsPanel = computed(() => overviewPanelResizer.isFullSize.value);
5877
- const { canPopOut, isPoppedOut, pipWindow } = usePiPWindow({
5918
+ const popOutWindowTitle = computed(() => `Logs - ${workflowName.value}`);
5919
+ const shouldPopOut = computed(() => logsStore.state === LOGS_PANEL_STATE.FLOATING);
5920
+ const {
5921
+ canPopOut,
5922
+ isPoppedOut,
5923
+ popOutWindow
5924
+ } = usePopOutWindow({
5925
+ title: popOutWindowTitle,
5878
5926
  initialHeight: 400,
5879
5927
  initialWidth: window.document.body.offsetWidth * 0.8,
5880
- container: pipContainer,
5881
- content: pipContent2,
5882
- shouldPopOut: computed(() => logsStore.state === LOGS_PANEL_STATE.FLOATING),
5928
+ container: popOutContainer,
5929
+ content: popOutContent2,
5930
+ shouldPopOut,
5883
5931
  onRequestClose: () => {
5884
5932
  if (!isOpen.value) {
5885
5933
  return;
@@ -5930,7 +5978,7 @@ function useLogsPanelLayout(pipContainer, pipContent2, container2, logsContainer
5930
5978
  isCollapsingDetailsPanel,
5931
5979
  isPoppedOut,
5932
5980
  isOverviewPanelFullWidth: overviewPanelResizer.isFullSize,
5933
- pipWindow,
5981
+ popOutWindow,
5934
5982
  onToggleOpen: handleToggleOpen,
5935
5983
  onPopOut: handlePopOut,
5936
5984
  onResize: resizer.onResize,
@@ -5948,11 +5996,11 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
5948
5996
  container: {}
5949
5997
  },
5950
5998
  setup(__props) {
5951
- const pipWindow = inject(PiPWindowSymbol, ref());
5952
- const activeElement = useActiveElement({ window: pipWindow?.value });
5999
+ const popOutWindow = inject(PopOutWindowKey, ref());
6000
+ const activeElement = useActiveElement({ window: popOutWindow?.value });
5953
6001
  const isBlurred = computed(() => {
5954
- if (pipWindow?.value) {
5955
- return pipWindow.value.document.activeElement === null;
6002
+ if (popOutWindow?.value) {
6003
+ return popOutWindow.value.document.activeElement === null;
5956
6004
  }
5957
6005
  return !activeElement.value || !__props.container || !__props.container.contains(activeElement.value) && __props.container !== activeElement.value;
5958
6006
  });
@@ -5974,10 +6022,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5974
6022
  const props = __props;
5975
6023
  const container2 = useTemplateRef("container");
5976
6024
  const logsContainer2 = useTemplateRef("logsContainer");
5977
- const pipContainer = useTemplateRef("pipContainer");
5978
- const pipContent2 = useTemplateRef("pipContent");
6025
+ const popOutContainer = useTemplateRef("popOutContainer");
6026
+ const popOutContent2 = useTemplateRef("popOutContent");
5979
6027
  const logsStore = useLogsStore();
5980
6028
  const ndvStore = useNDVStore();
6029
+ const workflowsStore = useWorkflowsStore();
6030
+ const workflowName = computed(() => workflowsStore.workflow.name);
5981
6031
  const {
5982
6032
  height,
5983
6033
  chatPanelWidth,
@@ -5987,7 +6037,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5987
6037
  isPoppedOut,
5988
6038
  isCollapsingDetailsPanel,
5989
6039
  isOverviewPanelFullWidth,
5990
- pipWindow,
6040
+ popOutWindow,
5991
6041
  onResize,
5992
6042
  onResizeEnd,
5993
6043
  onToggleOpen,
@@ -5996,7 +6046,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
5996
6046
  onChatPanelResizeEnd,
5997
6047
  onOverviewPanelResize,
5998
6048
  onOverviewPanelResizeEnd
5999
- } = useLogsPanelLayout(pipContainer, pipContent2, container2, logsContainer2);
6049
+ } = useLogsPanelLayout(workflowName, popOutContainer, popOutContent2, container2, logsContainer2);
6000
6050
  const {
6001
6051
  currentSessionId,
6002
6052
  messages: messages2,
@@ -6067,25 +6117,25 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6067
6117
  }
6068
6118
  return (_ctx, _cache) => {
6069
6119
  return openBlock(), createElementBlock("div", {
6070
- ref_key: "pipContainer",
6071
- ref: pipContainer
6120
+ ref_key: "popOutContainer",
6121
+ ref: popOutContainer
6072
6122
  }, [
6073
6123
  (openBlock(), createBlock(_sfc_main$1, {
6074
- key: String(!!unref(pipWindow)),
6124
+ key: String(!!unref(popOutWindow)),
6075
6125
  "key-map": keyMap.value,
6076
6126
  container: unref(container2)
6077
6127
  }, null, 8, ["key-map", "container"])),
6078
6128
  createBaseVNode("div", {
6079
- ref_key: "pipContent",
6080
- ref: pipContent2,
6081
- class: normalizeClass(_ctx.$style.pipContent)
6129
+ ref_key: "popOutContent",
6130
+ ref: popOutContent2,
6131
+ class: normalizeClass([_ctx.$style.popOutContent, unref(isPoppedOut) ? _ctx.$style.poppedOut : ""])
6082
6132
  }, [
6083
6133
  createVNode(unref(N8nResizeWrapper), {
6084
- height: unref(height),
6134
+ height: unref(isPoppedOut) ? void 0 : unref(height),
6085
6135
  "supported-directions": ["top"],
6086
6136
  "is-resizing-enabled": !unref(isPoppedOut),
6087
6137
  class: normalizeClass(_ctx.$style.resizeWrapper),
6088
- style: normalizeStyle({ height: unref(isOpen) ? `${unref(height)}px` : "auto" }),
6138
+ style: normalizeStyle({ height: unref(isOpen) && !unref(isPoppedOut) ? `${unref(height)}px` : "auto" }),
6089
6139
  onResize: unref(onResize),
6090
6140
  onResizeend: unref(onResizeEnd)
6091
6141
  }, {
@@ -6103,13 +6153,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6103
6153
  width: unref(chatPanelWidth),
6104
6154
  style: normalizeStyle({ width: `${unref(chatPanelWidth)}px` }),
6105
6155
  class: normalizeClass(_ctx.$style.chat),
6106
- window: unref(pipWindow),
6156
+ window: unref(popOutWindow),
6107
6157
  onResize: unref(onChatPanelResize),
6108
6158
  onResizeend: unref(onChatPanelResizeEnd)
6109
6159
  }, {
6110
6160
  default: withCtx(() => [
6111
6161
  (openBlock(), createBlock(ChatMessagesPanel, {
6112
- key: `canvas-chat-${unref(currentSessionId)}${unref(isPoppedOut) ? "-pip" : ""}`,
6162
+ key: `canvas-chat-${unref(currentSessionId)}${unref(isPoppedOut) ? "-pop-out" : ""}`,
6113
6163
  "data-test-id": "canvas-chat",
6114
6164
  "is-open": unref(isOpen),
6115
6165
  "is-read-only": _ctx.isReadOnly,
@@ -6138,7 +6188,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6138
6188
  style: normalizeStyle({ width: isLogDetailsVisuallyOpen.value ? `${unref(overviewPanelWidth)}px` : "" }),
6139
6189
  "supported-directions": ["right"],
6140
6190
  "is-resizing-enabled": isLogDetailsOpen.value,
6141
- window: unref(pipWindow),
6191
+ window: unref(popOutWindow),
6142
6192
  onResize: unref(onOverviewPanelResize),
6143
6193
  onResizeend: handleResizeOverviewPanelEnd
6144
6194
  }, {
@@ -6172,7 +6222,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6172
6222
  class: normalizeClass(_ctx.$style.logDetails),
6173
6223
  "is-open": unref(isOpen),
6174
6224
  "log-entry": unref(selected2),
6175
- window: unref(pipWindow),
6225
+ window: unref(popOutWindow),
6176
6226
  "latest-info": unref(latestNodeNameById)[unref(selected2).node.id],
6177
6227
  panels: unref(logsStore).detailsState,
6178
6228
  "collapsing-input-table-column-name": inputCollapsingColumnName.value,
@@ -6198,17 +6248,19 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6198
6248
  };
6199
6249
  }
6200
6250
  });
6201
- const resizeWrapper = "_resizeWrapper_19m2p_124";
6202
- const pipContent = "_pipContent_19m2p_129";
6203
- const container = "_container_19m2p_143";
6204
- const chat = "_chat_19m2p_152";
6205
- const logsContainer = "_logsContainer_19m2p_156";
6206
- const overviewResizer = "_overviewResizer_19m2p_166";
6207
- const logsOverview = "_logsOverview_19m2p_174";
6208
- const logsDetails = "_logsDetails_19m2p_178";
6251
+ const popOutContent = "_popOutContent_1xguj_123";
6252
+ const resizeWrapper = "_resizeWrapper_1xguj_129";
6253
+ const poppedOut = "_poppedOut_1xguj_136";
6254
+ const container = "_container_1xguj_140";
6255
+ const chat = "_chat_1xguj_149";
6256
+ const logsContainer = "_logsContainer_1xguj_153";
6257
+ const overviewResizer = "_overviewResizer_1xguj_163";
6258
+ const logsOverview = "_logsOverview_1xguj_171";
6259
+ const logsDetails = "_logsDetails_1xguj_175";
6209
6260
  const style0 = {
6261
+ popOutContent,
6210
6262
  resizeWrapper,
6211
- pipContent,
6263
+ poppedOut,
6212
6264
  container,
6213
6265
  chat,
6214
6266
  logsContainer,