n8n-editor-ui 1.97.1 → 1.98.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-15ZZp0OO.js → AnimatedSpinner-BiugD1ff.js} +1 -1
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CrF4ktlo.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BChDakRF.js} +1 -1
- package/dist/assets/{AuthView-64US-Z-m.js → AuthView-D3YwZZ3s.js} +2 -2
- package/dist/assets/{CanvasChatSwitch-CaiSjHFG.css → AuthView-jgkkdJYL.css} +29 -90
- package/dist/assets/{ChangePasswordView-Y_vO8rQ4.js → ChangePasswordView-CItQkQJg.js} +3 -3
- package/dist/assets/CollectionParameter-Bm8EojJq.js +4 -0
- package/dist/assets/{CredentialsView-B90NtMag.js → CredentialsView-DyMOfI6f.js} +7 -7
- package/dist/assets/DemoFooter-Dy9DQTdo.js +22 -0
- package/dist/assets/{ErrorView-B5-OZKdh.js → ErrorView-BC6y15Eg.js} +1 -1
- package/dist/assets/{EvaluationsRootView-6cGJTYGC.js → EvaluationsRootView-BbnDfLFy.js} +25 -18
- package/dist/assets/{EvaluationsView-DkIkcLrr.js → EvaluationsView-Qz7rd_By.js} +3 -3
- package/dist/assets/{ExecutionsTime--_6xBkkx.css → ExecutionsTime-BDLkVZem.css} +25 -17
- package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-hCFNZKpq.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-mrrUdf3t.js} +52 -15
- package/dist/assets/{ExecutionsView-cA-SzEOo.js → ExecutionsView-AgniDaEH.js} +8 -8
- package/dist/assets/{FileSaver.min-Bv-Q_h7m.js → FileSaver.min-BUciI8xL.js} +1 -1
- package/dist/assets/{FixedCollectionParameter-CgLfAVkQ.css → FixedCollectionParameter-DjlaZyUQ.css} +18 -18
- package/dist/assets/{FixedCollectionParameter-3cfdvUwK.js → FixedCollectionParameter-NPVvBV3e.js} +2 -2
- package/dist/assets/{ForgotMyPasswordView-Cv7uhij6.js → ForgotMyPasswordView-BKsk9OLH.js} +3 -3
- package/dist/assets/{InsightsChartAverageRuntime-Cr7taDDn.js → InsightsChartAverageRuntime-Dg7z0rOa.js} +4 -4
- package/dist/assets/{InsightsChartFailed-Cm5FrmfQ.js → InsightsChartFailed-i4tYyVRH.js} +4 -4
- package/dist/assets/{InsightsChartFailureRate-Ci-cBou0.js → InsightsChartFailureRate-BcWGne0C.js} +4 -4
- package/dist/assets/{InsightsChartTimeSaved-CMBBA9I4.js → InsightsChartTimeSaved-DugTjxnw.js} +4 -4
- package/dist/assets/{InsightsChartTotal-Dxn2bjBB.js → InsightsChartTotal-DTB7kNLU.js} +4 -4
- package/dist/assets/{InsightsDashboard-BvqZMhnh.js → InsightsDashboard-By8MKK7g.js} +10 -10
- package/dist/assets/{InsightsPaywall-4Vl-4bws.js → InsightsPaywall-BX7wpP8k.js} +1 -1
- package/dist/assets/{InsightsSummary-CTzqNpAf.js → InsightsSummary-DBfE_9FW.js} +1 -1
- package/dist/assets/{InsightsTableWorkflows-DgCECSSh.js → InsightsTableWorkflows-Dqy8IF2I.js} +2 -2
- package/dist/assets/{Logo-B8GIjJ79.js → Logo-BT-1ZjZS.js} +1 -1
- package/dist/assets/{LogsPanel-CsNXIuce.js → LogsPanel-CvLCi2ll.js} +4862 -4640
- package/dist/assets/{LogsPanel-D7j-yJQx.css → LogsPanel-nh_D5duX.css} +913 -907
- package/dist/assets/{MainHeader-CGwvFs2B.css → MainHeader-BRl77CT3.css} +27 -26
- package/dist/assets/{MainHeader-B2RGao3U.js → MainHeader-DptCjd0U.js} +84 -94
- package/dist/assets/{MainSidebar-E0ePOcg-.js → MainSidebar-BdESTvVI.js} +32 -20
- package/dist/assets/{NodeCreation-B6jElzI2.js → NodeCreation-CNH2xciY.js} +3 -3
- package/dist/assets/{NodeCreator-Bd2BI_OU.js → NodeCreator-Bgs-It2X.js} +20 -5
- package/dist/assets/{NodeDetailsView-BLMLHNQw.js → NodeDetailsView-DQ4I8u72.js} +628 -2203
- package/dist/assets/{NodeDetailsView-6JHPI3t-.css → NodeDetailsView-DWA1ZgwG.css} +349 -1000
- package/dist/assets/{NodeView-BdvXMmMp.css → NodeView-Duifly4c.css} +1274 -32
- package/dist/assets/{NodeView-C4qNUqxt.js → NodeView-i5dNh-Et.js} +2817 -548
- package/dist/assets/{ProjectCardBadge-be4FNX6y.js → ProjectCardBadge-CpBBeiGZ.js} +1 -1
- package/dist/assets/{ProjectHeader-CsHp0dpi.js → ProjectHeader-CK7zlcmF.js} +2 -2
- package/dist/assets/{ProjectSettings-BgunHp-2.css → ProjectSettings-8tvaQJye.css} +9 -10
- package/dist/assets/{ProjectSettings-t5UigWKy.js → ProjectSettings-B8_C-09-.js} +9 -9
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-Dpfsxn-o.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-XrUyHArT.js} +1 -1
- package/dist/assets/{ResourcesListLayout-DLThke_K.js → ResourcesListLayout-BRxlSl_6.js} +2 -2
- package/dist/assets/{RunData-XsmLcFYS.css → RunData-B5_okvCv.css} +205 -205
- package/dist/assets/{RunData-u5uBr_cv.js → RunData-D6YmSB6p.js} +1085 -1632
- package/dist/assets/{RunDataJson-CeZYY8D_.js → RunDataJson-BtfKusCo.js} +6 -6
- package/dist/assets/{RunDataJsonActions-BRAsiSnM.js → RunDataJsonActions-CglQIRT9.js} +1 -1
- package/dist/assets/{RunDataParsedAiContent-C1lte0Et.js → RunDataParsedAiContent-DPcEKWtn.js} +4 -4
- package/dist/assets/{RunDataSearch-BP_FSk35.js → RunDataSearch-CIKPqFBd.js} +1 -1
- package/dist/assets/{RunDataTable-CQghTfxP.js → RunDataTable-jsoKHQg5.js} +2 -2
- package/dist/assets/{SamlOnboarding-CWTnplHM.js → SamlOnboarding-DmXYxVe5.js} +3 -3
- package/dist/assets/{SettingsApiView-BskWDsE-.js → SettingsApiView-Bv94CWU3.js} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-JUjLtmC0.js → SettingsCommunityNodesView-CI8V-SCE.js} +4 -4
- package/dist/assets/{SettingsExternalSecrets-BOJ40YuL.js → SettingsExternalSecrets-HCqXt9HG.js} +1 -1
- package/dist/assets/{SettingsLdapView-CT-V5pbv.js → SettingsLdapView-B3yMhNoR.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-_G1aTzAD.js → SettingsLogStreamingView-CyDcg7pK.js} +1 -1
- package/dist/assets/{SettingsPersonalView-CwV8ImYG.css → SettingsPersonalView-Bt8bL5tJ.css} +19 -15
- package/dist/assets/{SettingsPersonalView-BzzZLVh4.js → SettingsPersonalView-Cjb8Yd0L.js} +58 -10
- package/dist/assets/{SettingsSourceControl-Bte_2m43.js → SettingsSourceControl-B4lNTCoc.js} +2 -2
- package/dist/assets/{SettingsSso-Di8rSq_x.js → SettingsSso-CTy78phb.js} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-CwaYHjbQ.js → SettingsUsageAndPlan-CfHv2SML.js} +1 -1
- package/dist/assets/{SettingsUsersView-DQbemH_k.js → SettingsUsersView-D4szdW0Y.js} +1 -1
- package/dist/assets/{SettingsView-DhqdV7_S.js → SettingsView-BCs3728S.js} +1 -1
- package/dist/assets/{SetupView-BOZr75Am.js → SetupView-PB2fxBCd.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-DFtZhM9C.js → SetupWorkflowCredentialsButton-DgTQe_yd.js} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-CTMDcuGm.js → SetupWorkflowFromTemplateView-7pQX4cNJ.js} +3 -3
- package/dist/assets/{SigninView-DY-vQ0LU.js → SigninView-BqgxybCQ.js} +12 -4
- package/dist/assets/{SignoutView-B8rfrg6C.js → SignoutView-CTKn8Q77.js} +1 -1
- package/dist/assets/{SignupView-BxrYV76w.js → SignupView-D8_otRzJ.js} +3 -3
- package/dist/assets/{TemplateDetails-DVQ2nLZj.js → TemplateDetails-H2-eQcx6.js} +1 -1
- package/dist/assets/{TemplateList-DPouUB38.js → TemplateList-CRgrPugd.js} +1 -1
- package/dist/assets/{TemplatesCollectionView-O7noND46.js → TemplatesCollectionView-CNoC5FGF.js} +5 -5
- package/dist/assets/{TemplatesSearchView-Bg5DxRv0.js → TemplatesSearchView-BDiwWkwZ.js} +30 -3
- package/dist/assets/{TemplatesView-BnzdRWmO.js → TemplatesView-GnPEf_mW.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-B_6tDGsp.js → TemplatesWorkflowView-7E6jyqpd.js} +5 -5
- package/dist/assets/{VariablesView-BrzvF0ZW.css → VariablesView-2BSJPXRB.css} +5 -5
- package/dist/assets/{VariablesView-DzrhNxAe.js → VariablesView-6sWI8yGj.js} +5 -5
- package/dist/assets/{WorkerView-CC1X8IeJ.js → WorkerView-Mvump-QA.js} +6 -6
- package/dist/assets/{WorkflowActivator-C30ojCUO.js → WorkflowActivator-BaxuVQDl.js} +14 -261
- package/dist/assets/{WorkflowExecutionsPreview-D7jTJ8GL.css → WorkflowActivator-C0R6Yly0.css} +162 -160
- package/dist/assets/{WorkflowExecutionsInfoAccordion-XaZEx8v7.js → WorkflowExecutionsInfoAccordion-DM72fu7i.js} +3 -3
- package/dist/assets/{WorkflowExecutionsLandingPage-8aAYw87x.js → WorkflowExecutionsLandingPage-DX4kL6pX.js} +2 -2
- package/dist/assets/WorkflowExecutionsPreview-BgpOEXPG.css +711 -0
- package/dist/assets/WorkflowExecutionsPreview-C2vE7SHl.js +812 -0
- package/dist/assets/{WorkflowExecutionsView-DR67gC3V.js → WorkflowExecutionsView-CTxicDMq.js} +8 -9
- package/dist/assets/{WorkflowExecutionsView-CZziPgtr.css → WorkflowExecutionsView-_l8AgWIb.css} +2 -2
- package/dist/assets/{WorkflowHistory-eAJEV9yu.js → WorkflowHistory-CD-Fhy8m.js} +18 -18
- package/dist/assets/{WorkflowOnboardingView-BjyAt8Oq.js → WorkflowOnboardingView-DWzhpMMj.js} +1 -1
- package/dist/assets/{WorkflowPreview-BxWA_Uiv.js → WorkflowPreview-A5nTeLz1.js} +1 -1
- package/dist/assets/{WorkflowsView-iKkH1nVB.js → WorkflowsView-DCmyKz3u.js} +46 -50
- package/dist/assets/{WorkflowsView-CQvTAWQ0.css → WorkflowsView-meCWhW8Y.css} +21 -20
- package/dist/assets/canvas-viI6yjxT.js +5 -0
- package/dist/assets/{chartjs.utils-CC0SyVUG.js → chartjs.utils-DVxFoTPh.js} +2 -2
- package/dist/assets/{easyAiWorkflowUtils-H7-jyGZy.js → easyAiWorkflowUtils-CWag2afn.js} +1 -1
- package/dist/assets/{en-D5Q1-BWp.js → en-BcWgUFsO.js} +17 -4
- package/dist/assets/{global-link-actions-zn0GER90.js → global-link-actions-B10zAHg8.js} +1 -1
- package/dist/assets/{import-curl-D7BhanPS.js → import-curl-B1dF12h6.js} +1 -1
- package/dist/assets/{index-HDYArLT1.js → index--ag0tEQM.js} +58887 -67576
- package/dist/assets/{index-B4xpaMaK.css → index-B-xWz5mo.css} +418 -370
- package/dist/assets/{index-CAyQE60i.js → index-BNKFpYX3.js} +1 -1
- package/dist/assets/pickBy-Bnnxgs5-.js +27 -0
- package/dist/assets/{polyfills-J2x06Gdp.js → polyfills-deFGRMT9.js} +0 -44
- package/dist/assets/{templateActions-CxINaftd.js → templateActions-CXnj7CA4.js} +1 -1
- package/dist/assets/{useBeforeUnload-DkY263Ue.js → useBeforeUnload-CZLqOCP0.js} +1 -1
- package/dist/assets/{useExecutionDebugging-BrUGp6HK.js → useExecutionDebugging-CoJa-NM6.js} +1 -1
- package/dist/assets/{useExecutionHelpers-Dulw8xCc.js → useExecutionHelpers-97Ddzif0.js} +1 -1
- package/dist/assets/{useImportCurlCommand-CjFFwjFi.js → useImportCurlCommand-t6LpQGpC.js} +2 -2
- package/dist/assets/{useProjectPages-DGU7KQ6y.js → useProjectPages-C95x1s47.js} +1 -1
- package/dist/assets/{usePushConnection-4FO744xJ.js → usePushConnection-C1qgSYjB.js} +22 -23
- package/dist/assets/{useWorkflowActivate-CUShgia-.js → useWorkflowActivate-E5Lz7Bjd.js} +4 -3
- package/dist/index.html +3 -3
- package/package.json +1 -1
- package/tsconfig.json +9 -1
- package/vite.config.mts +10 -2
- package/dist/assets/AuthView-D4i2WDPk.css +0 -408
- package/dist/assets/CanvasChatSwitch-D1N7Xp_1.js +0 -275
- package/dist/assets/CollectionParameter-DOqrZmRA.js +0 -4
- package/dist/assets/DemoFooter-DpmRLCPd.js +0 -23
- package/dist/assets/RunDataAi-D9VLFXIf.css +0 -443
- package/dist/assets/RunDataAi-DZzXTVdi.js +0 -466
- package/dist/assets/WorkflowActivator-CL2wacc7.css +0 -1084
- package/dist/assets/WorkflowExecutionsPreview-CpAsFXP1.js +0 -683
- package/dist/assets/canvas-BzAUJmlt.js +0 -24
- package/dist/assets/pickBy-2p7dSPXv.js +0 -16
- package/dist/assets/useWorkflowSaving-oozcXWTy.js +0 -66
|
@@ -1,44 +1,25 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { u as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
const _sfc_main$
|
|
10
|
-
|
|
11
|
-
props: {
|
|
12
|
-
type: {},
|
|
13
|
-
label: {}
|
|
14
|
-
},
|
|
15
|
-
setup(__props) {
|
|
16
|
-
return (_ctx, _cache) => {
|
|
17
|
-
const _component_N8nButton = resolveComponent("N8nButton");
|
|
18
|
-
return openBlock(), createBlock(_component_N8nButton, {
|
|
19
|
-
label: _ctx.label,
|
|
20
|
-
size: "large",
|
|
21
|
-
icon: "comment",
|
|
22
|
-
type: _ctx.type,
|
|
23
|
-
"data-test-id": "workflow-chat-button"
|
|
24
|
-
}, null, 8, ["label", "type"]);
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
const _sfc_main$F = {};
|
|
29
|
-
const _hoisted_1$d = {
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-CNH2xciY.js","assets/index--ag0tEQM.js","assets/index-B-xWz5mo.css","assets/NodeCreation-RKvezEeg.css","assets/NodeDetailsView-DQ4I8u72.js","assets/RunData-D6YmSB6p.js","assets/FileSaver.min-BUciI8xL.js","assets/useExecutionHelpers-97Ddzif0.js","assets/RunData-B5_okvCv.css","assets/RunDataParsedAiContent-DPcEKWtn.js","assets/RunDataParsedAiContent-9EEUzCKp.css","assets/useWorkflowActivate-E5Lz7Bjd.js","assets/import-curl-B1dF12h6.js","assets/global-link-actions-B10zAHg8.js","assets/useExecutionDebugging-CoJa-NM6.js","assets/useBeforeUnload-CZLqOCP0.js","assets/easyAiWorkflowUtils-CWag2afn.js","assets/canvas-viI6yjxT.js","assets/NodeDetailsView-DWA1ZgwG.css","assets/SetupWorkflowCredentialsButton-DgTQe_yd.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import { _ as _export_sfc$1, i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, ca as PanelPosition, cb as useVueFlow, bH as toRef, e as createBlock, w as withCtx, x as renderSlot, f as createCommentVNode, F as Fragment, j as createVNode, bO as resolveDynamicComponent, m as unref, cc as _sfc_main$N, q as computed, h as resolveComponent, c as useI18n, bY as KeyboardShortcutTooltip, n as normalizeClass, bb as NodeConnectionTypes, cd as getBezierPath, ce as getSmoothStepPath, cf as Position, bK as inject, cg as CanvasKey, X as useCssModule, ch as parseCanvasConnectionHandleString, r as ref, o as onMounted, C as renderList, ci as _sfc_main$d$1, A as normalizeStyle, G as useUIStore, bt as useNodeTypesStore, P as useWorkflowsStore, $ as useSourceControlStore, a7 as getResourcePermissions, cj as isNodeWithWorkflowSelector, ck as getSubworkflowId, cl as isPresent, W as watch, cm as getMousePosition, aC as STICKY_NODE_TYPE, bl as usePinnedData, cn as NOT_DUPLICATABLE_NODE_TYPES, co as isExecutable, cp as Teleport, b_ as useStyles, b$ as N8nActionDropdown, bw as getDefaultExportFromCjs, cq as NODE_SIZE, cr as CanvasNodeRenderType, cs as GRID_SIZE, c1 as useThrottleFn, ct as getRectOfNodes, bR as onUnmounted, cu as useActiveElement, cv as useDeviceSupport, cw as useEventListener$1, cx as onKeyDown, cy as onKeyUp, cz as useSlots, cA as useAttrs, cB as getBoundsofRects, cC as watchEffect, t as toDisplayString, cD as getConnectedEdges, bM as normalizeProps, bI as mergeProps, bq as provide, au as h, aZ as createSlots, cE as isValidNodeConnectionType, cF as _sfc_main$3$1, cG as CanvasConnectionMode, cH as CanvasNodeKey, cI as mergeModels, cJ as useModel, v as onBeforeUnmount, bn as useNodeHelpers, cK as TitledList, aV as N8nTooltip, l as createTextVNode, cL as CanvasNodeDirtiness, p as useSettingsStore, bs as useCanvasOperations, cM as refDebounced, ac as useTemplateRef, cN as useElementSize, bC as _sfc_main$O, ad as InlineRename, aw as useNDVStore, cO as isCommunityPackageName, cP as NPM_PACKAGE_DOCS_BASE_URL, cQ as BUILTIN_NODES_DOCS_URL, cR as COMMUNITY_NODES_INSTALLATION_DOCS_URL, aT as useExternalHooks, ai as useTelemetry, bU as useClipboard, a5 as useWorkflowHelpers, a as useToast, cS as OPEN_URL_PANEL_TRIGGER_NODE_TYPES, cT as PRODUCTION_ONLY_TRIGGER_NODE_TYPES, cU as MCP_TRIGGER_NODE_TYPE, cV as FORM_TRIGGER_NODE_TYPE, bk as CHAT_TRIGGER_NODE_TYPE, aU as onClickOutside, cW as toRef$1, cX as tryOnScopeDispose, cY as toValue, cZ as isIOS, c_ as noop$2, c$ as isObject, d0 as isClient, E as useDebounce, d1 as getNodeInputs, d2 as SWITCH_NODE_TYPE, d3 as isEqual, d4 as captureException, ay as usePostHog, d5 as useCredentialsStore, u as useUsersStore, a0 as useProjectsStore, d6 as OPEN_AI_API_CREDENTIAL_TYPE, d7 as AI_CREDITS_EXPERIMENT, d8 as useHistoryStore, ab as ProjectTypes, d9 as getConnectionTypes, c9 as ndvEventBus, da as _sfc_main$P, db as CUSTOM_NODES_DOCS_URL, aE as withDirectives, aF as vShow, dc as _sfc_main$Q, dd as NodeCredentials, bB as withModifiers, de as get$3, df as getNodeParameters, dg as deepCopy, dh as set$3, di as unset, dj as getUpdatedToolDescription, dk as RenameNodeCommand, dl as isINodePropertyCollectionList, dm as isINodePropertiesList, dn as isINodePropertyOptionsList, dp as displayParameter, B as createEventBus, dq as useGetPointerPosition, dr as clamp, ds as NodeId, dt as useNodeCreatorStore, aj as nodeViewEventBus, du as NODE_CREATOR_OPEN_SOURCES, dv as useBuilderStore, bT as withKeys, dw as CanvasNodeHandleKey, dx as Transition$1, dy as _sfc_main$f$1, b as useRouter, bm as useLogsStore, bo as useRunWorkflow, bF as N8nButton, dz as insertSpacersBetweenEndpoints, dA as createCanvasConnectionHandleString, y as nextTick, dB as _sfc_main$1$4, dC as MarkerType, dD as Suspense, bN as guardReactiveProps, dE as updateViewportToContainNodes, dF as useNodeDirtiness, dG as CUSTOM_API_CALL_KEY, dH as mapLegacyEndpointsToCanvasConnectionPort, dI as getNodeOutputs, dJ as getTriggerNodeServiceName, dK as sanitizeHtml, dL as WAIT_NODE_TYPE, dM as SEND_AND_WAIT_OPERATION, dN as FORM_NODE_TYPE, dO as WAIT_INDEFINITELY, dP as checkOverlap, dQ as SIMULATE_NODE_TYPE, dR as SIMULATE_TRIGGER_NODE_TYPE, dS as mapLegacyConnectionsToCanvasConnections, dT as getNodeIconSource, dU as refThrottled, ba as isChatNode, dV as truncateBeforeLast, br as N8nText, dW as reactive, Q as useRoute, a3 as useDocumentTitle, a4 as useWorkflowSaving, dX as useEnvironmentsStore, dY as useExternalSecretsStore, Y as useRootStore, ax as useExecutionsStore, Z as useCanvasStore, a2 as useNpsSurveyStore, D as useTagsStore, O as usePushConnectionStore, aR as useTemplatesStore, a1 as useFoldersStore, dZ as useAgentRequestStore, d_ as useWorkflowExtraction, R as PLACEHOLDER_EMPTY_WORKFLOW_ID, d$ as NEW_WORKFLOW_ID, V as VIEWS, bu as START_NODE_TYPE, e0 as getNodeViewTab, s as MAIN_HEADER_TABS, e1 as VALID_WORKFLOW_IMPORT_URL_REGEX, ak as useMessage, al as MODAL_CONFIRM, e2 as jsonParse, bj as MANUAL_CHAT_TRIGGER_NODE_TYPE, e3 as EVALUATION_TRIGGER_NODE_TYPE, e4 as getBounds, e5 as onBeforeRouteLeave, aD as onBeforeMount, am as WORKFLOW_SETTINGS_MODAL_KEY, e6 as onActivated, e7 as onDeactivated, e8 as defineAsyncComponent, e9 as N8nCallout, as as __vitePreload, aa as EnterpriseEditionFeature, ea as EVALUATION_NODE_TYPE, eb as tryToParseNumber, aK as sourceControlEventBus, ec as getNodesWithNormalizedPosition, ed as historyBus, ee as needsAgentInput, ef as FROM_AI_PARAMETERS_MODAL_KEY, eg as DRAG_EVENT_DATA_KEY } from "./index--ag0tEQM.js";
|
|
3
|
+
import { i as importCurlEventBus } from "./import-curl-B1dF12h6.js";
|
|
4
|
+
import { g as globalLinkActionsEventBus } from "./global-link-actions-B10zAHg8.js";
|
|
5
|
+
import { u as useExecutionDebugging } from "./useExecutionDebugging-CoJa-NM6.js";
|
|
6
|
+
import { u as useBeforeUnload } from "./useBeforeUnload-CZLqOCP0.js";
|
|
7
|
+
import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-CWag2afn.js";
|
|
8
|
+
import { c as canvasEventBus } from "./canvas-viI6yjxT.js";
|
|
9
|
+
const _sfc_main$M = {};
|
|
10
|
+
const _hoisted_1$h = {
|
|
30
11
|
xmlns: "http://www.w3.org/2000/svg",
|
|
31
12
|
viewBox: "0 0 16 16"
|
|
32
13
|
};
|
|
33
14
|
function _sfc_render$1(_ctx, _cache) {
|
|
34
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
15
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$h, _cache[0] || (_cache[0] = [
|
|
35
16
|
createBaseVNode("path", {
|
|
36
17
|
fill: "currentColor",
|
|
37
18
|
d: "M1.6.13c-.18-.17-.47-.18-.62 0L.56.57.14.98c-.2.15-.18.44 0 .62l3.63 3.6c.1.1.1.27 0 .37-.2.2-.53.52-.93.94-.56.57-.12 1.62.22 2.11.05.07.12.1.2.1.05-.01.1-.04.15-.08l5.23-5.22c.1-.1.1-.26-.02-.34-.5-.34-1.55-.78-2.12-.22-.42.4-.75.73-.94.93-.1.1-.27.1-.37 0L1.6.13ZM9.5 3.9c.07-.09.2-.1.3-.04l6.07 3.44c.15.08.18.29.05.4l-1.21 1.22a.26.26 0 0 1-.26.07l-2.18-.64a.26.26 0 0 0-.32.33l.76 2.02c.04.1.01.2-.06.27L7.7 15.92a.26.26 0 0 1-.41-.05L3.83 9.8a.26.26 0 0 1 .04-.3l5.62-5.6Z"
|
|
38
19
|
}, null, -1)
|
|
39
20
|
]));
|
|
40
21
|
}
|
|
41
|
-
const TidyUpIcon = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
22
|
+
const TidyUpIcon = /* @__PURE__ */ _export_sfc$1(_sfc_main$M, [["render", _sfc_render$1]]);
|
|
42
23
|
const _sfc_main$1$3 = {
|
|
43
24
|
name: "ControlButton",
|
|
44
25
|
compatConfig: { MODE: 3 }
|
|
@@ -62,11 +43,11 @@ const _hoisted_1$4$1 = {
|
|
|
62
43
|
viewBox: "0 0 32 32"
|
|
63
44
|
};
|
|
64
45
|
const _hoisted_2$4$1 = /* @__PURE__ */ createBaseVNode("path", { d: "M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z" }, null, -1);
|
|
65
|
-
const _hoisted_3$4 = [
|
|
46
|
+
const _hoisted_3$4$1 = [
|
|
66
47
|
_hoisted_2$4$1
|
|
67
48
|
];
|
|
68
49
|
function render$4(_ctx, _cache) {
|
|
69
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$4$1, _hoisted_3$4);
|
|
50
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$4$1, _hoisted_3$4$1);
|
|
70
51
|
}
|
|
71
52
|
const PlusIcon = { render: render$4 };
|
|
72
53
|
const _hoisted_1$3$1 = {
|
|
@@ -105,23 +86,23 @@ function render$1(_ctx, _cache) {
|
|
|
105
86
|
return openBlock(), createElementBlock("svg", _hoisted_1$1$2, _hoisted_3$1$1);
|
|
106
87
|
}
|
|
107
88
|
const Lock = { render: render$1 };
|
|
108
|
-
const _hoisted_1$
|
|
89
|
+
const _hoisted_1$g = {
|
|
109
90
|
xmlns: "http://www.w3.org/2000/svg",
|
|
110
91
|
viewBox: "0 0 25 32"
|
|
111
92
|
};
|
|
112
|
-
const _hoisted_2$
|
|
113
|
-
const _hoisted_3$
|
|
114
|
-
_hoisted_2$
|
|
93
|
+
const _hoisted_2$b = /* @__PURE__ */ createBaseVNode("path", { d: "M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047z" }, null, -1);
|
|
94
|
+
const _hoisted_3$7 = [
|
|
95
|
+
_hoisted_2$b
|
|
115
96
|
];
|
|
116
97
|
function render(_ctx, _cache) {
|
|
117
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
98
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$g, _hoisted_3$7);
|
|
118
99
|
}
|
|
119
100
|
const Unlock = { render };
|
|
120
101
|
const __default__$4 = {
|
|
121
102
|
name: "Controls",
|
|
122
103
|
compatConfig: { MODE: 3 }
|
|
123
104
|
};
|
|
124
|
-
const _sfc_main$
|
|
105
|
+
const _sfc_main$L = /* @__PURE__ */ defineComponent({
|
|
125
106
|
...__default__$4,
|
|
126
107
|
props: {
|
|
127
108
|
showZoom: { type: Boolean, default: true },
|
|
@@ -164,7 +145,7 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
|
|
|
164
145
|
emit("interactionChange", !isInteractive.value);
|
|
165
146
|
}
|
|
166
147
|
return (_ctx, _cache) => {
|
|
167
|
-
return openBlock(), createBlock(unref(_sfc_main$
|
|
148
|
+
return openBlock(), createBlock(unref(_sfc_main$N), {
|
|
168
149
|
class: "vue-flow__controls",
|
|
169
150
|
position: _ctx.position
|
|
170
151
|
}, {
|
|
@@ -237,7 +218,7 @@ const _sfc_main$E = /* @__PURE__ */ defineComponent({
|
|
|
237
218
|
};
|
|
238
219
|
}
|
|
239
220
|
});
|
|
240
|
-
const _sfc_main$
|
|
221
|
+
const _sfc_main$K = /* @__PURE__ */ defineComponent({
|
|
241
222
|
__name: "CanvasControlButtons",
|
|
242
223
|
props: {
|
|
243
224
|
zoom: { default: 1 },
|
|
@@ -267,7 +248,7 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
|
|
|
267
248
|
return (_ctx, _cache) => {
|
|
268
249
|
const _component_N8nIconButton = resolveComponent("N8nIconButton");
|
|
269
250
|
const _component_N8nButton = resolveComponent("N8nButton");
|
|
270
|
-
return openBlock(), createBlock(unref(_sfc_main$
|
|
251
|
+
return openBlock(), createBlock(unref(_sfc_main$L), {
|
|
271
252
|
"show-zoom": false,
|
|
272
253
|
"show-fit-view": false
|
|
273
254
|
}, {
|
|
@@ -362,24 +343,24 @@ const _sfc_main$D = /* @__PURE__ */ defineComponent({
|
|
|
362
343
|
}
|
|
363
344
|
});
|
|
364
345
|
const iconButton = "_iconButton_fx9xi_123";
|
|
365
|
-
const style0$
|
|
346
|
+
const style0$v = {
|
|
366
347
|
iconButton
|
|
367
348
|
};
|
|
368
|
-
const cssModules$
|
|
369
|
-
"$style": style0$
|
|
349
|
+
const cssModules$v = {
|
|
350
|
+
"$style": style0$v
|
|
370
351
|
};
|
|
371
|
-
const __unplugin_components_1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
352
|
+
const __unplugin_components_1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$K, [["__cssModules", cssModules$v]]);
|
|
372
353
|
const EDGE_PADDING_BOTTOM = 130;
|
|
373
354
|
const EDGE_PADDING_X = 40;
|
|
374
355
|
const EDGE_BORDER_RADIUS = 16;
|
|
375
356
|
const HANDLE_SIZE = 20;
|
|
376
357
|
const isRightOfSourceHandle = (sourceX, targetX) => sourceX - HANDLE_SIZE > targetX;
|
|
377
358
|
function getEdgeRenderData(props, {
|
|
378
|
-
connectionType = NodeConnectionTypes.Main
|
|
359
|
+
connectionType: connectionType2 = NodeConnectionTypes.Main
|
|
379
360
|
} = {}) {
|
|
380
361
|
const { targetX, targetY, sourceX, sourceY, sourcePosition, targetPosition } = props;
|
|
381
362
|
const isConnectorStraight = sourceY === targetY;
|
|
382
|
-
if (!isRightOfSourceHandle(sourceX, targetX) ||
|
|
363
|
+
if (!isRightOfSourceHandle(sourceX, targetX) || connectionType2 !== NodeConnectionTypes.Main) {
|
|
383
364
|
const segment = getBezierPath(props);
|
|
384
365
|
return {
|
|
385
366
|
segments: [segment],
|
|
@@ -425,7 +406,7 @@ function injectStrict(key, fallback) {
|
|
|
425
406
|
function useCanvas() {
|
|
426
407
|
return injectStrict(CanvasKey);
|
|
427
408
|
}
|
|
428
|
-
const _sfc_main$
|
|
409
|
+
const _sfc_main$J = /* @__PURE__ */ defineComponent({
|
|
429
410
|
__name: "CanvasConnectionLine",
|
|
430
411
|
props: {
|
|
431
412
|
sourceX: {},
|
|
@@ -446,7 +427,7 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
|
|
|
446
427
|
const props = __props;
|
|
447
428
|
const $style = useCssModule();
|
|
448
429
|
const { connectingHandle } = useCanvas();
|
|
449
|
-
const
|
|
430
|
+
const connectionType2 = computed(
|
|
450
431
|
() => parseCanvasConnectionHandleString(connectingHandle.value?.handleId).type
|
|
451
432
|
);
|
|
452
433
|
const classes = computed(() => {
|
|
@@ -456,19 +437,19 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
|
|
|
456
437
|
};
|
|
457
438
|
});
|
|
458
439
|
const edgeColor = computed(() => {
|
|
459
|
-
if (
|
|
440
|
+
if (connectionType2.value !== NodeConnectionTypes.Main) {
|
|
460
441
|
return "var(--node-type-supplemental-color)";
|
|
461
442
|
} else {
|
|
462
443
|
return "var(--color-foreground-xdark)";
|
|
463
444
|
}
|
|
464
445
|
});
|
|
465
446
|
const edgeStyle = computed(() => ({
|
|
466
|
-
...
|
|
447
|
+
...connectionType2.value === NodeConnectionTypes.Main ? {} : { strokeDasharray: "8,8" },
|
|
467
448
|
strokeWidth: 2,
|
|
468
449
|
stroke: edgeColor.value
|
|
469
450
|
}));
|
|
470
451
|
const renderData = computed(
|
|
471
|
-
() => getEdgeRenderData(props, { connectionType:
|
|
452
|
+
() => getEdgeRenderData(props, { connectionType: connectionType2.value })
|
|
472
453
|
);
|
|
473
454
|
const segments = computed(() => renderData.value.segments);
|
|
474
455
|
const isVisible = ref(false);
|
|
@@ -492,14 +473,14 @@ const _sfc_main$C = /* @__PURE__ */ defineComponent({
|
|
|
492
473
|
});
|
|
493
474
|
const edge$1 = "_edge_cbk94_123";
|
|
494
475
|
const visible = "_visible_cbk94_129";
|
|
495
|
-
const style0$
|
|
476
|
+
const style0$u = {
|
|
496
477
|
edge: edge$1,
|
|
497
478
|
visible
|
|
498
479
|
};
|
|
499
|
-
const cssModules$
|
|
500
|
-
"$style": style0$
|
|
480
|
+
const cssModules$u = {
|
|
481
|
+
"$style": style0$u
|
|
501
482
|
};
|
|
502
|
-
const __unplugin_components_0$5 = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
483
|
+
const __unplugin_components_0$5 = /* @__PURE__ */ _export_sfc$1(_sfc_main$J, [["__cssModules", cssModules$u]]);
|
|
503
484
|
const position = ref([0, 0]);
|
|
504
485
|
const isOpen = ref(false);
|
|
505
486
|
const target = ref();
|
|
@@ -730,7 +711,7 @@ const useContextMenu = (onAction = () => {
|
|
|
730
711
|
_dispatchAction
|
|
731
712
|
};
|
|
732
713
|
};
|
|
733
|
-
const _sfc_main$
|
|
714
|
+
const _sfc_main$I = /* @__PURE__ */ defineComponent({
|
|
734
715
|
__name: "ContextMenu",
|
|
735
716
|
emits: ["action"],
|
|
736
717
|
setup(__props, { emit: __emit }) {
|
|
@@ -798,14 +779,14 @@ const _sfc_main$B = /* @__PURE__ */ defineComponent({
|
|
|
798
779
|
});
|
|
799
780
|
const contextMenu = "_contextMenu_12fz3_123";
|
|
800
781
|
const activator = "_activator_12fz3_127";
|
|
801
|
-
const style0$
|
|
782
|
+
const style0$t = {
|
|
802
783
|
contextMenu,
|
|
803
784
|
activator
|
|
804
785
|
};
|
|
805
|
-
const cssModules$
|
|
806
|
-
"$style": style0$
|
|
786
|
+
const cssModules$t = {
|
|
787
|
+
"$style": style0$t
|
|
807
788
|
};
|
|
808
|
-
const ContextMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
789
|
+
const ContextMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$I, [["__cssModules", cssModules$t]]);
|
|
809
790
|
var graph;
|
|
810
791
|
var hasRequiredGraph;
|
|
811
792
|
function requireGraph() {
|
|
@@ -4823,7 +4804,7 @@ const useKeybindings = (keymap, options) => {
|
|
|
4823
4804
|
handler(event);
|
|
4824
4805
|
}
|
|
4825
4806
|
}
|
|
4826
|
-
useEventListener(document, "keydown", onKeyDown2);
|
|
4807
|
+
useEventListener$1(document, "keydown", onKeyDown2);
|
|
4827
4808
|
};
|
|
4828
4809
|
function useShortKeyPress(key, fn, {
|
|
4829
4810
|
dedupe = true,
|
|
@@ -7389,14 +7370,14 @@ const _sfc_main$1$2 = /* @__PURE__ */ defineComponent({
|
|
|
7389
7370
|
};
|
|
7390
7371
|
}
|
|
7391
7372
|
});
|
|
7392
|
-
const _hoisted_1$
|
|
7393
|
-
const _hoisted_2$
|
|
7394
|
-
const _hoisted_3$
|
|
7373
|
+
const _hoisted_1$f = ["width", "height", "viewBox", "aria-labelledby"];
|
|
7374
|
+
const _hoisted_2$a = ["id"];
|
|
7375
|
+
const _hoisted_3$6 = ["d", "fill", "stroke", "stroke-width"];
|
|
7395
7376
|
const __default__$3 = {
|
|
7396
7377
|
name: "MiniMap",
|
|
7397
7378
|
compatConfig: { MODE: 3 }
|
|
7398
7379
|
};
|
|
7399
|
-
const _sfc_main$
|
|
7380
|
+
const _sfc_main$H = /* @__PURE__ */ defineComponent({
|
|
7400
7381
|
...__default__$3,
|
|
7401
7382
|
props: {
|
|
7402
7383
|
nodeColor: { type: [String, Function], default: "#e2e2e2" },
|
|
@@ -7559,7 +7540,7 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
|
7559
7540
|
emit("nodeMouseleave", param);
|
|
7560
7541
|
}
|
|
7561
7542
|
return (_ctx, _cache) => {
|
|
7562
|
-
return openBlock(), createBlock(unref(_sfc_main$
|
|
7543
|
+
return openBlock(), createBlock(unref(_sfc_main$N), {
|
|
7563
7544
|
position: _ctx.position,
|
|
7564
7545
|
class: normalizeClass(["vue-flow__minimap", { pannable: _ctx.pannable, zoomable: _ctx.zoomable }])
|
|
7565
7546
|
}, {
|
|
@@ -7577,7 +7558,7 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
|
7577
7558
|
_ctx.ariaLabel ? (openBlock(), createElementBlock("title", {
|
|
7578
7559
|
key: 0,
|
|
7579
7560
|
id: `vue-flow__minimap-${unref(id2)}`
|
|
7580
|
-
}, toDisplayString(_ctx.ariaLabel), 9, _hoisted_2$
|
|
7561
|
+
}, toDisplayString(_ctx.ariaLabel), 9, _hoisted_2$a)) : createCommentVNode("", true),
|
|
7581
7562
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(getNodesInitialized), (node2) => {
|
|
7582
7563
|
return openBlock(), createBlock(_sfc_main$1$2, {
|
|
7583
7564
|
id: node2.id,
|
|
@@ -7609,17 +7590,17 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
|
7609
7590
|
stroke: _ctx.maskStrokeColor,
|
|
7610
7591
|
"stroke-width": _ctx.maskStrokeWidth,
|
|
7611
7592
|
"fill-rule": "evenodd"
|
|
7612
|
-
}, null, 8, _hoisted_3$
|
|
7613
|
-
], 8, _hoisted_1$
|
|
7593
|
+
}, null, 8, _hoisted_3$6)
|
|
7594
|
+
], 8, _hoisted_1$f))
|
|
7614
7595
|
]),
|
|
7615
7596
|
_: 1
|
|
7616
7597
|
}, 8, ["position", "class"]);
|
|
7617
7598
|
};
|
|
7618
7599
|
}
|
|
7619
7600
|
});
|
|
7620
|
-
const _hoisted_1$
|
|
7621
|
-
const _hoisted_2$
|
|
7622
|
-
const _sfc_main$
|
|
7601
|
+
const _hoisted_1$e = ["id", "x", "y", "width", "height", "patternTransform"];
|
|
7602
|
+
const _hoisted_2$9 = ["d", "stroke-width"];
|
|
7603
|
+
const _sfc_main$G = /* @__PURE__ */ defineComponent({
|
|
7623
7604
|
__name: "CanvasBackgroundStripedPattern",
|
|
7624
7605
|
props: {
|
|
7625
7606
|
id: {},
|
|
@@ -7644,12 +7625,12 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
|
|
|
7644
7625
|
createBaseVNode("path", {
|
|
7645
7626
|
d: `M0 ${scaledGap.value / 2} H${scaledGap.value}`,
|
|
7646
7627
|
"stroke-width": scaledGap.value / 2
|
|
7647
|
-
}, null, 8, _hoisted_2$
|
|
7648
|
-
], 8, _hoisted_1$
|
|
7628
|
+
}, null, 8, _hoisted_2$9)
|
|
7629
|
+
], 8, _hoisted_1$e);
|
|
7649
7630
|
};
|
|
7650
7631
|
}
|
|
7651
7632
|
});
|
|
7652
|
-
const CanvasBackgroundStripedPattern = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
7633
|
+
const CanvasBackgroundStripedPattern = /* @__PURE__ */ _export_sfc$1(_sfc_main$G, [["__scopeId", "data-v-161512f5"]]);
|
|
7653
7634
|
var BackgroundVariant = /* @__PURE__ */ ((BackgroundVariant2) => {
|
|
7654
7635
|
BackgroundVariant2["Lines"] = "lines";
|
|
7655
7636
|
BackgroundVariant2["Dots"] = "dots";
|
|
@@ -7673,19 +7654,19 @@ const DefaultBgColors = {
|
|
|
7673
7654
|
[BackgroundVariant.Dots]: "#81818a",
|
|
7674
7655
|
[BackgroundVariant.Lines]: "#eee"
|
|
7675
7656
|
};
|
|
7676
|
-
const _hoisted_1$
|
|
7677
|
-
const _hoisted_2$
|
|
7657
|
+
const _hoisted_1$d = ["id", "x", "y", "width", "height", "patternTransform"];
|
|
7658
|
+
const _hoisted_2$8 = {
|
|
7678
7659
|
key: 2,
|
|
7679
7660
|
height: "100",
|
|
7680
7661
|
width: "100"
|
|
7681
7662
|
};
|
|
7682
|
-
const _hoisted_3$
|
|
7683
|
-
const _hoisted_4$
|
|
7663
|
+
const _hoisted_3$5 = ["fill"];
|
|
7664
|
+
const _hoisted_4$4 = ["x", "y", "fill"];
|
|
7684
7665
|
const __default__$2 = {
|
|
7685
7666
|
name: "Background",
|
|
7686
7667
|
compatConfig: { MODE: 3 }
|
|
7687
7668
|
};
|
|
7688
|
-
const _sfc_main$
|
|
7669
|
+
const _sfc_main$F = /* @__PURE__ */ defineComponent({
|
|
7689
7670
|
...__default__$2,
|
|
7690
7671
|
props: {
|
|
7691
7672
|
id: {},
|
|
@@ -7748,15 +7729,15 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
|
|
|
7748
7729
|
color: patternColor.value,
|
|
7749
7730
|
radius: background.value.size / 2
|
|
7750
7731
|
}, null, 8, ["color", "radius"])) : createCommentVNode("", true),
|
|
7751
|
-
_ctx.bgColor ? (openBlock(), createElementBlock("svg", _hoisted_2$
|
|
7732
|
+
_ctx.bgColor ? (openBlock(), createElementBlock("svg", _hoisted_2$8, [
|
|
7752
7733
|
createBaseVNode("rect", {
|
|
7753
7734
|
width: "100%",
|
|
7754
7735
|
height: "100%",
|
|
7755
7736
|
fill: _ctx.bgColor
|
|
7756
|
-
}, null, 8, _hoisted_3$
|
|
7737
|
+
}, null, 8, _hoisted_3$5)
|
|
7757
7738
|
])) : createCommentVNode("", true)
|
|
7758
7739
|
])
|
|
7759
|
-
], 8, _hoisted_1$
|
|
7740
|
+
], 8, _hoisted_1$d)
|
|
7760
7741
|
]),
|
|
7761
7742
|
createBaseVNode("rect", {
|
|
7762
7743
|
x: _ctx.x,
|
|
@@ -7764,13 +7745,13 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
|
|
|
7764
7745
|
width: "100%",
|
|
7765
7746
|
height: "100%",
|
|
7766
7747
|
fill: `url(#${patternId.value})`
|
|
7767
|
-
}, null, 8, _hoisted_4$
|
|
7748
|
+
}, null, 8, _hoisted_4$4),
|
|
7768
7749
|
renderSlot(_ctx.$slots, "default", { id: patternId.value })
|
|
7769
7750
|
], 4);
|
|
7770
7751
|
};
|
|
7771
7752
|
}
|
|
7772
7753
|
});
|
|
7773
|
-
const _sfc_main$
|
|
7754
|
+
const _sfc_main$E = /* @__PURE__ */ defineComponent({
|
|
7774
7755
|
__name: "CanvasBackground",
|
|
7775
7756
|
props: {
|
|
7776
7757
|
striped: { type: Boolean },
|
|
@@ -7778,7 +7759,7 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
|
7778
7759
|
},
|
|
7779
7760
|
setup(__props) {
|
|
7780
7761
|
return (_ctx, _cache) => {
|
|
7781
|
-
return openBlock(), createBlock(unref(_sfc_main$
|
|
7762
|
+
return openBlock(), createBlock(unref(_sfc_main$F), {
|
|
7782
7763
|
"data-test-id": "canvas-background",
|
|
7783
7764
|
"pattern-color": "#aaa",
|
|
7784
7765
|
gap: unref(GRID_SIZE)
|
|
@@ -7800,8 +7781,8 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
|
7800
7781
|
};
|
|
7801
7782
|
}
|
|
7802
7783
|
});
|
|
7803
|
-
const _hoisted_1$
|
|
7804
|
-
const _sfc_main$
|
|
7784
|
+
const _hoisted_1$c = ["id"];
|
|
7785
|
+
const _sfc_main$D = /* @__PURE__ */ defineComponent({
|
|
7805
7786
|
__name: "CanvasArrowHeadMarker",
|
|
7806
7787
|
props: {
|
|
7807
7788
|
id: {}
|
|
@@ -7828,13 +7809,13 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
|
|
|
7828
7809
|
stroke: "context-stroke",
|
|
7829
7810
|
fill: "context-stroke"
|
|
7830
7811
|
}, null, -1)
|
|
7831
|
-
]), 8, _hoisted_1$
|
|
7812
|
+
]), 8, _hoisted_1$c)
|
|
7832
7813
|
])
|
|
7833
7814
|
]);
|
|
7834
7815
|
};
|
|
7835
7816
|
}
|
|
7836
7817
|
});
|
|
7837
|
-
const _sfc_main$
|
|
7818
|
+
const _sfc_main$C = /* @__PURE__ */ defineComponent({
|
|
7838
7819
|
__name: "CanvasEdgeToolbar",
|
|
7839
7820
|
props: {
|
|
7840
7821
|
type: {}
|
|
@@ -7885,17 +7866,17 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
|
|
|
7885
7866
|
}
|
|
7886
7867
|
});
|
|
7887
7868
|
const canvasEdgeToolbar = "_canvasEdgeToolbar_uogmx_123";
|
|
7888
|
-
const style0$
|
|
7869
|
+
const style0$s = {
|
|
7889
7870
|
canvasEdgeToolbar
|
|
7890
7871
|
};
|
|
7891
|
-
const cssModules$
|
|
7892
|
-
"$style": style0$
|
|
7872
|
+
const cssModules$s = {
|
|
7873
|
+
"$style": style0$s
|
|
7893
7874
|
};
|
|
7894
|
-
const CanvasEdgeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
7895
|
-
const _hoisted_1$
|
|
7896
|
-
const _hoisted_2$
|
|
7875
|
+
const CanvasEdgeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["__cssModules", cssModules$s]]);
|
|
7876
|
+
const _hoisted_1$b = ["data-source-node-name", "data-target-node-name"];
|
|
7877
|
+
const _hoisted_2$7 = ["data-source-node-name", "data-target-node-name", "data-edge-status"];
|
|
7897
7878
|
const delayedHoveredTimeout = 600;
|
|
7898
|
-
const _sfc_main$
|
|
7879
|
+
const _sfc_main$B = /* @__PURE__ */ defineComponent({
|
|
7899
7880
|
__name: "CanvasEdge",
|
|
7900
7881
|
props: {
|
|
7901
7882
|
id: {},
|
|
@@ -7938,7 +7919,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|
|
7938
7919
|
const props = __props;
|
|
7939
7920
|
const data = toRef(props, "data");
|
|
7940
7921
|
const $style = useCssModule();
|
|
7941
|
-
const
|
|
7922
|
+
const connectionType2 = computed(
|
|
7942
7923
|
() => isValidNodeConnectionType(props.data.source.type) ? props.data.source.type : NodeConnectionTypes.Main
|
|
7943
7924
|
);
|
|
7944
7925
|
const delayedHovered = ref(props.hovered);
|
|
@@ -8000,7 +7981,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|
|
8000
7981
|
}));
|
|
8001
7982
|
const renderData = computed(
|
|
8002
7983
|
() => getEdgeRenderData(props, {
|
|
8003
|
-
connectionType:
|
|
7984
|
+
connectionType: connectionType2.value
|
|
8004
7985
|
})
|
|
8005
7986
|
);
|
|
8006
7987
|
const segments = computed(() => renderData.value.segments);
|
|
@@ -8041,7 +8022,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|
|
8041
8022
|
"interaction-width": 40
|
|
8042
8023
|
}, null, 8, ["id", "class", "style", "path", "marker-end"]);
|
|
8043
8024
|
}), 128))
|
|
8044
|
-
], 8, _hoisted_1$
|
|
8025
|
+
], 8, _hoisted_1$b),
|
|
8045
8026
|
createVNode(unref(_sfc_main$3$1), null, {
|
|
8046
8027
|
default: withCtx(() => [
|
|
8047
8028
|
createBaseVNode("div", {
|
|
@@ -8056,7 +8037,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|
|
8056
8037
|
}, [
|
|
8057
8038
|
renderToolbar.value ? (openBlock(), createBlock(CanvasEdgeToolbar, {
|
|
8058
8039
|
key: 0,
|
|
8059
|
-
type:
|
|
8040
|
+
type: connectionType2.value,
|
|
8060
8041
|
onAdd: onAdd2,
|
|
8061
8042
|
onDelete
|
|
8062
8043
|
}, null, 8, ["type"])) : (openBlock(), createElementBlock("div", {
|
|
@@ -8064,7 +8045,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|
|
8064
8045
|
style: normalizeStyle(edgeLabelStyle.value),
|
|
8065
8046
|
class: normalizeClass(unref($style).edgeLabel)
|
|
8066
8047
|
}, toDisplayString(_ctx.label), 7))
|
|
8067
|
-
], 46, _hoisted_2$
|
|
8048
|
+
], 46, _hoisted_2$7)
|
|
8068
8049
|
]),
|
|
8069
8050
|
_: 1
|
|
8070
8051
|
})
|
|
@@ -8075,15 +8056,15 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|
|
8075
8056
|
const edge = "_edge_fyzmo_123";
|
|
8076
8057
|
const edgeLabelWrapper = "_edgeLabelWrapper_fyzmo_127";
|
|
8077
8058
|
const edgeLabel = "_edgeLabel_fyzmo_127";
|
|
8078
|
-
const style0$
|
|
8059
|
+
const style0$r = {
|
|
8079
8060
|
edge,
|
|
8080
8061
|
edgeLabelWrapper,
|
|
8081
8062
|
edgeLabel
|
|
8082
8063
|
};
|
|
8083
|
-
const cssModules$
|
|
8084
|
-
"$style": style0$
|
|
8064
|
+
const cssModules$r = {
|
|
8065
|
+
"$style": style0$r
|
|
8085
8066
|
};
|
|
8086
|
-
const Edge = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
8067
|
+
const Edge = /* @__PURE__ */ _export_sfc$1(_sfc_main$B, [["__cssModules", cssModules$r]]);
|
|
8087
8068
|
function useCanvasNode() {
|
|
8088
8069
|
const node2 = inject(CanvasNodeKey);
|
|
8089
8070
|
const data = computed(
|
|
@@ -8115,16 +8096,17 @@ function useCanvasNode() {
|
|
|
8115
8096
|
const name = computed(() => data.value.name);
|
|
8116
8097
|
const inputs2 = computed(() => data.value.inputs);
|
|
8117
8098
|
const outputs = computed(() => data.value.outputs);
|
|
8118
|
-
const
|
|
8099
|
+
const connections2 = computed(() => data.value.connections);
|
|
8119
8100
|
const isDisabled = computed(() => data.value.disabled);
|
|
8120
8101
|
const isReadOnly = computed(() => node2?.readOnly.value);
|
|
8121
8102
|
const isSelected = computed(() => node2?.selected.value);
|
|
8122
8103
|
const pinnedDataCount = computed(() => data.value.pinnedData.count);
|
|
8123
8104
|
const hasPinnedData = computed(() => data.value.pinnedData.count > 0);
|
|
8124
8105
|
const issues2 = computed(() => data.value.issues.items ?? []);
|
|
8125
|
-
const
|
|
8106
|
+
const hasIssues2 = computed(() => data.value.issues.visible);
|
|
8126
8107
|
const executionStatus = computed(() => data.value.execution.status);
|
|
8127
8108
|
const executionWaiting = computed(() => data.value.execution.waiting);
|
|
8109
|
+
const executionWaitingForNext = computed(() => data.value.execution.waitingForNext);
|
|
8128
8110
|
const executionRunning = computed(() => data.value.execution.running);
|
|
8129
8111
|
const runDataOutputMap = computed(() => data.value.runData.outputMap);
|
|
8130
8112
|
const runDataIterations = computed(() => data.value.runData.iterations);
|
|
@@ -8139,7 +8121,7 @@ function useCanvasNode() {
|
|
|
8139
8121
|
subtitle: subtitle2,
|
|
8140
8122
|
inputs: inputs2,
|
|
8141
8123
|
outputs,
|
|
8142
|
-
connections,
|
|
8124
|
+
connections: connections2,
|
|
8143
8125
|
isDisabled,
|
|
8144
8126
|
isReadOnly,
|
|
8145
8127
|
isSelected,
|
|
@@ -8149,17 +8131,18 @@ function useCanvasNode() {
|
|
|
8149
8131
|
runDataOutputMap,
|
|
8150
8132
|
hasRunData,
|
|
8151
8133
|
issues: issues2,
|
|
8152
|
-
hasIssues,
|
|
8134
|
+
hasIssues: hasIssues2,
|
|
8153
8135
|
executionStatus,
|
|
8154
8136
|
executionWaiting,
|
|
8137
|
+
executionWaitingForNext,
|
|
8155
8138
|
executionRunning,
|
|
8156
8139
|
render: render2,
|
|
8157
8140
|
eventBus
|
|
8158
8141
|
};
|
|
8159
8142
|
}
|
|
8160
|
-
const _hoisted_1$
|
|
8161
|
-
const _hoisted_2$
|
|
8162
|
-
const _sfc_main$
|
|
8143
|
+
const _hoisted_1$a = ["title"];
|
|
8144
|
+
const _hoisted_2$6 = ["onClick"];
|
|
8145
|
+
const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
8163
8146
|
__name: "CanvasNodeStickyColorSelector",
|
|
8164
8147
|
props: {
|
|
8165
8148
|
"visible": { type: Boolean },
|
|
@@ -8223,7 +8206,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
|
8223
8206
|
title: unref(i18n).baseText("node.changeColor")
|
|
8224
8207
|
}, [
|
|
8225
8208
|
createVNode(_component_FontAwesomeIcon, { icon: "palette" })
|
|
8226
|
-
], 10, _hoisted_1$
|
|
8209
|
+
], 10, _hoisted_1$a)
|
|
8227
8210
|
]),
|
|
8228
8211
|
default: withCtx(() => [
|
|
8229
8212
|
createBaseVNode("div", {
|
|
@@ -8239,7 +8222,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
|
8239
8222
|
renderOptions.value.color === color2 ? _ctx.$style.selected : ""
|
|
8240
8223
|
]),
|
|
8241
8224
|
onClick: ($event) => changeColor(color2)
|
|
8242
|
-
}, null, 10, _hoisted_2$
|
|
8225
|
+
}, null, 10, _hoisted_2$6);
|
|
8243
8226
|
}), 128))
|
|
8244
8227
|
], 2)
|
|
8245
8228
|
]),
|
|
@@ -8253,7 +8236,7 @@ const content = "_content_3lp7u_129";
|
|
|
8253
8236
|
const color = "_color_3lp7u_136";
|
|
8254
8237
|
const selected$2 = "_selected_3lp7u_148";
|
|
8255
8238
|
const option = "_option_3lp7u_173";
|
|
8256
|
-
const style0$
|
|
8239
|
+
const style0$q = {
|
|
8257
8240
|
popover,
|
|
8258
8241
|
content,
|
|
8259
8242
|
color,
|
|
@@ -8267,11 +8250,11 @@ const style0$m = {
|
|
|
8267
8250
|
"sticky-color-7": "_sticky-color-7_3lp7u_169",
|
|
8268
8251
|
option
|
|
8269
8252
|
};
|
|
8270
|
-
const cssModules$
|
|
8271
|
-
"$style": style0$
|
|
8253
|
+
const cssModules$q = {
|
|
8254
|
+
"$style": style0$q
|
|
8272
8255
|
};
|
|
8273
|
-
const __unplugin_components_0$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
8274
|
-
const _sfc_main$
|
|
8256
|
+
const __unplugin_components_0$4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$A, [["__cssModules", cssModules$q]]);
|
|
8257
|
+
const _sfc_main$z = /* @__PURE__ */ defineComponent({
|
|
8275
8258
|
__name: "CanvasNodeToolbar",
|
|
8276
8259
|
props: {
|
|
8277
8260
|
readOnly: { type: Boolean }
|
|
@@ -8406,16 +8389,16 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
|
8406
8389
|
const canvasNodeToolbar$1 = "_canvasNodeToolbar_104hp_123";
|
|
8407
8390
|
const canvasNodeToolbarItems = "_canvasNodeToolbarItems_104hp_130";
|
|
8408
8391
|
const forceVisible = "_forceVisible_104hp_141";
|
|
8409
|
-
const style0$
|
|
8392
|
+
const style0$p = {
|
|
8410
8393
|
canvasNodeToolbar: canvasNodeToolbar$1,
|
|
8411
8394
|
canvasNodeToolbarItems,
|
|
8412
8395
|
forceVisible
|
|
8413
8396
|
};
|
|
8414
|
-
const cssModules$
|
|
8415
|
-
"$style": style0$
|
|
8397
|
+
const cssModules$p = {
|
|
8398
|
+
"$style": style0$p
|
|
8416
8399
|
};
|
|
8417
|
-
const CanvasNodeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
8418
|
-
const _sfc_main$
|
|
8400
|
+
const CanvasNodeToolbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["__cssModules", cssModules$p]]);
|
|
8401
|
+
const _sfc_main$y = /* @__PURE__ */ defineComponent({
|
|
8419
8402
|
__name: "CanvasNodeDisabledStrikeThrough",
|
|
8420
8403
|
setup(__props) {
|
|
8421
8404
|
const $style = useCssModule();
|
|
@@ -8437,20 +8420,20 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
|
|
8437
8420
|
const disabledStrikeThrough = "_disabledStrikeThrough_nl2g7_123";
|
|
8438
8421
|
const success$2 = "_success_nl2g7_132";
|
|
8439
8422
|
const warning$2 = "_warning_nl2g7_136";
|
|
8440
|
-
const style0$
|
|
8423
|
+
const style0$o = {
|
|
8441
8424
|
disabledStrikeThrough,
|
|
8442
8425
|
success: success$2,
|
|
8443
8426
|
warning: warning$2
|
|
8444
8427
|
};
|
|
8445
|
-
const cssModules$
|
|
8446
|
-
"$style": style0$
|
|
8428
|
+
const cssModules$o = {
|
|
8429
|
+
"$style": style0$o
|
|
8447
8430
|
};
|
|
8448
|
-
const __unplugin_components_3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
8449
|
-
const _hoisted_1$
|
|
8450
|
-
const _hoisted_2$
|
|
8451
|
-
const _hoisted_3$
|
|
8452
|
-
const _hoisted_4 = { key: 5 };
|
|
8453
|
-
const _sfc_main$
|
|
8431
|
+
const __unplugin_components_3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$y, [["__cssModules", cssModules$o]]);
|
|
8432
|
+
const _hoisted_1$9 = { key: 1 };
|
|
8433
|
+
const _hoisted_2$5 = ["textContent"];
|
|
8434
|
+
const _hoisted_3$4 = { key: 2 };
|
|
8435
|
+
const _hoisted_4$3 = { key: 5 };
|
|
8436
|
+
const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
8454
8437
|
__name: "CanvasNodeStatusIcons",
|
|
8455
8438
|
setup(__props) {
|
|
8456
8439
|
const nodeHelpers = useNodeHelpers();
|
|
@@ -8458,9 +8441,10 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
|
8458
8441
|
const {
|
|
8459
8442
|
hasPinnedData,
|
|
8460
8443
|
issues: issues2,
|
|
8461
|
-
hasIssues,
|
|
8444
|
+
hasIssues: hasIssues2,
|
|
8462
8445
|
executionStatus,
|
|
8463
8446
|
executionWaiting,
|
|
8447
|
+
executionWaitingForNext,
|
|
8464
8448
|
executionRunning,
|
|
8465
8449
|
hasRunData,
|
|
8466
8450
|
runDataIterations,
|
|
@@ -8473,7 +8457,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
|
8473
8457
|
);
|
|
8474
8458
|
return (_ctx, _cache) => {
|
|
8475
8459
|
const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
|
|
8476
|
-
return unref(
|
|
8460
|
+
return unref(hasIssues2) && !hideNodeIssues.value ? (openBlock(), createElementBlock("div", {
|
|
8477
8461
|
key: 0,
|
|
8478
8462
|
class: normalizeClass([_ctx.$style.status, _ctx.$style.issues]),
|
|
8479
8463
|
"data-test-id": "node-issues"
|
|
@@ -8493,7 +8477,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
|
8493
8477
|
]),
|
|
8494
8478
|
_: 1
|
|
8495
8479
|
})
|
|
8496
|
-
], 2)) : unref(executionWaiting) || unref(executionStatus) === "waiting" ? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
8480
|
+
], 2)) : unref(executionWaiting) || unref(executionStatus) === "waiting" ? (openBlock(), createElementBlock("div", _hoisted_1$9, [
|
|
8497
8481
|
createBaseVNode("div", {
|
|
8498
8482
|
class: normalizeClass([_ctx.$style.status, _ctx.$style.waiting])
|
|
8499
8483
|
}, [
|
|
@@ -8501,7 +8485,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
|
8501
8485
|
content: withCtx(() => [
|
|
8502
8486
|
createBaseVNode("div", {
|
|
8503
8487
|
textContent: toDisplayString(unref(executionWaiting))
|
|
8504
|
-
}, null, 8, _hoisted_2$
|
|
8488
|
+
}, null, 8, _hoisted_2$5)
|
|
8505
8489
|
]),
|
|
8506
8490
|
default: withCtx(() => [
|
|
8507
8491
|
createVNode(_component_FontAwesomeIcon, { icon: "clock" })
|
|
@@ -8517,7 +8501,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
|
8517
8501
|
spin: ""
|
|
8518
8502
|
})
|
|
8519
8503
|
], 2)
|
|
8520
|
-
])) : unref(executionStatus) === "unknown" ? (openBlock(), createElementBlock("div", _hoisted_3$
|
|
8504
|
+
])) : unref(executionStatus) === "unknown" ? (openBlock(), createElementBlock("div", _hoisted_3$4)) : unref(executionRunning) || unref(executionWaitingForNext) || unref(executionStatus) === "running" ? (openBlock(), createElementBlock("div", {
|
|
8521
8505
|
key: 3,
|
|
8522
8506
|
"data-test-id": "canvas-node-status-running",
|
|
8523
8507
|
class: normalizeClass([_ctx.$style.status, _ctx.$style.running])
|
|
@@ -8532,7 +8516,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
|
8532
8516
|
class: normalizeClass([_ctx.$style.status, _ctx.$style.pinnedData])
|
|
8533
8517
|
}, [
|
|
8534
8518
|
createVNode(_component_FontAwesomeIcon, { icon: "thumbtack" })
|
|
8535
|
-
], 2)) : dirtiness.value !== void 0 ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
8519
|
+
], 2)) : dirtiness.value !== void 0 ? (openBlock(), createElementBlock("div", _hoisted_4$3, [
|
|
8536
8520
|
createVNode(unref(N8nTooltip), {
|
|
8537
8521
|
"show-after": 500,
|
|
8538
8522
|
placement: "bottom"
|
|
@@ -8578,7 +8562,7 @@ const running$1 = "_running_93vv6_142";
|
|
|
8578
8562
|
const issues = "_issues_93vv6_165";
|
|
8579
8563
|
const count = "_count_93vv6_170";
|
|
8580
8564
|
const warning$1 = "_warning_93vv6_174";
|
|
8581
|
-
const style0$
|
|
8565
|
+
const style0$n = {
|
|
8582
8566
|
status,
|
|
8583
8567
|
runData,
|
|
8584
8568
|
waiting: waiting$1,
|
|
@@ -8589,11 +8573,11 @@ const style0$j = {
|
|
|
8589
8573
|
count,
|
|
8590
8574
|
warning: warning$1
|
|
8591
8575
|
};
|
|
8592
|
-
const cssModules$
|
|
8593
|
-
"$style": style0$
|
|
8576
|
+
const cssModules$n = {
|
|
8577
|
+
"$style": style0$n
|
|
8594
8578
|
};
|
|
8595
|
-
const __unplugin_components_2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
8596
|
-
const _sfc_main$
|
|
8579
|
+
const __unplugin_components_2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$x, [["__cssModules", cssModules$n]]);
|
|
8580
|
+
const _sfc_main$w = /* @__PURE__ */ defineComponent({
|
|
8597
8581
|
__name: "CanvasNodeTooltip",
|
|
8598
8582
|
props: {
|
|
8599
8583
|
visible: { type: Boolean }
|
|
@@ -8632,18 +8616,18 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
|
|
|
8632
8616
|
});
|
|
8633
8617
|
const tooltipTrigger = "_tooltipTrigger_dauyi_123";
|
|
8634
8618
|
const popper = "_popper_dauyi_131";
|
|
8635
|
-
const style0$
|
|
8619
|
+
const style0$m = {
|
|
8636
8620
|
tooltipTrigger,
|
|
8637
8621
|
popper
|
|
8638
8622
|
};
|
|
8639
|
-
const cssModules$
|
|
8640
|
-
"$style": style0$
|
|
8623
|
+
const cssModules$m = {
|
|
8624
|
+
"$style": style0$m
|
|
8641
8625
|
};
|
|
8642
|
-
const __unplugin_components_0$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
8626
|
+
const __unplugin_components_0$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$w, [["__cssModules", cssModules$m]]);
|
|
8643
8627
|
function useNodeConnections({
|
|
8644
8628
|
inputs: inputs2,
|
|
8645
8629
|
outputs,
|
|
8646
|
-
connections
|
|
8630
|
+
connections: connections2
|
|
8647
8631
|
}) {
|
|
8648
8632
|
const mainInputs = computed(
|
|
8649
8633
|
() => unref(inputs2).filter((input) => input.type === NodeConnectionTypes.Main)
|
|
@@ -8655,7 +8639,7 @@ function useNodeConnections({
|
|
|
8655
8639
|
() => nonMainInputs.value.filter((input) => input.required)
|
|
8656
8640
|
);
|
|
8657
8641
|
const mainInputConnections = computed(
|
|
8658
|
-
() => unref(
|
|
8642
|
+
() => unref(connections2)[CanvasConnectionMode.Input][NodeConnectionTypes.Main] ?? []
|
|
8659
8643
|
);
|
|
8660
8644
|
const mainOutputs = computed(
|
|
8661
8645
|
() => unref(outputs).filter((output) => output.type === NodeConnectionTypes.Main)
|
|
@@ -8664,7 +8648,7 @@ function useNodeConnections({
|
|
|
8664
8648
|
() => unref(outputs).filter((output) => output.type !== NodeConnectionTypes.Main)
|
|
8665
8649
|
);
|
|
8666
8650
|
const mainOutputConnections = computed(
|
|
8667
|
-
() => unref(
|
|
8651
|
+
() => unref(connections2)[CanvasConnectionMode.Output][NodeConnectionTypes.Main] ?? []
|
|
8668
8652
|
);
|
|
8669
8653
|
function isValidConnection(connection) {
|
|
8670
8654
|
const { type: sourceType, mode: sourceMode } = parseCanvasConnectionHandleString(
|
|
@@ -8688,217 +8672,2339 @@ function useNodeConnections({
|
|
|
8688
8672
|
isValidConnection
|
|
8689
8673
|
};
|
|
8690
8674
|
}
|
|
8691
|
-
|
|
8692
|
-
const
|
|
8693
|
-
|
|
8694
|
-
|
|
8675
|
+
function useNodeSettingsInCanvas() {
|
|
8676
|
+
const settingsStore = useSettingsStore();
|
|
8677
|
+
if (Number.isNaN(settingsStore.experimental__minZoomNodeSettingsInCanvas) || settingsStore.experimental__minZoomNodeSettingsInCanvas <= 0) {
|
|
8678
|
+
return computed(() => void 0);
|
|
8679
|
+
}
|
|
8680
|
+
const { editableWorkflow } = useCanvasOperations();
|
|
8681
|
+
const viewFlow = useVueFlow({ id: editableWorkflow.value.id });
|
|
8682
|
+
const zoom2 = computed(() => viewFlow.viewport.value.zoom);
|
|
8683
|
+
const debouncedZoom = refDebounced(zoom2, 100);
|
|
8684
|
+
return computed(
|
|
8685
|
+
() => debouncedZoom.value > settingsStore.experimental__minZoomNodeSettingsInCanvas ? debouncedZoom.value : void 0
|
|
8686
|
+
);
|
|
8687
|
+
}
|
|
8688
|
+
const _sfc_main$v = /* @__PURE__ */ defineComponent({
|
|
8689
|
+
__name: "NodeTitle",
|
|
8690
|
+
props: {
|
|
8691
|
+
modelValue: { default: "" },
|
|
8692
|
+
nodeType: { default: void 0 },
|
|
8693
|
+
readOnly: { type: Boolean, default: false }
|
|
8694
|
+
},
|
|
8695
|
+
emits: ["update:model-value"],
|
|
8695
8696
|
setup(__props, { emit: __emit }) {
|
|
8696
|
-
const $style = useCssModule();
|
|
8697
|
-
const i18n = useI18n();
|
|
8698
8697
|
const emit = __emit;
|
|
8699
|
-
|
|
8700
|
-
|
|
8701
|
-
|
|
8702
|
-
label: label2,
|
|
8703
|
-
subtitle: subtitle2,
|
|
8704
|
-
inputs: inputs2,
|
|
8705
|
-
outputs,
|
|
8706
|
-
connections,
|
|
8707
|
-
isDisabled,
|
|
8708
|
-
isSelected,
|
|
8709
|
-
hasPinnedData,
|
|
8710
|
-
executionStatus,
|
|
8711
|
-
executionWaiting,
|
|
8712
|
-
executionRunning,
|
|
8713
|
-
hasRunData,
|
|
8714
|
-
hasIssues,
|
|
8715
|
-
render: render2
|
|
8716
|
-
} = useCanvasNode();
|
|
8717
|
-
const {
|
|
8718
|
-
mainOutputs,
|
|
8719
|
-
mainOutputConnections,
|
|
8720
|
-
mainInputs,
|
|
8721
|
-
mainInputConnections,
|
|
8722
|
-
nonMainInputs
|
|
8723
|
-
} = useNodeConnections({
|
|
8724
|
-
inputs: inputs2,
|
|
8725
|
-
outputs,
|
|
8726
|
-
connections
|
|
8727
|
-
});
|
|
8728
|
-
const renderOptions = computed(() => render2.value.options);
|
|
8729
|
-
const classes = computed(() => {
|
|
8730
|
-
return {
|
|
8731
|
-
[$style.node]: true,
|
|
8732
|
-
[$style.selected]: isSelected.value,
|
|
8733
|
-
[$style.disabled]: isDisabled.value,
|
|
8734
|
-
[$style.success]: hasRunData.value,
|
|
8735
|
-
[$style.error]: hasIssues.value,
|
|
8736
|
-
[$style.pinned]: hasPinnedData.value,
|
|
8737
|
-
[$style.waiting]: executionWaiting.value ?? executionStatus.value === "waiting",
|
|
8738
|
-
[$style.running]: executionRunning.value,
|
|
8739
|
-
[$style.configurable]: renderOptions.value.configurable,
|
|
8740
|
-
[$style.configuration]: renderOptions.value.configuration,
|
|
8741
|
-
[$style.trigger]: renderOptions.value.trigger,
|
|
8742
|
-
[$style.warning]: renderOptions.value.dirtiness !== void 0
|
|
8743
|
-
};
|
|
8744
|
-
});
|
|
8745
|
-
const styles = computed(() => {
|
|
8746
|
-
const stylesObject = {};
|
|
8747
|
-
if (renderOptions.value.configurable) {
|
|
8748
|
-
let spacerCount = 0;
|
|
8749
|
-
stylesObject["--configurable-node--input-count"] = nonMainInputs.value.length + spacerCount;
|
|
8750
|
-
}
|
|
8751
|
-
stylesObject["--canvas-node--main-input-count"] = mainInputs.value.length;
|
|
8752
|
-
stylesObject["--canvas-node--main-output-count"] = mainOutputs.value.length;
|
|
8753
|
-
return stylesObject;
|
|
8754
|
-
});
|
|
8755
|
-
const dataTestId = computed(() => {
|
|
8756
|
-
let type = "default";
|
|
8757
|
-
if (renderOptions.value.configurable) {
|
|
8758
|
-
type = "configurable";
|
|
8759
|
-
} else if (renderOptions.value.configuration) {
|
|
8760
|
-
type = "configuration";
|
|
8761
|
-
} else if (renderOptions.value.trigger) {
|
|
8762
|
-
type = "trigger";
|
|
8763
|
-
}
|
|
8764
|
-
return `canvas-${type}-node`;
|
|
8765
|
-
});
|
|
8766
|
-
const isStrikethroughVisible = computed(() => {
|
|
8767
|
-
const isSingleMainInputNode = mainInputs.value.length === 1 && mainInputConnections.value.length <= 1;
|
|
8768
|
-
const isSingleMainOutputNode = mainOutputs.value.length === 1 && mainOutputConnections.value.length <= 1;
|
|
8769
|
-
return isDisabled.value && isSingleMainInputNode && isSingleMainOutputNode;
|
|
8770
|
-
});
|
|
8771
|
-
const iconSize = computed(() => renderOptions.value.configuration ? 30 : 40);
|
|
8772
|
-
const iconSource = computed(() => renderOptions.value.icon);
|
|
8773
|
-
const showTooltip = ref(false);
|
|
8774
|
-
watch(initialized, () => {
|
|
8775
|
-
if (initialized.value) {
|
|
8776
|
-
showTooltip.value = true;
|
|
8698
|
+
function onRename(value) {
|
|
8699
|
+
if (value.trim() !== "") {
|
|
8700
|
+
emit("update:model-value", value.trim());
|
|
8777
8701
|
}
|
|
8778
|
-
});
|
|
8779
|
-
watch(viewport, () => {
|
|
8780
|
-
showTooltip.value = false;
|
|
8781
|
-
setTimeout(() => {
|
|
8782
|
-
showTooltip.value = true;
|
|
8783
|
-
}, 0);
|
|
8784
|
-
});
|
|
8785
|
-
function openContextMenu(event) {
|
|
8786
|
-
emit("open:contextmenu", event);
|
|
8787
|
-
}
|
|
8788
|
-
function onActivate(event) {
|
|
8789
|
-
emit("activate", id2.value, event);
|
|
8790
8702
|
}
|
|
8703
|
+
const wrapperRef = useTemplateRef("wrapperRef");
|
|
8704
|
+
const { width } = useElementSize(wrapperRef);
|
|
8791
8705
|
return (_ctx, _cache) => {
|
|
8792
|
-
|
|
8793
|
-
|
|
8794
|
-
|
|
8795
|
-
const _component_CanvasNodeDisabledStrikeThrough = __unplugin_components_3;
|
|
8796
|
-
return openBlock(), createElementBlock("div", {
|
|
8797
|
-
class: normalizeClass(classes.value),
|
|
8798
|
-
style: normalizeStyle(styles.value),
|
|
8799
|
-
"data-test-id": dataTestId.value,
|
|
8800
|
-
onContextmenu: openContextMenu,
|
|
8801
|
-
onDblclick: withModifiers(onActivate, ["stop"])
|
|
8706
|
+
return openBlock(), createElementBlock("span", {
|
|
8707
|
+
class: normalizeClass(_ctx.$style.container),
|
|
8708
|
+
"data-test-id": "node-title-container"
|
|
8802
8709
|
}, [
|
|
8803
|
-
|
|
8804
|
-
|
|
8805
|
-
|
|
8806
|
-
|
|
8807
|
-
|
|
8808
|
-
|
|
8809
|
-
|
|
8810
|
-
|
|
8811
|
-
disabled: unref(isDisabled)
|
|
8812
|
-
}, null, 8, ["icon-source", "size", "disabled"]),
|
|
8813
|
-
!unref(isDisabled) ? (openBlock(), createBlock(_component_CanvasNodeStatusIcons, {
|
|
8814
|
-
key: 1,
|
|
8815
|
-
class: normalizeClass(unref($style).statusIcons)
|
|
8816
|
-
}, null, 8, ["class"])) : createCommentVNode("", true),
|
|
8817
|
-
isStrikethroughVisible.value ? (openBlock(), createBlock(_component_CanvasNodeDisabledStrikeThrough, { key: 2 })) : createCommentVNode("", true),
|
|
8710
|
+
createBaseVNode("span", {
|
|
8711
|
+
class: normalizeClass(_ctx.$style.iconWrapper)
|
|
8712
|
+
}, [
|
|
8713
|
+
createVNode(_sfc_main$O, {
|
|
8714
|
+
"node-type": _ctx.nodeType,
|
|
8715
|
+
size: 18
|
|
8716
|
+
}, null, 8, ["node-type"])
|
|
8717
|
+
], 2),
|
|
8818
8718
|
createBaseVNode("div", {
|
|
8819
|
-
|
|
8719
|
+
ref_key: "wrapperRef",
|
|
8720
|
+
ref: wrapperRef,
|
|
8721
|
+
class: normalizeClass(_ctx.$style.textWrapper)
|
|
8820
8722
|
}, [
|
|
8821
|
-
unref(
|
|
8822
|
-
|
|
8823
|
-
|
|
8824
|
-
|
|
8825
|
-
|
|
8826
|
-
|
|
8827
|
-
class: normalizeClass(unref($style).disabledLabel)
|
|
8828
|
-
}, " (" + toDisplayString(unref(i18n).baseText("node.disabled")) + ") ", 3)) : createCommentVNode("", true),
|
|
8829
|
-
unref(subtitle2) ? (openBlock(), createElementBlock("div", {
|
|
8830
|
-
key: 2,
|
|
8831
|
-
class: normalizeClass(unref($style).subtitle)
|
|
8832
|
-
}, toDisplayString(unref(subtitle2)), 3)) : createCommentVNode("", true)
|
|
8723
|
+
createVNode(unref(InlineRename), {
|
|
8724
|
+
"max-width": unref(width),
|
|
8725
|
+
"model-value": _ctx.modelValue,
|
|
8726
|
+
"read-only": _ctx.readOnly,
|
|
8727
|
+
"onUpdate:modelValue": onRename
|
|
8728
|
+
}, null, 8, ["max-width", "model-value", "read-only"])
|
|
8833
8729
|
], 2)
|
|
8834
|
-
],
|
|
8730
|
+
], 2);
|
|
8835
8731
|
};
|
|
8836
8732
|
}
|
|
8837
8733
|
});
|
|
8838
|
-
const
|
|
8839
|
-
const
|
|
8840
|
-
const
|
|
8841
|
-
const
|
|
8842
|
-
|
|
8843
|
-
|
|
8844
|
-
|
|
8845
|
-
const subtitle = "_subtitle_1d2zc_193";
|
|
8846
|
-
const selected$1 = "_selected_1d2zc_203";
|
|
8847
|
-
const success$1 = "_success_1d2zc_206";
|
|
8848
|
-
const warning = "_warning_1d2zc_209";
|
|
8849
|
-
const error = "_error_1d2zc_212";
|
|
8850
|
-
const pinned = "_pinned_1d2zc_215";
|
|
8851
|
-
const disabled = "_disabled_1d2zc_218";
|
|
8852
|
-
const running = "_running_1d2zc_221";
|
|
8853
|
-
const waiting = "_waiting_1d2zc_225";
|
|
8854
|
-
const disabledLabel = "_disabledLabel_1d2zc_242";
|
|
8855
|
-
const style0$h = {
|
|
8856
|
-
node,
|
|
8857
|
-
trigger: trigger$1,
|
|
8858
|
-
configuration,
|
|
8859
|
-
statusIcons,
|
|
8860
|
-
configurable,
|
|
8861
|
-
description,
|
|
8862
|
-
label: label$5,
|
|
8863
|
-
subtitle,
|
|
8864
|
-
selected: selected$1,
|
|
8865
|
-
success: success$1,
|
|
8866
|
-
warning,
|
|
8867
|
-
error,
|
|
8868
|
-
pinned,
|
|
8869
|
-
disabled,
|
|
8870
|
-
running,
|
|
8871
|
-
waiting,
|
|
8872
|
-
disabledLabel
|
|
8873
|
-
};
|
|
8874
|
-
const cssModules$h = {
|
|
8875
|
-
"$style": style0$h
|
|
8734
|
+
const container$3 = "_container_178ym_123";
|
|
8735
|
+
const textWrapper = "_textWrapper_178ym_132";
|
|
8736
|
+
const iconWrapper = "_iconWrapper_178ym_137";
|
|
8737
|
+
const style0$l = {
|
|
8738
|
+
container: container$3,
|
|
8739
|
+
textWrapper,
|
|
8740
|
+
iconWrapper
|
|
8876
8741
|
};
|
|
8877
|
-
const
|
|
8878
|
-
|
|
8879
|
-
const namespaces = {
|
|
8880
|
-
svg: "http://www.w3.org/2000/svg",
|
|
8881
|
-
xhtml,
|
|
8882
|
-
xlink: "http://www.w3.org/1999/xlink",
|
|
8883
|
-
xml: "http://www.w3.org/XML/1998/namespace",
|
|
8884
|
-
xmlns: "http://www.w3.org/2000/xmlns/"
|
|
8742
|
+
const cssModules$l = {
|
|
8743
|
+
"$style": style0$l
|
|
8885
8744
|
};
|
|
8886
|
-
|
|
8887
|
-
|
|
8888
|
-
|
|
8889
|
-
|
|
8890
|
-
|
|
8891
|
-
}
|
|
8892
|
-
|
|
8893
|
-
|
|
8894
|
-
|
|
8895
|
-
|
|
8896
|
-
|
|
8897
|
-
|
|
8898
|
-
|
|
8899
|
-
|
|
8900
|
-
|
|
8901
|
-
|
|
8745
|
+
const NodeTitle = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__cssModules", cssModules$l]]);
|
|
8746
|
+
const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|
8747
|
+
__name: "NodeSettingsTabs",
|
|
8748
|
+
props: {
|
|
8749
|
+
modelValue: { default: "params" },
|
|
8750
|
+
nodeType: { default: void 0 },
|
|
8751
|
+
pushRef: { default: "" }
|
|
8752
|
+
},
|
|
8753
|
+
emits: ["update:model-value"],
|
|
8754
|
+
setup(__props, { emit: __emit }) {
|
|
8755
|
+
const props = __props;
|
|
8756
|
+
const emit = __emit;
|
|
8757
|
+
const externalHooks = useExternalHooks();
|
|
8758
|
+
const ndvStore = useNDVStore();
|
|
8759
|
+
const workflowsStore = useWorkflowsStore();
|
|
8760
|
+
const i18n = useI18n();
|
|
8761
|
+
const telemetry = useTelemetry();
|
|
8762
|
+
const activeNode = computed(() => ndvStore.activeNode);
|
|
8763
|
+
const isCommunityNode = computed(() => {
|
|
8764
|
+
const nodeType = props.nodeType;
|
|
8765
|
+
if (nodeType) {
|
|
8766
|
+
return isCommunityPackageName(nodeType.name);
|
|
8767
|
+
}
|
|
8768
|
+
return false;
|
|
8769
|
+
});
|
|
8770
|
+
const packageName = computed(() => props.nodeType?.name.split(".")[0] ?? "");
|
|
8771
|
+
const documentationUrl = computed(() => {
|
|
8772
|
+
const nodeType = props.nodeType;
|
|
8773
|
+
if (!nodeType) {
|
|
8774
|
+
return "";
|
|
8775
|
+
}
|
|
8776
|
+
if (nodeType.documentationUrl && nodeType.documentationUrl.startsWith("http")) {
|
|
8777
|
+
return nodeType.documentationUrl;
|
|
8778
|
+
}
|
|
8779
|
+
const utmParams = new URLSearchParams({
|
|
8780
|
+
utm_source: "n8n_app",
|
|
8781
|
+
utm_medium: "node_settings_modal-credential_link",
|
|
8782
|
+
utm_campaign: nodeType.name
|
|
8783
|
+
});
|
|
8784
|
+
const primaryDocUrl = nodeType.codex?.resources?.primaryDocumentation?.[0]?.url;
|
|
8785
|
+
if (primaryDocUrl) {
|
|
8786
|
+
return `${primaryDocUrl}?${utmParams.toString()}`;
|
|
8787
|
+
}
|
|
8788
|
+
if (isCommunityNode.value) {
|
|
8789
|
+
return `${NPM_PACKAGE_DOCS_BASE_URL}${packageName.value}`;
|
|
8790
|
+
}
|
|
8791
|
+
return `${BUILTIN_NODES_DOCS_URL}?${utmParams.toString()}`;
|
|
8792
|
+
});
|
|
8793
|
+
const options = computed(() => {
|
|
8794
|
+
const options2 = [
|
|
8795
|
+
{
|
|
8796
|
+
label: i18n.baseText("nodeSettings.parameters"),
|
|
8797
|
+
value: "params"
|
|
8798
|
+
},
|
|
8799
|
+
{
|
|
8800
|
+
label: i18n.baseText("nodeSettings.settings"),
|
|
8801
|
+
value: "settings"
|
|
8802
|
+
}
|
|
8803
|
+
];
|
|
8804
|
+
if (isCommunityNode.value) {
|
|
8805
|
+
options2.push({
|
|
8806
|
+
icon: "cube",
|
|
8807
|
+
value: "communityNode",
|
|
8808
|
+
align: "right",
|
|
8809
|
+
tooltip: i18n.baseText("generic.communityNode.tooltip", {
|
|
8810
|
+
interpolate: {
|
|
8811
|
+
docUrl: COMMUNITY_NODES_INSTALLATION_DOCS_URL,
|
|
8812
|
+
packageName: packageName.value
|
|
8813
|
+
}
|
|
8814
|
+
})
|
|
8815
|
+
});
|
|
8816
|
+
}
|
|
8817
|
+
if (documentationUrl.value) {
|
|
8818
|
+
options2.push({
|
|
8819
|
+
label: i18n.baseText("nodeSettings.docs"),
|
|
8820
|
+
value: "docs",
|
|
8821
|
+
href: documentationUrl.value,
|
|
8822
|
+
align: "right"
|
|
8823
|
+
});
|
|
8824
|
+
}
|
|
8825
|
+
return options2;
|
|
8826
|
+
});
|
|
8827
|
+
function onTabSelect(tab) {
|
|
8828
|
+
if (tab === "docs" && props.nodeType) {
|
|
8829
|
+
void externalHooks.run("dataDisplay.onDocumentationUrlClick", {
|
|
8830
|
+
nodeType: props.nodeType,
|
|
8831
|
+
documentationUrl: documentationUrl.value
|
|
8832
|
+
});
|
|
8833
|
+
telemetry.track("User clicked ndv link", {
|
|
8834
|
+
node_type: activeNode.value?.type,
|
|
8835
|
+
workflow_id: workflowsStore.workflowId,
|
|
8836
|
+
push_ref: props.pushRef,
|
|
8837
|
+
pane: NodeConnectionTypes.Main,
|
|
8838
|
+
type: "docs"
|
|
8839
|
+
});
|
|
8840
|
+
}
|
|
8841
|
+
if (tab === "settings" && props.nodeType) {
|
|
8842
|
+
telemetry.track("User viewed node settings", {
|
|
8843
|
+
node_type: props.nodeType.name,
|
|
8844
|
+
workflow_id: workflowsStore.workflowId
|
|
8845
|
+
});
|
|
8846
|
+
}
|
|
8847
|
+
if (tab === "settings" || tab === "params") {
|
|
8848
|
+
emit("update:model-value", tab);
|
|
8849
|
+
}
|
|
8850
|
+
}
|
|
8851
|
+
function onTooltipClick(tab, event) {
|
|
8852
|
+
if (tab === "communityNode" && event.target.localName === "a") {
|
|
8853
|
+
telemetry.track("user clicked cnr docs link", { source: "node details view" });
|
|
8854
|
+
}
|
|
8855
|
+
}
|
|
8856
|
+
return (_ctx, _cache) => {
|
|
8857
|
+
const _component_N8nTabs = resolveComponent("N8nTabs");
|
|
8858
|
+
return openBlock(), createBlock(_component_N8nTabs, {
|
|
8859
|
+
options: options.value,
|
|
8860
|
+
"model-value": _ctx.modelValue,
|
|
8861
|
+
"onUpdate:modelValue": onTabSelect,
|
|
8862
|
+
onTooltipClick
|
|
8863
|
+
}, null, 8, ["options", "model-value"]);
|
|
8864
|
+
};
|
|
8865
|
+
}
|
|
8866
|
+
});
|
|
8867
|
+
const _hoisted_1$8 = {
|
|
8868
|
+
key: 0,
|
|
8869
|
+
class: "webhooks"
|
|
8870
|
+
};
|
|
8871
|
+
const _hoisted_2$4 = ["title"];
|
|
8872
|
+
const _hoisted_3$3 = {
|
|
8873
|
+
key: 0,
|
|
8874
|
+
class: "node-webhooks"
|
|
8875
|
+
};
|
|
8876
|
+
const _hoisted_4$2 = {
|
|
8877
|
+
key: 0,
|
|
8878
|
+
class: "url-selection"
|
|
8879
|
+
};
|
|
8880
|
+
const _hoisted_5$2 = {
|
|
8881
|
+
key: 0,
|
|
8882
|
+
class: "webhook-wrapper"
|
|
8883
|
+
};
|
|
8884
|
+
const _hoisted_6$2 = { class: "http-field" };
|
|
8885
|
+
const _hoisted_7$1 = { class: "http-method" };
|
|
8886
|
+
const _hoisted_8$1 = { class: "url-field" };
|
|
8887
|
+
const _hoisted_9$1 = ["onClick"];
|
|
8888
|
+
const _hoisted_10$1 = {
|
|
8889
|
+
key: 1,
|
|
8890
|
+
class: "webhook-wrapper"
|
|
8891
|
+
};
|
|
8892
|
+
const _hoisted_11$1 = { class: "url-field-full-width" };
|
|
8893
|
+
const _hoisted_12 = ["onClick"];
|
|
8894
|
+
const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
8895
|
+
__name: "NodeWebhooks",
|
|
8896
|
+
props: {
|
|
8897
|
+
node: {},
|
|
8898
|
+
nodeTypeDescription: {}
|
|
8899
|
+
},
|
|
8900
|
+
setup(__props) {
|
|
8901
|
+
const props = __props;
|
|
8902
|
+
const clipboard = useClipboard();
|
|
8903
|
+
const workflowHelpers = useWorkflowHelpers();
|
|
8904
|
+
const toast = useToast();
|
|
8905
|
+
const i18n = useI18n();
|
|
8906
|
+
const telemetry = useTelemetry();
|
|
8907
|
+
const isMinimized = ref(
|
|
8908
|
+
props.nodeTypeDescription && !OPEN_URL_PANEL_TRIGGER_NODE_TYPES.includes(props.nodeTypeDescription.name)
|
|
8909
|
+
);
|
|
8910
|
+
const showUrlFor = ref("test");
|
|
8911
|
+
const isProductionOnly = computed(() => {
|
|
8912
|
+
return props.nodeTypeDescription && PRODUCTION_ONLY_TRIGGER_NODE_TYPES.includes(props.nodeTypeDescription.name);
|
|
8913
|
+
});
|
|
8914
|
+
const urlOptions = computed(() => [
|
|
8915
|
+
...isProductionOnly.value ? [] : [{ label: baseText.value.testUrl, value: "test" }],
|
|
8916
|
+
{
|
|
8917
|
+
label: baseText.value.productionUrl,
|
|
8918
|
+
value: "production"
|
|
8919
|
+
}
|
|
8920
|
+
]);
|
|
8921
|
+
const visibleWebhookUrls = computed(() => {
|
|
8922
|
+
return webhooksNode.value.filter((webhook) => {
|
|
8923
|
+
if (typeof webhook.ndvHideUrl === "string") {
|
|
8924
|
+
return !workflowHelpers.getWebhookExpressionValue(webhook, "ndvHideUrl");
|
|
8925
|
+
}
|
|
8926
|
+
return !webhook.ndvHideUrl;
|
|
8927
|
+
});
|
|
8928
|
+
});
|
|
8929
|
+
const webhooksNode = computed(() => {
|
|
8930
|
+
if (props.nodeTypeDescription?.webhooks === void 0) {
|
|
8931
|
+
return [];
|
|
8932
|
+
}
|
|
8933
|
+
return props.nodeTypeDescription.webhooks.filter(
|
|
8934
|
+
(webhookData) => webhookData.restartWebhook !== true
|
|
8935
|
+
);
|
|
8936
|
+
});
|
|
8937
|
+
const baseText = computed(() => {
|
|
8938
|
+
const nodeType = props.nodeTypeDescription?.name;
|
|
8939
|
+
switch (nodeType) {
|
|
8940
|
+
case CHAT_TRIGGER_NODE_TYPE:
|
|
8941
|
+
return {
|
|
8942
|
+
toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls.chatTrigger"),
|
|
8943
|
+
clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls.formTrigger"),
|
|
8944
|
+
clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls.chatTrigger"),
|
|
8945
|
+
clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls.chatTrigger"),
|
|
8946
|
+
testUrl: i18n.baseText("nodeWebhooks.testUrl"),
|
|
8947
|
+
productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
|
|
8948
|
+
copyTitle: i18n.baseText("nodeWebhooks.showMessage.title.chatTrigger"),
|
|
8949
|
+
copyMessage: i18n.baseText("nodeWebhooks.showMessage.message.chatTrigger")
|
|
8950
|
+
};
|
|
8951
|
+
case FORM_TRIGGER_NODE_TYPE:
|
|
8952
|
+
return {
|
|
8953
|
+
toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls.formTrigger"),
|
|
8954
|
+
clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls.formTrigger"),
|
|
8955
|
+
clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls.formTrigger"),
|
|
8956
|
+
clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls.formTrigger"),
|
|
8957
|
+
testUrl: i18n.baseText("nodeWebhooks.testUrl"),
|
|
8958
|
+
productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
|
|
8959
|
+
copyTitle: i18n.baseText("nodeWebhooks.showMessage.title.formTrigger"),
|
|
8960
|
+
copyMessage: i18n.baseText("nodeWebhooks.showMessage.message.formTrigger")
|
|
8961
|
+
};
|
|
8962
|
+
case MCP_TRIGGER_NODE_TYPE:
|
|
8963
|
+
return {
|
|
8964
|
+
toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls.mcpTrigger"),
|
|
8965
|
+
clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls.mcpTrigger"),
|
|
8966
|
+
clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls.mcpTrigger"),
|
|
8967
|
+
clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls.mcpTrigger"),
|
|
8968
|
+
testUrl: i18n.baseText("nodeWebhooks.testUrl"),
|
|
8969
|
+
productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
|
|
8970
|
+
copyTitle: i18n.baseText("nodeWebhooks.showMessage.title.mcpTrigger"),
|
|
8971
|
+
copyMessage: void 0
|
|
8972
|
+
};
|
|
8973
|
+
default:
|
|
8974
|
+
return {
|
|
8975
|
+
toggleTitle: i18n.baseText("nodeWebhooks.webhookUrls"),
|
|
8976
|
+
clickToDisplay: i18n.baseText("nodeWebhooks.clickToDisplayWebhookUrls"),
|
|
8977
|
+
clickToHide: i18n.baseText("nodeWebhooks.clickToHideWebhookUrls"),
|
|
8978
|
+
clickToCopy: i18n.baseText("nodeWebhooks.clickToCopyWebhookUrls"),
|
|
8979
|
+
testUrl: i18n.baseText("nodeWebhooks.testUrl"),
|
|
8980
|
+
productionUrl: i18n.baseText("nodeWebhooks.productionUrl"),
|
|
8981
|
+
copyTitle: i18n.baseText("nodeWebhooks.showMessage.title"),
|
|
8982
|
+
copyMessage: void 0
|
|
8983
|
+
};
|
|
8984
|
+
}
|
|
8985
|
+
});
|
|
8986
|
+
function copyWebhookUrl(webhookData) {
|
|
8987
|
+
const webhookUrl = getWebhookUrlDisplay(webhookData);
|
|
8988
|
+
void clipboard.copy(webhookUrl);
|
|
8989
|
+
toast.showMessage({
|
|
8990
|
+
title: baseText.value.copyTitle,
|
|
8991
|
+
message: baseText.value.copyMessage,
|
|
8992
|
+
type: "success"
|
|
8993
|
+
});
|
|
8994
|
+
telemetry.track("User copied webhook URL", {
|
|
8995
|
+
pane: "parameters",
|
|
8996
|
+
type: `${showUrlFor.value} url`
|
|
8997
|
+
});
|
|
8998
|
+
}
|
|
8999
|
+
function getWebhookUrlDisplay(webhookData) {
|
|
9000
|
+
if (props.node) {
|
|
9001
|
+
return workflowHelpers.getWebhookUrl(
|
|
9002
|
+
webhookData,
|
|
9003
|
+
props.node,
|
|
9004
|
+
isProductionOnly.value ? "production" : showUrlFor.value
|
|
9005
|
+
);
|
|
9006
|
+
}
|
|
9007
|
+
return "";
|
|
9008
|
+
}
|
|
9009
|
+
function isWebhookMethodVisible(webhook) {
|
|
9010
|
+
try {
|
|
9011
|
+
const method = workflowHelpers.getWebhookExpressionValue(webhook, "httpMethod", false);
|
|
9012
|
+
if (Array.isArray(method) && method.length !== 1) {
|
|
9013
|
+
return false;
|
|
9014
|
+
}
|
|
9015
|
+
} catch (error2) {
|
|
9016
|
+
}
|
|
9017
|
+
if (typeof webhook.ndvHideMethod === "string") {
|
|
9018
|
+
return !workflowHelpers.getWebhookExpressionValue(webhook, "ndvHideMethod");
|
|
9019
|
+
}
|
|
9020
|
+
return !webhook.ndvHideMethod;
|
|
9021
|
+
}
|
|
9022
|
+
function getWebhookHttpMethod(webhook) {
|
|
9023
|
+
const method = workflowHelpers.getWebhookExpressionValue(webhook, "httpMethod", false);
|
|
9024
|
+
if (Array.isArray(method)) {
|
|
9025
|
+
return method[0];
|
|
9026
|
+
}
|
|
9027
|
+
return method;
|
|
9028
|
+
}
|
|
9029
|
+
watch(
|
|
9030
|
+
() => props.node,
|
|
9031
|
+
() => {
|
|
9032
|
+
isMinimized.value = props.nodeTypeDescription && !OPEN_URL_PANEL_TRIGGER_NODE_TYPES.includes(props.nodeTypeDescription.name);
|
|
9033
|
+
}
|
|
9034
|
+
);
|
|
9035
|
+
return (_ctx, _cache) => {
|
|
9036
|
+
const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
|
|
9037
|
+
const _component_n8n_radio_buttons = resolveComponent("n8n-radio-buttons");
|
|
9038
|
+
const _component_el_col = resolveComponent("el-col");
|
|
9039
|
+
const _component_el_row = resolveComponent("el-row");
|
|
9040
|
+
const _component_n8n_tooltip = resolveComponent("n8n-tooltip");
|
|
9041
|
+
const _component_el_collapse_transition = resolveComponent("el-collapse-transition");
|
|
9042
|
+
return webhooksNode.value.length && visibleWebhookUrls.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$8, [
|
|
9043
|
+
createBaseVNode("div", {
|
|
9044
|
+
class: normalizeClass(["clickable headline", { expanded: !isMinimized.value }]),
|
|
9045
|
+
title: isMinimized.value ? baseText.value.clickToDisplay : baseText.value.clickToHide,
|
|
9046
|
+
onClick: _cache[0] || (_cache[0] = ($event) => isMinimized.value = !isMinimized.value)
|
|
9047
|
+
}, [
|
|
9048
|
+
createVNode(_component_font_awesome_icon, {
|
|
9049
|
+
icon: "angle-right",
|
|
9050
|
+
class: "minimize-button minimize-icon"
|
|
9051
|
+
}),
|
|
9052
|
+
createTextVNode(" " + toDisplayString(baseText.value.toggleTitle), 1)
|
|
9053
|
+
], 10, _hoisted_2$4),
|
|
9054
|
+
createVNode(_component_el_collapse_transition, null, {
|
|
9055
|
+
default: withCtx(() => [
|
|
9056
|
+
!isMinimized.value ? (openBlock(), createElementBlock("div", _hoisted_3$3, [
|
|
9057
|
+
!isProductionOnly.value ? (openBlock(), createElementBlock("div", _hoisted_4$2, [
|
|
9058
|
+
createVNode(_component_el_row, null, {
|
|
9059
|
+
default: withCtx(() => [
|
|
9060
|
+
createVNode(_component_el_col, { span: 24 }, {
|
|
9061
|
+
default: withCtx(() => [
|
|
9062
|
+
createVNode(_component_n8n_radio_buttons, {
|
|
9063
|
+
modelValue: showUrlFor.value,
|
|
9064
|
+
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => showUrlFor.value = $event),
|
|
9065
|
+
options: urlOptions.value
|
|
9066
|
+
}, null, 8, ["modelValue", "options"])
|
|
9067
|
+
]),
|
|
9068
|
+
_: 1
|
|
9069
|
+
})
|
|
9070
|
+
]),
|
|
9071
|
+
_: 1
|
|
9072
|
+
})
|
|
9073
|
+
])) : createCommentVNode("", true),
|
|
9074
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(visibleWebhookUrls.value, (webhook, index) => {
|
|
9075
|
+
return openBlock(), createBlock(_component_n8n_tooltip, {
|
|
9076
|
+
key: index,
|
|
9077
|
+
class: "item",
|
|
9078
|
+
content: baseText.value.clickToCopy,
|
|
9079
|
+
placement: "left"
|
|
9080
|
+
}, {
|
|
9081
|
+
default: withCtx(() => [
|
|
9082
|
+
isWebhookMethodVisible(webhook) ? (openBlock(), createElementBlock("div", _hoisted_5$2, [
|
|
9083
|
+
createBaseVNode("div", _hoisted_6$2, [
|
|
9084
|
+
createBaseVNode("div", _hoisted_7$1, [
|
|
9085
|
+
createTextVNode(toDisplayString(getWebhookHttpMethod(webhook)), 1),
|
|
9086
|
+
_cache[2] || (_cache[2] = createBaseVNode("br", null, null, -1))
|
|
9087
|
+
])
|
|
9088
|
+
]),
|
|
9089
|
+
createBaseVNode("div", _hoisted_8$1, [
|
|
9090
|
+
createBaseVNode("div", {
|
|
9091
|
+
class: "webhook-url left-ellipsis clickable",
|
|
9092
|
+
onClick: ($event) => copyWebhookUrl(webhook)
|
|
9093
|
+
}, [
|
|
9094
|
+
createTextVNode(toDisplayString(getWebhookUrlDisplay(webhook)), 1),
|
|
9095
|
+
_cache[3] || (_cache[3] = createBaseVNode("br", null, null, -1))
|
|
9096
|
+
], 8, _hoisted_9$1)
|
|
9097
|
+
])
|
|
9098
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_10$1, [
|
|
9099
|
+
createBaseVNode("div", _hoisted_11$1, [
|
|
9100
|
+
createBaseVNode("div", {
|
|
9101
|
+
class: "webhook-url left-ellipsis clickable",
|
|
9102
|
+
onClick: ($event) => copyWebhookUrl(webhook)
|
|
9103
|
+
}, [
|
|
9104
|
+
createTextVNode(toDisplayString(getWebhookUrlDisplay(webhook)), 1),
|
|
9105
|
+
_cache[4] || (_cache[4] = createBaseVNode("br", null, null, -1))
|
|
9106
|
+
], 8, _hoisted_12)
|
|
9107
|
+
])
|
|
9108
|
+
]))
|
|
9109
|
+
]),
|
|
9110
|
+
_: 2
|
|
9111
|
+
}, 1032, ["content"]);
|
|
9112
|
+
}), 128))
|
|
9113
|
+
])) : createCommentVNode("", true)
|
|
9114
|
+
]),
|
|
9115
|
+
_: 1
|
|
9116
|
+
})
|
|
9117
|
+
])) : createCommentVNode("", true);
|
|
9118
|
+
};
|
|
9119
|
+
}
|
|
9120
|
+
});
|
|
9121
|
+
const NodeWebhooks = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__scopeId", "data-v-84b9da4b"]]);
|
|
9122
|
+
const OnClickOutside = /* @__PURE__ */ defineComponent({
|
|
9123
|
+
name: "OnClickOutside",
|
|
9124
|
+
props: ["as", "options"],
|
|
9125
|
+
emits: ["trigger"],
|
|
9126
|
+
setup(props, { slots, emit }) {
|
|
9127
|
+
const target2 = ref();
|
|
9128
|
+
onClickOutside(target2, (e) => {
|
|
9129
|
+
emit("trigger", e);
|
|
9130
|
+
}, props.options);
|
|
9131
|
+
return () => {
|
|
9132
|
+
if (slots.default)
|
|
9133
|
+
return h(props.as || "div", { ref: target2 }, slots.default());
|
|
9134
|
+
};
|
|
9135
|
+
}
|
|
9136
|
+
});
|
|
9137
|
+
function unrefElement(elRef) {
|
|
9138
|
+
var _a;
|
|
9139
|
+
const plain = toValue(elRef);
|
|
9140
|
+
return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
|
|
9141
|
+
}
|
|
9142
|
+
const defaultWindow = isClient ? window : void 0;
|
|
9143
|
+
function useEventListener(...args) {
|
|
9144
|
+
let target2;
|
|
9145
|
+
let events;
|
|
9146
|
+
let listeners;
|
|
9147
|
+
let options;
|
|
9148
|
+
if (typeof args[0] === "string" || Array.isArray(args[0])) {
|
|
9149
|
+
[events, listeners, options] = args;
|
|
9150
|
+
target2 = defaultWindow;
|
|
9151
|
+
} else {
|
|
9152
|
+
[target2, events, listeners, options] = args;
|
|
9153
|
+
}
|
|
9154
|
+
if (!target2)
|
|
9155
|
+
return noop$2;
|
|
9156
|
+
if (!Array.isArray(events))
|
|
9157
|
+
events = [events];
|
|
9158
|
+
if (!Array.isArray(listeners))
|
|
9159
|
+
listeners = [listeners];
|
|
9160
|
+
const cleanups = [];
|
|
9161
|
+
const cleanup = () => {
|
|
9162
|
+
cleanups.forEach((fn) => fn());
|
|
9163
|
+
cleanups.length = 0;
|
|
9164
|
+
};
|
|
9165
|
+
const register = (el, event, listener, options2) => {
|
|
9166
|
+
el.addEventListener(event, listener, options2);
|
|
9167
|
+
return () => el.removeEventListener(event, listener, options2);
|
|
9168
|
+
};
|
|
9169
|
+
const stopWatch = watch(
|
|
9170
|
+
() => [unrefElement(target2), toValue(options)],
|
|
9171
|
+
([el, options2]) => {
|
|
9172
|
+
cleanup();
|
|
9173
|
+
if (!el)
|
|
9174
|
+
return;
|
|
9175
|
+
const optionsClone = isObject(options2) ? { ...options2 } : options2;
|
|
9176
|
+
cleanups.push(
|
|
9177
|
+
...events.flatMap((event) => {
|
|
9178
|
+
return listeners.map((listener) => register(el, event, listener, optionsClone));
|
|
9179
|
+
})
|
|
9180
|
+
);
|
|
9181
|
+
},
|
|
9182
|
+
{ immediate: true, flush: "post" }
|
|
9183
|
+
);
|
|
9184
|
+
const stop = () => {
|
|
9185
|
+
stopWatch();
|
|
9186
|
+
cleanup();
|
|
9187
|
+
};
|
|
9188
|
+
tryOnScopeDispose(stop);
|
|
9189
|
+
return stop;
|
|
9190
|
+
}
|
|
9191
|
+
function resolveElement(el) {
|
|
9192
|
+
if (typeof Window !== "undefined" && el instanceof Window)
|
|
9193
|
+
return el.document.documentElement;
|
|
9194
|
+
if (typeof Document !== "undefined" && el instanceof Document)
|
|
9195
|
+
return el.documentElement;
|
|
9196
|
+
return el;
|
|
9197
|
+
}
|
|
9198
|
+
function checkOverflowScroll(ele) {
|
|
9199
|
+
const style = window.getComputedStyle(ele);
|
|
9200
|
+
if (style.overflowX === "scroll" || style.overflowY === "scroll" || style.overflowX === "auto" && ele.clientWidth < ele.scrollWidth || style.overflowY === "auto" && ele.clientHeight < ele.scrollHeight) {
|
|
9201
|
+
return true;
|
|
9202
|
+
} else {
|
|
9203
|
+
const parent = ele.parentNode;
|
|
9204
|
+
if (!parent || parent.tagName === "BODY")
|
|
9205
|
+
return false;
|
|
9206
|
+
return checkOverflowScroll(parent);
|
|
9207
|
+
}
|
|
9208
|
+
}
|
|
9209
|
+
function preventDefault(rawEvent) {
|
|
9210
|
+
const e = rawEvent || window.event;
|
|
9211
|
+
const _target = e.target;
|
|
9212
|
+
if (checkOverflowScroll(_target))
|
|
9213
|
+
return false;
|
|
9214
|
+
if (e.touches.length > 1)
|
|
9215
|
+
return true;
|
|
9216
|
+
if (e.preventDefault)
|
|
9217
|
+
e.preventDefault();
|
|
9218
|
+
return false;
|
|
9219
|
+
}
|
|
9220
|
+
const elInitialOverflow = /* @__PURE__ */ new WeakMap();
|
|
9221
|
+
function useScrollLock(element, initialState = false) {
|
|
9222
|
+
const isLocked = ref(initialState);
|
|
9223
|
+
let stopTouchMoveListener = null;
|
|
9224
|
+
let initialOverflow = "";
|
|
9225
|
+
watch(toRef$1(element), (el) => {
|
|
9226
|
+
const target2 = resolveElement(toValue(el));
|
|
9227
|
+
if (target2) {
|
|
9228
|
+
const ele = target2;
|
|
9229
|
+
if (!elInitialOverflow.get(ele))
|
|
9230
|
+
elInitialOverflow.set(ele, ele.style.overflow);
|
|
9231
|
+
if (ele.style.overflow !== "hidden")
|
|
9232
|
+
initialOverflow = ele.style.overflow;
|
|
9233
|
+
if (ele.style.overflow === "hidden")
|
|
9234
|
+
return isLocked.value = true;
|
|
9235
|
+
if (isLocked.value)
|
|
9236
|
+
return ele.style.overflow = "hidden";
|
|
9237
|
+
}
|
|
9238
|
+
}, {
|
|
9239
|
+
immediate: true
|
|
9240
|
+
});
|
|
9241
|
+
const lock = () => {
|
|
9242
|
+
const el = resolveElement(toValue(element));
|
|
9243
|
+
if (!el || isLocked.value)
|
|
9244
|
+
return;
|
|
9245
|
+
if (isIOS) {
|
|
9246
|
+
stopTouchMoveListener = useEventListener(
|
|
9247
|
+
el,
|
|
9248
|
+
"touchmove",
|
|
9249
|
+
(e) => {
|
|
9250
|
+
preventDefault(e);
|
|
9251
|
+
},
|
|
9252
|
+
{ passive: false }
|
|
9253
|
+
);
|
|
9254
|
+
}
|
|
9255
|
+
el.style.overflow = "hidden";
|
|
9256
|
+
isLocked.value = true;
|
|
9257
|
+
};
|
|
9258
|
+
const unlock = () => {
|
|
9259
|
+
const el = resolveElement(toValue(element));
|
|
9260
|
+
if (!el || !isLocked.value)
|
|
9261
|
+
return;
|
|
9262
|
+
isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());
|
|
9263
|
+
el.style.overflow = initialOverflow;
|
|
9264
|
+
elInitialOverflow.delete(el);
|
|
9265
|
+
isLocked.value = false;
|
|
9266
|
+
};
|
|
9267
|
+
tryOnScopeDispose(unlock);
|
|
9268
|
+
return computed({
|
|
9269
|
+
get() {
|
|
9270
|
+
return isLocked.value;
|
|
9271
|
+
},
|
|
9272
|
+
set(v) {
|
|
9273
|
+
if (v)
|
|
9274
|
+
lock();
|
|
9275
|
+
else unlock();
|
|
9276
|
+
}
|
|
9277
|
+
});
|
|
9278
|
+
}
|
|
9279
|
+
function onScrollLock() {
|
|
9280
|
+
let isMounted = false;
|
|
9281
|
+
const state2 = ref(false);
|
|
9282
|
+
return (el, binding) => {
|
|
9283
|
+
state2.value = binding.value;
|
|
9284
|
+
if (isMounted)
|
|
9285
|
+
return;
|
|
9286
|
+
isMounted = true;
|
|
9287
|
+
const isLocked = useScrollLock(el, binding.value);
|
|
9288
|
+
watch(state2, (v) => isLocked.value = v);
|
|
9289
|
+
};
|
|
9290
|
+
}
|
|
9291
|
+
onScrollLock();
|
|
9292
|
+
const _hoisted_1$7 = ["data-test-id"];
|
|
9293
|
+
const _hoisted_2$3 = ["textContent"];
|
|
9294
|
+
const _hoisted_3$2 = ["onClick"];
|
|
9295
|
+
const _hoisted_4$1 = ["onClick"];
|
|
9296
|
+
const _hoisted_5$1 = ["data-node-name"];
|
|
9297
|
+
const _hoisted_6$1 = ["onClick"];
|
|
9298
|
+
const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
9299
|
+
__name: "NDVSubConnections",
|
|
9300
|
+
props: {
|
|
9301
|
+
rootNode: {}
|
|
9302
|
+
},
|
|
9303
|
+
emits: ["switchSelectedNode", "openConnectionNodeCreator"],
|
|
9304
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
9305
|
+
const props = __props;
|
|
9306
|
+
const workflowsStore = useWorkflowsStore();
|
|
9307
|
+
const nodeTypesStore = useNodeTypesStore();
|
|
9308
|
+
const nodeHelpers = useNodeHelpers();
|
|
9309
|
+
const i18n = useI18n();
|
|
9310
|
+
const { debounce } = useDebounce();
|
|
9311
|
+
const emit = __emit;
|
|
9312
|
+
const possibleConnections = ref([]);
|
|
9313
|
+
const expandedGroups = ref([]);
|
|
9314
|
+
const shouldShowNodeInputIssues = ref(false);
|
|
9315
|
+
const nodeType = computed(
|
|
9316
|
+
() => nodeTypesStore.getNodeType(props.rootNode.type, props.rootNode.typeVersion)
|
|
9317
|
+
);
|
|
9318
|
+
const nodeData = computed(() => workflowsStore.getNodeByName(props.rootNode.name));
|
|
9319
|
+
const ndvStore = useNDVStore();
|
|
9320
|
+
const workflow = computed(() => workflowsStore.getCurrentWorkflow());
|
|
9321
|
+
const nodeInputIssues = computed(() => {
|
|
9322
|
+
const issues2 = nodeHelpers.getNodeIssues(nodeType.value, props.rootNode, workflow.value, [
|
|
9323
|
+
"typeUnknown",
|
|
9324
|
+
"parameters",
|
|
9325
|
+
"credentials",
|
|
9326
|
+
"execution"
|
|
9327
|
+
]);
|
|
9328
|
+
return issues2?.input ?? {};
|
|
9329
|
+
});
|
|
9330
|
+
const connectedNodes2 = computed(() => {
|
|
9331
|
+
return possibleConnections.value.reduce(
|
|
9332
|
+
(acc, connection) => {
|
|
9333
|
+
const nodes = getINodesFromNames(
|
|
9334
|
+
workflow.value.getParentNodes(props.rootNode.name, connection.type)
|
|
9335
|
+
);
|
|
9336
|
+
return { ...acc, [connection.type]: nodes };
|
|
9337
|
+
},
|
|
9338
|
+
{}
|
|
9339
|
+
);
|
|
9340
|
+
});
|
|
9341
|
+
function getConnectionConfig(connectionType2) {
|
|
9342
|
+
return possibleConnections.value.find((c) => c.type === connectionType2);
|
|
9343
|
+
}
|
|
9344
|
+
function isMultiConnection(connectionType2) {
|
|
9345
|
+
const connectionConfig = getConnectionConfig(connectionType2);
|
|
9346
|
+
return connectionConfig?.maxConnections !== 1;
|
|
9347
|
+
}
|
|
9348
|
+
function shouldShowConnectionTooltip(connectionType2) {
|
|
9349
|
+
return isMultiConnection(connectionType2) && !expandedGroups.value.includes(connectionType2);
|
|
9350
|
+
}
|
|
9351
|
+
function expandConnectionGroup(connectionType2, isExpanded) {
|
|
9352
|
+
if (!isMultiConnection(connectionType2)) {
|
|
9353
|
+
return;
|
|
9354
|
+
}
|
|
9355
|
+
if (isExpanded) {
|
|
9356
|
+
expandedGroups.value = [...expandedGroups.value, connectionType2];
|
|
9357
|
+
} else {
|
|
9358
|
+
expandedGroups.value = expandedGroups.value.filter((g) => g !== connectionType2);
|
|
9359
|
+
}
|
|
9360
|
+
}
|
|
9361
|
+
function getINodesFromNames(names) {
|
|
9362
|
+
return names.map((name) => {
|
|
9363
|
+
const node2 = workflowsStore.getNodeByName(name);
|
|
9364
|
+
if (node2) {
|
|
9365
|
+
const matchedNodeType = nodeTypesStore.getNodeType(node2.type);
|
|
9366
|
+
if (matchedNodeType) {
|
|
9367
|
+
const issues2 = nodeHelpers.getNodeIssues(matchedNodeType, node2, workflow.value);
|
|
9368
|
+
const stringifiedIssues = issues2 ? nodeHelpers.nodeIssuesToString(issues2, node2) : "";
|
|
9369
|
+
return { node: node2, nodeType: matchedNodeType, issues: stringifiedIssues };
|
|
9370
|
+
}
|
|
9371
|
+
}
|
|
9372
|
+
return null;
|
|
9373
|
+
}).filter((n) => n !== null);
|
|
9374
|
+
}
|
|
9375
|
+
function hasInputIssues(connectionType2) {
|
|
9376
|
+
return shouldShowNodeInputIssues.value && (nodeInputIssues.value[connectionType2] ?? []).length > 0;
|
|
9377
|
+
}
|
|
9378
|
+
function isNodeInputConfiguration(connectionConfig) {
|
|
9379
|
+
if (typeof connectionConfig === "string") return false;
|
|
9380
|
+
return "type" in connectionConfig;
|
|
9381
|
+
}
|
|
9382
|
+
function getPossibleSubInputConnections() {
|
|
9383
|
+
if (!nodeType.value || !props.rootNode) return [];
|
|
9384
|
+
const inputs2 = getNodeInputs(workflow.value, props.rootNode, nodeType.value);
|
|
9385
|
+
const nonMainInputs = inputs2.filter((input) => {
|
|
9386
|
+
if (!isNodeInputConfiguration(input)) return false;
|
|
9387
|
+
return input.type !== "main";
|
|
9388
|
+
});
|
|
9389
|
+
return nonMainInputs;
|
|
9390
|
+
}
|
|
9391
|
+
function onNodeClick(nodeName, connectionType2) {
|
|
9392
|
+
if (isMultiConnection(connectionType2) && !expandedGroups.value.includes(connectionType2)) {
|
|
9393
|
+
expandConnectionGroup(connectionType2, true);
|
|
9394
|
+
return;
|
|
9395
|
+
}
|
|
9396
|
+
emit("switchSelectedNode", nodeName);
|
|
9397
|
+
}
|
|
9398
|
+
function onPlusClick(connectionType2) {
|
|
9399
|
+
const connectionNodes = connectedNodes2.value[connectionType2];
|
|
9400
|
+
if (isMultiConnection(connectionType2) && !expandedGroups.value.includes(connectionType2) && connectionNodes.length >= 1) {
|
|
9401
|
+
expandConnectionGroup(connectionType2, true);
|
|
9402
|
+
return;
|
|
9403
|
+
}
|
|
9404
|
+
emit("openConnectionNodeCreator", props.rootNode.name, connectionType2);
|
|
9405
|
+
}
|
|
9406
|
+
function showNodeInputsIssues() {
|
|
9407
|
+
shouldShowNodeInputIssues.value = false;
|
|
9408
|
+
setTimeout(() => {
|
|
9409
|
+
shouldShowNodeInputIssues.value = true;
|
|
9410
|
+
}, 0);
|
|
9411
|
+
}
|
|
9412
|
+
watch(
|
|
9413
|
+
[nodeData, ndvStore.activeNode],
|
|
9414
|
+
debounce(
|
|
9415
|
+
() => setTimeout(() => {
|
|
9416
|
+
expandedGroups.value = [];
|
|
9417
|
+
possibleConnections.value = getPossibleSubInputConnections();
|
|
9418
|
+
}, 0),
|
|
9419
|
+
{ debounceTime: 1e3 }
|
|
9420
|
+
),
|
|
9421
|
+
{ immediate: true }
|
|
9422
|
+
);
|
|
9423
|
+
__expose({
|
|
9424
|
+
showNodeInputsIssues
|
|
9425
|
+
});
|
|
9426
|
+
return (_ctx, _cache) => {
|
|
9427
|
+
const _component_n8n_icon_button = resolveComponent("n8n-icon-button");
|
|
9428
|
+
const _component_n8n_tooltip = resolveComponent("n8n-tooltip");
|
|
9429
|
+
return possibleConnections.value.length ? (openBlock(), createElementBlock("div", {
|
|
9430
|
+
key: 0,
|
|
9431
|
+
class: normalizeClass(_ctx.$style.container)
|
|
9432
|
+
}, [
|
|
9433
|
+
createBaseVNode("div", {
|
|
9434
|
+
class: normalizeClass(_ctx.$style.connections),
|
|
9435
|
+
style: normalizeStyle(`--possible-connections: ${possibleConnections.value.length}`)
|
|
9436
|
+
}, [
|
|
9437
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(possibleConnections.value, (connection) => {
|
|
9438
|
+
return openBlock(), createElementBlock("div", {
|
|
9439
|
+
key: connection.type,
|
|
9440
|
+
"data-test-id": `subnode-connection-group-${connection.type}`
|
|
9441
|
+
}, [
|
|
9442
|
+
createBaseVNode("div", {
|
|
9443
|
+
class: normalizeClass(_ctx.$style.connectionType)
|
|
9444
|
+
}, [
|
|
9445
|
+
createBaseVNode("span", {
|
|
9446
|
+
class: normalizeClass({
|
|
9447
|
+
[_ctx.$style.connectionLabel]: true,
|
|
9448
|
+
[_ctx.$style.hasIssues]: hasInputIssues(connection.type)
|
|
9449
|
+
}),
|
|
9450
|
+
textContent: toDisplayString(`${connection.displayName}${connection.required ? " *" : ""}`)
|
|
9451
|
+
}, null, 10, _hoisted_2$3),
|
|
9452
|
+
createVNode(unref(OnClickOutside), {
|
|
9453
|
+
onTrigger: ($event) => expandConnectionGroup(connection.type, false)
|
|
9454
|
+
}, {
|
|
9455
|
+
default: withCtx(() => [
|
|
9456
|
+
createBaseVNode("div", {
|
|
9457
|
+
ref_for: true,
|
|
9458
|
+
ref: "connectedNodesWrapper",
|
|
9459
|
+
class: normalizeClass({
|
|
9460
|
+
[_ctx.$style.connectedNodesWrapper]: true,
|
|
9461
|
+
[_ctx.$style.connectedNodesWrapperExpanded]: expandedGroups.value.includes(connection.type)
|
|
9462
|
+
}),
|
|
9463
|
+
style: normalizeStyle(`--nodes-length: ${connectedNodes2.value[connection.type].length}`),
|
|
9464
|
+
onClick: ($event) => expandConnectionGroup(connection.type, true)
|
|
9465
|
+
}, [
|
|
9466
|
+
(connectedNodes2.value[connection.type].length >= 1 ? connection.maxConnections !== 1 : true) ? (openBlock(), createElementBlock("div", {
|
|
9467
|
+
key: 0,
|
|
9468
|
+
class: normalizeClass({
|
|
9469
|
+
[_ctx.$style.plusButton]: true,
|
|
9470
|
+
[_ctx.$style.hasIssues]: hasInputIssues(connection.type)
|
|
9471
|
+
}),
|
|
9472
|
+
onClick: ($event) => onPlusClick(connection.type)
|
|
9473
|
+
}, [
|
|
9474
|
+
createVNode(_component_n8n_tooltip, {
|
|
9475
|
+
placement: "top",
|
|
9476
|
+
teleported: true,
|
|
9477
|
+
offset: 10,
|
|
9478
|
+
"show-after": 300,
|
|
9479
|
+
disabled: shouldShowConnectionTooltip(connection.type) && connectedNodes2.value[connection.type].length >= 1
|
|
9480
|
+
}, {
|
|
9481
|
+
content: withCtx(() => [
|
|
9482
|
+
createTextVNode(" Add " + toDisplayString(connection.displayName) + " ", 1),
|
|
9483
|
+
hasInputIssues(connection.type) ? (openBlock(), createBlock(TitledList, {
|
|
9484
|
+
key: 0,
|
|
9485
|
+
title: `${unref(i18n).baseText("node.issues")}:`,
|
|
9486
|
+
items: nodeInputIssues.value[connection.type]
|
|
9487
|
+
}, null, 8, ["title", "items"])) : createCommentVNode("", true)
|
|
9488
|
+
]),
|
|
9489
|
+
default: withCtx(() => [
|
|
9490
|
+
createVNode(_component_n8n_icon_button, {
|
|
9491
|
+
size: "medium",
|
|
9492
|
+
icon: "plus",
|
|
9493
|
+
type: "tertiary",
|
|
9494
|
+
"data-test-id": `add-subnode-${connection.type}`
|
|
9495
|
+
}, null, 8, ["data-test-id"])
|
|
9496
|
+
]),
|
|
9497
|
+
_: 2
|
|
9498
|
+
}, 1032, ["disabled"])
|
|
9499
|
+
], 10, _hoisted_4$1)) : createCommentVNode("", true),
|
|
9500
|
+
connectedNodes2.value[connection.type].length > 0 ? (openBlock(), createElementBlock("div", {
|
|
9501
|
+
key: 1,
|
|
9502
|
+
class: normalizeClass({
|
|
9503
|
+
[_ctx.$style.connectedNodes]: true,
|
|
9504
|
+
[_ctx.$style.connectedNodesMultiple]: connectedNodes2.value[connection.type].length > 1
|
|
9505
|
+
})
|
|
9506
|
+
}, [
|
|
9507
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(connectedNodes2.value[connection.type], (node2, index) => {
|
|
9508
|
+
return openBlock(), createElementBlock("div", {
|
|
9509
|
+
key: node2.node.name,
|
|
9510
|
+
class: normalizeClass({ [_ctx.$style.nodeWrapper]: true, [_ctx.$style.hasIssues]: node2.issues }),
|
|
9511
|
+
"data-test-id": "floating-subnode",
|
|
9512
|
+
"data-node-name": node2.node.name,
|
|
9513
|
+
style: normalizeStyle(`--node-index: ${index}`)
|
|
9514
|
+
}, [
|
|
9515
|
+
(openBlock(), createBlock(_component_n8n_tooltip, {
|
|
9516
|
+
key: node2.node.name,
|
|
9517
|
+
placement: "top",
|
|
9518
|
+
teleported: true,
|
|
9519
|
+
offset: 10,
|
|
9520
|
+
"show-after": 300,
|
|
9521
|
+
disabled: shouldShowConnectionTooltip(connection.type)
|
|
9522
|
+
}, {
|
|
9523
|
+
content: withCtx(() => [
|
|
9524
|
+
createTextVNode(toDisplayString(node2.node.name) + " ", 1),
|
|
9525
|
+
node2.issues ? (openBlock(), createBlock(TitledList, {
|
|
9526
|
+
key: 0,
|
|
9527
|
+
title: `${unref(i18n).baseText("node.issues")}:`,
|
|
9528
|
+
items: node2.issues
|
|
9529
|
+
}, null, 8, ["title", "items"])) : createCommentVNode("", true)
|
|
9530
|
+
]),
|
|
9531
|
+
default: withCtx(() => [
|
|
9532
|
+
createBaseVNode("div", {
|
|
9533
|
+
class: normalizeClass(_ctx.$style.connectedNode),
|
|
9534
|
+
onClick: ($event) => onNodeClick(node2.node.name, connection.type)
|
|
9535
|
+
}, [
|
|
9536
|
+
createVNode(_sfc_main$O, {
|
|
9537
|
+
"node-type": node2.nodeType,
|
|
9538
|
+
"node-name": node2.node.name,
|
|
9539
|
+
"tooltip-position": "top",
|
|
9540
|
+
size: 20,
|
|
9541
|
+
circle: ""
|
|
9542
|
+
}, null, 8, ["node-type", "node-name"])
|
|
9543
|
+
], 10, _hoisted_6$1)
|
|
9544
|
+
]),
|
|
9545
|
+
_: 2
|
|
9546
|
+
}, 1032, ["disabled"]))
|
|
9547
|
+
], 14, _hoisted_5$1);
|
|
9548
|
+
}), 128))
|
|
9549
|
+
], 2)) : createCommentVNode("", true)
|
|
9550
|
+
], 14, _hoisted_3$2)
|
|
9551
|
+
]),
|
|
9552
|
+
_: 2
|
|
9553
|
+
}, 1032, ["onTrigger"])
|
|
9554
|
+
], 2)
|
|
9555
|
+
], 8, _hoisted_1$7);
|
|
9556
|
+
}), 128))
|
|
9557
|
+
], 6)
|
|
9558
|
+
], 2)) : createCommentVNode("", true);
|
|
9559
|
+
};
|
|
9560
|
+
}
|
|
9561
|
+
});
|
|
9562
|
+
const container$2 = "_container_ac466_140";
|
|
9563
|
+
const connections = "_connections_ac466_148";
|
|
9564
|
+
const connectionType = "_connectionType_ac466_160";
|
|
9565
|
+
const connectionLabel = "_connectionLabel_ac466_167";
|
|
9566
|
+
const hasIssues = "_hasIssues_ac466_173";
|
|
9567
|
+
const connectedNodesWrapper = "_connectedNodesWrapper_ac466_177";
|
|
9568
|
+
const plusButton = "_plusButton_ac466_185";
|
|
9569
|
+
const connectedNodesWrapperExpanded = "_connectedNodesWrapperExpanded_ac466_203";
|
|
9570
|
+
const connectedNodesMultiple = "_connectedNodesMultiple_ac466_209";
|
|
9571
|
+
const connectedNode = "_connectedNode_ac466_177";
|
|
9572
|
+
const connectedNodes = "_connectedNodes_ac466_177";
|
|
9573
|
+
const nodeWrapper = "_nodeWrapper_ac466_247";
|
|
9574
|
+
const style0$k = {
|
|
9575
|
+
container: container$2,
|
|
9576
|
+
connections,
|
|
9577
|
+
connectionType,
|
|
9578
|
+
connectionLabel,
|
|
9579
|
+
hasIssues,
|
|
9580
|
+
connectedNodesWrapper,
|
|
9581
|
+
plusButton,
|
|
9582
|
+
"horizontal-shake": "_horizontal-shake_ac466_1",
|
|
9583
|
+
connectedNodesWrapperExpanded,
|
|
9584
|
+
connectedNodesMultiple,
|
|
9585
|
+
connectedNode,
|
|
9586
|
+
connectedNodes,
|
|
9587
|
+
nodeWrapper
|
|
9588
|
+
};
|
|
9589
|
+
const cssModules$k = {
|
|
9590
|
+
"$style": style0$k
|
|
9591
|
+
};
|
|
9592
|
+
const NDVSubConnections = /* @__PURE__ */ _export_sfc$1(_sfc_main$s, [["__cssModules", cssModules$k]]);
|
|
9593
|
+
function updateDynamicConnections(node2, workflowConnections, parameterData) {
|
|
9594
|
+
const connections2 = { ...workflowConnections };
|
|
9595
|
+
try {
|
|
9596
|
+
if (parameterData.name.includes("conditions") || !connections2[node2.name]?.main) return null;
|
|
9597
|
+
if (node2.type === SWITCH_NODE_TYPE && parameterData.name === "parameters.numberOutputs") {
|
|
9598
|
+
const curentNumberOutputs = node2.parameters?.numberOutputs;
|
|
9599
|
+
const newNumberOutputs = parameterData.value;
|
|
9600
|
+
if (newNumberOutputs < curentNumberOutputs) {
|
|
9601
|
+
connections2[node2.name].main = connections2[node2.name].main.slice(0, newNumberOutputs);
|
|
9602
|
+
return connections2;
|
|
9603
|
+
}
|
|
9604
|
+
}
|
|
9605
|
+
if (node2.type === SWITCH_NODE_TYPE && parameterData.name === "parameters.options.fallbackOutput") {
|
|
9606
|
+
const curentFallbackOutput = node2.parameters?.options?.fallbackOutput;
|
|
9607
|
+
if (curentFallbackOutput === "extra") {
|
|
9608
|
+
if (!parameterData.value || parameterData.value !== "extra") {
|
|
9609
|
+
connections2[node2.name].main = connections2[node2.name].main.slice(0, -1);
|
|
9610
|
+
return connections2;
|
|
9611
|
+
}
|
|
9612
|
+
}
|
|
9613
|
+
}
|
|
9614
|
+
if (node2.type === SWITCH_NODE_TYPE && parameterData.name.includes("parameters.rules.values")) {
|
|
9615
|
+
const { fallbackOutput } = node2.parameters?.options;
|
|
9616
|
+
if (parameterData.value === void 0) {
|
|
9617
|
+
let extractIndex = function(path) {
|
|
9618
|
+
const match = path.match(/parameters\.rules\.values\[(\d+)\]$/);
|
|
9619
|
+
return match ? parseInt(match[1], 10) : null;
|
|
9620
|
+
};
|
|
9621
|
+
const index = extractIndex(parameterData.name);
|
|
9622
|
+
if (index !== null) {
|
|
9623
|
+
connections2[node2.name].main.splice(index, 1);
|
|
9624
|
+
return connections2;
|
|
9625
|
+
}
|
|
9626
|
+
if (parameterData.name === "parameters.rules.values") {
|
|
9627
|
+
if (fallbackOutput === "extra") {
|
|
9628
|
+
connections2[node2.name].main = [
|
|
9629
|
+
connections2[node2.name].main[connections2[node2.name].main.length - 1]
|
|
9630
|
+
];
|
|
9631
|
+
} else {
|
|
9632
|
+
connections2[node2.name].main = [];
|
|
9633
|
+
}
|
|
9634
|
+
return connections2;
|
|
9635
|
+
}
|
|
9636
|
+
} else if (parameterData.name === "parameters.rules.values") {
|
|
9637
|
+
const curentRulesvalues = node2.parameters?.rules?.values;
|
|
9638
|
+
let lastConnection = void 0;
|
|
9639
|
+
if (fallbackOutput === "extra" && connections2[node2.name].main.length === curentRulesvalues.length + 1) {
|
|
9640
|
+
lastConnection = connections2[node2.name].main.pop();
|
|
9641
|
+
}
|
|
9642
|
+
const currentRulesLength = node2.parameters?.rules?.values?.length;
|
|
9643
|
+
const newRulesLength = parameterData.value?.length;
|
|
9644
|
+
if (newRulesLength - currentRulesLength === 1) {
|
|
9645
|
+
connections2[node2.name].main = [...connections2[node2.name].main, []];
|
|
9646
|
+
if (lastConnection) {
|
|
9647
|
+
connections2[node2.name].main.push(lastConnection);
|
|
9648
|
+
}
|
|
9649
|
+
return connections2;
|
|
9650
|
+
} else {
|
|
9651
|
+
const newRulesvalues = parameterData.value;
|
|
9652
|
+
const updatedConnectionsIndex = [];
|
|
9653
|
+
for (const newRule of newRulesvalues) {
|
|
9654
|
+
const index = curentRulesvalues.findIndex((rule) => isEqual(rule, newRule));
|
|
9655
|
+
if (index !== -1) {
|
|
9656
|
+
updatedConnectionsIndex.push(index);
|
|
9657
|
+
}
|
|
9658
|
+
}
|
|
9659
|
+
const reorderedConnections = [];
|
|
9660
|
+
for (const index of updatedConnectionsIndex) {
|
|
9661
|
+
reorderedConnections.push(connections2[node2.name].main[index] ?? []);
|
|
9662
|
+
}
|
|
9663
|
+
if (lastConnection) {
|
|
9664
|
+
reorderedConnections.push(lastConnection);
|
|
9665
|
+
}
|
|
9666
|
+
connections2[node2.name].main = reorderedConnections;
|
|
9667
|
+
return connections2;
|
|
9668
|
+
}
|
|
9669
|
+
}
|
|
9670
|
+
}
|
|
9671
|
+
} catch (error2) {
|
|
9672
|
+
captureException(error2);
|
|
9673
|
+
}
|
|
9674
|
+
return null;
|
|
9675
|
+
}
|
|
9676
|
+
const _hoisted_1$6 = { class: "mt-xs" };
|
|
9677
|
+
const LANGCHAIN_NODES_PREFIX = "@n8n/n8n-nodes-langchain.";
|
|
9678
|
+
const N8N_NODES_PREFIX = "@n8n/n8n-nodes.";
|
|
9679
|
+
const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
|
9680
|
+
__name: "FreeAiCreditsCallout",
|
|
9681
|
+
setup(__props) {
|
|
9682
|
+
const NODES_WITH_OPEN_AI_API_CREDENTIAL = [
|
|
9683
|
+
`${LANGCHAIN_NODES_PREFIX}openAi`,
|
|
9684
|
+
`${LANGCHAIN_NODES_PREFIX}embeddingsOpenAi`,
|
|
9685
|
+
`${LANGCHAIN_NODES_PREFIX}lmChatOpenAi`,
|
|
9686
|
+
`${N8N_NODES_PREFIX}openAi`
|
|
9687
|
+
];
|
|
9688
|
+
const showSuccessCallout = ref(false);
|
|
9689
|
+
const claimingCredits = ref(false);
|
|
9690
|
+
const settingsStore = useSettingsStore();
|
|
9691
|
+
const posthogStore = usePostHog();
|
|
9692
|
+
const credentialsStore = useCredentialsStore();
|
|
9693
|
+
const usersStore = useUsersStore();
|
|
9694
|
+
const ndvStore = useNDVStore();
|
|
9695
|
+
const projectsStore = useProjectsStore();
|
|
9696
|
+
const telemetry = useTelemetry();
|
|
9697
|
+
const i18n = useI18n();
|
|
9698
|
+
const toast = useToast();
|
|
9699
|
+
const userHasOpenAiCredentialAlready = computed(
|
|
9700
|
+
() => !!credentialsStore.allCredentials.filter(
|
|
9701
|
+
(credential) => credential.type === OPEN_AI_API_CREDENTIAL_TYPE
|
|
9702
|
+
).length
|
|
9703
|
+
);
|
|
9704
|
+
const userHasClaimedAiCreditsAlready = computed(
|
|
9705
|
+
() => !!usersStore.currentUser?.settings?.userClaimedAiCredits
|
|
9706
|
+
);
|
|
9707
|
+
const activeNodeHasOpenAiApiCredential = computed(
|
|
9708
|
+
() => ndvStore.activeNode?.type && NODES_WITH_OPEN_AI_API_CREDENTIAL.includes(ndvStore.activeNode.type)
|
|
9709
|
+
);
|
|
9710
|
+
const userCanClaimOpenAiCredits = computed(() => {
|
|
9711
|
+
return settingsStore.isAiCreditsEnabled && activeNodeHasOpenAiApiCredential.value && posthogStore.getVariant(AI_CREDITS_EXPERIMENT.name) === AI_CREDITS_EXPERIMENT.variant && !userHasOpenAiCredentialAlready.value && !userHasClaimedAiCreditsAlready.value;
|
|
9712
|
+
});
|
|
9713
|
+
const onClaimCreditsClicked = async () => {
|
|
9714
|
+
claimingCredits.value = true;
|
|
9715
|
+
try {
|
|
9716
|
+
await credentialsStore.claimFreeAiCredits(projectsStore.currentProject?.id);
|
|
9717
|
+
if (usersStore?.currentUser?.settings) {
|
|
9718
|
+
usersStore.currentUser.settings.userClaimedAiCredits = true;
|
|
9719
|
+
}
|
|
9720
|
+
telemetry.track("User claimed OpenAI credits");
|
|
9721
|
+
showSuccessCallout.value = true;
|
|
9722
|
+
} catch (e) {
|
|
9723
|
+
toast.showError(
|
|
9724
|
+
e,
|
|
9725
|
+
i18n.baseText("freeAi.credits.showError.claim.title"),
|
|
9726
|
+
i18n.baseText("freeAi.credits.showError.claim.message")
|
|
9727
|
+
);
|
|
9728
|
+
} finally {
|
|
9729
|
+
claimingCredits.value = false;
|
|
9730
|
+
}
|
|
9731
|
+
};
|
|
9732
|
+
return (_ctx, _cache) => {
|
|
9733
|
+
const _component_n8n_button = resolveComponent("n8n-button");
|
|
9734
|
+
const _component_n8n_callout = resolveComponent("n8n-callout");
|
|
9735
|
+
const _component_n8n_text = resolveComponent("n8n-text");
|
|
9736
|
+
return openBlock(), createElementBlock("div", _hoisted_1$6, [
|
|
9737
|
+
userCanClaimOpenAiCredits.value && !showSuccessCallout.value ? (openBlock(), createBlock(_component_n8n_callout, {
|
|
9738
|
+
key: 0,
|
|
9739
|
+
theme: "secondary",
|
|
9740
|
+
icon: "exclamation-circle"
|
|
9741
|
+
}, {
|
|
9742
|
+
trailingContent: withCtx(() => [
|
|
9743
|
+
createVNode(_component_n8n_button, {
|
|
9744
|
+
type: "tertiary",
|
|
9745
|
+
size: "small",
|
|
9746
|
+
label: unref(i18n).baseText("freeAi.credits.callout.claim.button.label"),
|
|
9747
|
+
loading: claimingCredits.value,
|
|
9748
|
+
onClick: onClaimCreditsClicked
|
|
9749
|
+
}, null, 8, ["label", "loading"])
|
|
9750
|
+
]),
|
|
9751
|
+
default: withCtx(() => [
|
|
9752
|
+
createTextVNode(toDisplayString(unref(i18n).baseText("freeAi.credits.callout.claim.title", {
|
|
9753
|
+
interpolate: { credits: unref(settingsStore).aiCreditsQuota }
|
|
9754
|
+
})) + " ", 1)
|
|
9755
|
+
]),
|
|
9756
|
+
_: 1
|
|
9757
|
+
})) : showSuccessCallout.value ? (openBlock(), createBlock(_component_n8n_callout, {
|
|
9758
|
+
key: 1,
|
|
9759
|
+
theme: "success",
|
|
9760
|
+
icon: "check-circle"
|
|
9761
|
+
}, {
|
|
9762
|
+
default: withCtx(() => [
|
|
9763
|
+
createVNode(_component_n8n_text, { size: "small" }, {
|
|
9764
|
+
default: withCtx(() => [
|
|
9765
|
+
createTextVNode(toDisplayString(unref(i18n).baseText("freeAi.credits.callout.success.title.part1", {
|
|
9766
|
+
interpolate: { credits: unref(settingsStore).aiCreditsQuota }
|
|
9767
|
+
})), 1)
|
|
9768
|
+
]),
|
|
9769
|
+
_: 1
|
|
9770
|
+
}),
|
|
9771
|
+
_cache[0] || (_cache[0] = createTextVNode(" ")),
|
|
9772
|
+
createVNode(_component_n8n_text, {
|
|
9773
|
+
size: "small",
|
|
9774
|
+
bold: "true"
|
|
9775
|
+
}, {
|
|
9776
|
+
default: withCtx(() => [
|
|
9777
|
+
createTextVNode(toDisplayString(unref(i18n).baseText("freeAi.credits.callout.success.title.part2")), 1)
|
|
9778
|
+
]),
|
|
9779
|
+
_: 1
|
|
9780
|
+
})
|
|
9781
|
+
]),
|
|
9782
|
+
_: 1
|
|
9783
|
+
})) : createCommentVNode("", true)
|
|
9784
|
+
]);
|
|
9785
|
+
};
|
|
9786
|
+
}
|
|
9787
|
+
});
|
|
9788
|
+
const _hoisted_1$5 = { class: "header-side-menu" };
|
|
9789
|
+
const _hoisted_2$2 = { key: 1 };
|
|
9790
|
+
const _hoisted_3$1 = {
|
|
9791
|
+
key: 0,
|
|
9792
|
+
class: "node-is-not-valid"
|
|
9793
|
+
};
|
|
9794
|
+
const _hoisted_4 = { class: "missingNodeTitleContainer mt-s mb-xs" };
|
|
9795
|
+
const _hoisted_5 = { class: "mb-l" };
|
|
9796
|
+
const _hoisted_6 = ["href"];
|
|
9797
|
+
const _hoisted_7 = ["href", "textContent"];
|
|
9798
|
+
const _hoisted_8 = {
|
|
9799
|
+
key: 1,
|
|
9800
|
+
class: "node-parameters-wrapper",
|
|
9801
|
+
"data-test-id": "node-parameters"
|
|
9802
|
+
};
|
|
9803
|
+
const _hoisted_9 = {
|
|
9804
|
+
key: 1,
|
|
9805
|
+
class: "no-parameters"
|
|
9806
|
+
};
|
|
9807
|
+
const _hoisted_10 = {
|
|
9808
|
+
key: 2,
|
|
9809
|
+
class: "parameter-item parameter-notice",
|
|
9810
|
+
"data-test-id": "node-parameters-http-notice"
|
|
9811
|
+
};
|
|
9812
|
+
const _hoisted_11 = {
|
|
9813
|
+
class: "node-version",
|
|
9814
|
+
"data-test-id": "node-version"
|
|
9815
|
+
};
|
|
9816
|
+
const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
9817
|
+
__name: "NodeSettings",
|
|
9818
|
+
props: {
|
|
9819
|
+
eventBus: {},
|
|
9820
|
+
dragging: { type: Boolean },
|
|
9821
|
+
pushRef: {},
|
|
9822
|
+
nodeType: {},
|
|
9823
|
+
readOnly: { type: Boolean, default: false },
|
|
9824
|
+
foreignCredentials: { default: () => [] },
|
|
9825
|
+
blockUI: { type: Boolean, default: false },
|
|
9826
|
+
executable: { type: Boolean, default: true },
|
|
9827
|
+
inputSize: { default: 0 },
|
|
9828
|
+
activeNode: {}
|
|
9829
|
+
},
|
|
9830
|
+
emits: ["stopExecution", "redrawRequired", "valueChanged", "switchSelectedNode", "openConnectionNodeCreator", "activate", "execute"],
|
|
9831
|
+
setup(__props, { emit: __emit }) {
|
|
9832
|
+
const props = __props;
|
|
9833
|
+
const emit = __emit;
|
|
9834
|
+
const nodeTypesStore = useNodeTypesStore();
|
|
9835
|
+
const ndvStore = useNDVStore();
|
|
9836
|
+
const workflowsStore = useWorkflowsStore();
|
|
9837
|
+
const credentialsStore = useCredentialsStore();
|
|
9838
|
+
const historyStore = useHistoryStore();
|
|
9839
|
+
const telemetry = useTelemetry();
|
|
9840
|
+
const nodeHelpers = useNodeHelpers();
|
|
9841
|
+
const externalHooks = useExternalHooks();
|
|
9842
|
+
const i18n = useI18n();
|
|
9843
|
+
const nodeValid = ref(true);
|
|
9844
|
+
const openPanel = ref("params");
|
|
9845
|
+
const nodeValues = ref({
|
|
9846
|
+
color: "#ff0000",
|
|
9847
|
+
alwaysOutputData: false,
|
|
9848
|
+
executeOnce: false,
|
|
9849
|
+
notesInFlow: false,
|
|
9850
|
+
onError: "stopWorkflow",
|
|
9851
|
+
retryOnFail: false,
|
|
9852
|
+
maxTries: 3,
|
|
9853
|
+
waitBetweenTries: 1e3,
|
|
9854
|
+
notes: "",
|
|
9855
|
+
parameters: {}
|
|
9856
|
+
});
|
|
9857
|
+
const nodeValuesInitialized = ref(false);
|
|
9858
|
+
const hiddenIssuesInputs = ref([]);
|
|
9859
|
+
const nodeSettings = ref([]);
|
|
9860
|
+
const subConnections = ref(null);
|
|
9861
|
+
const currentWorkflowInstance = computed(() => workflowsStore.getCurrentWorkflow());
|
|
9862
|
+
const currentWorkflow = computed(
|
|
9863
|
+
() => workflowsStore.getWorkflowById(currentWorkflowInstance.value.id)
|
|
9864
|
+
);
|
|
9865
|
+
const hasForeignCredential = computed(() => props.foreignCredentials.length > 0);
|
|
9866
|
+
const isHomeProjectTeam = computed(
|
|
9867
|
+
() => currentWorkflow.value?.homeProject?.type === ProjectTypes.Team
|
|
9868
|
+
);
|
|
9869
|
+
const isReadOnly = computed(
|
|
9870
|
+
() => props.readOnly || hasForeignCredential.value && !isHomeProjectTeam.value
|
|
9871
|
+
);
|
|
9872
|
+
const node2 = computed(() => props.activeNode ?? ndvStore.activeNode);
|
|
9873
|
+
const isTriggerNode = computed(() => !!node2.value && nodeTypesStore.isTriggerNode(node2.value.type));
|
|
9874
|
+
const isToolNode = computed(() => !!node2.value && nodeTypesStore.isToolNode(node2.value.type));
|
|
9875
|
+
const isExecutable2 = computed(() => {
|
|
9876
|
+
if (props.nodeType && node2.value) {
|
|
9877
|
+
const workflowNode = currentWorkflowInstance.value.getNode(node2.value.name);
|
|
9878
|
+
const inputs2 = getNodeInputs(
|
|
9879
|
+
currentWorkflowInstance.value,
|
|
9880
|
+
workflowNode,
|
|
9881
|
+
props.nodeType
|
|
9882
|
+
);
|
|
9883
|
+
const inputNames = getConnectionTypes(inputs2);
|
|
9884
|
+
if (!inputNames.includes(NodeConnectionTypes.Main) && !isToolNode.value && !isTriggerNode.value) {
|
|
9885
|
+
return false;
|
|
9886
|
+
}
|
|
9887
|
+
}
|
|
9888
|
+
return props.executable || props.foreignCredentials.length > 0;
|
|
9889
|
+
});
|
|
9890
|
+
const nodeTypeVersions = computed(() => {
|
|
9891
|
+
if (!node2.value) return [];
|
|
9892
|
+
return nodeTypesStore.getNodeVersions(node2.value.type);
|
|
9893
|
+
});
|
|
9894
|
+
const latestVersion = computed(() => Math.max(...nodeTypeVersions.value));
|
|
9895
|
+
const isLatestNodeVersion = computed(
|
|
9896
|
+
() => !node2.value?.typeVersion || latestVersion.value === node2.value.typeVersion
|
|
9897
|
+
);
|
|
9898
|
+
const executeButtonTooltip = computed(() => {
|
|
9899
|
+
if (node2.value && isLatestNodeVersion.value && props.inputSize > 1 && !nodeHelpers.isSingleExecution(node2.value.type, node2.value.parameters)) {
|
|
9900
|
+
return i18n.baseText("nodeSettings.executeButtonTooltip.times", {
|
|
9901
|
+
interpolate: { inputSize: props.inputSize }
|
|
9902
|
+
});
|
|
9903
|
+
}
|
|
9904
|
+
return "";
|
|
9905
|
+
});
|
|
9906
|
+
const nodeVersionTag = computed(() => {
|
|
9907
|
+
if (!props.nodeType || props.nodeType.hidden) {
|
|
9908
|
+
return i18n.baseText("nodeSettings.deprecated");
|
|
9909
|
+
}
|
|
9910
|
+
if (isLatestNodeVersion.value) {
|
|
9911
|
+
return i18n.baseText("nodeSettings.latest");
|
|
9912
|
+
}
|
|
9913
|
+
return i18n.baseText("nodeSettings.latestVersion", {
|
|
9914
|
+
interpolate: { version: latestVersion.value.toString() }
|
|
9915
|
+
});
|
|
9916
|
+
});
|
|
9917
|
+
const parameters = computed(() => {
|
|
9918
|
+
if (props.nodeType === null) {
|
|
9919
|
+
return [];
|
|
9920
|
+
}
|
|
9921
|
+
return props.nodeType?.properties ?? [];
|
|
9922
|
+
});
|
|
9923
|
+
const parametersSetting = computed(() => parameters.value.filter((item) => item.isNodeSetting));
|
|
9924
|
+
const parametersNoneSetting = computed(
|
|
9925
|
+
() => (
|
|
9926
|
+
// The connection hint notice is visually hidden via CSS in NodeDetails.vue when the node has output connections
|
|
9927
|
+
parameters.value.filter((item) => !item.isNodeSetting)
|
|
9928
|
+
)
|
|
9929
|
+
);
|
|
9930
|
+
const isDisplayingCredentials = computed(
|
|
9931
|
+
() => credentialsStore.getCredentialTypesNodeDescriptions("", props.nodeType).filter((credentialTypeDescription) => displayCredentials(credentialTypeDescription)).length > 0
|
|
9932
|
+
);
|
|
9933
|
+
const showNoParametersNotice = computed(
|
|
9934
|
+
() => !isDisplayingCredentials.value && parametersNoneSetting.value.filter((item) => item.type !== "notice").length === 0
|
|
9935
|
+
);
|
|
9936
|
+
const outputPanelEditMode = computed(() => ndvStore.outputPanelEditMode);
|
|
9937
|
+
const isCommunityNode = computed(() => !!node2.value && isCommunityPackageName(node2.value.type));
|
|
9938
|
+
const usedCredentials = computed(
|
|
9939
|
+
() => Object.values(workflowsStore.usedCredentials).filter(
|
|
9940
|
+
(credential) => Object.values(node2.value?.credentials || []).find(
|
|
9941
|
+
(nodeCredential) => nodeCredential.id === credential.id
|
|
9942
|
+
)
|
|
9943
|
+
)
|
|
9944
|
+
);
|
|
9945
|
+
const credentialOwnerName = computed(() => {
|
|
9946
|
+
const credential = usedCredentials.value ? Object.values(usedCredentials.value).find(
|
|
9947
|
+
(credential2) => credential2.id === props.foreignCredentials[0]
|
|
9948
|
+
) : void 0;
|
|
9949
|
+
return credentialsStore.getCredentialOwnerName(credential);
|
|
9950
|
+
});
|
|
9951
|
+
const setValue = (name, value) => {
|
|
9952
|
+
const nameParts = name.split(".");
|
|
9953
|
+
let lastNamePart = nameParts.pop();
|
|
9954
|
+
let isArray = false;
|
|
9955
|
+
if (lastNamePart !== void 0 && lastNamePart.includes("[")) {
|
|
9956
|
+
const lastNameParts = lastNamePart.match(/(.*)\[(\d+)\]$/);
|
|
9957
|
+
if (lastNameParts) {
|
|
9958
|
+
nameParts.push(lastNameParts[1]);
|
|
9959
|
+
lastNamePart = lastNameParts[2];
|
|
9960
|
+
isArray = true;
|
|
9961
|
+
}
|
|
9962
|
+
}
|
|
9963
|
+
if (nameParts.length === 0) {
|
|
9964
|
+
if (value === null) {
|
|
9965
|
+
if (lastNamePart) {
|
|
9966
|
+
const { [lastNamePart]: removedNodeValue, ...remainingNodeValues } = nodeValues.value;
|
|
9967
|
+
nodeValues.value = remainingNodeValues;
|
|
9968
|
+
}
|
|
9969
|
+
} else {
|
|
9970
|
+
nodeValues.value = {
|
|
9971
|
+
...nodeValues.value,
|
|
9972
|
+
[lastNamePart]: value
|
|
9973
|
+
};
|
|
9974
|
+
}
|
|
9975
|
+
} else {
|
|
9976
|
+
if (value === null) {
|
|
9977
|
+
let tempValue = get$3(nodeValues.value, nameParts.join("."));
|
|
9978
|
+
if (lastNamePart && !Array.isArray(tempValue)) {
|
|
9979
|
+
const { [lastNamePart]: removedNodeValue, ...remainingNodeValues } = tempValue;
|
|
9980
|
+
tempValue = remainingNodeValues;
|
|
9981
|
+
}
|
|
9982
|
+
if (isArray && Array.isArray(tempValue) && tempValue.length === 0) {
|
|
9983
|
+
lastNamePart = nameParts.pop();
|
|
9984
|
+
tempValue = get$3(nodeValues.value, nameParts.join("."));
|
|
9985
|
+
if (lastNamePart) {
|
|
9986
|
+
const { [lastNamePart]: removedArrayNodeValue, ...remainingArrayNodeValues } = tempValue;
|
|
9987
|
+
tempValue = remainingArrayNodeValues;
|
|
9988
|
+
}
|
|
9989
|
+
}
|
|
9990
|
+
} else {
|
|
9991
|
+
if (typeof value === "object") {
|
|
9992
|
+
set$3(
|
|
9993
|
+
get$3(nodeValues.value, nameParts.join(".")),
|
|
9994
|
+
lastNamePart,
|
|
9995
|
+
deepCopy(value)
|
|
9996
|
+
);
|
|
9997
|
+
} else {
|
|
9998
|
+
set$3(
|
|
9999
|
+
get$3(nodeValues.value, nameParts.join(".")),
|
|
10000
|
+
lastNamePart,
|
|
10001
|
+
value
|
|
10002
|
+
);
|
|
10003
|
+
}
|
|
10004
|
+
}
|
|
10005
|
+
}
|
|
10006
|
+
nodeValues.value = { ...nodeValues.value };
|
|
10007
|
+
};
|
|
10008
|
+
const removeMismatchedOptionValues = (nodeType, nodeParameterValues, updatedParameter) => {
|
|
10009
|
+
nodeType.properties.forEach((prop) => {
|
|
10010
|
+
const displayOptions = prop.displayOptions;
|
|
10011
|
+
if (!nodeParameterValues?.hasOwnProperty(prop.name) || !displayOptions || !prop.options) {
|
|
10012
|
+
return;
|
|
10013
|
+
}
|
|
10014
|
+
const showCondition = displayOptions.show?.[updatedParameter.name];
|
|
10015
|
+
const hideCondition = displayOptions.hide?.[updatedParameter.name];
|
|
10016
|
+
if (showCondition === void 0 && hideCondition === void 0) {
|
|
10017
|
+
return;
|
|
10018
|
+
}
|
|
10019
|
+
let hasValidOptions = true;
|
|
10020
|
+
if (isINodePropertyCollectionList(prop.options) || isINodePropertiesList(prop.options)) {
|
|
10021
|
+
hasValidOptions = Object.keys(nodeParameterValues).every(
|
|
10022
|
+
(key) => (prop.options ?? []).find((option2) => option2.name === key) !== void 0
|
|
10023
|
+
);
|
|
10024
|
+
} else if (isINodePropertyOptionsList(prop.options)) {
|
|
10025
|
+
hasValidOptions = !!prop.options.find(
|
|
10026
|
+
(option2) => option2.value === nodeParameterValues[prop.name]
|
|
10027
|
+
);
|
|
10028
|
+
}
|
|
10029
|
+
if (!hasValidOptions && displayParameter(nodeParameterValues, prop, node2.value, nodeType)) {
|
|
10030
|
+
unset(nodeParameterValues, prop.name);
|
|
10031
|
+
}
|
|
10032
|
+
});
|
|
10033
|
+
};
|
|
10034
|
+
const valueChanged = (parameterData) => {
|
|
10035
|
+
let newValue;
|
|
10036
|
+
if (parameterData.hasOwnProperty("value")) {
|
|
10037
|
+
newValue = parameterData.value;
|
|
10038
|
+
} else {
|
|
10039
|
+
newValue = get$3(nodeValues.value, parameterData.name);
|
|
10040
|
+
}
|
|
10041
|
+
const nodeNameBefore = parameterData.node || node2.value?.name;
|
|
10042
|
+
if (!nodeNameBefore) {
|
|
10043
|
+
return;
|
|
10044
|
+
}
|
|
10045
|
+
const _node = workflowsStore.getNodeByName(nodeNameBefore);
|
|
10046
|
+
if (_node === null) {
|
|
10047
|
+
return;
|
|
10048
|
+
}
|
|
10049
|
+
if (parameterData.name === "onError") {
|
|
10050
|
+
emit("redrawRequired");
|
|
10051
|
+
}
|
|
10052
|
+
if (parameterData.name === "name") {
|
|
10053
|
+
const sendData = {
|
|
10054
|
+
value: newValue,
|
|
10055
|
+
oldValue: nodeNameBefore,
|
|
10056
|
+
name: parameterData.name
|
|
10057
|
+
};
|
|
10058
|
+
emit("valueChanged", sendData);
|
|
10059
|
+
} else if (parameterData.name === "parameters") {
|
|
10060
|
+
const nodeType = nodeTypesStore.getNodeType(_node.type, _node.typeVersion);
|
|
10061
|
+
if (!nodeType) {
|
|
10062
|
+
return;
|
|
10063
|
+
}
|
|
10064
|
+
let nodeParameters = getNodeParameters(
|
|
10065
|
+
nodeType.properties,
|
|
10066
|
+
_node.parameters,
|
|
10067
|
+
false,
|
|
10068
|
+
false,
|
|
10069
|
+
_node,
|
|
10070
|
+
nodeType
|
|
10071
|
+
);
|
|
10072
|
+
const oldNodeParameters = Object.assign({}, nodeParameters);
|
|
10073
|
+
nodeParameters = deepCopy(nodeParameters);
|
|
10074
|
+
if (parameterData.value && typeof parameterData.value === "object") {
|
|
10075
|
+
for (const parameterName of Object.keys(parameterData.value)) {
|
|
10076
|
+
newValue = parameterData.value[parameterName];
|
|
10077
|
+
const parameterPath = parameterName.split(".").slice(1).join(".");
|
|
10078
|
+
const parameterPathArray = parameterPath.match(/(.*)\[(\d+)\]$/);
|
|
10079
|
+
if (parameterData[parameterName] === void 0 && parameterPathArray !== null) {
|
|
10080
|
+
const path = parameterPathArray[1];
|
|
10081
|
+
const index = parameterPathArray[2];
|
|
10082
|
+
const data = get$3(nodeParameters, path);
|
|
10083
|
+
if (Array.isArray(data)) {
|
|
10084
|
+
data.splice(parseInt(index, 10), 1);
|
|
10085
|
+
set$3(nodeParameters, path, data);
|
|
10086
|
+
}
|
|
10087
|
+
} else {
|
|
10088
|
+
if (newValue === void 0) {
|
|
10089
|
+
unset(nodeParameters, parameterPath);
|
|
10090
|
+
} else {
|
|
10091
|
+
set$3(nodeParameters, parameterPath, newValue);
|
|
10092
|
+
}
|
|
10093
|
+
}
|
|
10094
|
+
void externalHooks.run("nodeSettings.valueChanged", {
|
|
10095
|
+
parameterPath,
|
|
10096
|
+
newValue,
|
|
10097
|
+
parameters: parameters.value,
|
|
10098
|
+
oldNodeParameters
|
|
10099
|
+
});
|
|
10100
|
+
}
|
|
10101
|
+
}
|
|
10102
|
+
nodeParameters = getNodeParameters(
|
|
10103
|
+
nodeType.properties,
|
|
10104
|
+
nodeParameters,
|
|
10105
|
+
true,
|
|
10106
|
+
false,
|
|
10107
|
+
_node,
|
|
10108
|
+
nodeType
|
|
10109
|
+
);
|
|
10110
|
+
for (const key of Object.keys(nodeParameters)) {
|
|
10111
|
+
if (nodeParameters && nodeParameters[key] !== null && nodeParameters[key] !== void 0) {
|
|
10112
|
+
setValue(`parameters.${key}`, nodeParameters[key]);
|
|
10113
|
+
}
|
|
10114
|
+
}
|
|
10115
|
+
if (nodeParameters) {
|
|
10116
|
+
const updateInformation = {
|
|
10117
|
+
name: _node.name,
|
|
10118
|
+
value: nodeParameters
|
|
10119
|
+
};
|
|
10120
|
+
workflowsStore.setNodeParameters(updateInformation);
|
|
10121
|
+
nodeHelpers.updateNodeParameterIssuesByName(_node.name);
|
|
10122
|
+
nodeHelpers.updateNodeCredentialIssuesByName(_node.name);
|
|
10123
|
+
}
|
|
10124
|
+
} else if (parameterData.name.startsWith("parameters.")) {
|
|
10125
|
+
const nodeType = nodeTypesStore.getNodeType(_node.type, _node.typeVersion);
|
|
10126
|
+
if (!nodeType) {
|
|
10127
|
+
return;
|
|
10128
|
+
}
|
|
10129
|
+
let nodeParameters = getNodeParameters(
|
|
10130
|
+
nodeType.properties,
|
|
10131
|
+
_node.parameters,
|
|
10132
|
+
false,
|
|
10133
|
+
false,
|
|
10134
|
+
_node,
|
|
10135
|
+
nodeType
|
|
10136
|
+
);
|
|
10137
|
+
const oldNodeParameters = Object.assign({}, nodeParameters);
|
|
10138
|
+
nodeParameters = deepCopy(nodeParameters);
|
|
10139
|
+
const parameterPath = parameterData.name.split(".").slice(1).join(".");
|
|
10140
|
+
const parameterPathArray = parameterPath.match(/(.*)\[(\d+)\]$/);
|
|
10141
|
+
if (parameterData.value === void 0 && parameterPathArray !== null) {
|
|
10142
|
+
const path = parameterPathArray[1];
|
|
10143
|
+
const index = parameterPathArray[2];
|
|
10144
|
+
const data = get$3(nodeParameters, path);
|
|
10145
|
+
if (Array.isArray(data)) {
|
|
10146
|
+
data.splice(parseInt(index, 10), 1);
|
|
10147
|
+
set$3(nodeParameters, path, data);
|
|
10148
|
+
}
|
|
10149
|
+
} else {
|
|
10150
|
+
if (newValue === void 0) {
|
|
10151
|
+
unset(nodeParameters, parameterPath);
|
|
10152
|
+
} else {
|
|
10153
|
+
set$3(nodeParameters, parameterPath, newValue);
|
|
10154
|
+
}
|
|
10155
|
+
removeMismatchedOptionValues(nodeType, nodeParameters, {
|
|
10156
|
+
name: parameterPath
|
|
10157
|
+
});
|
|
10158
|
+
}
|
|
10159
|
+
nodeParameters = getNodeParameters(
|
|
10160
|
+
nodeType.properties,
|
|
10161
|
+
nodeParameters,
|
|
10162
|
+
true,
|
|
10163
|
+
false,
|
|
10164
|
+
_node,
|
|
10165
|
+
nodeType
|
|
10166
|
+
);
|
|
10167
|
+
if (isToolNode.value) {
|
|
10168
|
+
const updatedDescription = getUpdatedToolDescription(
|
|
10169
|
+
props.nodeType,
|
|
10170
|
+
nodeParameters,
|
|
10171
|
+
node2.value?.parameters
|
|
10172
|
+
);
|
|
10173
|
+
if (updatedDescription && nodeParameters) {
|
|
10174
|
+
nodeParameters.toolDescription = updatedDescription;
|
|
10175
|
+
}
|
|
10176
|
+
}
|
|
10177
|
+
for (const key of Object.keys(nodeParameters)) {
|
|
10178
|
+
if (nodeParameters && nodeParameters[key] !== null && nodeParameters[key] !== void 0) {
|
|
10179
|
+
setValue(`parameters.${key}`, nodeParameters[key]);
|
|
10180
|
+
}
|
|
10181
|
+
}
|
|
10182
|
+
const updateInformation = {
|
|
10183
|
+
name: _node.name,
|
|
10184
|
+
value: nodeParameters
|
|
10185
|
+
};
|
|
10186
|
+
const connections2 = workflowsStore.allConnections;
|
|
10187
|
+
const updatedConnections = updateDynamicConnections(_node, connections2, parameterData);
|
|
10188
|
+
if (updatedConnections) {
|
|
10189
|
+
workflowsStore.setConnections(updatedConnections, true);
|
|
10190
|
+
}
|
|
10191
|
+
workflowsStore.setNodeParameters(updateInformation);
|
|
10192
|
+
void externalHooks.run("nodeSettings.valueChanged", {
|
|
10193
|
+
parameterPath,
|
|
10194
|
+
newValue,
|
|
10195
|
+
parameters: parameters.value,
|
|
10196
|
+
oldNodeParameters
|
|
10197
|
+
});
|
|
10198
|
+
nodeHelpers.updateNodeParameterIssuesByName(_node.name);
|
|
10199
|
+
nodeHelpers.updateNodeCredentialIssuesByName(_node.name);
|
|
10200
|
+
telemetry.trackNodeParametersValuesChange(nodeType.name, parameterData);
|
|
10201
|
+
} else {
|
|
10202
|
+
nodeValues.value = {
|
|
10203
|
+
...nodeValues.value,
|
|
10204
|
+
[parameterData.name]: newValue
|
|
10205
|
+
};
|
|
10206
|
+
const updateInformation = {
|
|
10207
|
+
name: _node.name,
|
|
10208
|
+
key: parameterData.name,
|
|
10209
|
+
value: newValue
|
|
10210
|
+
};
|
|
10211
|
+
workflowsStore.setNodeValue(updateInformation);
|
|
10212
|
+
}
|
|
10213
|
+
};
|
|
10214
|
+
const setHttpNodeParameters = (parameters2) => {
|
|
10215
|
+
try {
|
|
10216
|
+
valueChanged({
|
|
10217
|
+
node: node2.value?.name,
|
|
10218
|
+
name: "parameters",
|
|
10219
|
+
value: parameters2
|
|
10220
|
+
});
|
|
10221
|
+
} catch {
|
|
10222
|
+
}
|
|
10223
|
+
};
|
|
10224
|
+
const onSwitchSelectedNode = (node22) => {
|
|
10225
|
+
emit("switchSelectedNode", node22);
|
|
10226
|
+
};
|
|
10227
|
+
const onOpenConnectionNodeCreator = (nodeName, connectionType2) => {
|
|
10228
|
+
emit("openConnectionNodeCreator", nodeName, connectionType2);
|
|
10229
|
+
};
|
|
10230
|
+
const populateHiddenIssuesSet = () => {
|
|
10231
|
+
if (!node2.value || !workflowsStore.isNodePristine(node2.value.name)) return;
|
|
10232
|
+
hiddenIssuesInputs.value.push("credentials");
|
|
10233
|
+
parametersNoneSetting.value.forEach((parameter) => {
|
|
10234
|
+
hiddenIssuesInputs.value.push(parameter.name);
|
|
10235
|
+
});
|
|
10236
|
+
workflowsStore.setNodePristine(node2.value.name, false);
|
|
10237
|
+
};
|
|
10238
|
+
const populateSettings = () => {
|
|
10239
|
+
if (isExecutable2.value && !isTriggerNode.value) {
|
|
10240
|
+
nodeSettings.value.push(
|
|
10241
|
+
...[
|
|
10242
|
+
{
|
|
10243
|
+
displayName: i18n.baseText("nodeSettings.alwaysOutputData.displayName"),
|
|
10244
|
+
name: "alwaysOutputData",
|
|
10245
|
+
type: "boolean",
|
|
10246
|
+
default: false,
|
|
10247
|
+
noDataExpression: true,
|
|
10248
|
+
description: i18n.baseText("nodeSettings.alwaysOutputData.description")
|
|
10249
|
+
},
|
|
10250
|
+
{
|
|
10251
|
+
displayName: i18n.baseText("nodeSettings.executeOnce.displayName"),
|
|
10252
|
+
name: "executeOnce",
|
|
10253
|
+
type: "boolean",
|
|
10254
|
+
default: false,
|
|
10255
|
+
noDataExpression: true,
|
|
10256
|
+
description: i18n.baseText("nodeSettings.executeOnce.description")
|
|
10257
|
+
},
|
|
10258
|
+
{
|
|
10259
|
+
displayName: i18n.baseText("nodeSettings.retryOnFail.displayName"),
|
|
10260
|
+
name: "retryOnFail",
|
|
10261
|
+
type: "boolean",
|
|
10262
|
+
default: false,
|
|
10263
|
+
noDataExpression: true,
|
|
10264
|
+
description: i18n.baseText("nodeSettings.retryOnFail.description")
|
|
10265
|
+
},
|
|
10266
|
+
{
|
|
10267
|
+
displayName: i18n.baseText("nodeSettings.maxTries.displayName"),
|
|
10268
|
+
name: "maxTries",
|
|
10269
|
+
type: "number",
|
|
10270
|
+
typeOptions: {
|
|
10271
|
+
minValue: 2,
|
|
10272
|
+
maxValue: 5
|
|
10273
|
+
},
|
|
10274
|
+
default: 3,
|
|
10275
|
+
displayOptions: {
|
|
10276
|
+
show: {
|
|
10277
|
+
retryOnFail: [true]
|
|
10278
|
+
}
|
|
10279
|
+
},
|
|
10280
|
+
noDataExpression: true,
|
|
10281
|
+
description: i18n.baseText("nodeSettings.maxTries.description")
|
|
10282
|
+
},
|
|
10283
|
+
{
|
|
10284
|
+
displayName: i18n.baseText("nodeSettings.waitBetweenTries.displayName"),
|
|
10285
|
+
name: "waitBetweenTries",
|
|
10286
|
+
type: "number",
|
|
10287
|
+
typeOptions: {
|
|
10288
|
+
minValue: 0,
|
|
10289
|
+
maxValue: 5e3
|
|
10290
|
+
},
|
|
10291
|
+
default: 1e3,
|
|
10292
|
+
displayOptions: {
|
|
10293
|
+
show: {
|
|
10294
|
+
retryOnFail: [true]
|
|
10295
|
+
}
|
|
10296
|
+
},
|
|
10297
|
+
noDataExpression: true,
|
|
10298
|
+
description: i18n.baseText("nodeSettings.waitBetweenTries.description")
|
|
10299
|
+
},
|
|
10300
|
+
{
|
|
10301
|
+
displayName: i18n.baseText("nodeSettings.onError.displayName"),
|
|
10302
|
+
name: "onError",
|
|
10303
|
+
type: "options",
|
|
10304
|
+
options: [
|
|
10305
|
+
{
|
|
10306
|
+
name: i18n.baseText("nodeSettings.onError.options.stopWorkflow.displayName"),
|
|
10307
|
+
value: "stopWorkflow",
|
|
10308
|
+
description: i18n.baseText("nodeSettings.onError.options.stopWorkflow.description")
|
|
10309
|
+
},
|
|
10310
|
+
{
|
|
10311
|
+
name: i18n.baseText("nodeSettings.onError.options.continueRegularOutput.displayName"),
|
|
10312
|
+
value: "continueRegularOutput",
|
|
10313
|
+
description: i18n.baseText(
|
|
10314
|
+
"nodeSettings.onError.options.continueRegularOutput.description"
|
|
10315
|
+
)
|
|
10316
|
+
},
|
|
10317
|
+
{
|
|
10318
|
+
name: i18n.baseText("nodeSettings.onError.options.continueErrorOutput.displayName"),
|
|
10319
|
+
value: "continueErrorOutput",
|
|
10320
|
+
description: i18n.baseText(
|
|
10321
|
+
"nodeSettings.onError.options.continueErrorOutput.description"
|
|
10322
|
+
)
|
|
10323
|
+
}
|
|
10324
|
+
],
|
|
10325
|
+
default: "stopWorkflow",
|
|
10326
|
+
description: i18n.baseText("nodeSettings.onError.description"),
|
|
10327
|
+
noDataExpression: true
|
|
10328
|
+
}
|
|
10329
|
+
]
|
|
10330
|
+
);
|
|
10331
|
+
}
|
|
10332
|
+
nodeSettings.value.push(
|
|
10333
|
+
...[
|
|
10334
|
+
{
|
|
10335
|
+
displayName: i18n.baseText("nodeSettings.notes.displayName"),
|
|
10336
|
+
name: "notes",
|
|
10337
|
+
type: "string",
|
|
10338
|
+
typeOptions: {
|
|
10339
|
+
rows: 5
|
|
10340
|
+
},
|
|
10341
|
+
default: "",
|
|
10342
|
+
noDataExpression: true,
|
|
10343
|
+
description: i18n.baseText("nodeSettings.notes.description")
|
|
10344
|
+
},
|
|
10345
|
+
{
|
|
10346
|
+
displayName: i18n.baseText("nodeSettings.notesInFlow.displayName"),
|
|
10347
|
+
name: "notesInFlow",
|
|
10348
|
+
type: "boolean",
|
|
10349
|
+
default: false,
|
|
10350
|
+
noDataExpression: true,
|
|
10351
|
+
description: i18n.baseText("nodeSettings.notesInFlow.description")
|
|
10352
|
+
}
|
|
10353
|
+
]
|
|
10354
|
+
);
|
|
10355
|
+
};
|
|
10356
|
+
const onParameterBlur = (parameterName) => {
|
|
10357
|
+
hiddenIssuesInputs.value = hiddenIssuesInputs.value.filter((name) => name !== parameterName);
|
|
10358
|
+
};
|
|
10359
|
+
const onWorkflowActivate = () => {
|
|
10360
|
+
hiddenIssuesInputs.value = [];
|
|
10361
|
+
emit("activate");
|
|
10362
|
+
};
|
|
10363
|
+
const onNodeExecute = () => {
|
|
10364
|
+
hiddenIssuesInputs.value = [];
|
|
10365
|
+
subConnections.value?.showNodeInputsIssues();
|
|
10366
|
+
emit("execute");
|
|
10367
|
+
};
|
|
10368
|
+
const credentialSelected = (updateInformation) => {
|
|
10369
|
+
workflowsStore.updateNodeProperties(updateInformation);
|
|
10370
|
+
const node22 = workflowsStore.getNodeByName(updateInformation.name);
|
|
10371
|
+
if (node22) {
|
|
10372
|
+
nodeHelpers.updateNodeCredentialIssues(node22);
|
|
10373
|
+
}
|
|
10374
|
+
void externalHooks.run("nodeSettings.credentialSelected", { updateInformation });
|
|
10375
|
+
};
|
|
10376
|
+
const nameChanged = (name) => {
|
|
10377
|
+
if (node2.value) {
|
|
10378
|
+
historyStore.pushCommandToUndo(new RenameNodeCommand(node2.value.name, name, Date.now()));
|
|
10379
|
+
}
|
|
10380
|
+
valueChanged({
|
|
10381
|
+
value: name,
|
|
10382
|
+
name: "name"
|
|
10383
|
+
});
|
|
10384
|
+
};
|
|
10385
|
+
const setNodeValues = () => {
|
|
10386
|
+
if (!node2.value) {
|
|
10387
|
+
nodeValuesInitialized.value = true;
|
|
10388
|
+
return;
|
|
10389
|
+
}
|
|
10390
|
+
if (props.nodeType !== null) {
|
|
10391
|
+
nodeValid.value = true;
|
|
10392
|
+
const foundNodeSettings = [];
|
|
10393
|
+
if (node2.value.color) {
|
|
10394
|
+
foundNodeSettings.push("color");
|
|
10395
|
+
nodeValues.value = {
|
|
10396
|
+
...nodeValues.value,
|
|
10397
|
+
color: node2.value.color
|
|
10398
|
+
};
|
|
10399
|
+
}
|
|
10400
|
+
if (node2.value.notes) {
|
|
10401
|
+
foundNodeSettings.push("notes");
|
|
10402
|
+
nodeValues.value = {
|
|
10403
|
+
...nodeValues.value,
|
|
10404
|
+
notes: node2.value.notes
|
|
10405
|
+
};
|
|
10406
|
+
}
|
|
10407
|
+
if (node2.value.alwaysOutputData) {
|
|
10408
|
+
foundNodeSettings.push("alwaysOutputData");
|
|
10409
|
+
nodeValues.value = {
|
|
10410
|
+
...nodeValues.value,
|
|
10411
|
+
alwaysOutputData: node2.value.alwaysOutputData
|
|
10412
|
+
};
|
|
10413
|
+
}
|
|
10414
|
+
if (node2.value.executeOnce) {
|
|
10415
|
+
foundNodeSettings.push("executeOnce");
|
|
10416
|
+
nodeValues.value = {
|
|
10417
|
+
...nodeValues.value,
|
|
10418
|
+
executeOnce: node2.value.executeOnce
|
|
10419
|
+
};
|
|
10420
|
+
}
|
|
10421
|
+
if (node2.value.continueOnFail) {
|
|
10422
|
+
foundNodeSettings.push("onError");
|
|
10423
|
+
nodeValues.value = {
|
|
10424
|
+
...nodeValues.value,
|
|
10425
|
+
onError: "continueRegularOutput"
|
|
10426
|
+
};
|
|
10427
|
+
}
|
|
10428
|
+
if (node2.value.onError) {
|
|
10429
|
+
foundNodeSettings.push("onError");
|
|
10430
|
+
nodeValues.value = {
|
|
10431
|
+
...nodeValues.value,
|
|
10432
|
+
onError: node2.value.onError
|
|
10433
|
+
};
|
|
10434
|
+
}
|
|
10435
|
+
if (node2.value.notesInFlow) {
|
|
10436
|
+
foundNodeSettings.push("notesInFlow");
|
|
10437
|
+
nodeValues.value = {
|
|
10438
|
+
...nodeValues.value,
|
|
10439
|
+
notesInFlow: node2.value.notesInFlow
|
|
10440
|
+
};
|
|
10441
|
+
}
|
|
10442
|
+
if (node2.value.retryOnFail) {
|
|
10443
|
+
foundNodeSettings.push("retryOnFail");
|
|
10444
|
+
nodeValues.value = {
|
|
10445
|
+
...nodeValues.value,
|
|
10446
|
+
retryOnFail: node2.value.retryOnFail
|
|
10447
|
+
};
|
|
10448
|
+
}
|
|
10449
|
+
if (node2.value.maxTries) {
|
|
10450
|
+
foundNodeSettings.push("maxTries");
|
|
10451
|
+
nodeValues.value = {
|
|
10452
|
+
...nodeValues.value,
|
|
10453
|
+
maxTries: node2.value.maxTries
|
|
10454
|
+
};
|
|
10455
|
+
}
|
|
10456
|
+
if (node2.value.waitBetweenTries) {
|
|
10457
|
+
foundNodeSettings.push("waitBetweenTries");
|
|
10458
|
+
nodeValues.value = {
|
|
10459
|
+
...nodeValues.value,
|
|
10460
|
+
waitBetweenTries: node2.value.waitBetweenTries
|
|
10461
|
+
};
|
|
10462
|
+
}
|
|
10463
|
+
for (const nodeSetting of nodeSettings.value) {
|
|
10464
|
+
if (!foundNodeSettings.includes(nodeSetting.name)) {
|
|
10465
|
+
nodeValues.value = {
|
|
10466
|
+
...nodeValues.value,
|
|
10467
|
+
[nodeSetting.name]: nodeSetting.default
|
|
10468
|
+
};
|
|
10469
|
+
}
|
|
10470
|
+
}
|
|
10471
|
+
nodeValues.value = {
|
|
10472
|
+
...nodeValues.value,
|
|
10473
|
+
parameters: deepCopy(node2.value.parameters)
|
|
10474
|
+
};
|
|
10475
|
+
} else {
|
|
10476
|
+
nodeValid.value = false;
|
|
10477
|
+
}
|
|
10478
|
+
nodeValuesInitialized.value = true;
|
|
10479
|
+
};
|
|
10480
|
+
const onMissingNodeTextClick = (event) => {
|
|
10481
|
+
if (event.target.localName === "a") {
|
|
10482
|
+
telemetry.track("user clicked cnr browse button", {
|
|
10483
|
+
source: "cnr missing node modal"
|
|
10484
|
+
});
|
|
10485
|
+
}
|
|
10486
|
+
};
|
|
10487
|
+
const onMissingNodeLearnMoreLinkClick = () => {
|
|
10488
|
+
telemetry.track("user clicked cnr docs link", {
|
|
10489
|
+
source: "missing node modal source",
|
|
10490
|
+
package_name: node2.value?.type.split(".")[0],
|
|
10491
|
+
node_type: node2.value?.type
|
|
10492
|
+
});
|
|
10493
|
+
};
|
|
10494
|
+
const onStopExecution = () => {
|
|
10495
|
+
emit("stopExecution");
|
|
10496
|
+
};
|
|
10497
|
+
const openSettings = () => {
|
|
10498
|
+
openPanel.value = "settings";
|
|
10499
|
+
};
|
|
10500
|
+
const onTabSelect = (tab) => {
|
|
10501
|
+
openPanel.value = tab;
|
|
10502
|
+
};
|
|
10503
|
+
watch(node2, () => {
|
|
10504
|
+
setNodeValues();
|
|
10505
|
+
});
|
|
10506
|
+
onMounted(() => {
|
|
10507
|
+
populateHiddenIssuesSet();
|
|
10508
|
+
populateSettings();
|
|
10509
|
+
setNodeValues();
|
|
10510
|
+
props.eventBus?.on("openSettings", openSettings);
|
|
10511
|
+
nodeHelpers.updateNodeParameterIssues(node2.value, props.nodeType);
|
|
10512
|
+
importCurlEventBus.on("setHttpNodeParameters", setHttpNodeParameters);
|
|
10513
|
+
ndvEventBus.on("updateParameterValue", valueChanged);
|
|
10514
|
+
});
|
|
10515
|
+
onBeforeUnmount(() => {
|
|
10516
|
+
props.eventBus?.off("openSettings", openSettings);
|
|
10517
|
+
importCurlEventBus.off("setHttpNodeParameters", setHttpNodeParameters);
|
|
10518
|
+
ndvEventBus.off("updateParameterValue", valueChanged);
|
|
10519
|
+
});
|
|
10520
|
+
function displayCredentials(credentialTypeDescription) {
|
|
10521
|
+
if (credentialTypeDescription.displayOptions === void 0) {
|
|
10522
|
+
return true;
|
|
10523
|
+
}
|
|
10524
|
+
return !!node2.value && nodeHelpers.displayParameter(node2.value.parameters, credentialTypeDescription, "", node2.value);
|
|
10525
|
+
}
|
|
10526
|
+
return (_ctx, _cache) => {
|
|
10527
|
+
const _component_font_awesome_icon = resolveComponent("font-awesome-icon");
|
|
10528
|
+
const _component_n8n_text = resolveComponent("n8n-text");
|
|
10529
|
+
const _component_i18n_t = resolveComponent("i18n-t");
|
|
10530
|
+
const _component_n8n_link = resolveComponent("n8n-link");
|
|
10531
|
+
const _component_n8n_notice = resolveComponent("n8n-notice");
|
|
10532
|
+
const _component_n8n_block_ui = resolveComponent("n8n-block-ui");
|
|
10533
|
+
return openBlock(), createElementBlock("div", {
|
|
10534
|
+
class: normalizeClass({
|
|
10535
|
+
"node-settings": true,
|
|
10536
|
+
dragging: _ctx.dragging
|
|
10537
|
+
}),
|
|
10538
|
+
onKeydown: _cache[0] || (_cache[0] = withModifiers(() => {
|
|
10539
|
+
}, ["stop"]))
|
|
10540
|
+
}, [
|
|
10541
|
+
createBaseVNode("div", {
|
|
10542
|
+
class: normalizeClass(_ctx.$style.header)
|
|
10543
|
+
}, [
|
|
10544
|
+
createBaseVNode("div", _hoisted_1$5, [
|
|
10545
|
+
node2.value ? (openBlock(), createBlock(NodeTitle, {
|
|
10546
|
+
key: 0,
|
|
10547
|
+
class: "node-name",
|
|
10548
|
+
"model-value": node2.value.name,
|
|
10549
|
+
"node-type": _ctx.nodeType,
|
|
10550
|
+
"read-only": isReadOnly.value,
|
|
10551
|
+
"onUpdate:modelValue": nameChanged
|
|
10552
|
+
}, null, 8, ["model-value", "node-type", "read-only"])) : createCommentVNode("", true),
|
|
10553
|
+
isExecutable2.value ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
|
|
10554
|
+
!_ctx.blockUI && node2.value && nodeValid.value ? (openBlock(), createBlock(_sfc_main$P, {
|
|
10555
|
+
key: 0,
|
|
10556
|
+
"data-test-id": "node-execute-button",
|
|
10557
|
+
"node-name": node2.value.name,
|
|
10558
|
+
disabled: outputPanelEditMode.value.enabled && !isTriggerNode.value,
|
|
10559
|
+
tooltip: executeButtonTooltip.value,
|
|
10560
|
+
size: "small",
|
|
10561
|
+
"telemetry-source": "parameters",
|
|
10562
|
+
onExecute: onNodeExecute,
|
|
10563
|
+
onStopExecution,
|
|
10564
|
+
onValueChanged: valueChanged
|
|
10565
|
+
}, null, 8, ["node-name", "disabled", "tooltip"])) : createCommentVNode("", true)
|
|
10566
|
+
])) : createCommentVNode("", true)
|
|
10567
|
+
]),
|
|
10568
|
+
node2.value && nodeValid.value ? (openBlock(), createBlock(_sfc_main$u, {
|
|
10569
|
+
key: 0,
|
|
10570
|
+
"model-value": openPanel.value,
|
|
10571
|
+
"node-type": _ctx.nodeType,
|
|
10572
|
+
"push-ref": _ctx.pushRef,
|
|
10573
|
+
"onUpdate:modelValue": onTabSelect
|
|
10574
|
+
}, null, 8, ["model-value", "node-type", "push-ref"])) : createCommentVNode("", true)
|
|
10575
|
+
], 2),
|
|
10576
|
+
node2.value && !nodeValid.value ? (openBlock(), createElementBlock("div", _hoisted_3$1, [
|
|
10577
|
+
createBaseVNode("p", {
|
|
10578
|
+
class: normalizeClass(_ctx.$style.warningIcon)
|
|
10579
|
+
}, [
|
|
10580
|
+
createVNode(_component_font_awesome_icon, { icon: "exclamation-triangle" })
|
|
10581
|
+
], 2),
|
|
10582
|
+
createBaseVNode("div", _hoisted_4, [
|
|
10583
|
+
createVNode(_component_n8n_text, {
|
|
10584
|
+
size: "large",
|
|
10585
|
+
color: "text-dark",
|
|
10586
|
+
bold: ""
|
|
10587
|
+
}, {
|
|
10588
|
+
default: withCtx(() => [
|
|
10589
|
+
createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.communityNodeUnknown.title")), 1)
|
|
10590
|
+
]),
|
|
10591
|
+
_: 1
|
|
10592
|
+
})
|
|
10593
|
+
]),
|
|
10594
|
+
isCommunityNode.value ? (openBlock(), createElementBlock("div", {
|
|
10595
|
+
key: 0,
|
|
10596
|
+
class: normalizeClass(_ctx.$style.descriptionContainer)
|
|
10597
|
+
}, [
|
|
10598
|
+
createBaseVNode("div", _hoisted_5, [
|
|
10599
|
+
createVNode(_component_i18n_t, {
|
|
10600
|
+
keypath: "nodeSettings.communityNodeUnknown.description",
|
|
10601
|
+
tag: "span",
|
|
10602
|
+
onClick: onMissingNodeTextClick
|
|
10603
|
+
}, {
|
|
10604
|
+
action: withCtx(() => [
|
|
10605
|
+
createBaseVNode("a", {
|
|
10606
|
+
href: `https://www.npmjs.com/package/${node2.value.type.split(".")[0]}`,
|
|
10607
|
+
target: "_blank"
|
|
10608
|
+
}, toDisplayString(node2.value.type.split(".")[0]), 9, _hoisted_6)
|
|
10609
|
+
]),
|
|
10610
|
+
_: 1
|
|
10611
|
+
})
|
|
10612
|
+
]),
|
|
10613
|
+
createVNode(_component_n8n_link, {
|
|
10614
|
+
to: unref(COMMUNITY_NODES_INSTALLATION_DOCS_URL),
|
|
10615
|
+
onClick: onMissingNodeLearnMoreLinkClick
|
|
10616
|
+
}, {
|
|
10617
|
+
default: withCtx(() => [
|
|
10618
|
+
createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.communityNodeUnknown.installLink.text")), 1)
|
|
10619
|
+
]),
|
|
10620
|
+
_: 1
|
|
10621
|
+
}, 8, ["to"])
|
|
10622
|
+
], 2)) : (openBlock(), createBlock(_component_i18n_t, {
|
|
10623
|
+
key: 1,
|
|
10624
|
+
keypath: "nodeSettings.nodeTypeUnknown.description",
|
|
10625
|
+
tag: "span"
|
|
10626
|
+
}, {
|
|
10627
|
+
action: withCtx(() => [
|
|
10628
|
+
createBaseVNode("a", {
|
|
10629
|
+
href: unref(CUSTOM_NODES_DOCS_URL),
|
|
10630
|
+
target: "_blank",
|
|
10631
|
+
textContent: toDisplayString(unref(i18n).baseText("nodeSettings.nodeTypeUnknown.description.customNode"))
|
|
10632
|
+
}, null, 8, _hoisted_7)
|
|
10633
|
+
]),
|
|
10634
|
+
_: 1
|
|
10635
|
+
}))
|
|
10636
|
+
])) : createCommentVNode("", true),
|
|
10637
|
+
node2.value && nodeValid.value ? (openBlock(), createElementBlock("div", _hoisted_8, [
|
|
10638
|
+
hasForeignCredential.value && !isHomeProjectTeam.value ? (openBlock(), createBlock(_component_n8n_notice, {
|
|
10639
|
+
key: 0,
|
|
10640
|
+
content: unref(i18n).baseText("nodeSettings.hasForeignCredential", {
|
|
10641
|
+
interpolate: { owner: credentialOwnerName.value }
|
|
10642
|
+
})
|
|
10643
|
+
}, null, 8, ["content"])) : createCommentVNode("", true),
|
|
10644
|
+
createVNode(_sfc_main$r),
|
|
10645
|
+
withDirectives(createBaseVNode("div", null, [
|
|
10646
|
+
createVNode(NodeWebhooks, {
|
|
10647
|
+
node: node2.value,
|
|
10648
|
+
"node-type-description": _ctx.nodeType
|
|
10649
|
+
}, null, 8, ["node", "node-type-description"]),
|
|
10650
|
+
nodeValuesInitialized.value ? (openBlock(), createBlock(_sfc_main$Q, {
|
|
10651
|
+
key: 0,
|
|
10652
|
+
parameters: parametersNoneSetting.value,
|
|
10653
|
+
"hide-delete": true,
|
|
10654
|
+
"node-values": nodeValues.value,
|
|
10655
|
+
"is-read-only": isReadOnly.value,
|
|
10656
|
+
"hidden-issues-inputs": hiddenIssuesInputs.value,
|
|
10657
|
+
path: "parameters",
|
|
10658
|
+
onValueChanged: valueChanged,
|
|
10659
|
+
onActivate: onWorkflowActivate,
|
|
10660
|
+
onParameterBlur
|
|
10661
|
+
}, {
|
|
10662
|
+
default: withCtx(() => [
|
|
10663
|
+
createVNode(NodeCredentials, {
|
|
10664
|
+
node: node2.value,
|
|
10665
|
+
readonly: isReadOnly.value,
|
|
10666
|
+
"show-all": true,
|
|
10667
|
+
"hide-issues": hiddenIssuesInputs.value.includes("credentials"),
|
|
10668
|
+
onCredentialSelected: credentialSelected,
|
|
10669
|
+
onValueChanged: valueChanged,
|
|
10670
|
+
onBlur: onParameterBlur
|
|
10671
|
+
}, null, 8, ["node", "readonly", "hide-issues"])
|
|
10672
|
+
]),
|
|
10673
|
+
_: 1
|
|
10674
|
+
}, 8, ["parameters", "node-values", "is-read-only", "hidden-issues-inputs"])) : createCommentVNode("", true),
|
|
10675
|
+
showNoParametersNotice.value ? (openBlock(), createElementBlock("div", _hoisted_9, [
|
|
10676
|
+
createVNode(_component_n8n_text, null, {
|
|
10677
|
+
default: withCtx(() => [
|
|
10678
|
+
createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.thisNodeDoesNotHaveAnyParameters")), 1)
|
|
10679
|
+
]),
|
|
10680
|
+
_: 1
|
|
10681
|
+
})
|
|
10682
|
+
])) : createCommentVNode("", true),
|
|
10683
|
+
unref(nodeHelpers).isCustomApiCallSelected(nodeValues.value) ? (openBlock(), createElementBlock("div", _hoisted_10, [
|
|
10684
|
+
createVNode(_component_n8n_notice, {
|
|
10685
|
+
content: unref(i18n).baseText("nodeSettings.useTheHttpRequestNode", {
|
|
10686
|
+
interpolate: { nodeTypeDisplayName: _ctx.nodeType?.displayName ?? "" }
|
|
10687
|
+
})
|
|
10688
|
+
}, null, 8, ["content"])
|
|
10689
|
+
])) : createCommentVNode("", true)
|
|
10690
|
+
], 512), [
|
|
10691
|
+
[vShow, openPanel.value === "params"]
|
|
10692
|
+
]),
|
|
10693
|
+
withDirectives(createBaseVNode("div", null, [
|
|
10694
|
+
createVNode(_sfc_main$Q, {
|
|
10695
|
+
parameters: parametersSetting.value,
|
|
10696
|
+
"node-values": nodeValues.value,
|
|
10697
|
+
"is-read-only": isReadOnly.value,
|
|
10698
|
+
"hide-delete": true,
|
|
10699
|
+
"hidden-issues-inputs": hiddenIssuesInputs.value,
|
|
10700
|
+
path: "parameters",
|
|
10701
|
+
onValueChanged: valueChanged,
|
|
10702
|
+
onParameterBlur
|
|
10703
|
+
}, null, 8, ["parameters", "node-values", "is-read-only", "hidden-issues-inputs"]),
|
|
10704
|
+
createVNode(_sfc_main$Q, {
|
|
10705
|
+
parameters: nodeSettings.value,
|
|
10706
|
+
"hide-delete": true,
|
|
10707
|
+
"node-values": nodeValues.value,
|
|
10708
|
+
"is-read-only": isReadOnly.value,
|
|
10709
|
+
"hidden-issues-inputs": hiddenIssuesInputs.value,
|
|
10710
|
+
path: "",
|
|
10711
|
+
onValueChanged: valueChanged,
|
|
10712
|
+
onParameterBlur
|
|
10713
|
+
}, null, 8, ["parameters", "node-values", "is-read-only", "hidden-issues-inputs"]),
|
|
10714
|
+
createBaseVNode("div", _hoisted_11, [
|
|
10715
|
+
createTextVNode(toDisplayString(unref(i18n).baseText("nodeSettings.nodeVersion", {
|
|
10716
|
+
interpolate: {
|
|
10717
|
+
node: _ctx.nodeType?.displayName,
|
|
10718
|
+
version: (node2.value.typeVersion ?? latestVersion.value).toString()
|
|
10719
|
+
}
|
|
10720
|
+
})) + " ", 1),
|
|
10721
|
+
createBaseVNode("span", null, "(" + toDisplayString(nodeVersionTag.value) + ")", 1)
|
|
10722
|
+
])
|
|
10723
|
+
], 512), [
|
|
10724
|
+
[vShow, openPanel.value === "settings"]
|
|
10725
|
+
])
|
|
10726
|
+
])) : createCommentVNode("", true),
|
|
10727
|
+
node2.value ? (openBlock(), createBlock(NDVSubConnections, {
|
|
10728
|
+
key: 2,
|
|
10729
|
+
ref_key: "subConnections",
|
|
10730
|
+
ref: subConnections,
|
|
10731
|
+
"root-node": node2.value,
|
|
10732
|
+
onSwitchSelectedNode,
|
|
10733
|
+
onOpenConnectionNodeCreator
|
|
10734
|
+
}, null, 8, ["root-node"])) : createCommentVNode("", true),
|
|
10735
|
+
createVNode(_component_n8n_block_ui, { show: _ctx.blockUI }, null, 8, ["show"])
|
|
10736
|
+
], 34);
|
|
10737
|
+
};
|
|
10738
|
+
}
|
|
10739
|
+
});
|
|
10740
|
+
const header = "_header_13al3_123";
|
|
10741
|
+
const warningIcon = "_warningIcon_13al3_127";
|
|
10742
|
+
const descriptionContainer = "_descriptionContainer_13al3_132";
|
|
10743
|
+
const style0$j = {
|
|
10744
|
+
header,
|
|
10745
|
+
warningIcon,
|
|
10746
|
+
descriptionContainer
|
|
10747
|
+
};
|
|
10748
|
+
const cssModules$j = {
|
|
10749
|
+
"$style": style0$j
|
|
10750
|
+
};
|
|
10751
|
+
const NodeSettings = /* @__PURE__ */ _export_sfc$1(_sfc_main$q, [["__cssModules", cssModules$j], ["__scopeId", "data-v-114fd48f"]]);
|
|
10752
|
+
const _sfc_main$p = /* @__PURE__ */ defineComponent({
|
|
10753
|
+
__name: "CanvasNodeNodeSettings",
|
|
10754
|
+
props: {
|
|
10755
|
+
nodeId: {}
|
|
10756
|
+
},
|
|
10757
|
+
setup(__props) {
|
|
10758
|
+
const settingsEventBus = createEventBus();
|
|
10759
|
+
const nodeTypesStore = useNodeTypesStore();
|
|
10760
|
+
const workflowsStore = useWorkflowsStore();
|
|
10761
|
+
const activeNode = computed(() => workflowsStore.getNodeById(__props.nodeId));
|
|
10762
|
+
const activeNodeType = computed(() => {
|
|
10763
|
+
if (activeNode.value) {
|
|
10764
|
+
return nodeTypesStore.getNodeType(activeNode.value.type, activeNode.value.typeVersion);
|
|
10765
|
+
}
|
|
10766
|
+
return null;
|
|
10767
|
+
});
|
|
10768
|
+
return (_ctx, _cache) => {
|
|
10769
|
+
return openBlock(), createBlock(NodeSettings, {
|
|
10770
|
+
"event-bus": unref(settingsEventBus),
|
|
10771
|
+
dragging: false,
|
|
10772
|
+
"active-node": activeNode.value,
|
|
10773
|
+
"node-type": activeNodeType.value,
|
|
10774
|
+
"push-ref": "",
|
|
10775
|
+
"foreign-credentials": [],
|
|
10776
|
+
"read-only": false,
|
|
10777
|
+
"block-u-i": false,
|
|
10778
|
+
executable: false,
|
|
10779
|
+
"input-size": 0
|
|
10780
|
+
}, null, 8, ["event-bus", "active-node", "node-type"]);
|
|
10781
|
+
};
|
|
10782
|
+
}
|
|
10783
|
+
});
|
|
10784
|
+
const _hoisted_1$4 = ["data-test-id"];
|
|
10785
|
+
const _sfc_main$o = /* @__PURE__ */ defineComponent({
|
|
10786
|
+
__name: "CanvasNodeDefault",
|
|
10787
|
+
emits: ["open:contextmenu", "activate"],
|
|
10788
|
+
setup(__props, { emit: __emit }) {
|
|
10789
|
+
const $style = useCssModule();
|
|
10790
|
+
const i18n = useI18n();
|
|
10791
|
+
const emit = __emit;
|
|
10792
|
+
const { initialized, viewport } = useCanvas();
|
|
10793
|
+
const {
|
|
10794
|
+
id: id2,
|
|
10795
|
+
label: label2,
|
|
10796
|
+
subtitle: subtitle2,
|
|
10797
|
+
inputs: inputs2,
|
|
10798
|
+
outputs,
|
|
10799
|
+
connections: connections2,
|
|
10800
|
+
isDisabled,
|
|
10801
|
+
isSelected,
|
|
10802
|
+
hasPinnedData,
|
|
10803
|
+
executionStatus,
|
|
10804
|
+
executionWaiting,
|
|
10805
|
+
executionWaitingForNext,
|
|
10806
|
+
executionRunning,
|
|
10807
|
+
hasRunData,
|
|
10808
|
+
hasIssues: hasIssues2,
|
|
10809
|
+
render: render2
|
|
10810
|
+
} = useCanvasNode();
|
|
10811
|
+
const {
|
|
10812
|
+
mainOutputs,
|
|
10813
|
+
mainOutputConnections,
|
|
10814
|
+
mainInputs,
|
|
10815
|
+
mainInputConnections,
|
|
10816
|
+
nonMainInputs
|
|
10817
|
+
} = useNodeConnections({
|
|
10818
|
+
inputs: inputs2,
|
|
10819
|
+
outputs,
|
|
10820
|
+
connections: connections2
|
|
10821
|
+
});
|
|
10822
|
+
const renderOptions = computed(() => render2.value.options);
|
|
10823
|
+
const nodeSettingsZoom = useNodeSettingsInCanvas();
|
|
10824
|
+
const classes = computed(() => {
|
|
10825
|
+
return {
|
|
10826
|
+
[$style.node]: true,
|
|
10827
|
+
[$style.selected]: isSelected.value,
|
|
10828
|
+
[$style.disabled]: isDisabled.value,
|
|
10829
|
+
[$style.success]: hasRunData.value,
|
|
10830
|
+
[$style.error]: hasIssues2.value,
|
|
10831
|
+
[$style.pinned]: hasPinnedData.value,
|
|
10832
|
+
[$style.waiting]: executionWaiting.value ?? executionStatus.value === "waiting",
|
|
10833
|
+
[$style.running]: executionRunning.value || executionWaitingForNext.value,
|
|
10834
|
+
[$style.configurable]: renderOptions.value.configurable,
|
|
10835
|
+
[$style.configuration]: renderOptions.value.configuration,
|
|
10836
|
+
[$style.trigger]: renderOptions.value.trigger,
|
|
10837
|
+
[$style.warning]: renderOptions.value.dirtiness !== void 0,
|
|
10838
|
+
[$style.settingsView]: nodeSettingsZoom.value !== void 0
|
|
10839
|
+
};
|
|
10840
|
+
});
|
|
10841
|
+
const styles = computed(() => {
|
|
10842
|
+
const stylesObject = {};
|
|
10843
|
+
if (renderOptions.value.configurable) {
|
|
10844
|
+
let spacerCount = 0;
|
|
10845
|
+
stylesObject["--configurable-node--input-count"] = nonMainInputs.value.length + spacerCount;
|
|
10846
|
+
}
|
|
10847
|
+
if (nodeSettingsZoom.value !== void 0) {
|
|
10848
|
+
stylesObject["--zoom"] = nodeSettingsZoom.value;
|
|
10849
|
+
}
|
|
10850
|
+
stylesObject["--canvas-node--main-input-count"] = mainInputs.value.length;
|
|
10851
|
+
stylesObject["--canvas-node--main-output-count"] = mainOutputs.value.length;
|
|
10852
|
+
return stylesObject;
|
|
10853
|
+
});
|
|
10854
|
+
const dataTestId = computed(() => {
|
|
10855
|
+
let type = "default";
|
|
10856
|
+
if (renderOptions.value.configurable) {
|
|
10857
|
+
type = "configurable";
|
|
10858
|
+
} else if (renderOptions.value.configuration) {
|
|
10859
|
+
type = "configuration";
|
|
10860
|
+
} else if (renderOptions.value.trigger) {
|
|
10861
|
+
type = "trigger";
|
|
10862
|
+
}
|
|
10863
|
+
return `canvas-${type}-node`;
|
|
10864
|
+
});
|
|
10865
|
+
const isStrikethroughVisible = computed(() => {
|
|
10866
|
+
const isSingleMainInputNode = mainInputs.value.length === 1 && mainInputConnections.value.length <= 1;
|
|
10867
|
+
const isSingleMainOutputNode = mainOutputs.value.length === 1 && mainOutputConnections.value.length <= 1;
|
|
10868
|
+
return isDisabled.value && isSingleMainInputNode && isSingleMainOutputNode;
|
|
10869
|
+
});
|
|
10870
|
+
const iconSize = computed(() => renderOptions.value.configuration ? 30 : 40);
|
|
10871
|
+
const iconSource = computed(() => renderOptions.value.icon);
|
|
10872
|
+
const showTooltip = ref(false);
|
|
10873
|
+
watch(initialized, () => {
|
|
10874
|
+
if (initialized.value) {
|
|
10875
|
+
showTooltip.value = true;
|
|
10876
|
+
}
|
|
10877
|
+
});
|
|
10878
|
+
watch(viewport, () => {
|
|
10879
|
+
showTooltip.value = false;
|
|
10880
|
+
setTimeout(() => {
|
|
10881
|
+
showTooltip.value = true;
|
|
10882
|
+
}, 0);
|
|
10883
|
+
});
|
|
10884
|
+
function openContextMenu(event) {
|
|
10885
|
+
emit("open:contextmenu", event);
|
|
10886
|
+
}
|
|
10887
|
+
function onActivate(event) {
|
|
10888
|
+
emit("activate", id2.value, event);
|
|
10889
|
+
}
|
|
10890
|
+
return (_ctx, _cache) => {
|
|
10891
|
+
const _component_CanvasNodeTooltip = __unplugin_components_0$3;
|
|
10892
|
+
const _component_NodeIcon = _sfc_main$O;
|
|
10893
|
+
const _component_CanvasNodeStatusIcons = __unplugin_components_2;
|
|
10894
|
+
const _component_CanvasNodeDisabledStrikeThrough = __unplugin_components_3;
|
|
10895
|
+
return openBlock(), createElementBlock("div", {
|
|
10896
|
+
class: normalizeClass(classes.value),
|
|
10897
|
+
style: normalizeStyle(styles.value),
|
|
10898
|
+
"data-test-id": dataTestId.value,
|
|
10899
|
+
onContextmenu: openContextMenu,
|
|
10900
|
+
onDblclick: withModifiers(onActivate, ["stop"])
|
|
10901
|
+
}, [
|
|
10902
|
+
unref(nodeSettingsZoom) !== void 0 ? (openBlock(), createBlock(_sfc_main$p, {
|
|
10903
|
+
key: 0,
|
|
10904
|
+
"node-id": unref(id2)
|
|
10905
|
+
}, null, 8, ["node-id"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
10906
|
+
renderOptions.value.tooltip ? (openBlock(), createBlock(_component_CanvasNodeTooltip, {
|
|
10907
|
+
key: 0,
|
|
10908
|
+
visible: showTooltip.value
|
|
10909
|
+
}, null, 8, ["visible"])) : createCommentVNode("", true),
|
|
10910
|
+
createVNode(_component_NodeIcon, {
|
|
10911
|
+
"icon-source": iconSource.value,
|
|
10912
|
+
size: iconSize.value,
|
|
10913
|
+
shrink: false,
|
|
10914
|
+
disabled: unref(isDisabled)
|
|
10915
|
+
}, null, 8, ["icon-source", "size", "disabled"]),
|
|
10916
|
+
!unref(isDisabled) ? (openBlock(), createBlock(_component_CanvasNodeStatusIcons, {
|
|
10917
|
+
key: 1,
|
|
10918
|
+
class: normalizeClass(unref($style).statusIcons)
|
|
10919
|
+
}, null, 8, ["class"])) : createCommentVNode("", true),
|
|
10920
|
+
isStrikethroughVisible.value ? (openBlock(), createBlock(_component_CanvasNodeDisabledStrikeThrough, { key: 2 })) : createCommentVNode("", true),
|
|
10921
|
+
createBaseVNode("div", {
|
|
10922
|
+
class: normalizeClass(unref($style).description)
|
|
10923
|
+
}, [
|
|
10924
|
+
unref(label2) ? (openBlock(), createElementBlock("div", {
|
|
10925
|
+
key: 0,
|
|
10926
|
+
class: normalizeClass(unref($style).label)
|
|
10927
|
+
}, toDisplayString(unref(label2)), 3)) : createCommentVNode("", true),
|
|
10928
|
+
unref(isDisabled) ? (openBlock(), createElementBlock("div", {
|
|
10929
|
+
key: 1,
|
|
10930
|
+
class: normalizeClass(unref($style).disabledLabel)
|
|
10931
|
+
}, " (" + toDisplayString(unref(i18n).baseText("node.disabled")) + ") ", 3)) : createCommentVNode("", true),
|
|
10932
|
+
unref(subtitle2) ? (openBlock(), createElementBlock("div", {
|
|
10933
|
+
key: 2,
|
|
10934
|
+
class: normalizeClass(unref($style).subtitle)
|
|
10935
|
+
}, toDisplayString(unref(subtitle2)), 3)) : createCommentVNode("", true)
|
|
10936
|
+
], 2)
|
|
10937
|
+
], 64))
|
|
10938
|
+
], 46, _hoisted_1$4);
|
|
10939
|
+
};
|
|
10940
|
+
}
|
|
10941
|
+
});
|
|
10942
|
+
const node = "_node_jt24t_123";
|
|
10943
|
+
const trigger$1 = "_trigger_jt24t_156";
|
|
10944
|
+
const settingsView = "_settingsView_jt24t_159";
|
|
10945
|
+
const configuration = "_configuration_jt24t_172";
|
|
10946
|
+
const statusIcons = "_statusIcons_jt24t_179";
|
|
10947
|
+
const configurable = "_configurable_jt24t_182";
|
|
10948
|
+
const description = "_description_jt24t_193";
|
|
10949
|
+
const label$5 = "_label_jt24t_203";
|
|
10950
|
+
const subtitle = "_subtitle_jt24t_206";
|
|
10951
|
+
const selected$1 = "_selected_jt24t_216";
|
|
10952
|
+
const success$1 = "_success_jt24t_219";
|
|
10953
|
+
const warning = "_warning_jt24t_222";
|
|
10954
|
+
const error = "_error_jt24t_225";
|
|
10955
|
+
const pinned = "_pinned_jt24t_228";
|
|
10956
|
+
const disabled$1 = "_disabled_jt24t_231";
|
|
10957
|
+
const running = "_running_jt24t_234";
|
|
10958
|
+
const waiting = "_waiting_jt24t_238";
|
|
10959
|
+
const disabledLabel = "_disabledLabel_jt24t_255";
|
|
10960
|
+
const style0$i = {
|
|
10961
|
+
node,
|
|
10962
|
+
trigger: trigger$1,
|
|
10963
|
+
settingsView,
|
|
10964
|
+
configuration,
|
|
10965
|
+
statusIcons,
|
|
10966
|
+
configurable,
|
|
10967
|
+
description,
|
|
10968
|
+
label: label$5,
|
|
10969
|
+
subtitle,
|
|
10970
|
+
selected: selected$1,
|
|
10971
|
+
success: success$1,
|
|
10972
|
+
warning,
|
|
10973
|
+
error,
|
|
10974
|
+
pinned,
|
|
10975
|
+
disabled: disabled$1,
|
|
10976
|
+
running,
|
|
10977
|
+
waiting,
|
|
10978
|
+
disabledLabel
|
|
10979
|
+
};
|
|
10980
|
+
const cssModules$i = {
|
|
10981
|
+
"$style": style0$i
|
|
10982
|
+
};
|
|
10983
|
+
const CanvasNodeDefault = /* @__PURE__ */ _export_sfc$1(_sfc_main$o, [["__cssModules", cssModules$i]]);
|
|
10984
|
+
var xhtml = "http://www.w3.org/1999/xhtml";
|
|
10985
|
+
const namespaces = {
|
|
10986
|
+
svg: "http://www.w3.org/2000/svg",
|
|
10987
|
+
xhtml,
|
|
10988
|
+
xlink: "http://www.w3.org/1999/xlink",
|
|
10989
|
+
xml: "http://www.w3.org/XML/1998/namespace",
|
|
10990
|
+
xmlns: "http://www.w3.org/2000/xmlns/"
|
|
10991
|
+
};
|
|
10992
|
+
function namespace(name) {
|
|
10993
|
+
var prefix = name += "", i = prefix.indexOf(":");
|
|
10994
|
+
if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns")
|
|
10995
|
+
name = name.slice(i + 1);
|
|
10996
|
+
return namespaces.hasOwnProperty(prefix) ? { space: namespaces[prefix], local: name } : name;
|
|
10997
|
+
}
|
|
10998
|
+
function creatorInherit(name) {
|
|
10999
|
+
return function() {
|
|
11000
|
+
var document2 = this.ownerDocument, uri = this.namespaceURI;
|
|
11001
|
+
return uri === xhtml && document2.documentElement.namespaceURI === xhtml ? document2.createElement(name) : document2.createElementNS(uri, name);
|
|
11002
|
+
};
|
|
11003
|
+
}
|
|
11004
|
+
function creatorFixed(fullname) {
|
|
11005
|
+
return function() {
|
|
11006
|
+
return this.ownerDocument.createElementNS(fullname.space, fullname.local);
|
|
11007
|
+
};
|
|
8902
11008
|
}
|
|
8903
11009
|
function creator(name) {
|
|
8904
11010
|
var fullname = namespace(name);
|
|
@@ -10353,14 +12459,14 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
|
|
|
10353
12459
|
});
|
|
10354
12460
|
const sticky = "_sticky_1jyj2_123";
|
|
10355
12461
|
const selected = "_selected_1jyj2_130";
|
|
10356
|
-
const style0$
|
|
12462
|
+
const style0$h = {
|
|
10357
12463
|
sticky,
|
|
10358
12464
|
selected
|
|
10359
12465
|
};
|
|
10360
|
-
const cssModules$
|
|
10361
|
-
"$style": style0$
|
|
12466
|
+
const cssModules$h = {
|
|
12467
|
+
"$style": style0$h
|
|
10362
12468
|
};
|
|
10363
|
-
const CanvasNodeStickyNote = /* @__PURE__ */ _export_sfc$1(_sfc_main$m, [["__cssModules", cssModules$
|
|
12469
|
+
const CanvasNodeStickyNote = /* @__PURE__ */ _export_sfc$1(_sfc_main$m, [["__cssModules", cssModules$h]]);
|
|
10364
12470
|
const _hoisted_1$3 = ["textContent"];
|
|
10365
12471
|
const _sfc_main$l = /* @__PURE__ */ defineComponent({
|
|
10366
12472
|
__name: "CanvasNodeAddNodes",
|
|
@@ -10428,17 +12534,17 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
|
|
|
10428
12534
|
}
|
|
10429
12535
|
});
|
|
10430
12536
|
const addNodes = "_addNodes_1qfrq_123";
|
|
10431
|
-
const button = "_button_1qfrq_131";
|
|
12537
|
+
const button$1 = "_button_1qfrq_131";
|
|
10432
12538
|
const label$4 = "_label_1qfrq_152";
|
|
10433
|
-
const style0$
|
|
12539
|
+
const style0$g = {
|
|
10434
12540
|
addNodes,
|
|
10435
|
-
button,
|
|
12541
|
+
button: button$1,
|
|
10436
12542
|
label: label$4
|
|
10437
12543
|
};
|
|
10438
|
-
const cssModules$
|
|
10439
|
-
"$style": style0$
|
|
12544
|
+
const cssModules$g = {
|
|
12545
|
+
"$style": style0$g
|
|
10440
12546
|
};
|
|
10441
|
-
const CanvasNodeAddNodes = /* @__PURE__ */ _export_sfc$1(_sfc_main$l, [["__cssModules", cssModules$
|
|
12547
|
+
const CanvasNodeAddNodes = /* @__PURE__ */ _export_sfc$1(_sfc_main$l, [["__cssModules", cssModules$g]]);
|
|
10442
12548
|
const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
10443
12549
|
__name: "CanvasNodeAIPrompt",
|
|
10444
12550
|
emits: ["delete"],
|
|
@@ -10520,7 +12626,7 @@ const form_textarea = "_form_textarea_145fr_153";
|
|
|
10520
12626
|
const form_footer = "_form_footer_145fr_170";
|
|
10521
12627
|
const or = "_or_145fr_176";
|
|
10522
12628
|
const or_text = "_or_text_145fr_185";
|
|
10523
|
-
const style0$
|
|
12629
|
+
const style0$f = {
|
|
10524
12630
|
container: container$1,
|
|
10525
12631
|
promptContainer,
|
|
10526
12632
|
focused,
|
|
@@ -10530,10 +12636,10 @@ const style0$e = {
|
|
|
10530
12636
|
or,
|
|
10531
12637
|
or_text
|
|
10532
12638
|
};
|
|
10533
|
-
const cssModules$
|
|
10534
|
-
"$style": style0$
|
|
12639
|
+
const cssModules$f = {
|
|
12640
|
+
"$style": style0$f
|
|
10535
12641
|
};
|
|
10536
|
-
const CanvasNodeAIPrompt = /* @__PURE__ */ _export_sfc$1(_sfc_main$k, [["__cssModules", cssModules$
|
|
12642
|
+
const CanvasNodeAIPrompt = /* @__PURE__ */ _export_sfc$1(_sfc_main$k, [["__cssModules", cssModules$f]]);
|
|
10537
12643
|
const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
10538
12644
|
__name: "CanvasNodeRenderer",
|
|
10539
12645
|
setup(__props) {
|
|
@@ -10577,13 +12683,13 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|
|
10577
12683
|
}
|
|
10578
12684
|
});
|
|
10579
12685
|
const rectangle = "_rectangle_rd2w6_123";
|
|
10580
|
-
const style0$
|
|
12686
|
+
const style0$e = {
|
|
10581
12687
|
rectangle
|
|
10582
12688
|
};
|
|
10583
|
-
const cssModules$
|
|
10584
|
-
"$style": style0$
|
|
12689
|
+
const cssModules$e = {
|
|
12690
|
+
"$style": style0$e
|
|
10585
12691
|
};
|
|
10586
|
-
const __unplugin_components_0$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$i, [["__cssModules", cssModules$
|
|
12692
|
+
const __unplugin_components_0$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$i, [["__cssModules", cssModules$e]]);
|
|
10587
12693
|
function useCanvasNodeHandle() {
|
|
10588
12694
|
const handle2 = inject(CanvasNodeHandleKey);
|
|
10589
12695
|
const label2 = computed(() => handle2?.label.value ?? "");
|
|
@@ -10636,15 +12742,15 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
|
10636
12742
|
const handle$4 = "_handle_1v80z_123";
|
|
10637
12743
|
const label$3 = "_label_1v80z_130";
|
|
10638
12744
|
const required$3 = "_required_1v80z_143";
|
|
10639
|
-
const style0$
|
|
12745
|
+
const style0$d = {
|
|
10640
12746
|
handle: handle$4,
|
|
10641
12747
|
label: label$3,
|
|
10642
12748
|
required: required$3
|
|
10643
12749
|
};
|
|
10644
|
-
const cssModules$
|
|
10645
|
-
"$style": style0$
|
|
12750
|
+
const cssModules$d = {
|
|
12751
|
+
"$style": style0$d
|
|
10646
12752
|
};
|
|
10647
|
-
const CanvasHandleMainInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$h, [["__cssModules", cssModules$
|
|
12753
|
+
const CanvasHandleMainInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$h, [["__cssModules", cssModules$d]]);
|
|
10648
12754
|
const _hoisted_1$2 = ["viewBox"];
|
|
10649
12755
|
const _hoisted_2$1 = ["x1", "y1", "x2", "y2"];
|
|
10650
12756
|
const _hoisted_3 = ["transform"];
|
|
@@ -10774,17 +12880,17 @@ const secondary = "_secondary_hyidj_126";
|
|
|
10774
12880
|
const line = "_line_hyidj_126";
|
|
10775
12881
|
const plus$1 = "_plus_hyidj_129";
|
|
10776
12882
|
const success = "_success_hyidj_135";
|
|
10777
|
-
const style0$
|
|
12883
|
+
const style0$c = {
|
|
10778
12884
|
wrapper: wrapper$1,
|
|
10779
12885
|
secondary,
|
|
10780
12886
|
line,
|
|
10781
12887
|
plus: plus$1,
|
|
10782
12888
|
success
|
|
10783
12889
|
};
|
|
10784
|
-
const cssModules$
|
|
10785
|
-
"$style": style0$
|
|
12890
|
+
const cssModules$c = {
|
|
12891
|
+
"$style": style0$c
|
|
10786
12892
|
};
|
|
10787
|
-
const CanvasHandlePlus = /* @__PURE__ */ _export_sfc$1(_sfc_main$g, [["__cssModules", cssModules$
|
|
12893
|
+
const CanvasHandlePlus = /* @__PURE__ */ _export_sfc$1(_sfc_main$g, [["__cssModules", cssModules$c]]);
|
|
10788
12894
|
const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
10789
12895
|
__name: "CanvasHandleDot",
|
|
10790
12896
|
props: {
|
|
@@ -10799,13 +12905,13 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
10799
12905
|
}
|
|
10800
12906
|
});
|
|
10801
12907
|
const dot = "_dot_gdjps_123";
|
|
10802
|
-
const style0$
|
|
12908
|
+
const style0$b = {
|
|
10803
12909
|
dot
|
|
10804
12910
|
};
|
|
10805
|
-
const cssModules$
|
|
10806
|
-
"$style": style0$
|
|
12911
|
+
const cssModules$b = {
|
|
12912
|
+
"$style": style0$b
|
|
10807
12913
|
};
|
|
10808
|
-
const __unplugin_components_0$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$f, [["__cssModules", cssModules$
|
|
12914
|
+
const __unplugin_components_0$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$f, [["__cssModules", cssModules$b]]);
|
|
10809
12915
|
const handleClasses$2 = "source";
|
|
10810
12916
|
const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
10811
12917
|
__name: "CanvasHandleMainOutput",
|
|
@@ -10899,7 +13005,7 @@ const label$2 = "_label_1u904_129";
|
|
|
10899
13005
|
const required$2 = "_required_1u904_143";
|
|
10900
13006
|
const outputLabel = "_outputLabel_1u904_148";
|
|
10901
13007
|
const runDataLabel = "_runDataLabel_1u904_156";
|
|
10902
|
-
const style0$
|
|
13008
|
+
const style0$a = {
|
|
10903
13009
|
handle: handle$3,
|
|
10904
13010
|
connected,
|
|
10905
13011
|
label: label$2,
|
|
@@ -10907,10 +13013,10 @@ const style0$9 = {
|
|
|
10907
13013
|
outputLabel,
|
|
10908
13014
|
runDataLabel
|
|
10909
13015
|
};
|
|
10910
|
-
const cssModules$
|
|
10911
|
-
"$style": style0$
|
|
13016
|
+
const cssModules$a = {
|
|
13017
|
+
"$style": style0$a
|
|
10912
13018
|
};
|
|
10913
|
-
const CanvasHandleMainOutput = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["__cssModules", cssModules$
|
|
13019
|
+
const CanvasHandleMainOutput = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["__cssModules", cssModules$a]]);
|
|
10914
13020
|
const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
10915
13021
|
__name: "CanvasHandleDiamond",
|
|
10916
13022
|
props: {
|
|
@@ -10925,13 +13031,13 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
10925
13031
|
}
|
|
10926
13032
|
});
|
|
10927
13033
|
const diamond = "_diamond_kuwdo_123";
|
|
10928
|
-
const style0$
|
|
13034
|
+
const style0$9 = {
|
|
10929
13035
|
diamond
|
|
10930
13036
|
};
|
|
10931
|
-
const cssModules$
|
|
10932
|
-
"$style": style0$
|
|
13037
|
+
const cssModules$9 = {
|
|
13038
|
+
"$style": style0$9
|
|
10933
13039
|
};
|
|
10934
|
-
const __unplugin_components_0 = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["__cssModules", cssModules$
|
|
13040
|
+
const __unplugin_components_0 = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["__cssModules", cssModules$9]]);
|
|
10935
13041
|
const handleClasses$1 = "target";
|
|
10936
13042
|
const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
10937
13043
|
__name: "CanvasHandleNonMainInput",
|
|
@@ -10993,15 +13099,15 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
10993
13099
|
const handle$2 = "_handle_3v1rt_123";
|
|
10994
13100
|
const label$1 = "_label_3v1rt_130";
|
|
10995
13101
|
const required$1 = "_required_3v1rt_143";
|
|
10996
|
-
const style0$
|
|
13102
|
+
const style0$8 = {
|
|
10997
13103
|
handle: handle$2,
|
|
10998
13104
|
label: label$1,
|
|
10999
13105
|
required: required$1
|
|
11000
13106
|
};
|
|
11001
|
-
const cssModules$
|
|
11002
|
-
"$style": style0$
|
|
13107
|
+
const cssModules$8 = {
|
|
13108
|
+
"$style": style0$8
|
|
11003
13109
|
};
|
|
11004
|
-
const CanvasHandleNonMainInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["__cssModules", cssModules$
|
|
13110
|
+
const CanvasHandleNonMainInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["__cssModules", cssModules$8]]);
|
|
11005
13111
|
const handleClasses = "source";
|
|
11006
13112
|
const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
11007
13113
|
__name: "CanvasHandleNonMainOutput",
|
|
@@ -11030,16 +13136,16 @@ const handle$1 = "_handle_1x1ua_123";
|
|
|
11030
13136
|
const label = "_label_1x1ua_130";
|
|
11031
13137
|
const required = "_required_1x1ua_142";
|
|
11032
13138
|
const plus = "_plus_1x1ua_147";
|
|
11033
|
-
const style0$
|
|
13139
|
+
const style0$7 = {
|
|
11034
13140
|
handle: handle$1,
|
|
11035
13141
|
label,
|
|
11036
13142
|
required,
|
|
11037
13143
|
plus
|
|
11038
13144
|
};
|
|
11039
|
-
const cssModules$
|
|
11040
|
-
"$style": style0$
|
|
13145
|
+
const cssModules$7 = {
|
|
13146
|
+
"$style": style0$7
|
|
11041
13147
|
};
|
|
11042
|
-
const CanvasHandleNonMainOutput = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["__cssModules", cssModules$
|
|
13148
|
+
const CanvasHandleNonMainOutput = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["__cssModules", cssModules$7]]);
|
|
11043
13149
|
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
11044
13150
|
...{
|
|
11045
13151
|
inheritAttrs: false
|
|
@@ -11161,7 +13267,7 @@ const top = "_top_5ceyz_140";
|
|
|
11161
13267
|
const right = "_right_5ceyz_144";
|
|
11162
13268
|
const left = "_left_5ceyz_148";
|
|
11163
13269
|
const bottom = "_bottom_5ceyz_152";
|
|
11164
|
-
const style0$
|
|
13270
|
+
const style0$6 = {
|
|
11165
13271
|
handle,
|
|
11166
13272
|
inputs,
|
|
11167
13273
|
main,
|
|
@@ -11171,10 +13277,10 @@ const style0$5 = {
|
|
|
11171
13277
|
left,
|
|
11172
13278
|
bottom
|
|
11173
13279
|
};
|
|
11174
|
-
const cssModules$
|
|
11175
|
-
"$style": style0$
|
|
13280
|
+
const cssModules$6 = {
|
|
13281
|
+
"$style": style0$6
|
|
11176
13282
|
};
|
|
11177
|
-
const CanvasHandleRenderer = /* @__PURE__ */ _export_sfc$1(_sfc_main$a, [["__cssModules", cssModules$
|
|
13283
|
+
const CanvasHandleRenderer = /* @__PURE__ */ _export_sfc$1(_sfc_main$a, [["__cssModules", cssModules$6]]);
|
|
11178
13284
|
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
11179
13285
|
__name: "CanvasNodeTrigger",
|
|
11180
13286
|
props: {
|
|
@@ -11198,17 +13304,21 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
11198
13304
|
const workflowsStore = useWorkflowsStore();
|
|
11199
13305
|
const logsStore = useLogsStore();
|
|
11200
13306
|
const { runEntireWorkflow } = useRunWorkflow({ router });
|
|
11201
|
-
const { startChat } = useCanvasOperations(
|
|
13307
|
+
const { startChat } = useCanvasOperations();
|
|
11202
13308
|
const isChatOpen = computed(() => logsStore.isOpen);
|
|
11203
13309
|
const isExecuting = computed(() => workflowsStore.isWorkflowRunning);
|
|
11204
13310
|
const testId = computed(() => `execute-workflow-button-${__props.name}`);
|
|
13311
|
+
async function handleClickExecute() {
|
|
13312
|
+
workflowsStore.setSelectedTriggerNodeName(__props.name);
|
|
13313
|
+
await runEntireWorkflow("node", __props.name);
|
|
13314
|
+
}
|
|
11205
13315
|
return (_ctx, _cache) => {
|
|
11206
13316
|
const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
|
|
11207
13317
|
return openBlock(), createElementBlock("div", {
|
|
11208
13318
|
class: normalizeClass(containerClass.value),
|
|
11209
|
-
onClick: _cache[
|
|
13319
|
+
onClick: _cache[2] || (_cache[2] = withModifiers(() => {
|
|
11210
13320
|
}, ["stop", "prevent"])),
|
|
11211
|
-
onMousedown: _cache[
|
|
13321
|
+
onMousedown: _cache[3] || (_cache[3] = withModifiers(() => {
|
|
11212
13322
|
}, ["stop", "prevent"]))
|
|
11213
13323
|
}, [
|
|
11214
13324
|
createBaseVNode("div", null, [
|
|
@@ -11225,6 +13335,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
11225
13335
|
isChatOpen.value ? (openBlock(), createBlock(unref(N8nButton), {
|
|
11226
13336
|
key: 0,
|
|
11227
13337
|
type: "secondary",
|
|
13338
|
+
icon: "comment",
|
|
11228
13339
|
size: "large",
|
|
11229
13340
|
disabled: isExecuting.value,
|
|
11230
13341
|
"data-test-id": testId.value,
|
|
@@ -11238,6 +13349,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
11238
13349
|
default: withCtx(() => [
|
|
11239
13350
|
createVNode(unref(N8nButton), {
|
|
11240
13351
|
type: "primary",
|
|
13352
|
+
icon: "comment",
|
|
11241
13353
|
size: "large",
|
|
11242
13354
|
disabled: isExecuting.value,
|
|
11243
13355
|
"data-test-id": testId.value,
|
|
@@ -11250,11 +13362,12 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
11250
13362
|
], 64)) : (openBlock(), createBlock(unref(N8nButton), {
|
|
11251
13363
|
key: 1,
|
|
11252
13364
|
type: "primary",
|
|
13365
|
+
icon: "flask",
|
|
11253
13366
|
size: "large",
|
|
11254
13367
|
disabled: isExecuting.value,
|
|
11255
13368
|
"data-test-id": testId.value,
|
|
11256
13369
|
label: unref(i18n).baseText("nodeView.runButtonText.executeWorkflow"),
|
|
11257
|
-
onClickCapture:
|
|
13370
|
+
onClickCapture: handleClickExecute
|
|
11258
13371
|
}, null, 8, ["disabled", "data-test-id", "label"]))
|
|
11259
13372
|
], 64)) : createCommentVNode("", true)
|
|
11260
13373
|
])
|
|
@@ -11266,16 +13379,16 @@ const container = "_container_ze6b9_123";
|
|
|
11266
13379
|
const interactive = "_interactive_ze6b9_144";
|
|
11267
13380
|
const hovered = "_hovered_ze6b9_144";
|
|
11268
13381
|
const bolt = "_bolt_ze6b9_150";
|
|
11269
|
-
const style0$
|
|
13382
|
+
const style0$5 = {
|
|
11270
13383
|
container,
|
|
11271
13384
|
interactive,
|
|
11272
13385
|
hovered,
|
|
11273
13386
|
bolt
|
|
11274
13387
|
};
|
|
11275
|
-
const cssModules$
|
|
11276
|
-
"$style": style0$
|
|
13388
|
+
const cssModules$5 = {
|
|
13389
|
+
"$style": style0$5
|
|
11277
13390
|
};
|
|
11278
|
-
const CanvasNodeTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$9, [["__cssModules", cssModules$
|
|
13391
|
+
const CanvasNodeTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$9, [["__cssModules", cssModules$5]]);
|
|
11279
13392
|
const _hoisted_1$1 = ["data-test-id", "data-node-name", "data-node-type"];
|
|
11280
13393
|
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
11281
13394
|
__name: "CanvasNode",
|
|
@@ -11315,7 +13428,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
11315
13428
|
const nodeClasses = ref([]);
|
|
11316
13429
|
const inputs2 = computed(() => props.data.inputs);
|
|
11317
13430
|
const outputs = computed(() => props.data.outputs);
|
|
11318
|
-
const
|
|
13431
|
+
const connections2 = computed(() => props.data.connections);
|
|
11319
13432
|
const {
|
|
11320
13433
|
mainInputs,
|
|
11321
13434
|
nonMainInputs,
|
|
@@ -11326,7 +13439,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
11326
13439
|
} = useNodeConnections({
|
|
11327
13440
|
inputs: inputs2,
|
|
11328
13441
|
outputs,
|
|
11329
|
-
connections
|
|
13442
|
+
connections: connections2
|
|
11330
13443
|
});
|
|
11331
13444
|
const isDisabled = computed(() => props.data.disabled);
|
|
11332
13445
|
const classes = computed(() => ({
|
|
@@ -11375,7 +13488,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
11375
13488
|
index: endpoint.index
|
|
11376
13489
|
});
|
|
11377
13490
|
const handleType = mode === CanvasConnectionMode.Input ? "target" : "source";
|
|
11378
|
-
const connectionsCount =
|
|
13491
|
+
const connectionsCount = connections2.value[mode][endpoint.type]?.[endpoint.index]?.length ?? 0;
|
|
11379
13492
|
const isConnecting = connectingHandle.value?.nodeId === props.id && connectingHandle.value?.handleType === handleType && connectingHandle.value?.handleId === handleId;
|
|
11380
13493
|
return {
|
|
11381
13494
|
...endpoint,
|
|
@@ -11563,54 +13676,51 @@ const canvasNode = "_canvasNode_1ftik_123";
|
|
|
11563
13676
|
const trigger = "_trigger_1ftik_123";
|
|
11564
13677
|
const canvasNodeToolbar = "_canvasNodeToolbar_1ftik_123";
|
|
11565
13678
|
const showToolbar = "_showToolbar_1ftik_123";
|
|
11566
|
-
const style0$
|
|
13679
|
+
const style0$4 = {
|
|
11567
13680
|
canvasNode,
|
|
11568
13681
|
trigger,
|
|
11569
13682
|
canvasNodeToolbar,
|
|
11570
13683
|
showToolbar
|
|
11571
13684
|
};
|
|
11572
|
-
const cssModules$
|
|
11573
|
-
"$style": style0$
|
|
13685
|
+
const cssModules$4 = {
|
|
13686
|
+
"$style": style0$4
|
|
11574
13687
|
};
|
|
11575
|
-
const Node = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["__cssModules", cssModules$
|
|
13688
|
+
const Node = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["__cssModules", cssModules$4]]);
|
|
11576
13689
|
function useViewportAutoAdjust(viewportRef, viewport, setViewport) {
|
|
11577
|
-
const
|
|
11578
|
-
|
|
11579
|
-
|
|
11580
|
-
|
|
11581
|
-
|
|
11582
|
-
(vp, _, onCleanUp) => {
|
|
11583
|
-
if (!vp) {
|
|
11584
|
-
return;
|
|
11585
|
-
}
|
|
11586
|
-
const resizeObserver = new ResizeObserver((entries) => {
|
|
11587
|
-
const entry = entries[0];
|
|
11588
|
-
if (entry) {
|
|
11589
|
-
canvasRect.value = entry.contentRect;
|
|
11590
|
-
}
|
|
11591
|
-
});
|
|
11592
|
-
canvasRect.value = {
|
|
11593
|
-
x: vp.offsetLeft,
|
|
11594
|
-
y: vp.offsetTop,
|
|
11595
|
-
width: vp.offsetWidth,
|
|
11596
|
-
height: vp.offsetHeight
|
|
11597
|
-
};
|
|
11598
|
-
resizeObserver.observe(vp);
|
|
11599
|
-
onCleanUp(() => resizeObserver.disconnect());
|
|
11600
|
-
},
|
|
11601
|
-
{ immediate: true }
|
|
11602
|
-
);
|
|
11603
|
-
watch(canvasRect, async (newRect, oldRect) => {
|
|
11604
|
-
if (!newRect || !oldRect) {
|
|
13690
|
+
const canvasRect = ref();
|
|
13691
|
+
watch(
|
|
13692
|
+
viewportRef,
|
|
13693
|
+
(vp, _, onCleanUp) => {
|
|
13694
|
+
if (!vp) {
|
|
11605
13695
|
return;
|
|
11606
13696
|
}
|
|
11607
|
-
|
|
11608
|
-
|
|
11609
|
-
|
|
11610
|
-
|
|
13697
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
13698
|
+
const entry = entries[0];
|
|
13699
|
+
if (entry) {
|
|
13700
|
+
canvasRect.value = entry.contentRect;
|
|
13701
|
+
}
|
|
11611
13702
|
});
|
|
13703
|
+
canvasRect.value = {
|
|
13704
|
+
x: vp.offsetLeft,
|
|
13705
|
+
y: vp.offsetTop,
|
|
13706
|
+
width: vp.offsetWidth,
|
|
13707
|
+
height: vp.offsetHeight
|
|
13708
|
+
};
|
|
13709
|
+
resizeObserver.observe(vp);
|
|
13710
|
+
onCleanUp(() => resizeObserver.disconnect());
|
|
13711
|
+
},
|
|
13712
|
+
{ immediate: true }
|
|
13713
|
+
);
|
|
13714
|
+
watch(canvasRect, async (newRect, oldRect) => {
|
|
13715
|
+
if (!newRect || !oldRect) {
|
|
13716
|
+
return;
|
|
13717
|
+
}
|
|
13718
|
+
await setViewport({
|
|
13719
|
+
x: viewport.value.x + (newRect.width - oldRect.width) / 2,
|
|
13720
|
+
y: viewport.value.y + (newRect.height - oldRect.height) / 2,
|
|
13721
|
+
zoom: viewport.value.zoom
|
|
11612
13722
|
});
|
|
11613
|
-
}
|
|
13723
|
+
});
|
|
11614
13724
|
}
|
|
11615
13725
|
const renameKeyCode = " ";
|
|
11616
13726
|
const defaultZoom = 1;
|
|
@@ -12231,14 +14341,14 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
12231
14341
|
createVNode(_component_CanvasConnectionLine, normalizeProps(guardReactiveProps(connectionLineProps)), null, 16)
|
|
12232
14342
|
]),
|
|
12233
14343
|
default: withCtx(() => [
|
|
12234
|
-
createVNode(_sfc_main$
|
|
12235
|
-
createVNode(_sfc_main$
|
|
14344
|
+
createVNode(_sfc_main$D, { id: arrowHeadMarkerId.value }, null, 8, ["id"]),
|
|
14345
|
+
createVNode(_sfc_main$E, {
|
|
12236
14346
|
viewport: unref(viewport),
|
|
12237
14347
|
striped: _ctx.readOnly
|
|
12238
14348
|
}, null, 8, ["viewport", "striped"]),
|
|
12239
14349
|
createVNode(Transition$1, { name: "minimap" }, {
|
|
12240
14350
|
default: withCtx(() => [
|
|
12241
|
-
withDirectives(createVNode(unref(_sfc_main$
|
|
14351
|
+
withDirectives(createVNode(unref(_sfc_main$H), {
|
|
12242
14352
|
"data-test-id": "canvas-minimap",
|
|
12243
14353
|
"aria-label": "n8n Minimap",
|
|
12244
14354
|
height: 120,
|
|
@@ -12283,17 +14393,17 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
12283
14393
|
});
|
|
12284
14394
|
const canvas$1 = "_canvas_1fjji_123";
|
|
12285
14395
|
const ready = "_ready_1fjji_129";
|
|
12286
|
-
const style0$
|
|
14396
|
+
const style0$3 = {
|
|
12287
14397
|
canvas: canvas$1,
|
|
12288
14398
|
ready
|
|
12289
14399
|
};
|
|
12290
|
-
const cssModules$
|
|
12291
|
-
"$style": style0$
|
|
14400
|
+
const cssModules$3 = {
|
|
14401
|
+
"$style": style0$3
|
|
12292
14402
|
};
|
|
12293
|
-
const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__cssModules", cssModules$
|
|
14403
|
+
const Canvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__cssModules", cssModules$3], ["__scopeId", "data-v-ff688b7e"]]);
|
|
12294
14404
|
function useCanvasMapping({
|
|
12295
14405
|
nodes,
|
|
12296
|
-
connections,
|
|
14406
|
+
connections: connections2,
|
|
12297
14407
|
workflowObject
|
|
12298
14408
|
}) {
|
|
12299
14409
|
const i18n = useI18n();
|
|
@@ -12502,6 +14612,12 @@ function useCanvasMapping({
|
|
|
12502
14612
|
return acc;
|
|
12503
14613
|
}, {})
|
|
12504
14614
|
);
|
|
14615
|
+
const nodeExecutionWaitingForNextById = computed(
|
|
14616
|
+
() => nodes.value.reduce((acc, node2) => {
|
|
14617
|
+
acc[node2.id] = node2.name === workflowsStore.lastAddedExecutingNode && workflowsStore.executingNode.length === 0 && workflowsStore.isWorkflowRunning;
|
|
14618
|
+
return acc;
|
|
14619
|
+
}, {})
|
|
14620
|
+
);
|
|
12505
14621
|
const nodeExecutionStatusById = computed(
|
|
12506
14622
|
() => nodes.value.reduce((acc, node2) => {
|
|
12507
14623
|
const tasks = workflowsStore.getWorkflowRunData?.[node2.name] ?? [];
|
|
@@ -12522,15 +14638,15 @@ function useCanvasMapping({
|
|
|
12522
14638
|
const outputData = { iterations: 0, total: 0 };
|
|
12523
14639
|
for (const runIteration of nodeExecutionRunDataById.value[nodeId] ?? []) {
|
|
12524
14640
|
const data = runIteration.data ?? {};
|
|
12525
|
-
for (const
|
|
12526
|
-
const connectionTypeData = data[
|
|
12527
|
-
acc[nodeId][
|
|
14641
|
+
for (const connectionType2 of Object.keys(data)) {
|
|
14642
|
+
const connectionTypeData = data[connectionType2] ?? {};
|
|
14643
|
+
acc[nodeId][connectionType2] = acc[nodeId][connectionType2] ?? {};
|
|
12528
14644
|
for (const outputIndex of Object.keys(connectionTypeData)) {
|
|
12529
14645
|
const parsedOutputIndex = parseInt(outputIndex, 10);
|
|
12530
14646
|
const connectionTypeOutputIndexData = connectionTypeData[parsedOutputIndex] ?? [];
|
|
12531
|
-
acc[nodeId][
|
|
12532
|
-
acc[nodeId][
|
|
12533
|
-
acc[nodeId][
|
|
14647
|
+
acc[nodeId][connectionType2][outputIndex] = acc[nodeId][connectionType2][outputIndex] ?? { ...outputData };
|
|
14648
|
+
acc[nodeId][connectionType2][outputIndex].iterations += 1;
|
|
14649
|
+
acc[nodeId][connectionType2][outputIndex].total += connectionTypeOutputIndexData.length;
|
|
12534
14650
|
}
|
|
12535
14651
|
}
|
|
12536
14652
|
}
|
|
@@ -12704,6 +14820,7 @@ function useCanvasMapping({
|
|
|
12704
14820
|
execution: {
|
|
12705
14821
|
status: nodeExecutionStatusById.value[node2.id],
|
|
12706
14822
|
waiting: nodeExecutionWaitingById.value[node2.id],
|
|
14823
|
+
waitingForNext: nodeExecutionWaitingForNextById.value[node2.id],
|
|
12707
14824
|
running: nodeExecutionRunningById.value[node2.id]
|
|
12708
14825
|
},
|
|
12709
14826
|
runData: {
|
|
@@ -12724,7 +14841,7 @@ function useCanvasMapping({
|
|
|
12724
14841
|
})
|
|
12725
14842
|
]);
|
|
12726
14843
|
const mappedConnections = computed(() => {
|
|
12727
|
-
return mapLegacyConnectionsToCanvasConnections(
|
|
14844
|
+
return mapLegacyConnectionsToCanvasConnections(connections2.value ?? [], nodes.value ?? []).map(
|
|
12728
14845
|
(connection) => {
|
|
12729
14846
|
const type = getConnectionType();
|
|
12730
14847
|
const label2 = getConnectionLabel(connection);
|
|
@@ -12794,6 +14911,7 @@ function useCanvasMapping({
|
|
|
12794
14911
|
return {
|
|
12795
14912
|
additionalNodePropertiesById,
|
|
12796
14913
|
nodeExecutionRunDataOutputMapById,
|
|
14914
|
+
nodeExecutionWaitingForNextById,
|
|
12797
14915
|
nodeIssuesById,
|
|
12798
14916
|
nodeHasIssuesById,
|
|
12799
14917
|
connections: mappedConnections,
|
|
@@ -12824,10 +14942,10 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
12824
14942
|
const nodes = computed(() => {
|
|
12825
14943
|
return props.showFallbackNodes ? [...props.workflow.nodes, ...props.fallbackNodes] : props.workflow.nodes;
|
|
12826
14944
|
});
|
|
12827
|
-
const
|
|
14945
|
+
const connections2 = computed(() => props.workflow.connections);
|
|
12828
14946
|
const { nodes: mappedNodes, connections: mappedConnections } = useCanvasMapping({
|
|
12829
14947
|
nodes,
|
|
12830
|
-
connections,
|
|
14948
|
+
connections: connections2,
|
|
12831
14949
|
workflowObject
|
|
12832
14950
|
});
|
|
12833
14951
|
const initialFitViewDone = ref(false);
|
|
@@ -12863,25 +14981,32 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
12863
14981
|
});
|
|
12864
14982
|
const wrapper = "_wrapper_17o0o_123";
|
|
12865
14983
|
const canvas = "_canvas_17o0o_131";
|
|
12866
|
-
const style0$
|
|
14984
|
+
const style0$2 = {
|
|
12867
14985
|
wrapper,
|
|
12868
14986
|
canvas
|
|
12869
14987
|
};
|
|
12870
|
-
const cssModules$
|
|
12871
|
-
"$style": style0$
|
|
14988
|
+
const cssModules$2 = {
|
|
14989
|
+
"$style": style0$2
|
|
12872
14990
|
};
|
|
12873
|
-
const WorkflowCanvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$6, [["__cssModules", cssModules$
|
|
14991
|
+
const WorkflowCanvas = /* @__PURE__ */ _export_sfc$1(_sfc_main$6, [["__cssModules", cssModules$2]]);
|
|
12874
14992
|
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
12875
14993
|
__name: "CanvasRunWorkflowButton",
|
|
12876
14994
|
props: {
|
|
14995
|
+
selectedTriggerNodeName: {},
|
|
14996
|
+
triggerNodes: {},
|
|
12877
14997
|
waitingForWebhook: { type: Boolean },
|
|
12878
14998
|
executing: { type: Boolean },
|
|
12879
|
-
disabled: { type: Boolean }
|
|
14999
|
+
disabled: { type: Boolean },
|
|
15000
|
+
getNodeType: { type: Function }
|
|
12880
15001
|
},
|
|
12881
|
-
emits: ["mouseenter", "mouseleave", "
|
|
12882
|
-
setup(__props) {
|
|
15002
|
+
emits: ["mouseenter", "mouseleave", "execute", "selectTriggerNode"],
|
|
15003
|
+
setup(__props, { emit: __emit }) {
|
|
15004
|
+
const emit = __emit;
|
|
12883
15005
|
const props = __props;
|
|
12884
15006
|
const i18n = useI18n();
|
|
15007
|
+
const selectableTriggerNodes = computed(
|
|
15008
|
+
() => props.triggerNodes.filter((node2) => !node2.disabled && !isChatNode(node2))
|
|
15009
|
+
);
|
|
12885
15010
|
const label2 = computed(() => {
|
|
12886
15011
|
if (!props.executing) {
|
|
12887
15012
|
return i18n.baseText("nodeView.runButtonText.executeWorkflow");
|
|
@@ -12891,32 +15016,164 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
12891
15016
|
}
|
|
12892
15017
|
return i18n.baseText("nodeView.runButtonText.executingWorkflow");
|
|
12893
15018
|
});
|
|
15019
|
+
const actions2 = computed(
|
|
15020
|
+
() => props.triggerNodes.filter((node2) => !isChatNode(node2)).toSorted((a, b) => {
|
|
15021
|
+
const [aX, aY] = a.position;
|
|
15022
|
+
const [bX, bY] = b.position;
|
|
15023
|
+
return aY === bY ? aX - bX : aY - bY;
|
|
15024
|
+
}).map((node2) => ({
|
|
15025
|
+
label: truncateBeforeLast(node2.name, 25),
|
|
15026
|
+
disabled: !!node2.disabled,
|
|
15027
|
+
id: node2.name,
|
|
15028
|
+
checked: props.selectedTriggerNodeName === node2.name
|
|
15029
|
+
}))
|
|
15030
|
+
);
|
|
15031
|
+
const isSplitButton = computed(
|
|
15032
|
+
() => selectableTriggerNodes.value.length > 1 && props.selectedTriggerNodeName !== void 0
|
|
15033
|
+
);
|
|
15034
|
+
function getNodeTypeByName(name) {
|
|
15035
|
+
const node2 = props.triggerNodes.find((trigger2) => trigger2.name === name);
|
|
15036
|
+
if (!node2) {
|
|
15037
|
+
return null;
|
|
15038
|
+
}
|
|
15039
|
+
return props.getNodeType(node2.type, node2.typeVersion);
|
|
15040
|
+
}
|
|
12894
15041
|
return (_ctx, _cache) => {
|
|
12895
|
-
const
|
|
12896
|
-
|
|
12897
|
-
|
|
12898
|
-
|
|
12899
|
-
|
|
12900
|
-
|
|
12901
|
-
|
|
12902
|
-
|
|
12903
|
-
|
|
12904
|
-
|
|
12905
|
-
|
|
12906
|
-
|
|
12907
|
-
|
|
12908
|
-
|
|
12909
|
-
|
|
12910
|
-
|
|
12911
|
-
|
|
12912
|
-
|
|
12913
|
-
|
|
12914
|
-
|
|
12915
|
-
|
|
12916
|
-
|
|
15042
|
+
const _component_I18nT = resolveComponent("I18nT");
|
|
15043
|
+
const _component_NodeIcon = _sfc_main$O;
|
|
15044
|
+
return openBlock(), createElementBlock("div", {
|
|
15045
|
+
class: normalizeClass([_ctx.$style.component, isSplitButton.value ? _ctx.$style.split : ""])
|
|
15046
|
+
}, [
|
|
15047
|
+
createVNode(KeyboardShortcutTooltip, {
|
|
15048
|
+
label: label2.value,
|
|
15049
|
+
shortcut: { metaKey: true, keys: ["↵"] },
|
|
15050
|
+
disabled: _ctx.executing
|
|
15051
|
+
}, {
|
|
15052
|
+
default: withCtx(() => [
|
|
15053
|
+
createVNode(unref(N8nButton), {
|
|
15054
|
+
class: normalizeClass(_ctx.$style.button),
|
|
15055
|
+
loading: _ctx.executing,
|
|
15056
|
+
disabled: _ctx.disabled,
|
|
15057
|
+
size: "large",
|
|
15058
|
+
icon: "flask",
|
|
15059
|
+
type: "primary",
|
|
15060
|
+
"data-test-id": "execute-workflow-button",
|
|
15061
|
+
onMouseenter: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("mouseenter", $event)),
|
|
15062
|
+
onMouseleave: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("mouseleave", $event)),
|
|
15063
|
+
onClick: _cache[2] || (_cache[2] = ($event) => emit("execute"))
|
|
15064
|
+
}, {
|
|
15065
|
+
default: withCtx(() => [
|
|
15066
|
+
createBaseVNode("span", {
|
|
15067
|
+
class: normalizeClass(_ctx.$style.buttonContent)
|
|
15068
|
+
}, [
|
|
15069
|
+
createTextVNode(toDisplayString(label2.value) + " ", 1),
|
|
15070
|
+
isSplitButton.value ? (openBlock(), createBlock(unref(N8nText), {
|
|
15071
|
+
key: 0,
|
|
15072
|
+
class: normalizeClass(_ctx.$style.subText),
|
|
15073
|
+
bold: false
|
|
15074
|
+
}, {
|
|
15075
|
+
default: withCtx(() => [
|
|
15076
|
+
createVNode(_component_I18nT, { keypath: "nodeView.runButtonText.from" }, {
|
|
15077
|
+
nodeName: withCtx(() => [
|
|
15078
|
+
createVNode(unref(N8nText), {
|
|
15079
|
+
bold: "",
|
|
15080
|
+
size: "mini"
|
|
15081
|
+
}, {
|
|
15082
|
+
default: withCtx(() => [
|
|
15083
|
+
createTextVNode(toDisplayString(unref(truncateBeforeLast)(props.selectedTriggerNodeName ?? "", 25)), 1)
|
|
15084
|
+
]),
|
|
15085
|
+
_: 1
|
|
15086
|
+
})
|
|
15087
|
+
]),
|
|
15088
|
+
_: 1
|
|
15089
|
+
})
|
|
15090
|
+
]),
|
|
15091
|
+
_: 1
|
|
15092
|
+
}, 8, ["class"])) : createCommentVNode("", true)
|
|
15093
|
+
], 2)
|
|
15094
|
+
]),
|
|
15095
|
+
_: 1
|
|
15096
|
+
}, 8, ["class", "loading", "disabled"])
|
|
15097
|
+
]),
|
|
15098
|
+
_: 1
|
|
15099
|
+
}, 8, ["label", "disabled"]),
|
|
15100
|
+
isSplitButton.value ? (openBlock(), createBlock(unref(N8nActionDropdown), {
|
|
15101
|
+
key: 0,
|
|
15102
|
+
class: normalizeClass(_ctx.$style.menu),
|
|
15103
|
+
items: actions2.value,
|
|
15104
|
+
disabled: _ctx.disabled,
|
|
15105
|
+
placement: "top",
|
|
15106
|
+
onSelect: _cache[3] || (_cache[3] = ($event) => emit("selectTriggerNode", $event))
|
|
15107
|
+
}, {
|
|
15108
|
+
activator: withCtx(() => [
|
|
15109
|
+
createVNode(unref(N8nButton), {
|
|
15110
|
+
type: "primary",
|
|
15111
|
+
size: "large",
|
|
15112
|
+
disabled: _ctx.disabled || _ctx.executing,
|
|
15113
|
+
class: normalizeClass(_ctx.$style.chevron),
|
|
15114
|
+
"aria-label": "Select trigger node",
|
|
15115
|
+
icon: "angle-down"
|
|
15116
|
+
}, null, 8, ["disabled", "class"])
|
|
15117
|
+
]),
|
|
15118
|
+
menuItem: withCtx((item) => [
|
|
15119
|
+
createBaseVNode("div", {
|
|
15120
|
+
class: normalizeClass([_ctx.$style.menuItem, item.disabled ? _ctx.$style.disabled : ""])
|
|
15121
|
+
}, [
|
|
15122
|
+
createVNode(_component_NodeIcon, {
|
|
15123
|
+
class: normalizeClass(_ctx.$style.menuIcon),
|
|
15124
|
+
size: 16,
|
|
15125
|
+
"node-type": getNodeTypeByName(item.id)
|
|
15126
|
+
}, null, 8, ["class", "node-type"]),
|
|
15127
|
+
createBaseVNode("span", null, [
|
|
15128
|
+
createVNode(_component_I18nT, { keypath: "nodeView.runButtonText.from" }, {
|
|
15129
|
+
nodeName: withCtx(() => [
|
|
15130
|
+
createVNode(unref(N8nText), {
|
|
15131
|
+
bold: "",
|
|
15132
|
+
size: "small"
|
|
15133
|
+
}, {
|
|
15134
|
+
default: withCtx(() => [
|
|
15135
|
+
createTextVNode(toDisplayString(item.label), 1)
|
|
15136
|
+
]),
|
|
15137
|
+
_: 2
|
|
15138
|
+
}, 1024)
|
|
15139
|
+
]),
|
|
15140
|
+
_: 2
|
|
15141
|
+
}, 1024)
|
|
15142
|
+
])
|
|
15143
|
+
], 2)
|
|
15144
|
+
]),
|
|
15145
|
+
_: 1
|
|
15146
|
+
}, 8, ["class", "items", "disabled"])) : createCommentVNode("", true)
|
|
15147
|
+
], 2);
|
|
12917
15148
|
};
|
|
12918
15149
|
}
|
|
12919
15150
|
});
|
|
15151
|
+
const component = "_component_18nok_123";
|
|
15152
|
+
const split = "_split_18nok_129";
|
|
15153
|
+
const button = "_button_18nok_129";
|
|
15154
|
+
const chevron = "_chevron_18nok_136";
|
|
15155
|
+
const menu = "_menu_18nok_153";
|
|
15156
|
+
const menuItem = "_menuItem_18nok_157";
|
|
15157
|
+
const disabled = "_disabled_18nok_163";
|
|
15158
|
+
const menuIcon = "_menuIcon_18nok_163";
|
|
15159
|
+
const buttonContent = "_buttonContent_18nok_167";
|
|
15160
|
+
const subText = "_subText_18nok_174";
|
|
15161
|
+
const style0$1 = {
|
|
15162
|
+
component,
|
|
15163
|
+
split,
|
|
15164
|
+
button,
|
|
15165
|
+
chevron,
|
|
15166
|
+
menu,
|
|
15167
|
+
menuItem,
|
|
15168
|
+
disabled,
|
|
15169
|
+
menuIcon,
|
|
15170
|
+
buttonContent,
|
|
15171
|
+
subText
|
|
15172
|
+
};
|
|
15173
|
+
const cssModules$1 = {
|
|
15174
|
+
"$style": style0$1
|
|
15175
|
+
};
|
|
15176
|
+
const CanvasRunWorkflowButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$5, [["__cssModules", cssModules$1]]);
|
|
12920
15177
|
const state = reactive({
|
|
12921
15178
|
customActions: {},
|
|
12922
15179
|
delegatedClickHandler: null
|
|
@@ -13018,27 +15275,12 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
13018
15275
|
};
|
|
13019
15276
|
}
|
|
13020
15277
|
});
|
|
13021
|
-
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
13022
|
-
__name: "CanvasClearExecutionDataButton",
|
|
13023
|
-
setup(__props) {
|
|
13024
|
-
const i18n = useI18n();
|
|
13025
|
-
return (_ctx, _cache) => {
|
|
13026
|
-
const _component_N8nIconButton = resolveComponent("N8nIconButton");
|
|
13027
|
-
return openBlock(), createBlock(_component_N8nIconButton, {
|
|
13028
|
-
title: unref(i18n).baseText("nodeView.deletesTheCurrentExecutionData"),
|
|
13029
|
-
icon: "trash",
|
|
13030
|
-
size: "large",
|
|
13031
|
-
"data-test-id": "clear-execution-data-button"
|
|
13032
|
-
}, null, 8, ["title"]);
|
|
13033
|
-
};
|
|
13034
|
-
}
|
|
13035
|
-
});
|
|
13036
15278
|
const _hoisted_1 = { "data-action": "reload" };
|
|
13037
15279
|
const _hoisted_2 = {
|
|
13038
15280
|
href: "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/",
|
|
13039
15281
|
target: "_blank"
|
|
13040
15282
|
};
|
|
13041
|
-
const _sfc_main$
|
|
15283
|
+
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
13042
15284
|
__name: "NodeViewUnfinishedWorkflowMessage",
|
|
13043
15285
|
setup(__props) {
|
|
13044
15286
|
const i18 = useI18n();
|
|
@@ -13052,6 +15294,25 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
13052
15294
|
};
|
|
13053
15295
|
}
|
|
13054
15296
|
});
|
|
15297
|
+
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
15298
|
+
__name: "CanvasChatButton",
|
|
15299
|
+
props: {
|
|
15300
|
+
label: {},
|
|
15301
|
+
type: {}
|
|
15302
|
+
},
|
|
15303
|
+
setup(__props) {
|
|
15304
|
+
return (_ctx, _cache) => {
|
|
15305
|
+
const _component_N8nButton = resolveComponent("N8nButton");
|
|
15306
|
+
return openBlock(), createBlock(_component_N8nButton, {
|
|
15307
|
+
label: _ctx.label,
|
|
15308
|
+
size: "large",
|
|
15309
|
+
icon: "comment",
|
|
15310
|
+
type: _ctx.type,
|
|
15311
|
+
"data-test-id": "workflow-chat-button"
|
|
15312
|
+
}, null, 8, ["label", "type"]);
|
|
15313
|
+
};
|
|
15314
|
+
}
|
|
15315
|
+
});
|
|
13055
15316
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
13056
15317
|
...{
|
|
13057
15318
|
name: "NodeView"
|
|
@@ -13059,13 +15320,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13059
15320
|
__name: "NodeView",
|
|
13060
15321
|
setup(__props) {
|
|
13061
15322
|
const LazyNodeCreation = defineAsyncComponent(
|
|
13062
|
-
async () => await __vitePreload(() => import("./NodeCreation-
|
|
15323
|
+
async () => await __vitePreload(() => import("./NodeCreation-CNH2xciY.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
|
|
13063
15324
|
);
|
|
13064
15325
|
const LazyNodeDetailsView = defineAsyncComponent(
|
|
13065
|
-
async () => await __vitePreload(() => import("./NodeDetailsView-
|
|
15326
|
+
async () => await __vitePreload(() => import("./NodeDetailsView-DQ4I8u72.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18]) : void 0)
|
|
13066
15327
|
);
|
|
13067
15328
|
const LazySetupWorkflowCredentialsButton = defineAsyncComponent(
|
|
13068
|
-
async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-
|
|
15329
|
+
async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-DgTQe_yd.js"), true ? __vite__mapDeps([19,1,2]) : void 0)
|
|
13069
15330
|
);
|
|
13070
15331
|
const $style = useCssModule();
|
|
13071
15332
|
const router = useRouter();
|
|
@@ -13076,7 +15337,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13076
15337
|
const toast = useToast();
|
|
13077
15338
|
const message = useMessage();
|
|
13078
15339
|
const documentTitle = useDocumentTitle();
|
|
13079
|
-
const workflowHelpers = useWorkflowHelpers(
|
|
15340
|
+
const workflowHelpers = useWorkflowHelpers();
|
|
15341
|
+
const workflowSaving = useWorkflowSaving({ router });
|
|
13080
15342
|
const nodeHelpers = useNodeHelpers();
|
|
13081
15343
|
const nodeTypesStore = useNodeTypesStore();
|
|
13082
15344
|
const uiStore = useUIStore();
|
|
@@ -13149,7 +15411,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13149
15411
|
editableWorkflowObject,
|
|
13150
15412
|
lastClickPosition,
|
|
13151
15413
|
startChat
|
|
13152
|
-
} = useCanvasOperations(
|
|
15414
|
+
} = useCanvasOperations();
|
|
13153
15415
|
const { extractWorkflow } = useWorkflowExtraction();
|
|
13154
15416
|
const { applyExecutionData } = useExecutionDebugging();
|
|
13155
15417
|
useClipboard({ onPaste: onClipboardPaste });
|
|
@@ -13571,7 +15833,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13571
15833
|
if (workflowIsSaved || workflowIsArchived) {
|
|
13572
15834
|
return;
|
|
13573
15835
|
}
|
|
13574
|
-
const saved = await
|
|
15836
|
+
const saved = await workflowSaving.saveCurrentWorkflow();
|
|
13575
15837
|
if (saved) {
|
|
13576
15838
|
canvasEventBus.emit("saved:workflow");
|
|
13577
15839
|
}
|
|
@@ -13603,6 +15865,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13603
15865
|
}
|
|
13604
15866
|
async function onOpenRenameNodeModal(id2) {
|
|
13605
15867
|
const currentName = workflowsStore.getNodeById(id2)?.name ?? "";
|
|
15868
|
+
const activeElement = document.activeElement;
|
|
15869
|
+
if (activeElement && activeElement.tagName === "INPUT") {
|
|
15870
|
+
return;
|
|
15871
|
+
}
|
|
13606
15872
|
if (!keyBindingsEnabled.value || document.querySelector(".rename-prompt")) return;
|
|
13607
15873
|
try {
|
|
13608
15874
|
const promptResponsePromise = message.prompt(
|
|
@@ -13687,8 +15953,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13687
15953
|
revertCreateConnection(connection);
|
|
13688
15954
|
}
|
|
13689
15955
|
function onCreateConnectionCancelled(event, position2, mouseEvent) {
|
|
13690
|
-
const
|
|
13691
|
-
if (
|
|
15956
|
+
const preventDefault2 = (mouseEvent?.target).classList?.contains("clickable");
|
|
15957
|
+
if (preventDefault2) {
|
|
13692
15958
|
return;
|
|
13693
15959
|
}
|
|
13694
15960
|
uiStore.lastInteractedWithNodeId = event.nodeId;
|
|
@@ -13757,7 +16023,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13757
16023
|
nodeViewEventBus.off("importWorkflowUrl", onImportWorkflowUrlEvent);
|
|
13758
16024
|
nodeViewEventBus.off("openChat", onOpenChat);
|
|
13759
16025
|
}
|
|
13760
|
-
async function onAddNodesAndConnections({ nodes, connections }, dragAndDrop = false, position2) {
|
|
16026
|
+
async function onAddNodesAndConnections({ nodes, connections: connections2 }, dragAndDrop = false, position2) {
|
|
13761
16027
|
if (!checkIfEditingIsAllowed()) {
|
|
13762
16028
|
return;
|
|
13763
16029
|
}
|
|
@@ -13769,7 +16035,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13769
16035
|
telemetry: true
|
|
13770
16036
|
});
|
|
13771
16037
|
const offsetIndex = editableWorkflow.value.nodes.length - nodes.length;
|
|
13772
|
-
const mappedConnections =
|
|
16038
|
+
const mappedConnections = connections2.map(({ from, to }) => {
|
|
13773
16039
|
const fromNode = editableWorkflow.value.nodes[offsetIndex + from.nodeIndex];
|
|
13774
16040
|
const toNode = editableWorkflow.value.nodes[offsetIndex + to.nodeIndex];
|
|
13775
16041
|
const type = from.type ?? to.type ?? NodeConnectionTypes.Main;
|
|
@@ -13813,8 +16079,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13813
16079
|
setNodeActiveByName(nodeName);
|
|
13814
16080
|
selectNodes([node2.id]);
|
|
13815
16081
|
}
|
|
13816
|
-
async function onOpenSelectiveNodeCreator(node2,
|
|
13817
|
-
nodeCreatorStore.openSelectiveNodeCreator({ node: node2, connectionType });
|
|
16082
|
+
async function onOpenSelectiveNodeCreator(node2, connectionType2) {
|
|
16083
|
+
nodeCreatorStore.openSelectiveNodeCreator({ node: node2, connectionType: connectionType2 });
|
|
13818
16084
|
}
|
|
13819
16085
|
async function onOpenNodeCreatorForTriggerNodes(source) {
|
|
13820
16086
|
nodeCreatorStore.openNodeCreatorForTriggerNodes(source);
|
|
@@ -13867,7 +16133,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13867
16133
|
const isStopWaitingForWebhookButtonVisible = computed(
|
|
13868
16134
|
() => isWorkflowRunning.value && isExecutionWaitingForWebhook.value
|
|
13869
16135
|
);
|
|
13870
|
-
const isClearExecutionButtonVisible = useClearExecutionButtonVisible();
|
|
13871
16136
|
async function onRunWorkflowToNode(id2) {
|
|
13872
16137
|
const node2 = workflowsStore.getNodeById(id2);
|
|
13873
16138
|
if (!node2) return;
|
|
@@ -13949,7 +16214,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13949
16214
|
if (data.waitTill) {
|
|
13950
16215
|
toast.showMessage({
|
|
13951
16216
|
title: i18n.baseText("nodeView.thisExecutionHasntFinishedYet"),
|
|
13952
|
-
message: h(_sfc_main$
|
|
16217
|
+
message: h(_sfc_main$2),
|
|
13953
16218
|
type: "warning",
|
|
13954
16219
|
duration: 0
|
|
13955
16220
|
});
|
|
@@ -13971,10 +16236,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
13971
16236
|
async function onStopWaitingForWebhook() {
|
|
13972
16237
|
await stopWaitingForWebhook();
|
|
13973
16238
|
}
|
|
13974
|
-
async function onClearExecutionData() {
|
|
13975
|
-
workflowsStore.workflowExecutionData = null;
|
|
13976
|
-
nodeHelpers.updateNodesExecutionIssues();
|
|
13977
|
-
}
|
|
13978
16239
|
function onRunWorkflowButtonMouseEnter() {
|
|
13979
16240
|
nodeViewEventBus.emit("runWorkflowButton:mouseenter");
|
|
13980
16241
|
}
|
|
@@ -14208,10 +16469,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
14208
16469
|
key: "openSelectiveNodeCreator",
|
|
14209
16470
|
action: ({
|
|
14210
16471
|
creatorview: creatorView,
|
|
14211
|
-
connectiontype:
|
|
16472
|
+
connectiontype: connectionType2,
|
|
14212
16473
|
node: node2
|
|
14213
16474
|
}) => {
|
|
14214
|
-
nodeCreatorStore.openSelectiveNodeCreator({ node: node2, connectionType, creatorView });
|
|
16475
|
+
nodeCreatorStore.openSelectiveNodeCreator({ node: node2, connectionType: connectionType2, creatorView });
|
|
14215
16476
|
}
|
|
14216
16477
|
});
|
|
14217
16478
|
registerCustomAction({
|
|
@@ -14390,7 +16651,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
14390
16651
|
}
|
|
14391
16652
|
});
|
|
14392
16653
|
return (_ctx, _cache) => {
|
|
14393
|
-
const _component_CanvasChatButton = _sfc_main$G;
|
|
14394
16654
|
return unref(editableWorkflow) && unref(editableWorkflowObject) && !isLoading.value ? (openBlock(), createBlock(WorkflowCanvas, {
|
|
14395
16655
|
key: 0,
|
|
14396
16656
|
id: unref(editableWorkflow).id,
|
|
@@ -14457,32 +16717,38 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
14457
16717
|
key: 0,
|
|
14458
16718
|
class: normalizeClass(unref($style).executionButtons)
|
|
14459
16719
|
}, [
|
|
14460
|
-
isRunWorkflowButtonVisible.value ? (openBlock(), createBlock(
|
|
16720
|
+
isRunWorkflowButtonVisible.value ? (openBlock(), createBlock(CanvasRunWorkflowButton, {
|
|
14461
16721
|
key: 0,
|
|
14462
16722
|
"waiting-for-webhook": isExecutionWaitingForWebhook.value,
|
|
14463
16723
|
disabled: isExecutionDisabled.value,
|
|
14464
16724
|
executing: isWorkflowRunning.value,
|
|
16725
|
+
"trigger-nodes": triggerNodes.value,
|
|
16726
|
+
"get-node-type": unref(nodeTypesStore).getNodeType,
|
|
16727
|
+
"selected-trigger-node-name": unref(workflowsStore).selectedTriggerNodeName,
|
|
14465
16728
|
onMouseenter: onRunWorkflowButtonMouseEnter,
|
|
14466
16729
|
onMouseleave: onRunWorkflowButtonMouseLeave,
|
|
14467
|
-
|
|
14468
|
-
|
|
16730
|
+
onExecute: _cache[0] || (_cache[0] = ($event) => unref(runEntireWorkflow)("main")),
|
|
16731
|
+
onSelectTriggerNode: unref(workflowsStore).setSelectedTriggerNodeName
|
|
16732
|
+
}, null, 8, ["waiting-for-webhook", "disabled", "executing", "trigger-nodes", "get-node-type", "selected-trigger-node-name", "onSelectTriggerNode"])) : createCommentVNode("", true),
|
|
14469
16733
|
containsChatTriggerNodes.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
14470
|
-
isLogsPanelOpen.value ? (openBlock(), createBlock(
|
|
16734
|
+
isLogsPanelOpen.value ? (openBlock(), createBlock(_sfc_main$1, {
|
|
14471
16735
|
key: 0,
|
|
14472
16736
|
type: "tertiary",
|
|
14473
16737
|
label: unref(i18n).baseText("chat.hide"),
|
|
16738
|
+
class: normalizeClass(unref($style).chatButton),
|
|
14474
16739
|
onClick: _cache[1] || (_cache[1] = ($event) => unref(logsStore).toggleOpen(false))
|
|
14475
|
-
}, null, 8, ["label"])) : (openBlock(), createBlock(KeyboardShortcutTooltip, {
|
|
16740
|
+
}, null, 8, ["label", "class"])) : (openBlock(), createBlock(KeyboardShortcutTooltip, {
|
|
14476
16741
|
key: 1,
|
|
14477
16742
|
label: unref(i18n).baseText("chat.open"),
|
|
14478
16743
|
shortcut: { keys: ["c"] }
|
|
14479
16744
|
}, {
|
|
14480
16745
|
default: withCtx(() => [
|
|
14481
|
-
createVNode(
|
|
14482
|
-
type: "primary",
|
|
16746
|
+
createVNode(_sfc_main$1, {
|
|
16747
|
+
type: isRunWorkflowButtonVisible.value ? "secondary" : "primary",
|
|
14483
16748
|
label: unref(i18n).baseText("chat.open"),
|
|
16749
|
+
class: normalizeClass(unref($style).chatButton),
|
|
14484
16750
|
onClick: onOpenChat
|
|
14485
|
-
}, null, 8, ["label"])
|
|
16751
|
+
}, null, 8, ["type", "label", "class"])
|
|
14486
16752
|
]),
|
|
14487
16753
|
_: 1
|
|
14488
16754
|
}, 8, ["label"]))
|
|
@@ -14495,10 +16761,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
14495
16761
|
isStopWaitingForWebhookButtonVisible.value ? (openBlock(), createBlock(_sfc_main$3, {
|
|
14496
16762
|
key: 3,
|
|
14497
16763
|
onClick: onStopWaitingForWebhook
|
|
14498
|
-
})) : createCommentVNode("", true),
|
|
14499
|
-
unref(isClearExecutionButtonVisible) && !unref(settingsStore).isNewLogsEnabled ? (openBlock(), createBlock(_sfc_main$2, {
|
|
14500
|
-
key: 4,
|
|
14501
|
-
onClick: onClearExecutionData
|
|
14502
16764
|
})) : createCommentVNode("", true)
|
|
14503
16765
|
], 2)) : createCommentVNode("", true),
|
|
14504
16766
|
isReadOnlyEnvironment.value ? (openBlock(), createBlock(unref(N8nCallout), {
|
|
@@ -14546,11 +16808,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
14546
16808
|
};
|
|
14547
16809
|
}
|
|
14548
16810
|
});
|
|
14549
|
-
const executionButtons = "
|
|
14550
|
-
const
|
|
14551
|
-
const
|
|
16811
|
+
const executionButtons = "_executionButtons_1d2c1_123";
|
|
16812
|
+
const chatButton = "_chatButton_1d2c1_160";
|
|
16813
|
+
const setupCredentialsButtonWrapper = "_setupCredentialsButtonWrapper_1d2c1_164";
|
|
16814
|
+
const readOnlyEnvironmentNotification = "_readOnlyEnvironmentNotification_1d2c1_170";
|
|
14552
16815
|
const style0 = {
|
|
14553
16816
|
executionButtons,
|
|
16817
|
+
chatButton,
|
|
14554
16818
|
setupCredentialsButtonWrapper,
|
|
14555
16819
|
readOnlyEnvironmentNotification
|
|
14556
16820
|
};
|
|
@@ -14558,6 +16822,11 @@ const cssModules = {
|
|
|
14558
16822
|
"$style": style0
|
|
14559
16823
|
};
|
|
14560
16824
|
const NodeView = /* @__PURE__ */ _export_sfc$1(_sfc_main, [["__cssModules", cssModules]]);
|
|
16825
|
+
const NodeView$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
16826
|
+
__proto__: null,
|
|
16827
|
+
default: NodeView
|
|
16828
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
14561
16829
|
export {
|
|
14562
|
-
|
|
16830
|
+
NodeSettings as N,
|
|
16831
|
+
NodeView$1 as a
|
|
14563
16832
|
};
|