n8n-editor-ui 1.31.0 → 1.31.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/.turbo/turbo-build.log +63 -63
- package/dist/assets/{AuthView-RfvlQPh5.js → AuthView-HA2BeS7f.js} +2 -2
- package/dist/assets/{AuthView-RfvlQPh5.js.map → AuthView-HA2BeS7f.js.map} +1 -1
- package/dist/assets/{CanvasControls-l1b_Zx_I.js → CanvasControls-cUUtH5At.js} +2 -2
- package/dist/assets/{CanvasControls-l1b_Zx_I.js.map → CanvasControls-cUUtH5At.js.map} +1 -1
- package/dist/assets/{ChangePasswordView-khhMqm-D.js → ChangePasswordView-LvlBcxOc.js} +2 -2
- package/dist/assets/{ChangePasswordView-khhMqm-D.js.map → ChangePasswordView-LvlBcxOc.js.map} +1 -1
- package/dist/assets/{CollectionParameter-Zf8DWdFO.js → CollectionParameter-m-zt5fCV.js} +2 -2
- package/dist/assets/CollectionParameter-m-zt5fCV.js.map +1 -0
- package/dist/assets/{CredentialsView-f__IcIwo.js → CredentialsView-KBhkHODh.js} +2 -2
- package/dist/assets/{CredentialsView-f__IcIwo.js.map → CredentialsView-KBhkHODh.js.map} +1 -1
- package/dist/assets/{ExecutionFilter-mXzOcdkW.js → ExecutionFilter-V_hSgWod.js} +2 -2
- package/dist/assets/{ExecutionFilter-mXzOcdkW.js.map → ExecutionFilter-V_hSgWod.js.map} +1 -1
- package/dist/assets/{ExecutionPreview-Av4NpeIF.js → ExecutionPreview--u-5HE62.js} +2 -2
- package/dist/assets/{ExecutionPreview-Av4NpeIF.js.map → ExecutionPreview--u-5HE62.js.map} +1 -1
- package/dist/assets/{ExecutionsInfoAccordion-_GKLsSu_.js → ExecutionsInfoAccordion-x5q8J1U1.js} +2 -2
- package/dist/assets/{ExecutionsInfoAccordion-_GKLsSu_.js.map → ExecutionsInfoAccordion-x5q8J1U1.js.map} +1 -1
- package/dist/assets/{ExecutionsLandingPage-YC_2DX-_.js → ExecutionsLandingPage-L28oIFKc.js} +2 -2
- package/dist/assets/{ExecutionsLandingPage-YC_2DX-_.js.map → ExecutionsLandingPage-L28oIFKc.js.map} +1 -1
- package/dist/assets/{ExecutionsList-oSHXwRlB.js → ExecutionsList-0tFgI6WR.js} +2 -2
- package/dist/assets/{ExecutionsList-oSHXwRlB.js.map → ExecutionsList-0tFgI6WR.js.map} +1 -1
- package/dist/assets/{ExecutionsView-Pksjr3jh.js → ExecutionsView-TqkdmRRD.js} +2 -2
- package/dist/assets/{ExecutionsView-Pksjr3jh.js.map → ExecutionsView-TqkdmRRD.js.map} +1 -1
- package/dist/assets/{ForgotMyPasswordView-sxQf0ZxA.js → ForgotMyPasswordView-D1sIgYax.js} +2 -2
- package/dist/assets/{ForgotMyPasswordView-sxQf0ZxA.js.map → ForgotMyPasswordView-D1sIgYax.js.map} +1 -1
- package/dist/assets/{MainHeader-xz6puNIL.js → MainHeader-rSjJUqni.js} +2 -2
- package/dist/assets/{MainHeader-xz6puNIL.js.map → MainHeader-rSjJUqni.js.map} +1 -1
- package/dist/assets/{MainSidebar-rQpe5M3X.js → MainSidebar-YIkYQNvU.js} +2 -2
- package/dist/assets/{MainSidebar-rQpe5M3X.js.map → MainSidebar-YIkYQNvU.js.map} +1 -1
- package/dist/assets/{NodeCreation-8CGLiFnw.js → NodeCreation-Fzq2oHdG.js} +3 -3
- package/dist/assets/{NodeCreation-8CGLiFnw.js.map → NodeCreation-Fzq2oHdG.js.map} +1 -1
- package/dist/assets/{NodeCreator-0H6HfISN.js → NodeCreator-ZB-_-VPe.js} +2 -2
- package/dist/assets/{NodeCreator-0H6HfISN.js.map → NodeCreator-ZB-_-VPe.js.map} +1 -1
- package/dist/assets/{NodeList-02mJFRoY.js → NodeList-SQExkC1I.js} +2 -2
- package/dist/assets/{NodeList-02mJFRoY.js.map → NodeList-SQExkC1I.js.map} +1 -1
- package/dist/assets/{NodeView-WA4RerRw.css → NodeView-4TdTW4nM.css} +1 -1
- package/dist/assets/NodeView-R9MRan_s.js +8 -0
- package/dist/assets/NodeView-R9MRan_s.js.map +1 -0
- package/dist/assets/{RunDataAi-aB1oIQkq.js → RunDataAi-3ZnF5uZf.js} +2 -2
- package/dist/assets/{RunDataAi-aB1oIQkq.js.map → RunDataAi-3ZnF5uZf.js.map} +1 -1
- package/dist/assets/{RunDataJson-6dD5AHsW.js → RunDataJson-q9s2CJ1L.js} +3 -3
- package/dist/assets/{RunDataJson-6dD5AHsW.js.map → RunDataJson-q9s2CJ1L.js.map} +1 -1
- package/dist/assets/{RunDataJsonActions-3jBSymBt.js → RunDataJsonActions-87I4s3Q4.js} +2 -2
- package/dist/assets/{RunDataJsonActions-3jBSymBt.js.map → RunDataJsonActions-87I4s3Q4.js.map} +1 -1
- package/dist/assets/{RunDataSchema-uYs9i5gp.js → RunDataSchema-yoVX-T4I.js} +2 -2
- package/dist/assets/{RunDataSchema-uYs9i5gp.js.map → RunDataSchema-yoVX-T4I.js.map} +1 -1
- package/dist/assets/{RunDataTable-G1II-GXc.js → RunDataTable-64svWUC6.js} +2 -2
- package/dist/assets/{RunDataTable-G1II-GXc.js.map → RunDataTable-64svWUC6.js.map} +1 -1
- package/dist/assets/{SamlOnboarding-ekSCvOA8.js → SamlOnboarding-M2xGH4bo.js} +2 -2
- package/dist/assets/{SamlOnboarding-ekSCvOA8.js.map → SamlOnboarding-M2xGH4bo.js.map} +1 -1
- package/dist/assets/{SettingsApiView-nYqcsdag.js → SettingsApiView-DbkofsKW.js} +2 -2
- package/dist/assets/{SettingsApiView-nYqcsdag.js.map → SettingsApiView-DbkofsKW.js.map} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-m3YKlauH.js → SettingsCommunityNodesView-AgA6fziO.js} +2 -2
- package/dist/assets/{SettingsCommunityNodesView-m3YKlauH.js.map → SettingsCommunityNodesView-AgA6fziO.js.map} +1 -1
- package/dist/assets/{SettingsExternalSecrets-34jgnmjV.js → SettingsExternalSecrets-bVUCWLUK.js} +2 -2
- package/dist/assets/{SettingsExternalSecrets-34jgnmjV.js.map → SettingsExternalSecrets-bVUCWLUK.js.map} +1 -1
- package/dist/assets/{SettingsFakeDoorView-PlM5Q7BR.js → SettingsFakeDoorView-vBsbSMTz.js} +2 -2
- package/dist/assets/{SettingsFakeDoorView-PlM5Q7BR.js.map → SettingsFakeDoorView-vBsbSMTz.js.map} +1 -1
- package/dist/assets/{SettingsLdapView-9xig0oET.js → SettingsLdapView-aOF3TxNb.js} +2 -2
- package/dist/assets/{SettingsLdapView-9xig0oET.js.map → SettingsLdapView-aOF3TxNb.js.map} +1 -1
- package/dist/assets/{SettingsLogStreamingView-ClMsYqOF.js → SettingsLogStreamingView-bm51qMta.js} +2 -2
- package/dist/assets/{SettingsLogStreamingView-ClMsYqOF.js.map → SettingsLogStreamingView-bm51qMta.js.map} +1 -1
- package/dist/assets/{SettingsSourceControl-YHwQ6IXq.js → SettingsSourceControl-WEi8c37q.js} +2 -2
- package/dist/assets/{SettingsSourceControl-YHwQ6IXq.js.map → SettingsSourceControl-WEi8c37q.js.map} +1 -1
- package/dist/assets/{SettingsSso-iFCiagfy.js → SettingsSso-1KUvHct8.js} +2 -2
- package/dist/assets/{SettingsSso-iFCiagfy.js.map → SettingsSso-1KUvHct8.js.map} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-qV-dasPh.js → SettingsUsageAndPlan-qvlmdNIu.js} +2 -2
- package/dist/assets/{SettingsUsageAndPlan-qV-dasPh.js.map → SettingsUsageAndPlan-qvlmdNIu.js.map} +1 -1
- package/dist/assets/{SettingsUsersView-oFMSuGNj.js → SettingsUsersView-ipMjmS0J.js} +2 -2
- package/dist/assets/{SettingsUsersView-oFMSuGNj.js.map → SettingsUsersView-ipMjmS0J.js.map} +1 -1
- package/dist/assets/{SettingsView-PQr3D_Qw.js → SettingsView--YvZzIsd.js} +2 -2
- package/dist/assets/{SettingsView-PQr3D_Qw.js.map → SettingsView--YvZzIsd.js.map} +1 -1
- package/dist/assets/{SetupView-XgKAnmCH.js → SetupView-sXfLqAaw.js} +2 -2
- package/dist/assets/{SetupView-XgKAnmCH.js.map → SetupView-sXfLqAaw.js.map} +1 -1
- package/dist/assets/{SetupWorkflowCredentialsButton-1thP_Pd7.js → SetupWorkflowCredentialsButton-JeMgqdLT.js} +2 -2
- package/dist/assets/{SetupWorkflowCredentialsButton-1thP_Pd7.js.map → SetupWorkflowCredentialsButton-JeMgqdLT.js.map} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-srBMzN1e.js → SetupWorkflowFromTemplateView-CDQGT8sq.js} +2 -2
- package/dist/assets/{SetupWorkflowFromTemplateView-srBMzN1e.js.map → SetupWorkflowFromTemplateView-CDQGT8sq.js.map} +1 -1
- package/dist/assets/{SigninView-eE5qnff6.js → SigninView-Z98vY620.js} +2 -2
- package/dist/assets/{SigninView-eE5qnff6.js.map → SigninView-Z98vY620.js.map} +1 -1
- package/dist/assets/{SignupView-9d40Dggz.js → SignupView-X0K4hmyL.js} +2 -2
- package/dist/assets/{SignupView-9d40Dggz.js.map → SignupView-X0K4hmyL.js.map} +1 -1
- package/dist/assets/{TemplateDetails-rR8wjzGE.js → TemplateDetails-LkR9Mwpa.js} +2 -2
- package/dist/assets/{TemplateDetails-rR8wjzGE.js.map → TemplateDetails-LkR9Mwpa.js.map} +1 -1
- package/dist/assets/{TemplateList-iPTJU805.js → TemplateList-3Sn3bOND.js} +2 -2
- package/dist/assets/{TemplateList-iPTJU805.js.map → TemplateList-3Sn3bOND.js.map} +1 -1
- package/dist/assets/{TemplatesCollectionView-nbC99QSt.js → TemplatesCollectionView-ShC0Z9iK.js} +2 -2
- package/dist/assets/{TemplatesCollectionView-nbC99QSt.js.map → TemplatesCollectionView-ShC0Z9iK.js.map} +1 -1
- package/dist/assets/{TemplatesInfoCarousel-SruxUbHk.js → TemplatesInfoCarousel-LmSrKkcm.js} +2 -2
- package/dist/assets/{TemplatesInfoCarousel-SruxUbHk.js.map → TemplatesInfoCarousel-LmSrKkcm.js.map} +1 -1
- package/dist/assets/{TemplatesSearchView-v3YJ9cpx.js → TemplatesSearchView-WIbBh-fS.js} +2 -2
- package/dist/assets/{TemplatesSearchView-v3YJ9cpx.js.map → TemplatesSearchView-WIbBh-fS.js.map} +1 -1
- package/dist/assets/{TemplatesWorkflowView-fUesRX9J.js → TemplatesWorkflowView-GF7A2wQ8.js} +2 -2
- package/dist/assets/{TemplatesWorkflowView-fUesRX9J.js.map → TemplatesWorkflowView-GF7A2wQ8.js.map} +1 -1
- package/dist/assets/{VariablesView-VWkgCVLM.js → VariablesView-F5vY_O7t.js} +2 -2
- package/dist/assets/{VariablesView-VWkgCVLM.js.map → VariablesView-F5vY_O7t.js.map} +1 -1
- package/dist/assets/{WorkerView-2M4ULe2q.js → WorkerView-3HVNzSKY.js} +2 -2
- package/dist/assets/{WorkerView-2M4ULe2q.js.map → WorkerView-3HVNzSKY.js.map} +1 -1
- package/dist/assets/{WorkflowActivator-Ljzsj-Pc.js → WorkflowActivator-Bn6AJk6k.js} +2 -2
- package/dist/assets/{WorkflowActivator-Ljzsj-Pc.js.map → WorkflowActivator-Bn6AJk6k.js.map} +1 -1
- package/dist/assets/{WorkflowHistory-XIO4RPyW.js → WorkflowHistory-BOE4rgDP.js} +2 -2
- package/dist/assets/{WorkflowHistory-XIO4RPyW.js.map → WorkflowHistory-BOE4rgDP.js.map} +1 -1
- package/dist/assets/{WorkflowOnboardingView-uocM15_t.js → WorkflowOnboardingView-mo-6kuvd.js} +2 -2
- package/dist/assets/{WorkflowOnboardingView-uocM15_t.js.map → WorkflowOnboardingView-mo-6kuvd.js.map} +1 -1
- package/dist/assets/{WorkflowsView-kE5lfz5s.js → WorkflowsView-Xu_gm30s.js} +2 -2
- package/dist/assets/{WorkflowsView-kE5lfz5s.js.map → WorkflowsView-Xu_gm30s.js.map} +1 -1
- package/dist/assets/{cloud-eCWdzc_U.js → cloud-HXwHoJMx.js} +2 -2
- package/dist/assets/{cloud-eCWdzc_U.js.map → cloud-HXwHoJMx.js.map} +1 -1
- package/dist/assets/{index-6DR75wmI.js → index-36CdMZUz.js} +61 -61
- package/dist/assets/index-36CdMZUz.js.map +1 -0
- package/dist/assets/{index-nnspvX6P.css → index-wl9S8xQJ.css} +1 -1
- package/dist/assets/{pushConnection-Nsi8KY7W.js → pushConnection-oi9TyCK6.js} +2 -2
- package/dist/assets/{pushConnection-Nsi8KY7W.js.map → pushConnection-oi9TyCK6.js.map} +1 -1
- package/dist/assets/{templateActions-izEz5292.js → templateActions-EUfdPNqc.js} +2 -2
- package/dist/assets/{templateActions-izEz5292.js.map → templateActions-EUfdPNqc.js.map} +1 -1
- package/dist/assets/{useExecutionDebugging-io4M-GfO.js → useExecutionDebugging-986Mdc3C.js} +2 -2
- package/dist/assets/{useExecutionDebugging-io4M-GfO.js.map → useExecutionDebugging-986Mdc3C.js.map} +1 -1
- package/dist/assets/{workflowActivate-cwYrfIJI.js → workflowActivate-v05HQ2xy.js} +2 -2
- package/dist/assets/{workflowActivate-cwYrfIJI.js.map → workflowActivate-v05HQ2xy.js.map} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-Zf8DWdFO.js.map +0 -1
- package/dist/assets/NodeView-eyw1ZaPg.js +0 -8
- package/dist/assets/NodeView-eyw1ZaPg.js.map +0 -1
- package/dist/assets/index-6DR75wmI.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunDataSchema-uYs9i5gp.js","sources":["../../src/components/RunDataSchemaItem.vue","../../src/components/RunDataSchema.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport type { INodeUi, Schema } from '@/Interface';\nimport { checkExhaustive } from '@/utils/typeGuards';\nimport { shorten } from '@/utils/typesUtils';\nimport { getMappedExpression } from '@/utils/mappingUtils';\nimport TextWithHighlights from './TextWithHighlights.vue';\n\ntype Props = {\n\tschema: Schema;\n\tlevel: number;\n\tparent: Schema | null;\n\tsubKey: string;\n\tpaneType: 'input' | 'output';\n\tmappingEnabled: boolean;\n\tdraggingPath: string;\n\tdistanceFromActive: number;\n\tnode: INodeUi | null;\n\tsearch: string;\n};\n\nconst props = defineProps<Props>();\n\nconst isSchemaValueArray = computed(() => Array.isArray(props.schema.value));\nconst isSchemaParentTypeArray = computed(() => props.parent?.type === 'array');\nconst isFlat = computed(\n\t() =>\n\t\tprops.level === 0 &&\n\t\tArray.isArray(props.schema.value) &&\n\t\tprops.schema.value.every((v) => !Array.isArray(v.value)),\n);\nconst key = computed((): string | undefined => {\n\treturn isSchemaParentTypeArray.value ? `[${props.schema.key}]` : props.schema.key;\n});\nconst schemaName = computed(() =>\n\tisSchemaParentTypeArray.value ? `${props.schema.type}[${props.schema.key}]` : props.schema.key,\n);\nconst text = computed(() =>\n\tArray.isArray(props.schema.value) ? '' : shorten(props.schema.value, 600, 0),\n);\n\nconst getJsonParameterPath = (path: string): string =>\n\tgetMappedExpression({\n\t\tnodeName: props.node!.name,\n\t\tdistanceFromActive: props.distanceFromActive,\n\t\tpath,\n\t});\n\nconst transitionDelay = (i: number) => `${i * 0.033}s`;\n\nconst getIconBySchemaType = (type: Schema['type']): string => {\n\tswitch (type) {\n\t\tcase 'object':\n\t\t\treturn 'cube';\n\t\tcase 'array':\n\t\t\treturn 'list';\n\t\tcase 'string':\n\t\tcase 'null':\n\t\t\treturn 'font';\n\t\tcase 'number':\n\t\t\treturn 'hashtag';\n\t\tcase 'boolean':\n\t\t\treturn 'check-square';\n\t\tcase 'function':\n\t\t\treturn 'code';\n\t\tcase 'bigint':\n\t\t\treturn 'calculator';\n\t\tcase 'symbol':\n\t\t\treturn 'sun';\n\t\tcase 'undefined':\n\t\t\treturn 'ban';\n\t}\n\n\tcheckExhaustive(type);\n};\n</script>\n\n<template>\n\t<div :class=\"$style.item\" data-test-id=\"run-data-schema-item\">\n\t\t<div\n\t\t\tv-if=\"level > 0 || (level === 0 && !isSchemaValueArray)\"\n\t\t\t:title=\"schema.type\"\n\t\t\t:class=\"{\n\t\t\t\t[$style.pill]: true,\n\t\t\t\t[$style.mappable]: mappingEnabled,\n\t\t\t\t[$style.dragged]: draggingPath === schema.path,\n\t\t\t}\"\n\t\t>\n\t\t\t<span\n\t\t\t\t:class=\"$style.label\"\n\t\t\t\t:data-value=\"getJsonParameterPath(schema.path)\"\n\t\t\t\t:data-name=\"schemaName\"\n\t\t\t\t:data-path=\"schema.path\"\n\t\t\t\t:data-depth=\"level\"\n\t\t\t\tdata-target=\"mappable\"\n\t\t\t>\n\t\t\t\t<font-awesome-icon :icon=\"getIconBySchemaType(schema.type)\" size=\"sm\" />\n\t\t\t\t<TextWithHighlights\n\t\t\t\t\tv-if=\"isSchemaParentTypeArray\"\n\t\t\t\t\t:content=\"props.parent?.key\"\n\t\t\t\t\t:search=\"props.search\"\n\t\t\t\t/>\n\t\t\t\t<TextWithHighlights\n\t\t\t\t\tv-if=\"key\"\n\t\t\t\t\t:class=\"{ [$style.arrayIndex]: isSchemaParentTypeArray }\"\n\t\t\t\t\t:content=\"key\"\n\t\t\t\t\t:search=\"props.search\"\n\t\t\t\t/>\n\t\t\t</span>\n\t\t</div>\n\t\t<span v-if=\"text\" :class=\"$style.text\">{{ text }}</span>\n\t\t<input v-if=\"level > 0 && isSchemaValueArray\" :id=\"subKey\" type=\"checkbox\" checked />\n\t\t<label v-if=\"level > 0 && isSchemaValueArray\" :class=\"$style.toggle\" :for=\"subKey\">\n\t\t\t<font-awesome-icon icon=\"angle-up\" />\n\t\t</label>\n\t\t<div v-if=\"isSchemaValueArray\" :class=\"{ [$style.sub]: true, [$style.flat]: isFlat }\">\n\t\t\t<run-data-schema-item\n\t\t\t\tv-for=\"(s, i) in schema.value\"\n\t\t\t\t:key=\"`${s.type}-${level}-${i}`\"\n\t\t\t\t:schema=\"s\"\n\t\t\t\t:level=\"level + 1\"\n\t\t\t\t:parent=\"schema\"\n\t\t\t\t:pane-type=\"paneType\"\n\t\t\t\t:sub-key=\"`${paneType}_${s.type}-${level}-${i}`\"\n\t\t\t\t:mapping-enabled=\"mappingEnabled\"\n\t\t\t\t:dragging-path=\"draggingPath\"\n\t\t\t\t:distance-from-active=\"distanceFromActive\"\n\t\t\t\t:node=\"node\"\n\t\t\t\t:style=\"{ transitionDelay: transitionDelay(i) }\"\n\t\t\t\t:search=\"search\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n@import '@/styles/variables';\n\n.item {\n\tdisplay: block;\n\tposition: relative;\n\ttransition: all 0.3s $ease-out-expo;\n\n\t.item {\n\t\tpadding-top: var(--spacing-2xs);\n\t\tpadding-left: var(--spacing-l);\n\t}\n\n\tinput {\n\t\tposition: absolute;\n\t\tleft: -100%;\n\n\t\t~ .sub {\n\t\t\theight: 0;\n\n\t\t\t> .item {\n\t\t\t\ttransform: translateX(-100%);\n\t\t\t}\n\t\t}\n\n\t\t&:checked {\n\t\t\t~ .toggle svg {\n\t\t\t\ttransform: rotate(180deg);\n\t\t\t}\n\n\t\t\t~ .sub {\n\t\t\t\theight: auto;\n\n\t\t\t\t> .item {\n\t\t\t\t\ttransform: translateX(0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&::after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tclear: both;\n\t}\n}\n\n.sub {\n\tdisplay: block;\n\toverflow: hidden;\n\ttransition: all 0.2s $ease-out-expo;\n\tclear: both;\n\n\t&.flat {\n\t\t> .item {\n\t\t\tpadding-left: 0;\n\t\t}\n\t}\n\n\t&:nth-of-type(1) {\n\t\t> .item:nth-of-type(1) {\n\t\t\tpadding-top: 0;\n\n\t\t\t.toggle {\n\t\t\t\ttop: -2px;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.pill {\n\tfloat: left;\n\tdisplay: inline-flex;\n\theight: 24px;\n\tpadding: 0 var(--spacing-3xs);\n\tborder: 1px solid var(--color-foreground-light);\n\tborder-radius: 4px;\n\tbackground-color: var(--color-background-xlight);\n\tfont-size: var(--font-size-2xs);\n\tcolor: var(--color-text-dark);\n\n\tspan {\n\t\tdisplay: flex;\n\t\theight: 100%;\n\t\talign-items: center;\n\n\t\tsvg {\n\t\t\tpath {\n\t\t\t\tfill: var(--color-text-light);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.mappable {\n\t\tcursor: grab;\n\n\t\t&:hover {\n\t\t\t&,\n\t\t\tspan span {\n\t\t\t\tbackground-color: var(--color-background-light);\n\t\t\t\tborder-color: var(--color-foreground-base);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.dragged {\n\t\t&,\n\t\t&:hover,\n\t\tspan {\n\t\t\tcolor: var(--color-primary);\n\t\t\tborder-color: var(--color-primary-tint-1);\n\t\t\tbackground-color: var(--color-primary-tint-3);\n\n\t\t\tsvg {\n\t\t\t\tpath {\n\t\t\t\t\tfill: var(--color-primary);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.label {\n\t> span {\n\t\tmargin-left: var(--spacing-3xs);\n\t\tpadding-left: var(--spacing-3xs);\n\t\tborder-left: 1px solid var(--color-foreground-light);\n\n\t\t&.arrayIndex {\n\t\t\tborder: 0;\n\t\t\tpadding-left: 0;\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n}\n\n.text {\n\tdisplay: block;\n\tpadding-top: var(--spacing-4xs);\n\tpadding-left: var(--spacing-2xs);\n\tfont-weight: var(--font-weight-normal);\n\tfont-size: var(--font-size-2xs);\n\toverflow: hidden;\n\tword-break: break-word;\n}\n\n.toggle {\n\tdisplay: flex;\n\tposition: absolute;\n\tpadding: var(--spacing-2xs);\n\tleft: 0;\n\ttop: 5px;\n\tjustify-content: center;\n\talign-items: center;\n\tcursor: pointer;\n\tuser-select: none;\n\tfont-weight: normal;\n\tfont-size: var(--font-size-s);\n\toverflow: hidden;\n\n\tsvg {\n\t\ttransition: all 0.3s $ease-out-expo;\n\t}\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue';\nimport type { INodeUi } from '@/Interface';\nimport RunDataSchemaItem from '@/components/RunDataSchemaItem.vue';\nimport Draggable from '@/components/Draggable.vue';\nimport { useNDVStore } from '@/stores/ndv.store';\nimport { telemetry } from '@/plugins/telemetry';\nimport type { IDataObject } from 'n8n-workflow';\nimport { isEmpty } from '@/utils/typesUtils';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { i18n } from '@/plugins/i18n';\nimport MappingPill from './MappingPill.vue';\nimport { useDataSchema } from '@/composables/useDataSchema';\n\ntype Props = {\n\tdata: IDataObject[];\n\tmappingEnabled: boolean;\n\tdistanceFromActive: number;\n\trunIndex: number;\n\ttotalRuns: number;\n\tpaneType: 'input' | 'output';\n\tnode: INodeUi | null;\n\tsearch: string;\n};\n\nconst props = withDefaults(defineProps<Props>(), {\n\tdistanceFromActive: 0,\n});\n\nconst draggingPath = ref<string>('');\nconst ndvStore = useNDVStore();\nconst { getSchemaForExecutionData } = useDataSchema();\n\nconst schema = computed(() => getSchemaForExecutionData(props.data));\n\nconst isDataEmpty = computed(() => isEmpty(props.data));\n\nconst onDragStart = (el: HTMLElement) => {\n\tif (el?.dataset?.path) {\n\t\tdraggingPath.value = el.dataset.path;\n\t}\n\n\tndvStore.resetMappingTelemetry();\n};\nconst onDragEnd = (el: HTMLElement) => {\n\tdraggingPath.value = '';\n\n\tsetTimeout(() => {\n\t\tconst mappingTelemetry = ndvStore.mappingTelemetry;\n\t\tconst telemetryPayload = {\n\t\t\tsrc_node_type: props.node?.type,\n\t\t\tsrc_field_name: el.dataset.name || '',\n\t\t\tsrc_nodes_back: props.distanceFromActive,\n\t\t\tsrc_run_index: props.runIndex,\n\t\t\tsrc_runs_total: props.totalRuns,\n\t\t\tsrc_field_nest_level: el.dataset.depth || 0,\n\t\t\tsrc_view: 'schema',\n\t\t\tsrc_element: el,\n\t\t\tsuccess: false,\n\t\t\t...mappingTelemetry,\n\t\t};\n\n\t\tvoid useExternalHooks().run('runDataJson.onDragEnd', telemetryPayload);\n\n\t\ttelemetry.track('User dragged data for mapping', telemetryPayload);\n\t}, 1000); // ensure dest data gets set if drop\n};\n</script>\n\n<template>\n\t<div :class=\"$style.schemaWrapper\">\n\t\t<n8n-info-tip v-if=\"isDataEmpty\">{{\n\t\t\ti18n.baseText('dataMapping.schemaView.emptyData')\n\t\t}}</n8n-info-tip>\n\t\t<Draggable\n\t\t\tv-else\n\t\t\ttype=\"mapping\"\n\t\t\ttarget-data-key=\"mappable\"\n\t\t\t:disabled=\"!mappingEnabled\"\n\t\t\t@dragstart=\"onDragStart\"\n\t\t\t@dragend=\"onDragEnd\"\n\t\t>\n\t\t\t<template #preview=\"{ canDrop, el }\">\n\t\t\t\t<MappingPill v-if=\"el\" :html=\"el.outerHTML\" :can-drop=\"canDrop\" />\n\t\t\t</template>\n\t\t\t<div :class=\"$style.schema\">\n\t\t\t\t<RunDataSchemaItem\n\t\t\t\t\t:schema=\"schema\"\n\t\t\t\t\t:level=\"0\"\n\t\t\t\t\t:parent=\"null\"\n\t\t\t\t\t:pane-type=\"paneType\"\n\t\t\t\t\t:sub-key=\"`${schema.type}-0-0`\"\n\t\t\t\t\t:mapping-enabled=\"mappingEnabled\"\n\t\t\t\t\t:dragging-path=\"draggingPath\"\n\t\t\t\t\t:distance-from-active=\"distanceFromActive\"\n\t\t\t\t\t:node=\"node\"\n\t\t\t\t\t:search=\"search\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</Draggable>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.schemaWrapper {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tbottom: 0;\n\tright: 0;\n\toverflow: auto;\n\tline-height: 1.5;\n\tword-break: normal;\n\theight: 100%;\n\twidth: 100%;\n\n\t> div[class*='info'] {\n\t\tpadding: 0 var(--spacing-s);\n\t}\n}\n\n.schema {\n\tdisplay: inline-block;\n\tpadding: 0 var(--spacing-s) var(--spacing-s);\n}\n</style>\n"],"names":["isSchemaValueArray","computed","props","isSchemaParentTypeArray","_a","isFlat","v","key","schemaName","text","shorten","getJsonParameterPath","path","getMappedExpression","transitionDelay","i","getIconBySchemaType","type","checkExhaustive","draggingPath","ref","ndvStore","useNDVStore","getSchemaForExecutionData","useDataSchema","schema","isDataEmpty","isEmpty","onDragStart","el","onDragEnd","mappingTelemetry","telemetryPayload","useExternalHooks","telemetry"],"mappings":"i3DAuBMA,EAAqBC,EAAS,IAAM,MAAM,QAAQC,EAAM,OAAO,KAAK,CAAC,EACrEC,EAA0BF,EAAS,IAAM,OAAA,QAAAG,EAAAF,EAAM,SAAN,YAAAE,EAAc,QAAS,QAAO,EACvEC,EAASJ,EACd,IACCC,EAAM,QAAU,GAChB,MAAM,QAAQA,EAAM,OAAO,KAAK,GAChCA,EAAM,OAAO,MAAM,MAAOI,GAAM,CAAC,MAAM,QAAQA,EAAE,KAAK,CAAC,CAAA,EAEnDC,EAAMN,EAAS,IACbE,EAAwB,MAAQ,IAAID,EAAM,OAAO,GAAG,IAAMA,EAAM,OAAO,GAC9E,EACKM,EAAaP,EAAS,IAC3BE,EAAwB,MAAQ,GAAGD,EAAM,OAAO,IAAI,IAAIA,EAAM,OAAO,GAAG,IAAMA,EAAM,OAAO,GAAA,EAEtFO,EAAOR,EAAS,IACrB,MAAM,QAAQC,EAAM,OAAO,KAAK,EAAI,GAAKQ,EAAQR,EAAM,OAAO,MAAO,IAAK,CAAC,CAAA,EAGtES,EAAwBC,GAC7BC,EAAoB,CACnB,SAAUX,EAAM,KAAM,KACtB,mBAAoBA,EAAM,mBAC1B,KAAAU,CAAA,CACA,EAEIE,EAAmBC,GAAc,GAAGA,EAAI,IAAK,IAE7CC,EAAuBC,GAAiC,CAC7D,OAAQA,EAAM,CACb,IAAK,SACG,MAAA,OACR,IAAK,QACG,MAAA,OACR,IAAK,SACL,IAAK,OACG,MAAA,OACR,IAAK,SACG,MAAA,UACR,IAAK,UACG,MAAA,eACR,IAAK,WACG,MAAA,OACR,IAAK,SACG,MAAA,aACR,IAAK,SACG,MAAA,MACR,IAAK,YACG,MAAA,KACT,CAEAC,EAAgBD,CAAI,CAAA,ixEC5CfE,EAAeC,EAAY,EAAE,EAC7BC,EAAWC,IACX,CAAE,0BAAAC,GAA8BC,IAEhCC,EAASxB,EAAS,IAAMsB,EAA0BrB,EAAM,IAAI,CAAC,EAE7DwB,EAAczB,EAAS,IAAM0B,EAAQzB,EAAM,IAAI,CAAC,EAEhD0B,EAAeC,GAAoB,QACpCzB,EAAAyB,GAAA,YAAAA,EAAI,UAAJ,MAAAzB,EAAa,OACHe,EAAA,MAAQU,EAAG,QAAQ,MAGjCR,EAAS,sBAAsB,CAAA,EAE1BS,EAAaD,GAAoB,CACtCV,EAAa,MAAQ,GAErB,WAAW,IAAM,OAChB,MAAMY,EAAmBV,EAAS,iBAC5BW,EAAmB,CACxB,eAAe5B,EAAAF,EAAM,OAAN,YAAAE,EAAY,KAC3B,eAAgByB,EAAG,QAAQ,MAAQ,GACnC,eAAgB3B,EAAM,mBACtB,cAAeA,EAAM,SACrB,eAAgBA,EAAM,UACtB,qBAAsB2B,EAAG,QAAQ,OAAS,EAC1C,SAAU,SACV,YAAaA,EACb,QAAS,GACT,GAAGE,CAAA,EAGCE,EAAiB,EAAE,IAAI,wBAAyBD,CAAgB,EAE3DE,EAAA,MAAM,gCAAiCF,CAAgB,GAC/D,GAAI,CAAA"}
|
|
1
|
+
{"version":3,"file":"RunDataSchema-yoVX-T4I.js","sources":["../../src/components/RunDataSchemaItem.vue","../../src/components/RunDataSchema.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport type { INodeUi, Schema } from '@/Interface';\nimport { checkExhaustive } from '@/utils/typeGuards';\nimport { shorten } from '@/utils/typesUtils';\nimport { getMappedExpression } from '@/utils/mappingUtils';\nimport TextWithHighlights from './TextWithHighlights.vue';\n\ntype Props = {\n\tschema: Schema;\n\tlevel: number;\n\tparent: Schema | null;\n\tsubKey: string;\n\tpaneType: 'input' | 'output';\n\tmappingEnabled: boolean;\n\tdraggingPath: string;\n\tdistanceFromActive: number;\n\tnode: INodeUi | null;\n\tsearch: string;\n};\n\nconst props = defineProps<Props>();\n\nconst isSchemaValueArray = computed(() => Array.isArray(props.schema.value));\nconst isSchemaParentTypeArray = computed(() => props.parent?.type === 'array');\nconst isFlat = computed(\n\t() =>\n\t\tprops.level === 0 &&\n\t\tArray.isArray(props.schema.value) &&\n\t\tprops.schema.value.every((v) => !Array.isArray(v.value)),\n);\nconst key = computed((): string | undefined => {\n\treturn isSchemaParentTypeArray.value ? `[${props.schema.key}]` : props.schema.key;\n});\nconst schemaName = computed(() =>\n\tisSchemaParentTypeArray.value ? `${props.schema.type}[${props.schema.key}]` : props.schema.key,\n);\nconst text = computed(() =>\n\tArray.isArray(props.schema.value) ? '' : shorten(props.schema.value, 600, 0),\n);\n\nconst getJsonParameterPath = (path: string): string =>\n\tgetMappedExpression({\n\t\tnodeName: props.node!.name,\n\t\tdistanceFromActive: props.distanceFromActive,\n\t\tpath,\n\t});\n\nconst transitionDelay = (i: number) => `${i * 0.033}s`;\n\nconst getIconBySchemaType = (type: Schema['type']): string => {\n\tswitch (type) {\n\t\tcase 'object':\n\t\t\treturn 'cube';\n\t\tcase 'array':\n\t\t\treturn 'list';\n\t\tcase 'string':\n\t\tcase 'null':\n\t\t\treturn 'font';\n\t\tcase 'number':\n\t\t\treturn 'hashtag';\n\t\tcase 'boolean':\n\t\t\treturn 'check-square';\n\t\tcase 'function':\n\t\t\treturn 'code';\n\t\tcase 'bigint':\n\t\t\treturn 'calculator';\n\t\tcase 'symbol':\n\t\t\treturn 'sun';\n\t\tcase 'undefined':\n\t\t\treturn 'ban';\n\t}\n\n\tcheckExhaustive(type);\n};\n</script>\n\n<template>\n\t<div :class=\"$style.item\" data-test-id=\"run-data-schema-item\">\n\t\t<div\n\t\t\tv-if=\"level > 0 || (level === 0 && !isSchemaValueArray)\"\n\t\t\t:title=\"schema.type\"\n\t\t\t:class=\"{\n\t\t\t\t[$style.pill]: true,\n\t\t\t\t[$style.mappable]: mappingEnabled,\n\t\t\t\t[$style.dragged]: draggingPath === schema.path,\n\t\t\t}\"\n\t\t>\n\t\t\t<span\n\t\t\t\t:class=\"$style.label\"\n\t\t\t\t:data-value=\"getJsonParameterPath(schema.path)\"\n\t\t\t\t:data-name=\"schemaName\"\n\t\t\t\t:data-path=\"schema.path\"\n\t\t\t\t:data-depth=\"level\"\n\t\t\t\tdata-target=\"mappable\"\n\t\t\t>\n\t\t\t\t<font-awesome-icon :icon=\"getIconBySchemaType(schema.type)\" size=\"sm\" />\n\t\t\t\t<TextWithHighlights\n\t\t\t\t\tv-if=\"isSchemaParentTypeArray\"\n\t\t\t\t\t:content=\"props.parent?.key\"\n\t\t\t\t\t:search=\"props.search\"\n\t\t\t\t/>\n\t\t\t\t<TextWithHighlights\n\t\t\t\t\tv-if=\"key\"\n\t\t\t\t\t:class=\"{ [$style.arrayIndex]: isSchemaParentTypeArray }\"\n\t\t\t\t\t:content=\"key\"\n\t\t\t\t\t:search=\"props.search\"\n\t\t\t\t/>\n\t\t\t</span>\n\t\t</div>\n\t\t<span v-if=\"text\" :class=\"$style.text\">{{ text }}</span>\n\t\t<input v-if=\"level > 0 && isSchemaValueArray\" :id=\"subKey\" type=\"checkbox\" checked />\n\t\t<label v-if=\"level > 0 && isSchemaValueArray\" :class=\"$style.toggle\" :for=\"subKey\">\n\t\t\t<font-awesome-icon icon=\"angle-up\" />\n\t\t</label>\n\t\t<div v-if=\"isSchemaValueArray\" :class=\"{ [$style.sub]: true, [$style.flat]: isFlat }\">\n\t\t\t<run-data-schema-item\n\t\t\t\tv-for=\"(s, i) in schema.value\"\n\t\t\t\t:key=\"`${s.type}-${level}-${i}`\"\n\t\t\t\t:schema=\"s\"\n\t\t\t\t:level=\"level + 1\"\n\t\t\t\t:parent=\"schema\"\n\t\t\t\t:pane-type=\"paneType\"\n\t\t\t\t:sub-key=\"`${paneType}_${s.type}-${level}-${i}`\"\n\t\t\t\t:mapping-enabled=\"mappingEnabled\"\n\t\t\t\t:dragging-path=\"draggingPath\"\n\t\t\t\t:distance-from-active=\"distanceFromActive\"\n\t\t\t\t:node=\"node\"\n\t\t\t\t:style=\"{ transitionDelay: transitionDelay(i) }\"\n\t\t\t\t:search=\"search\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n@import '@/styles/variables';\n\n.item {\n\tdisplay: block;\n\tposition: relative;\n\ttransition: all 0.3s $ease-out-expo;\n\n\t.item {\n\t\tpadding-top: var(--spacing-2xs);\n\t\tpadding-left: var(--spacing-l);\n\t}\n\n\tinput {\n\t\tposition: absolute;\n\t\tleft: -100%;\n\n\t\t~ .sub {\n\t\t\theight: 0;\n\n\t\t\t> .item {\n\t\t\t\ttransform: translateX(-100%);\n\t\t\t}\n\t\t}\n\n\t\t&:checked {\n\t\t\t~ .toggle svg {\n\t\t\t\ttransform: rotate(180deg);\n\t\t\t}\n\n\t\t\t~ .sub {\n\t\t\t\theight: auto;\n\n\t\t\t\t> .item {\n\t\t\t\t\ttransform: translateX(0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&::after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tclear: both;\n\t}\n}\n\n.sub {\n\tdisplay: block;\n\toverflow: hidden;\n\ttransition: all 0.2s $ease-out-expo;\n\tclear: both;\n\n\t&.flat {\n\t\t> .item {\n\t\t\tpadding-left: 0;\n\t\t}\n\t}\n\n\t&:nth-of-type(1) {\n\t\t> .item:nth-of-type(1) {\n\t\t\tpadding-top: 0;\n\n\t\t\t.toggle {\n\t\t\t\ttop: -2px;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.pill {\n\tfloat: left;\n\tdisplay: inline-flex;\n\theight: 24px;\n\tpadding: 0 var(--spacing-3xs);\n\tborder: 1px solid var(--color-foreground-light);\n\tborder-radius: 4px;\n\tbackground-color: var(--color-background-xlight);\n\tfont-size: var(--font-size-2xs);\n\tcolor: var(--color-text-dark);\n\n\tspan {\n\t\tdisplay: flex;\n\t\theight: 100%;\n\t\talign-items: center;\n\n\t\tsvg {\n\t\t\tpath {\n\t\t\t\tfill: var(--color-text-light);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.mappable {\n\t\tcursor: grab;\n\n\t\t&:hover {\n\t\t\t&,\n\t\t\tspan span {\n\t\t\t\tbackground-color: var(--color-background-light);\n\t\t\t\tborder-color: var(--color-foreground-base);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.dragged {\n\t\t&,\n\t\t&:hover,\n\t\tspan {\n\t\t\tcolor: var(--color-primary);\n\t\t\tborder-color: var(--color-primary-tint-1);\n\t\t\tbackground-color: var(--color-primary-tint-3);\n\n\t\t\tsvg {\n\t\t\t\tpath {\n\t\t\t\t\tfill: var(--color-primary);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.label {\n\t> span {\n\t\tmargin-left: var(--spacing-3xs);\n\t\tpadding-left: var(--spacing-3xs);\n\t\tborder-left: 1px solid var(--color-foreground-light);\n\n\t\t&.arrayIndex {\n\t\t\tborder: 0;\n\t\t\tpadding-left: 0;\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n}\n\n.text {\n\tdisplay: block;\n\tpadding-top: var(--spacing-4xs);\n\tpadding-left: var(--spacing-2xs);\n\tfont-weight: var(--font-weight-normal);\n\tfont-size: var(--font-size-2xs);\n\toverflow: hidden;\n\tword-break: break-word;\n}\n\n.toggle {\n\tdisplay: flex;\n\tposition: absolute;\n\tpadding: var(--spacing-2xs);\n\tleft: 0;\n\ttop: 5px;\n\tjustify-content: center;\n\talign-items: center;\n\tcursor: pointer;\n\tuser-select: none;\n\tfont-weight: normal;\n\tfont-size: var(--font-size-s);\n\toverflow: hidden;\n\n\tsvg {\n\t\ttransition: all 0.3s $ease-out-expo;\n\t}\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue';\nimport type { INodeUi } from '@/Interface';\nimport RunDataSchemaItem from '@/components/RunDataSchemaItem.vue';\nimport Draggable from '@/components/Draggable.vue';\nimport { useNDVStore } from '@/stores/ndv.store';\nimport { telemetry } from '@/plugins/telemetry';\nimport type { IDataObject } from 'n8n-workflow';\nimport { isEmpty } from '@/utils/typesUtils';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { i18n } from '@/plugins/i18n';\nimport MappingPill from './MappingPill.vue';\nimport { useDataSchema } from '@/composables/useDataSchema';\n\ntype Props = {\n\tdata: IDataObject[];\n\tmappingEnabled: boolean;\n\tdistanceFromActive: number;\n\trunIndex: number;\n\ttotalRuns: number;\n\tpaneType: 'input' | 'output';\n\tnode: INodeUi | null;\n\tsearch: string;\n};\n\nconst props = withDefaults(defineProps<Props>(), {\n\tdistanceFromActive: 0,\n});\n\nconst draggingPath = ref<string>('');\nconst ndvStore = useNDVStore();\nconst { getSchemaForExecutionData } = useDataSchema();\n\nconst schema = computed(() => getSchemaForExecutionData(props.data));\n\nconst isDataEmpty = computed(() => isEmpty(props.data));\n\nconst onDragStart = (el: HTMLElement) => {\n\tif (el?.dataset?.path) {\n\t\tdraggingPath.value = el.dataset.path;\n\t}\n\n\tndvStore.resetMappingTelemetry();\n};\nconst onDragEnd = (el: HTMLElement) => {\n\tdraggingPath.value = '';\n\n\tsetTimeout(() => {\n\t\tconst mappingTelemetry = ndvStore.mappingTelemetry;\n\t\tconst telemetryPayload = {\n\t\t\tsrc_node_type: props.node?.type,\n\t\t\tsrc_field_name: el.dataset.name || '',\n\t\t\tsrc_nodes_back: props.distanceFromActive,\n\t\t\tsrc_run_index: props.runIndex,\n\t\t\tsrc_runs_total: props.totalRuns,\n\t\t\tsrc_field_nest_level: el.dataset.depth || 0,\n\t\t\tsrc_view: 'schema',\n\t\t\tsrc_element: el,\n\t\t\tsuccess: false,\n\t\t\t...mappingTelemetry,\n\t\t};\n\n\t\tvoid useExternalHooks().run('runDataJson.onDragEnd', telemetryPayload);\n\n\t\ttelemetry.track('User dragged data for mapping', telemetryPayload);\n\t}, 1000); // ensure dest data gets set if drop\n};\n</script>\n\n<template>\n\t<div :class=\"$style.schemaWrapper\">\n\t\t<n8n-info-tip v-if=\"isDataEmpty\">{{\n\t\t\ti18n.baseText('dataMapping.schemaView.emptyData')\n\t\t}}</n8n-info-tip>\n\t\t<Draggable\n\t\t\tv-else\n\t\t\ttype=\"mapping\"\n\t\t\ttarget-data-key=\"mappable\"\n\t\t\t:disabled=\"!mappingEnabled\"\n\t\t\t@dragstart=\"onDragStart\"\n\t\t\t@dragend=\"onDragEnd\"\n\t\t>\n\t\t\t<template #preview=\"{ canDrop, el }\">\n\t\t\t\t<MappingPill v-if=\"el\" :html=\"el.outerHTML\" :can-drop=\"canDrop\" />\n\t\t\t</template>\n\t\t\t<div :class=\"$style.schema\">\n\t\t\t\t<RunDataSchemaItem\n\t\t\t\t\t:schema=\"schema\"\n\t\t\t\t\t:level=\"0\"\n\t\t\t\t\t:parent=\"null\"\n\t\t\t\t\t:pane-type=\"paneType\"\n\t\t\t\t\t:sub-key=\"`${schema.type}-0-0`\"\n\t\t\t\t\t:mapping-enabled=\"mappingEnabled\"\n\t\t\t\t\t:dragging-path=\"draggingPath\"\n\t\t\t\t\t:distance-from-active=\"distanceFromActive\"\n\t\t\t\t\t:node=\"node\"\n\t\t\t\t\t:search=\"search\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</Draggable>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.schemaWrapper {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tbottom: 0;\n\tright: 0;\n\toverflow: auto;\n\tline-height: 1.5;\n\tword-break: normal;\n\theight: 100%;\n\twidth: 100%;\n\n\t> div[class*='info'] {\n\t\tpadding: 0 var(--spacing-s);\n\t}\n}\n\n.schema {\n\tdisplay: inline-block;\n\tpadding: 0 var(--spacing-s) var(--spacing-s);\n}\n</style>\n"],"names":["isSchemaValueArray","computed","props","isSchemaParentTypeArray","_a","isFlat","v","key","schemaName","text","shorten","getJsonParameterPath","path","getMappedExpression","transitionDelay","i","getIconBySchemaType","type","checkExhaustive","draggingPath","ref","ndvStore","useNDVStore","getSchemaForExecutionData","useDataSchema","schema","isDataEmpty","isEmpty","onDragStart","el","onDragEnd","mappingTelemetry","telemetryPayload","useExternalHooks","telemetry"],"mappings":"i3DAuBMA,EAAqBC,EAAS,IAAM,MAAM,QAAQC,EAAM,OAAO,KAAK,CAAC,EACrEC,EAA0BF,EAAS,IAAM,OAAA,QAAAG,EAAAF,EAAM,SAAN,YAAAE,EAAc,QAAS,QAAO,EACvEC,EAASJ,EACd,IACCC,EAAM,QAAU,GAChB,MAAM,QAAQA,EAAM,OAAO,KAAK,GAChCA,EAAM,OAAO,MAAM,MAAOI,GAAM,CAAC,MAAM,QAAQA,EAAE,KAAK,CAAC,CAAA,EAEnDC,EAAMN,EAAS,IACbE,EAAwB,MAAQ,IAAID,EAAM,OAAO,GAAG,IAAMA,EAAM,OAAO,GAC9E,EACKM,EAAaP,EAAS,IAC3BE,EAAwB,MAAQ,GAAGD,EAAM,OAAO,IAAI,IAAIA,EAAM,OAAO,GAAG,IAAMA,EAAM,OAAO,GAAA,EAEtFO,EAAOR,EAAS,IACrB,MAAM,QAAQC,EAAM,OAAO,KAAK,EAAI,GAAKQ,EAAQR,EAAM,OAAO,MAAO,IAAK,CAAC,CAAA,EAGtES,EAAwBC,GAC7BC,EAAoB,CACnB,SAAUX,EAAM,KAAM,KACtB,mBAAoBA,EAAM,mBAC1B,KAAAU,CAAA,CACA,EAEIE,EAAmBC,GAAc,GAAGA,EAAI,IAAK,IAE7CC,EAAuBC,GAAiC,CAC7D,OAAQA,EAAM,CACb,IAAK,SACG,MAAA,OACR,IAAK,QACG,MAAA,OACR,IAAK,SACL,IAAK,OACG,MAAA,OACR,IAAK,SACG,MAAA,UACR,IAAK,UACG,MAAA,eACR,IAAK,WACG,MAAA,OACR,IAAK,SACG,MAAA,aACR,IAAK,SACG,MAAA,MACR,IAAK,YACG,MAAA,KACT,CAEAC,EAAgBD,CAAI,CAAA,ixEC5CfE,EAAeC,EAAY,EAAE,EAC7BC,EAAWC,IACX,CAAE,0BAAAC,GAA8BC,IAEhCC,EAASxB,EAAS,IAAMsB,EAA0BrB,EAAM,IAAI,CAAC,EAE7DwB,EAAczB,EAAS,IAAM0B,EAAQzB,EAAM,IAAI,CAAC,EAEhD0B,EAAeC,GAAoB,QACpCzB,EAAAyB,GAAA,YAAAA,EAAI,UAAJ,MAAAzB,EAAa,OACHe,EAAA,MAAQU,EAAG,QAAQ,MAGjCR,EAAS,sBAAsB,CAAA,EAE1BS,EAAaD,GAAoB,CACtCV,EAAa,MAAQ,GAErB,WAAW,IAAM,OAChB,MAAMY,EAAmBV,EAAS,iBAC5BW,EAAmB,CACxB,eAAe5B,EAAAF,EAAM,OAAN,YAAAE,EAAY,KAC3B,eAAgByB,EAAG,QAAQ,MAAQ,GACnC,eAAgB3B,EAAM,mBACtB,cAAeA,EAAM,SACrB,eAAgBA,EAAM,UACtB,qBAAsB2B,EAAG,QAAQ,OAAS,EAC1C,SAAU,SACV,YAAaA,EACb,QAAS,GACT,GAAGE,CAAA,EAGCE,EAAiB,EAAE,IAAI,wBAAyBD,CAAgB,EAE3DE,EAAA,MAAM,gCAAiCF,CAAgB,GAC/D,GAAI,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{m as A}from"./pinia-jQLgEt_L.js";import{v as V,$ as L,e5 as j,g9 as H,a8 as O,_ as B}from"./n8n-oSulVm5C.js";import{D as F}from"./NodeView-
|
|
1
|
+
import{m as A}from"./pinia-jQLgEt_L.js";import{v as V,$ as L,e5 as j,g9 as H,a8 as O,_ as B}from"./n8n-oSulVm5C.js";import{D as F}from"./NodeView-R9MRan_s.js";import{M as W,_ as J}from"./TextWithHighlights.vue_vue_type_script_setup_true_lang-hb_G_Al3.js";import{aP as R}from"./index-36CdMZUz.js";import{G,ag as v,l as r,m as l,I as n,p as s,F as M,a7 as E,T as g,O as d,R as w,S as k,Q as S,M as N}from"./vendor-e5jTRqqt.js";import"./lodash-es-JdX4GWLn.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-eU1v7QRm.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-IDI7B_27.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./useExecutionDebugging-986Mdc3C.js";import"./file-saver-U4zZ5lhe.js";import"./vue-json-pretty-9sl_CzBk.js";import"./dateFormatter-HFYEqE8x.js";import"./RunDataAi-3ZnF5uZf.js";import"./@n8n/codemirror-lang-sql-feLn5IS9.js";import"./@lezer/common-1hBQ1gIF.js";import"./codemirror-lang-html-n8n-wWQLhhqk.js";import"./prettier-s3fE3Qyr.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./codemirror-lang-n8n-expression-HpIZnV_9.js";import"./fast-json-stable-stringify-z-DLxjte.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-b4L9G_D6.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./workflowActivate-v05HQ2xy.js";import"./collaboration.store-INqaSyP2.js";const _=40,U=G({name:"RunDataTable",components:{Draggable:F,MappingPill:W,TextWithHighlights:J},props:{node:{type:Object},inputData:{type:Array},mappingEnabled:{type:Boolean},distanceFromActive:{type:Number},runIndex:{type:Number},outputIndex:{type:Number},totalRuns:{type:Number},pageOffset:{type:Number},hasDefaultHoverState:{type:Boolean},search:{type:String}},setup(){return{externalHooks:O()}},data(){return{activeColumn:-1,forceShowGrip:!1,draggedColumn:!1,draggingPath:null,hoveringPath:null,mappingHintVisible:!1,activeRow:null,columnLimit:_,columnLimitExceeded:!1}},mounted(){if(this.tableData&&this.tableData.columns&&this.$refs.draggable){const e=this.$refs.draggable.$refs.wrapper;e&&this.$emit("mounted",{avgRowHeight:e.offsetHeight/this.tableData.data.length})}},computed:{...A(L,V),hoveringItem(){return this.ndvStore.hoveringItem},pairedItemMappings(){return this.workflowsStore.workflowExecutionPairedItemMappings},tableData(){return this.convertToTable(this.inputData)},focusedMappableInput(){return this.ndvStore.focusedMappableInput}},methods:{shorten:j,isHoveringRow(e){if(e===this.activeRow)return!0;const t=this.pageOffset+e;if(t===0&&!this.hoveringItem&&this.hasDefaultHoverState&&this.distanceFromActive===1)return!0;const a=H(this.node.name,this.runIndex||0,this.outputIndex||0,t);if(!this.hoveringItem||!this.pairedItemMappings[a])return!1;const m=H(this.hoveringItem.nodeName,this.hoveringItem.runIndex,this.hoveringItem.outputIndex,this.hoveringItem.itemIndex);return this.pairedItemMappings[a].has(m)},onMouseEnterCell(e){const t=e.target;if(t&&this.mappingEnabled){const a=t.dataset.col;a&&!isNaN(parseInt(a,10))&&(this.activeColumn=parseInt(a,10))}if(t){const a=t.dataset.row;a&&!isNaN(parseInt(a,10))&&(this.activeRow=parseInt(a,10),this.$emit("activeRowChanged",this.pageOffset+this.activeRow))}},onMouseLeaveCell(){this.activeColumn=-1,this.activeRow=null,this.$emit("activeRowChanged",null)},onMouseEnterKey(e,t){this.hoveringPath=this.getCellExpression(e,t)},onMouseLeaveKey(){this.hoveringPath=null},isHovering(e,t){const a=this.getCellExpression(e,t);return this.hoveringPath===a},getExpression(e){return this.node?R({nodeName:this.node.name,distanceFromActive:this.distanceFromActive,path:[e]}):""},getPathNameFromTarget(e){return e?e.dataset.name:""},getCellPathName(e,t){const a=e[e.length-1];return typeof a=="string"?a:e.length>1?`${e[e.length-2]}[${a}]`:`${this.tableData.columns[t]}[${a}]`},getCellExpression(e,t){if(!this.node)return"";const a=this.tableData.columns[t];return R({nodeName:this.node.name,distanceFromActive:this.distanceFromActive,path:[a,...e]})},isEmpty(e){return e===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&Object.keys(e).length===0||e===null||e===void 0},getValueToRender(e){return e===""?this.$locale.baseText("runData.emptyString"):typeof e=="string"?e.replaceAll(`
|
|
2
2
|
`,"\\n"):Array.isArray(e)&&e.length===0?this.$locale.baseText("runData.emptyArray"):typeof e=="object"&&e!==null&&Object.keys(e).length===0?this.$locale.baseText("runData.emptyObject"):e==null?`[${e}]`:e===!0||e===!1||typeof e=="number"?e.toString():e},onDragStart(){this.draggedColumn=!0,this.ndvStore.resetMappingTelemetry()},onCellDragStart(e){e!=null&&e.dataset.value&&(this.draggingPath=e.dataset.value),this.onDragStart()},onCellDragEnd(e){this.draggingPath=null,this.onDragEnd(e.dataset.name||"","tree",e.dataset.depth||"0")},isDraggingKey(e,t){if(this.draggingPath)return this.draggingPath===this.getCellExpression(e,t)},onDragEnd(e,t,a="0"){setTimeout(()=>{const m=this.ndvStore.mappingTelemetry,h={src_node_type:this.node.type,src_field_name:e,src_nodes_back:this.distanceFromActive,src_run_index:this.runIndex,src_runs_total:this.totalRuns,src_field_nest_level:parseInt(a,10),src_view:"table",src_element:t,success:!1,...m};this.externalHooks.run("runDataTable.onDragEnd",h),this.$telemetry.track("User dragged data for mapping",h)},1e3)},isSimple(e){return typeof e!="object"||e===null||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0},hasJsonInColumn(e){return this.tableData.hasJson[this.tableData.columns[e]]},convertToTable(e){const t=[],a=[];let m,h,c;const C={};return e.forEach(y=>{if(!y.hasOwnProperty("json"))return;c=y.json,h=[];const D=Object.keys(c||{});D.length>_?(this.columnLimitExceeded=!0,m=D.slice(0,_)):m=D,a.forEach(o=>{c.hasOwnProperty(o)?(h.push(c[o]),m.splice(m.indexOf(o),1),C[o]=C[o]||typeof c[o]=="object"&&Object.keys(c[o]||{}).length>0||!1):h.push(void 0)}),m.forEach(o=>{a.push(o),h.push(c[o]),C[o]=C[o]||typeof c[o]=="object"&&Object.keys(c[o]||{}).length>0||!1}),t.push(h)}),t.forEach(y=>{a.length>y.length&&y.push(...new Array(a.length-y.length))}),{hasJson:C,columns:a,data:t}},switchToJsonView(){this.$emit("displayModeChange","json")}},watch:{focusedMappableInput(e){setTimeout(()=>{this.forceShowGrip=!!this.focusedMappableInput},e?300:150)}}}),z="/%7B%7BBASE_PATH%7D%7D/static/data-mapping-gif.gif",Q="_dataDisplay_1krqo_5",X="_table_1krqo_18",Y="_nodeClass_1krqo_66",Z="_emptyCell_1krqo_70",x="_header_1krqo_74",ee="_draggableHeader_1krqo_86",te="_dragButton_1krqo_90",ae="_draggingHeader_1krqo_94",ne="_activeHeader_1krqo_98",oe="_dataKey_1krqo_107",se="_value_1krqo_116",re="_nestedValue_1krqo_120 _value_1krqo_116",ie="_mappable_1krqo_125",le="_empty_1krqo_70",de="_limitColWidth_1krqo_133",pe="_minColWidth_1krqo_137",ge="_hoveringKey_1krqo_141",me="_draggingKey_1krqo_145",ue="_tableRightMargin_1krqo_149",he="_hoveringRow_1krqo_157",ce="_warningTooltip_1krqo_162",ye={dataDisplay:Q,table:X,nodeClass:Y,emptyCell:Z,header:x,draggableHeader:ee,dragButton:te,draggingHeader:ae,activeHeader:ne,dataKey:oe,value:se,nestedValue:re,mappable:ie,empty:le,limitColWidth:de,minColWidth:pe,hoveringKey:ge,draggingKey:me,tableRightMargin:ue,hoveringRow:he,warningTooltip:ce},be=["data-row"],fe=s("img",{src:z},null,-1),ve=["data-test-id"],Ce=["data-row","data-col"],De=["data-name","data-value","data-depth","onMouseenter"],$e={key:0};function we(e,t,a,m,h,c){const C=v("n8n-info-tip"),y=v("MappingPill"),D=v("TextWithHighlights"),o=v("font-awesome-icon"),I=v("Draggable"),T=v("n8n-tooltip"),P=v("i18n-t"),q=v("n8n-tree");return r(),l("div",{class:n(e.$style.dataDisplay)},[e.tableData.columns&&e.tableData.columns.length===0?(r(),l("table",{key:0,class:n(e.$style.table)},[s("tr",null,[s("th",{class:n(e.$style.emptyCell)},null,2),s("th",{class:n(e.$style.tableRightMargin)},null,2)]),(r(!0),l(M,null,E(e.tableData.data,(u,p)=>(r(),l("tr",{key:p,class:n({[e.$style.hoveringRow]:e.isHoveringRow(p)})},[s("td",{"data-row":p,"data-col":0,onMouseenter:t[0]||(t[0]=(...i)=>e.onMouseEnterCell&&e.onMouseEnterCell(...i)),onMouseleave:t[1]||(t[1]=(...i)=>e.onMouseLeaveCell&&e.onMouseLeaveCell(...i))},[g(C,null,{default:d(()=>[k(w(e.$locale.baseText("runData.emptyItemHint")),1)]),_:1})],40,be),s("td",{class:n(e.$style.tableRightMargin)},null,2)],2))),128))],2)):(r(),l("table",{key:1,class:n(e.$style.table)},[s("thead",null,[s("tr",null,[(r(!0),l(M,null,E(e.tableData.columns||[],(u,p)=>(r(),l("th",{key:u},[g(T,{placement:"bottom-start",disabled:!e.mappingEnabled,"show-after":1e3},{content:d(()=>[s("div",null,[fe,k(" "+w(e.$locale.baseText("dataMapping.dragColumnToFieldHint")),1)])]),default:d(()=>[g(I,{type:"mapping",data:e.getExpression(u),disabled:!e.mappingEnabled,onDragstart:e.onDragStart,onDragend:i=>e.onDragEnd(i,"column")},{preview:d(({canDrop:i})=>[g(y,{html:e.shorten(u,16,2),"can-drop":i},null,8,["html","can-drop"])]),default:d(({isDragging:i})=>[s("div",{class:n({[e.$style.header]:!0,[e.$style.draggableHeader]:e.mappingEnabled,[e.$style.activeHeader]:(p===e.activeColumn||e.forceShowGrip)&&e.mappingEnabled,[e.$style.draggingHeader]:i})},[g(D,{content:e.getValueToRender(u||""),search:e.search},null,8,["content","search"]),s("div",{class:n(e.$style.dragButton)},[g(o,{icon:"grip-vertical"})],2)],2)]),_:2},1032,["data","disabled","onDragstart","onDragend"])]),_:2},1032,["disabled"])]))),128)),e.columnLimitExceeded?(r(),l("th",{key:0,class:n(e.$style.header)},[g(T,{placement:"bottom-end"},{content:d(()=>[s("div",null,[g(P,{tag:"span",keypath:"dataMapping.tableView.tableColumnsExceeded.tooltip"},{columnLimit:d(()=>[k(w(e.columnLimit),1)]),link:d(()=>[s("a",{onClick:t[2]||(t[2]=(...u)=>e.switchToJsonView&&e.switchToJsonView(...u))},w(e.$locale.baseText("dataMapping.tableView.tableColumnsExceeded.tooltip.link")),1)]),_:1})])]),default:d(()=>[s("span",null,[g(o,{class:n(e.$style.warningTooltip),icon:"exclamation-triangle"},null,8,["class"]),k(" "+w(e.$locale.baseText("dataMapping.tableView.tableColumnsExceeded")),1)])]),_:1})],2)):S("",!0),s("th",{class:n(e.$style.tableRightMargin)},null,2)])]),g(I,{ref:"draggable",tag:"tbody",type:"mapping","target-data-key":"mappable",disabled:!e.mappingEnabled,onDragstart:e.onCellDragStart,onDragend:e.onCellDragEnd},{preview:d(({canDrop:u,el:p})=>[g(y,{html:e.shorten(e.getPathNameFromTarget(p)||"",16,2),"can-drop":u},null,8,["html","can-drop"])]),default:d(()=>[(r(!0),l(M,null,E(e.tableData.data,(u,p)=>(r(),l("tr",{key:p,class:n({[e.$style.hoveringRow]:e.isHoveringRow(p)}),"data-test-id":e.isHoveringRow(p)?"hovering-item":void 0},[(r(!0),l(M,null,E(u,(i,b)=>(r(),l("td",{key:b,"data-row":p,"data-col":b,class:n(e.hasJsonInColumn(b)?e.$style.minColWidth:e.$style.limitColWidth),onMouseenter:t[4]||(t[4]=(...f)=>e.onMouseEnterCell&&e.onMouseEnterCell(...f)),onMouseleave:t[5]||(t[5]=(...f)=>e.onMouseLeaveCell&&e.onMouseLeaveCell(...f))},[e.isSimple(i)?(r(),N(D,{key:0,content:e.getValueToRender(i),search:e.search,class:n({[e.$style.value]:!0,[e.$style.empty]:e.isEmpty(i)})},null,8,["content","search","class"])):(r(),N(q,{key:1,"node-class":e.$style.nodeClass,value:i},{label:d(({label:f,path:$})=>[s("span",{class:n({[e.$style.hoveringKey]:e.mappingEnabled&&e.isHovering($,b),[e.$style.draggingKey]:e.isDraggingKey($,b),[e.$style.dataKey]:!0,[e.$style.mappable]:e.mappingEnabled}),"data-target":"mappable","data-name":e.getCellPathName($,b),"data-value":e.getCellExpression($,b),"data-depth":$.length,onMouseenter:()=>e.onMouseEnterKey($,b),onMouseleave:t[3]||(t[3]=(...K)=>e.onMouseLeaveKey&&e.onMouseLeaveKey(...K))},w(f||e.$locale.baseText("runData.unnamedField")),43,De)]),value:d(({value:f})=>[g(D,{content:e.getValueToRender(f),search:e.search,class:n({[e.$style.nestedValue]:!0,[e.$style.empty]:e.isEmpty(f)})},null,8,["content","search","class"])]),_:2},1032,["node-class","value"]))],42,Ce))),128)),e.columnLimitExceeded?(r(),l("td",$e)):S("",!0),s("td",{class:n(e.$style.tableRightMargin)},null,2)],10,ve))),128))]),_:1},8,["disabled","onDragstart","onDragend"])],2))],2)}const Me={$style:ye},lt=B(U,[["render",we],["__cssModules",Me]]);export{lt as default};
|
|
3
|
-
//# sourceMappingURL=RunDataTable-
|
|
3
|
+
//# sourceMappingURL=RunDataTable-64svWUC6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunDataTable-G1II-GXc.js","sources":["../../src/components/RunDataTable.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.dataDisplay\">\n\t\t<table v-if=\"tableData.columns && tableData.columns.length === 0\" :class=\"$style.table\">\n\t\t\t<tr>\n\t\t\t\t<th :class=\"$style.emptyCell\"></th>\n\t\t\t\t<th :class=\"$style.tableRightMargin\"></th>\n\t\t\t</tr>\n\t\t\t<tr\n\t\t\t\tv-for=\"(row, index1) in tableData.data\"\n\t\t\t\t:key=\"index1\"\n\t\t\t\t:class=\"{ [$style.hoveringRow]: isHoveringRow(index1) }\"\n\t\t\t>\n\t\t\t\t<td\n\t\t\t\t\t:data-row=\"index1\"\n\t\t\t\t\t:data-col=\"0\"\n\t\t\t\t\t@mouseenter=\"onMouseEnterCell\"\n\t\t\t\t\t@mouseleave=\"onMouseLeaveCell\"\n\t\t\t\t>\n\t\t\t\t\t<n8n-info-tip>{{ $locale.baseText('runData.emptyItemHint') }}</n8n-info-tip>\n\t\t\t\t</td>\n\t\t\t\t<td :class=\"$style.tableRightMargin\"></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<table v-else :class=\"$style.table\">\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<th v-for=\"(column, i) in tableData.columns || []\" :key=\"column\">\n\t\t\t\t\t\t<n8n-tooltip placement=\"bottom-start\" :disabled=\"!mappingEnabled\" :show-after=\"1000\">\n\t\t\t\t\t\t\t<template #content>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<img src=\"/static/data-mapping-gif.gif\" />\n\t\t\t\t\t\t\t\t\t{{ $locale.baseText('dataMapping.dragColumnToFieldHint') }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<Draggable\n\t\t\t\t\t\t\t\ttype=\"mapping\"\n\t\t\t\t\t\t\t\t:data=\"getExpression(column)\"\n\t\t\t\t\t\t\t\t:disabled=\"!mappingEnabled\"\n\t\t\t\t\t\t\t\t@dragstart=\"onDragStart\"\n\t\t\t\t\t\t\t\t@dragend=\"(column) => onDragEnd(column, 'column')\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<template #preview=\"{ canDrop }\">\n\t\t\t\t\t\t\t\t\t<MappingPill :html=\"shorten(column, 16, 2)\" :can-drop=\"canDrop\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t<template #default=\"{ isDragging }\">\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t\t\t\t\t[$style.header]: true,\n\t\t\t\t\t\t\t\t\t\t\t[$style.draggableHeader]: mappingEnabled,\n\t\t\t\t\t\t\t\t\t\t\t[$style.activeHeader]:\n\t\t\t\t\t\t\t\t\t\t\t\t(i === activeColumn || forceShowGrip) && mappingEnabled,\n\t\t\t\t\t\t\t\t\t\t\t[$style.draggingHeader]: isDragging,\n\t\t\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<TextWithHighlights\n\t\t\t\t\t\t\t\t\t\t\t:content=\"getValueToRender(column || '')\"\n\t\t\t\t\t\t\t\t\t\t\t:search=\"search\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<div :class=\"$style.dragButton\">\n\t\t\t\t\t\t\t\t\t\t\t<font-awesome-icon icon=\"grip-vertical\" />\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</Draggable>\n\t\t\t\t\t\t</n8n-tooltip>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th v-if=\"columnLimitExceeded\" :class=\"$style.header\">\n\t\t\t\t\t\t<n8n-tooltip placement=\"bottom-end\">\n\t\t\t\t\t\t\t<template #content>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<i18n-t tag=\"span\" keypath=\"dataMapping.tableView.tableColumnsExceeded.tooltip\">\n\t\t\t\t\t\t\t\t\t\t<template #columnLimit>{{ columnLimit }}</template>\n\t\t\t\t\t\t\t\t\t\t<template #link>\n\t\t\t\t\t\t\t\t\t\t\t<a @click=\"switchToJsonView\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t$locale.baseText('dataMapping.tableView.tableColumnsExceeded.tooltip.link')\n\t\t\t\t\t\t\t\t\t\t\t}}</a>\n\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t</i18n-t>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\t\t\t\t:class=\"$style['warningTooltip']\"\n\t\t\t\t\t\t\t\t\ticon=\"exclamation-triangle\"\n\t\t\t\t\t\t\t\t></font-awesome-icon>\n\t\t\t\t\t\t\t\t{{ $locale.baseText('dataMapping.tableView.tableColumnsExceeded') }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</n8n-tooltip>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th :class=\"$style.tableRightMargin\"></th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<Draggable\n\t\t\t\tref=\"draggable\"\n\t\t\t\ttag=\"tbody\"\n\t\t\t\ttype=\"mapping\"\n\t\t\t\ttarget-data-key=\"mappable\"\n\t\t\t\t:disabled=\"!mappingEnabled\"\n\t\t\t\t@dragstart=\"onCellDragStart\"\n\t\t\t\t@dragend=\"onCellDragEnd\"\n\t\t\t>\n\t\t\t\t<template #preview=\"{ canDrop, el }\">\n\t\t\t\t\t<MappingPill\n\t\t\t\t\t\t:html=\"shorten(getPathNameFromTarget(el) || '', 16, 2)\"\n\t\t\t\t\t\t:can-drop=\"canDrop\"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<tr\n\t\t\t\t\tv-for=\"(row, index1) in tableData.data\"\n\t\t\t\t\t:key=\"index1\"\n\t\t\t\t\t:class=\"{ [$style.hoveringRow]: isHoveringRow(index1) }\"\n\t\t\t\t\t:data-test-id=\"isHoveringRow(index1) ? 'hovering-item' : undefined\"\n\t\t\t\t>\n\t\t\t\t\t<td\n\t\t\t\t\t\tv-for=\"(data, index2) in row\"\n\t\t\t\t\t\t:key=\"index2\"\n\t\t\t\t\t\t:data-row=\"index1\"\n\t\t\t\t\t\t:data-col=\"index2\"\n\t\t\t\t\t\t:class=\"hasJsonInColumn(index2) ? $style.minColWidth : $style.limitColWidth\"\n\t\t\t\t\t\t@mouseenter=\"onMouseEnterCell\"\n\t\t\t\t\t\t@mouseleave=\"onMouseLeaveCell\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextWithHighlights\n\t\t\t\t\t\t\tv-if=\"isSimple(data)\"\n\t\t\t\t\t\t\t:content=\"getValueToRender(data)\"\n\t\t\t\t\t\t\t:search=\"search\"\n\t\t\t\t\t\t\t:class=\"{ [$style.value]: true, [$style.empty]: isEmpty(data) }\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<n8n-tree v-else :node-class=\"$style.nodeClass\" :value=\"data\">\n\t\t\t\t\t\t\t<template #label=\"{ label, path }\">\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t\t\t\t[$style.hoveringKey]: mappingEnabled && isHovering(path, index2),\n\t\t\t\t\t\t\t\t\t\t[$style.draggingKey]: isDraggingKey(path, index2),\n\t\t\t\t\t\t\t\t\t\t[$style.dataKey]: true,\n\t\t\t\t\t\t\t\t\t\t[$style.mappable]: mappingEnabled,\n\t\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t\tdata-target=\"mappable\"\n\t\t\t\t\t\t\t\t\t:data-name=\"getCellPathName(path, index2)\"\n\t\t\t\t\t\t\t\t\t:data-value=\"getCellExpression(path, index2)\"\n\t\t\t\t\t\t\t\t\t:data-depth=\"path.length\"\n\t\t\t\t\t\t\t\t\t@mouseenter=\"() => onMouseEnterKey(path, index2)\"\n\t\t\t\t\t\t\t\t\t@mouseleave=\"onMouseLeaveKey\"\n\t\t\t\t\t\t\t\t\t>{{ label || $locale.baseText('runData.unnamedField') }}</span\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<template #value=\"{ value }\">\n\t\t\t\t\t\t\t\t<TextWithHighlights\n\t\t\t\t\t\t\t\t\t:content=\"getValueToRender(value)\"\n\t\t\t\t\t\t\t\t\t:search=\"search\"\n\t\t\t\t\t\t\t\t\t:class=\"{ [$style.nestedValue]: true, [$style.empty]: isEmpty(value) }\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</n8n-tree>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"columnLimitExceeded\"></td>\n\t\t\t\t\t<td :class=\"$style.tableRightMargin\"></td>\n\t\t\t\t</tr>\n\t\t\t</Draggable>\n\t\t</table>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport { mapStores } from 'pinia';\nimport type { INodeUi, ITableData, NDVState } from '@/Interface';\nimport { shorten } from '@/utils/typesUtils';\nimport { getPairedItemId } from '@/utils/pairedItemUtils';\nimport type { GenericValue, IDataObject, INodeExecutionData } from 'n8n-workflow';\nimport Draggable from './Draggable.vue';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { useNDVStore } from '@/stores/ndv.store';\nimport MappingPill from './MappingPill.vue';\nimport { getMappedExpression } from '@/utils/mappingUtils';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport TextWithHighlights from './TextWithHighlights.vue';\n\nconst MAX_COLUMNS_LIMIT = 40;\n\ntype DraggableRef = InstanceType<typeof Draggable>;\n\nexport default defineComponent({\n\tname: 'RunDataTable',\n\tcomponents: { Draggable, MappingPill, TextWithHighlights },\n\tprops: {\n\t\tnode: {\n\t\t\ttype: Object as PropType<INodeUi>,\n\t\t},\n\t\tinputData: {\n\t\t\ttype: Array as PropType<INodeExecutionData[]>,\n\t\t},\n\t\tmappingEnabled: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tdistanceFromActive: {\n\t\t\ttype: Number,\n\t\t},\n\t\trunIndex: {\n\t\t\ttype: Number,\n\t\t},\n\t\toutputIndex: {\n\t\t\ttype: Number,\n\t\t},\n\t\ttotalRuns: {\n\t\t\ttype: Number,\n\t\t},\n\t\tpageOffset: {\n\t\t\ttype: Number,\n\t\t},\n\t\thasDefaultHoverState: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tsearch: {\n\t\t\ttype: String,\n\t\t},\n\t},\n\tsetup() {\n\t\tconst externalHooks = useExternalHooks();\n\t\treturn {\n\t\t\texternalHooks,\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tactiveColumn: -1,\n\t\t\tforceShowGrip: false,\n\t\t\tdraggedColumn: false,\n\t\t\tdraggingPath: null as null | string,\n\t\t\thoveringPath: null as null | string,\n\t\t\tmappingHintVisible: false,\n\t\t\tactiveRow: null as number | null,\n\t\t\tcolumnLimit: MAX_COLUMNS_LIMIT,\n\t\t\tcolumnLimitExceeded: false,\n\t\t};\n\t},\n\tmounted() {\n\t\tif (this.tableData && this.tableData.columns && this.$refs.draggable) {\n\t\t\tconst tbody = (this.$refs.draggable as DraggableRef).$refs.wrapper;\n\t\t\tif (tbody) {\n\t\t\t\tthis.$emit('mounted', {\n\t\t\t\t\tavgRowHeight: tbody.offsetHeight / this.tableData.data.length,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapStores(useNDVStore, useWorkflowsStore),\n\t\thoveringItem(): NDVState['hoveringItem'] {\n\t\t\treturn this.ndvStore.hoveringItem;\n\t\t},\n\t\tpairedItemMappings(): { [itemId: string]: Set<string> } {\n\t\t\treturn this.workflowsStore.workflowExecutionPairedItemMappings;\n\t\t},\n\t\ttableData(): ITableData {\n\t\t\treturn this.convertToTable(this.inputData);\n\t\t},\n\t\tfocusedMappableInput(): string {\n\t\t\treturn this.ndvStore.focusedMappableInput;\n\t\t},\n\t},\n\tmethods: {\n\t\tshorten,\n\t\tisHoveringRow(row: number): boolean {\n\t\t\tif (row === this.activeRow) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst itemIndex = this.pageOffset + row;\n\t\t\tif (\n\t\t\t\titemIndex === 0 &&\n\t\t\t\t!this.hoveringItem &&\n\t\t\t\tthis.hasDefaultHoverState &&\n\t\t\t\tthis.distanceFromActive === 1\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst itemNodeId = getPairedItemId(\n\t\t\t\tthis.node.name,\n\t\t\t\tthis.runIndex || 0,\n\t\t\t\tthis.outputIndex || 0,\n\t\t\t\titemIndex,\n\t\t\t);\n\t\t\tif (!this.hoveringItem || !this.pairedItemMappings[itemNodeId]) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst hoveringItemId = getPairedItemId(\n\t\t\t\tthis.hoveringItem.nodeName,\n\t\t\t\tthis.hoveringItem.runIndex,\n\t\t\t\tthis.hoveringItem.outputIndex,\n\t\t\t\tthis.hoveringItem.itemIndex,\n\t\t\t);\n\t\t\treturn this.pairedItemMappings[itemNodeId].has(hoveringItemId);\n\t\t},\n\t\tonMouseEnterCell(e: MouseEvent) {\n\t\t\tconst target = e.target;\n\t\t\tif (target && this.mappingEnabled) {\n\t\t\t\tconst col = (target as HTMLElement).dataset.col;\n\t\t\t\tif (col && !isNaN(parseInt(col, 10))) {\n\t\t\t\t\tthis.activeColumn = parseInt(col, 10);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (target) {\n\t\t\t\tconst row = (target as HTMLElement).dataset.row;\n\t\t\t\tif (row && !isNaN(parseInt(row, 10))) {\n\t\t\t\t\tthis.activeRow = parseInt(row, 10);\n\t\t\t\t\tthis.$emit('activeRowChanged', this.pageOffset + this.activeRow);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonMouseLeaveCell() {\n\t\t\tthis.activeColumn = -1;\n\t\t\tthis.activeRow = null;\n\t\t\tthis.$emit('activeRowChanged', null);\n\t\t},\n\t\tonMouseEnterKey(path: string[], colIndex: number) {\n\t\t\tthis.hoveringPath = this.getCellExpression(path, colIndex);\n\t\t},\n\t\tonMouseLeaveKey() {\n\t\t\tthis.hoveringPath = null;\n\t\t},\n\t\tisHovering(path: string[], colIndex: number) {\n\t\t\tconst expr = this.getCellExpression(path, colIndex);\n\n\t\t\treturn this.hoveringPath === expr;\n\t\t},\n\t\tgetExpression(column: string) {\n\t\t\tif (!this.node) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn getMappedExpression({\n\t\t\t\tnodeName: this.node.name,\n\t\t\t\tdistanceFromActive: this.distanceFromActive,\n\t\t\t\tpath: [column],\n\t\t\t});\n\t\t},\n\t\tgetPathNameFromTarget(el: HTMLElement) {\n\t\t\tif (!el) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn el.dataset.name;\n\t\t},\n\t\tgetCellPathName(path: Array<string | number>, colIndex: number) {\n\t\t\tconst lastKey = path[path.length - 1];\n\t\t\tif (typeof lastKey === 'string') {\n\t\t\t\treturn lastKey;\n\t\t\t}\n\t\t\tif (path.length > 1) {\n\t\t\t\tconst prevKey = path[path.length - 2];\n\t\t\t\treturn `${prevKey}[${lastKey}]`;\n\t\t\t}\n\t\t\tconst column = this.tableData.columns[colIndex];\n\t\t\treturn `${column}[${lastKey}]`;\n\t\t},\n\t\tgetCellExpression(path: Array<string | number>, colIndex: number) {\n\t\t\tif (!this.node) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tconst column = this.tableData.columns[colIndex];\n\t\t\treturn getMappedExpression({\n\t\t\t\tnodeName: this.node.name,\n\t\t\t\tdistanceFromActive: this.distanceFromActive,\n\t\t\t\tpath: [column, ...path],\n\t\t\t});\n\t\t},\n\t\tisEmpty(value: unknown): boolean {\n\t\t\treturn (\n\t\t\t\tvalue === '' ||\n\t\t\t\t(Array.isArray(value) && value.length === 0) ||\n\t\t\t\t(typeof value === 'object' && value !== null && Object.keys(value).length === 0) ||\n\t\t\t\tvalue === null ||\n\t\t\t\tvalue === undefined\n\t\t\t);\n\t\t},\n\t\tgetValueToRender(value: unknown): string {\n\t\t\tif (value === '') {\n\t\t\t\treturn this.$locale.baseText('runData.emptyString');\n\t\t\t}\n\t\t\tif (typeof value === 'string') {\n\t\t\t\treturn value.replaceAll('\\n', '\\\\n');\n\t\t\t}\n\t\t\tif (Array.isArray(value) && value.length === 0) {\n\t\t\t\treturn this.$locale.baseText('runData.emptyArray');\n\t\t\t}\n\t\t\tif (typeof value === 'object' && value !== null && Object.keys(value).length === 0) {\n\t\t\t\treturn this.$locale.baseText('runData.emptyObject');\n\t\t\t}\n\t\t\tif (value === null || value === undefined) {\n\t\t\t\treturn `[${value}]`;\n\t\t\t}\n\t\t\tif (value === true || value === false || typeof value === 'number') {\n\t\t\t\treturn value.toString();\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tonDragStart() {\n\t\t\tthis.draggedColumn = true;\n\t\t\tthis.ndvStore.resetMappingTelemetry();\n\t\t},\n\t\tonCellDragStart(el: HTMLElement) {\n\t\t\tif (el?.dataset.value) {\n\t\t\t\tthis.draggingPath = el.dataset.value;\n\t\t\t}\n\n\t\t\tthis.onDragStart();\n\t\t},\n\t\tonCellDragEnd(el: HTMLElement) {\n\t\t\tthis.draggingPath = null;\n\n\t\t\tthis.onDragEnd(el.dataset.name || '', 'tree', el.dataset.depth || '0');\n\t\t},\n\t\tisDraggingKey(path: Array<string | number>, colIndex: number) {\n\t\t\tif (!this.draggingPath) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn this.draggingPath === this.getCellExpression(path, colIndex);\n\t\t},\n\t\tonDragEnd(column: string, src: string, depth = '0') {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst mappingTelemetry = this.ndvStore.mappingTelemetry;\n\t\t\t\tconst telemetryPayload = {\n\t\t\t\t\tsrc_node_type: this.node.type,\n\t\t\t\t\tsrc_field_name: column,\n\t\t\t\t\tsrc_nodes_back: this.distanceFromActive,\n\t\t\t\t\tsrc_run_index: this.runIndex,\n\t\t\t\t\tsrc_runs_total: this.totalRuns,\n\t\t\t\t\tsrc_field_nest_level: parseInt(depth, 10),\n\t\t\t\t\tsrc_view: 'table',\n\t\t\t\t\tsrc_element: src,\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\t...mappingTelemetry,\n\t\t\t\t};\n\n\t\t\t\tvoid this.externalHooks.run('runDataTable.onDragEnd', telemetryPayload);\n\n\t\t\t\tthis.$telemetry.track('User dragged data for mapping', telemetryPayload);\n\t\t\t}, 1000); // ensure dest data gets set if drop\n\t\t},\n\t\tisSimple(data: unknown): boolean {\n\t\t\treturn (\n\t\t\t\ttypeof data !== 'object' ||\n\t\t\t\tdata === null ||\n\t\t\t\t(Array.isArray(data) && data.length === 0) ||\n\t\t\t\t(typeof data === 'object' && Object.keys(data).length === 0)\n\t\t\t);\n\t\t},\n\t\thasJsonInColumn(colIndex: number): boolean {\n\t\t\treturn this.tableData.hasJson[this.tableData.columns[colIndex]];\n\t\t},\n\t\tconvertToTable(inputData: INodeExecutionData[]): ITableData {\n\t\t\tconst tableData: GenericValue[][] = [];\n\t\t\tconst tableColumns: string[] = [];\n\t\t\tlet leftEntryColumns: string[], entryRows: GenericValue[];\n\t\t\t// Go over all entries\n\t\t\tlet entry: IDataObject;\n\t\t\tconst hasJson: { [key: string]: boolean } = {};\n\t\t\tinputData.forEach((data) => {\n\t\t\t\tif (!data.hasOwnProperty('json')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tentry = data.json;\n\n\t\t\t\t// Go over all keys of entry\n\t\t\t\tentryRows = [];\n\t\t\t\tconst entryColumns = Object.keys(entry || {});\n\n\t\t\t\tif (entryColumns.length > MAX_COLUMNS_LIMIT) {\n\t\t\t\t\tthis.columnLimitExceeded = true;\n\t\t\t\t\tleftEntryColumns = entryColumns.slice(0, MAX_COLUMNS_LIMIT);\n\t\t\t\t} else {\n\t\t\t\t\tleftEntryColumns = entryColumns;\n\t\t\t\t}\n\n\t\t\t\t// Go over all the already existing column-keys\n\t\t\t\ttableColumns.forEach((key) => {\n\t\t\t\t\tif (entry.hasOwnProperty(key)) {\n\t\t\t\t\t\t// Entry does have key so add its value\n\t\t\t\t\t\tentryRows.push(entry[key]);\n\t\t\t\t\t\t// Remove key so that we know that it got added\n\t\t\t\t\t\tleftEntryColumns.splice(leftEntryColumns.indexOf(key), 1);\n\n\t\t\t\t\t\thasJson[key] =\n\t\t\t\t\t\t\thasJson[key] ||\n\t\t\t\t\t\t\t(typeof entry[key] === 'object' && Object.keys(entry[key] || {}).length > 0) ||\n\t\t\t\t\t\t\tfalse;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Entry does not have key so add undefined\n\t\t\t\t\t\tentryRows.push(undefined);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Go over all the columns the entry has but did not exist yet\n\t\t\t\tleftEntryColumns.forEach((key) => {\n\t\t\t\t\t// Add the key for all runs in the future\n\t\t\t\t\ttableColumns.push(key);\n\t\t\t\t\t// Add the value\n\t\t\t\t\tentryRows.push(entry[key]);\n\t\t\t\t\thasJson[key] =\n\t\t\t\t\t\thasJson[key] ||\n\t\t\t\t\t\t(typeof entry[key] === 'object' && Object.keys(entry[key] || {}).length > 0) ||\n\t\t\t\t\t\tfalse;\n\t\t\t\t});\n\n\t\t\t\t// Add the data of the entry\n\t\t\t\ttableData.push(entryRows);\n\t\t\t});\n\n\t\t\t// Make sure that all entry-rows have the same length\n\t\t\ttableData.forEach((entryRows) => {\n\t\t\t\tif (tableColumns.length > entryRows.length) {\n\t\t\t\t\t// Has fewer entries so add the missing ones\n\t\t\t\t\tentryRows.push(...new Array(tableColumns.length - entryRows.length));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\thasJson,\n\t\t\t\tcolumns: tableColumns,\n\t\t\t\tdata: tableData,\n\t\t\t};\n\t\t},\n\t\tswitchToJsonView() {\n\t\t\tthis.$emit('displayModeChange', 'json');\n\t\t},\n\t},\n\twatch: {\n\t\tfocusedMappableInput(curr: boolean) {\n\t\t\tsetTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tthis.forceShowGrip = !!this.focusedMappableInput;\n\t\t\t\t},\n\t\t\t\tcurr ? 300 : 150,\n\t\t\t);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.dataDisplay {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding-left: var(--spacing-s);\n\tright: 0;\n\toverflow-y: auto;\n\tline-height: 1.5;\n\tword-break: normal;\n\theight: 100%;\n\tpadding-bottom: var(--spacing-3xl);\n}\n\n.table {\n\tborder-collapse: separate;\n\ttext-align: left;\n\twidth: calc(100%);\n\tfont-size: var(--font-size-s);\n\n\tth {\n\t\tbackground-color: var(--color-background-base);\n\t\tborder-top: var(--border-base);\n\t\tborder-bottom: var(--border-base);\n\t\tborder-left: var(--border-base);\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\tcolor: var(--color-text-dark);\n\t\tz-index: 1;\n\t}\n\n\ttd {\n\t\tvertical-align: top;\n\t\tpadding: var(--spacing-2xs) var(--spacing-2xs) var(--spacing-2xs) var(--spacing-3xs);\n\t\tborder-bottom: var(--border-base);\n\t\tborder-left: var(--border-base);\n\t\toverflow-wrap: break-word;\n\t\twhite-space: pre-wrap;\n\t}\n\n\ttd:first-child,\n\ttd:nth-last-child(2) {\n\t\tposition: relative;\n\t\tz-index: 0;\n\n\t\t&:after {\n\t\t\t// add border without shifting content\n\t\t\tcontent: '';\n\t\t\tposition: absolute;\n\t\t\theight: 100%;\n\t\t\twidth: 2px;\n\t\t\ttop: 0;\n\t\t}\n\t}\n\n\ttd:nth-last-child(2):after {\n\t\tright: -1px;\n\t}\n\n\ttd:first-child:after {\n\t\tleft: -1px;\n\t}\n\n\tth:last-child,\n\ttd:last-child {\n\t\tborder-right: var(--border-base);\n\t}\n}\n\n.nodeClass {\n\tmargin-bottom: var(--spacing-5xs);\n}\n\n.emptyCell {\n\theight: 32px;\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: var(--spacing-2xs);\n\n\tspan {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tflex-grow: 1;\n\t}\n}\n\n.draggableHeader {\n\t&:hover {\n\t\tcursor: grab;\n\t\tbackground-color: var(--color-foreground-base);\n\n\t\t.dragButton {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n.draggingHeader {\n\tbackground-color: var(--color-primary-tint-2);\n}\n\n.activeHeader {\n\t.dragButton {\n\t\topacity: 1;\n\t}\n}\n\n.dragButton {\n\topacity: 0;\n\tmargin-left: var(--spacing-2xs);\n}\n\n.dataKey {\n\tcolor: var(--color-text-dark);\n\tline-height: 1.7;\n\tfont-weight: var(--font-weight-bold);\n\tborder-radius: var(--border-radius-base);\n\tpadding: 0 var(--spacing-5xs) 0 var(--spacing-5xs);\n\tmargin-right: var(--spacing-5xs);\n}\n\n.value {\n\tline-height: var(--font-line-height-regular);\n}\n\n.nestedValue {\n\tcomposes: value;\n\tmargin-left: var(--spacing-4xs);\n}\n\n.mappable {\n\tcursor: grab;\n}\n\n.empty {\n\tcolor: var(--color-danger);\n}\n\n.limitColWidth {\n\tmax-width: 300px;\n}\n\n.minColWidth {\n\tmin-width: 240px;\n}\n\n.hoveringKey {\n\tbackground-color: var(--color-foreground-base);\n}\n\n.draggingKey {\n\tbackground-color: var(--color-primary-tint-2);\n}\n\n.tableRightMargin {\n\t// becomes necessary with large tables\n\tbackground-color: var(--color-background-base) !important;\n\twidth: var(--spacing-s);\n\tborder-right: none !important;\n\tborder-top: none !important;\n\tborder-bottom: none !important;\n}\n\n.hoveringRow {\n\ttd:first-child:after,\n\ttd:nth-last-child(2):after {\n\t\tbackground-color: var(--color-secondary);\n\t}\n}\n\n.warningTooltip {\n\tcolor: var(--color-warning);\n}\n</style>\n"],"names":["MAX_COLUMNS_LIMIT","_sfc_main","defineComponent","Draggable","MappingPill","TextWithHighlights","useExternalHooks","tbody","mapStores","useNDVStore","useWorkflowsStore","shorten","row","itemIndex","itemNodeId","getPairedItemId","hoveringItemId","target","col","path","colIndex","expr","column","getMappedExpression","el","lastKey","value","src","depth","mappingTelemetry","telemetryPayload","data","inputData","tableData","tableColumns","leftEntryColumns","entryRows","entry","hasJson","entryColumns","key","curr","_resolveComponent","_normalizeClass","_ctx","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","index1","_cache","args","_createVNode","_component_n8n_info_tip","_withCtx","_hoisted_1","i","_component_n8n_tooltip","_hoisted_2","_component_Draggable","canDrop","_component_MappingPill","isDragging","_component_TextWithHighlights","_component_i18n_t","_createTextVNode","_toDisplayString","_component_font_awesome_icon","_createCommentVNode","index2","_createBlock","_component_n8n_tree","label","_hoisted_5","_hoisted_4","_hoisted_6"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RunDataTable-64svWUC6.js","sources":["../../src/components/RunDataTable.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.dataDisplay\">\n\t\t<table v-if=\"tableData.columns && tableData.columns.length === 0\" :class=\"$style.table\">\n\t\t\t<tr>\n\t\t\t\t<th :class=\"$style.emptyCell\"></th>\n\t\t\t\t<th :class=\"$style.tableRightMargin\"></th>\n\t\t\t</tr>\n\t\t\t<tr\n\t\t\t\tv-for=\"(row, index1) in tableData.data\"\n\t\t\t\t:key=\"index1\"\n\t\t\t\t:class=\"{ [$style.hoveringRow]: isHoveringRow(index1) }\"\n\t\t\t>\n\t\t\t\t<td\n\t\t\t\t\t:data-row=\"index1\"\n\t\t\t\t\t:data-col=\"0\"\n\t\t\t\t\t@mouseenter=\"onMouseEnterCell\"\n\t\t\t\t\t@mouseleave=\"onMouseLeaveCell\"\n\t\t\t\t>\n\t\t\t\t\t<n8n-info-tip>{{ $locale.baseText('runData.emptyItemHint') }}</n8n-info-tip>\n\t\t\t\t</td>\n\t\t\t\t<td :class=\"$style.tableRightMargin\"></td>\n\t\t\t</tr>\n\t\t</table>\n\t\t<table v-else :class=\"$style.table\">\n\t\t\t<thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<th v-for=\"(column, i) in tableData.columns || []\" :key=\"column\">\n\t\t\t\t\t\t<n8n-tooltip placement=\"bottom-start\" :disabled=\"!mappingEnabled\" :show-after=\"1000\">\n\t\t\t\t\t\t\t<template #content>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<img src=\"/static/data-mapping-gif.gif\" />\n\t\t\t\t\t\t\t\t\t{{ $locale.baseText('dataMapping.dragColumnToFieldHint') }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<Draggable\n\t\t\t\t\t\t\t\ttype=\"mapping\"\n\t\t\t\t\t\t\t\t:data=\"getExpression(column)\"\n\t\t\t\t\t\t\t\t:disabled=\"!mappingEnabled\"\n\t\t\t\t\t\t\t\t@dragstart=\"onDragStart\"\n\t\t\t\t\t\t\t\t@dragend=\"(column) => onDragEnd(column, 'column')\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<template #preview=\"{ canDrop }\">\n\t\t\t\t\t\t\t\t\t<MappingPill :html=\"shorten(column, 16, 2)\" :can-drop=\"canDrop\" />\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t<template #default=\"{ isDragging }\">\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t\t\t\t\t[$style.header]: true,\n\t\t\t\t\t\t\t\t\t\t\t[$style.draggableHeader]: mappingEnabled,\n\t\t\t\t\t\t\t\t\t\t\t[$style.activeHeader]:\n\t\t\t\t\t\t\t\t\t\t\t\t(i === activeColumn || forceShowGrip) && mappingEnabled,\n\t\t\t\t\t\t\t\t\t\t\t[$style.draggingHeader]: isDragging,\n\t\t\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<TextWithHighlights\n\t\t\t\t\t\t\t\t\t\t\t:content=\"getValueToRender(column || '')\"\n\t\t\t\t\t\t\t\t\t\t\t:search=\"search\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<div :class=\"$style.dragButton\">\n\t\t\t\t\t\t\t\t\t\t\t<font-awesome-icon icon=\"grip-vertical\" />\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</Draggable>\n\t\t\t\t\t\t</n8n-tooltip>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th v-if=\"columnLimitExceeded\" :class=\"$style.header\">\n\t\t\t\t\t\t<n8n-tooltip placement=\"bottom-end\">\n\t\t\t\t\t\t\t<template #content>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<i18n-t tag=\"span\" keypath=\"dataMapping.tableView.tableColumnsExceeded.tooltip\">\n\t\t\t\t\t\t\t\t\t\t<template #columnLimit>{{ columnLimit }}</template>\n\t\t\t\t\t\t\t\t\t\t<template #link>\n\t\t\t\t\t\t\t\t\t\t\t<a @click=\"switchToJsonView\">{{\n\t\t\t\t\t\t\t\t\t\t\t\t$locale.baseText('dataMapping.tableView.tableColumnsExceeded.tooltip.link')\n\t\t\t\t\t\t\t\t\t\t\t}}</a>\n\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t</i18n-t>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\t\t\t\t:class=\"$style['warningTooltip']\"\n\t\t\t\t\t\t\t\t\ticon=\"exclamation-triangle\"\n\t\t\t\t\t\t\t\t></font-awesome-icon>\n\t\t\t\t\t\t\t\t{{ $locale.baseText('dataMapping.tableView.tableColumnsExceeded') }}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</n8n-tooltip>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th :class=\"$style.tableRightMargin\"></th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<Draggable\n\t\t\t\tref=\"draggable\"\n\t\t\t\ttag=\"tbody\"\n\t\t\t\ttype=\"mapping\"\n\t\t\t\ttarget-data-key=\"mappable\"\n\t\t\t\t:disabled=\"!mappingEnabled\"\n\t\t\t\t@dragstart=\"onCellDragStart\"\n\t\t\t\t@dragend=\"onCellDragEnd\"\n\t\t\t>\n\t\t\t\t<template #preview=\"{ canDrop, el }\">\n\t\t\t\t\t<MappingPill\n\t\t\t\t\t\t:html=\"shorten(getPathNameFromTarget(el) || '', 16, 2)\"\n\t\t\t\t\t\t:can-drop=\"canDrop\"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<tr\n\t\t\t\t\tv-for=\"(row, index1) in tableData.data\"\n\t\t\t\t\t:key=\"index1\"\n\t\t\t\t\t:class=\"{ [$style.hoveringRow]: isHoveringRow(index1) }\"\n\t\t\t\t\t:data-test-id=\"isHoveringRow(index1) ? 'hovering-item' : undefined\"\n\t\t\t\t>\n\t\t\t\t\t<td\n\t\t\t\t\t\tv-for=\"(data, index2) in row\"\n\t\t\t\t\t\t:key=\"index2\"\n\t\t\t\t\t\t:data-row=\"index1\"\n\t\t\t\t\t\t:data-col=\"index2\"\n\t\t\t\t\t\t:class=\"hasJsonInColumn(index2) ? $style.minColWidth : $style.limitColWidth\"\n\t\t\t\t\t\t@mouseenter=\"onMouseEnterCell\"\n\t\t\t\t\t\t@mouseleave=\"onMouseLeaveCell\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextWithHighlights\n\t\t\t\t\t\t\tv-if=\"isSimple(data)\"\n\t\t\t\t\t\t\t:content=\"getValueToRender(data)\"\n\t\t\t\t\t\t\t:search=\"search\"\n\t\t\t\t\t\t\t:class=\"{ [$style.value]: true, [$style.empty]: isEmpty(data) }\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<n8n-tree v-else :node-class=\"$style.nodeClass\" :value=\"data\">\n\t\t\t\t\t\t\t<template #label=\"{ label, path }\">\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t\t\t\t[$style.hoveringKey]: mappingEnabled && isHovering(path, index2),\n\t\t\t\t\t\t\t\t\t\t[$style.draggingKey]: isDraggingKey(path, index2),\n\t\t\t\t\t\t\t\t\t\t[$style.dataKey]: true,\n\t\t\t\t\t\t\t\t\t\t[$style.mappable]: mappingEnabled,\n\t\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t\tdata-target=\"mappable\"\n\t\t\t\t\t\t\t\t\t:data-name=\"getCellPathName(path, index2)\"\n\t\t\t\t\t\t\t\t\t:data-value=\"getCellExpression(path, index2)\"\n\t\t\t\t\t\t\t\t\t:data-depth=\"path.length\"\n\t\t\t\t\t\t\t\t\t@mouseenter=\"() => onMouseEnterKey(path, index2)\"\n\t\t\t\t\t\t\t\t\t@mouseleave=\"onMouseLeaveKey\"\n\t\t\t\t\t\t\t\t\t>{{ label || $locale.baseText('runData.unnamedField') }}</span\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<template #value=\"{ value }\">\n\t\t\t\t\t\t\t\t<TextWithHighlights\n\t\t\t\t\t\t\t\t\t:content=\"getValueToRender(value)\"\n\t\t\t\t\t\t\t\t\t:search=\"search\"\n\t\t\t\t\t\t\t\t\t:class=\"{ [$style.nestedValue]: true, [$style.empty]: isEmpty(value) }\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</n8n-tree>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td v-if=\"columnLimitExceeded\"></td>\n\t\t\t\t\t<td :class=\"$style.tableRightMargin\"></td>\n\t\t\t\t</tr>\n\t\t\t</Draggable>\n\t\t</table>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport { mapStores } from 'pinia';\nimport type { INodeUi, ITableData, NDVState } from '@/Interface';\nimport { shorten } from '@/utils/typesUtils';\nimport { getPairedItemId } from '@/utils/pairedItemUtils';\nimport type { GenericValue, IDataObject, INodeExecutionData } from 'n8n-workflow';\nimport Draggable from './Draggable.vue';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { useNDVStore } from '@/stores/ndv.store';\nimport MappingPill from './MappingPill.vue';\nimport { getMappedExpression } from '@/utils/mappingUtils';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport TextWithHighlights from './TextWithHighlights.vue';\n\nconst MAX_COLUMNS_LIMIT = 40;\n\ntype DraggableRef = InstanceType<typeof Draggable>;\n\nexport default defineComponent({\n\tname: 'RunDataTable',\n\tcomponents: { Draggable, MappingPill, TextWithHighlights },\n\tprops: {\n\t\tnode: {\n\t\t\ttype: Object as PropType<INodeUi>,\n\t\t},\n\t\tinputData: {\n\t\t\ttype: Array as PropType<INodeExecutionData[]>,\n\t\t},\n\t\tmappingEnabled: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tdistanceFromActive: {\n\t\t\ttype: Number,\n\t\t},\n\t\trunIndex: {\n\t\t\ttype: Number,\n\t\t},\n\t\toutputIndex: {\n\t\t\ttype: Number,\n\t\t},\n\t\ttotalRuns: {\n\t\t\ttype: Number,\n\t\t},\n\t\tpageOffset: {\n\t\t\ttype: Number,\n\t\t},\n\t\thasDefaultHoverState: {\n\t\t\ttype: Boolean,\n\t\t},\n\t\tsearch: {\n\t\t\ttype: String,\n\t\t},\n\t},\n\tsetup() {\n\t\tconst externalHooks = useExternalHooks();\n\t\treturn {\n\t\t\texternalHooks,\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tactiveColumn: -1,\n\t\t\tforceShowGrip: false,\n\t\t\tdraggedColumn: false,\n\t\t\tdraggingPath: null as null | string,\n\t\t\thoveringPath: null as null | string,\n\t\t\tmappingHintVisible: false,\n\t\t\tactiveRow: null as number | null,\n\t\t\tcolumnLimit: MAX_COLUMNS_LIMIT,\n\t\t\tcolumnLimitExceeded: false,\n\t\t};\n\t},\n\tmounted() {\n\t\tif (this.tableData && this.tableData.columns && this.$refs.draggable) {\n\t\t\tconst tbody = (this.$refs.draggable as DraggableRef).$refs.wrapper;\n\t\t\tif (tbody) {\n\t\t\t\tthis.$emit('mounted', {\n\t\t\t\t\tavgRowHeight: tbody.offsetHeight / this.tableData.data.length,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapStores(useNDVStore, useWorkflowsStore),\n\t\thoveringItem(): NDVState['hoveringItem'] {\n\t\t\treturn this.ndvStore.hoveringItem;\n\t\t},\n\t\tpairedItemMappings(): { [itemId: string]: Set<string> } {\n\t\t\treturn this.workflowsStore.workflowExecutionPairedItemMappings;\n\t\t},\n\t\ttableData(): ITableData {\n\t\t\treturn this.convertToTable(this.inputData);\n\t\t},\n\t\tfocusedMappableInput(): string {\n\t\t\treturn this.ndvStore.focusedMappableInput;\n\t\t},\n\t},\n\tmethods: {\n\t\tshorten,\n\t\tisHoveringRow(row: number): boolean {\n\t\t\tif (row === this.activeRow) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst itemIndex = this.pageOffset + row;\n\t\t\tif (\n\t\t\t\titemIndex === 0 &&\n\t\t\t\t!this.hoveringItem &&\n\t\t\t\tthis.hasDefaultHoverState &&\n\t\t\t\tthis.distanceFromActive === 1\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst itemNodeId = getPairedItemId(\n\t\t\t\tthis.node.name,\n\t\t\t\tthis.runIndex || 0,\n\t\t\t\tthis.outputIndex || 0,\n\t\t\t\titemIndex,\n\t\t\t);\n\t\t\tif (!this.hoveringItem || !this.pairedItemMappings[itemNodeId]) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst hoveringItemId = getPairedItemId(\n\t\t\t\tthis.hoveringItem.nodeName,\n\t\t\t\tthis.hoveringItem.runIndex,\n\t\t\t\tthis.hoveringItem.outputIndex,\n\t\t\t\tthis.hoveringItem.itemIndex,\n\t\t\t);\n\t\t\treturn this.pairedItemMappings[itemNodeId].has(hoveringItemId);\n\t\t},\n\t\tonMouseEnterCell(e: MouseEvent) {\n\t\t\tconst target = e.target;\n\t\t\tif (target && this.mappingEnabled) {\n\t\t\t\tconst col = (target as HTMLElement).dataset.col;\n\t\t\t\tif (col && !isNaN(parseInt(col, 10))) {\n\t\t\t\t\tthis.activeColumn = parseInt(col, 10);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (target) {\n\t\t\t\tconst row = (target as HTMLElement).dataset.row;\n\t\t\t\tif (row && !isNaN(parseInt(row, 10))) {\n\t\t\t\t\tthis.activeRow = parseInt(row, 10);\n\t\t\t\t\tthis.$emit('activeRowChanged', this.pageOffset + this.activeRow);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonMouseLeaveCell() {\n\t\t\tthis.activeColumn = -1;\n\t\t\tthis.activeRow = null;\n\t\t\tthis.$emit('activeRowChanged', null);\n\t\t},\n\t\tonMouseEnterKey(path: string[], colIndex: number) {\n\t\t\tthis.hoveringPath = this.getCellExpression(path, colIndex);\n\t\t},\n\t\tonMouseLeaveKey() {\n\t\t\tthis.hoveringPath = null;\n\t\t},\n\t\tisHovering(path: string[], colIndex: number) {\n\t\t\tconst expr = this.getCellExpression(path, colIndex);\n\n\t\t\treturn this.hoveringPath === expr;\n\t\t},\n\t\tgetExpression(column: string) {\n\t\t\tif (!this.node) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn getMappedExpression({\n\t\t\t\tnodeName: this.node.name,\n\t\t\t\tdistanceFromActive: this.distanceFromActive,\n\t\t\t\tpath: [column],\n\t\t\t});\n\t\t},\n\t\tgetPathNameFromTarget(el: HTMLElement) {\n\t\t\tif (!el) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn el.dataset.name;\n\t\t},\n\t\tgetCellPathName(path: Array<string | number>, colIndex: number) {\n\t\t\tconst lastKey = path[path.length - 1];\n\t\t\tif (typeof lastKey === 'string') {\n\t\t\t\treturn lastKey;\n\t\t\t}\n\t\t\tif (path.length > 1) {\n\t\t\t\tconst prevKey = path[path.length - 2];\n\t\t\t\treturn `${prevKey}[${lastKey}]`;\n\t\t\t}\n\t\t\tconst column = this.tableData.columns[colIndex];\n\t\t\treturn `${column}[${lastKey}]`;\n\t\t},\n\t\tgetCellExpression(path: Array<string | number>, colIndex: number) {\n\t\t\tif (!this.node) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tconst column = this.tableData.columns[colIndex];\n\t\t\treturn getMappedExpression({\n\t\t\t\tnodeName: this.node.name,\n\t\t\t\tdistanceFromActive: this.distanceFromActive,\n\t\t\t\tpath: [column, ...path],\n\t\t\t});\n\t\t},\n\t\tisEmpty(value: unknown): boolean {\n\t\t\treturn (\n\t\t\t\tvalue === '' ||\n\t\t\t\t(Array.isArray(value) && value.length === 0) ||\n\t\t\t\t(typeof value === 'object' && value !== null && Object.keys(value).length === 0) ||\n\t\t\t\tvalue === null ||\n\t\t\t\tvalue === undefined\n\t\t\t);\n\t\t},\n\t\tgetValueToRender(value: unknown): string {\n\t\t\tif (value === '') {\n\t\t\t\treturn this.$locale.baseText('runData.emptyString');\n\t\t\t}\n\t\t\tif (typeof value === 'string') {\n\t\t\t\treturn value.replaceAll('\\n', '\\\\n');\n\t\t\t}\n\t\t\tif (Array.isArray(value) && value.length === 0) {\n\t\t\t\treturn this.$locale.baseText('runData.emptyArray');\n\t\t\t}\n\t\t\tif (typeof value === 'object' && value !== null && Object.keys(value).length === 0) {\n\t\t\t\treturn this.$locale.baseText('runData.emptyObject');\n\t\t\t}\n\t\t\tif (value === null || value === undefined) {\n\t\t\t\treturn `[${value}]`;\n\t\t\t}\n\t\t\tif (value === true || value === false || typeof value === 'number') {\n\t\t\t\treturn value.toString();\n\t\t\t}\n\t\t\treturn value;\n\t\t},\n\t\tonDragStart() {\n\t\t\tthis.draggedColumn = true;\n\t\t\tthis.ndvStore.resetMappingTelemetry();\n\t\t},\n\t\tonCellDragStart(el: HTMLElement) {\n\t\t\tif (el?.dataset.value) {\n\t\t\t\tthis.draggingPath = el.dataset.value;\n\t\t\t}\n\n\t\t\tthis.onDragStart();\n\t\t},\n\t\tonCellDragEnd(el: HTMLElement) {\n\t\t\tthis.draggingPath = null;\n\n\t\t\tthis.onDragEnd(el.dataset.name || '', 'tree', el.dataset.depth || '0');\n\t\t},\n\t\tisDraggingKey(path: Array<string | number>, colIndex: number) {\n\t\t\tif (!this.draggingPath) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn this.draggingPath === this.getCellExpression(path, colIndex);\n\t\t},\n\t\tonDragEnd(column: string, src: string, depth = '0') {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst mappingTelemetry = this.ndvStore.mappingTelemetry;\n\t\t\t\tconst telemetryPayload = {\n\t\t\t\t\tsrc_node_type: this.node.type,\n\t\t\t\t\tsrc_field_name: column,\n\t\t\t\t\tsrc_nodes_back: this.distanceFromActive,\n\t\t\t\t\tsrc_run_index: this.runIndex,\n\t\t\t\t\tsrc_runs_total: this.totalRuns,\n\t\t\t\t\tsrc_field_nest_level: parseInt(depth, 10),\n\t\t\t\t\tsrc_view: 'table',\n\t\t\t\t\tsrc_element: src,\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\t...mappingTelemetry,\n\t\t\t\t};\n\n\t\t\t\tvoid this.externalHooks.run('runDataTable.onDragEnd', telemetryPayload);\n\n\t\t\t\tthis.$telemetry.track('User dragged data for mapping', telemetryPayload);\n\t\t\t}, 1000); // ensure dest data gets set if drop\n\t\t},\n\t\tisSimple(data: unknown): boolean {\n\t\t\treturn (\n\t\t\t\ttypeof data !== 'object' ||\n\t\t\t\tdata === null ||\n\t\t\t\t(Array.isArray(data) && data.length === 0) ||\n\t\t\t\t(typeof data === 'object' && Object.keys(data).length === 0)\n\t\t\t);\n\t\t},\n\t\thasJsonInColumn(colIndex: number): boolean {\n\t\t\treturn this.tableData.hasJson[this.tableData.columns[colIndex]];\n\t\t},\n\t\tconvertToTable(inputData: INodeExecutionData[]): ITableData {\n\t\t\tconst tableData: GenericValue[][] = [];\n\t\t\tconst tableColumns: string[] = [];\n\t\t\tlet leftEntryColumns: string[], entryRows: GenericValue[];\n\t\t\t// Go over all entries\n\t\t\tlet entry: IDataObject;\n\t\t\tconst hasJson: { [key: string]: boolean } = {};\n\t\t\tinputData.forEach((data) => {\n\t\t\t\tif (!data.hasOwnProperty('json')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tentry = data.json;\n\n\t\t\t\t// Go over all keys of entry\n\t\t\t\tentryRows = [];\n\t\t\t\tconst entryColumns = Object.keys(entry || {});\n\n\t\t\t\tif (entryColumns.length > MAX_COLUMNS_LIMIT) {\n\t\t\t\t\tthis.columnLimitExceeded = true;\n\t\t\t\t\tleftEntryColumns = entryColumns.slice(0, MAX_COLUMNS_LIMIT);\n\t\t\t\t} else {\n\t\t\t\t\tleftEntryColumns = entryColumns;\n\t\t\t\t}\n\n\t\t\t\t// Go over all the already existing column-keys\n\t\t\t\ttableColumns.forEach((key) => {\n\t\t\t\t\tif (entry.hasOwnProperty(key)) {\n\t\t\t\t\t\t// Entry does have key so add its value\n\t\t\t\t\t\tentryRows.push(entry[key]);\n\t\t\t\t\t\t// Remove key so that we know that it got added\n\t\t\t\t\t\tleftEntryColumns.splice(leftEntryColumns.indexOf(key), 1);\n\n\t\t\t\t\t\thasJson[key] =\n\t\t\t\t\t\t\thasJson[key] ||\n\t\t\t\t\t\t\t(typeof entry[key] === 'object' && Object.keys(entry[key] || {}).length > 0) ||\n\t\t\t\t\t\t\tfalse;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Entry does not have key so add undefined\n\t\t\t\t\t\tentryRows.push(undefined);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Go over all the columns the entry has but did not exist yet\n\t\t\t\tleftEntryColumns.forEach((key) => {\n\t\t\t\t\t// Add the key for all runs in the future\n\t\t\t\t\ttableColumns.push(key);\n\t\t\t\t\t// Add the value\n\t\t\t\t\tentryRows.push(entry[key]);\n\t\t\t\t\thasJson[key] =\n\t\t\t\t\t\thasJson[key] ||\n\t\t\t\t\t\t(typeof entry[key] === 'object' && Object.keys(entry[key] || {}).length > 0) ||\n\t\t\t\t\t\tfalse;\n\t\t\t\t});\n\n\t\t\t\t// Add the data of the entry\n\t\t\t\ttableData.push(entryRows);\n\t\t\t});\n\n\t\t\t// Make sure that all entry-rows have the same length\n\t\t\ttableData.forEach((entryRows) => {\n\t\t\t\tif (tableColumns.length > entryRows.length) {\n\t\t\t\t\t// Has fewer entries so add the missing ones\n\t\t\t\t\tentryRows.push(...new Array(tableColumns.length - entryRows.length));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\thasJson,\n\t\t\t\tcolumns: tableColumns,\n\t\t\t\tdata: tableData,\n\t\t\t};\n\t\t},\n\t\tswitchToJsonView() {\n\t\t\tthis.$emit('displayModeChange', 'json');\n\t\t},\n\t},\n\twatch: {\n\t\tfocusedMappableInput(curr: boolean) {\n\t\t\tsetTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tthis.forceShowGrip = !!this.focusedMappableInput;\n\t\t\t\t},\n\t\t\t\tcurr ? 300 : 150,\n\t\t\t);\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.dataDisplay {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding-left: var(--spacing-s);\n\tright: 0;\n\toverflow-y: auto;\n\tline-height: 1.5;\n\tword-break: normal;\n\theight: 100%;\n\tpadding-bottom: var(--spacing-3xl);\n}\n\n.table {\n\tborder-collapse: separate;\n\ttext-align: left;\n\twidth: calc(100%);\n\tfont-size: var(--font-size-s);\n\n\tth {\n\t\tbackground-color: var(--color-background-base);\n\t\tborder-top: var(--border-base);\n\t\tborder-bottom: var(--border-base);\n\t\tborder-left: var(--border-base);\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\tcolor: var(--color-text-dark);\n\t\tz-index: 1;\n\t}\n\n\ttd {\n\t\tvertical-align: top;\n\t\tpadding: var(--spacing-2xs) var(--spacing-2xs) var(--spacing-2xs) var(--spacing-3xs);\n\t\tborder-bottom: var(--border-base);\n\t\tborder-left: var(--border-base);\n\t\toverflow-wrap: break-word;\n\t\twhite-space: pre-wrap;\n\t}\n\n\ttd:first-child,\n\ttd:nth-last-child(2) {\n\t\tposition: relative;\n\t\tz-index: 0;\n\n\t\t&:after {\n\t\t\t// add border without shifting content\n\t\t\tcontent: '';\n\t\t\tposition: absolute;\n\t\t\theight: 100%;\n\t\t\twidth: 2px;\n\t\t\ttop: 0;\n\t\t}\n\t}\n\n\ttd:nth-last-child(2):after {\n\t\tright: -1px;\n\t}\n\n\ttd:first-child:after {\n\t\tleft: -1px;\n\t}\n\n\tth:last-child,\n\ttd:last-child {\n\t\tborder-right: var(--border-base);\n\t}\n}\n\n.nodeClass {\n\tmargin-bottom: var(--spacing-5xs);\n}\n\n.emptyCell {\n\theight: 32px;\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: var(--spacing-2xs);\n\n\tspan {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tflex-grow: 1;\n\t}\n}\n\n.draggableHeader {\n\t&:hover {\n\t\tcursor: grab;\n\t\tbackground-color: var(--color-foreground-base);\n\n\t\t.dragButton {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n.draggingHeader {\n\tbackground-color: var(--color-primary-tint-2);\n}\n\n.activeHeader {\n\t.dragButton {\n\t\topacity: 1;\n\t}\n}\n\n.dragButton {\n\topacity: 0;\n\tmargin-left: var(--spacing-2xs);\n}\n\n.dataKey {\n\tcolor: var(--color-text-dark);\n\tline-height: 1.7;\n\tfont-weight: var(--font-weight-bold);\n\tborder-radius: var(--border-radius-base);\n\tpadding: 0 var(--spacing-5xs) 0 var(--spacing-5xs);\n\tmargin-right: var(--spacing-5xs);\n}\n\n.value {\n\tline-height: var(--font-line-height-regular);\n}\n\n.nestedValue {\n\tcomposes: value;\n\tmargin-left: var(--spacing-4xs);\n}\n\n.mappable {\n\tcursor: grab;\n}\n\n.empty {\n\tcolor: var(--color-danger);\n}\n\n.limitColWidth {\n\tmax-width: 300px;\n}\n\n.minColWidth {\n\tmin-width: 240px;\n}\n\n.hoveringKey {\n\tbackground-color: var(--color-foreground-base);\n}\n\n.draggingKey {\n\tbackground-color: var(--color-primary-tint-2);\n}\n\n.tableRightMargin {\n\t// becomes necessary with large tables\n\tbackground-color: var(--color-background-base) !important;\n\twidth: var(--spacing-s);\n\tborder-right: none !important;\n\tborder-top: none !important;\n\tborder-bottom: none !important;\n}\n\n.hoveringRow {\n\ttd:first-child:after,\n\ttd:nth-last-child(2):after {\n\t\tbackground-color: var(--color-secondary);\n\t}\n}\n\n.warningTooltip {\n\tcolor: var(--color-warning);\n}\n</style>\n"],"names":["MAX_COLUMNS_LIMIT","_sfc_main","defineComponent","Draggable","MappingPill","TextWithHighlights","useExternalHooks","tbody","mapStores","useNDVStore","useWorkflowsStore","shorten","row","itemIndex","itemNodeId","getPairedItemId","hoveringItemId","target","col","path","colIndex","expr","column","getMappedExpression","el","lastKey","value","src","depth","mappingTelemetry","telemetryPayload","data","inputData","tableData","tableColumns","leftEntryColumns","entryRows","entry","hasJson","entryColumns","key","curr","_resolveComponent","_normalizeClass","_ctx","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","index1","_cache","args","_createVNode","_component_n8n_info_tip","_withCtx","_hoisted_1","i","_component_n8n_tooltip","_hoisted_2","_component_Draggable","canDrop","_component_MappingPill","isDragging","_component_TextWithHighlights","_component_i18n_t","_createTextVNode","_toDisplayString","_component_font_awesome_icon","_createCommentVNode","index2","_createBlock","_component_n8n_tree","label","_hoisted_5","_hoisted_4","_hoisted_6"],"mappings":"siDAmLA,MAAMA,EAAoB,GAI1BC,EAAeC,EAAgB,CAC9B,KAAM,eACN,WAAY,CAAE,UAAAC,EAAW,YAAAC,EAAA,mBAAaC,CAAmB,EACzD,MAAO,CACN,KAAM,CACL,KAAM,MACP,EACA,UAAW,CACV,KAAM,KACP,EACA,eAAgB,CACf,KAAM,OACP,EACA,mBAAoB,CACnB,KAAM,MACP,EACA,SAAU,CACT,KAAM,MACP,EACA,YAAa,CACZ,KAAM,MACP,EACA,UAAW,CACV,KAAM,MACP,EACA,WAAY,CACX,KAAM,MACP,EACA,qBAAsB,CACrB,KAAM,OACP,EACA,OAAQ,CACP,KAAM,MACP,CACD,EACA,OAAQ,CAEA,MAAA,CACN,cAFqBC,GAErB,CAEF,EACA,MAAO,CACC,MAAA,CACN,aAAc,GACd,cAAe,GACf,cAAe,GACf,aAAc,KACd,aAAc,KACd,mBAAoB,GACpB,UAAW,KACX,YAAaN,EACb,oBAAqB,EAAA,CAEvB,EACA,SAAU,CACT,GAAI,KAAK,WAAa,KAAK,UAAU,SAAW,KAAK,MAAM,UAAW,CACrE,MAAMO,EAAS,KAAK,MAAM,UAA2B,MAAM,QACvDA,GACH,KAAK,MAAM,UAAW,CACrB,aAAcA,EAAM,aAAe,KAAK,UAAU,KAAK,MAAA,CACvD,CAEH,CACD,EACA,SAAU,CACT,GAAGC,EAAUC,EAAaC,CAAiB,EAC3C,cAAyC,CACxC,OAAO,KAAK,SAAS,YACtB,EACA,oBAAwD,CACvD,OAAO,KAAK,eAAe,mCAC5B,EACA,WAAwB,CAChB,OAAA,KAAK,eAAe,KAAK,SAAS,CAC1C,EACA,sBAA+B,CAC9B,OAAO,KAAK,SAAS,oBACtB,CACD,EACA,QAAS,CACR,QAAAC,EACA,cAAcC,EAAsB,CAC/B,GAAAA,IAAQ,KAAK,UACT,MAAA,GAGF,MAAAC,EAAY,KAAK,WAAaD,EAEnC,GAAAC,IAAc,GACd,CAAC,KAAK,cACN,KAAK,sBACL,KAAK,qBAAuB,EAErB,MAAA,GAER,MAAMC,EAAaC,EAClB,KAAK,KAAK,KACV,KAAK,UAAY,EACjB,KAAK,aAAe,EACpBF,CAAA,EAED,GAAI,CAAC,KAAK,cAAgB,CAAC,KAAK,mBAAmBC,CAAU,EACrD,MAAA,GAGR,MAAME,EAAiBD,EACtB,KAAK,aAAa,SAClB,KAAK,aAAa,SAClB,KAAK,aAAa,YAClB,KAAK,aAAa,SAAA,EAEnB,OAAO,KAAK,mBAAmBD,CAAU,EAAE,IAAIE,CAAc,CAC9D,EACA,iBAAiB,EAAe,CAC/B,MAAMC,EAAS,EAAE,OACb,GAAAA,GAAU,KAAK,eAAgB,CAC5B,MAAAC,EAAOD,EAAuB,QAAQ,IACxCC,GAAO,CAAC,MAAM,SAASA,EAAK,EAAE,CAAC,IAC7B,KAAA,aAAe,SAASA,EAAK,EAAE,EAEtC,CAEA,GAAID,EAAQ,CACL,MAAAL,EAAOK,EAAuB,QAAQ,IACxCL,GAAO,CAAC,MAAM,SAASA,EAAK,EAAE,CAAC,IAC7B,KAAA,UAAY,SAASA,EAAK,EAAE,EACjC,KAAK,MAAM,mBAAoB,KAAK,WAAa,KAAK,SAAS,EAEjE,CACD,EACA,kBAAmB,CAClB,KAAK,aAAe,GACpB,KAAK,UAAY,KACZ,KAAA,MAAM,mBAAoB,IAAI,CACpC,EACA,gBAAgBO,EAAgBC,EAAkB,CACjD,KAAK,aAAe,KAAK,kBAAkBD,EAAMC,CAAQ,CAC1D,EACA,iBAAkB,CACjB,KAAK,aAAe,IACrB,EACA,WAAWD,EAAgBC,EAAkB,CAC5C,MAAMC,EAAO,KAAK,kBAAkBF,EAAMC,CAAQ,EAElD,OAAO,KAAK,eAAiBC,CAC9B,EACA,cAAcC,EAAgB,CACzB,OAAC,KAAK,KAIHC,EAAoB,CAC1B,SAAU,KAAK,KAAK,KACpB,mBAAoB,KAAK,mBACzB,KAAM,CAACD,CAAM,CAAA,CACb,EAPO,EAQT,EACA,sBAAsBE,EAAiB,CACtC,OAAKA,EAGEA,EAAG,QAAQ,KAFV,EAGT,EACA,gBAAgBL,EAA8BC,EAAkB,CAC/D,MAAMK,EAAUN,EAAKA,EAAK,OAAS,CAAC,EAChC,OAAA,OAAOM,GAAY,SACfA,EAEJN,EAAK,OAAS,EAEV,GADSA,EAAKA,EAAK,OAAS,CAAC,CACnB,IAAIM,CAAO,IAGtB,GADQ,KAAK,UAAU,QAAQL,CAAQ,CAC9B,IAAIK,CAAO,GAC5B,EACA,kBAAkBN,EAA8BC,EAAkB,CAC7D,GAAA,CAAC,KAAK,KACF,MAAA,GAER,MAAME,EAAS,KAAK,UAAU,QAAQF,CAAQ,EAC9C,OAAOG,EAAoB,CAC1B,SAAU,KAAK,KAAK,KACpB,mBAAoB,KAAK,mBACzB,KAAM,CAACD,EAAQ,GAAGH,CAAI,CAAA,CACtB,CACF,EACA,QAAQO,EAAyB,CAE/B,OAAAA,IAAU,IACT,MAAM,QAAQA,CAAK,GAAKA,EAAM,SAAW,GACzC,OAAOA,GAAU,UAAYA,IAAU,MAAQ,OAAO,KAAKA,CAAK,EAAE,SAAW,GAC9EA,IAAU,MACVA,IAAU,MAEZ,EACA,iBAAiBA,EAAwB,CACxC,OAAIA,IAAU,GACN,KAAK,QAAQ,SAAS,qBAAqB,EAE/C,OAAOA,GAAU,SACbA,EAAM,WAAW;AAAA,EAAM,KAAK,EAEhC,MAAM,QAAQA,CAAK,GAAKA,EAAM,SAAW,EACrC,KAAK,QAAQ,SAAS,oBAAoB,EAE9C,OAAOA,GAAU,UAAYA,IAAU,MAAQ,OAAO,KAAKA,CAAK,EAAE,SAAW,EACzE,KAAK,QAAQ,SAAS,qBAAqB,EAE/CA,GAAU,KACN,IAAIA,CAAK,IAEbA,IAAU,IAAQA,IAAU,IAAS,OAAOA,GAAU,SAClDA,EAAM,WAEPA,CACR,EACA,aAAc,CACb,KAAK,cAAgB,GACrB,KAAK,SAAS,uBACf,EACA,gBAAgBF,EAAiB,CAC5BA,GAAA,MAAAA,EAAI,QAAQ,QACV,KAAA,aAAeA,EAAG,QAAQ,OAGhC,KAAK,YAAY,CAClB,EACA,cAAcA,EAAiB,CAC9B,KAAK,aAAe,KAEf,KAAA,UAAUA,EAAG,QAAQ,MAAQ,GAAI,OAAQA,EAAG,QAAQ,OAAS,GAAG,CACtE,EACA,cAAcL,EAA8BC,EAAkB,CACzD,GAAC,KAAK,aAIV,OAAO,KAAK,eAAiB,KAAK,kBAAkBD,EAAMC,CAAQ,CACnE,EACA,UAAUE,EAAgBK,EAAaC,EAAQ,IAAK,CACnD,WAAW,IAAM,CACV,MAAAC,EAAmB,KAAK,SAAS,iBACjCC,EAAmB,CACxB,cAAe,KAAK,KAAK,KACzB,eAAgBR,EAChB,eAAgB,KAAK,mBACrB,cAAe,KAAK,SACpB,eAAgB,KAAK,UACrB,qBAAsB,SAASM,EAAO,EAAE,EACxC,SAAU,QACV,YAAaD,EACb,QAAS,GACT,GAAGE,CAAA,EAGC,KAAK,cAAc,IAAI,yBAA0BC,CAAgB,EAEjE,KAAA,WAAW,MAAM,gCAAiCA,CAAgB,GACrE,GAAI,CACR,EACA,SAASC,EAAwB,CAChC,OACC,OAAOA,GAAS,UAChBA,IAAS,MACR,MAAM,QAAQA,CAAI,GAAKA,EAAK,SAAW,GACvC,OAAOA,GAAS,UAAY,OAAO,KAAKA,CAAI,EAAE,SAAW,CAE5D,EACA,gBAAgBX,EAA2B,CAC1C,OAAO,KAAK,UAAU,QAAQ,KAAK,UAAU,QAAQA,CAAQ,CAAC,CAC/D,EACA,eAAeY,EAA6C,CAC3D,MAAMC,EAA8B,CAAA,EAC9BC,EAAyB,CAAA,EAC/B,IAAIC,EAA4BC,EAE5BC,EACJ,MAAMC,EAAsC,CAAA,EAClC,OAAAN,EAAA,QAASD,GAAS,CAC3B,GAAI,CAACA,EAAK,eAAe,MAAM,EAC9B,OAEDM,EAAQN,EAAK,KAGbK,EAAY,CAAA,EACZ,MAAMG,EAAe,OAAO,KAAKF,GAAS,CAAE,CAAA,EAExCE,EAAa,OAASvC,GACzB,KAAK,oBAAsB,GACRmC,EAAAI,EAAa,MAAM,EAAGvC,CAAiB,GAEvCmC,EAAAI,EAIPL,EAAA,QAASM,GAAQ,CACzBH,EAAM,eAAeG,CAAG,GAEjBJ,EAAA,KAAKC,EAAMG,CAAG,CAAC,EAEzBL,EAAiB,OAAOA,EAAiB,QAAQK,CAAG,EAAG,CAAC,EAExDF,EAAQE,CAAG,EACVF,EAAQE,CAAG,GACV,OAAOH,EAAMG,CAAG,GAAM,UAAY,OAAO,KAAKH,EAAMG,CAAG,GAAK,CAAE,CAAA,EAAE,OAAS,GAC1E,IAGDJ,EAAU,KAAK,MAAS,CACzB,CACA,EAGgBD,EAAA,QAASK,GAAQ,CAEjCN,EAAa,KAAKM,CAAG,EAEXJ,EAAA,KAAKC,EAAMG,CAAG,CAAC,EACzBF,EAAQE,CAAG,EACVF,EAAQE,CAAG,GACV,OAAOH,EAAMG,CAAG,GAAM,UAAY,OAAO,KAAKH,EAAMG,CAAG,GAAK,CAAE,CAAA,EAAE,OAAS,GAC1E,EAAA,CACD,EAGDP,EAAU,KAAKG,CAAS,CAAA,CACxB,EAGSH,EAAA,QAASG,GAAc,CAC5BF,EAAa,OAASE,EAAU,QAEnCA,EAAU,KAAK,GAAG,IAAI,MAAMF,EAAa,OAASE,EAAU,MAAM,CAAC,CACpE,CACA,EAEM,CACN,QAAAE,EACA,QAASJ,EACT,KAAMD,CAAA,CAER,EACA,kBAAmB,CACb,KAAA,MAAM,oBAAqB,MAAM,CACvC,CACD,EACA,MAAO,CACN,qBAAqBQ,EAAe,CACnC,WACC,IAAM,CACA,KAAA,cAAgB,CAAC,CAAC,KAAK,oBAC7B,EACAA,EAAO,IAAM,GAAA,CAEf,CACD,CACD,CAAC,4uCA3hBAC,EA+JM,UAAA,sBA9JQ,MAAAC,EAAiBC,EAAI,OAAU,WAAA,CAAA,EAAA,CAA4BA,EAAA,UAAA,SAAAA,EAAA,UAAA,QAAA,SAAA,GAAAC,IAAAC,EAAE,QAAY,CAAA,IAAA,EACrF,MAGKH,EAAAC,EAAA,OAAA,KAAA,CAAA,EAAA,GAFM,KAAE,KAAA,CAAAG,EAAA,KAAA,CACZ,MAA0CJ,EAAAC,EAAA,OAAA,SAAA,CAAA,EAArC,KAAK,CAAA,EAAAG,EAAA,KAAA,kDAIJ,EAAM,EAAAD,EAAAE,EAAA,KAAAC,EAAAL,EAAA,UAAA,KAAA,CAAAhC,EAAAsC,KACNL,EAAY,EAAAC,EAAA,KAAA,CAAA,IAAAI,EAElB,MAOKP,EAAA,CAAA,CAAAC,EAAA,OAAA,WAAA,EAAAA,EAAA,cAAAM,CAAA,EAAA,CAAA,EAAA,CALQH,EAAA,KAAA,CACX,WAAUG,EACV,WAAU,EAAA,aAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,IAAAC,IAAAR,EAAA,kBAAAA,EAAA,iBAAA,GAAAQ,CAAA,GAEX,aAA4ED,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,IAAAC,IAAAR,EAAA,kBAAAA,EAAA,iBAAA,GAAAQ,CAAA,EAAA,EAAA,CAA3DC,EAAAC,EAAA,KAAA,CAAA,QAAAC,EAAA,IAAA,0DAElB,CAAA,CAAA,EAAK,GAAKC,EAAA,EAAAT,EAAA,KAAA,wDAGQ,EAAA,CAAA,IAAAF,IAAAC,EAAE,QAAY,CAAA,IAAA,EACjC,MAmEQH,EAAAC,EAAA,OAAA,KAAA,CAAA,EAAA,CAjENG,EAAA,QAAA,KAAA,CAAAA,EAAA,KAAA,KAAA,EAAAF,EACC,EAqCc,EAAAC,EAAAE,EAAA,KAAAC,EAAAL,EAAA,UAAA,SAAA,CAAA,EAAA,CAAAtB,EAAAmC,KArCDZ,EAAwB,EAAAC,EAAA,KAAA,CAAA,IAAAxB,GAAA,CAAA+B,EAAaK,EAAc,CAAG,UAAA,eAAA,SAAA,CAAAd,EAAA,eACvD,aAAO,GAAA,EAAA,SAEhBW,EAA0C,IAAA,CAC1CR,EAAA,MAAA,KAAA,CAAAY,2EAIG,QAAAJ,EAAC,IAAS,CAAAF,EACPO,EAAoB,CAC1B,KAAA,UACA,KAAAhB,EAAS,cAAEtB,CAAW,EACtB,SAAO,CAAGsB,EAAA,eAAA,YAAAA,EAAA,YAEA,UAAOtB,GAAIsB,EAAO,UAAAtB,EAAA,QAAA,CAAA,EAAA,CACV,QAAAiC,EAAE,CAAc,CAAA,QAAAM,KAAA,CAAAR,EAAmBS,EAAS,CAAA,KAAAlB,EAAA,QAAAtB,EAAA,GAAA,CAAA,cAEpD,EAAA,KAAO,UAAI,UAAU,CAAA,CAAA,CAAA,EAExB,QAAAiC,EAAA,CAAA,CAAA,WAAAQ,KAAA,CAAuBhB,EAAM,MAAA,CAA4B,MAAkBJ,EAAA,CAAA,CAA4BC,EAAO,OAAA,MAAA,EAAA,GAA6B,CAAAA,EAAA,OAAK,eAAY,EAAIA,EAAA,eAAA,CAA8CA,EAAO,OAAA,YAAA,GAAAa,IAAAb,EAAA,cAAAA,EAAA,gBAAAA,EAAA,iDAUjNoB,EAAM,CAAA,QAAApB,EAAA,iBAAAtB,GAAA,EAAA,EAEhB,OAAAsB,EAAA,MAAA,EAAM,KAAK,EAAE,CAAA,UAAA,QAAA,CAAA,EAAAG,EAAA,MAAA,CACZ,MAAAJ,EAA0CC,EAAvB,OAAA,UAAA,CAAA,EAAA,yHAOf,CAAA,EAAA,EAAA,GAAA,GAA2BA,EAAA,qBAAAC,IAAAC,EAAE,KAAO,CAAA,IAAA,EAC7C,MAAAH,EAoBcC,EApBD,OAAA,MAAA,CAAA,EAAA,GAEXc,EASM,CAAA,UAAA,YAAA,EAAA,CAAA,QARLH,EAOS,IAAA,CAPSR,EAAA,MAAA,KAAA,CAASM,EAAAY,EAAA,CAAA,IAAA,OACf,QAAA,oDAAA,EAAA,oBACAC,EAGJC,EAAAvB,EAAA,WAAA,EAAA,CAAA,CAAA,CAAA,OAFFW,EAAK,IAAA,CACRR,EAAA,IAAA,CAAA,QAAAI,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,IAAAC,IAAAR,EAAA,kBAAAA,EAAA,iBAAA,GAAAQ,CAAA,4GAOJG,EAGqB,IAAA,CAAAR,EAFd,OAAE,KAAA,CAAAM,EACHe,EAAsB,CAAA,MAAAzB,EAAAC,EAAA,OAAA,cAAA,uIAM/B,EAAA,CAAA,GAAKyB,EAAK,GAAE,EAAA,EAAAtB,EAAA,KAAA,4CAGd,CAAA,CAAA,CAAA,IAEKa,EAAO,CACX,IAAI,YACJ,IAAA,QACC,KAAA,UACA,kBAAW,WACX,SAAO,CAAEhB,EAAA,eAAA,YAAAA,EAAA,gBAEC,UAAOA,EAAA,aAAA,EAAA,CAEX,QAAAW,EAAE,CAAQ,CAAA,QAAAM,EAAA,GAAArC,CAAA,IAAA,CAAA6B,EACNS,EAAS,CAAA,KAAAlB,EAAA,QAAAA,EAAA,sBAAApB,CAAA,GAAA,GAAA,GAAA,CAAA,cAIoB,EAAA,KAAA,EAAA,CAAA,OAAA,UAAA,CAAA,CAAA,CAAA,oBACjC,EAAM,EAAAsB,EAAAE,EAAA,KAAAC,EAAAL,EAAA,UAAA,KAAA,CAAAhC,EAAAsC,KACNL,EAAY,EAAAC,EAAA,KAAA,CACjB,IAAAI,EAAA,MAAAP,EAAA,CAAA,CAAAC,EAAA,OAAA,WAAA,EAAAA,EAAA,cAAAM,CAAA,EAAA,mBAED,cAyCKA,CAAA,EAAA,gBAAA,MAAA,EAAA,IAvCE,EAAM,EAAAJ,EAAAE,EAAA,KAAAC,EAAArC,EAAA,CAAAmB,EAAAuC,KACXzB,EAAA,EAAgBC,EAAA,KAAA,CAChB,IAAAwB,EACA,WAAKpB,EACL,WAAUoB,EACV,QAAU1B,EAAE,gBAAA0B,CAAA,EAAA1B,EAAA,OAAA,YAAAA,EAAA,OAAA,aAAA,EAAA,aAAAO,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,IAAAC,IAAAR,EAAA,kBAAAA,EAAA,iBAAA,GAAAQ,CAAA,gBAGED,EAAK,CAAA,IAAAA,EAAA,CAAA,EAAA,IAAAC,IAAAR,EAAA,kBAAAA,EAAA,iBAAA,GAAAQ,CAAA,EAAA,EAAA,kBACY,EAAAmB,EAAAP,EAAA,CAC9B,IAAA,EACA,QAAKpB,EAAK,iBAAAb,CAAA,EAAA,OAAAa,EAAA,eAEZ,CAyBW,CAAAA,EAAA,OAAA,KAAA,EAAA,GAAA,CAAAA,EAAA,OAAA,KAAA,EAAAA,EAAA,QAAAb,CAAA,CAAA,CAAA,CAzBO,EAAA,KAAA,EAAA,CAAA,UAAA,SAAA,OAAA,CAAA,IAAAc,EAAA,EAAU0B,EAASC,EAAS,CAAG,IAAK,EAAA,aAAA5B,EAAA,OAAA,UAC1C,MAAKb,CAAA,EAAA,OAEbwB,EAAK,CAAA,CAAA,MAAAkB,EAAA,KAAAtD,CAAA,IAAA,CAAsB4B,EAAc,OAAc,CAAgD,MAAcJ,EAAa,CAAA,CAA2BC,SAAO,WAAO,EAAAA,EAAA,gBAAAA,EAAA,WAAAzB,EAAAmD,CAAA,EAAoB,CAAA1B,EAAA,OAAO,WAAW,EAAcA,EAAA,cAAAzB,EAAAmD,CAAA,EAAA,CAAA1B,EAAA,OAAA,OAAA,EAAA,GAMhO,CAAAA,EAAA,OAAA,QAAA,EAAAA,EAAA,cAAA,CAAA,EAEC,cAAY,WACZ,YAAUA,EAAM,gBAAOzB,EAAAmD,CAAA,EACvB,aAAU1B,EAAQ,kBAAAzB,EAAgBmD,CAAM,EACxC,aAAUnD,EAAA,OACP,aAAA,IAAAyB,EAAK,gBAAYzB,EAAQmD,CAAA,EAAA,aAAAnB,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,IAAAC,IAAAR,EAAA,iBAAAA,EAAA,gBAAA,GAAAQ,CAAA,EAGpB,EAAKe,EAAIM,GAAK7B,EAAA,QAAA,SAAA,sBAAA,CAAA,EAAA,GAAA8B,EAAA,CAAA,CAAA,QAEtBnB,EAAS,CAAA,CAAA,MAAA7B,KAAA,CAAA2B,EACDW,EAAM,CACd,QAAKpB,EAAK,iBAAAlB,CAAA,EAAA,OAAAkB,EAAA,oJAKL,EAAA,GAAA+B,EAAA,EAAA,EAAA,GAAA,0BACV9B,EAA0C,EAAAC,EAAA,KAAA8B,EAAA,GAArCP,EAAK,GAAE,EAAA,EAAAtB,EAAA,KAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{G as u,aE as l,r as c,Z as f,l as g,M as h}from"./vendor-e5jTRqqt.js";import{A as b}from"./AuthView-
|
|
2
|
-
//# sourceMappingURL=SamlOnboarding-
|
|
1
|
+
import{G as u,aE as l,r as c,Z as f,l as g,M as h}from"./vendor-e5jTRqqt.js";import{A as b}from"./AuthView-HA2BeS7f.js";import{b as t,V as x,f_ as _}from"./n8n-oSulVm5C.js";import{ax as d}from"./index-36CdMZUz.js";import"./pinia-jQLgEt_L.js";import"./lodash-es-JdX4GWLn.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-eU1v7QRm.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-IDI7B_27.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./@n8n/codemirror-lang-sql-feLn5IS9.js";import"./@lezer/common-1hBQ1gIF.js";import"./codemirror-lang-html-n8n-wWQLhhqk.js";import"./prettier-s3fE3Qyr.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./codemirror-lang-n8n-expression-HpIZnV_9.js";import"./fast-json-stable-stringify-z-DLxjte.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-b4L9G_D6.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";const L=u({__name:"SamlOnboarding",setup(N){var a,o;const s=l(),e=d(),r=c(!1),p=f({title:t.baseText("auth.signup.setupYourAccount"),buttonText:t.baseText("auth.signup.finishAccountSetup"),inputs:[{name:"firstName",initialValue:(a=e.userData)==null?void 0:a.firstName,properties:{label:t.baseText("auth.firstName"),maxlength:32,required:!0,autocomplete:"given-name",capitalize:!0}},{name:"lastName",initialValue:(o=e.userData)==null?void 0:o.lastName,properties:{label:t.baseText("auth.lastName"),maxlength:32,required:!0,autocomplete:"family-name",capitalize:!0}}]}),n=async i=>{try{r.value=!0,await e.updateUser(i),await s.push({name:x.HOMEPAGE})}catch(m){r.value=!1,_.error({title:"Error",message:m.message,position:"bottom-right"})}};return(i,m)=>(g(),h(b,{form:p,"form-loading":r.value,onSubmit:n},null,8,["form","form-loading"]))}});export{L as default};
|
|
2
|
+
//# sourceMappingURL=SamlOnboarding-M2xGH4bo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SamlOnboarding-
|
|
1
|
+
{"version":3,"file":"SamlOnboarding-M2xGH4bo.js","sources":["../../src/views/SamlOnboarding.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { reactive, ref } from 'vue';\nimport { useRouter } from 'vue-router';\nimport { ElNotification as Notification } from 'element-plus';\nimport type { IFormBoxConfig } from 'n8n-design-system';\nimport AuthView from '@/views/AuthView.vue';\nimport { i18n as locale } from '@/plugins/i18n';\nimport { useSSOStore } from '@/stores/sso.store';\nimport { VIEWS } from '@/constants';\n\nconst router = useRouter();\nconst ssoStore = useSSOStore();\n\nconst loading = ref(false);\nconst FORM_CONFIG: IFormBoxConfig = reactive({\n\ttitle: locale.baseText('auth.signup.setupYourAccount'),\n\tbuttonText: locale.baseText('auth.signup.finishAccountSetup'),\n\tinputs: [\n\t\t{\n\t\t\tname: 'firstName',\n\t\t\tinitialValue: ssoStore.userData?.firstName,\n\t\t\tproperties: {\n\t\t\t\tlabel: locale.baseText('auth.firstName'),\n\t\t\t\tmaxlength: 32,\n\t\t\t\trequired: true,\n\t\t\t\tautocomplete: 'given-name',\n\t\t\t\tcapitalize: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: 'lastName',\n\t\t\tinitialValue: ssoStore.userData?.lastName,\n\t\t\tproperties: {\n\t\t\t\tlabel: locale.baseText('auth.lastName'),\n\t\t\t\tmaxlength: 32,\n\t\t\t\trequired: true,\n\t\t\t\tautocomplete: 'family-name',\n\t\t\t\tcapitalize: true,\n\t\t\t},\n\t\t},\n\t],\n});\nconst onSubmit = async (values: { firstName: string; lastName: string }) => {\n\ttry {\n\t\tloading.value = true;\n\t\tawait ssoStore.updateUser(values);\n\t\tawait router.push({ name: VIEWS.HOMEPAGE });\n\t} catch (error) {\n\t\tloading.value = false;\n\t\tNotification.error({\n\t\t\ttitle: 'Error',\n\t\t\tmessage: error.message,\n\t\t\tposition: 'bottom-right',\n\t\t});\n\t}\n};\n</script>\n\n<template>\n\t<AuthView :form=\"FORM_CONFIG\" :form-loading=\"loading\" @submit=\"onSubmit\" />\n</template>\n"],"names":["router","useRouter","ssoStore","useSSOStore","loading","ref","FORM_CONFIG","reactive","locale","_a","_b","onSubmit","values","VIEWS","error","Notification"],"mappings":"2pCAUA,MAAMA,EAASC,IACTC,EAAWC,IAEXC,EAAUC,EAAI,EAAK,EACnBC,EAA8BC,EAAS,CAC5C,MAAOC,EAAO,SAAS,8BAA8B,EACrD,WAAYA,EAAO,SAAS,gCAAgC,EAC5D,OAAQ,CACP,CACC,KAAM,YACN,cAAcC,EAAAP,EAAS,WAAT,YAAAO,EAAmB,UACjC,WAAY,CACX,MAAOD,EAAO,SAAS,gBAAgB,EACvC,UAAW,GACX,SAAU,GACV,aAAc,aACd,WAAY,EACb,CACD,EACA,CACC,KAAM,WACN,cAAcE,EAAAR,EAAS,WAAT,YAAAQ,EAAmB,SACjC,WAAY,CACX,MAAOF,EAAO,SAAS,eAAe,EACtC,UAAW,GACX,SAAU,GACV,aAAc,cACd,WAAY,EACb,CACD,CACD,CAAA,CACA,EACKG,EAAW,MAAOC,GAAoD,CACvE,GAAA,CACHR,EAAQ,MAAQ,GACV,MAAAF,EAAS,WAAWU,CAAM,EAChC,MAAMZ,EAAO,KAAK,CAAE,KAAMa,EAAM,SAAU,QAClCC,EAAO,CACfV,EAAQ,MAAQ,GAChBW,EAAa,MAAM,CAClB,MAAO,QACP,QAASD,EAAM,QACf,SAAU,cAAA,CACV,CACF,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{e as T,u as g,bg as k,d as C,f as S,l as A,m as v,a9 as U,_ as P}from"./n8n-oSulVm5C.js";import{C as I,b as K}from"./index-
|
|
2
|
-
//# sourceMappingURL=SettingsApiView-
|
|
1
|
+
import{e as T,u as g,bg as k,d as C,f as S,l as A,m as v,a9 as U,_ as P}from"./n8n-oSulVm5C.js";import{C as I,b as K}from"./index-36CdMZUz.js";import{m as x}from"./pinia-jQLgEt_L.js";import{G as E,ag as t,l,m as h,p as s,T as i,O as a,S as n,R as o,J as M,I as r,M as m,Q as D}from"./vendor-e5jTRqqt.js";import"./lodash-es-JdX4GWLn.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-eU1v7QRm.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-IDI7B_27.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./@n8n/codemirror-lang-sql-feLn5IS9.js";import"./@lezer/common-1hBQ1gIF.js";import"./codemirror-lang-html-n8n-wWQLhhqk.js";import"./prettier-s3fE3Qyr.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./codemirror-lang-n8n-expression-HpIZnV_9.js";import"./fast-json-stable-stringify-z-DLxjte.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-b4L9G_D6.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";const V=E({name:"SettingsApiView",components:{CopyInput:I},setup(){return{...T(),...K(),...g()}},data(){return{loading:!1,mounted:!1,apiKey:"",swaggerUIEnabled:!1,apiDocsURL:""}},mounted(){if(!this.isPublicApiEnabled)return;this.getApiKey();const e=this.rootStore.baseUrl,p=this.settingsStore.publicApiPath,c=this.settingsStore.publicApiLatestVersion;this.swaggerUIEnabled=this.settingsStore.isSwaggerUIEnabled,this.apiDocsURL=this.swaggerUIEnabled?`${e}${p}/v${c}/docs`:`https://${k}/api/api-reference/`},computed:{...x(v,A,S,C,g),currentUser(){return this.usersStore.currentUser},isTrialing(){return this.cloudPlanStore.userIsTrialing},isLoadingCloudPlans(){return this.cloudPlanStore.state.loadingPlan},isPublicApiEnabled(){return this.settingsStore.isPublicApiEnabled}},methods:{onUpgrade(){this.uiStore.goToUpgrade("settings-n8n-api","upgrade-api","redirect")},async showDeleteModal(){await this.confirm(this.$locale.baseText("settings.api.delete.description"),this.$locale.baseText("settings.api.delete.title"),{confirmButtonText:this.$locale.baseText("settings.api.delete.button"),cancelButtonText:this.$locale.baseText("generic.cancel")})===U&&await this.deleteApiKey()},async getApiKey(){try{this.apiKey=await this.settingsStore.getApiKey()||""}catch(e){this.showError(e,this.$locale.baseText("settings.api.view.error"))}finally{this.mounted=!0}},async createApiKey(){this.loading=!0;try{this.apiKey=await this.settingsStore.createApiKey()||""}catch(e){this.showError(e,this.$locale.baseText("settings.api.create.error"))}finally{this.loading=!1,this.$telemetry.track("User clicked create API key button")}},async deleteApiKey(){try{await this.settingsStore.deleteApiKey(),this.showMessage({title:this.$locale.baseText("settings.api.delete.toast"),type:"success"}),this.apiKey=""}catch(e){this.showError(e,this.$locale.baseText("settings.api.delete.error"))}finally{this.$telemetry.track("User clicked delete API key button")}},onCopy(){this.$telemetry.track("User clicked copy API key button")}}}),z="_container_1teme_5",L="_header_1teme_9",B="_card_1teme_18",N="_hint_1teme_29",R={container:z,header:L,card:B,delete:"_delete_1teme_22",hint:N},O={key:0},F={class:"mb-s"},G=["textContent"],J=["textContent"];function Q(e,p,c,q,H,W){const b=t("n8n-heading"),y=t("i18n-t"),$=t("n8n-info-tip"),d=t("n8n-link"),f=t("CopyInput"),_=t("n8n-card"),w=t("n8n-text"),u=t("n8n-action-box");return l(),h("div",{class:r(e.$style.container)},[s("div",{class:r(e.$style.header)},[i(b,{size:"2xlarge"},{default:a(()=>[n(o(e.$locale.baseText("settings.api"))+" ",1),s("span",{style:M({fontSize:"var(--font-size-s)",color:"var(--color-text-light)"})}," ("+o(e.$locale.baseText("beta"))+") ",5)]),_:1})],2),e.apiKey?(l(),h("div",O,[s("p",F,[i($,{bold:!1},{default:a(()=>[i(y,{keypath:"settings.api.view.info",tag:"span"},{apiAction:a(()=>[s("a",{href:"https://docs.n8n.io/api",target:"_blank",textContent:o(e.$locale.baseText("settings.api.view.info.api"))},null,8,G)]),webhookAction:a(()=>[s("a",{href:"https://docs.n8n.io/integrations/core-nodes/n8n-nodes-base.webhook/",target:"_blank",textContent:o(e.$locale.baseText("settings.api.view.info.webhook"))},null,8,J)]),_:1})]),_:1})]),i(_,{class:r(["mb-4xs",e.$style.card])},{default:a(()=>[s("span",{class:r(e.$style.delete)},[i(d,{bold:!0,onClick:e.showDeleteModal},{default:a(()=>[n(o(e.$locale.baseText("generic.delete")),1)]),_:1},8,["onClick"])],2),s("div",null,[i(f,{label:e.$locale.baseText("settings.api.view.myKey"),value:e.apiKey,"copy-button-text":e.$locale.baseText("generic.clickToCopy"),"toast-title":e.$locale.baseText("settings.api.view.copy.toast"),"redact-value":!0,onCopy:e.onCopy},null,8,["label","value","copy-button-text","toast-title","onCopy"])])]),_:1},8,["class"]),s("div",{class:r(e.$style.hint)},[i(w,{size:"small"},{default:a(()=>[n(o(e.$locale.baseText(`settings.api.view.${e.swaggerUIEnabled?"tryapi":"more-details"}`)),1)]),_:1}),n(" "+o(" ")+" "),i(d,{to:e.apiDocsURL,"new-window":!0,size:"small"},{default:a(()=>[n(o(e.$locale.baseText(`settings.api.view.${e.swaggerUIEnabled?"apiPlayground":"external-docs"}`)),1)]),_:1},8,["to"])],2)])):!e.isPublicApiEnabled&&e.isTrialing?(l(),m(u,{key:1,"data-test-id":"public-api-upgrade-cta",heading:e.$locale.baseText("settings.api.trial.upgradePlan.title"),description:e.$locale.baseText("settings.api.trial.upgradePlan.description"),"button-text":e.$locale.baseText("settings.api.trial.upgradePlan.cta"),"onClick:button":e.onUpgrade},null,8,["heading","description","button-text","onClick:button"])):e.mounted&&!e.isLoadingCloudPlans?(l(),m(u,{key:2,"button-text":e.$locale.baseText(e.loading?"settings.api.create.button.loading":"settings.api.create.button"),description:e.$locale.baseText("settings.api.create.description"),"onClick:button":e.createApiKey},null,8,["button-text","description","onClick:button"])):D("",!0)],2)}const j={$style:R},Se=P(V,[["render",Q],["__cssModules",j]]);export{Se as default};
|
|
2
|
+
//# sourceMappingURL=SettingsApiView-DbkofsKW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsApiView-nYqcsdag.js","sources":["../../src/views/SettingsApiView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.container\">\n\t\t<div :class=\"$style.header\">\n\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t{{ $locale.baseText('settings.api') }}\n\t\t\t\t<span :style=\"{ fontSize: 'var(--font-size-s)', color: 'var(--color-text-light)' }\">\n\t\t\t\t\t({{ $locale.baseText('beta') }})\n\t\t\t\t</span>\n\t\t\t</n8n-heading>\n\t\t</div>\n\n\t\t<div v-if=\"apiKey\">\n\t\t\t<p class=\"mb-s\">\n\t\t\t\t<n8n-info-tip :bold=\"false\">\n\t\t\t\t\t<i18n-t keypath=\"settings.api.view.info\" tag=\"span\">\n\t\t\t\t\t\t<template #apiAction>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref=\"https://docs.n8n.io/api\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tv-text=\"$locale.baseText('settings.api.view.info.api')\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #webhookAction>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref=\"https://docs.n8n.io/integrations/core-nodes/n8n-nodes-base.webhook/\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tv-text=\"$locale.baseText('settings.api.view.info.webhook')\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</i18n-t>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</p>\n\t\t\t<n8n-card class=\"mb-4xs\" :class=\"$style.card\">\n\t\t\t\t<span :class=\"$style.delete\">\n\t\t\t\t\t<n8n-link :bold=\"true\" @click=\"showDeleteModal\">\n\t\t\t\t\t\t{{ $locale.baseText('generic.delete') }}\n\t\t\t\t\t</n8n-link>\n\t\t\t\t</span>\n\t\t\t\t<div>\n\t\t\t\t\t<CopyInput\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.api.view.myKey')\"\n\t\t\t\t\t\t:value=\"apiKey\"\n\t\t\t\t\t\t:copy-button-text=\"$locale.baseText('generic.clickToCopy')\"\n\t\t\t\t\t\t:toast-title=\"$locale.baseText('settings.api.view.copy.toast')\"\n\t\t\t\t\t\t:redact-value=\"true\"\n\t\t\t\t\t\t@copy=\"onCopy\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</n8n-card>\n\t\t\t<div :class=\"$style.hint\">\n\t\t\t\t<n8n-text size=\"small\">\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText(`settings.api.view.${swaggerUIEnabled ? 'tryapi' : 'more-details'}`)\n\t\t\t\t\t}}\n\t\t\t\t</n8n-text>\n\t\t\t\t{{ ' ' }}\n\t\t\t\t<n8n-link :to=\"apiDocsURL\" :new-window=\"true\" size=\"small\">\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText(\n\t\t\t\t\t\t\t`settings.api.view.${swaggerUIEnabled ? 'apiPlayground' : 'external-docs'}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}}\n\t\t\t\t</n8n-link>\n\t\t\t</div>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else-if=\"!isPublicApiEnabled && isTrialing\"\n\t\t\tdata-test-id=\"public-api-upgrade-cta\"\n\t\t\t:heading=\"$locale.baseText('settings.api.trial.upgradePlan.title')\"\n\t\t\t:description=\"$locale.baseText('settings.api.trial.upgradePlan.description')\"\n\t\t\t:button-text=\"$locale.baseText('settings.api.trial.upgradePlan.cta')\"\n\t\t\t@click:button=\"onUpgrade\"\n\t\t/>\n\t\t<n8n-action-box\n\t\t\tv-else-if=\"mounted && !isLoadingCloudPlans\"\n\t\t\t:button-text=\"\n\t\t\t\t$locale.baseText(\n\t\t\t\t\tloading ? 'settings.api.create.button.loading' : 'settings.api.create.button',\n\t\t\t\t)\n\t\t\t\"\n\t\t\t:description=\"$locale.baseText('settings.api.create.description')\"\n\t\t\t@click:button=\"createApiKey\"\n\t\t/>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { IUser } from '@/Interface';\nimport { useToast } from '@/composables/useToast';\nimport { useMessage } from '@/composables/useMessage';\n\nimport CopyInput from '@/components/CopyInput.vue';\nimport { mapStores } from 'pinia';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useRootStore } from '@/stores/n8nRoot.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useCloudPlanStore } from '@/stores/cloudPlan.store';\nimport { DOCS_DOMAIN, MODAL_CONFIRM } from '@/constants';\n\nexport default defineComponent({\n\tname: 'SettingsApiView',\n\tcomponents: {\n\t\tCopyInput,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t\t...useMessage(),\n\t\t\t...useUIStore(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tmounted: false,\n\t\t\tapiKey: '',\n\t\t\tswaggerUIEnabled: false,\n\t\t\tapiDocsURL: '',\n\t\t};\n\t},\n\tmounted() {\n\t\tif (!this.isPublicApiEnabled) return;\n\n\t\tvoid this.getApiKey();\n\t\tconst baseUrl = this.rootStore.baseUrl;\n\t\tconst apiPath = this.settingsStore.publicApiPath;\n\t\tconst latestVersion = this.settingsStore.publicApiLatestVersion;\n\t\tthis.swaggerUIEnabled = this.settingsStore.isSwaggerUIEnabled;\n\t\tthis.apiDocsURL = this.swaggerUIEnabled\n\t\t\t? `${baseUrl}${apiPath}/v${latestVersion}/docs`\n\t\t\t: `https://${DOCS_DOMAIN}/api/api-reference/`;\n\t},\n\tcomputed: {\n\t\t...mapStores(useRootStore, useSettingsStore, useUsersStore, useCloudPlanStore, useUIStore),\n\t\tcurrentUser(): IUser | null {\n\t\t\treturn this.usersStore.currentUser;\n\t\t},\n\t\tisTrialing(): boolean {\n\t\t\treturn this.cloudPlanStore.userIsTrialing;\n\t\t},\n\t\tisLoadingCloudPlans(): boolean {\n\t\t\treturn this.cloudPlanStore.state.loadingPlan;\n\t\t},\n\t\tisPublicApiEnabled(): boolean {\n\t\t\treturn this.settingsStore.isPublicApiEnabled;\n\t\t},\n\t},\n\tmethods: {\n\t\tonUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('settings-n8n-api', 'upgrade-api', 'redirect');\n\t\t},\n\t\tasync showDeleteModal() {\n\t\t\tconst confirmed = await this.confirm(\n\t\t\t\tthis.$locale.baseText('settings.api.delete.description'),\n\t\t\t\tthis.$locale.baseText('settings.api.delete.title'),\n\t\t\t\t{\n\t\t\t\t\tconfirmButtonText: this.$locale.baseText('settings.api.delete.button'),\n\t\t\t\t\tcancelButtonText: this.$locale.baseText('generic.cancel'),\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (confirmed === MODAL_CONFIRM) {\n\t\t\t\tawait this.deleteApiKey();\n\t\t\t}\n\t\t},\n\t\tasync getApiKey() {\n\t\t\ttry {\n\t\t\t\tthis.apiKey = (await this.settingsStore.getApiKey()) || '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.view.error'));\n\t\t\t} finally {\n\t\t\t\tthis.mounted = true;\n\t\t\t}\n\t\t},\n\t\tasync createApiKey() {\n\t\t\tthis.loading = true;\n\n\t\t\ttry {\n\t\t\t\tthis.apiKey = (await this.settingsStore.createApiKey()) || '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.create.error'));\n\t\t\t} finally {\n\t\t\t\tthis.loading = false;\n\t\t\t\tthis.$telemetry.track('User clicked create API key button');\n\t\t\t}\n\t\t},\n\t\tasync deleteApiKey() {\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.deleteApiKey();\n\t\t\t\tthis.showMessage({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.api.delete.toast'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t\tthis.apiKey = '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.delete.error'));\n\t\t\t} finally {\n\t\t\t\tthis.$telemetry.track('User clicked delete API key button');\n\t\t\t}\n\t\t},\n\t\tonCopy() {\n\t\t\tthis.$telemetry.track('User clicked copy API key button');\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.card {\n\tposition: relative;\n}\n\n.delete {\n\tposition: absolute;\n\tdisplay: inline-block;\n\ttop: var(--spacing-s);\n\tright: var(--spacing-s);\n}\n\n.hint {\n\tcolor: var(--color-text-light);\n}\n</style>\n"],"names":["_sfc_main","defineComponent","CopyInput","useToast","useMessage","useUIStore","baseUrl","apiPath","latestVersion","DOCS_DOMAIN","mapStores","useRootStore","useSettingsStore","useUsersStore","useCloudPlanStore","MODAL_CONFIRM","error","_resolveComponent","_normalizeClass","_ctx","_withCtx","_createTextVNode","_toDisplayString","_createElementVNode","_normalizeStyle","_openBlock","_hoisted_1","_hoisted_2","_createVNode","_component_n8n_info_tip","_component_i18n_t","_hoisted_3","_component_n8n_link","_component_CopyInput","_component_n8n_text","_component_n8n_action_box","_createBlock"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsApiView-DbkofsKW.js","sources":["../../src/views/SettingsApiView.vue"],"sourcesContent":["<template>\n\t<div :class=\"$style.container\">\n\t\t<div :class=\"$style.header\">\n\t\t\t<n8n-heading size=\"2xlarge\">\n\t\t\t\t{{ $locale.baseText('settings.api') }}\n\t\t\t\t<span :style=\"{ fontSize: 'var(--font-size-s)', color: 'var(--color-text-light)' }\">\n\t\t\t\t\t({{ $locale.baseText('beta') }})\n\t\t\t\t</span>\n\t\t\t</n8n-heading>\n\t\t</div>\n\n\t\t<div v-if=\"apiKey\">\n\t\t\t<p class=\"mb-s\">\n\t\t\t\t<n8n-info-tip :bold=\"false\">\n\t\t\t\t\t<i18n-t keypath=\"settings.api.view.info\" tag=\"span\">\n\t\t\t\t\t\t<template #apiAction>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref=\"https://docs.n8n.io/api\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tv-text=\"$locale.baseText('settings.api.view.info.api')\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #webhookAction>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref=\"https://docs.n8n.io/integrations/core-nodes/n8n-nodes-base.webhook/\"\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tv-text=\"$locale.baseText('settings.api.view.info.webhook')\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</i18n-t>\n\t\t\t\t</n8n-info-tip>\n\t\t\t</p>\n\t\t\t<n8n-card class=\"mb-4xs\" :class=\"$style.card\">\n\t\t\t\t<span :class=\"$style.delete\">\n\t\t\t\t\t<n8n-link :bold=\"true\" @click=\"showDeleteModal\">\n\t\t\t\t\t\t{{ $locale.baseText('generic.delete') }}\n\t\t\t\t\t</n8n-link>\n\t\t\t\t</span>\n\t\t\t\t<div>\n\t\t\t\t\t<CopyInput\n\t\t\t\t\t\t:label=\"$locale.baseText('settings.api.view.myKey')\"\n\t\t\t\t\t\t:value=\"apiKey\"\n\t\t\t\t\t\t:copy-button-text=\"$locale.baseText('generic.clickToCopy')\"\n\t\t\t\t\t\t:toast-title=\"$locale.baseText('settings.api.view.copy.toast')\"\n\t\t\t\t\t\t:redact-value=\"true\"\n\t\t\t\t\t\t@copy=\"onCopy\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</n8n-card>\n\t\t\t<div :class=\"$style.hint\">\n\t\t\t\t<n8n-text size=\"small\">\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText(`settings.api.view.${swaggerUIEnabled ? 'tryapi' : 'more-details'}`)\n\t\t\t\t\t}}\n\t\t\t\t</n8n-text>\n\t\t\t\t{{ ' ' }}\n\t\t\t\t<n8n-link :to=\"apiDocsURL\" :new-window=\"true\" size=\"small\">\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText(\n\t\t\t\t\t\t\t`settings.api.view.${swaggerUIEnabled ? 'apiPlayground' : 'external-docs'}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}}\n\t\t\t\t</n8n-link>\n\t\t\t</div>\n\t\t</div>\n\t\t<n8n-action-box\n\t\t\tv-else-if=\"!isPublicApiEnabled && isTrialing\"\n\t\t\tdata-test-id=\"public-api-upgrade-cta\"\n\t\t\t:heading=\"$locale.baseText('settings.api.trial.upgradePlan.title')\"\n\t\t\t:description=\"$locale.baseText('settings.api.trial.upgradePlan.description')\"\n\t\t\t:button-text=\"$locale.baseText('settings.api.trial.upgradePlan.cta')\"\n\t\t\t@click:button=\"onUpgrade\"\n\t\t/>\n\t\t<n8n-action-box\n\t\t\tv-else-if=\"mounted && !isLoadingCloudPlans\"\n\t\t\t:button-text=\"\n\t\t\t\t$locale.baseText(\n\t\t\t\t\tloading ? 'settings.api.create.button.loading' : 'settings.api.create.button',\n\t\t\t\t)\n\t\t\t\"\n\t\t\t:description=\"$locale.baseText('settings.api.create.description')\"\n\t\t\t@click:button=\"createApiKey\"\n\t\t/>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { IUser } from '@/Interface';\nimport { useToast } from '@/composables/useToast';\nimport { useMessage } from '@/composables/useMessage';\n\nimport CopyInput from '@/components/CopyInput.vue';\nimport { mapStores } from 'pinia';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useRootStore } from '@/stores/n8nRoot.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useUsersStore } from '@/stores/users.store';\nimport { useCloudPlanStore } from '@/stores/cloudPlan.store';\nimport { DOCS_DOMAIN, MODAL_CONFIRM } from '@/constants';\n\nexport default defineComponent({\n\tname: 'SettingsApiView',\n\tcomponents: {\n\t\tCopyInput,\n\t},\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t\t...useMessage(),\n\t\t\t...useUIStore(),\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tmounted: false,\n\t\t\tapiKey: '',\n\t\t\tswaggerUIEnabled: false,\n\t\t\tapiDocsURL: '',\n\t\t};\n\t},\n\tmounted() {\n\t\tif (!this.isPublicApiEnabled) return;\n\n\t\tvoid this.getApiKey();\n\t\tconst baseUrl = this.rootStore.baseUrl;\n\t\tconst apiPath = this.settingsStore.publicApiPath;\n\t\tconst latestVersion = this.settingsStore.publicApiLatestVersion;\n\t\tthis.swaggerUIEnabled = this.settingsStore.isSwaggerUIEnabled;\n\t\tthis.apiDocsURL = this.swaggerUIEnabled\n\t\t\t? `${baseUrl}${apiPath}/v${latestVersion}/docs`\n\t\t\t: `https://${DOCS_DOMAIN}/api/api-reference/`;\n\t},\n\tcomputed: {\n\t\t...mapStores(useRootStore, useSettingsStore, useUsersStore, useCloudPlanStore, useUIStore),\n\t\tcurrentUser(): IUser | null {\n\t\t\treturn this.usersStore.currentUser;\n\t\t},\n\t\tisTrialing(): boolean {\n\t\t\treturn this.cloudPlanStore.userIsTrialing;\n\t\t},\n\t\tisLoadingCloudPlans(): boolean {\n\t\t\treturn this.cloudPlanStore.state.loadingPlan;\n\t\t},\n\t\tisPublicApiEnabled(): boolean {\n\t\t\treturn this.settingsStore.isPublicApiEnabled;\n\t\t},\n\t},\n\tmethods: {\n\t\tonUpgrade() {\n\t\t\tvoid this.uiStore.goToUpgrade('settings-n8n-api', 'upgrade-api', 'redirect');\n\t\t},\n\t\tasync showDeleteModal() {\n\t\t\tconst confirmed = await this.confirm(\n\t\t\t\tthis.$locale.baseText('settings.api.delete.description'),\n\t\t\t\tthis.$locale.baseText('settings.api.delete.title'),\n\t\t\t\t{\n\t\t\t\t\tconfirmButtonText: this.$locale.baseText('settings.api.delete.button'),\n\t\t\t\t\tcancelButtonText: this.$locale.baseText('generic.cancel'),\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (confirmed === MODAL_CONFIRM) {\n\t\t\t\tawait this.deleteApiKey();\n\t\t\t}\n\t\t},\n\t\tasync getApiKey() {\n\t\t\ttry {\n\t\t\t\tthis.apiKey = (await this.settingsStore.getApiKey()) || '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.view.error'));\n\t\t\t} finally {\n\t\t\t\tthis.mounted = true;\n\t\t\t}\n\t\t},\n\t\tasync createApiKey() {\n\t\t\tthis.loading = true;\n\n\t\t\ttry {\n\t\t\t\tthis.apiKey = (await this.settingsStore.createApiKey()) || '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.create.error'));\n\t\t\t} finally {\n\t\t\t\tthis.loading = false;\n\t\t\t\tthis.$telemetry.track('User clicked create API key button');\n\t\t\t}\n\t\t},\n\t\tasync deleteApiKey() {\n\t\t\ttry {\n\t\t\t\tawait this.settingsStore.deleteApiKey();\n\t\t\t\tthis.showMessage({\n\t\t\t\t\ttitle: this.$locale.baseText('settings.api.delete.toast'),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\t\t\t\tthis.apiKey = '';\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('settings.api.delete.error'));\n\t\t\t} finally {\n\t\t\t\tthis.$telemetry.track('User clicked delete API key button');\n\t\t\t}\n\t\t},\n\t\tonCopy() {\n\t\t\tthis.$telemetry.track('User clicked copy API key button');\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\t> * {\n\t\tmargin-bottom: var(--spacing-2xl);\n\t}\n}\n\n.header {\n\tdisplay: flex;\n\talign-items: center;\n\twhite-space: nowrap;\n\n\t*:first-child {\n\t\tflex-grow: 1;\n\t}\n}\n\n.card {\n\tposition: relative;\n}\n\n.delete {\n\tposition: absolute;\n\tdisplay: inline-block;\n\ttop: var(--spacing-s);\n\tright: var(--spacing-s);\n}\n\n.hint {\n\tcolor: var(--color-text-light);\n}\n</style>\n"],"names":["_sfc_main","defineComponent","CopyInput","useToast","useMessage","useUIStore","baseUrl","apiPath","latestVersion","DOCS_DOMAIN","mapStores","useRootStore","useSettingsStore","useUsersStore","useCloudPlanStore","MODAL_CONFIRM","error","_resolveComponent","_normalizeClass","_ctx","_withCtx","_createTextVNode","_toDisplayString","_createElementVNode","_normalizeStyle","_openBlock","_hoisted_1","_hoisted_2","_createVNode","_component_n8n_info_tip","_component_i18n_t","_hoisted_3","_component_n8n_link","_component_CopyInput","_component_n8n_text","_component_n8n_action_box","_createBlock"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{at as N,u as v,ee as L,_ as A,e as D,l as w,aw as f,fH as O,fI as x,au as V,a8 as j}from"./n8n-oSulVm5C.js";import{m as I}from"./pinia-jQLgEt_L.js";import{G as P,ag as l,l as t,m as s,I as o,T as a,p as c,O as i,S as k,R as r,F as b,a7 as S,M as h,Q as M}from"./vendor-e5jTRqqt.js";import{p as $}from"./pushConnection-Nsi8KY7W.js";import{ay as z}from"./index-6DR75wmI.js";import"./lodash-es-JdX4GWLn.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-eU1v7QRm.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-IDI7B_27.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./collaboration.store-INqaSyP2.js";import"./@n8n/codemirror-lang-sql-feLn5IS9.js";import"./@lezer/common-1hBQ1gIF.js";import"./codemirror-lang-html-n8n-wWQLhhqk.js";import"./prettier-s3fE3Qyr.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./codemirror-lang-n8n-expression-HpIZnV_9.js";import"./fast-json-stable-stringify-z-DLxjte.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-b4L9G_D6.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";const R=P({name:"CommunityPackageCard",props:{communityPackage:{type:Object},loading:{type:Boolean,default:!1}},data(){return{packageActions:[{label:this.$locale.baseText("settings.communityNodes.viewDocsAction.label"),value:N.VIEW_DOCS,type:"external-link"},{label:this.$locale.baseText("settings.communityNodes.uninstallAction.label"),value:N.UNINSTALL}]}},computed:{...I(v)},methods:{async onAction(e){switch(e){case N.VIEW_DOCS:this.$telemetry.track("user clicked to browse the cnr package documentation",{package_name:this.communityPackage.packageName,package_version:this.communityPackage.installedVersion}),window.open(`${L}${this.communityPackage.packageName}`,"_blank");break;case N.UNINSTALL:this.uiStore.openCommunityPackageUninstallConfirmModal(this.communityPackage.packageName);break}},onUpdateClick(){this.uiStore.openCommunityPackageUpdateConfirmModal(this.communityPackage.packageName)}}}),H="_cardContainer_14eyd_5",G="_packageCard_14eyd_13",Y="_cardSkeleton_14eyd_14",K="_loader_14eyd_28",Q="_cardInfoContainer_14eyd_39",F="_cardTitle_14eyd_44",W="_cardSubtitle_14eyd_51",q="_cardControlsContainer_14eyd_56",J="_cardActions_14eyd_62",X={cardContainer:H,packageCard:G,cardSkeleton:Y,loader:K,cardInfoContainer:Q,cardTitle:F,cardSubtitle:W,cardControlsContainer:q,cardActions:J},Z={key:0};function ee(e,m,n,d,_,U){const C=l("n8n-loading"),u=l("n8n-text"),y=l("n8n-icon"),p=l("n8n-tooltip"),g=l("n8n-button"),E=l("n8n-action-toggle");return t(),s("div",{class:o(e.$style.cardContainer)},[e.loading?(t(),s("div",{key:0,class:o(e.$style.cardSkeleton)},[a(C,{class:o(e.$style.loader),variant:"p",rows:1},null,8,["class"]),a(C,{class:o(e.$style.loader),variant:"p",rows:1},null,8,["class"])],2)):(t(),s("div",{key:1,class:o(e.$style.packageCard)},[c("div",{class:o(e.$style.cardInfoContainer)},[c("div",{class:o(e.$style.cardTitle)},[a(u,{bold:!0,size:"large"},{default:i(()=>[k(r(e.communityPackage.packageName),1)]),_:1})],2),c("div",{class:o(e.$style.cardSubtitle)},[a(u,{bold:!0,size:"small",color:"text-light"},{default:i(()=>[k(r(e.$locale.baseText("settings.communityNodes.packageNodes.label",{adjustToNumber:e.communityPackage.installedNodes.length}))+": ",1)]),_:1}),a(u,{size:"small",color:"text-light"},{default:i(()=>[(t(!0),s(b,null,S(e.communityPackage.installedNodes,(T,B)=>(t(),s("span",{key:T.name},[k(r(T.name),1),B!=e.communityPackage.installedNodes.length-1?(t(),s("span",Z,",")):M("",!0)]))),128))]),_:1})],2)],2),c("div",{class:o(e.$style.cardControlsContainer)},[a(u,{bold:!0,size:"large",color:"text-light"},{default:i(()=>[k(" v"+r(e.communityPackage.installedVersion),1)]),_:1}),e.communityPackage.failedLoading===!0?(t(),h(p,{key:0,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.failedToLoad.tooltip")),1)]),default:i(()=>[a(y,{icon:"exclamation-triangle",color:"danger",size:"large"})]),_:1})):e.communityPackage.updateAvailable?(t(),h(p,{key:1,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.updateAvailable.tooltip")),1)]),default:i(()=>[a(g,{outline:"",label:"Update",onClick:e.onUpdateClick},null,8,["onClick"])]),_:1})):(t(),h(p,{key:2,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.upToDate.tooltip")),1)]),default:i(()=>[a(y,{icon:"check-circle",color:"text-light",size:"large"})]),_:1})),c("div",{class:o(e.$style.cardActions)},[a(E,{actions:e.packageActions,onAction:e.onAction},null,8,["actions","onAction"])],2)],2)],2))],2)}const te={$style:X},oe=A(R,[["render",ee],["__cssModules",te]]),ae=31,ne=P({name:"SettingsCommunityNodesView",components:{CommunityPackageCard:oe},mixins:[$],setup(e,m){var d,_;return{externalHooks:j(),...D(),...(_=(d=$).setup)==null?void 0:_.call(d,e,m)}},data(){return{loading:!1}},async mounted(){this.pushStore.pushConnect();try{this.loading=!0,await this.communityNodesStore.fetchInstalledPackages();const e=this.communityNodesStore.getInstalledPackages,m=e.filter(n=>n.updateAvailable);this.$telemetry.track("user viewed cnr settings page",{num_of_packages_installed:e.length,installed_packages:e.map(n=>({package_name:n.packageName,package_version:n.installedVersion,package_nodes:n.installedNodes.map(d=>`${d.name}-v${d.latestVersion}`),is_update_available:n.updateAvailable!==void 0})),packages_to_update:m.map(n=>({package_name:n.packageName,package_version_current:n.installedVersion,package_version_available:n.updateAvailable})),number_of_updates_available:m.length})}catch(e){this.showError(e,this.$locale.baseText("settings.communityNodes.fetchError.title"),this.$locale.baseText("settings.communityNodes.fetchError.message"))}finally{this.loading=!1}try{await this.communityNodesStore.fetchAvailableCommunityPackageCount()}finally{this.loading=!1}},beforeUnmount(){this.pushStore.pushDisconnect()},computed:{...I(z,w,v),getEmptyStateDescription(){const e=this.communityNodesStore.availablePackageCount;return this.settingsStore.isDesktopDeployment?this.$locale.baseText("contextual.communityNodes.unavailable.description.desktop"):e<ae?this.$locale.baseText("settings.communityNodes.empty.description.no-packages",{interpolate:{docURL:f}}):this.$locale.baseText("settings.communityNodes.empty.description",{interpolate:{docURL:f,count:(Math.floor(e/10)*10).toString()}})},getEmptyStateButtonText(){return this.settingsStore.isDesktopDeployment?this.$locale.baseText("contextual.communityNodes.unavailable.button.desktop"):this.shouldShowInstallButton?this.$locale.baseText("settings.communityNodes.empty.installPackageLabel"):""},shouldShowInstallButton(){return this.settingsStore.isDesktopDeployment||this.settingsStore.isNpmAvailable},actionBoxConfig(){return this.settingsStore.isNpmAvailable?this.settingsStore.isQueueModeEnabled?{calloutText:this.$locale.baseText("settings.communityNodes.queueMode.warning",{interpolate:{docURL:x}}),calloutTheme:"warning",hideButton:!0}:{calloutText:"",calloutTheme:"",hideButton:!1}:{calloutText:this.$locale.baseText("settings.communityNodes.npmUnavailable.warning",{interpolate:{npmUrl:O}}),calloutTheme:"warning",hideButton:!0}}},methods:{onClickEmptyStateButton(){if(this.settingsStore.isDesktopDeployment)return this.goToUpgrade();this.openInstallModal()},goToUpgrade(){this.uiStore.goToUpgrade("community-nodes","upgrade-community-nodes")},openInstallModal(){const e={is_empty_state:this.communityNodesStore.getInstalledPackages.length===0};this.$telemetry.track("user clicked cnr install button",e),this.externalHooks.run("settingsCommunityNodesView.openInstallModal",e),this.uiStore.openModal(V)}}}),se="_container_12ljj_5",ie="_headingContainer_12ljj_13",le="_loadingContainer_12ljj_18",ce="_actionBoxContainer_12ljj_23",re="_cardsContainer_12ljj_27",de={container:se,headingContainer:ie,loadingContainer:le,actionBoxContainer:ce,cardsContainer:re};function me(e,m,n,d,_,U){const C=l("n8n-heading"),u=l("n8n-button"),y=l("n8n-action-box"),p=l("CommunityPackageCard");return t(),s("div",{class:o(e.$style.container)},[c("div",{class:o(e.$style.headingContainer)},[a(C,{size:"2xlarge"},{default:i(()=>[k(r(e.$locale.baseText("settings.communityNodes")),1)]),_:1}),!e.settingsStore.isQueueModeEnabled&&e.communityNodesStore.getInstalledPackages.length>0&&!e.loading?(t(),h(u,{key:0,label:e.$locale.baseText("settings.communityNodes.installModal.installButton.label"),size:"large",onClick:e.openInstallModal},null,8,["label","onClick"])):M("",!0)],2),e.settingsStore.isQueueModeEnabled?(t(),s("div",{key:0,class:o(e.$style.actionBoxContainer)},[a(y,{heading:e.$locale.baseText("settings.communityNodes.empty.title"),description:e.getEmptyStateDescription,"callout-text":e.actionBoxConfig.calloutText,"callout-theme":e.actionBoxConfig.calloutTheme},null,8,["heading","description","callout-text","callout-theme"])],2)):e.loading?(t(),s("div",{key:1,class:o(e.$style.cardsContainer)},[(t(),s(b,null,S(2,g=>a(p,{key:"index-"+g,loading:!0})),64))],2)):e.communityNodesStore.getInstalledPackages.length===0?(t(),s("div",{key:2,class:o(e.$style.actionBoxContainer)},[a(y,{heading:e.$locale.baseText("settings.communityNodes.empty.title"),description:e.getEmptyStateDescription,"button-text":e.getEmptyStateButtonText,"callout-text":e.actionBoxConfig.calloutText,"callout-theme":e.actionBoxConfig.calloutTheme,"onClick:button":e.onClickEmptyStateButton},null,8,["heading","description","button-text","callout-text","callout-theme","onClick:button"])],2)):(t(),s("div",{key:3,class:o(e.$style.cardsContainer)},[(t(!0),s(b,null,S(e.communityNodesStore.getInstalledPackages,g=>(t(),h(p,{key:g.packageName,"community-package":g},null,8,["community-package"]))),128))],2))],2)}const ue={$style:de},He=A(ne,[["render",me],["__cssModules",ue]]);export{He as default};
|
|
2
|
-
//# sourceMappingURL=SettingsCommunityNodesView-
|
|
1
|
+
import{at as N,u as v,ee as L,_ as A,e as D,l as w,aw as f,fH as O,fI as x,au as V,a8 as j}from"./n8n-oSulVm5C.js";import{m as I}from"./pinia-jQLgEt_L.js";import{G as P,ag as l,l as t,m as s,I as o,T as a,p as c,O as i,S as k,R as r,F as b,a7 as S,M as h,Q as M}from"./vendor-e5jTRqqt.js";import{p as $}from"./pushConnection-oi9TyCK6.js";import{ay as z}from"./index-36CdMZUz.js";import"./lodash-es-JdX4GWLn.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-eU1v7QRm.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-IDI7B_27.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./collaboration.store-INqaSyP2.js";import"./@n8n/codemirror-lang-sql-feLn5IS9.js";import"./@lezer/common-1hBQ1gIF.js";import"./codemirror-lang-html-n8n-wWQLhhqk.js";import"./prettier-s3fE3Qyr.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./codemirror-lang-n8n-expression-HpIZnV_9.js";import"./fast-json-stable-stringify-z-DLxjte.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-b4L9G_D6.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";const R=P({name:"CommunityPackageCard",props:{communityPackage:{type:Object},loading:{type:Boolean,default:!1}},data(){return{packageActions:[{label:this.$locale.baseText("settings.communityNodes.viewDocsAction.label"),value:N.VIEW_DOCS,type:"external-link"},{label:this.$locale.baseText("settings.communityNodes.uninstallAction.label"),value:N.UNINSTALL}]}},computed:{...I(v)},methods:{async onAction(e){switch(e){case N.VIEW_DOCS:this.$telemetry.track("user clicked to browse the cnr package documentation",{package_name:this.communityPackage.packageName,package_version:this.communityPackage.installedVersion}),window.open(`${L}${this.communityPackage.packageName}`,"_blank");break;case N.UNINSTALL:this.uiStore.openCommunityPackageUninstallConfirmModal(this.communityPackage.packageName);break}},onUpdateClick(){this.uiStore.openCommunityPackageUpdateConfirmModal(this.communityPackage.packageName)}}}),H="_cardContainer_14eyd_5",G="_packageCard_14eyd_13",Y="_cardSkeleton_14eyd_14",K="_loader_14eyd_28",Q="_cardInfoContainer_14eyd_39",F="_cardTitle_14eyd_44",W="_cardSubtitle_14eyd_51",q="_cardControlsContainer_14eyd_56",J="_cardActions_14eyd_62",X={cardContainer:H,packageCard:G,cardSkeleton:Y,loader:K,cardInfoContainer:Q,cardTitle:F,cardSubtitle:W,cardControlsContainer:q,cardActions:J},Z={key:0};function ee(e,m,n,d,_,U){const C=l("n8n-loading"),u=l("n8n-text"),y=l("n8n-icon"),p=l("n8n-tooltip"),g=l("n8n-button"),E=l("n8n-action-toggle");return t(),s("div",{class:o(e.$style.cardContainer)},[e.loading?(t(),s("div",{key:0,class:o(e.$style.cardSkeleton)},[a(C,{class:o(e.$style.loader),variant:"p",rows:1},null,8,["class"]),a(C,{class:o(e.$style.loader),variant:"p",rows:1},null,8,["class"])],2)):(t(),s("div",{key:1,class:o(e.$style.packageCard)},[c("div",{class:o(e.$style.cardInfoContainer)},[c("div",{class:o(e.$style.cardTitle)},[a(u,{bold:!0,size:"large"},{default:i(()=>[k(r(e.communityPackage.packageName),1)]),_:1})],2),c("div",{class:o(e.$style.cardSubtitle)},[a(u,{bold:!0,size:"small",color:"text-light"},{default:i(()=>[k(r(e.$locale.baseText("settings.communityNodes.packageNodes.label",{adjustToNumber:e.communityPackage.installedNodes.length}))+": ",1)]),_:1}),a(u,{size:"small",color:"text-light"},{default:i(()=>[(t(!0),s(b,null,S(e.communityPackage.installedNodes,(T,B)=>(t(),s("span",{key:T.name},[k(r(T.name),1),B!=e.communityPackage.installedNodes.length-1?(t(),s("span",Z,",")):M("",!0)]))),128))]),_:1})],2)],2),c("div",{class:o(e.$style.cardControlsContainer)},[a(u,{bold:!0,size:"large",color:"text-light"},{default:i(()=>[k(" v"+r(e.communityPackage.installedVersion),1)]),_:1}),e.communityPackage.failedLoading===!0?(t(),h(p,{key:0,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.failedToLoad.tooltip")),1)]),default:i(()=>[a(y,{icon:"exclamation-triangle",color:"danger",size:"large"})]),_:1})):e.communityPackage.updateAvailable?(t(),h(p,{key:1,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.updateAvailable.tooltip")),1)]),default:i(()=>[a(g,{outline:"",label:"Update",onClick:e.onUpdateClick},null,8,["onClick"])]),_:1})):(t(),h(p,{key:2,placement:"top"},{content:i(()=>[c("div",null,r(e.$locale.baseText("settings.communityNodes.upToDate.tooltip")),1)]),default:i(()=>[a(y,{icon:"check-circle",color:"text-light",size:"large"})]),_:1})),c("div",{class:o(e.$style.cardActions)},[a(E,{actions:e.packageActions,onAction:e.onAction},null,8,["actions","onAction"])],2)],2)],2))],2)}const te={$style:X},oe=A(R,[["render",ee],["__cssModules",te]]),ae=31,ne=P({name:"SettingsCommunityNodesView",components:{CommunityPackageCard:oe},mixins:[$],setup(e,m){var d,_;return{externalHooks:j(),...D(),...(_=(d=$).setup)==null?void 0:_.call(d,e,m)}},data(){return{loading:!1}},async mounted(){this.pushStore.pushConnect();try{this.loading=!0,await this.communityNodesStore.fetchInstalledPackages();const e=this.communityNodesStore.getInstalledPackages,m=e.filter(n=>n.updateAvailable);this.$telemetry.track("user viewed cnr settings page",{num_of_packages_installed:e.length,installed_packages:e.map(n=>({package_name:n.packageName,package_version:n.installedVersion,package_nodes:n.installedNodes.map(d=>`${d.name}-v${d.latestVersion}`),is_update_available:n.updateAvailable!==void 0})),packages_to_update:m.map(n=>({package_name:n.packageName,package_version_current:n.installedVersion,package_version_available:n.updateAvailable})),number_of_updates_available:m.length})}catch(e){this.showError(e,this.$locale.baseText("settings.communityNodes.fetchError.title"),this.$locale.baseText("settings.communityNodes.fetchError.message"))}finally{this.loading=!1}try{await this.communityNodesStore.fetchAvailableCommunityPackageCount()}finally{this.loading=!1}},beforeUnmount(){this.pushStore.pushDisconnect()},computed:{...I(z,w,v),getEmptyStateDescription(){const e=this.communityNodesStore.availablePackageCount;return this.settingsStore.isDesktopDeployment?this.$locale.baseText("contextual.communityNodes.unavailable.description.desktop"):e<ae?this.$locale.baseText("settings.communityNodes.empty.description.no-packages",{interpolate:{docURL:f}}):this.$locale.baseText("settings.communityNodes.empty.description",{interpolate:{docURL:f,count:(Math.floor(e/10)*10).toString()}})},getEmptyStateButtonText(){return this.settingsStore.isDesktopDeployment?this.$locale.baseText("contextual.communityNodes.unavailable.button.desktop"):this.shouldShowInstallButton?this.$locale.baseText("settings.communityNodes.empty.installPackageLabel"):""},shouldShowInstallButton(){return this.settingsStore.isDesktopDeployment||this.settingsStore.isNpmAvailable},actionBoxConfig(){return this.settingsStore.isNpmAvailable?this.settingsStore.isQueueModeEnabled?{calloutText:this.$locale.baseText("settings.communityNodes.queueMode.warning",{interpolate:{docURL:x}}),calloutTheme:"warning",hideButton:!0}:{calloutText:"",calloutTheme:"",hideButton:!1}:{calloutText:this.$locale.baseText("settings.communityNodes.npmUnavailable.warning",{interpolate:{npmUrl:O}}),calloutTheme:"warning",hideButton:!0}}},methods:{onClickEmptyStateButton(){if(this.settingsStore.isDesktopDeployment)return this.goToUpgrade();this.openInstallModal()},goToUpgrade(){this.uiStore.goToUpgrade("community-nodes","upgrade-community-nodes")},openInstallModal(){const e={is_empty_state:this.communityNodesStore.getInstalledPackages.length===0};this.$telemetry.track("user clicked cnr install button",e),this.externalHooks.run("settingsCommunityNodesView.openInstallModal",e),this.uiStore.openModal(V)}}}),se="_container_12ljj_5",ie="_headingContainer_12ljj_13",le="_loadingContainer_12ljj_18",ce="_actionBoxContainer_12ljj_23",re="_cardsContainer_12ljj_27",de={container:se,headingContainer:ie,loadingContainer:le,actionBoxContainer:ce,cardsContainer:re};function me(e,m,n,d,_,U){const C=l("n8n-heading"),u=l("n8n-button"),y=l("n8n-action-box"),p=l("CommunityPackageCard");return t(),s("div",{class:o(e.$style.container)},[c("div",{class:o(e.$style.headingContainer)},[a(C,{size:"2xlarge"},{default:i(()=>[k(r(e.$locale.baseText("settings.communityNodes")),1)]),_:1}),!e.settingsStore.isQueueModeEnabled&&e.communityNodesStore.getInstalledPackages.length>0&&!e.loading?(t(),h(u,{key:0,label:e.$locale.baseText("settings.communityNodes.installModal.installButton.label"),size:"large",onClick:e.openInstallModal},null,8,["label","onClick"])):M("",!0)],2),e.settingsStore.isQueueModeEnabled?(t(),s("div",{key:0,class:o(e.$style.actionBoxContainer)},[a(y,{heading:e.$locale.baseText("settings.communityNodes.empty.title"),description:e.getEmptyStateDescription,"callout-text":e.actionBoxConfig.calloutText,"callout-theme":e.actionBoxConfig.calloutTheme},null,8,["heading","description","callout-text","callout-theme"])],2)):e.loading?(t(),s("div",{key:1,class:o(e.$style.cardsContainer)},[(t(),s(b,null,S(2,g=>a(p,{key:"index-"+g,loading:!0})),64))],2)):e.communityNodesStore.getInstalledPackages.length===0?(t(),s("div",{key:2,class:o(e.$style.actionBoxContainer)},[a(y,{heading:e.$locale.baseText("settings.communityNodes.empty.title"),description:e.getEmptyStateDescription,"button-text":e.getEmptyStateButtonText,"callout-text":e.actionBoxConfig.calloutText,"callout-theme":e.actionBoxConfig.calloutTheme,"onClick:button":e.onClickEmptyStateButton},null,8,["heading","description","button-text","callout-text","callout-theme","onClick:button"])],2)):(t(),s("div",{key:3,class:o(e.$style.cardsContainer)},[(t(!0),s(b,null,S(e.communityNodesStore.getInstalledPackages,g=>(t(),h(p,{key:g.packageName,"community-package":g},null,8,["community-package"]))),128))],2))],2)}const ue={$style:de},He=A(ne,[["render",me],["__cssModules",ue]]);export{He as default};
|
|
2
|
+
//# sourceMappingURL=SettingsCommunityNodesView-AgA6fziO.js.map
|