n8n-editor-ui 1.84.0 → 1.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-78eP7HIe.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BefsLZo6.js} +1 -1
- package/dist/assets/{AuthView-Bn_LB3Kw.js → AuthView-Bwnmj61F.js} +2 -2
- package/dist/assets/{CanvasChat-CGGQcCRA.css → CanvasChatSwitch-BcSDHC-c.css} +522 -24
- package/dist/assets/{CanvasChat-tuKMnT6J.js → CanvasChatSwitch-Dgc1t6ax.js} +919 -509
- package/dist/assets/{ChangePasswordView-aXYIR8zr.js → ChangePasswordView-Ojbow8CX.js} +3 -3
- package/dist/assets/CollectionParameter-2r_LuiyO.js +4 -0
- package/dist/assets/CommitMonoVariable-ytizKI8U.woff2 +0 -0
- package/dist/assets/{CredentialsView-k8CeiyMJ.js → CredentialsView-DhEvPiu_.js} +19 -8
- package/dist/assets/{ErrorView-e-cpk6J7.js → ErrorView-RGryGbpa.js} +1 -1
- package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-BYacEmlc.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-Iwq0aeRX.js} +2 -2
- package/dist/assets/{ExecutionsView-CQi8A4ps.js → ExecutionsView-CL7Ei3Em.js} +25 -8
- package/dist/assets/{ExecutionsView-CRTcP3sx.css → ExecutionsView-JCKikuIS.css} +2 -2
- package/dist/assets/{FileSaver.min-DmMmlWYQ.js → FileSaver.min-C4OYrSWg.js} +1 -1
- package/dist/assets/{FixedCollectionParameter-BfUPtP5M.js → FixedCollectionParameter-CJ4s-1jy.js} +1 -1
- package/dist/assets/{ForgotMyPasswordView-Dzao5PZ9.js → ForgotMyPasswordView-7tFMaf89.js} +3 -3
- package/dist/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
- package/dist/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
- package/dist/assets/{Logo-DVRZ2qRx.js → Logo-BW8jOa0h.js} +1 -1
- package/dist/assets/{MainHeader-BUw_JG4S.js → MainHeader-BUWCKbvC.js} +47 -22
- package/dist/assets/{MainHeader-CX-ZfeKE.css → MainHeader-CWA2JfVJ.css} +22 -22
- package/dist/assets/{MainSidebar-C6aXqICd.js → MainSidebar-BeZfQeco.js} +2 -2
- package/dist/assets/{NodeCreation-B9-99kNr.js → NodeCreation-DIg39Pbx.js} +5 -5
- package/dist/assets/{NodeCreator-DH90304h.js → NodeCreator-BwYjrEUk.js} +10 -11
- package/dist/assets/{NodeCreator-DDiuO5S0.css → NodeCreator-D9fmPdS2.css} +12 -12
- package/dist/assets/{NodeDetailsView-0RXvy-0D.css → NodeDetailsView-C1z3N5z_.css} +46 -46
- package/dist/assets/{NodeDetailsView-Ci-9Cz_w.js → NodeDetailsView-WuroVzlr.js} +38 -38
- package/dist/assets/{NodeView-CFUO-Q9X.js → NodeView-CmjajouX.js} +20 -23
- package/dist/assets/{ProjectCardBadge-CGqr1_BG.js → ProjectCardBadge-cIqYJxKe.js} +1 -1
- package/dist/assets/{ProjectHeader-CQjB5wC7.css → ProjectHeader-B-a6_GH6.css} +7 -7
- package/dist/assets/{ProjectHeader-C8hRwBFC.js → ProjectHeader-BGrFY-5v.js} +7 -21
- package/dist/assets/{ProjectSettings-motYfWGR.js → ProjectSettings-D10vay6-.js} +2 -2
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-DzkWenq4.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DJAYslHT.js} +2 -2
- package/dist/assets/{ResourcesListLayout-BYVhS2j5.js → ResourcesListLayout-C6v8Zm5q.js} +21 -18
- package/dist/assets/{ResourcesListLayout-BqQI0lCG.css → ResourcesListLayout-CWgWhtKq.css} +39 -36
- package/dist/assets/{RunDataAi-DJ-PSs_k.css → RunDataAi-CN9FrT9c.css} +2 -2
- package/dist/assets/{RunDataAi-pfKF0Nfm.js → RunDataAi-dhPBStdr.js} +25 -20
- package/dist/assets/{RunDataJson-CNT_rM-i.js → RunDataJson-kGRhUGn3.js} +12 -12
- package/dist/assets/{RunDataJsonActions-BTLAUv9R.js → RunDataJsonActions-BTljOq8V.js} +2 -2
- package/dist/assets/{RunDataSearch-BpcbBojC.js → RunDataSearch-mVQhE8PH.js} +1 -1
- package/dist/assets/{RunDataTable-ZnG9QEzJ.js → RunDataTable-CFoDiExh.js} +2 -2
- package/dist/assets/{SamlOnboarding-DjhCWFIr.js → SamlOnboarding-dDZHHNp4.js} +3 -3
- package/dist/assets/{SettingsApiView-C1ClqjeG.js → SettingsApiView-C9hbuZ42.js} +2 -3
- package/dist/assets/{SettingsCommunityNodesView-D5eLIpQC.js → SettingsCommunityNodesView-0wzih2lc.js} +5 -5
- package/dist/assets/{SettingsExternalSecrets-ubf6jijA.js → SettingsExternalSecrets-BCDoBPTc.js} +1 -1
- package/dist/assets/{SettingsLdapView-BezV6JLr.js → SettingsLdapView-CBCprymb.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-ETOxA5Tw.js → SettingsLogStreamingView-CMQQQdcB.js} +2 -2
- package/dist/assets/{SettingsPersonalView-DGxUC8Q4.js → SettingsPersonalView-DtAM5Qmb.js} +1 -1
- package/dist/assets/{SettingsSourceControl-1vHHG6W9.js → SettingsSourceControl-CysMFVZs.js} +1 -1
- package/dist/assets/{SettingsSso-CdI26YPF.js → SettingsSso-B0PZUvVx.js} +7 -7
- package/dist/assets/{SettingsSso-BjoJZ2DU.css → SettingsSso-DyrGnPdA.css} +10 -10
- package/dist/assets/{SettingsUsageAndPlan-BmI8cSiq.js → SettingsUsageAndPlan-2QUTEbXv.js} +8 -3
- package/dist/assets/{SettingsUsageAndPlan-Cul4YcIk.css → SettingsUsageAndPlan-b3WY2Ea_.css} +3 -3
- package/dist/assets/{SettingsUsersView-90JmT1qM.js → SettingsUsersView-C16e4GB4.js} +1 -1
- package/dist/assets/{SettingsView-i7rE7s3I.js → SettingsView-B-BQ6FGS.js} +1 -1
- package/dist/assets/{SetupView-Lp4ullGE.js → SetupView-Kx3RATQz.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-CoXXUd3B.js → SetupWorkflowCredentialsButton-BQ2_-L-1.js} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-TVU0-Zq4.js → SetupWorkflowFromTemplateView-D_E17TKc.js} +3 -3
- package/dist/assets/{SigninView-BqF8j6-h.js → SigninView-d0aJ1Mkg.js} +3 -3
- package/dist/assets/{SignoutView-DrYJ9Qe3.js → SignoutView-CvyFrh7y.js} +1 -1
- package/dist/assets/{SignupView-_EKPhYKN.js → SignupView-CnlD_UrJ.js} +3 -3
- package/dist/assets/{TemplateDetails-DAalg9G2.js → TemplateDetails-DRuh9UqO.js} +1 -1
- package/dist/assets/{TemplateList-BEYMeJMu.js → TemplateList-gpWBWX3r.js} +1 -1
- package/dist/assets/{TemplatesCollectionView-fMELXCRX.js → TemplatesCollectionView-Y6-pxrOD.js} +5 -5
- package/dist/assets/{TemplatesSearchView-BO-e3IH7.js → TemplatesSearchView-DP8XRZ62.js} +3 -3
- package/dist/assets/{TemplatesView-p57nARMp.js → TemplatesView-B3vanV3h.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-DAbL5S1-.js → TemplatesWorkflowView-CIB9qsVC.js} +5 -5
- package/dist/assets/{TestDefinitionEditView-BTo9LlAU.js → TestDefinitionEditView-BkhmS3l4.js} +7 -8
- package/dist/assets/{TestDefinitionListView-D_-DyZDv.js → TestDefinitionListView-tvjwd9Ts.js} +1 -1
- package/dist/assets/{TestDefinitionNewView-Crk5OePO.js → TestDefinitionNewView-DOGHwct6.js} +2 -2
- package/dist/assets/{TestDefinitionRootView-BtiqAWW1.js → TestDefinitionRootView-B-QvwldV.js} +1 -1
- package/dist/assets/{VariablesView-BvDpOTm3.css → VariablesView-ATWfdJsE.css} +5 -5
- package/dist/assets/{VariablesView-Bg3GI1iE.js → VariablesView-CoBnz2nF.js} +5 -5
- package/dist/assets/{WorkerView-CaTyr1ci.js → WorkerView-CsTZzlRj.js} +7 -7
- package/dist/assets/{WorkflowActivator-BvmRhIkt.js → WorkflowActivator-DeLhupjy.js} +2 -2
- package/dist/assets/{WorkflowExecutionsInfoAccordion-BuIbG1kZ.js → WorkflowExecutionsInfoAccordion-WRdvo2wq.js} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-BirtsKx4.js → WorkflowExecutionsLandingPage-DP8mgG6I.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-DFyHWF9H.js → WorkflowExecutionsPreview-BmG1Fptg.js} +22 -22
- package/dist/assets/{WorkflowExecutionsPreview-CPGOOAq2.css → WorkflowExecutionsPreview-CHu6M3Dh.css} +22 -22
- package/dist/assets/{WorkflowExecutionsView-IUjVjxU9.js → WorkflowExecutionsView-DmN-exp3.js} +6 -7
- package/dist/assets/{WorkflowHistory-BqKSxr_5.js → WorkflowHistory-CdEr7dbB.js} +3 -3
- package/dist/assets/{WorkflowOnboardingView-Bs0Rmm6I.js → WorkflowOnboardingView-D45YjFmk.js} +1 -1
- package/dist/assets/{WorkflowPreview-1jsK9hpV.js → WorkflowPreview-x0_AdULu.js} +1 -1
- package/dist/assets/{WorkflowsView-MzPw02jI.js → WorkflowsView-BhcJ-MjE.js} +329 -79
- package/dist/assets/{WorkflowsView-Sg6GR5kC.css → WorkflowsView-r9qJOUEb.css} +22 -15
- package/dist/assets/{easyAiWorkflowUtils-DlyLBhIZ.js → easyAiWorkflowUtils-NXaV8dgZ.js} +5 -5
- package/dist/assets/{global-link-actions-DvwtxSrW.js → global-link-actions-DgZH3fz2.js} +1 -1
- package/dist/assets/{import-curl-CbxpR02g.js → import-curl-DUv4B2nO.js} +1 -1
- package/dist/assets/{index-CyVlLoqB.js → index-CDluwnbb.js} +2656 -2132
- package/dist/assets/{index-74EeM2i2.css → index-CgXKy7t-.css} +1208 -1185
- package/dist/assets/{index-tzkIB4Tg.js → index-DAyhXitv.js} +1 -1
- package/dist/assets/{pickBy-DI3cF803.js → pickBy-D-hOoXP_.js} +1 -1
- package/dist/assets/{pushConnection.store-BhUCpqAg.js → pushConnection.store-Dl_VgTY2.js} +1 -1
- package/dist/assets/{templateActions-BnGO7zdc.js → templateActions-B4AFVixD.js} +1 -1
- package/dist/assets/{useBeforeUnload-DtKxjKeS.js → useBeforeUnload-DS-CCd-3.js} +1 -1
- package/dist/assets/{useCanvasMapping-CI4ehFWu.css → useCanvasMapping-CJcAsQmx.css} +47 -47
- package/dist/assets/{useCanvasMapping-BCP7UO9p.js → useCanvasMapping-DnPGwCm3.js} +53 -54
- package/dist/assets/{useCanvasOperations-Ctquo5LL.js → useCanvasOperations-CY1OrN2X.js} +453 -183
- package/dist/assets/useClearExecutionButtonVisible-CjX9PqMR.js +23 -0
- package/dist/assets/{useExecutionDebugging-C0TAc9fj.js → useExecutionDebugging-BN-lQ24h.js} +1 -1
- package/dist/assets/{useExecutionHelpers-BQHL3OpL.js → useExecutionHelpers-wN0DRQB-.js} +1 -1
- package/dist/assets/{useImportCurlCommand-IE8oJ9bp.js → useImportCurlCommand-DgTeVIgh.js} +2 -2
- package/dist/assets/useOverview-BBgWJdVL.js +161 -0
- package/dist/assets/useOverview-DcRuPjLJ.css +232 -0
- package/dist/assets/{usePushConnection-DXozzPWi.js → usePushConnection-F1s4Muc0.js} +4 -4
- package/dist/assets/{useRunWorkflow-D9JIEr1s.js → useRunWorkflow-RBDuKZVj.js} +12 -12
- package/dist/assets/{useTestDefinitionForm-8dJH3v29.js → useTestDefinitionForm-DX1gvhBC.js} +1 -1
- package/dist/assets/{useWorkflowActivate-CI3X35ZJ.js → useWorkflowActivate-DsRC3mvG.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-DR9e0MGf.js +0 -4
- package/dist/assets/open-sans-latin-400-normal-kLvSbl7y.woff +0 -0
- package/dist/assets/open-sans-latin-400-normal-sjvN8RAh.woff2 +0 -0
- package/dist/assets/open-sans-latin-600-normal-BYc6TgXR.woff2 +0 -0
- package/dist/assets/open-sans-latin-600-normal-CJ2UE_uF.woff +0 -0
- package/dist/assets/open-sans-latin-700-normal-DMXgkrz3.woff +0 -0
- package/dist/assets/open-sans-latin-700-normal-DXyImmHa.woff2 +0 -0
- package/dist/assets/usePinnedData-CtRDhd6k.js +0 -274
|
@@ -1,5 +1,41 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { dS as baseSlice, dT as toString, dU as createCompounder, dV as SetCache, dW as arrayIncludes, dX as cacheHas, dY as baseRest, dZ as isArrayLikeObject, d_ as baseFlatten, bu as useNodeTypesStore, q as computed, m as unref, d$ as isSubNodeType, a0 as useRootStore, T as useWorkflowsStore, a as useToast, e0 as PIN_DATA_NODE_TYPES_DENYLIST, e1 as jsonStringify, c as useI18n, e2 as toMegaBytes, e3 as stringSizeInBytes, ah as useTelemetry, aQ as useExternalHooks, bL as jsonParse, e4 as useDataSchema, bs as getNodeOutputs, be as NodeConnectionTypes, e5 as MAX_PINNED_DATA_SIZE, e6 as MAX_WORKFLOW_SIZE, e7 as MAX_EXPECTED_REQUEST_SIZE, e8 as CORE_NODES_CATEGORY, e9 as DEFAULT_SUBCATEGORY, bi as v4, p as useSettingsStore, ea as AI_TRANSFORM_NODE_TYPE, bm as AI_SUBCATEGORY, eb as HUMAN_IN_THE_LOOP_CATEGORY, bn as AI_CATEGORY_AGENTS, ec as sortBy, d8 as i18n, ed as AI_CATEGORY_OTHER_TOOLS, ee as SEND_AND_WAIT_OPERATION, ef as AI_CATEGORY_DOCUMENT_LOADERS, eg as AI_CATEGORY_LANGUAGE_MODELS, eh as AI_CATEGORY_MEMORY, ei as AI_CATEGORY_OUTPUTPARSER, ej as AI_CATEGORY_RETRIEVERS, ek as AI_CATEGORY_TEXT_SPLITTERS, el as AI_WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, em as AI_CODE_TOOL_LANGCHAIN_NODE_TYPE, en as AI_CATEGORY_TOOLS, eo as AI_CATEGORY_EMBEDDING, ep as AI_CATEGORY_VECTOR_STORES, eq as AI_UNCATEGORIZED_CATEGORY, er as AI_OTHERS_NODE_CREATOR_VIEW, aO as useTemplatesStore, es as AI_NODE_CREATOR_VIEW, et as RSS_READ_NODE_TYPE, eu as EMAIL_SEND_NODE_TYPE, ev as SET_NODE_TYPE, ew as CODE_NODE_TYPE, ex as DATETIME_NODE_TYPE, ey as FILTER_NODE_TYPE, ez as REMOVE_DUPLICATES_NODE_TYPE, eA as SPLIT_OUT_NODE_TYPE, eB as LIMIT_NODE_TYPE, eC as SUMMARIZE_NODE_TYPE, eD as AGGREGATE_NODE_TYPE, eE as MERGE_NODE_TYPE, eF as HTML_NODE_TYPE, eG as MARKDOWN_NODE_TYPE, eH as XML_NODE_TYPE, eI as CRYPTO_NODE_TYPE, eJ as EXTRACT_FROM_FILE_NODE_TYPE, eK as CONVERT_TO_FILE_NODE_TYPE, eL as COMPRESSION_NODE_TYPE, eM as EDIT_IMAGE_NODE_TYPE, eN as TRANSFORM_DATA_SUBCATEGORY, eO as IF_NODE_TYPE, eP as SPLIT_IN_BATCHES_NODE_TYPE, eQ as FLOWS_CONTROL_SUBCATEGORY, eR as HTTP_REQUEST_NODE_TYPE, eS as WEBHOOK_NODE_TYPE, eT as HELPERS_SUBCATEGORY, eU as HITL_SUBCATEGORY, eV as TRIGGER_NODE_CREATOR_VIEW, eW as REGULAR_NODE_CREATOR_VIEW, eX as MANUAL_TRIGGER_NODE_TYPE, eY as EMAIL_IMAP_NODE_TYPE, eZ as SCHEDULE_TRIGGER_NODE_TYPE, e_ as FORM_TRIGGER_NODE_TYPE, dw as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, bt as CHAT_TRIGGER_NODE_TYPE, e$ as OTHER_TRIGGER_NODES_SUBCATEGORY, bo as AI_CATEGORY_CHAINS, S as defineStore, r as ref, a1 as useCanvasStore, f0 as AI_CATEGORY_ROOT_NODES, z as nextTick, bp as AI_CODE_NODE_TYPE, f1 as AI_TRANSFORM_NODE_TYPE$1, f2 as isValidCanvasConnectionMode, bV as CanvasConnectionMode, bU as isValidNodeConnectionType, at as useNDVStore, L as useUIStore, f3 as isVueFlowConnection, bq as getNodeInputs, f4 as CUSTOM_API_CALL_KEY, X as STORES, bY as NODE_CREATOR_OPEN_SOURCES, bD as useCredentialsStore, bG as useHistoryStore, E as useTagsStore, au as useExecutionsStore, a3 as useProjectsStore, a6 as useWorkflowHelpers, bv as useNodeHelpers, b8 as useClipboard, f5 as UPDATE_WEBHOOK_ID_NODE_TYPES, dq as generateNodesGraph, f6 as getNewNodePosition, dD as AddConnectionCommand, az as STICKY_NODE_TYPE, dE as RemoveConnectionCommand, ab as EnterpriseEditionFeature, c1 as deepCopy, f7 as isPresent, dF as RemoveNodeCommand, f8 as RenameNodeCommand, f9 as MoveNodeCommand, fa as DEFAULT_NODE_SIZE, fb as CONFIGURATION_NODE_SIZE, br as getConnectionTypes, fc as generateOffsets, fd as CONFIGURABLE_NODE_SIZE, fe as PUSH_NODES_OFFSET, dG as AddNodeCommand, ff as NODE_SIZE, fg as GRID_SIZE, fh as getNodeParameters } from "./index-CDluwnbb.js";
|
|
2
|
+
function castSlice(array, start, end) {
|
|
3
|
+
var length = array.length;
|
|
4
|
+
end = end === void 0 ? length : end;
|
|
5
|
+
return false ? array : baseSlice(array, start, end);
|
|
6
|
+
}
|
|
7
|
+
var rsAstralRange$1 = "\\ud800-\\udfff", rsComboMarksRange$1 = "\\u0300-\\u036f", reComboHalfMarksRange$1 = "\\ufe20-\\ufe2f", rsComboSymbolsRange$1 = "\\u20d0-\\u20ff", rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1, rsVarRange$1 = "\\ufe0e\\ufe0f";
|
|
8
|
+
var rsZWJ$1 = "\\u200d";
|
|
9
|
+
var reHasUnicode = RegExp("[" + rsZWJ$1 + rsAstralRange$1 + rsComboRange$1 + rsVarRange$1 + "]");
|
|
10
|
+
function hasUnicode(string) {
|
|
11
|
+
return reHasUnicode.test(string);
|
|
12
|
+
}
|
|
13
|
+
function asciiToArray(string) {
|
|
14
|
+
return string.split("");
|
|
15
|
+
}
|
|
16
|
+
var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsVarRange = "\\ufe0e\\ufe0f";
|
|
17
|
+
var rsAstral = "[" + rsAstralRange + "]", rsCombo = "[" + rsComboRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsZWJ = "\\u200d";
|
|
18
|
+
var reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
|
|
19
|
+
var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
|
|
20
|
+
function unicodeToArray(string) {
|
|
21
|
+
return string.match(reUnicode) || [];
|
|
22
|
+
}
|
|
23
|
+
function stringToArray(string) {
|
|
24
|
+
return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
|
|
25
|
+
}
|
|
26
|
+
function createCaseFirst(methodName) {
|
|
27
|
+
return function(string) {
|
|
28
|
+
string = toString(string);
|
|
29
|
+
var strSymbols = hasUnicode(string) ? stringToArray(string) : void 0;
|
|
30
|
+
var chr = strSymbols ? strSymbols[0] : string.charAt(0);
|
|
31
|
+
var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1);
|
|
32
|
+
return chr[methodName]() + trailing;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
var upperFirst = createCaseFirst("toUpperCase");
|
|
36
|
+
function capitalize(string) {
|
|
37
|
+
return upperFirst(toString(string).toLowerCase());
|
|
38
|
+
}
|
|
3
39
|
var camelCase = createCompounder(function(result, word, index) {
|
|
4
40
|
word = word.toLowerCase();
|
|
5
41
|
return result + (index ? capitalize(word) : word);
|
|
@@ -36,168 +72,235 @@ function baseDifference(array, values, iteratee, comparator) {
|
|
|
36
72
|
var difference = baseRest(function(array, values) {
|
|
37
73
|
return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) : [];
|
|
38
74
|
});
|
|
39
|
-
function
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const toNodeName = toPort.node;
|
|
51
|
-
const toId = nodes.find((node) => node.name === toNodeName)?.id ?? "";
|
|
52
|
-
const toConnectionType = toPort.type;
|
|
53
|
-
const toIndex = toPort.index;
|
|
54
|
-
const sourceHandle = createCanvasConnectionHandleString({
|
|
55
|
-
mode: CanvasConnectionMode.Output,
|
|
56
|
-
type: fromConnectionType,
|
|
57
|
-
index: fromIndex
|
|
58
|
-
});
|
|
59
|
-
const targetHandle = createCanvasConnectionHandleString({
|
|
60
|
-
mode: CanvasConnectionMode.Input,
|
|
61
|
-
type: toConnectionType,
|
|
62
|
-
index: toIndex
|
|
63
|
-
});
|
|
64
|
-
const connectionId = createCanvasConnectionId({
|
|
65
|
-
source: fromId,
|
|
66
|
-
sourceHandle,
|
|
67
|
-
target: toId,
|
|
68
|
-
targetHandle
|
|
69
|
-
});
|
|
70
|
-
if (fromId && toId) {
|
|
71
|
-
mappedConnections.push({
|
|
72
|
-
id: connectionId,
|
|
73
|
-
source: fromId,
|
|
74
|
-
target: toId,
|
|
75
|
-
sourceHandle,
|
|
76
|
-
targetHandle,
|
|
77
|
-
data: {
|
|
78
|
-
source: {
|
|
79
|
-
node: fromNodeName,
|
|
80
|
-
index: fromIndex,
|
|
81
|
-
type: fromConnectionType
|
|
82
|
-
},
|
|
83
|
-
target: {
|
|
84
|
-
node: toNodeName,
|
|
85
|
-
index: toIndex,
|
|
86
|
-
type: toConnectionType
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
return mappedConnections;
|
|
96
|
-
}
|
|
97
|
-
function mapLegacyConnectionToCanvasConnection(sourceNode, targetNode, legacyConnection) {
|
|
98
|
-
const source = sourceNode.id;
|
|
99
|
-
const sourceHandle = createCanvasConnectionHandleString({
|
|
100
|
-
mode: CanvasConnectionMode.Output,
|
|
101
|
-
type: legacyConnection[0].type,
|
|
102
|
-
index: legacyConnection[0].index
|
|
75
|
+
function useNodeType(options = {}) {
|
|
76
|
+
const nodeTypesStore = useNodeTypesStore();
|
|
77
|
+
const nodeType = computed(() => {
|
|
78
|
+
if (options.nodeType) {
|
|
79
|
+
return unref(options.nodeType);
|
|
80
|
+
}
|
|
81
|
+
const activeNode = unref(options.node);
|
|
82
|
+
if (activeNode) {
|
|
83
|
+
return nodeTypesStore.getNodeType(activeNode.type, activeNode.typeVersion);
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
103
86
|
});
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
87
|
+
const isSubNodeType$1 = computed(() => isSubNodeType(nodeType.value));
|
|
88
|
+
const isMultipleOutputsNodeType = computed(() => {
|
|
89
|
+
const outputs = nodeType.value?.outputs;
|
|
90
|
+
if (typeof outputs === "string") return false;
|
|
91
|
+
return (outputs ?? []).length > 1;
|
|
109
92
|
});
|
|
110
93
|
return {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
targetHandle
|
|
94
|
+
nodeType,
|
|
95
|
+
isSubNodeType: isSubNodeType$1,
|
|
96
|
+
isMultipleOutputsNodeType
|
|
115
97
|
};
|
|
116
98
|
}
|
|
117
|
-
function
|
|
118
|
-
const
|
|
119
|
-
const
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
99
|
+
function usePinnedData(node, options = {}) {
|
|
100
|
+
const rootStore = useRootStore();
|
|
101
|
+
const workflowsStore = useWorkflowsStore();
|
|
102
|
+
const toast = useToast();
|
|
103
|
+
const i18n2 = useI18n();
|
|
104
|
+
const telemetry = useTelemetry();
|
|
105
|
+
const externalHooks = useExternalHooks();
|
|
106
|
+
const { getInputDataWithPinned } = useDataSchema();
|
|
107
|
+
const { isSubNodeType: isSubNodeType2, isMultipleOutputsNodeType } = useNodeType({
|
|
108
|
+
node
|
|
109
|
+
});
|
|
110
|
+
const data = computed(() => {
|
|
111
|
+
const targetNode = unref(node);
|
|
112
|
+
return targetNode ? workflowsStore.pinDataByNodeName(targetNode.name) : void 0;
|
|
113
|
+
});
|
|
114
|
+
const hasData = computed(() => {
|
|
115
|
+
const targetNode = unref(node);
|
|
116
|
+
return !!targetNode && typeof data.value !== "undefined";
|
|
117
|
+
});
|
|
118
|
+
const isValidNodeType = computed(() => {
|
|
119
|
+
const targetNode = unref(node);
|
|
120
|
+
return !!targetNode && !isSubNodeType2.value && !isMultipleOutputsNodeType.value && !PIN_DATA_NODE_TYPES_DENYLIST.includes(targetNode.type);
|
|
121
|
+
});
|
|
122
|
+
function canPinNode(checkDataEmpty = false, outputIndex) {
|
|
123
|
+
const targetNode = unref(node);
|
|
124
|
+
if (targetNode === null || PIN_DATA_NODE_TYPES_DENYLIST.includes(targetNode.type)) return false;
|
|
125
|
+
const nodeType = useNodeTypesStore().getNodeType(targetNode.type, targetNode.typeVersion);
|
|
126
|
+
const dataToPin = getInputDataWithPinned(targetNode);
|
|
127
|
+
if (!nodeType || checkDataEmpty && dataToPin.length === 0) return false;
|
|
128
|
+
const workflow = workflowsStore.getCurrentWorkflow();
|
|
129
|
+
const outputs = getNodeOutputs(workflow, targetNode, nodeType).map(
|
|
130
|
+
(output) => typeof output === "string" ? { type: output } : output
|
|
131
|
+
);
|
|
132
|
+
const mainOutputs = outputs.filter(
|
|
133
|
+
(output) => output.type === NodeConnectionTypes.Main && output.category !== "error"
|
|
134
|
+
);
|
|
135
|
+
let indexAcceptable = true;
|
|
136
|
+
if (outputIndex !== void 0) {
|
|
137
|
+
const output = outputs[outputIndex];
|
|
138
|
+
if (outputs[outputIndex] === void 0) return false;
|
|
139
|
+
indexAcceptable = output.type === NodeConnectionTypes.Main && output.category !== "error";
|
|
140
|
+
}
|
|
141
|
+
return mainOutputs.length === 1 && indexAcceptable;
|
|
124
142
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
index: targetIndex
|
|
143
|
+
function isValidJSON(data2) {
|
|
144
|
+
try {
|
|
145
|
+
JSON.parse(data2);
|
|
146
|
+
return true;
|
|
147
|
+
} catch (error) {
|
|
148
|
+
const title = i18n2.baseText("runData.editOutputInvalid");
|
|
149
|
+
const toRemove = new RegExp(/JSON\.parse:|of the JSON data/, "g");
|
|
150
|
+
const message = error.message.replace(toRemove, "").trim();
|
|
151
|
+
const positionMatchRegEx = /at position (\d+)/;
|
|
152
|
+
const positionMatch = error.message.match(positionMatchRegEx);
|
|
153
|
+
error.message = message.charAt(0).toUpperCase() + message.slice(1);
|
|
154
|
+
error.message = error.message.replace(
|
|
155
|
+
"Unexpected token ' in JSON",
|
|
156
|
+
i18n2.baseText("runData.editOutputInvalid.singleQuote")
|
|
157
|
+
);
|
|
158
|
+
if (positionMatch) {
|
|
159
|
+
const position = parseInt(positionMatch[1], 10);
|
|
160
|
+
const lineBreaksUpToPosition = (data2.slice(0, position).match(/\n/g) || []).length;
|
|
161
|
+
error.message = error.message.replace(
|
|
162
|
+
positionMatchRegEx,
|
|
163
|
+
i18n2.baseText("runData.editOutputInvalid.atPosition", {
|
|
164
|
+
interpolate: {
|
|
165
|
+
position: `${position}`
|
|
166
|
+
}
|
|
167
|
+
})
|
|
168
|
+
);
|
|
169
|
+
error.message = `${i18n2.baseText("runData.editOutputInvalid.onLine", {
|
|
170
|
+
interpolate: {
|
|
171
|
+
line: `${lineBreaksUpToPosition + 1}`
|
|
172
|
+
}
|
|
173
|
+
})} ${error.message}`;
|
|
174
|
+
}
|
|
175
|
+
toast.showError(error, title);
|
|
176
|
+
return false;
|
|
160
177
|
}
|
|
161
|
-
];
|
|
162
|
-
}
|
|
163
|
-
function mapLegacyEndpointsToCanvasConnectionPort(endpoints, endpointNames = []) {
|
|
164
|
-
if (typeof endpoints === "string") {
|
|
165
|
-
console.warn("Node endpoints have not been evaluated", endpoints);
|
|
166
|
-
return [];
|
|
167
178
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
function getMaxPinnedDataSize() {
|
|
180
|
+
return window.maxPinnedDataSize ?? MAX_PINNED_DATA_SIZE;
|
|
181
|
+
}
|
|
182
|
+
function isValidSize(data2) {
|
|
183
|
+
const targetNode = unref(node);
|
|
184
|
+
if (!targetNode) {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
if (typeof data2 === "object") data2 = JSON.stringify(data2);
|
|
188
|
+
const { pinData: currentPinData, ...workflow } = workflowsStore.getCurrentWorkflow();
|
|
189
|
+
const workflowJson = jsonStringify(workflow, { replaceCircularRefs: true });
|
|
190
|
+
const newPinData = { ...currentPinData, [targetNode.name]: data2 };
|
|
191
|
+
const newPinDataSize = workflowsStore.getPinDataSize(newPinData);
|
|
192
|
+
if (newPinDataSize > getMaxPinnedDataSize()) {
|
|
193
|
+
toast.showError(
|
|
194
|
+
new Error(
|
|
195
|
+
i18n2.baseText("ndv.pinData.error.tooLarge.description", {
|
|
196
|
+
interpolate: {
|
|
197
|
+
size: toMegaBytes(newPinDataSize),
|
|
198
|
+
limit: toMegaBytes(getMaxPinnedDataSize())
|
|
199
|
+
}
|
|
200
|
+
})
|
|
201
|
+
),
|
|
202
|
+
i18n2.baseText("ndv.pinData.error.tooLarge.title")
|
|
203
|
+
);
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
const workflowSize = stringSizeInBytes(workflowJson) + newPinDataSize;
|
|
207
|
+
const limit = MAX_WORKFLOW_SIZE - MAX_EXPECTED_REQUEST_SIZE;
|
|
208
|
+
if (workflowSize > limit) {
|
|
209
|
+
toast.showError(
|
|
210
|
+
new Error(
|
|
211
|
+
i18n2.baseText("ndv.pinData.error.tooLargeWorkflow.description", {
|
|
212
|
+
interpolate: { size: toMegaBytes(workflowSize), limit: toMegaBytes(limit) }
|
|
213
|
+
})
|
|
214
|
+
),
|
|
215
|
+
i18n2.baseText("ndv.pinData.error.tooLargeWorkflow.title")
|
|
216
|
+
);
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
function onSetDataSuccess({ source }) {
|
|
222
|
+
const targetNode = unref(node);
|
|
223
|
+
const displayMode = unref(options.displayMode);
|
|
224
|
+
const runIndex = unref(options.runIndex);
|
|
225
|
+
const telemetryPayload = {
|
|
226
|
+
pinning_source: source,
|
|
227
|
+
node_type: targetNode?.type,
|
|
228
|
+
push_ref: rootStore.pushRef,
|
|
229
|
+
data_size: stringSizeInBytes(data.value),
|
|
230
|
+
view: displayMode,
|
|
231
|
+
run_index: runIndex
|
|
181
232
|
};
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
233
|
+
void externalHooks.run("runData.onDataPinningSuccess", telemetryPayload);
|
|
234
|
+
telemetry.track("Ndv data pinning success", telemetryPayload);
|
|
235
|
+
}
|
|
236
|
+
function onSetDataError({
|
|
237
|
+
errorType,
|
|
238
|
+
source
|
|
239
|
+
}) {
|
|
240
|
+
const targetNode = unref(node);
|
|
241
|
+
const displayMode = unref(options.displayMode);
|
|
242
|
+
const runIndex = unref(options.runIndex);
|
|
243
|
+
telemetry.track("Ndv data pinning failure", {
|
|
244
|
+
pinning_source: source,
|
|
245
|
+
node_type: targetNode?.type,
|
|
246
|
+
push_ref: rootStore.pushRef,
|
|
247
|
+
data_size: stringSizeInBytes(data.value),
|
|
248
|
+
view: displayMode,
|
|
249
|
+
run_index: runIndex,
|
|
250
|
+
error_type: errorType
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
function setData(data2, source) {
|
|
254
|
+
const targetNode = unref(node);
|
|
255
|
+
if (!targetNode) {
|
|
256
|
+
return;
|
|
198
257
|
}
|
|
258
|
+
if (typeof data2 === "string") {
|
|
259
|
+
if (!isValidJSON(data2)) {
|
|
260
|
+
onSetDataError({ errorType: "invalid-json", source });
|
|
261
|
+
throw new Error("Invalid JSON");
|
|
262
|
+
}
|
|
263
|
+
data2 = jsonParse(data2);
|
|
264
|
+
}
|
|
265
|
+
if (!isValidSize(data2)) {
|
|
266
|
+
onSetDataError({ errorType: "data-too-large", source });
|
|
267
|
+
throw new Error("Data too large");
|
|
268
|
+
}
|
|
269
|
+
workflowsStore.pinData({ node: targetNode, data: data2 });
|
|
270
|
+
onSetDataSuccess({ source });
|
|
199
271
|
}
|
|
200
|
-
|
|
272
|
+
function onUnsetData({ source }) {
|
|
273
|
+
const targetNode = unref(node);
|
|
274
|
+
const runIndex = unref(options.runIndex);
|
|
275
|
+
telemetry.track("User unpinned ndv data", {
|
|
276
|
+
node_type: targetNode?.type,
|
|
277
|
+
push_ref: rootStore.pushRef,
|
|
278
|
+
run_index: runIndex,
|
|
279
|
+
source,
|
|
280
|
+
data_size: stringSizeInBytes(data.value)
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
function unsetData(source) {
|
|
284
|
+
const targetNode = unref(node);
|
|
285
|
+
if (!targetNode) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
onUnsetData({ source });
|
|
289
|
+
workflowsStore.unpinData({ node: targetNode });
|
|
290
|
+
}
|
|
291
|
+
return {
|
|
292
|
+
data,
|
|
293
|
+
hasData,
|
|
294
|
+
isValidNodeType,
|
|
295
|
+
canPinNode,
|
|
296
|
+
setData,
|
|
297
|
+
onSetDataSuccess,
|
|
298
|
+
onSetDataError,
|
|
299
|
+
unsetData,
|
|
300
|
+
onUnsetData,
|
|
301
|
+
isValidJSON,
|
|
302
|
+
isValidSize
|
|
303
|
+
};
|
|
201
304
|
}
|
|
202
305
|
const SEQUENTIAL_BONUS = 60;
|
|
203
306
|
const SEPARATOR_BONUS = 30;
|
|
@@ -663,7 +766,7 @@ function AINodesView(_nodes) {
|
|
|
663
766
|
title: AI_CATEGORY_DOCUMENT_LOADERS,
|
|
664
767
|
info: getSubcategoryInfo(AI_CATEGORY_DOCUMENT_LOADERS),
|
|
665
768
|
icon: "file-import",
|
|
666
|
-
...getAISubcategoryProperties(
|
|
769
|
+
...getAISubcategoryProperties(NodeConnectionTypes.AiDocument)
|
|
667
770
|
}
|
|
668
771
|
},
|
|
669
772
|
{
|
|
@@ -673,7 +776,7 @@ function AINodesView(_nodes) {
|
|
|
673
776
|
title: AI_CATEGORY_LANGUAGE_MODELS,
|
|
674
777
|
info: getSubcategoryInfo(AI_CATEGORY_LANGUAGE_MODELS),
|
|
675
778
|
icon: "language",
|
|
676
|
-
...getAISubcategoryProperties(
|
|
779
|
+
...getAISubcategoryProperties(NodeConnectionTypes.AiLanguageModel)
|
|
677
780
|
}
|
|
678
781
|
},
|
|
679
782
|
{
|
|
@@ -683,7 +786,7 @@ function AINodesView(_nodes) {
|
|
|
683
786
|
title: AI_CATEGORY_MEMORY,
|
|
684
787
|
info: getSubcategoryInfo(AI_CATEGORY_MEMORY),
|
|
685
788
|
icon: "brain",
|
|
686
|
-
...getAISubcategoryProperties(
|
|
789
|
+
...getAISubcategoryProperties(NodeConnectionTypes.AiMemory)
|
|
687
790
|
}
|
|
688
791
|
},
|
|
689
792
|
{
|
|
@@ -693,7 +796,7 @@ function AINodesView(_nodes) {
|
|
|
693
796
|
title: AI_CATEGORY_OUTPUTPARSER,
|
|
694
797
|
info: getSubcategoryInfo(AI_CATEGORY_OUTPUTPARSER),
|
|
695
798
|
icon: "list",
|
|
696
|
-
...getAISubcategoryProperties(
|
|
799
|
+
...getAISubcategoryProperties(NodeConnectionTypes.AiOutputParser)
|
|
697
800
|
}
|
|
698
801
|
},
|
|
699
802
|
{
|
|
@@ -703,7 +806,7 @@ function AINodesView(_nodes) {
|
|
|
703
806
|
title: AI_CATEGORY_RETRIEVERS,
|
|
704
807
|
info: getSubcategoryInfo(AI_CATEGORY_RETRIEVERS),
|
|
705
808
|
icon: "search",
|
|
706
|
-
...getAISubcategoryProperties(
|
|
809
|
+
...getAISubcategoryProperties(NodeConnectionTypes.AiRetriever)
|
|
707
810
|
}
|
|
708
811
|
},
|
|
709
812
|
{
|
|
@@ -713,7 +816,7 @@ function AINodesView(_nodes) {
|
|
|
713
816
|
title: AI_CATEGORY_TEXT_SPLITTERS,
|
|
714
817
|
info: getSubcategoryInfo(AI_CATEGORY_TEXT_SPLITTERS),
|
|
715
818
|
icon: "grip-lines-vertical",
|
|
716
|
-
...getAISubcategoryProperties(
|
|
819
|
+
...getAISubcategoryProperties(NodeConnectionTypes.AiTextSplitter)
|
|
717
820
|
}
|
|
718
821
|
},
|
|
719
822
|
{
|
|
@@ -724,7 +827,7 @@ function AINodesView(_nodes) {
|
|
|
724
827
|
title: AI_CATEGORY_TOOLS,
|
|
725
828
|
info: getSubcategoryInfo(AI_CATEGORY_TOOLS),
|
|
726
829
|
icon: "tools",
|
|
727
|
-
...getAISubcategoryProperties(
|
|
830
|
+
...getAISubcategoryProperties(NodeConnectionTypes.AiTool),
|
|
728
831
|
sections: [
|
|
729
832
|
{
|
|
730
833
|
key: "popular",
|
|
@@ -741,7 +844,7 @@ function AINodesView(_nodes) {
|
|
|
741
844
|
title: AI_CATEGORY_EMBEDDING,
|
|
742
845
|
info: getSubcategoryInfo(AI_CATEGORY_EMBEDDING),
|
|
743
846
|
icon: "vector-square",
|
|
744
|
-
...getAISubcategoryProperties(
|
|
847
|
+
...getAISubcategoryProperties(NodeConnectionTypes.AiEmbedding)
|
|
745
848
|
}
|
|
746
849
|
},
|
|
747
850
|
{
|
|
@@ -751,7 +854,7 @@ function AINodesView(_nodes) {
|
|
|
751
854
|
title: AI_CATEGORY_VECTOR_STORES,
|
|
752
855
|
info: getSubcategoryInfo(AI_CATEGORY_VECTOR_STORES),
|
|
753
856
|
icon: "project-diagram",
|
|
754
|
-
...getAISubcategoryProperties(
|
|
857
|
+
...getAISubcategoryProperties(NodeConnectionTypes.AiVectorStore)
|
|
755
858
|
}
|
|
756
859
|
},
|
|
757
860
|
{
|
|
@@ -1442,6 +1545,169 @@ const useViewStacks = defineStore("nodeCreatorViewStacks", () => {
|
|
|
1442
1545
|
popViewStack
|
|
1443
1546
|
};
|
|
1444
1547
|
});
|
|
1548
|
+
function mapLegacyConnectionsToCanvasConnections(legacyConnections, nodes) {
|
|
1549
|
+
const mappedConnections = [];
|
|
1550
|
+
Object.keys(legacyConnections).forEach((fromNodeName) => {
|
|
1551
|
+
const fromId = nodes.find((node) => node.name === fromNodeName)?.id ?? "";
|
|
1552
|
+
const fromConnectionTypes = Object.keys(
|
|
1553
|
+
legacyConnections[fromNodeName]
|
|
1554
|
+
);
|
|
1555
|
+
fromConnectionTypes.forEach((fromConnectionType) => {
|
|
1556
|
+
const fromPorts = legacyConnections[fromNodeName][fromConnectionType];
|
|
1557
|
+
fromPorts?.forEach((toPorts, fromIndex) => {
|
|
1558
|
+
toPorts?.forEach((toPort) => {
|
|
1559
|
+
const toNodeName = toPort.node;
|
|
1560
|
+
const toId = nodes.find((node) => node.name === toNodeName)?.id ?? "";
|
|
1561
|
+
const toConnectionType = toPort.type;
|
|
1562
|
+
const toIndex = toPort.index;
|
|
1563
|
+
const sourceHandle = createCanvasConnectionHandleString({
|
|
1564
|
+
mode: CanvasConnectionMode.Output,
|
|
1565
|
+
type: fromConnectionType,
|
|
1566
|
+
index: fromIndex
|
|
1567
|
+
});
|
|
1568
|
+
const targetHandle = createCanvasConnectionHandleString({
|
|
1569
|
+
mode: CanvasConnectionMode.Input,
|
|
1570
|
+
type: toConnectionType,
|
|
1571
|
+
index: toIndex
|
|
1572
|
+
});
|
|
1573
|
+
const connectionId = createCanvasConnectionId({
|
|
1574
|
+
source: fromId,
|
|
1575
|
+
sourceHandle,
|
|
1576
|
+
target: toId,
|
|
1577
|
+
targetHandle
|
|
1578
|
+
});
|
|
1579
|
+
if (fromId && toId) {
|
|
1580
|
+
mappedConnections.push({
|
|
1581
|
+
id: connectionId,
|
|
1582
|
+
source: fromId,
|
|
1583
|
+
target: toId,
|
|
1584
|
+
sourceHandle,
|
|
1585
|
+
targetHandle,
|
|
1586
|
+
data: {
|
|
1587
|
+
source: {
|
|
1588
|
+
node: fromNodeName,
|
|
1589
|
+
index: fromIndex,
|
|
1590
|
+
type: fromConnectionType
|
|
1591
|
+
},
|
|
1592
|
+
target: {
|
|
1593
|
+
node: toNodeName,
|
|
1594
|
+
index: toIndex,
|
|
1595
|
+
type: toConnectionType
|
|
1596
|
+
}
|
|
1597
|
+
}
|
|
1598
|
+
});
|
|
1599
|
+
}
|
|
1600
|
+
});
|
|
1601
|
+
});
|
|
1602
|
+
});
|
|
1603
|
+
});
|
|
1604
|
+
return mappedConnections;
|
|
1605
|
+
}
|
|
1606
|
+
function mapLegacyConnectionToCanvasConnection(sourceNode, targetNode, legacyConnection) {
|
|
1607
|
+
const source = sourceNode.id;
|
|
1608
|
+
const sourceHandle = createCanvasConnectionHandleString({
|
|
1609
|
+
mode: CanvasConnectionMode.Output,
|
|
1610
|
+
type: legacyConnection[0].type,
|
|
1611
|
+
index: legacyConnection[0].index
|
|
1612
|
+
});
|
|
1613
|
+
const target = targetNode.id;
|
|
1614
|
+
const targetHandle = createCanvasConnectionHandleString({
|
|
1615
|
+
mode: CanvasConnectionMode.Input,
|
|
1616
|
+
type: legacyConnection[1].type,
|
|
1617
|
+
index: legacyConnection[1].index
|
|
1618
|
+
});
|
|
1619
|
+
return {
|
|
1620
|
+
source,
|
|
1621
|
+
sourceHandle,
|
|
1622
|
+
target,
|
|
1623
|
+
targetHandle
|
|
1624
|
+
};
|
|
1625
|
+
}
|
|
1626
|
+
function parseCanvasConnectionHandleString(handle) {
|
|
1627
|
+
const [mode, type, index] = (handle ?? "").split("/");
|
|
1628
|
+
const resolvedMode = isValidCanvasConnectionMode(mode) ? mode : CanvasConnectionMode.Output;
|
|
1629
|
+
const resolvedType = isValidNodeConnectionType(type) ? type : NodeConnectionTypes.Main;
|
|
1630
|
+
let resolvedIndex = parseInt(index, 10);
|
|
1631
|
+
if (isNaN(resolvedIndex)) {
|
|
1632
|
+
resolvedIndex = 0;
|
|
1633
|
+
}
|
|
1634
|
+
return {
|
|
1635
|
+
mode: resolvedMode,
|
|
1636
|
+
type: resolvedType,
|
|
1637
|
+
index: resolvedIndex
|
|
1638
|
+
};
|
|
1639
|
+
}
|
|
1640
|
+
function createCanvasConnectionHandleString({
|
|
1641
|
+
mode,
|
|
1642
|
+
type = NodeConnectionTypes.Main,
|
|
1643
|
+
index = 0
|
|
1644
|
+
}) {
|
|
1645
|
+
return `${mode}/${type}/${index}`;
|
|
1646
|
+
}
|
|
1647
|
+
function createCanvasConnectionId(connection) {
|
|
1648
|
+
return `[${connection.source}/${connection.sourceHandle}][${connection.target}/${connection.targetHandle}]`;
|
|
1649
|
+
}
|
|
1650
|
+
function mapCanvasConnectionToLegacyConnection(sourceNode, targetNode, connection) {
|
|
1651
|
+
const sourceNodeName = sourceNode?.name ?? "";
|
|
1652
|
+
const { type: sourceType, index: sourceIndex } = parseCanvasConnectionHandleString(
|
|
1653
|
+
connection.sourceHandle
|
|
1654
|
+
);
|
|
1655
|
+
const targetNodeName = targetNode?.name ?? "";
|
|
1656
|
+
const { type: targetType, index: targetIndex } = parseCanvasConnectionHandleString(
|
|
1657
|
+
connection.targetHandle
|
|
1658
|
+
);
|
|
1659
|
+
return [
|
|
1660
|
+
{
|
|
1661
|
+
node: sourceNodeName,
|
|
1662
|
+
type: sourceType,
|
|
1663
|
+
index: sourceIndex
|
|
1664
|
+
},
|
|
1665
|
+
{
|
|
1666
|
+
node: targetNodeName,
|
|
1667
|
+
type: targetType,
|
|
1668
|
+
index: targetIndex
|
|
1669
|
+
}
|
|
1670
|
+
];
|
|
1671
|
+
}
|
|
1672
|
+
function mapLegacyEndpointsToCanvasConnectionPort(endpoints, endpointNames = []) {
|
|
1673
|
+
if (typeof endpoints === "string") {
|
|
1674
|
+
console.warn("Node endpoints have not been evaluated", endpoints);
|
|
1675
|
+
return [];
|
|
1676
|
+
}
|
|
1677
|
+
return endpoints.map((endpoint, endpointIndex) => {
|
|
1678
|
+
const typeValue = typeof endpoint === "string" ? endpoint : endpoint.type;
|
|
1679
|
+
const type = isValidNodeConnectionType(typeValue) ? typeValue : NodeConnectionTypes.Main;
|
|
1680
|
+
const label = typeof endpoint === "string" ? endpointNames[endpointIndex] : endpoint.displayName;
|
|
1681
|
+
const index = endpoints.slice(0, endpointIndex + 1).filter((e) => (typeof e === "string" ? e : e.type) === type).length - 1;
|
|
1682
|
+
const required = typeof endpoint === "string" ? false : endpoint.required;
|
|
1683
|
+
const maxConnections = typeof endpoint === "string" ? void 0 : endpoint.maxConnections;
|
|
1684
|
+
return {
|
|
1685
|
+
type,
|
|
1686
|
+
index,
|
|
1687
|
+
label,
|
|
1688
|
+
...maxConnections ? { maxConnections } : {},
|
|
1689
|
+
...required ? { required } : {}
|
|
1690
|
+
};
|
|
1691
|
+
});
|
|
1692
|
+
}
|
|
1693
|
+
function checkOverlap(node1, node2) {
|
|
1694
|
+
return !// node1 is completely to the left of node2
|
|
1695
|
+
(node1.x + node1.width <= node2.x || // node2 is completely to the left of node1
|
|
1696
|
+
node2.x + node2.width <= node1.x || // node1 is completely above node2
|
|
1697
|
+
node1.y + node1.height <= node2.y || // node2 is completely above node1
|
|
1698
|
+
node2.y + node2.height <= node1.y);
|
|
1699
|
+
}
|
|
1700
|
+
function insertSpacersBetweenEndpoints(endpoints, requiredEndpointsCount = 0, minEndpointsCount = 4) {
|
|
1701
|
+
const endpointsWithSpacers = [...endpoints];
|
|
1702
|
+
const optionalNonMainInputsCount = endpointsWithSpacers.length - requiredEndpointsCount;
|
|
1703
|
+
const spacerCount = minEndpointsCount - requiredEndpointsCount - optionalNonMainInputsCount;
|
|
1704
|
+
if (endpointsWithSpacers.length < minEndpointsCount) {
|
|
1705
|
+
for (let i = 0; i < spacerCount; i++) {
|
|
1706
|
+
endpointsWithSpacers.splice(requiredEndpointsCount + i, 0, null);
|
|
1707
|
+
}
|
|
1708
|
+
}
|
|
1709
|
+
return endpointsWithSpacers;
|
|
1710
|
+
}
|
|
1445
1711
|
const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, () => {
|
|
1446
1712
|
const workflowsStore = useWorkflowsStore();
|
|
1447
1713
|
const ndvStore = useNDVStore();
|
|
@@ -1548,7 +1814,7 @@ const useNodeCreatorStore = defineStore(STORES.NODE_CREATOR, () => {
|
|
|
1548
1814
|
uiStore.lastInteractedWithNodeHandle = connection.sourceHandle ?? null;
|
|
1549
1815
|
uiStore.lastInteractedWithNodeId = sourceNode.id;
|
|
1550
1816
|
const isOutput = mode === CanvasConnectionMode.Output;
|
|
1551
|
-
const isScopedConnection = type !==
|
|
1817
|
+
const isScopedConnection = type !== NodeConnectionTypes.Main;
|
|
1552
1818
|
setNodeCreatorState({
|
|
1553
1819
|
source: eventSource,
|
|
1554
1820
|
createNodeActive: true,
|
|
@@ -2232,13 +2498,13 @@ function useCanvasOperations({ router }) {
|
|
|
2232
2498
|
source: lastInteractedWithNodeId,
|
|
2233
2499
|
sourceHandle: createCanvasConnectionHandleString({
|
|
2234
2500
|
mode: CanvasConnectionMode.Output,
|
|
2235
|
-
type:
|
|
2501
|
+
type: NodeConnectionTypes.Main,
|
|
2236
2502
|
index: 0
|
|
2237
2503
|
}),
|
|
2238
2504
|
target: node.id,
|
|
2239
2505
|
targetHandle: createCanvasConnectionHandleString({
|
|
2240
2506
|
mode: CanvasConnectionMode.Input,
|
|
2241
|
-
type:
|
|
2507
|
+
type: NodeConnectionTypes.Main,
|
|
2242
2508
|
index: 0
|
|
2243
2509
|
})
|
|
2244
2510
|
});
|
|
@@ -2251,7 +2517,7 @@ function useCanvasOperations({ router }) {
|
|
|
2251
2517
|
source: node.id,
|
|
2252
2518
|
sourceHandle: createCanvasConnectionHandleString({
|
|
2253
2519
|
mode: CanvasConnectionMode.Input,
|
|
2254
|
-
type:
|
|
2520
|
+
type: NodeConnectionTypes.Main,
|
|
2255
2521
|
index: 0
|
|
2256
2522
|
}),
|
|
2257
2523
|
target: lastInteractedWithNodeConnection.target,
|
|
@@ -2355,7 +2621,7 @@ function useCanvasOperations({ router }) {
|
|
|
2355
2621
|
const { type: connectionType, index: connectionIndex } = parseCanvasConnectionHandleString(
|
|
2356
2622
|
lastInteractedWithNodeHandle ?? lastInteractedWithNodeConnection?.sourceHandle ?? ""
|
|
2357
2623
|
);
|
|
2358
|
-
const nodeSize = connectionType ===
|
|
2624
|
+
const nodeSize = connectionType === NodeConnectionTypes.Main ? DEFAULT_NODE_SIZE : CONFIGURATION_NODE_SIZE;
|
|
2359
2625
|
if (lastInteractedWithNode) {
|
|
2360
2626
|
const lastInteractedWithNodeTypeDescription = nodeTypesStore.getNodeType(
|
|
2361
2627
|
lastInteractedWithNode.type,
|
|
@@ -2366,8 +2632,8 @@ function useCanvasOperations({ router }) {
|
|
|
2366
2632
|
);
|
|
2367
2633
|
const newNodeInsertPosition = uiStore.lastCancelledConnectionPosition;
|
|
2368
2634
|
if (newNodeInsertPosition) {
|
|
2369
|
-
const xOffset = connectionType ===
|
|
2370
|
-
const yOffset = connectionType ===
|
|
2635
|
+
const xOffset = connectionType === NodeConnectionTypes.Main ? 0 : -nodeSize[0] / 2;
|
|
2636
|
+
const yOffset = connectionType === NodeConnectionTypes.Main ? -nodeSize[1] / 2 : 0;
|
|
2371
2637
|
position = [newNodeInsertPosition[0] + xOffset, newNodeInsertPosition[1] + yOffset];
|
|
2372
2638
|
uiStore.lastCancelledConnectionPosition = void 0;
|
|
2373
2639
|
} else if (lastInteractedWithNodeTypeDescription && lastInteractedWithNodeObject) {
|
|
@@ -2379,7 +2645,7 @@ function useCanvasOperations({ router }) {
|
|
|
2379
2645
|
const lastInteractedWithNodeInputTypes = getConnectionTypes(
|
|
2380
2646
|
lastInteractedWithNodeInputs
|
|
2381
2647
|
);
|
|
2382
|
-
const lastInteractedWithNodeScopedInputTypes = (lastInteractedWithNodeInputTypes || []).filter((input) => input !==
|
|
2648
|
+
const lastInteractedWithNodeScopedInputTypes = (lastInteractedWithNodeInputTypes || []).filter((input) => input !== NodeConnectionTypes.Main);
|
|
2383
2649
|
const lastInteractedWithNodeOutputs = getNodeOutputs(
|
|
2384
2650
|
editableWorkflowObject.value,
|
|
2385
2651
|
lastInteractedWithNodeObject,
|
|
@@ -2389,7 +2655,7 @@ function useCanvasOperations({ router }) {
|
|
|
2389
2655
|
lastInteractedWithNodeOutputs
|
|
2390
2656
|
);
|
|
2391
2657
|
const lastInteractedWithNodeMainOutputs = lastInteractedWithNodeOutputTypes.filter(
|
|
2392
|
-
(output) => output ===
|
|
2658
|
+
(output) => output === NodeConnectionTypes.Main
|
|
2393
2659
|
);
|
|
2394
2660
|
let yOffset = 0;
|
|
2395
2661
|
if (lastInteractedWithNodeConnection) {
|
|
@@ -2416,7 +2682,7 @@ function useCanvasOperations({ router }) {
|
|
|
2416
2682
|
}
|
|
2417
2683
|
const outputTypes = getConnectionTypes(outputs);
|
|
2418
2684
|
pushOffsets = [100, 0];
|
|
2419
|
-
if (outputTypes.length > 0 && outputTypes.every((outputName) => outputName !==
|
|
2685
|
+
if (outputTypes.length > 0 && outputTypes.every((outputName) => outputName !== NodeConnectionTypes.Main)) {
|
|
2420
2686
|
const scopedConnectionIndex = lastInteractedWithNodeScopedInputTypes.findIndex(
|
|
2421
2687
|
(inputType) => outputs[0] === inputType
|
|
2422
2688
|
);
|
|
@@ -2430,7 +2696,7 @@ function useCanvasOperations({ router }) {
|
|
|
2430
2696
|
];
|
|
2431
2697
|
} else {
|
|
2432
2698
|
let pushOffset = PUSH_NODES_OFFSET;
|
|
2433
|
-
if (!!lastInteractedWithNodeInputTypes.find((input) => input !==
|
|
2699
|
+
if (!!lastInteractedWithNodeInputTypes.find((input) => input !== NodeConnectionTypes.Main)) {
|
|
2434
2700
|
pushOffset += 140;
|
|
2435
2701
|
}
|
|
2436
2702
|
position = [
|
|
@@ -3168,20 +3434,24 @@ export {
|
|
|
3168
3434
|
AINodesView as A,
|
|
3169
3435
|
RegularView as R,
|
|
3170
3436
|
TriggerView as T,
|
|
3171
|
-
|
|
3172
|
-
|
|
3437
|
+
useNodeCreatorStore as a,
|
|
3438
|
+
useCanvasOperations as b,
|
|
3173
3439
|
createCanvasConnectionHandleString as c,
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3440
|
+
capitalize as d,
|
|
3441
|
+
checkOverlap as e,
|
|
3442
|
+
mapLegacyConnectionsToCanvasConnections as f,
|
|
3443
|
+
useNodeType as g,
|
|
3444
|
+
upperFirst as h,
|
|
3179
3445
|
insertSpacersBetweenEndpoints as i,
|
|
3180
|
-
|
|
3181
|
-
|
|
3446
|
+
formatTriggerActionName as j,
|
|
3447
|
+
useViewStacks as k,
|
|
3448
|
+
camelCase as l,
|
|
3182
3449
|
mapLegacyEndpointsToCanvasConnectionPort as m,
|
|
3450
|
+
useKeyboardNavigation as n,
|
|
3451
|
+
AIView as o,
|
|
3183
3452
|
parseCanvasConnectionHandleString as p,
|
|
3453
|
+
flattenCreateElements as q,
|
|
3184
3454
|
sortNodeCreateElements as s,
|
|
3185
3455
|
transformNodeType as t,
|
|
3186
|
-
|
|
3456
|
+
usePinnedData as u
|
|
3187
3457
|
};
|