UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

135 lines (133 loc) 4.83 kB
; (function () { System.register(["./useTelemetry-legacy-B3pzzkAE.js", "./constants-legacy-TKxWCqvM.js", "./_baseOrderBy-legacy-CB2Dh5d_.js", "./nodeTransforms-legacy-BTRUclS4.js", "./templateTransforms-legacy-BTZU4lXs.js"], function (_export, _context) { "use strict"; var getNodesWithNormalizedPosition, getNewWorkflow, tryToParseNumber, VIEWS, assert, doesNodeHaveCredentialsToFill, replaceAllTemplateNodeCredentials; //#region src/features/workflows/templates/utils/templateActions.ts /** * Creates a new workflow from a template */ async function createWorkflowFromTemplate(opts) { const { credentialOverrides, nodeTypeProvider, rootStore, template, workflowsStore } = opts; const workflowData = await getNewWorkflow(rootStore.restApiContext, { name: template.name }); const nodes = getNodesWithNormalizedPosition(replaceAllTemplateNodeCredentials(nodeTypeProvider, template.workflow.nodes, credentialOverrides)); const connections = template.workflow.connections; const workflowToCreate = { name: workflowData.name, nodes, connections, active: false, meta: { templateId: template.id.toString() } }; return await workflowsStore.createNewWorkflow(workflowToCreate); } /** * Opens the template credential setup view */ async function openTemplateCredentialSetup(opts) { const { router, templateId, inNewBrowserTab = false, telemetry, source } = opts; telemetry.track("User opened cred setup", { source }); const routeLocation = { name: VIEWS.TEMPLATE_SETUP, params: { id: templateId } }; if (inNewBrowserTab) { const route = router.resolve(routeLocation); window.open(route.href, "_blank"); } else await router.push(routeLocation); } /** * Opens the given template's workflow on NodeView. Fires necessary * telemetry events. */ async function openTemplateWorkflowOnNodeView(opts) { const { externalHooks, templateId, templatesStore, inNewBrowserTab, router } = opts; const routeLocation = { name: VIEWS.TEMPLATE_IMPORT, params: { id: templateId } }; const telemetryPayload = { source: "workflow", template_id: tryToParseNumber(templateId), wf_template_repo_session_id: templatesStore.currentSessionId }; await externalHooks.run("templatesWorkflowView.openWorkflow", telemetryPayload); if (inNewBrowserTab) { const route = router.resolve(routeLocation); window.open(route.href, "_blank"); } else await router.push(routeLocation); } function hasTemplateCredentials(nodeTypeProvider, template) { return template.workflow.nodes.some(node => doesNodeHaveCredentialsToFill(nodeTypeProvider, node)); } async function getFullTemplate(templatesStore, templateId) { const template = templatesStore.getFullTemplateById(templateId); if (template) return template; await templatesStore.fetchTemplateById(templateId); return templatesStore.getFullTemplateById(templateId); } /** * Uses the given template by opening the template workflow on NodeView * or the template credential setup view. Fires necessary telemetry events. */ async function useTemplateWorkflow(opts) { const { nodeTypesStore, templateId, templatesStore } = opts; const [template] = await Promise.all([getFullTemplate(templatesStore, templateId), nodeTypesStore.loadNodeTypesIfNotLoaded()]); assert(template); if (hasTemplateCredentials(nodeTypesStore, template)) await openTemplateCredentialSetup(opts);else await openTemplateWorkflowOnNodeView(opts); } //#endregion _export({ n: useTemplateWorkflow, t: createWorkflowFromTemplate }); return { setters: [function (_useTelemetryLegacy00HJs) { getNodesWithNormalizedPosition = _useTelemetryLegacy00HJs.C; getNewWorkflow = _useTelemetryLegacy00HJs.Io; tryToParseNumber = _useTelemetryLegacy00HJs.Ti; }, function (_constantsLegacy00TJs) { VIEWS = _constantsLegacy00TJs.Io; }, function (_baseOrderByLegacy00ZJs) { assert = _baseOrderByLegacy00ZJs.g; }, function (_nodeTransformsLegacy02DJs) { doesNodeHaveCredentialsToFill = _nodeTransformsLegacy02DJs.n; }, function (_templateTransformsLegacy03BJs) { replaceAllTemplateNodeCredentials = _templateTransformsLegacy03BJs.r; }], execute: function () {} }; }); })();