UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

367 lines (366 loc) 27.9 kB
; (function () { System.register(["./chunk-legacy-Re9CbdfL.js", "./vue.runtime.esm-bundler-legacy--Sn1h8On.js", "./_MapCache-legacy-DlYNX_X1.js", "./src-legacy-uZTNWMC0.js", "./_plugin-vue_export-helper-legacy-DZMI5HPp.js", "./useTelemetry-legacy-B3pzzkAE.js", "./NodeIcon-legacy-D0j2KPV5.js", "./nodeTransforms-legacy-BTRUclS4.js", "./templateTransforms-legacy-BTZU4lXs.js", "./CredentialPicker-legacy-iIisi4m5.js"], function (_export, _context) { "use strict"; var __toESM, computed, toDisplayString, createElementBlock, createCommentVNode, unref, ref, createVNode, defineComponent, createBlock, withCtx, openBlock, createTextVNode, resolveDirective, normalizeClass, createBaseVNode, withDirectives, I18nT, useI18n, N8nNotice_default, N8nHeading_default, __plugin_vue_export_helper_default, useCredentialsStore, require_sortBy, useNodeTypesStore, getAppNameFromNodeName, useTelemetry, NodeIcon_default, getNodeTypeDisplayableCredentials, normalizeTemplateNodeCredentials, keyFromCredentialTypeAndName, CredentialPicker_default, __vite_style__, import_sortBy, getNodesRequiringCredentials, groupNodeCredentialsByKey, getAppCredentials, useCredentialSetupState, formatList, AppsRequiringCredsNotice_vue_vue_type_script_setup_true_lang_default, notice, AppsRequiringCredsNotice_vue_vue_type_style_index_0_lang_module_default, cssModules$1, AppsRequiringCredsNotice_default, _sfc_main, _hoisted_1, IconSuccess_default, SetupTemplateFormStep_vue_vue_type_script_setup_true_lang_default, container, heading, headingOrder, headingIcon, description, credentials, credentialPicker, credentialOk, invisible, SetupTemplateFormStep_vue_vue_type_style_index_0_lang_module_default, cssModules, SetupTemplateFormStep_default; function _sfc_render(_ctx, _cache) { return openBlock(), createElementBlock("i", _hoisted_1); } return { setters: [function (_chunkLegacy001Js) { __toESM = _chunkLegacy001Js.o; }, function (_vueRuntimeEsmBundlerLegacy003Js) { computed = _vueRuntimeEsmBundlerLegacy003Js.C; toDisplayString = _vueRuntimeEsmBundlerLegacy003Js.Cn; createElementBlock = _vueRuntimeEsmBundlerLegacy003Js.D; createCommentVNode = _vueRuntimeEsmBundlerLegacy003Js.E; unref = _vueRuntimeEsmBundlerLegacy003Js.Gt; ref = _vueRuntimeEsmBundlerLegacy003Js.It; createVNode = _vueRuntimeEsmBundlerLegacy003Js.M; defineComponent = _vueRuntimeEsmBundlerLegacy003Js.P; createBlock = _vueRuntimeEsmBundlerLegacy003Js.T; withCtx = _vueRuntimeEsmBundlerLegacy003Js.bt; openBlock = _vueRuntimeEsmBundlerLegacy003Js.et; createTextVNode = _vueRuntimeEsmBundlerLegacy003Js.j; resolveDirective = _vueRuntimeEsmBundlerLegacy003Js.st; normalizeClass = _vueRuntimeEsmBundlerLegacy003Js.vn; createBaseVNode = _vueRuntimeEsmBundlerLegacy003Js.w; withDirectives = _vueRuntimeEsmBundlerLegacy003Js.xt; }, function (_MapCacheLegacy005Js) { I18nT = _MapCacheLegacy005Js._t; useI18n = _MapCacheLegacy005Js.gt; }, function (_srcLegacy007Js) { N8nNotice_default = _srcLegacy007Js.D; N8nHeading_default = _srcLegacy007Js.zn; }, function (_pluginVue_exportHelperLegacy00fJs) { __plugin_vue_export_helper_default = _pluginVue_exportHelperLegacy00fJs.t; }, function (_useTelemetryLegacy00HJs) { useCredentialsStore = _useTelemetryLegacy00HJs.Ht; require_sortBy = _useTelemetryLegacy00HJs.Lt; useNodeTypesStore = _useTelemetryLegacy00HJs.at; getAppNameFromNodeName = _useTelemetryLegacy00HJs.qr; useTelemetry = _useTelemetryLegacy00HJs.t; }, function (_NodeIconLegacy01FJs) { NodeIcon_default = _NodeIconLegacy01FJs.t; }, function (_nodeTransformsLegacy02DJs) { getNodeTypeDisplayableCredentials = _nodeTransformsLegacy02DJs.r; }, function (_templateTransformsLegacy03BJs) { normalizeTemplateNodeCredentials = _templateTransformsLegacy03BJs.n; keyFromCredentialTypeAndName = _templateTransformsLegacy03BJs.t; }, function (_CredentialPickerLegacy03FJs) { CredentialPicker_default = _CredentialPickerLegacy03FJs.t; }], execute: function () { __vite_style__ = document.createElement('style'); __vite_style__.textContent = "/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._notice_3fzof_123 {\n margin-top: 0;\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\ni[data-v-563d175d] {\n color: var(--color--success);\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._container_lexug_123 {\n list-style: none;\n}\n._heading_lexug_127 {\n display: flex;\n align-items: center;\n margin-bottom: var(--spacing--2xs);\n}\n._headingOrder_lexug_133 {\n font-weight: var(--font-weight--bold);\n margin-right: var(--spacing--xs);\n}\n._headingIcon_lexug_138 {\n margin-right: var(--spacing--2xs);\n}\n._description_lexug_142 {\n margin-bottom: var(--spacing--lg);\n font-size: var(--font-size--sm);\n color: var(--color--text);\n}\n._credentials_lexug_148 {\n max-width: 400px;\n display: flex;\n align-items: center;\n}\n._credentialPicker_lexug_154 {\n flex: 1;\n}\n._credentialOk_lexug_158 {\n margin-left: var(--spacing--2xs);\n font-size: 24px;\n}\n._invisible_lexug_163 {\n visibility: hidden;\n}/*$vite$:1*/"; document.head.appendChild(__vite_style__); //#region src/features/workflows/templates/composables/useCredentialSetupState.ts import_sortBy = /* @__PURE__ */__toESM(require_sortBy()); /** * Returns the nodes in the template that require credentials * and the required credentials for each node. */ getNodesRequiringCredentials = (nodeTypeProvider, nodes) => { return nodes.map(node => ({ node, requiredCredentials: getNodeTypeDisplayableCredentials(nodeTypeProvider, node) })).filter(({ requiredCredentials }) => requiredCredentials.length > 0); }; groupNodeCredentialsByKey = nodeWithRequiredCredentials => { const credentialsByTypeName = /* @__PURE__ */new Map(); for (const { node, requiredCredentials } of nodeWithRequiredCredentials) { const normalizedNodeCreds = node.credentials ? normalizeTemplateNodeCredentials(node.credentials) : {}; for (const credentialDescription of requiredCredentials) { const credentialType = credentialDescription.name; const nodeCredentialName = normalizedNodeCreds[credentialDescription.name] ?? ""; const key = keyFromCredentialTypeAndName(credentialType, nodeCredentialName); let credentialUsages = credentialsByTypeName.get(key); if (!credentialUsages) { credentialUsages = { key, nodeTypeName: node.type, credentialName: nodeCredentialName, credentialType, usedBy: [] }; credentialsByTypeName.set(key, credentialUsages); } credentialUsages.usedBy.push(node); } } return credentialsByTypeName; }; getAppCredentials = (credentialUsages, getAppNameByNodeType) => { const credentialsByAppName = /* @__PURE__ */new Map(); for (const credentialUsage of credentialUsages) { const nodeTypeName = credentialUsage.nodeTypeName; const appName = getAppNameByNodeType(nodeTypeName) ?? nodeTypeName; const appCredentials = credentialsByAppName.get(appName); if (appCredentials) appCredentials.credentials.push(credentialUsage);else credentialsByAppName.set(appName, { appName, credentials: [credentialUsage] }); } return Array.from(credentialsByAppName.values()); }; _export("r", useCredentialSetupState = nodes => { /** * Credentials user has selected from the UI. Map from credential * name in the template to the credential ID. */ const selectedCredentialIdByKey = ref({}); const nodeTypesStore = useNodeTypesStore(); const credentialsStore = useCredentialsStore(); const appNameByNodeType = (nodeTypeName, version) => { const nodeType = nodeTypesStore.getNodeType(nodeTypeName, version); return nodeType ? getAppNameFromNodeName(nodeType.displayName) : nodeTypeName; }; const nodesRequiringCredentialsSorted = computed(() => { return (0, import_sortBy.default)(nodes.value ? getNodesRequiringCredentials(nodeTypesStore, nodes.value) : [], ({ node }) => node.position[0]); }); const credentialsByKey = computed(() => { return groupNodeCredentialsByKey(nodesRequiringCredentialsSorted.value); }); const credentialUsages = computed(() => { return Array.from(credentialsByKey.value.values()); }); const appCredentials = computed(() => { return getAppCredentials(credentialUsages.value, appNameByNodeType); }); const credentialOverrides = computed(() => { const overrides = {}; for (const [key, credentialId] of Object.entries(selectedCredentialIdByKey.value)) { const credential = credentialsStore.getCredentialById(credentialId); if (!credential) continue; overrides[key] = { id: credentialId, name: credential.name }; } return overrides; }); const numFilledCredentials = computed(() => { return Object.keys(selectedCredentialIdByKey.value).length; }); const setSelectedCredentialId = (credentialKey, credentialId) => { selectedCredentialIdByKey.value[credentialKey] = credentialId; }; const unsetSelectedCredential = credentialKey => { delete selectedCredentialIdByKey.value[credentialKey]; }; return { appCredentials, credentialOverrides, credentialUsages, credentialsByKey, nodesRequiringCredentialsSorted, numFilledCredentials, selectedCredentialIdByKey, setSelectedCredentialId, unsetSelectedCredential }; }); //#endregion //#region src/app/utils/formatters/listFormatter.ts /** * Formats a list of items into a string. Each item is formatted using * the given function and the are separated by a comma except for the last * item which is separated by "and". * * @example * formatList(['a', 'b', 'c'], { * formatFn: (x) => `"${x}"` * i18n * }); * // => '"a", "b" and "c"' */ formatList = (list, opts) => { const { i18n, formatFn } = opts; if (list.length === 0) return ""; if (list.length === 1) return formatFn(list[0]); const allButLast = list.slice(0, -1); const last = list[list.length - 1]; return `${allButLast.map(formatFn).join(", ")} ${i18n.baseText("generic.and")} ${formatFn(last)}`; }; //#endregion //#region src/features/workflows/templates/components/AppsRequiringCredsNotice.vue?vue&type=script&setup=true&lang.ts AppsRequiringCredsNotice_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({ __name: "AppsRequiringCredsNotice", props: { appCredentials: {} }, setup(__props) { const i18n = useI18n(); const props = __props; const formatApp = app => `<b>${app.credentials.length}x ${app.appName}</b>`; const appNodeCounts = computed(() => { return formatList(props.appCredentials, { formatFn: formatApp, i18n }); }); return (_ctx, _cache) => { const _directive_n8n_html = resolveDirective("n8n-html"); return openBlock(), createBlock(unref(N8nNotice_default), { class: normalizeClass(_ctx.$style.notice), theme: "info" }, { default: withCtx(() => [createVNode(unref(I18nT), { tag: "span", keypath: "templateSetup.instructions", scope: "global" }, { default: withCtx(() => [withDirectives(createBaseVNode("span", null, null, 512), [[_directive_n8n_html, appNodeCounts.value]])]), _: 1 })]), _: 1 }, 8, ["class"]); }; } }); //#endregion //#region src/features/workflows/templates/components/AppsRequiringCredsNotice.vue?vue&type=style&index=0&lang.module.scss notice = "_notice_3fzof_123"; AppsRequiringCredsNotice_vue_vue_type_style_index_0_lang_module_default = { notice }; //#endregion //#region src/features/workflows/templates/components/AppsRequiringCredsNotice.vue cssModules$1 = { "$style": AppsRequiringCredsNotice_vue_vue_type_style_index_0_lang_module_default }; _export("n", AppsRequiringCredsNotice_default = /* @__PURE__ */__plugin_vue_export_helper_default(AppsRequiringCredsNotice_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$1]])); //#endregion //#region src/features/workflows/templates/components/IconSuccess.vue _sfc_main = {}; _hoisted_1 = { class: "el-icon-success" }; IconSuccess_default = /* @__PURE__ */__plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-563d175d"]]); //#endregion //#region src/features/workflows/templates/components/SetupTemplateFormStep.vue?vue&type=script&setup=true&lang.ts SetupTemplateFormStep_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({ __name: "SetupTemplateFormStep", props: { order: {}, credentials: {}, selectedCredentialId: { default: null } }, emits: ["credentialSelected", "credentialDeselected"], setup(__props, { emit: __emit }) { const props = __props; const emit = __emit; const nodeTypesStore = useNodeTypesStore(); const i18n = useI18n(); const telemetry = useTelemetry(); const node = computed(() => props.credentials.usedBy[0]); const nodeType = computed(() => nodeTypesStore.getNodeType(node.value.type, node.value.typeVersion)); const appName = computed(() => nodeType.value ? getAppNameFromNodeName(nodeType.value.displayName) : node.value.type); const nodeNames = computed(() => { const formatNodeName = nodeToFormat => `<b>${nodeToFormat.name}</b>`; return formatList(props.credentials.usedBy, { formatFn: formatNodeName, i18n }); }); const onCredentialModalOpened = () => { telemetry.track("User opened Credential modal", { source: "cred_setup", credentialType: props.credentials.credentialType, new_credential: !props.selectedCredentialId }); }; return (_ctx, _cache) => { const _directive_n8n_html = resolveDirective("n8n-html"); return openBlock(), createElementBlock("li", { class: normalizeClass(_ctx.$style.container), "data-test-id": "setup-credentials-form-step" }, [createVNode(unref(N8nHeading_default), { tag: "h2", size: "large" }, { default: withCtx(() => [nodeType.value ? (openBlock(), createElementBlock("div", { key: 0, class: normalizeClass(_ctx.$style.heading), "data-test-id": "credential-step-heading" }, [createBaseVNode("span", { class: normalizeClass(_ctx.$style.headingOrder) }, toDisplayString(_ctx.order) + ".", 3), createBaseVNode("span", { class: normalizeClass(_ctx.$style.headingIcon) }, [createVNode(NodeIcon_default, { "node-type": nodeType.value }, null, 8, ["node-type"])], 2), createTextVNode(" " + toDisplayString(appName.value), 1)], 2)) : createCommentVNode("", true)]), _: 1 }), createBaseVNode("p", { class: normalizeClass(_ctx.$style.description), "data-test-id": "credential-step-description" }, [createVNode(unref(I18nT), { tag: "span", keypath: "templateSetup.credential.description", plural: _ctx.credentials.usedBy.length, scope: "global" }, { default: withCtx(() => [withDirectives(createBaseVNode("span", null, null, 512), [[_directive_n8n_html, nodeNames.value]])]), _: 1 }, 8, ["plural"])], 2), createBaseVNode("div", { class: normalizeClass(_ctx.$style.credentials) }, [createVNode(CredentialPicker_default, { class: normalizeClass(_ctx.$style.credentialPicker), "app-name": appName.value, "credential-type": props.credentials.credentialType, "selected-credential-id": _ctx.selectedCredentialId, onCredentialSelected: _cache[0] || (_cache[0] = $event => emit("credentialSelected", { credentialUsageKey: _ctx.$props.credentials.key, credentialId: $event })), onCredentialDeselected: _cache[1] || (_cache[1] = $event => emit("credentialDeselected", { credentialUsageKey: _ctx.$props.credentials.key })), onCredentialModalOpened }, null, 8, ["class", "app-name", "credential-type", "selected-credential-id"]), createVNode(IconSuccess_default, { class: normalizeClass({ [_ctx.$style.credentialOk]: true, [_ctx.$style.invisible]: !_ctx.selectedCredentialId }) }, null, 8, ["class"])], 2)], 2); }; } }); //#endregion //#region src/features/workflows/templates/components/SetupTemplateFormStep.vue?vue&type=style&index=0&lang.module.scss container = "_container_lexug_123"; heading = "_heading_lexug_127"; headingOrder = "_headingOrder_lexug_133"; headingIcon = "_headingIcon_lexug_138"; description = "_description_lexug_142"; credentials = "_credentials_lexug_148"; credentialPicker = "_credentialPicker_lexug_154"; credentialOk = "_credentialOk_lexug_158"; invisible = "_invisible_lexug_163"; SetupTemplateFormStep_vue_vue_type_style_index_0_lang_module_default = { container, heading, headingOrder, headingIcon, description, credentials, credentialPicker, credentialOk, invisible }; //#endregion //#region src/features/workflows/templates/components/SetupTemplateFormStep.vue cssModules = { "$style": SetupTemplateFormStep_vue_vue_type_style_index_0_lang_module_default }; _export("t", SetupTemplateFormStep_default = /* @__PURE__ */__plugin_vue_export_helper_default(SetupTemplateFormStep_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules]])); //#endregion } }; }); })();