n8n-editor-ui 1.11.0 → 1.11.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 +17 -17
- package/dist/assets/{FixedCollectionParameter-4224d5c6.js → FixedCollectionParameter-cbe09134.js} +2 -2
- package/dist/assets/{FixedCollectionParameter-4224d5c6.js.map → FixedCollectionParameter-cbe09134.js.map} +1 -1
- package/dist/assets/{NodeCreation-8d8cd6c7.js → NodeCreation-4c3cc577.js} +2 -2
- package/dist/assets/{NodeCreation-8d8cd6c7.js.map → NodeCreation-4c3cc577.js.map} +1 -1
- package/dist/assets/{NodeCreator-6143c84e.js → NodeCreator-c9cc8248.js} +2 -2
- package/dist/assets/{NodeCreator-6143c84e.js.map → NodeCreator-c9cc8248.js.map} +1 -1
- package/dist/assets/{RunDataJson-c307c0a2.js → RunDataJson-91197c1c.js} +2 -2
- package/dist/assets/{RunDataJson-c307c0a2.js.map → RunDataJson-91197c1c.js.map} +1 -1
- package/dist/assets/{RunDataJsonActions-23360248.js → RunDataJsonActions-7a4f15c3.js} +2 -2
- package/dist/assets/{RunDataJsonActions-23360248.js.map → RunDataJsonActions-7a4f15c3.js.map} +1 -1
- package/dist/assets/{RunDataSchema-716e0752.js → RunDataSchema-f3167927.js} +2 -2
- package/dist/assets/{RunDataSchema-716e0752.js.map → RunDataSchema-f3167927.js.map} +1 -1
- package/dist/assets/{RunDataTable-cf9a05fb.js → RunDataTable-5d32c9a9.js} +2 -2
- package/dist/assets/{RunDataTable-cf9a05fb.js.map → RunDataTable-5d32c9a9.js.map} +1 -1
- package/dist/assets/{index-ba196b4c.css → index-3fe6c000.css} +1 -1
- package/dist/assets/{index-31a6708e.js → index-de640cfd.js} +4 -4
- package/dist/assets/index-de640cfd.js.map +1 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/index-31a6708e.js.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> n8n-editor-ui@1.11.
|
|
2
|
+
> n8n-editor-ui@1.11.1 build /home/runner/work/n8n/n8n/packages/editor-ui
|
|
3
3
|
> cross-env VUE_APP_PUBLIC_PATH="/{{BASE_PATH}}/" NODE_OPTIONS="--max-old-space-size=8192" vite build
|
|
4
4
|
|
|
5
5
|
[36mvite v4.4.7 [32mbuilding for production...[36m[39m
|
|
@@ -11,22 +11,22 @@ transforming...
|
|
|
11
11
|
Generated an empty chunk: "copy-to-clipboard".
|
|
12
12
|
rendering chunks...
|
|
13
13
|
[1m[33m[plugin:vite:reporter][39m[22m [33m
|
|
14
|
-
(!) /home/runner/work/n8n/n8n/packages/
|
|
14
|
+
(!) /home/runner/work/n8n/n8n/packages/design-system/src/locale/lang/en.ts is dynamically imported by /home/runner/work/n8n/n8n/packages/design-system/src/locale/index.ts but also statically imported by /home/runner/work/n8n/n8n/packages/design-system/src/locale/index.ts, dynamic import will not move module into another chunk.
|
|
15
15
|
[39m
|
|
16
16
|
[1m[33m[plugin:vite:reporter][39m[22m [33m
|
|
17
|
-
(!) /home/runner/work/n8n/n8n/packages/editor-ui/src/
|
|
17
|
+
(!) /home/runner/work/n8n/n8n/packages/editor-ui/src/plugins/i18n/locales/en.json is dynamically imported by /home/runner/work/n8n/n8n/packages/editor-ui/src/plugins/i18n/index.ts but also statically imported by /home/runner/work/n8n/n8n/packages/editor-ui/src/plugins/i18n/index.ts, dynamic import will not move module into another chunk.
|
|
18
18
|
[39m
|
|
19
19
|
[1m[33m[plugin:vite:reporter][39m[22m [33m
|
|
20
|
-
(!) /home/runner/work/n8n/n8n/packages/editor-ui/src/components/
|
|
20
|
+
(!) /home/runner/work/n8n/n8n/packages/editor-ui/src/components/CollectionParameter.vue is dynamically imported by /home/runner/work/n8n/n8n/packages/editor-ui/src/components/ParameterInputList.vue?vue&type=script&lang.ts but also statically imported by /home/runner/work/n8n/n8n/packages/editor-ui/src/components/MultipleParameter.vue?vue&type=script&lang.ts, dynamic import will not move module into another chunk.
|
|
21
21
|
[39m
|
|
22
22
|
[1m[33m[plugin:vite:reporter][39m[22m [33m
|
|
23
|
-
(!) /home/runner/work/n8n/n8n/packages/editor-ui/src/components/
|
|
23
|
+
(!) /home/runner/work/n8n/n8n/packages/editor-ui/src/components/ParameterInputList.vue is dynamically imported by /home/runner/work/n8n/n8n/packages/editor-ui/src/components/CollectionParameter.vue?vue&type=script&lang.ts, /home/runner/work/n8n/n8n/packages/editor-ui/src/components/FixedCollectionParameter.vue?vue&type=script&lang.ts but also statically imported by /home/runner/work/n8n/n8n/packages/editor-ui/src/components/NodeSettings.vue?vue&type=script&lang.ts, /home/runner/work/n8n/n8n/packages/editor-ui/src/components/SettingsLogStreaming/EventDestinationSettingsModal.ee.vue?vue&type=script&lang.ts, dynamic import will not move module into another chunk.
|
|
24
24
|
[39m
|
|
25
25
|
[1m[33m[plugin:vite:reporter][39m[22m [33m
|
|
26
|
-
(!) /home/runner/work/n8n/n8n/packages/
|
|
26
|
+
(!) /home/runner/work/n8n/n8n/packages/editor-ui/src/components/RunDataHtml.vue is dynamically imported by /home/runner/work/n8n/n8n/packages/editor-ui/src/components/RunData.vue?vue&type=script&lang.ts but also statically imported by /home/runner/work/n8n/n8n/packages/editor-ui/src/components/BinaryDataDisplayEmbed.vue?vue&type=script&lang.ts, dynamic import will not move module into another chunk.
|
|
27
27
|
[39m
|
|
28
28
|
[1m[33m[plugin:vite:reporter][39m[22m [33m
|
|
29
|
-
(!) /home/runner/work/n8n/n8n/packages/editor-ui/src/
|
|
29
|
+
(!) /home/runner/work/n8n/n8n/packages/editor-ui/src/components/RunDataAi/RunDataAi.vue is dynamically imported by /home/runner/work/n8n/n8n/packages/editor-ui/src/components/WorkflowLMChat.vue?vue&type=script&lang.ts but also statically imported by /home/runner/work/n8n/n8n/packages/editor-ui/src/components/OutputPanel.vue?vue&type=script&lang.ts, dynamic import will not move module into another chunk.
|
|
30
30
|
[39m
|
|
31
31
|
computing gzip size...
|
|
32
32
|
[2mdist/[22m[2massets/[22m[32minfisical-579b5f23.webp [39m[1m[2m 1.56 kB[22m[1m[22m
|
|
@@ -52,7 +52,7 @@ computing gzip size...
|
|
|
52
52
|
[2mdist/[22m[2massets/[22m[35mRunDataSchema-f2410c09.css [39m[1m[2m 3.65 kB[22m[1m[22m[2m │ gzip: 0.98 kB[22m
|
|
53
53
|
[2mdist/[22m[2massets/[22m[35mNodeCreator-5b1747f6.css [39m[1m[2m 13.26 kB[22m[1m[22m[2m │ gzip: 2.78 kB[22m
|
|
54
54
|
[2mdist/[22m[2massets/[22m[35mn8n-90e057ec.css [39m[1m[2m 59.68 kB[22m[1m[22m[2m │ gzip: 9.14 kB[22m
|
|
55
|
-
[2mdist/[22m[2massets/[22m[35mindex-
|
|
55
|
+
[2mdist/[22m[2massets/[22m[35mindex-3fe6c000.css [39m[1m[2m 482.89 kB[22m[1m[22m[2m │ gzip: 65.52 kB[22m
|
|
56
56
|
[2mdist/[22m[2massets/[22m[36mcopy-to-clipboard-4ed993c7.js [39m[1m[2m 0.06 kB[22m[1m[22m[2m │ gzip: 0.08 kB[22m[2m │ map: 0.11 kB[22m
|
|
57
57
|
[2mdist/[22m[2massets/[22m[36mxss-13bb1452.js [39m[1m[2m 0.07 kB[22m[1m[22m[2m │ gzip: 0.09 kB[22m[2m │ map: 0.10 kB[22m
|
|
58
58
|
[2mdist/[22m[2massets/[22m[36maxios-13bb1452.js [39m[1m[2m 0.07 kB[22m[1m[22m[2m │ gzip: 0.09 kB[22m[2m │ map: 0.10 kB[22m
|
|
@@ -69,16 +69,16 @@ computing gzip size...
|
|
|
69
69
|
[2mdist/[22m[2massets/[22m[36mfile-saver-72ac5ed0.js [39m[1m[2m 2.64 kB[22m[1m[22m[2m │ gzip: 1.27 kB[22m[2m │ map: 5.91 kB[22m
|
|
70
70
|
[2mdist/[22m[2massets/[22m[36mv3-infinite-loading-fc34d34c.js [39m[1m[2m 2.88 kB[22m[1m[22m[2m │ gzip: 1.37 kB[22m[2m │ map: 8.03 kB[22m
|
|
71
71
|
[2mdist/[22m[2massets/[22m[36mpinia-2bcabc60.js [39m[1m[2m 4.36 kB[22m[1m[22m[2m │ gzip: 2.18 kB[22m[2m │ map: 85.29 kB[22m
|
|
72
|
-
[2mdist/[22m[2massets/[22m[36mRunDataJsonActions-
|
|
72
|
+
[2mdist/[22m[2massets/[22m[36mRunDataJsonActions-7a4f15c3.js [39m[1m[2m 5.08 kB[22m[1m[22m[2m │ gzip: 2.13 kB[22m[2m │ map: 10.72 kB[22m
|
|
73
73
|
[2mdist/[22m[2massets/[22m[36mvue3-touch-events-ee55ce04.js [39m[1m[2m 5.22 kB[22m[1m[22m[2m │ gzip: 1.73 kB[22m[2m │ map: 23.65 kB[22m
|
|
74
74
|
[2mdist/[22m[2massets/[22m[36m@vueuse/core-368199ac.js [39m[1m[2m 5.24 kB[22m[1m[22m[2m │ gzip: 2.22 kB[22m[2m │ map: 297.50 kB[22m
|
|
75
|
-
[2mdist/[22m[2massets/[22m[36mRunDataSchema-
|
|
76
|
-
[2mdist/[22m[2massets/[22m[36mRunDataJson-
|
|
77
|
-
[2mdist/[22m[2massets/[22m[36mNodeCreation-
|
|
75
|
+
[2mdist/[22m[2massets/[22m[36mRunDataSchema-f3167927.js [39m[1m[2m 6.44 kB[22m[1m[22m[2m │ gzip: 2.70 kB[22m[2m │ map: 12.63 kB[22m
|
|
76
|
+
[2mdist/[22m[2massets/[22m[36mRunDataJson-91197c1c.js [39m[1m[2m 6.72 kB[22m[1m[22m[2m │ gzip: 2.50 kB[22m[2m │ map: 11.53 kB[22m
|
|
77
|
+
[2mdist/[22m[2massets/[22m[36mNodeCreation-4c3cc577.js [39m[1m[2m 6.99 kB[22m[1m[22m[2m │ gzip: 3.18 kB[22m[2m │ map: 21.50 kB[22m
|
|
78
78
|
[2mdist/[22m[2massets/[22m[36m@fortawesome/vue-fontawesome-dcced0a8.js [39m[1m[2m 7.06 kB[22m[1m[22m[2m │ gzip: 2.62 kB[22m[2m │ map: 29.96 kB[22m
|
|
79
|
-
[2mdist/[22m[2massets/[22m[36mFixedCollectionParameter-
|
|
79
|
+
[2mdist/[22m[2massets/[22m[36mFixedCollectionParameter-cbe09134.js [39m[1m[2m 8.44 kB[22m[1m[22m[2m │ gzip: 2.81 kB[22m[2m │ map: 18.41 kB[22m
|
|
80
80
|
[2mdist/[22m[2massets/[22m[36m@jsplumb/util-d5a5fff8.js [39m[1m[2m 9.69 kB[22m[1m[22m[2m │ gzip: 3.64 kB[22m[2m │ map: 44.96 kB[22m
|
|
81
|
-
[2mdist/[22m[2massets/[22m[36mRunDataTable-
|
|
81
|
+
[2mdist/[22m[2massets/[22m[36mRunDataTable-5d32c9a9.js [39m[1m[2m 11.99 kB[22m[1m[22m[2m │ gzip: 4.29 kB[22m[2m │ map: 31.89 kB[22m
|
|
82
82
|
[2mdist/[22m[2massets/[22m[36mvue-agile-797a57bf.js [39m[1m[2m 12.28 kB[22m[1m[22m[2m │ gzip: 3.57 kB[22m[2m │ map: 36.62 kB[22m
|
|
83
83
|
[2mdist/[22m[2massets/[22m[36m@jsplumb/connector-bezier-c43fa575.js [39m[1m[2m 14.59 kB[22m[1m[22m[2m │ gzip: 5.10 kB[22m[2m │ map: 64.38 kB[22m
|
|
84
84
|
[2mdist/[22m[2massets/[22m[36mvue-json-pretty-34c0a099.js [39m[1m[2m 15.98 kB[22m[1m[22m[2m │ gzip: 5.35 kB[22m[2m │ map: 34.46 kB[22m
|
|
@@ -87,7 +87,7 @@ computing gzip size...
|
|
|
87
87
|
[2mdist/[22m[2massets/[22m[36m@fortawesome/fontawesome-svg-core-984d6dde.js [39m[1m[2m 25.94 kB[22m[1m[22m[2m │ gzip: 8.94 kB[22m[2m │ map: 109.05 kB[22m
|
|
88
88
|
[2mdist/[22m[2massets/[22m[36m@lezer/common-4a878264.js [39m[1m[2m 26.37 kB[22m[1m[22m[2m │ gzip: 9.09 kB[22m[2m │ map: 124.11 kB[22m
|
|
89
89
|
[2mdist/[22m[2massets/[22m[36mlodash-es-042bfc73.js [39m[1m[2m 33.77 kB[22m[1m[22m[2m │ gzip: 12.76 kB[22m[2m │ map: 291.99 kB[22m
|
|
90
|
-
[2mdist/[22m[2massets/[22m[36mNodeCreator-
|
|
90
|
+
[2mdist/[22m[2massets/[22m[36mNodeCreator-c9cc8248.js [39m[1m[2m 38.85 kB[22m[1m[22m[2m │ gzip: 12.82 kB[22m[2m │ map: 101.75 kB[22m
|
|
91
91
|
[2mdist/[22m[2massets/[22m[36mvue-i18n-afec0ff5.js [39m[1m[2m 54.37 kB[22m[1m[22m[2m │ gzip: 17.23 kB[22m[2m │ map: 322.00 kB[22m
|
|
92
92
|
[2mdist/[22m[2massets/[22m[36mluxon-19e1de07.js [39m[1m[2m 63.53 kB[22m[1m[22m[2m │ gzip: 19.83 kB[22m[2m │ map: 344.93 kB[22m
|
|
93
93
|
[2mdist/[22m[2massets/[22m[36mprettier-51497383.js [39m[1m[2m 73.44 kB[22m[1m[22m[2m │ gzip: 24.83 kB[22m[2m │ map: 165.94 kB[22m
|
|
@@ -100,11 +100,11 @@ computing gzip size...
|
|
|
100
100
|
[2mdist/[22m[2massets/[22m[36mcodemirror-lang-html-n8n-2834c921.js [39m[1m[2m 128.75 kB[22m[1m[22m[2m │ gzip: 48.54 kB[22m[2m │ map: 219.77 kB[22m
|
|
101
101
|
[2mdist/[22m[2massets/[22m[36mesprima-next-8c7e8ff9.js [39m[1m[2m 134.74 kB[22m[1m[22m[2m │ gzip: 30.32 kB[22m[2m │ map: 437.15 kB[22m
|
|
102
102
|
[2mdist/[22m[2massets/[22m[36m@n8n/codemirror-lang-sql-c830a767.js [39m[1m[2m 301.99 kB[22m[1m[22m[2m │ gzip: 99.76 kB[22m[2m │ map: 1,274.45 kB[22m
|
|
103
|
-
[2mdist/[22m[2massets/[22m[36mindex-
|
|
103
|
+
[2mdist/[22m[2massets/[22m[36mindex-de640cfd.js [39m[1m[33m1,978.34 kB[39m[22m[2m │ gzip: 540.27 kB[22m[2m │ map: 5,047.40 kB[22m
|
|
104
104
|
[2mdist/[22m[2massets/[22m[36mn8n-57fc64d4.js [39m[1m[33m2,866.68 kB[39m[22m[2m │ gzip: 859.34 kB[22m[2m │ map: 10,724.30 kB[22m
|
|
105
105
|
[33m
|
|
106
106
|
(!) Some chunks are larger than 500 kBs after minification. Consider:
|
|
107
107
|
- Using dynamic import() to code-split the application
|
|
108
108
|
- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
|
|
109
109
|
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.[39m
|
|
110
|
-
[32m✓ built in 1m
|
|
110
|
+
[32m✓ built in 1m 17s[39m
|
package/dist/assets/{FixedCollectionParameter-4224d5c6.js → FixedCollectionParameter-cbe09134.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{cU as h,gh as P,cS as R,_ as A}from"./n8n-57fc64d4.js";import{g as C}from"./lodash-es-042bfc73.js";import{d as S,aD as I,b as u,o as l,f as o,e as m,w as f,l as U,t as j,k as r,M as y,a9 as b,c as d,g as k,aF as B,a4 as F}from"./vendor-2860876e.js";import"./@fortawesome/vue-fontawesome-dcced0a8.js";import"./@fortawesome/fontawesome-svg-core-984d6dde.js";import"./flatted-8b14da7d.js";import"./esprima-next-8c7e8ff9.js";import"./luxon-19e1de07.js";import"./pinia-2bcabc60.js";import"./vue-i18n-afec0ff5.js";import"./@jsplumb/util-d5a5fff8.js";import"./@jsplumb/core-b1470600.js";import"./@jsplumb/common-fe415eb9.js";import"./@jsplumb/connector-bezier-c43fa575.js";import"./@jsplumb/browser-ui-d5e5c8b4.js";import"./uuid-cf522c50.js";const L=I(async()=>R(()=>import("./index-
|
|
2
|
-
//# sourceMappingURL=FixedCollectionParameter-
|
|
1
|
+
import{cU as h,gh as P,cS as R,_ as A}from"./n8n-57fc64d4.js";import{g as C}from"./lodash-es-042bfc73.js";import{d as S,aD as I,b as u,o as l,f as o,e as m,w as f,l as U,t as j,k as r,M as y,a9 as b,c as d,g as k,aF as B,a4 as F}from"./vendor-2860876e.js";import"./@fortawesome/vue-fontawesome-dcced0a8.js";import"./@fortawesome/fontawesome-svg-core-984d6dde.js";import"./flatted-8b14da7d.js";import"./esprima-next-8c7e8ff9.js";import"./luxon-19e1de07.js";import"./pinia-2bcabc60.js";import"./vue-i18n-afec0ff5.js";import"./@jsplumb/util-d5a5fff8.js";import"./@jsplumb/core-b1470600.js";import"./@jsplumb/common-fe415eb9.js";import"./@jsplumb/connector-bezier-c43fa575.js";import"./@jsplumb/browser-ui-d5e5c8b4.js";import"./uuid-cf522c50.js";const L=I(async()=>R(()=>import("./index-de640cfd.js").then(e=>e.P),["assets/index-de640cfd.js","assets/vendor-2860876e.js","assets/pinia-2bcabc60.js","assets/n8n-57fc64d4.js","assets/lodash-es-042bfc73.js","assets/@fortawesome/vue-fontawesome-dcced0a8.js","assets/@fortawesome/fontawesome-svg-core-984d6dde.js","assets/flatted-8b14da7d.js","assets/esprima-next-8c7e8ff9.js","assets/luxon-19e1de07.js","assets/vue-i18n-afec0ff5.js","assets/@jsplumb/util-d5a5fff8.js","assets/@jsplumb/core-b1470600.js","assets/@jsplumb/common-fe415eb9.js","assets/@jsplumb/connector-bezier-c43fa575.js","assets/@jsplumb/browser-ui-d5e5c8b4.js","assets/uuid-cf522c50.js","assets/n8n-90e057ec.css","assets/prettier-51497383.js","assets/codemirror-lang-html-n8n-2834c921.js","assets/@n8n/codemirror-lang-sql-c830a767.js","assets/@lezer/common-4a878264.js","assets/@vueuse/core-368199ac.js","assets/codemirror-lang-n8n-expression-53c11692.js","assets/fast-json-stable-stringify-56252254.js","assets/timeago.js-a9e71aec.js","assets/qrcode.vue-65309b5b.js","assets/file-saver-72ac5ed0.js","assets/vue-json-pretty-34c0a099.js","assets/vue-markdown-render-09d350ef.js","assets/humanize-duration-58d28ac7.js","assets/v3-infinite-loading-fc34d34c.js","assets/vue-agile-797a57bf.js","assets/vue-agile-d964f598.css","assets/vue3-touch-events-ee55ce04.js","assets/@fortawesome/free-solid-svg-icons-0d1822ba.js","assets/@fortawesome/free-regular-svg-icons-74cb85f8.js","assets/index-3fe6c000.css"])),E=S({name:"FixedCollectionParameter",props:{nodeValues:{type:Object,required:!0},parameter:{type:Object,required:!0},path:{type:String,required:!0},values:{type:Object,default:()=>({})},isReadOnly:{type:Boolean,default:!1}},components:{ParameterInputList:L},data(){return{selectedOption:void 0,mutableValues:{}}},watch:{values:{handler(e){this.mutableValues=h(e)},deep:!0}},created(){this.mutableValues=h(this.values)},computed:{getPlaceholderText(){const e=this.$locale.nodeText().placeholder(this.parameter,this.path);return e||this.$locale.baseText("fixedCollectionParameter.choose")},getProperties(){const e=[];let t;for(const n of this.propertyNames)t=this.getOptionProperties(n),t!==void 0&&e.push(t);return e},multipleValues(){var e;return!!((e=this.parameter.typeOptions)!=null&&e.multipleValues)},parameterOptions(){return this.multipleValues&&P(this.parameter.options)?this.parameter.options:this.parameter.options.filter(e=>!this.propertyNames.includes(e.name))},propertyNames(){return Object.keys(this.mutableValues||{})},sortable(){var e;return!!((e=this.parameter.typeOptions)!=null&&e.sortable)}},methods:{deleteOption(e,t){const n=this.mutableValues[e];!n||n.length>1?this.$emit("valueChanged",{name:this.getPropertyPath(e,t),value:void 0}):this.$emit("valueChanged",{name:this.getPropertyPath(e),value:void 0})},getPropertyPath(e,t){return`${this.path}.${e}`+(t!==void 0?`[${t}]`:"")},getOptionProperties(e){if(P(this.parameter.options)){for(const t of this.parameter.options)if(t.name===e)return t}},moveOptionDown(e,t){Array.isArray(this.mutableValues[e])&&this.mutableValues[e].splice(t+1,0,this.mutableValues[e].splice(t,1)[0]);const n={name:this.getPropertyPath(e),value:this.mutableValues[e]};this.$emit("valueChanged",n)},moveOptionUp(e,t){var i;Array.isArray(this.mutableValues[e])&&((i=this.mutableValues)==null||i[e].splice(t-1,0,this.mutableValues[e].splice(t,1)[0]));const n={name:this.getPropertyPath(e),value:this.mutableValues[e]};this.$emit("valueChanged",n)},optionSelected(e){const t=this.getOptionProperties(e);if(t===void 0)return;const n=`${this.path}.${t.name}`,i={};for(const s of t.values)s.type==="fixedCollection"&&s.typeOptions!==void 0&&s.typeOptions.multipleValues===!0?i[s.name]={}:s.typeOptions!==void 0&&s.typeOptions.multipleValues===!0?(i[s.name]=C(this.nodeValues,`${this.path}.${s.name}`,[]),Array.isArray(s.default)?i[s.name].push(...h(s.default)):s.default!==""&&typeof s.default!="object"&&i[s.name].push(h(s.default))):i[s.name]=h(s.default);let c;this.multipleValues?(c=C(this.nodeValues,n,[]),c.push(i)):c=i;const V={name:n,value:c};this.$emit("valueChanged",V),this.selectedOption=void 0},valueChanged(e){this.$emit("valueChanged",e)}}});const q={key:0,class:"no-items-exist"},z={key:1},M={class:"parameter-item-wrapper"},N={key:0,class:"delete-option"},K={key:0,class:"sort-icon"},G={key:2,class:"parameter-item"},H={class:"parameter-item-wrapper"},J={key:0,class:"delete-option"},Q={key:1},W={key:1,class:"add-option"};function X(e,t,n,i,c,V){const s=u("n8n-text"),$=u("n8n-input-label"),v=u("font-awesome-icon"),g=u("parameter-input-list"),_=u("n8n-button"),w=u("n8n-option"),T=u("n8n-select");return l(),o("div",{onKeydown:t[2]||(t[2]=F(()=>{},["stop"])),class:"fixed-collection-parameter"},[e.getProperties.length===0?(l(),o("div",q,[m(s,{size:"small"},{default:f(()=>[U(j(e.$locale.baseText("fixedCollectionParameter.currentlyNoItemsExist")),1)]),_:1})])):r("",!0),(l(!0),o(y,null,b(e.getProperties,a=>(l(),o("div",{key:a.name,class:"fixed-collection-parameter-property"},[a.displayName!==""&&e.parameter.options&&e.parameter.options.length!==1?(l(),d($,{key:0,label:e.$locale.nodeText().inputLabelDisplayName(a,e.path),underline:!0,size:"small",color:"text-dark"},null,8,["label"])):r("",!0),e.multipleValues?(l(),o("div",z,[(l(!0),o(y,null,b(e.mutableValues[a.name],(D,p)=>(l(),o("div",{key:a.name+p,class:"parameter-item"},[k("div",M,[e.isReadOnly?r("",!0):(l(),o("div",N,[m(v,{icon:"trash",class:"reset-icon clickable",title:e.$locale.baseText("fixedCollectionParameter.deleteItem"),onClick:O=>e.deleteOption(a.name,p)},null,8,["title","onClick"]),e.sortable?(l(),o("div",K,[p!==0?(l(),d(v,{key:0,icon:"angle-up",class:"clickable",title:e.$locale.baseText("fixedCollectionParameter.moveUp"),onClick:O=>e.moveOptionUp(a.name,p)},null,8,["title","onClick"])):r("",!0),p!==e.mutableValues[a.name].length-1?(l(),d(v,{key:1,icon:"angle-down",class:"clickable",title:e.$locale.baseText("fixedCollectionParameter.moveDown"),onClick:O=>e.moveOptionDown(a.name,p)},null,8,["title","onClick"])):r("",!0)])):r("",!0)])),(l(),d(B,null,{default:f(()=>[m(g,{parameters:a.values,nodeValues:e.nodeValues,path:e.getPropertyPath(a.name,p),hideDelete:!0,isReadOnly:e.isReadOnly,onValueChanged:e.valueChanged},null,8,["parameters","nodeValues","path","isReadOnly","onValueChanged"])]),_:2},1024))])]))),128))])):(l(),o("div",G,[k("div",H,[e.isReadOnly?r("",!0):(l(),o("div",J,[m(v,{icon:"trash",class:"reset-icon clickable",title:e.$locale.baseText("fixedCollectionParameter.deleteItem"),onClick:D=>e.deleteOption(a.name)},null,8,["title","onClick"])])),m(g,{parameters:a.values,nodeValues:e.nodeValues,path:e.getPropertyPath(a.name),isReadOnly:e.isReadOnly,class:"parameter-item",onValueChanged:e.valueChanged,hideDelete:!0},null,8,["parameters","nodeValues","path","isReadOnly","onValueChanged"])])]))]))),128)),e.parameterOptions.length>0&&!e.isReadOnly?(l(),o("div",Q,[e.parameter.options.length===1?(l(),d(_,{key:0,type:"tertiary",block:"",onClick:t[0]||(t[0]=a=>e.optionSelected(e.parameter.options[0].name)),label:e.getPlaceholderText},null,8,["label"])):(l(),o("div",W,[m(T,{modelValue:e.selectedOption,"onUpdate:modelValue":[t[1]||(t[1]=a=>e.selectedOption=a),e.optionSelected],placeholder:e.getPlaceholderText,size:"small",filterable:""},{default:f(()=>[(l(!0),o(y,null,b(e.parameterOptions,a=>(l(),d(w,{key:a.name,label:e.$locale.nodeText().collectionOptionDisplayName(e.parameter,a,e.path),value:a.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder","onUpdate:modelValue"])]))])):r("",!0)],32)}const ce=A(E,[["render",X],["__scopeId","data-v-6c773ca7"]]);export{ce as default};
|
|
2
|
+
//# sourceMappingURL=FixedCollectionParameter-cbe09134.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"suBAkIA,MAAMA,EAAqBC,EAAqB,SAAYC,EAAA,WAAO,qBAA0B,eAAC,y3CAE9FC,EAAeC,EAAgB,CAC9B,KAAM,2BACN,MAAO,CACN,WAAY,CACX,KAAM,OACN,SAAU,EACX,EACA,UAAW,CACV,KAAM,OACN,SAAU,EACX,EACA,KAAM,CACL,KAAM,OACN,SAAU,EACX,EACA,OAAQ,CACP,KAAM,OACN,QAAS,KAAO,GACjB,EACA,WAAY,CACX,KAAM,QACN,QAAS,EACV,CACD,EACA,WAAY,CACX,mBAAAJ,CACD,EACA,MAAO,CACC,OACN,eAAgB,OAChB,cAAe,CAAC,EAElB,EACA,MAAO,CACN,OAAQ,CACP,QAAQK,EAA8C,CAChD,mBAAgBC,EAASD,CAAS,CACxC,EACA,KAAM,EACP,CACD,EACA,SAAU,CACJ,mBAAgBC,EAAS,KAAK,MAAM,CAC1C,EACA,SAAU,CACT,oBAA6B,CACtB,MAAAC,EAAc,KAAK,QAAQ,WAAW,YAAY,KAAK,UAAW,KAAK,IAAI,EACjF,OAAOA,GAA4B,KAAK,QAAQ,SAAS,iCAAiC,CAC3F,EACA,eAA2C,CAC1C,MAAMC,EAAmB,GACrB,IAAAC,EACO,UAAAC,KAAQ,KAAK,cACND,EAAA,KAAK,oBAAoBC,CAAI,EAC1CD,IAAmB,QACtBD,EAAiB,KAAKC,CAAc,EAG/B,OAAAD,CACR,EACA,gBAA0B,OACzB,MAAO,CAAC,GAACG,EAAA,KAAK,UAAU,cAAf,MAAAA,EAA4B,eACtC,EAEA,kBAA8C,CAC7C,OAAI,KAAK,gBAAkBC,EAA8B,KAAK,UAAU,OAAO,EACvE,KAAK,UAAU,QAGf,KAAK,UAAU,QAAsC,OAAQC,GAC7D,CAAC,KAAK,cAAc,SAASA,EAAO,IAAI,CAC/C,CACF,EACA,eAA0B,CACzB,OAAO,OAAO,KAAK,KAAK,eAAiB,CAAE,EAC5C,EACA,UAAoB,OACnB,MAAO,CAAC,GAACF,EAAA,KAAK,UAAU,cAAf,MAAAA,EAA4B,SACtC,CACD,EACA,QAAS,CACR,aAAaG,EAAoBC,EAAgB,CAC1C,MAAAC,EAA2B,KAAK,cAAcF,CAAU,EAC1D,CAACE,GAA4BA,EAAyB,OAAS,EAElE,KAAK,MAAM,eAAgB,CAC1B,KAAM,KAAK,gBAAgBF,EAAYC,CAAK,EAC5C,MAAO,OACP,EAGD,KAAK,MAAM,eAAgB,CAC1B,KAAM,KAAK,gBAAgBD,CAAU,EACrC,MAAO,OACP,CAEH,EACA,gBAAgBJ,EAAcK,EAAgB,CACtC,SAAG,KAAK,IAAI,IAAIL,CAAI,IAAMK,IAAU,OAAY,IAAIA,CAAK,IAAM,GACvE,EACA,oBAAoBD,EAAyD,CAC5E,GAAIF,EAA8B,KAAK,UAAU,OAAO,GAC5C,UAAAC,KAAU,KAAK,UAAU,QAC/B,GAAAA,EAAO,OAASC,EACZ,OAAAD,EAKX,EACA,eAAeC,EAAoBC,EAAe,CAC7C,MAAM,QAAQ,KAAK,cAAcD,CAAU,CAAC,GAC1C,mBAAcA,CAAU,EAAE,OAC9BC,EAAQ,EACR,EACA,KAAK,cAAcD,CAAU,EAAE,OAAOC,EAAO,CAAC,EAAE,CAAC,GAInD,MAAME,EAAgB,CACrB,KAAM,KAAK,gBAAgBH,CAAU,EACrC,MAAO,KAAK,cAAcA,CAAU,GAGhC,WAAM,eAAgBG,CAAa,CACzC,EACA,aAAaH,EAAoBC,EAAe,OAC3C,MAAM,QAAQ,KAAK,cAAcD,CAAU,CAAC,KAC1CH,EAAA,2BAAAA,EAAgBG,GAAY,OAChCC,EAAQ,EACR,EACA,KAAK,cAAcD,CAAU,EAAE,OAAOC,EAAO,CAAC,EAAE,CAAC,IAInD,MAAME,EAAgB,CACrB,KAAM,KAAK,gBAAgBH,CAAU,EACrC,MAAO,KAAK,cAAcA,CAAU,GAGhC,WAAM,eAAgBG,CAAa,CACzC,EACA,eAAeH,EAAoB,CAC5B,MAAAD,EAAS,KAAK,oBAAoBC,CAAU,EAClD,GAAID,IAAW,OACd,OAED,MAAMH,EAAO,GAAG,KAAK,IAAI,IAAIG,EAAO,IAAI,GAElCK,EAAqC,GAEhC,UAAAC,KAAmBN,EAAO,OAEnCM,EAAgB,OAAS,mBACzBA,EAAgB,cAAgB,QAChCA,EAAgB,YAAY,iBAAmB,GAE7BD,EAAAC,EAAgB,IAAI,EAAI,GAE1CA,EAAgB,cAAgB,QAChCA,EAAgB,YAAY,iBAAmB,IAG7BD,EAAAC,EAAgB,IAAI,EAAIC,EACzC,KAAK,WACL,GAAG,KAAK,IAAI,IAAID,EAAgB,IAAI,GACpC,CAAC,GAEE,MAAM,QAAQA,EAAgB,OAAO,EACvCD,EAAkBC,EAAgB,IAAI,EAAwB,KAC9D,GAAGb,EAASa,EAAgB,OAA4B,GAGzDA,EAAgB,UAAY,IAC5B,OAAOA,EAAgB,SAAY,UAElCD,EAAkBC,EAAgB,IAAI,EAA2B,KACjEb,EAASa,EAAgB,OAAO,IAKlCD,EAAkBC,EAAgB,IAAI,EAAIb,EAASa,EAAgB,OAAO,EAIxE,IAAAE,EACA,KAAK,gBACRA,EAAWD,EAAI,KAAK,WAAYV,EAAM,CAAuB,GAE7DW,EAAS,KAAKH,CAAiB,GAEpBG,EAAAH,EAGZ,MAAMD,EAAgB,CACrB,KAAAP,EACA,MAAOW,CAAA,EAGH,WAAM,eAAgBJ,CAAa,EACxC,KAAK,eAAiB,MACvB,EACA,aAAaA,EAAmC,CAC1C,WAAM,eAAgBA,CAAa,CACzC,CACD,CACD,CAAC,QAjVwCK,EAAM,4EAyBpCC,EAAM,8BAOWC,EAAM,0BA8BnBC,EAAM,kEAEXC,EAAM,wCA6BDC,EAAM,2LA9FpBC,EA+GM,cA/GkB,OAAAC,EAAA,EAA6BC,EAAA,iBAAAC,EAAA,KAAAA,EAAA,GAAAC,EAAA,kBACzC,qCACVC,EAAA,cAEa,SAAX,GAAAJ,EAAA,EAAAC,EAAA,MAAAR,EAAA,CAAAY,EAAAC,EAAA,MADD,SAAQ,SAAAC,EAAA,yFAIV,IAAAC,EAAA,QAAAR,EAEO,IAASC,EAAIQ,EAAA,KAAAC,EAAAN,EAAA,cAAAO,IACdX,EAAA,EAAsCC,EAAA,WAAAU,EAAA,KAGpC,8CACEA,EAAA,kBAAAP,EAAA,mBAAAA,EAAA,8BAAAJ,EAAA,EAAAY,EAAQC,EAAiC,CAChD,MACD,MAAKT,EAAO,yCAAAO,EAAAP,EAAA,MACZ,UAAM,iCAEI,iBAAc,CAAzB,GAAAI,EAAA,OAAAJ,EAAA,gBAAAJ,EAAA,EAAAC,EACC,MAyCMa,EAAA,EAAAd,EAvCC,IAASC,EAAYQ,EAAA,KAAAC,EAAAN,EAAA,cAAAO,EAAA,OAAAI,EAAA7B,KACtBc,EAAA,EAAiBC,EAAA,WAAAU,EAAA,KAAAzB,EAEtB,yBACC8B,EAAA,MAAAC,EAAA,CAAAb,EACC,WA+BEI,EAAA,UA9BW,EAAAP,EAAA,MAAAP,EAAA,CAAAW,EACNa,EAAsB,CAC3B,KAAK,QACL,MAAK,6BAAAd,EAAA,wDAEI,QAAQe,GAAAf,EAAA,aAAAO,EAAA,KAAAzB,CAAA,CAAnB,8BAOGkB,EAAA,UAAAJ,EAAA,EAAAC,EAAA,MAAAN,EAAA,CAAAT,IAAA,GAAAc,IAJcY,EAAAM,EAAA,CACf,IAAK,EACJ,KAAK,WACL,MAAK,kBAAAd,EAAA,yFAGK,KAAK,EAAc,sBAAAI,EAD/B,GAME,IAAAtB,IAAAkB,EAAA,cAAAO,EAAA,gBAAAX,IAJgBY,EAAAM,EAAA,CACjB,IAAK,EACJ,KAAK,aACL,MAAK,kBAAAd,EAAA,8IAYN,KAAAJ,IAAAY,EAAAQ,EAAA,cANAb,EAAY,IAAQ,CAAAF,EACVgB,EAAY,CACtB,WAAMV,EAAA,OACN,WAAYP,EAAI,WAChB,OAAU,gBAAYO,EAAA,KAAAzB,CAAA,EACtB,yBAAAkB,EAAA,mJAQwC,EAAAH,EAAA,MAAAL,EAAA,CAA5CoB,EAAA,MAAAM,EAAA,CAAAlB,EACC,WAQCI,EAAqB,GAAM,OAPf,EAAAP,EAAA,MAAAJ,EAAA,CAAAQ,EACNa,EAAsB,CAC3B,KAAK,QACL,MAAK,6BAAAd,EAAA,sHAGR,IAC6BC,EACjBgB,EAAY,CACtB,WAAMV,EAAA,OACN,WAAYP,EAAA,WACb,KAAKA,EAAC,gBAAgBO,EAAA,MACrB,WAAcP,EAAA,WACd,sCAAAA,EAAA,yGAMM,WAEOA,EAAA,wBAAQ,GAAM,CAK7BA,EAAA,YAAAJ,EAAA,EAAAC,EAAA,MAAAsB,EAAA,CAAAnB,EAAA,8BAAAJ,EAJc,EAAAY,EAAAY,EAAA,CACf,IAAK,EACJ,gBACA,MAAO,WAAAtB,EAAA,KAAAA,EAAA,GAAAiB,GAAAf,EAAA,eAAAA,EAAA,sDAGR,iBAaa,CAZW,IAAAJ,IAAAC,EAAA,MAAAH,EAAA,CAAAO,EAAAoB,EAAA,6BAGW,uBAAAvB,EAAA,KAAAA,EAAA,GAAAiB,GAAAf,EAAA,eAAAe,GAFjCf,EAAA,cACD,EAEA,YAAUA,EAAA,gEAIHJ,EAAA,EAAK,EAAIC,EAAAQ,EAAA,KAAAC,EAAAN,EAAA,iBAAAsB,IACT1B,EAAA,EAAUY,EAAWe,EAAA,CAC1B,IAAKD,EAAE,WAAAtB,EAAA,+CAAAA,EAAA,UAAAsB,EAAAtB,EAAA","names":["ParameterInputList","defineAsyncComponent","__vitePreload","_sfc_main","defineComponent","newValues","deepCopy","placeholder","returnProperties","tempProperties","name","_a","isINodePropertyCollectionList","option","optionName","index","currentOptionsOfSameType","parameterData","newParameterValue","optionParameter","get","newValue","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_8","_hoisted_10","_resolveComponent","_openBlock","_createElementBlock","_cache","_withModifiers","_ctx","_createVNode","_component_n8n_text","_withCtx","_createCommentVNode","_Fragment","_renderList","property","_createBlock","_component_n8n_input_label","_hoisted_2","value","_createElementVNode","_hoisted_3","_component_font_awesome_icon","$event","_Suspense","_component_parameter_input_list","_hoisted_7","_hoisted_9","_component_n8n_button","_component_n8n_select","item","_component_n8n_option"],"sources":["../../src/components/FixedCollectionParameter.vue"],"sourcesContent":["<template>\n\t<div @keydown.stop class=\"fixed-collection-parameter\">\n\t\t<div v-if=\"getProperties.length === 0\" class=\"no-items-exist\">\n\t\t\t<n8n-text size=\"small\">{{\n\t\t\t\t$locale.baseText('fixedCollectionParameter.currentlyNoItemsExist')\n\t\t\t}}</n8n-text>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-for=\"property in getProperties\"\n\t\t\t:key=\"property.name\"\n\t\t\tclass=\"fixed-collection-parameter-property\"\n\t\t>\n\t\t\t<n8n-input-label\n\t\t\t\tv-if=\"property.displayName !== '' && parameter.options && parameter.options.length !== 1\"\n\t\t\t\t:label=\"$locale.nodeText().inputLabelDisplayName(property, path)\"\n\t\t\t\t:underline=\"true\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tcolor=\"text-dark\"\n\t\t\t/>\n\t\t\t<div v-if=\"multipleValues\">\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"(value, index) in mutableValues[property.name]\"\n\t\t\t\t\t:key=\"property.name + index\"\n\t\t\t\t\tclass=\"parameter-item\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"parameter-item-wrapper\">\n\t\t\t\t\t\t<div class=\"delete-option\" v-if=\"!isReadOnly\">\n\t\t\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\t\t\ticon=\"trash\"\n\t\t\t\t\t\t\t\tclass=\"reset-icon clickable\"\n\t\t\t\t\t\t\t\t:title=\"$locale.baseText('fixedCollectionParameter.deleteItem')\"\n\t\t\t\t\t\t\t\t@click=\"deleteOption(property.name, index)\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div v-if=\"sortable\" class=\"sort-icon\">\n\t\t\t\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\t\t\t\tv-if=\"index !== 0\"\n\t\t\t\t\t\t\t\t\ticon=\"angle-up\"\n\t\t\t\t\t\t\t\t\tclass=\"clickable\"\n\t\t\t\t\t\t\t\t\t:title=\"$locale.baseText('fixedCollectionParameter.moveUp')\"\n\t\t\t\t\t\t\t\t\t@click=\"moveOptionUp(property.name, index)\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\t\t\t\tv-if=\"index !== mutableValues[property.name].length - 1\"\n\t\t\t\t\t\t\t\t\ticon=\"angle-down\"\n\t\t\t\t\t\t\t\t\tclass=\"clickable\"\n\t\t\t\t\t\t\t\t\t:title=\"$locale.baseText('fixedCollectionParameter.moveDown')\"\n\t\t\t\t\t\t\t\t\t@click=\"moveOptionDown(property.name, index)\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Suspense>\n\t\t\t\t\t\t\t<parameter-input-list\n\t\t\t\t\t\t\t\t:parameters=\"property.values\"\n\t\t\t\t\t\t\t\t:nodeValues=\"nodeValues\"\n\t\t\t\t\t\t\t\t:path=\"getPropertyPath(property.name, index)\"\n\t\t\t\t\t\t\t\t:hideDelete=\"true\"\n\t\t\t\t\t\t\t\t:isReadOnly=\"isReadOnly\"\n\t\t\t\t\t\t\t\t@valueChanged=\"valueChanged\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Suspense>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else class=\"parameter-item\">\n\t\t\t\t<div class=\"parameter-item-wrapper\">\n\t\t\t\t\t<div class=\"delete-option\" v-if=\"!isReadOnly\">\n\t\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\t\ticon=\"trash\"\n\t\t\t\t\t\t\tclass=\"reset-icon clickable\"\n\t\t\t\t\t\t\t:title=\"$locale.baseText('fixedCollectionParameter.deleteItem')\"\n\t\t\t\t\t\t\t@click=\"deleteOption(property.name)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<parameter-input-list\n\t\t\t\t\t\t:parameters=\"property.values\"\n\t\t\t\t\t\t:nodeValues=\"nodeValues\"\n\t\t\t\t\t\t:path=\"getPropertyPath(property.name)\"\n\t\t\t\t\t\t:isReadOnly=\"isReadOnly\"\n\t\t\t\t\t\tclass=\"parameter-item\"\n\t\t\t\t\t\t@valueChanged=\"valueChanged\"\n\t\t\t\t\t\t:hideDelete=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"parameterOptions.length > 0 && !isReadOnly\">\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"parameter.options.length === 1\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\tblock\n\t\t\t\t@click=\"optionSelected(parameter.options[0].name)\"\n\t\t\t\t:label=\"getPlaceholderText\"\n\t\t\t/>\n\t\t\t<div v-else class=\"add-option\">\n\t\t\t\t<n8n-select\n\t\t\t\t\tv-model=\"selectedOption\"\n\t\t\t\t\t:placeholder=\"getPlaceholderText\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t@update:modelValue=\"optionSelected\"\n\t\t\t\t\tfilterable\n\t\t\t\t>\n\t\t\t\t\t<n8n-option\n\t\t\t\t\t\tv-for=\"item in parameterOptions\"\n\t\t\t\t\t\t:key=\"item.name\"\n\t\t\t\t\t\t:label=\"$locale.nodeText().collectionOptionDisplayName(parameter, item, path)\"\n\t\t\t\t\t\t:value=\"item.name\"\n\t\t\t\t\t></n8n-option>\n\t\t\t\t</n8n-select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineAsyncComponent, defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport type { IUpdateInformation } from '@/Interface';\n\nimport type {\n\tINodeParameters,\n\tINodeProperties,\n\tINodePropertyCollection,\n\tNodeParameterValue,\n} from 'n8n-workflow';\nimport { deepCopy, isINodePropertyCollectionList } from 'n8n-workflow';\n\nimport { get } from 'lodash-es';\n\nconst ParameterInputList = defineAsyncComponent(async () => import('./ParameterInputList.vue'));\n\nexport default defineComponent({\n\tname: 'FixedCollectionParameter',\n\tprops: {\n\t\tnodeValues: {\n\t\t\ttype: Object as PropType<Record<string, INodeParameters[]>>,\n\t\t\trequired: true,\n\t\t},\n\t\tparameter: {\n\t\t\ttype: Object as PropType<INodeProperties>,\n\t\t\trequired: true,\n\t\t},\n\t\tpath: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalues: {\n\t\t\ttype: Object as PropType<Record<string, INodeParameters[]>>,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tisReadOnly: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomponents: {\n\t\tParameterInputList,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tselectedOption: undefined,\n\t\t\tmutableValues: {} as Record<string, INodeParameters[]>,\n\t\t};\n\t},\n\twatch: {\n\t\tvalues: {\n\t\t\thandler(newValues: Record<string, INodeParameters[]>) {\n\t\t\t\tthis.mutableValues = deepCopy(newValues);\n\t\t\t},\n\t\t\tdeep: true,\n\t\t},\n\t},\n\tcreated() {\n\t\tthis.mutableValues = deepCopy(this.values);\n\t},\n\tcomputed: {\n\t\tgetPlaceholderText(): string {\n\t\t\tconst placeholder = this.$locale.nodeText().placeholder(this.parameter, this.path);\n\t\t\treturn placeholder ? placeholder : this.$locale.baseText('fixedCollectionParameter.choose');\n\t\t},\n\t\tgetProperties(): INodePropertyCollection[] {\n\t\t\tconst returnProperties = [];\n\t\t\tlet tempProperties;\n\t\t\tfor (const name of this.propertyNames) {\n\t\t\t\ttempProperties = this.getOptionProperties(name);\n\t\t\t\tif (tempProperties !== undefined) {\n\t\t\t\t\treturnProperties.push(tempProperties);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn returnProperties;\n\t\t},\n\t\tmultipleValues(): boolean {\n\t\t\treturn !!this.parameter.typeOptions?.multipleValues;\n\t\t},\n\n\t\tparameterOptions(): INodePropertyCollection[] {\n\t\t\tif (this.multipleValues && isINodePropertyCollectionList(this.parameter.options)) {\n\t\t\t\treturn this.parameter.options;\n\t\t\t}\n\n\t\t\treturn (this.parameter.options as INodePropertyCollection[]).filter((option) => {\n\t\t\t\treturn !this.propertyNames.includes(option.name);\n\t\t\t});\n\t\t},\n\t\tpropertyNames(): string[] {\n\t\t\treturn Object.keys(this.mutableValues || {});\n\t\t},\n\t\tsortable(): boolean {\n\t\t\treturn !!this.parameter.typeOptions?.sortable;\n\t\t},\n\t},\n\tmethods: {\n\t\tdeleteOption(optionName: string, index?: number) {\n\t\t\tconst currentOptionsOfSameType = this.mutableValues[optionName];\n\t\t\tif (!currentOptionsOfSameType || currentOptionsOfSameType.length > 1) {\n\t\t\t\t// it's not the only option of this type, so just remove it.\n\t\t\t\tthis.$emit('valueChanged', {\n\t\t\t\t\tname: this.getPropertyPath(optionName, index),\n\t\t\t\t\tvalue: undefined,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// it's the only option, so remove the whole type\n\t\t\t\tthis.$emit('valueChanged', {\n\t\t\t\t\tname: this.getPropertyPath(optionName),\n\t\t\t\t\tvalue: undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetPropertyPath(name: string, index?: number) {\n\t\t\treturn `${this.path}.${name}` + (index !== undefined ? `[${index}]` : '');\n\t\t},\n\t\tgetOptionProperties(optionName: string): INodePropertyCollection | undefined {\n\t\t\tif (isINodePropertyCollectionList(this.parameter.options)) {\n\t\t\t\tfor (const option of this.parameter.options) {\n\t\t\t\t\tif (option.name === optionName) {\n\t\t\t\t\t\treturn option;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tmoveOptionDown(optionName: string, index: number) {\n\t\t\tif (Array.isArray(this.mutableValues[optionName])) {\n\t\t\t\tthis.mutableValues[optionName].splice(\n\t\t\t\t\tindex + 1,\n\t\t\t\t\t0,\n\t\t\t\t\tthis.mutableValues[optionName].splice(index, 1)[0],\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst parameterData = {\n\t\t\t\tname: this.getPropertyPath(optionName),\n\t\t\t\tvalue: this.mutableValues[optionName],\n\t\t\t};\n\n\t\t\tthis.$emit('valueChanged', parameterData);\n\t\t},\n\t\tmoveOptionUp(optionName: string, index: number) {\n\t\t\tif (Array.isArray(this.mutableValues[optionName])) {\n\t\t\t\tthis.mutableValues?.[optionName].splice(\n\t\t\t\t\tindex - 1,\n\t\t\t\t\t0,\n\t\t\t\t\tthis.mutableValues[optionName].splice(index, 1)[0],\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst parameterData = {\n\t\t\t\tname: this.getPropertyPath(optionName),\n\t\t\t\tvalue: this.mutableValues[optionName],\n\t\t\t};\n\n\t\t\tthis.$emit('valueChanged', parameterData);\n\t\t},\n\t\toptionSelected(optionName: string) {\n\t\t\tconst option = this.getOptionProperties(optionName);\n\t\t\tif (option === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst name = `${this.path}.${option.name}`;\n\n\t\t\tconst newParameterValue: INodeParameters = {};\n\n\t\t\tfor (const optionParameter of option.values) {\n\t\t\t\tif (\n\t\t\t\t\toptionParameter.type === 'fixedCollection' &&\n\t\t\t\t\toptionParameter.typeOptions !== undefined &&\n\t\t\t\t\toptionParameter.typeOptions.multipleValues === true\n\t\t\t\t) {\n\t\t\t\t\tnewParameterValue[optionParameter.name] = {};\n\t\t\t\t} else if (\n\t\t\t\t\toptionParameter.typeOptions !== undefined &&\n\t\t\t\t\toptionParameter.typeOptions.multipleValues === true\n\t\t\t\t) {\n\t\t\t\t\t// Multiple values are allowed so append option to array\n\t\t\t\t\tnewParameterValue[optionParameter.name] = get(\n\t\t\t\t\t\tthis.nodeValues,\n\t\t\t\t\t\t`${this.path}.${optionParameter.name}`,\n\t\t\t\t\t\t[],\n\t\t\t\t\t);\n\t\t\t\t\tif (Array.isArray(optionParameter.default)) {\n\t\t\t\t\t\t(newParameterValue[optionParameter.name] as INodeParameters[]).push(\n\t\t\t\t\t\t\t...deepCopy(optionParameter.default as INodeParameters[]),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\toptionParameter.default !== '' &&\n\t\t\t\t\t\ttypeof optionParameter.default !== 'object'\n\t\t\t\t\t) {\n\t\t\t\t\t\t(newParameterValue[optionParameter.name] as NodeParameterValue[]).push(\n\t\t\t\t\t\t\tdeepCopy(optionParameter.default),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Add a new option\n\t\t\t\t\tnewParameterValue[optionParameter.name] = deepCopy(optionParameter.default);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet newValue;\n\t\t\tif (this.multipleValues) {\n\t\t\t\tnewValue = get(this.nodeValues, name, [] as INodeParameters[]);\n\n\t\t\t\tnewValue.push(newParameterValue);\n\t\t\t} else {\n\t\t\t\tnewValue = newParameterValue;\n\t\t\t}\n\n\t\t\tconst parameterData = {\n\t\t\t\tname,\n\t\t\t\tvalue: newValue,\n\t\t\t};\n\n\t\t\tthis.$emit('valueChanged', parameterData);\n\t\t\tthis.selectedOption = undefined;\n\t\t},\n\t\tvalueChanged(parameterData: IUpdateInformation) {\n\t\t\tthis.$emit('valueChanged', parameterData);\n\t\t},\n\t},\n});\n</script>\n\n<style scoped lang=\"scss\">\n.fixed-collection-parameter {\n\tpadding-left: var(--spacing-s);\n\n\t:deep(.button) {\n\t\t--button-background-color: var(--color-background-base);\n\t\t--button-border-color: var(--color-foreground-base);\n\t}\n}\n\n.fixed-collection-parameter-property {\n\tmargin: var(--spacing-xs) 0;\n}\n\n.delete-option {\n\tdisplay: none;\n\tposition: absolute;\n\tz-index: 999;\n\tcolor: #f56c6c;\n\tleft: 0;\n\ttop: 0.5em;\n\twidth: 15px;\n\theight: 100%;\n}\n\n.parameter-item:hover > .parameter-item-wrapper > .delete-option {\n\tdisplay: block;\n}\n\n.parameter-item {\n\tposition: relative;\n\tpadding: 0 0 0 1em;\n\n\t+ .parameter-item {\n\t\t.parameter-item-wrapper {\n\t\t\tborder-top: 1px dashed #999;\n\n\t\t\t.delete-option {\n\t\t\t\ttop: 14px;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.no-items-exist {\n\tmargin: var(--spacing-xs) 0;\n}\n\n.sort-icon {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-left: 1px;\n\tmargin-top: 0.5em;\n}\n</style>\n"],"file":"assets/FixedCollectionParameter-4224d5c6.js"}
|
|
1
|
+
{"version":3,"mappings":"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","names":["ParameterInputList","defineAsyncComponent","__vitePreload","_sfc_main","defineComponent","newValues","deepCopy","placeholder","returnProperties","tempProperties","name","_a","isINodePropertyCollectionList","option","optionName","index","currentOptionsOfSameType","parameterData","newParameterValue","optionParameter","get","newValue","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_8","_hoisted_10","_resolveComponent","_openBlock","_createElementBlock","_cache","_withModifiers","_ctx","_createVNode","_component_n8n_text","_withCtx","_createCommentVNode","_Fragment","_renderList","property","_createBlock","_component_n8n_input_label","_hoisted_2","value","_createElementVNode","_hoisted_3","_component_font_awesome_icon","$event","_Suspense","_component_parameter_input_list","_hoisted_7","_hoisted_9","_component_n8n_button","_component_n8n_select","item","_component_n8n_option"],"sources":["../../src/components/FixedCollectionParameter.vue"],"sourcesContent":["<template>\n\t<div @keydown.stop class=\"fixed-collection-parameter\">\n\t\t<div v-if=\"getProperties.length === 0\" class=\"no-items-exist\">\n\t\t\t<n8n-text size=\"small\">{{\n\t\t\t\t$locale.baseText('fixedCollectionParameter.currentlyNoItemsExist')\n\t\t\t}}</n8n-text>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-for=\"property in getProperties\"\n\t\t\t:key=\"property.name\"\n\t\t\tclass=\"fixed-collection-parameter-property\"\n\t\t>\n\t\t\t<n8n-input-label\n\t\t\t\tv-if=\"property.displayName !== '' && parameter.options && parameter.options.length !== 1\"\n\t\t\t\t:label=\"$locale.nodeText().inputLabelDisplayName(property, path)\"\n\t\t\t\t:underline=\"true\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tcolor=\"text-dark\"\n\t\t\t/>\n\t\t\t<div v-if=\"multipleValues\">\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"(value, index) in mutableValues[property.name]\"\n\t\t\t\t\t:key=\"property.name + index\"\n\t\t\t\t\tclass=\"parameter-item\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"parameter-item-wrapper\">\n\t\t\t\t\t\t<div class=\"delete-option\" v-if=\"!isReadOnly\">\n\t\t\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\t\t\ticon=\"trash\"\n\t\t\t\t\t\t\t\tclass=\"reset-icon clickable\"\n\t\t\t\t\t\t\t\t:title=\"$locale.baseText('fixedCollectionParameter.deleteItem')\"\n\t\t\t\t\t\t\t\t@click=\"deleteOption(property.name, index)\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<div v-if=\"sortable\" class=\"sort-icon\">\n\t\t\t\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\t\t\t\tv-if=\"index !== 0\"\n\t\t\t\t\t\t\t\t\ticon=\"angle-up\"\n\t\t\t\t\t\t\t\t\tclass=\"clickable\"\n\t\t\t\t\t\t\t\t\t:title=\"$locale.baseText('fixedCollectionParameter.moveUp')\"\n\t\t\t\t\t\t\t\t\t@click=\"moveOptionUp(property.name, index)\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\t\t\t\tv-if=\"index !== mutableValues[property.name].length - 1\"\n\t\t\t\t\t\t\t\t\ticon=\"angle-down\"\n\t\t\t\t\t\t\t\t\tclass=\"clickable\"\n\t\t\t\t\t\t\t\t\t:title=\"$locale.baseText('fixedCollectionParameter.moveDown')\"\n\t\t\t\t\t\t\t\t\t@click=\"moveOptionDown(property.name, index)\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Suspense>\n\t\t\t\t\t\t\t<parameter-input-list\n\t\t\t\t\t\t\t\t:parameters=\"property.values\"\n\t\t\t\t\t\t\t\t:nodeValues=\"nodeValues\"\n\t\t\t\t\t\t\t\t:path=\"getPropertyPath(property.name, index)\"\n\t\t\t\t\t\t\t\t:hideDelete=\"true\"\n\t\t\t\t\t\t\t\t:isReadOnly=\"isReadOnly\"\n\t\t\t\t\t\t\t\t@valueChanged=\"valueChanged\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Suspense>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else class=\"parameter-item\">\n\t\t\t\t<div class=\"parameter-item-wrapper\">\n\t\t\t\t\t<div class=\"delete-option\" v-if=\"!isReadOnly\">\n\t\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\t\ticon=\"trash\"\n\t\t\t\t\t\t\tclass=\"reset-icon clickable\"\n\t\t\t\t\t\t\t:title=\"$locale.baseText('fixedCollectionParameter.deleteItem')\"\n\t\t\t\t\t\t\t@click=\"deleteOption(property.name)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<parameter-input-list\n\t\t\t\t\t\t:parameters=\"property.values\"\n\t\t\t\t\t\t:nodeValues=\"nodeValues\"\n\t\t\t\t\t\t:path=\"getPropertyPath(property.name)\"\n\t\t\t\t\t\t:isReadOnly=\"isReadOnly\"\n\t\t\t\t\t\tclass=\"parameter-item\"\n\t\t\t\t\t\t@valueChanged=\"valueChanged\"\n\t\t\t\t\t\t:hideDelete=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"parameterOptions.length > 0 && !isReadOnly\">\n\t\t\t<n8n-button\n\t\t\t\tv-if=\"parameter.options.length === 1\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\tblock\n\t\t\t\t@click=\"optionSelected(parameter.options[0].name)\"\n\t\t\t\t:label=\"getPlaceholderText\"\n\t\t\t/>\n\t\t\t<div v-else class=\"add-option\">\n\t\t\t\t<n8n-select\n\t\t\t\t\tv-model=\"selectedOption\"\n\t\t\t\t\t:placeholder=\"getPlaceholderText\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t@update:modelValue=\"optionSelected\"\n\t\t\t\t\tfilterable\n\t\t\t\t>\n\t\t\t\t\t<n8n-option\n\t\t\t\t\t\tv-for=\"item in parameterOptions\"\n\t\t\t\t\t\t:key=\"item.name\"\n\t\t\t\t\t\t:label=\"$locale.nodeText().collectionOptionDisplayName(parameter, item, path)\"\n\t\t\t\t\t\t:value=\"item.name\"\n\t\t\t\t\t></n8n-option>\n\t\t\t\t</n8n-select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineAsyncComponent, defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport type { IUpdateInformation } from '@/Interface';\n\nimport type {\n\tINodeParameters,\n\tINodeProperties,\n\tINodePropertyCollection,\n\tNodeParameterValue,\n} from 'n8n-workflow';\nimport { deepCopy, isINodePropertyCollectionList } from 'n8n-workflow';\n\nimport { get } from 'lodash-es';\n\nconst ParameterInputList = defineAsyncComponent(async () => import('./ParameterInputList.vue'));\n\nexport default defineComponent({\n\tname: 'FixedCollectionParameter',\n\tprops: {\n\t\tnodeValues: {\n\t\t\ttype: Object as PropType<Record<string, INodeParameters[]>>,\n\t\t\trequired: true,\n\t\t},\n\t\tparameter: {\n\t\t\ttype: Object as PropType<INodeProperties>,\n\t\t\trequired: true,\n\t\t},\n\t\tpath: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalues: {\n\t\t\ttype: Object as PropType<Record<string, INodeParameters[]>>,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tisReadOnly: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomponents: {\n\t\tParameterInputList,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tselectedOption: undefined,\n\t\t\tmutableValues: {} as Record<string, INodeParameters[]>,\n\t\t};\n\t},\n\twatch: {\n\t\tvalues: {\n\t\t\thandler(newValues: Record<string, INodeParameters[]>) {\n\t\t\t\tthis.mutableValues = deepCopy(newValues);\n\t\t\t},\n\t\t\tdeep: true,\n\t\t},\n\t},\n\tcreated() {\n\t\tthis.mutableValues = deepCopy(this.values);\n\t},\n\tcomputed: {\n\t\tgetPlaceholderText(): string {\n\t\t\tconst placeholder = this.$locale.nodeText().placeholder(this.parameter, this.path);\n\t\t\treturn placeholder ? placeholder : this.$locale.baseText('fixedCollectionParameter.choose');\n\t\t},\n\t\tgetProperties(): INodePropertyCollection[] {\n\t\t\tconst returnProperties = [];\n\t\t\tlet tempProperties;\n\t\t\tfor (const name of this.propertyNames) {\n\t\t\t\ttempProperties = this.getOptionProperties(name);\n\t\t\t\tif (tempProperties !== undefined) {\n\t\t\t\t\treturnProperties.push(tempProperties);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn returnProperties;\n\t\t},\n\t\tmultipleValues(): boolean {\n\t\t\treturn !!this.parameter.typeOptions?.multipleValues;\n\t\t},\n\n\t\tparameterOptions(): INodePropertyCollection[] {\n\t\t\tif (this.multipleValues && isINodePropertyCollectionList(this.parameter.options)) {\n\t\t\t\treturn this.parameter.options;\n\t\t\t}\n\n\t\t\treturn (this.parameter.options as INodePropertyCollection[]).filter((option) => {\n\t\t\t\treturn !this.propertyNames.includes(option.name);\n\t\t\t});\n\t\t},\n\t\tpropertyNames(): string[] {\n\t\t\treturn Object.keys(this.mutableValues || {});\n\t\t},\n\t\tsortable(): boolean {\n\t\t\treturn !!this.parameter.typeOptions?.sortable;\n\t\t},\n\t},\n\tmethods: {\n\t\tdeleteOption(optionName: string, index?: number) {\n\t\t\tconst currentOptionsOfSameType = this.mutableValues[optionName];\n\t\t\tif (!currentOptionsOfSameType || currentOptionsOfSameType.length > 1) {\n\t\t\t\t// it's not the only option of this type, so just remove it.\n\t\t\t\tthis.$emit('valueChanged', {\n\t\t\t\t\tname: this.getPropertyPath(optionName, index),\n\t\t\t\t\tvalue: undefined,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// it's the only option, so remove the whole type\n\t\t\t\tthis.$emit('valueChanged', {\n\t\t\t\t\tname: this.getPropertyPath(optionName),\n\t\t\t\t\tvalue: undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetPropertyPath(name: string, index?: number) {\n\t\t\treturn `${this.path}.${name}` + (index !== undefined ? `[${index}]` : '');\n\t\t},\n\t\tgetOptionProperties(optionName: string): INodePropertyCollection | undefined {\n\t\t\tif (isINodePropertyCollectionList(this.parameter.options)) {\n\t\t\t\tfor (const option of this.parameter.options) {\n\t\t\t\t\tif (option.name === optionName) {\n\t\t\t\t\t\treturn option;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tmoveOptionDown(optionName: string, index: number) {\n\t\t\tif (Array.isArray(this.mutableValues[optionName])) {\n\t\t\t\tthis.mutableValues[optionName].splice(\n\t\t\t\t\tindex + 1,\n\t\t\t\t\t0,\n\t\t\t\t\tthis.mutableValues[optionName].splice(index, 1)[0],\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst parameterData = {\n\t\t\t\tname: this.getPropertyPath(optionName),\n\t\t\t\tvalue: this.mutableValues[optionName],\n\t\t\t};\n\n\t\t\tthis.$emit('valueChanged', parameterData);\n\t\t},\n\t\tmoveOptionUp(optionName: string, index: number) {\n\t\t\tif (Array.isArray(this.mutableValues[optionName])) {\n\t\t\t\tthis.mutableValues?.[optionName].splice(\n\t\t\t\t\tindex - 1,\n\t\t\t\t\t0,\n\t\t\t\t\tthis.mutableValues[optionName].splice(index, 1)[0],\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst parameterData = {\n\t\t\t\tname: this.getPropertyPath(optionName),\n\t\t\t\tvalue: this.mutableValues[optionName],\n\t\t\t};\n\n\t\t\tthis.$emit('valueChanged', parameterData);\n\t\t},\n\t\toptionSelected(optionName: string) {\n\t\t\tconst option = this.getOptionProperties(optionName);\n\t\t\tif (option === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst name = `${this.path}.${option.name}`;\n\n\t\t\tconst newParameterValue: INodeParameters = {};\n\n\t\t\tfor (const optionParameter of option.values) {\n\t\t\t\tif (\n\t\t\t\t\toptionParameter.type === 'fixedCollection' &&\n\t\t\t\t\toptionParameter.typeOptions !== undefined &&\n\t\t\t\t\toptionParameter.typeOptions.multipleValues === true\n\t\t\t\t) {\n\t\t\t\t\tnewParameterValue[optionParameter.name] = {};\n\t\t\t\t} else if (\n\t\t\t\t\toptionParameter.typeOptions !== undefined &&\n\t\t\t\t\toptionParameter.typeOptions.multipleValues === true\n\t\t\t\t) {\n\t\t\t\t\t// Multiple values are allowed so append option to array\n\t\t\t\t\tnewParameterValue[optionParameter.name] = get(\n\t\t\t\t\t\tthis.nodeValues,\n\t\t\t\t\t\t`${this.path}.${optionParameter.name}`,\n\t\t\t\t\t\t[],\n\t\t\t\t\t);\n\t\t\t\t\tif (Array.isArray(optionParameter.default)) {\n\t\t\t\t\t\t(newParameterValue[optionParameter.name] as INodeParameters[]).push(\n\t\t\t\t\t\t\t...deepCopy(optionParameter.default as INodeParameters[]),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\toptionParameter.default !== '' &&\n\t\t\t\t\t\ttypeof optionParameter.default !== 'object'\n\t\t\t\t\t) {\n\t\t\t\t\t\t(newParameterValue[optionParameter.name] as NodeParameterValue[]).push(\n\t\t\t\t\t\t\tdeepCopy(optionParameter.default),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Add a new option\n\t\t\t\t\tnewParameterValue[optionParameter.name] = deepCopy(optionParameter.default);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet newValue;\n\t\t\tif (this.multipleValues) {\n\t\t\t\tnewValue = get(this.nodeValues, name, [] as INodeParameters[]);\n\n\t\t\t\tnewValue.push(newParameterValue);\n\t\t\t} else {\n\t\t\t\tnewValue = newParameterValue;\n\t\t\t}\n\n\t\t\tconst parameterData = {\n\t\t\t\tname,\n\t\t\t\tvalue: newValue,\n\t\t\t};\n\n\t\t\tthis.$emit('valueChanged', parameterData);\n\t\t\tthis.selectedOption = undefined;\n\t\t},\n\t\tvalueChanged(parameterData: IUpdateInformation) {\n\t\t\tthis.$emit('valueChanged', parameterData);\n\t\t},\n\t},\n});\n</script>\n\n<style scoped lang=\"scss\">\n.fixed-collection-parameter {\n\tpadding-left: var(--spacing-s);\n\n\t:deep(.button) {\n\t\t--button-background-color: var(--color-background-base);\n\t\t--button-border-color: var(--color-foreground-base);\n\t}\n}\n\n.fixed-collection-parameter-property {\n\tmargin: var(--spacing-xs) 0;\n}\n\n.delete-option {\n\tdisplay: none;\n\tposition: absolute;\n\tz-index: 999;\n\tcolor: #f56c6c;\n\tleft: 0;\n\ttop: 0.5em;\n\twidth: 15px;\n\theight: 100%;\n}\n\n.parameter-item:hover > .parameter-item-wrapper > .delete-option {\n\tdisplay: block;\n}\n\n.parameter-item {\n\tposition: relative;\n\tpadding: 0 0 0 1em;\n\n\t+ .parameter-item {\n\t\t.parameter-item-wrapper {\n\t\t\tborder-top: 1px dashed #999;\n\n\t\t\t.delete-option {\n\t\t\t\ttop: 14px;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.no-items-exist {\n\tmargin: var(--spacing-xs) 0;\n}\n\n.sort-icon {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-left: 1px;\n\tmargin-top: 0.5em;\n}\n</style>\n"],"file":"assets/FixedCollectionParameter-cbe09134.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ez as O,eZ as x,dP as B,a6 as L,er as $,k as R,K as h,v as W,w as M,W as V,eP as Y,e$ as H,L as U,S as D,f6 as g,eM as G,cS as q,u as K,ge as j,gf as z,gg as F,_ as X}from"./n8n-57fc64d4.js";import{s as Z,i as J,d as Q,aD as ee,a0 as oe,b as te,o as m,f as P,n as y,g as I,e as w,k as ne,c as se,w as re,j as ae,aF as ce}from"./vendor-2860876e.js";const ie=()=>{const C=O(),i=Z(),T=J(()=>({actions:(i==null?void 0:i.proxy.$locale.baseText("nodeCreator.actionsCategory.actions"))??"",triggers:(i==null?void 0:i.proxy.$locale.baseText("nodeCreator.actionsCategory.triggers"))??""}));function S(e){const o=[V,Y];return C.mergedNodes.filter(t=>o.some(s=>s===t.name)).map(t=>{const s=x(t,e,"action");if(s.type==="action"){const r=`nodeCreator.actionsPlaceholderNode.${t.name.replace("n8n-nodes-base.","")}`,c=i==null?void 0:i.proxy.$locale.baseText(r);c!==r&&(s.properties.displayName=c)}return s})}function p(e,o){return e.filter(n=>n.type==="action"&&n.properties.codex.categories.includes(o))}function E(e){var d,r,c,u;const o=H([...e]),n=new Set;for(const a of o){if(a.type!=="action")continue;const l=(r=(d=a.properties)==null?void 0:d.codex)==null?void 0:r.label;n.add(l)}if(n.size<=1)return o;const t=new Map;for(let a=0;a<o.length;a++){const l=o[a];if(l.type!=="action")continue;const f=(u=(c=l.properties)==null?void 0:c.codex)==null?void 0:u.label;t.has(f)||t.set(f,a)}let s=0;for(const a of n){const l={uuid:a,type:"label",key:a,subcategory:o[0].key,properties:{key:a}},f=t.get(a)+s;o.splice(f,0,l),s++}return o}function _(e,o,n=!0){const t=p(e,o);return n?E(t):t}function b(e){const o=e.displayOptions,n=Object.keys((o==null?void 0:o.show)||{}).reduce((t,s)=>{var d,r;return t[s]=(r=(d=o==null?void 0:o.show)==null?void 0:d[s])==null?void 0:r[0],t},{});return{name:e.displayName,key:e.name,value:{...e.values,...n}}}function v(e){const{selectedView:o,openSource:n}=O(),{workflowTriggerNodes:t}=h(),s=e.some(l=>U().isTriggerNode(l.type)),d=t.length>0,r=o===G,c=e.every(l=>l.type===D);return![g.PLUS_ENDPOINT,g.NODE_CONNECTION_ACTION,g.NODE_CONNECTION_DROP].includes(n)&&!s&&!d&&r&&!c}function A(e){if(e.length===0)return{nodes:[],connections:[]};const o=[],n=[],t=e.find(s=>s.type!==B);return t&&(t.openDetail=!0),v(e)&&(e.unshift({type:B,isAutoAdd:!0}),n.push({from:{nodeIndex:0},to:{nodeIndex:1}})),e.forEach((s,d)=>{switch(o.push(s),s.type){case L:{const r=d,c=r+1;o.push({type:$,isAutoAdd:!0,name:R.baseText("nodeView.replaceMe")}),n.push({from:{nodeIndex:r,outputIndex:1},to:{nodeIndex:c}},{from:{nodeIndex:c},to:{nodeIndex:r}});break}}}),{nodes:o,connections:n}}function N(e,o,n=""){const{$onAction:t}=h(),s=t(({name:d,after:r,store:{setLastNodeParameters:c},args:u})=>{d!=="addNode"||u[0].type!==e.key||r(()=>{c(e),o&&k(e,o,n),s()})});return s}function k(e,o,n){const t={node_type:e.key,action:e.name,source_mode:n.toLowerCase(),resource:e.value.resource||""};W("nodeCreateList.addAction",M(),t),o==null||o.trackNodesPanel("nodeCreateList.addAction",t)}return{actionsCategoryLocales:T,getPlaceholderTriggerActions:S,parseCategoryActions:_,getAddedNodesAndConnections:A,getActionData:b,setAddedNodeActionParameters:N}},de=Q({__name:"NodeCreation",props:{nodeViewScale:{},createNodeActive:{type:Boolean,default:!1}},emits:["addNodes","toggleNodeCreator"],setup(C,{emit:i}){const T=C,S=ee(async()=>q(()=>import("./NodeCreator-
|
|
2
|
-
//# sourceMappingURL=NodeCreation-
|
|
1
|
+
import{ez as O,eZ as x,dP as B,a6 as L,er as $,k as R,K as h,v as W,w as M,W as V,eP as Y,e$ as H,L as U,S as D,f6 as g,eM as G,cS as q,u as K,ge as j,gf as z,gg as F,_ as X}from"./n8n-57fc64d4.js";import{s as Z,i as J,d as Q,aD as ee,a0 as oe,b as te,o as m,f as P,n as y,g as I,e as w,k as ne,c as se,w as re,j as ae,aF as ce}from"./vendor-2860876e.js";const ie=()=>{const C=O(),i=Z(),T=J(()=>({actions:(i==null?void 0:i.proxy.$locale.baseText("nodeCreator.actionsCategory.actions"))??"",triggers:(i==null?void 0:i.proxy.$locale.baseText("nodeCreator.actionsCategory.triggers"))??""}));function S(e){const o=[V,Y];return C.mergedNodes.filter(t=>o.some(s=>s===t.name)).map(t=>{const s=x(t,e,"action");if(s.type==="action"){const r=`nodeCreator.actionsPlaceholderNode.${t.name.replace("n8n-nodes-base.","")}`,c=i==null?void 0:i.proxy.$locale.baseText(r);c!==r&&(s.properties.displayName=c)}return s})}function p(e,o){return e.filter(n=>n.type==="action"&&n.properties.codex.categories.includes(o))}function E(e){var d,r,c,u;const o=H([...e]),n=new Set;for(const a of o){if(a.type!=="action")continue;const l=(r=(d=a.properties)==null?void 0:d.codex)==null?void 0:r.label;n.add(l)}if(n.size<=1)return o;const t=new Map;for(let a=0;a<o.length;a++){const l=o[a];if(l.type!=="action")continue;const f=(u=(c=l.properties)==null?void 0:c.codex)==null?void 0:u.label;t.has(f)||t.set(f,a)}let s=0;for(const a of n){const l={uuid:a,type:"label",key:a,subcategory:o[0].key,properties:{key:a}},f=t.get(a)+s;o.splice(f,0,l),s++}return o}function _(e,o,n=!0){const t=p(e,o);return n?E(t):t}function b(e){const o=e.displayOptions,n=Object.keys((o==null?void 0:o.show)||{}).reduce((t,s)=>{var d,r;return t[s]=(r=(d=o==null?void 0:o.show)==null?void 0:d[s])==null?void 0:r[0],t},{});return{name:e.displayName,key:e.name,value:{...e.values,...n}}}function v(e){const{selectedView:o,openSource:n}=O(),{workflowTriggerNodes:t}=h(),s=e.some(l=>U().isTriggerNode(l.type)),d=t.length>0,r=o===G,c=e.every(l=>l.type===D);return![g.PLUS_ENDPOINT,g.NODE_CONNECTION_ACTION,g.NODE_CONNECTION_DROP].includes(n)&&!s&&!d&&r&&!c}function A(e){if(e.length===0)return{nodes:[],connections:[]};const o=[],n=[],t=e.find(s=>s.type!==B);return t&&(t.openDetail=!0),v(e)&&(e.unshift({type:B,isAutoAdd:!0}),n.push({from:{nodeIndex:0},to:{nodeIndex:1}})),e.forEach((s,d)=>{switch(o.push(s),s.type){case L:{const r=d,c=r+1;o.push({type:$,isAutoAdd:!0,name:R.baseText("nodeView.replaceMe")}),n.push({from:{nodeIndex:r,outputIndex:1},to:{nodeIndex:c}},{from:{nodeIndex:c},to:{nodeIndex:r}});break}}}),{nodes:o,connections:n}}function N(e,o,n=""){const{$onAction:t}=h(),s=t(({name:d,after:r,store:{setLastNodeParameters:c},args:u})=>{d!=="addNode"||u[0].type!==e.key||r(()=>{c(e),o&&k(e,o,n),s()})});return s}function k(e,o,n){const t={node_type:e.key,action:e.name,source_mode:n.toLowerCase(),resource:e.value.resource||""};W("nodeCreateList.addAction",M(),t),o==null||o.trackNodesPanel("nodeCreateList.addAction",t)}return{actionsCategoryLocales:T,getPlaceholderTriggerActions:S,parseCategoryActions:_,getAddedNodesAndConnections:A,getActionData:b,setAddedNodeActionParameters:N}},de=Q({__name:"NodeCreation",props:{nodeViewScale:{},createNodeActive:{type:Boolean,default:!1}},emits:["addNodes","toggleNodeCreator"],setup(C,{emit:i}){const T=C,S=ee(async()=>q(()=>import("./NodeCreator-c9cc8248.js"),["assets/NodeCreator-c9cc8248.js","assets/n8n-57fc64d4.js","assets/vendor-2860876e.js","assets/lodash-es-042bfc73.js","assets/@fortawesome/vue-fontawesome-dcced0a8.js","assets/@fortawesome/fontawesome-svg-core-984d6dde.js","assets/flatted-8b14da7d.js","assets/esprima-next-8c7e8ff9.js","assets/luxon-19e1de07.js","assets/pinia-2bcabc60.js","assets/vue-i18n-afec0ff5.js","assets/@jsplumb/util-d5a5fff8.js","assets/@jsplumb/core-b1470600.js","assets/@jsplumb/common-fe415eb9.js","assets/@jsplumb/connector-bezier-c43fa575.js","assets/@jsplumb/browser-ui-d5e5c8b4.js","assets/uuid-cf522c50.js","assets/n8n-90e057ec.css","assets/index-de640cfd.js","assets/prettier-51497383.js","assets/codemirror-lang-html-n8n-2834c921.js","assets/@n8n/codemirror-lang-sql-c830a767.js","assets/@lezer/common-4a878264.js","assets/@vueuse/core-368199ac.js","assets/codemirror-lang-n8n-expression-53c11692.js","assets/fast-json-stable-stringify-56252254.js","assets/timeago.js-a9e71aec.js","assets/qrcode.vue-65309b5b.js","assets/file-saver-72ac5ed0.js","assets/vue-json-pretty-34c0a099.js","assets/vue-markdown-render-09d350ef.js","assets/humanize-duration-58d28ac7.js","assets/v3-infinite-loading-fc34d34c.js","assets/vue-agile-797a57bf.js","assets/vue-agile-d964f598.css","assets/vue3-touch-events-ee55ce04.js","assets/@fortawesome/free-solid-svg-icons-0d1822ba.js","assets/@fortawesome/free-regular-svg-icons-74cb85f8.js","assets/index-3fe6c000.css","assets/NodeCreator-5b1747f6.css"])),p=oe({showStickyButton:!1}),E=K(),{getAddedNodesAndConnections:_}=ie();function b(e){const o=e.target;p.showStickyButton=!0;const n=t=>{if(o){const s=o.getBoundingClientRect(),d=s.height,r=s.width,c=s.left,u=c+r,a=s.top,l=a+d;t.pageX>c&&t.pageX<u&&t.pageY>a&&t.pageY<l||(p.showStickyButton=!1,document.removeEventListener("mousemove",n,!1))}};document.addEventListener("mousemove",n,!1)}function v(){i("toggleNodeCreator",{source:g.ADD_NODE_BUTTON,createNodeActive:!0})}function A(){document.activeElement&&document.activeElement.blur();const e=[...E.nodeViewOffsetPosition],o=j(T.nodeViewScale,e);o[0]-=z/2,o[1]-=F/2,i("addNodes",_([{type:D,position:o}]))}function N(){i("toggleNodeCreator",{createNodeActive:!1})}function k(e){i("addNodes",_(e.map(o=>({type:o})))),N()}return(e,o)=>{const n=te("n8n-icon-button");return m(),P("div",null,[e.createNodeActive?ne("",!0):(m(),P("div",{key:0,class:y([e.$style.nodeButtonsWrapper,p.showStickyButton?e.$style.noEvents:""]),onMouseenter:b},[I("div",{class:y(e.$style.nodeCreatorButton),"data-test-id":"node-creator-plus-button"},[w(n,{size:"xlarge",icon:"plus",type:"tertiary",class:y(e.$style.nodeCreatorPlus),onClick:v,title:e.$locale.baseText("nodeView.addNode")},null,8,["class","title"]),I("div",{class:y([e.$style.addStickyButton,p.showStickyButton?e.$style.visibleButton:""]),onClick:A,"data-test-id":"add-sticky-button"},[w(n,{type:"tertiary",icon:["far","note-sticky"],title:e.$locale.baseText("nodeView.addSticky")},null,8,["title"])],2)],2)],34)),(m(),se(ce,null,{default:re(()=>[w(ae(S),{active:e.createNodeActive,onNodeTypeSelected:k,onCloseNodeCreator:N},null,8,["active"])]),_:1}))])}}}),le="_nodeButtonsWrapper_q5bvi_5",ue="_addStickyButton_q5bvi_14",pe="_visibleButton_q5bvi_21",fe="_noEvents_q5bvi_26",_e="_nodeCreatorButton_q5bvi_30",Ne="_nodeCreatorPlus_q5bvi_47",ye={nodeButtonsWrapper:le,addStickyButton:ue,visibleButton:pe,noEvents:fe,nodeCreatorButton:_e,nodeCreatorPlus:Ne},ge={$style:ye},Ce=X(de,[["__cssModules",ge]]),Ee=Object.freeze(Object.defineProperty({__proto__:null,default:Ce},Symbol.toStringTag,{value:"Module"}));export{Ee as N,ie as u};
|
|
2
|
+
//# sourceMappingURL=NodeCreation-4c3cc577.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":["useActions","nodeCreatorStore","useNodeCreatorStore","instance","getCurrentInstance","actionsCategoryLocales","computed","getPlaceholderTriggerActions","subcategory","nodes","WEBHOOK_NODE_TYPE","SCHEDULE_TRIGGER_NODE_TYPE","node","n","transformed","transformNodeType","localeKey","overwriteLocale","filterActionsCategory","items","category","item","injectActionsLabels","extendedActions","sortNodeCreateElements","labelsSet","action","label","_b","_a","firstIndexMap","i","_d","_c","insertedLabels","newLabel","insertIndex","parseCategoryActions","actions","withLabels","filteredActions","getActionData","actionItem","displayOptions","displayConditions","acc","showCondition","shouldPrependManualTrigger","addedNodes","selectedView","openSource","workflowTriggerNodes","useWorkflowsStore","hasTrigger","useNodeTypesStore","workflowContainsTrigger","isTriggerPanel","TRIGGER_NODE_CREATOR_VIEW","onlyStickyNodes","STICKY_NODE_TYPE","NODE_CREATOR_OPEN_SOURCES","getAddedNodesAndConnections","connections","nodeToAutoOpen","MANUAL_TRIGGER_NODE_TYPE","index","SPLIT_IN_BATCHES_NODE_TYPE","splitInBatchesIndex","noOpIndex","NO_OP_NODE_TYPE","i18n","setAddedNodeActionParameters","telemetry","rootView","onWorkflowStoreAction","storeWatcher","name","after","setLastNodeParameters","args","trackActionSelected","payload","runExternalHook","useWebhooksStore","NodeCreator","defineAsyncComponent","__vitePreload","state","reactive","uiStore","useUIStore","onCreateMenuHoverIn","mouseinEvent","buttonsWrapper","moveCallback","mousemoveEvent","wrapperBounds","wrapperH","wrapperW","wrapperLeftNear","wrapperLeftFar","wrapperTopNear","wrapperTopFar","openNodeCreator","emit","addStickyNote","offset","position","getMidCanvasPosition","props","DEFAULT_STICKY_WIDTH","DEFAULT_STICKY_HEIGHT","closeNodeCreator","nodeTypeSelected","nodeTypes","type"],"sources":["../../src/components/Node/NodeCreator/composables/useActions.ts","../../src/components/Node/NodeCreation.vue"],"sourcesContent":["import { getCurrentInstance, computed } from 'vue';\nimport type { IDataObject, INodeParameters } from 'n8n-workflow';\nimport type {\n\tActionTypeDescription,\n\tAddedNode,\n\tAddedNodeConnection,\n\tAddedNodesAndConnections,\n\tINodeCreateElement,\n\tIUpdateInformation,\n\tLabelCreateElement,\n} from '@/Interface';\nimport {\n\tMANUAL_TRIGGER_NODE_TYPE,\n\tNODE_CREATOR_OPEN_SOURCES,\n\tNO_OP_NODE_TYPE,\n\tSCHEDULE_TRIGGER_NODE_TYPE,\n\tSPLIT_IN_BATCHES_NODE_TYPE,\n\tSTICKY_NODE_TYPE,\n\tTRIGGER_NODE_CREATOR_VIEW,\n\tWEBHOOK_NODE_TYPE,\n} from '@/constants';\nimport { i18n } from '@/plugins/i18n';\n\nimport type { BaseTextKey } from '@/plugins/i18n';\nimport type { Telemetry } from '@/plugins/telemetry';\nimport { useNodeCreatorStore } from '@/stores/nodeCreator.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport { runExternalHook } from '@/utils';\nimport { useWebhooksStore } from '@/stores/webhooks.store';\n\nimport { sortNodeCreateElements, transformNodeType } from '../utils';\n\nexport const useActions = () => {\n\tconst nodeCreatorStore = useNodeCreatorStore();\n\tconst instance = getCurrentInstance();\n\n\tconst actionsCategoryLocales = computed(() => {\n\t\treturn {\n\t\t\tactions: instance?.proxy.$locale.baseText('nodeCreator.actionsCategory.actions') ?? '',\n\t\t\ttriggers: instance?.proxy.$locale.baseText('nodeCreator.actionsCategory.triggers') ?? '',\n\t\t};\n\t});\n\n\tfunction getPlaceholderTriggerActions(subcategory: string) {\n\t\tconst nodes = [WEBHOOK_NODE_TYPE, SCHEDULE_TRIGGER_NODE_TYPE];\n\n\t\tconst matchedNodeTypes = nodeCreatorStore.mergedNodes\n\t\t\t.filter((node) => nodes.some((n) => n === node.name))\n\t\t\t.map((node) => {\n\t\t\t\tconst transformed = transformNodeType(node, subcategory, 'action');\n\n\t\t\t\tif (transformed.type === 'action') {\n\t\t\t\t\tconst nameBase = node.name.replace('n8n-nodes-base.', '');\n\t\t\t\t\tconst localeKey = `nodeCreator.actionsPlaceholderNode.${nameBase}` as BaseTextKey;\n\t\t\t\t\tconst overwriteLocale = instance?.proxy.$locale.baseText(localeKey) as string;\n\n\t\t\t\t\t// If the locale key is not the same as the node name, it means it contain a translation\n\t\t\t\t\t// and we should use it\n\t\t\t\t\tif (overwriteLocale !== localeKey) {\n\t\t\t\t\t\ttransformed.properties.displayName = overwriteLocale;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn transformed;\n\t\t\t});\n\n\t\treturn matchedNodeTypes;\n\t}\n\n\tfunction filterActionsCategory(items: INodeCreateElement[], category: string) {\n\t\treturn items.filter(\n\t\t\t(item) => item.type === 'action' && item.properties.codex.categories.includes(category),\n\t\t);\n\t}\n\n\tfunction injectActionsLabels(items: INodeCreateElement[]): INodeCreateElement[] {\n\t\tconst extendedActions = sortNodeCreateElements([...items]);\n\t\tconst labelsSet = new Set<string>();\n\n\t\t// Collect unique labels\n\t\tfor (const action of extendedActions) {\n\t\t\tif (action.type !== 'action') continue;\n\t\t\tconst label = action.properties?.codex?.label;\n\t\t\tlabelsSet.add(label);\n\t\t}\n\n\t\tif (labelsSet.size <= 1) return extendedActions;\n\n\t\t// Create a map to store the first index of each label\n\t\tconst firstIndexMap = new Map<string, number>();\n\n\t\t// Iterate through the extendedActions to find the first index of each label\n\t\tfor (let i = 0; i < extendedActions.length; i++) {\n\t\t\tconst action = extendedActions[i];\n\t\t\tif (action.type !== 'action') continue;\n\t\t\tconst label = action.properties?.codex?.label;\n\t\t\tif (!firstIndexMap.has(label)) {\n\t\t\t\tfirstIndexMap.set(label, i);\n\t\t\t}\n\t\t}\n\n\t\t// Keep track of the number of inserted labels\n\t\tlet insertedLabels = 0;\n\n\t\t// Create and insert new label objects at the first index of each label\n\t\tfor (const label of labelsSet) {\n\t\t\tconst newLabel: LabelCreateElement = {\n\t\t\t\tuuid: label,\n\t\t\t\ttype: 'label',\n\t\t\t\tkey: label,\n\t\t\t\tsubcategory: extendedActions[0].key,\n\t\t\t\tproperties: {\n\t\t\t\t\tkey: label,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst insertIndex = firstIndexMap.get(label)! + insertedLabels;\n\t\t\textendedActions.splice(insertIndex, 0, newLabel);\n\t\t\tinsertedLabels++;\n\t\t}\n\n\t\treturn extendedActions;\n\t}\n\n\tfunction parseCategoryActions(\n\t\tactions: INodeCreateElement[],\n\t\tcategory: string,\n\t\twithLabels = true,\n\t) {\n\t\tconst filteredActions = filterActionsCategory(actions, category);\n\t\tif (withLabels) return injectActionsLabels(filteredActions);\n\t\treturn filteredActions;\n\t}\n\n\tfunction getActionData(actionItem: ActionTypeDescription): IUpdateInformation {\n\t\tconst displayOptions = actionItem.displayOptions;\n\n\t\tconst displayConditions = Object.keys(displayOptions?.show || {}).reduce(\n\t\t\t(acc: IDataObject, showCondition: string) => {\n\t\t\t\tacc[showCondition] = displayOptions?.show?.[showCondition]?.[0];\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{},\n\t\t);\n\n\t\treturn {\n\t\t\tname: actionItem.displayName,\n\t\t\tkey: actionItem.name as string,\n\t\t\tvalue: { ...actionItem.values, ...displayConditions } as INodeParameters,\n\t\t};\n\t}\n\n\tfunction shouldPrependManualTrigger(addedNodes: AddedNode[]): boolean {\n\t\tconst { selectedView, openSource } = useNodeCreatorStore();\n\t\tconst { workflowTriggerNodes } = useWorkflowsStore();\n\t\tconst hasTrigger = addedNodes.some((node) => useNodeTypesStore().isTriggerNode(node.type));\n\t\tconst workflowContainsTrigger = workflowTriggerNodes.length > 0;\n\t\tconst isTriggerPanel = selectedView === TRIGGER_NODE_CREATOR_VIEW;\n\t\tconst onlyStickyNodes = addedNodes.every((node) => node.type === STICKY_NODE_TYPE);\n\t\tconst singleNodeOpenSources = [\n\t\t\tNODE_CREATOR_OPEN_SOURCES.PLUS_ENDPOINT,\n\t\t\tNODE_CREATOR_OPEN_SOURCES.NODE_CONNECTION_ACTION,\n\t\t\tNODE_CREATOR_OPEN_SOURCES.NODE_CONNECTION_DROP,\n\t\t];\n\n\t\t// If the node creator was opened from the plus endpoint, node connection action, or node connection drop\n\t\t// then we do not want to append the manual trigger\n\t\tconst isSingleNodeOpenSource = singleNodeOpenSources.includes(openSource);\n\t\treturn (\n\t\t\t!isSingleNodeOpenSource &&\n\t\t\t!hasTrigger &&\n\t\t\t!workflowContainsTrigger &&\n\t\t\tisTriggerPanel &&\n\t\t\t!onlyStickyNodes\n\t\t);\n\t}\n\n\tfunction getAddedNodesAndConnections(addedNodes: AddedNode[]): AddedNodesAndConnections {\n\t\tif (addedNodes.length === 0) {\n\t\t\treturn { nodes: [], connections: [] };\n\t\t}\n\n\t\tconst nodes: AddedNode[] = [];\n\t\tconst connections: AddedNodeConnection[] = [];\n\n\t\tconst nodeToAutoOpen = addedNodes.find((node) => node.type !== MANUAL_TRIGGER_NODE_TYPE);\n\n\t\tif (nodeToAutoOpen) {\n\t\t\tnodeToAutoOpen.openDetail = true;\n\t\t}\n\n\t\tif (shouldPrependManualTrigger(addedNodes)) {\n\t\t\taddedNodes.unshift({ type: MANUAL_TRIGGER_NODE_TYPE, isAutoAdd: true });\n\t\t\tconnections.push({\n\t\t\t\tfrom: { nodeIndex: 0 },\n\t\t\t\tto: { nodeIndex: 1 },\n\t\t\t});\n\t\t}\n\n\t\taddedNodes.forEach((node, index) => {\n\t\t\tnodes.push(node);\n\n\t\t\tswitch (node.type) {\n\t\t\t\tcase SPLIT_IN_BATCHES_NODE_TYPE: {\n\t\t\t\t\tconst splitInBatchesIndex = index;\n\t\t\t\t\tconst noOpIndex = splitInBatchesIndex + 1;\n\t\t\t\t\tnodes.push({\n\t\t\t\t\t\ttype: NO_OP_NODE_TYPE,\n\t\t\t\t\t\tisAutoAdd: true,\n\t\t\t\t\t\tname: i18n.baseText('nodeView.replaceMe'),\n\t\t\t\t\t});\n\t\t\t\t\tconnections.push(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfrom: { nodeIndex: splitInBatchesIndex, outputIndex: 1 },\n\t\t\t\t\t\t\tto: { nodeIndex: noOpIndex },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfrom: { nodeIndex: noOpIndex },\n\t\t\t\t\t\t\tto: { nodeIndex: splitInBatchesIndex },\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn { nodes, connections };\n\t}\n\n\t// Hook into addNode action to set the last node parameters & track the action selected\n\tfunction setAddedNodeActionParameters(\n\t\taction: IUpdateInformation,\n\t\ttelemetry?: Telemetry,\n\t\trootView = '',\n\t) {\n\t\tconst { $onAction: onWorkflowStoreAction } = useWorkflowsStore();\n\t\tconst storeWatcher = onWorkflowStoreAction(\n\t\t\t({ name, after, store: { setLastNodeParameters }, args }) => {\n\t\t\t\tif (name !== 'addNode' || args[0].type !== action.key) return;\n\t\t\t\tafter(() => {\n\t\t\t\t\tsetLastNodeParameters(action);\n\t\t\t\t\tif (telemetry) trackActionSelected(action, telemetry, rootView);\n\t\t\t\t\t// Unsubscribe from the store watcher\n\t\t\t\t\tstoreWatcher();\n\t\t\t\t});\n\t\t\t},\n\t\t);\n\n\t\treturn storeWatcher;\n\t}\n\n\tfunction trackActionSelected(action: IUpdateInformation, telemetry: Telemetry, rootView: string) {\n\t\tconst payload = {\n\t\t\tnode_type: action.key,\n\t\t\taction: action.name,\n\t\t\tsource_mode: rootView.toLowerCase(),\n\t\t\tresource: (action.value as INodeParameters).resource || '',\n\t\t};\n\t\tvoid runExternalHook('nodeCreateList.addAction', useWebhooksStore(), payload);\n\t\ttelemetry?.trackNodesPanel('nodeCreateList.addAction', payload);\n\t}\n\n\treturn {\n\t\tactionsCategoryLocales,\n\t\tgetPlaceholderTriggerActions,\n\t\tparseCategoryActions,\n\t\tgetAddedNodesAndConnections,\n\t\tgetActionData,\n\t\tsetAddedNodeActionParameters,\n\t};\n};\n","<script setup lang=\"ts\">\nimport { defineAsyncComponent, reactive } from 'vue';\nimport { getMidCanvasPosition } from '@/utils/nodeViewUtils';\nimport {\n\tDEFAULT_STICKY_HEIGHT,\n\tDEFAULT_STICKY_WIDTH,\n\tNODE_CREATOR_OPEN_SOURCES,\n\tSTICKY_NODE_TYPE,\n} from '@/constants';\nimport { useUIStore } from '@/stores/ui.store';\nimport type { AddedNodesAndConnections, ToggleNodeCreatorOptions } from '@/Interface';\nimport { useActions } from './NodeCreator/composables/useActions';\n\ntype Props = {\n\tnodeViewScale: number;\n\tcreateNodeActive?: boolean;\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unsafe-assignment\nconst NodeCreator = defineAsyncComponent(\n\tasync () => import('@/components/Node/NodeCreator/NodeCreator.vue'),\n);\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcreateNodeActive: false,\n});\n\nconst emit = defineEmits<{\n\t(event: 'addNodes', value: AddedNodesAndConnections): void;\n\t(event: 'toggleNodeCreator', value: ToggleNodeCreatorOptions): void;\n}>();\n\nconst state = reactive({\n\tshowStickyButton: false,\n});\n\nconst uiStore = useUIStore();\n\nconst { getAddedNodesAndConnections } = useActions();\n\nfunction onCreateMenuHoverIn(mouseinEvent: MouseEvent) {\n\tconst buttonsWrapper = mouseinEvent.target as Element;\n\n\t// Once the popup menu is hovered, it's pointer events are disabled so it's not interfering with element underneath it.\n\tstate.showStickyButton = true;\n\tconst moveCallback = (mousemoveEvent: MouseEvent) => {\n\t\tif (buttonsWrapper) {\n\t\t\tconst wrapperBounds = buttonsWrapper.getBoundingClientRect();\n\t\t\tconst wrapperH = wrapperBounds.height;\n\t\t\tconst wrapperW = wrapperBounds.width;\n\t\t\tconst wrapperLeftNear = wrapperBounds.left;\n\t\t\tconst wrapperLeftFar = wrapperLeftNear + wrapperW;\n\t\t\tconst wrapperTopNear = wrapperBounds.top;\n\t\t\tconst wrapperTopFar = wrapperTopNear + wrapperH;\n\t\t\tconst inside =\n\t\t\t\tmousemoveEvent.pageX > wrapperLeftNear &&\n\t\t\t\tmousemoveEvent.pageX < wrapperLeftFar &&\n\t\t\t\tmousemoveEvent.pageY > wrapperTopNear &&\n\t\t\t\tmousemoveEvent.pageY < wrapperTopFar;\n\t\t\tif (!inside) {\n\t\t\t\tstate.showStickyButton = false;\n\t\t\t\tdocument.removeEventListener('mousemove', moveCallback, false);\n\t\t\t}\n\t\t}\n\t};\n\tdocument.addEventListener('mousemove', moveCallback, false);\n}\n\nfunction openNodeCreator() {\n\temit('toggleNodeCreator', {\n\t\tsource: NODE_CREATOR_OPEN_SOURCES.ADD_NODE_BUTTON,\n\t\tcreateNodeActive: true,\n\t});\n}\n\nfunction addStickyNote() {\n\tif (document.activeElement) {\n\t\t(document.activeElement as HTMLElement).blur();\n\t}\n\n\tconst offset: [number, number] = [...uiStore.nodeViewOffsetPosition];\n\n\tconst position = getMidCanvasPosition(props.nodeViewScale, offset);\n\tposition[0] -= DEFAULT_STICKY_WIDTH / 2;\n\tposition[1] -= DEFAULT_STICKY_HEIGHT / 2;\n\n\temit('addNodes', getAddedNodesAndConnections([{ type: STICKY_NODE_TYPE, position }]));\n}\n\nfunction closeNodeCreator() {\n\temit('toggleNodeCreator', { createNodeActive: false });\n}\n\nfunction nodeTypeSelected(nodeTypes: string[]) {\n\temit('addNodes', getAddedNodesAndConnections(nodeTypes.map((type) => ({ type }))));\n\tcloseNodeCreator();\n}\n</script>\n\n<template>\n\t<div>\n\t\t<div\n\t\t\tv-if=\"!createNodeActive\"\n\t\t\t:class=\"[$style.nodeButtonsWrapper, state.showStickyButton ? $style.noEvents : '']\"\n\t\t\t@mouseenter=\"onCreateMenuHoverIn\"\n\t\t>\n\t\t\t<div :class=\"$style.nodeCreatorButton\" data-test-id=\"node-creator-plus-button\">\n\t\t\t\t<n8n-icon-button\n\t\t\t\t\tsize=\"xlarge\"\n\t\t\t\t\ticon=\"plus\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t:class=\"$style.nodeCreatorPlus\"\n\t\t\t\t\t@click=\"openNodeCreator\"\n\t\t\t\t\t:title=\"$locale.baseText('nodeView.addNode')\"\n\t\t\t\t/>\n\t\t\t\t<div\n\t\t\t\t\t:class=\"[$style.addStickyButton, state.showStickyButton ? $style.visibleButton : '']\"\n\t\t\t\t\t@click=\"addStickyNote\"\n\t\t\t\t\tdata-test-id=\"add-sticky-button\"\n\t\t\t\t>\n\t\t\t\t\t<n8n-icon-button\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t:icon=\"['far', 'note-sticky']\"\n\t\t\t\t\t\t:title=\"$locale.baseText('nodeView.addSticky')\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<Suspense>\n\t\t\t<NodeCreator\n\t\t\t\t:active=\"createNodeActive\"\n\t\t\t\t@nodeTypeSelected=\"nodeTypeSelected\"\n\t\t\t\t@closeNodeCreator=\"closeNodeCreator\"\n\t\t\t/>\n\t\t</Suspense>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.nodeButtonsWrapper {\n\tposition: absolute;\n\twidth: 150px;\n\theight: 200px;\n\ttop: 0;\n\tright: 0;\n\tdisplay: flex;\n}\n\n.addStickyButton {\n\tmargin-top: var(--spacing-2xs);\n\topacity: 0;\n\ttransition: 0.1s;\n\ttransition-timing-function: linear;\n}\n\n.visibleButton {\n\topacity: 1;\n\tpointer-events: all;\n}\n\n.noEvents {\n\tpointer-events: none;\n}\n\n.nodeCreatorButton {\n\tposition: absolute;\n\ttext-align: center;\n\ttop: var(--spacing-s);\n\tright: var(--spacing-s);\n\tpointer-events: all !important;\n\n\tbutton {\n\t\tborder-color: var(--color-foreground-xdark);\n\t\tcolor: var(--color-foreground-xdark);\n\n\t\t&:hover {\n\t\t\tborder-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary);\n\t\t\tbackground: var(--color-background-xlight);\n\t\t}\n\t}\n}\n.nodeCreatorPlus {\n\tborder-width: 2px;\n\tborder-radius: var(--border-radius-base);\n\twidth: 36px;\n\theight: 36px;\n}\n</style>\n"],"file":"assets/NodeCreation-8d8cd6c7.js"}
|
|
1
|
+
{"version":3,"mappings":"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","names":["useActions","nodeCreatorStore","useNodeCreatorStore","instance","getCurrentInstance","actionsCategoryLocales","computed","getPlaceholderTriggerActions","subcategory","nodes","WEBHOOK_NODE_TYPE","SCHEDULE_TRIGGER_NODE_TYPE","node","n","transformed","transformNodeType","localeKey","overwriteLocale","filterActionsCategory","items","category","item","injectActionsLabels","extendedActions","sortNodeCreateElements","labelsSet","action","label","_b","_a","firstIndexMap","i","_d","_c","insertedLabels","newLabel","insertIndex","parseCategoryActions","actions","withLabels","filteredActions","getActionData","actionItem","displayOptions","displayConditions","acc","showCondition","shouldPrependManualTrigger","addedNodes","selectedView","openSource","workflowTriggerNodes","useWorkflowsStore","hasTrigger","useNodeTypesStore","workflowContainsTrigger","isTriggerPanel","TRIGGER_NODE_CREATOR_VIEW","onlyStickyNodes","STICKY_NODE_TYPE","NODE_CREATOR_OPEN_SOURCES","getAddedNodesAndConnections","connections","nodeToAutoOpen","MANUAL_TRIGGER_NODE_TYPE","index","SPLIT_IN_BATCHES_NODE_TYPE","splitInBatchesIndex","noOpIndex","NO_OP_NODE_TYPE","i18n","setAddedNodeActionParameters","telemetry","rootView","onWorkflowStoreAction","storeWatcher","name","after","setLastNodeParameters","args","trackActionSelected","payload","runExternalHook","useWebhooksStore","NodeCreator","defineAsyncComponent","__vitePreload","state","reactive","uiStore","useUIStore","onCreateMenuHoverIn","mouseinEvent","buttonsWrapper","moveCallback","mousemoveEvent","wrapperBounds","wrapperH","wrapperW","wrapperLeftNear","wrapperLeftFar","wrapperTopNear","wrapperTopFar","openNodeCreator","emit","addStickyNote","offset","position","getMidCanvasPosition","props","DEFAULT_STICKY_WIDTH","DEFAULT_STICKY_HEIGHT","closeNodeCreator","nodeTypeSelected","nodeTypes","type"],"sources":["../../src/components/Node/NodeCreator/composables/useActions.ts","../../src/components/Node/NodeCreation.vue"],"sourcesContent":["import { getCurrentInstance, computed } from 'vue';\nimport type { IDataObject, INodeParameters } from 'n8n-workflow';\nimport type {\n\tActionTypeDescription,\n\tAddedNode,\n\tAddedNodeConnection,\n\tAddedNodesAndConnections,\n\tINodeCreateElement,\n\tIUpdateInformation,\n\tLabelCreateElement,\n} from '@/Interface';\nimport {\n\tMANUAL_TRIGGER_NODE_TYPE,\n\tNODE_CREATOR_OPEN_SOURCES,\n\tNO_OP_NODE_TYPE,\n\tSCHEDULE_TRIGGER_NODE_TYPE,\n\tSPLIT_IN_BATCHES_NODE_TYPE,\n\tSTICKY_NODE_TYPE,\n\tTRIGGER_NODE_CREATOR_VIEW,\n\tWEBHOOK_NODE_TYPE,\n} from '@/constants';\nimport { i18n } from '@/plugins/i18n';\n\nimport type { BaseTextKey } from '@/plugins/i18n';\nimport type { Telemetry } from '@/plugins/telemetry';\nimport { useNodeCreatorStore } from '@/stores/nodeCreator.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport { runExternalHook } from '@/utils';\nimport { useWebhooksStore } from '@/stores/webhooks.store';\n\nimport { sortNodeCreateElements, transformNodeType } from '../utils';\n\nexport const useActions = () => {\n\tconst nodeCreatorStore = useNodeCreatorStore();\n\tconst instance = getCurrentInstance();\n\n\tconst actionsCategoryLocales = computed(() => {\n\t\treturn {\n\t\t\tactions: instance?.proxy.$locale.baseText('nodeCreator.actionsCategory.actions') ?? '',\n\t\t\ttriggers: instance?.proxy.$locale.baseText('nodeCreator.actionsCategory.triggers') ?? '',\n\t\t};\n\t});\n\n\tfunction getPlaceholderTriggerActions(subcategory: string) {\n\t\tconst nodes = [WEBHOOK_NODE_TYPE, SCHEDULE_TRIGGER_NODE_TYPE];\n\n\t\tconst matchedNodeTypes = nodeCreatorStore.mergedNodes\n\t\t\t.filter((node) => nodes.some((n) => n === node.name))\n\t\t\t.map((node) => {\n\t\t\t\tconst transformed = transformNodeType(node, subcategory, 'action');\n\n\t\t\t\tif (transformed.type === 'action') {\n\t\t\t\t\tconst nameBase = node.name.replace('n8n-nodes-base.', '');\n\t\t\t\t\tconst localeKey = `nodeCreator.actionsPlaceholderNode.${nameBase}` as BaseTextKey;\n\t\t\t\t\tconst overwriteLocale = instance?.proxy.$locale.baseText(localeKey) as string;\n\n\t\t\t\t\t// If the locale key is not the same as the node name, it means it contain a translation\n\t\t\t\t\t// and we should use it\n\t\t\t\t\tif (overwriteLocale !== localeKey) {\n\t\t\t\t\t\ttransformed.properties.displayName = overwriteLocale;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn transformed;\n\t\t\t});\n\n\t\treturn matchedNodeTypes;\n\t}\n\n\tfunction filterActionsCategory(items: INodeCreateElement[], category: string) {\n\t\treturn items.filter(\n\t\t\t(item) => item.type === 'action' && item.properties.codex.categories.includes(category),\n\t\t);\n\t}\n\n\tfunction injectActionsLabels(items: INodeCreateElement[]): INodeCreateElement[] {\n\t\tconst extendedActions = sortNodeCreateElements([...items]);\n\t\tconst labelsSet = new Set<string>();\n\n\t\t// Collect unique labels\n\t\tfor (const action of extendedActions) {\n\t\t\tif (action.type !== 'action') continue;\n\t\t\tconst label = action.properties?.codex?.label;\n\t\t\tlabelsSet.add(label);\n\t\t}\n\n\t\tif (labelsSet.size <= 1) return extendedActions;\n\n\t\t// Create a map to store the first index of each label\n\t\tconst firstIndexMap = new Map<string, number>();\n\n\t\t// Iterate through the extendedActions to find the first index of each label\n\t\tfor (let i = 0; i < extendedActions.length; i++) {\n\t\t\tconst action = extendedActions[i];\n\t\t\tif (action.type !== 'action') continue;\n\t\t\tconst label = action.properties?.codex?.label;\n\t\t\tif (!firstIndexMap.has(label)) {\n\t\t\t\tfirstIndexMap.set(label, i);\n\t\t\t}\n\t\t}\n\n\t\t// Keep track of the number of inserted labels\n\t\tlet insertedLabels = 0;\n\n\t\t// Create and insert new label objects at the first index of each label\n\t\tfor (const label of labelsSet) {\n\t\t\tconst newLabel: LabelCreateElement = {\n\t\t\t\tuuid: label,\n\t\t\t\ttype: 'label',\n\t\t\t\tkey: label,\n\t\t\t\tsubcategory: extendedActions[0].key,\n\t\t\t\tproperties: {\n\t\t\t\t\tkey: label,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst insertIndex = firstIndexMap.get(label)! + insertedLabels;\n\t\t\textendedActions.splice(insertIndex, 0, newLabel);\n\t\t\tinsertedLabels++;\n\t\t}\n\n\t\treturn extendedActions;\n\t}\n\n\tfunction parseCategoryActions(\n\t\tactions: INodeCreateElement[],\n\t\tcategory: string,\n\t\twithLabels = true,\n\t) {\n\t\tconst filteredActions = filterActionsCategory(actions, category);\n\t\tif (withLabels) return injectActionsLabels(filteredActions);\n\t\treturn filteredActions;\n\t}\n\n\tfunction getActionData(actionItem: ActionTypeDescription): IUpdateInformation {\n\t\tconst displayOptions = actionItem.displayOptions;\n\n\t\tconst displayConditions = Object.keys(displayOptions?.show || {}).reduce(\n\t\t\t(acc: IDataObject, showCondition: string) => {\n\t\t\t\tacc[showCondition] = displayOptions?.show?.[showCondition]?.[0];\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{},\n\t\t);\n\n\t\treturn {\n\t\t\tname: actionItem.displayName,\n\t\t\tkey: actionItem.name as string,\n\t\t\tvalue: { ...actionItem.values, ...displayConditions } as INodeParameters,\n\t\t};\n\t}\n\n\tfunction shouldPrependManualTrigger(addedNodes: AddedNode[]): boolean {\n\t\tconst { selectedView, openSource } = useNodeCreatorStore();\n\t\tconst { workflowTriggerNodes } = useWorkflowsStore();\n\t\tconst hasTrigger = addedNodes.some((node) => useNodeTypesStore().isTriggerNode(node.type));\n\t\tconst workflowContainsTrigger = workflowTriggerNodes.length > 0;\n\t\tconst isTriggerPanel = selectedView === TRIGGER_NODE_CREATOR_VIEW;\n\t\tconst onlyStickyNodes = addedNodes.every((node) => node.type === STICKY_NODE_TYPE);\n\t\tconst singleNodeOpenSources = [\n\t\t\tNODE_CREATOR_OPEN_SOURCES.PLUS_ENDPOINT,\n\t\t\tNODE_CREATOR_OPEN_SOURCES.NODE_CONNECTION_ACTION,\n\t\t\tNODE_CREATOR_OPEN_SOURCES.NODE_CONNECTION_DROP,\n\t\t];\n\n\t\t// If the node creator was opened from the plus endpoint, node connection action, or node connection drop\n\t\t// then we do not want to append the manual trigger\n\t\tconst isSingleNodeOpenSource = singleNodeOpenSources.includes(openSource);\n\t\treturn (\n\t\t\t!isSingleNodeOpenSource &&\n\t\t\t!hasTrigger &&\n\t\t\t!workflowContainsTrigger &&\n\t\t\tisTriggerPanel &&\n\t\t\t!onlyStickyNodes\n\t\t);\n\t}\n\n\tfunction getAddedNodesAndConnections(addedNodes: AddedNode[]): AddedNodesAndConnections {\n\t\tif (addedNodes.length === 0) {\n\t\t\treturn { nodes: [], connections: [] };\n\t\t}\n\n\t\tconst nodes: AddedNode[] = [];\n\t\tconst connections: AddedNodeConnection[] = [];\n\n\t\tconst nodeToAutoOpen = addedNodes.find((node) => node.type !== MANUAL_TRIGGER_NODE_TYPE);\n\n\t\tif (nodeToAutoOpen) {\n\t\t\tnodeToAutoOpen.openDetail = true;\n\t\t}\n\n\t\tif (shouldPrependManualTrigger(addedNodes)) {\n\t\t\taddedNodes.unshift({ type: MANUAL_TRIGGER_NODE_TYPE, isAutoAdd: true });\n\t\t\tconnections.push({\n\t\t\t\tfrom: { nodeIndex: 0 },\n\t\t\t\tto: { nodeIndex: 1 },\n\t\t\t});\n\t\t}\n\n\t\taddedNodes.forEach((node, index) => {\n\t\t\tnodes.push(node);\n\n\t\t\tswitch (node.type) {\n\t\t\t\tcase SPLIT_IN_BATCHES_NODE_TYPE: {\n\t\t\t\t\tconst splitInBatchesIndex = index;\n\t\t\t\t\tconst noOpIndex = splitInBatchesIndex + 1;\n\t\t\t\t\tnodes.push({\n\t\t\t\t\t\ttype: NO_OP_NODE_TYPE,\n\t\t\t\t\t\tisAutoAdd: true,\n\t\t\t\t\t\tname: i18n.baseText('nodeView.replaceMe'),\n\t\t\t\t\t});\n\t\t\t\t\tconnections.push(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfrom: { nodeIndex: splitInBatchesIndex, outputIndex: 1 },\n\t\t\t\t\t\t\tto: { nodeIndex: noOpIndex },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfrom: { nodeIndex: noOpIndex },\n\t\t\t\t\t\t\tto: { nodeIndex: splitInBatchesIndex },\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn { nodes, connections };\n\t}\n\n\t// Hook into addNode action to set the last node parameters & track the action selected\n\tfunction setAddedNodeActionParameters(\n\t\taction: IUpdateInformation,\n\t\ttelemetry?: Telemetry,\n\t\trootView = '',\n\t) {\n\t\tconst { $onAction: onWorkflowStoreAction } = useWorkflowsStore();\n\t\tconst storeWatcher = onWorkflowStoreAction(\n\t\t\t({ name, after, store: { setLastNodeParameters }, args }) => {\n\t\t\t\tif (name !== 'addNode' || args[0].type !== action.key) return;\n\t\t\t\tafter(() => {\n\t\t\t\t\tsetLastNodeParameters(action);\n\t\t\t\t\tif (telemetry) trackActionSelected(action, telemetry, rootView);\n\t\t\t\t\t// Unsubscribe from the store watcher\n\t\t\t\t\tstoreWatcher();\n\t\t\t\t});\n\t\t\t},\n\t\t);\n\n\t\treturn storeWatcher;\n\t}\n\n\tfunction trackActionSelected(action: IUpdateInformation, telemetry: Telemetry, rootView: string) {\n\t\tconst payload = {\n\t\t\tnode_type: action.key,\n\t\t\taction: action.name,\n\t\t\tsource_mode: rootView.toLowerCase(),\n\t\t\tresource: (action.value as INodeParameters).resource || '',\n\t\t};\n\t\tvoid runExternalHook('nodeCreateList.addAction', useWebhooksStore(), payload);\n\t\ttelemetry?.trackNodesPanel('nodeCreateList.addAction', payload);\n\t}\n\n\treturn {\n\t\tactionsCategoryLocales,\n\t\tgetPlaceholderTriggerActions,\n\t\tparseCategoryActions,\n\t\tgetAddedNodesAndConnections,\n\t\tgetActionData,\n\t\tsetAddedNodeActionParameters,\n\t};\n};\n","<script setup lang=\"ts\">\nimport { defineAsyncComponent, reactive } from 'vue';\nimport { getMidCanvasPosition } from '@/utils/nodeViewUtils';\nimport {\n\tDEFAULT_STICKY_HEIGHT,\n\tDEFAULT_STICKY_WIDTH,\n\tNODE_CREATOR_OPEN_SOURCES,\n\tSTICKY_NODE_TYPE,\n} from '@/constants';\nimport { useUIStore } from '@/stores/ui.store';\nimport type { AddedNodesAndConnections, ToggleNodeCreatorOptions } from '@/Interface';\nimport { useActions } from './NodeCreator/composables/useActions';\n\ntype Props = {\n\tnodeViewScale: number;\n\tcreateNodeActive?: boolean;\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unsafe-assignment\nconst NodeCreator = defineAsyncComponent(\n\tasync () => import('@/components/Node/NodeCreator/NodeCreator.vue'),\n);\n\nconst props = withDefaults(defineProps<Props>(), {\n\tcreateNodeActive: false,\n});\n\nconst emit = defineEmits<{\n\t(event: 'addNodes', value: AddedNodesAndConnections): void;\n\t(event: 'toggleNodeCreator', value: ToggleNodeCreatorOptions): void;\n}>();\n\nconst state = reactive({\n\tshowStickyButton: false,\n});\n\nconst uiStore = useUIStore();\n\nconst { getAddedNodesAndConnections } = useActions();\n\nfunction onCreateMenuHoverIn(mouseinEvent: MouseEvent) {\n\tconst buttonsWrapper = mouseinEvent.target as Element;\n\n\t// Once the popup menu is hovered, it's pointer events are disabled so it's not interfering with element underneath it.\n\tstate.showStickyButton = true;\n\tconst moveCallback = (mousemoveEvent: MouseEvent) => {\n\t\tif (buttonsWrapper) {\n\t\t\tconst wrapperBounds = buttonsWrapper.getBoundingClientRect();\n\t\t\tconst wrapperH = wrapperBounds.height;\n\t\t\tconst wrapperW = wrapperBounds.width;\n\t\t\tconst wrapperLeftNear = wrapperBounds.left;\n\t\t\tconst wrapperLeftFar = wrapperLeftNear + wrapperW;\n\t\t\tconst wrapperTopNear = wrapperBounds.top;\n\t\t\tconst wrapperTopFar = wrapperTopNear + wrapperH;\n\t\t\tconst inside =\n\t\t\t\tmousemoveEvent.pageX > wrapperLeftNear &&\n\t\t\t\tmousemoveEvent.pageX < wrapperLeftFar &&\n\t\t\t\tmousemoveEvent.pageY > wrapperTopNear &&\n\t\t\t\tmousemoveEvent.pageY < wrapperTopFar;\n\t\t\tif (!inside) {\n\t\t\t\tstate.showStickyButton = false;\n\t\t\t\tdocument.removeEventListener('mousemove', moveCallback, false);\n\t\t\t}\n\t\t}\n\t};\n\tdocument.addEventListener('mousemove', moveCallback, false);\n}\n\nfunction openNodeCreator() {\n\temit('toggleNodeCreator', {\n\t\tsource: NODE_CREATOR_OPEN_SOURCES.ADD_NODE_BUTTON,\n\t\tcreateNodeActive: true,\n\t});\n}\n\nfunction addStickyNote() {\n\tif (document.activeElement) {\n\t\t(document.activeElement as HTMLElement).blur();\n\t}\n\n\tconst offset: [number, number] = [...uiStore.nodeViewOffsetPosition];\n\n\tconst position = getMidCanvasPosition(props.nodeViewScale, offset);\n\tposition[0] -= DEFAULT_STICKY_WIDTH / 2;\n\tposition[1] -= DEFAULT_STICKY_HEIGHT / 2;\n\n\temit('addNodes', getAddedNodesAndConnections([{ type: STICKY_NODE_TYPE, position }]));\n}\n\nfunction closeNodeCreator() {\n\temit('toggleNodeCreator', { createNodeActive: false });\n}\n\nfunction nodeTypeSelected(nodeTypes: string[]) {\n\temit('addNodes', getAddedNodesAndConnections(nodeTypes.map((type) => ({ type }))));\n\tcloseNodeCreator();\n}\n</script>\n\n<template>\n\t<div>\n\t\t<div\n\t\t\tv-if=\"!createNodeActive\"\n\t\t\t:class=\"[$style.nodeButtonsWrapper, state.showStickyButton ? $style.noEvents : '']\"\n\t\t\t@mouseenter=\"onCreateMenuHoverIn\"\n\t\t>\n\t\t\t<div :class=\"$style.nodeCreatorButton\" data-test-id=\"node-creator-plus-button\">\n\t\t\t\t<n8n-icon-button\n\t\t\t\t\tsize=\"xlarge\"\n\t\t\t\t\ticon=\"plus\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t:class=\"$style.nodeCreatorPlus\"\n\t\t\t\t\t@click=\"openNodeCreator\"\n\t\t\t\t\t:title=\"$locale.baseText('nodeView.addNode')\"\n\t\t\t\t/>\n\t\t\t\t<div\n\t\t\t\t\t:class=\"[$style.addStickyButton, state.showStickyButton ? $style.visibleButton : '']\"\n\t\t\t\t\t@click=\"addStickyNote\"\n\t\t\t\t\tdata-test-id=\"add-sticky-button\"\n\t\t\t\t>\n\t\t\t\t\t<n8n-icon-button\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t:icon=\"['far', 'note-sticky']\"\n\t\t\t\t\t\t:title=\"$locale.baseText('nodeView.addSticky')\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<Suspense>\n\t\t\t<NodeCreator\n\t\t\t\t:active=\"createNodeActive\"\n\t\t\t\t@nodeTypeSelected=\"nodeTypeSelected\"\n\t\t\t\t@closeNodeCreator=\"closeNodeCreator\"\n\t\t\t/>\n\t\t</Suspense>\n\t</div>\n</template>\n\n<style lang=\"scss\" module>\n.nodeButtonsWrapper {\n\tposition: absolute;\n\twidth: 150px;\n\theight: 200px;\n\ttop: 0;\n\tright: 0;\n\tdisplay: flex;\n}\n\n.addStickyButton {\n\tmargin-top: var(--spacing-2xs);\n\topacity: 0;\n\ttransition: 0.1s;\n\ttransition-timing-function: linear;\n}\n\n.visibleButton {\n\topacity: 1;\n\tpointer-events: all;\n}\n\n.noEvents {\n\tpointer-events: none;\n}\n\n.nodeCreatorButton {\n\tposition: absolute;\n\ttext-align: center;\n\ttop: var(--spacing-s);\n\tright: var(--spacing-s);\n\tpointer-events: all !important;\n\n\tbutton {\n\t\tborder-color: var(--color-foreground-xdark);\n\t\tcolor: var(--color-foreground-xdark);\n\n\t\t&:hover {\n\t\t\tborder-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary);\n\t\t\tbackground: var(--color-background-xlight);\n\t\t}\n\t}\n}\n.nodeCreatorPlus {\n\tborder-width: 2px;\n\tborder-radius: var(--border-radius-base);\n\twidth: 36px;\n\theight: 36px;\n}\n</style>\n"],"file":"assets/NodeCreation-4c3cc577.js"}
|