n8n-editor-ui 1.87.1 → 1.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/assets/{AnimatedSpinner-BJKBduqI.js → AnimatedSpinner-64kuDSMd.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BNiwICGe.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-vU7A4Ql5.js} +1 -1
  3. package/dist/assets/{AuthView-DrViDPFs.js → AuthView-BtMwWncz.js} +2 -2
  4. package/dist/assets/{CanvasChatSwitch-0IWSu8RE.css → CanvasChatSwitch-BDVIAjN6.css} +12 -11
  5. package/dist/assets/{CanvasChatSwitch-BnTApoNZ.js → CanvasChatSwitch-DCcRHty_.js} +26 -24
  6. package/dist/assets/{ChangePasswordView-DPUv2ZhO.js → ChangePasswordView-ngd6kK9h.js} +3 -3
  7. package/dist/assets/CollectionParameter-NNrH2Qf1.js +4 -0
  8. package/dist/assets/{CredentialsView-Cx3MfjwO.js → CredentialsView-c9VZrSEP.js} +6 -6
  9. package/dist/assets/{ErrorView-C3Sxa6Qs.js → ErrorView-M0yTzQxC.js} +1 -1
  10. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-B0NnOKRw.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-BsM5P8VY.js} +2 -2
  11. package/dist/assets/{ExecutionsView-BD9a5MiE.js → ExecutionsView-2Ywg0NsP.js} +8 -8
  12. package/dist/assets/{FileSaver.min-CsyH54Dh.js → FileSaver.min-DAXzY4JY.js} +1 -1
  13. package/dist/assets/{FixedCollectionParameter-icyYiANk.js → FixedCollectionParameter-CNRFXDrN.js} +1 -1
  14. package/dist/assets/{ForgotMyPasswordView-B7m6OAyt.js → ForgotMyPasswordView-C1SOW4HN.js} +3 -3
  15. package/dist/assets/{InsightsChartAverageRuntime-CiI5y8BG.js → InsightsChartAverageRuntime-D_7tKoef.js} +4 -4
  16. package/dist/assets/{InsightsChartFailed-BAnQv9pU.js → InsightsChartFailed-DDejxv0R.js} +5 -5
  17. package/dist/assets/{InsightsChartFailureRate-CGRL86zw.js → InsightsChartFailureRate-PS5N1AdB.js} +4 -4
  18. package/dist/assets/{InsightsChartTimeSaved-BJmjC9xP.js → InsightsChartTimeSaved-BBw2CgSS.js} +4 -4
  19. package/dist/assets/{InsightsChartTotal-YSqQgGkL.js → InsightsChartTotal-2MVolQhG.js} +7 -7
  20. package/dist/assets/InsightsDashboard-DCdd_dks.js +174 -0
  21. package/dist/assets/{InsightsDashboard-CB4vHnBh.css → InsightsDashboard-DPVczYm3.css} +21 -8
  22. package/dist/assets/{InsightsPaywall-BCSe1GCl.js → InsightsPaywall-DtIcXb48.js} +1 -1
  23. package/dist/assets/{InsightsSummary-Bf61oFlG.js → InsightsSummary-BzdlA4Dr.js} +48 -25
  24. package/dist/assets/{InsightsSummary-W08OzElS.css → InsightsSummary-FixbpmPJ.css} +28 -25
  25. package/dist/assets/{InsightsTableWorkflows-Us3j4UTO.css → InsightsTableWorkflows-Blv_GPUj.css} +16 -1
  26. package/dist/assets/{InsightsTableWorkflows-B5M_o3Di.js → InsightsTableWorkflows-CnEuNzZ9.js} +63 -15
  27. package/dist/assets/{Logo-DZ8mhDMd.js → Logo-CmGfYtCL.js} +1 -1
  28. package/dist/assets/{MainHeader-CItoJWMi.js → MainHeader-DdjAOCVS.js} +9 -9
  29. package/dist/assets/{MainSidebar-Cponf9eD.js → MainSidebar-CPtfXLom.js} +4 -2
  30. package/dist/assets/{NodeCreation-DiUBT9p0.js → NodeCreation-C9WNMB5W.js} +4 -4
  31. package/dist/assets/{NodeCreator-BHji7uJa.js → NodeCreator-Dt7b_La2.js} +3 -3
  32. package/dist/assets/{NodeDetailsView-BT-ro74o.css → NodeDetailsView-B2kdGJ7R.css} +14 -14
  33. package/dist/assets/{NodeDetailsView-CPsaG2IZ.js → NodeDetailsView-BPQgwdWz.js} +23 -12
  34. package/dist/assets/{NodeView-9P-9rNOD.js → NodeView-CKF92Cc3.js} +17 -18
  35. package/dist/assets/{ProjectCardBadge-BdyDghHf.js → ProjectCardBadge-Ca29o2Nu.js} +1 -1
  36. package/dist/assets/{ProjectHeader-D8-9oE80.js → ProjectHeader-Dq3fVC-9.js} +1 -1
  37. package/dist/assets/{ProjectSettings-Brpx7x2l.js → ProjectSettings-6oRh_PiD.js} +2 -2
  38. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CShLauba.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DtHAaMts.js} +1 -1
  39. package/dist/assets/{ResourcesListLayout-nD22utQX.js → ResourcesListLayout-CjpS9ho7.js} +12 -2
  40. package/dist/assets/{ResourcesListLayout-CWgWhtKq.css → ResourcesListLayout-b44J07nq.css} +8 -8
  41. package/dist/assets/{RunDataAi-DULZvgnn.js → RunDataAi-DpuaI4HY.js} +64 -41
  42. package/dist/assets/{RunDataJson-jnag_uEf.js → RunDataJson-CS1Vs4me.js} +23 -13
  43. package/dist/assets/{RunDataJsonActions-CWCdb4Yi.js → RunDataJsonActions-UEDmvE5v.js} +1 -1
  44. package/dist/assets/{RunDataSearch-CI5OdX2M.js → RunDataSearch-BjsM_QL7.js} +1 -1
  45. package/dist/assets/{RunDataTable-CQc98S7W.js → RunDataTable-zY9Z73dm.js} +17 -7
  46. package/dist/assets/{SamlOnboarding-mdVsZszT.js → SamlOnboarding-CMQ3F8vU.js} +3 -3
  47. package/dist/assets/{SettingsApiView-CRDQ66Jq.js → SettingsApiView-C7mJo5RT.js} +1 -1
  48. package/dist/assets/{SettingsCommunityNodesView-DCp8y1mn.js → SettingsCommunityNodesView-oV3f1FYs.js} +4 -4
  49. package/dist/assets/{SettingsExternalSecrets-PhLe1dhs.js → SettingsExternalSecrets-Zm50ediz.js} +1 -1
  50. package/dist/assets/{SettingsLdapView-DrPh9Cmp.js → SettingsLdapView-D0lujKk6.js} +1 -1
  51. package/dist/assets/{SettingsLogStreamingView-D_dGzLfg.js → SettingsLogStreamingView-DMRYf3h4.js} +1 -1
  52. package/dist/assets/{SettingsPersonalView-C6XeNBcf.js → SettingsPersonalView-BlKM42Fv.js} +1 -1
  53. package/dist/assets/{SettingsSourceControl-Bu_qi87k.js → SettingsSourceControl-BRkqOyBq.js} +1 -1
  54. package/dist/assets/{SettingsSso-BF8Nr76R.js → SettingsSso-ClphkEtx.js} +1 -1
  55. package/dist/assets/{SettingsUsageAndPlan-DTyc2TI4.js → SettingsUsageAndPlan-BnxbFSLN.js} +1 -1
  56. package/dist/assets/{SettingsUsersView-BfK_vKh5.js → SettingsUsersView-CnqllPG4.js} +1 -1
  57. package/dist/assets/{SettingsView-bkz5b7Ks.js → SettingsView-CJ4icVTM.js} +1 -1
  58. package/dist/assets/{SetupView--_MmPcKt.js → SetupView-BaUQwZK2.js} +3 -3
  59. package/dist/assets/{SetupWorkflowCredentialsButton-C94b-j6c.js → SetupWorkflowCredentialsButton-DiRHCsta.js} +1 -1
  60. package/dist/assets/{SetupWorkflowFromTemplateView-Bn6NUya1.js → SetupWorkflowFromTemplateView-CjiIpX1D.js} +3 -3
  61. package/dist/assets/{SigninView-s9B3HXBX.js → SigninView-DrRmsG64.js} +3 -3
  62. package/dist/assets/{SignoutView-CvFIZuRL.js → SignoutView-DEK6MH1B.js} +1 -1
  63. package/dist/assets/{SignupView-B6YMoGnc.js → SignupView-CTdIAp1U.js} +3 -3
  64. package/dist/assets/{TemplateDetails-DOGmuYC4.js → TemplateDetails-B6Nnq5_s.js} +1 -1
  65. package/dist/assets/{TemplateList-BRL4OSZK.js → TemplateList-BKmKXiHs.js} +1 -1
  66. package/dist/assets/{TemplatesCollectionView-Ct2GIDCZ.js → TemplatesCollectionView-CXgiZ-fy.js} +5 -5
  67. package/dist/assets/{TemplatesSearchView-CWGmY4-P.js → TemplatesSearchView-BoX9MKRy.js} +3 -3
  68. package/dist/assets/{TemplatesView-vYQo2Y75.js → TemplatesView-htM1lafV.js} +1 -1
  69. package/dist/assets/{TemplatesWorkflowView-Cw6mc6wy.js → TemplatesWorkflowView-DIqdCPxB.js} +5 -5
  70. package/dist/assets/{TestDefinitionEditView-CZnzTAsp.js → TestDefinitionEditView-izO1b1I3.js} +7 -7
  71. package/dist/assets/{TestDefinitionListView-CKsRlhn4.js → TestDefinitionListView-DuLocBuw.js} +1 -1
  72. package/dist/assets/{TestDefinitionNewView-B1KZ2Qnt.js → TestDefinitionNewView-Dg37IAs6.js} +2 -2
  73. package/dist/assets/{TestDefinitionRootView-V43FaNr3.js → TestDefinitionRootView-DlG7VKKU.js} +1 -1
  74. package/dist/assets/{VariablesView-DLB1Vvnc.js → VariablesView-Cq8LInqk.js} +3 -3
  75. package/dist/assets/{WorkerView-Iqi25XGQ.js → WorkerView-BTQTq3vI.js} +6 -6
  76. package/dist/assets/{WorkflowActivator-D9fExB06.js → WorkflowActivator-E1mdIOaC.js} +2 -2
  77. package/dist/assets/{WorkflowExecutionsInfoAccordion-Md7C2uBw.js → WorkflowExecutionsInfoAccordion-DxGM_yu-.js} +1 -1
  78. package/dist/assets/{WorkflowExecutionsLandingPage-CKOlfG7s.js → WorkflowExecutionsLandingPage-BkftsbSa.js} +2 -2
  79. package/dist/assets/{WorkflowExecutionsPreview-DS6HDJng.js → WorkflowExecutionsPreview-w7I_h1ID.js} +6 -6
  80. package/dist/assets/{WorkflowExecutionsView-LF3g9gDB.js → WorkflowExecutionsView-lyjECt6I.js} +7 -7
  81. package/dist/assets/{WorkflowHistory-Cu7OIIMi.js → WorkflowHistory-B8_7vx-c.js} +3 -3
  82. package/dist/assets/{WorkflowOnboardingView-B2WUKfr6.js → WorkflowOnboardingView-D2fR8tdw.js} +1 -1
  83. package/dist/assets/{WorkflowPreview-DlKRTeNZ.js → WorkflowPreview-CNu7Kd6F.js} +1 -1
  84. package/dist/assets/{WorkflowsView-dot2ovV7.js → WorkflowsView-B_70hdtG.js} +133 -42
  85. package/dist/assets/{WorkflowsView-CJB9aI6A.css → WorkflowsView-DV1tjQwB.css} +17 -11
  86. package/dist/assets/{chartjs.utils-BLcAAfTE.js → chartjs.utils-3n4f3zmI.js} +6 -3
  87. package/dist/assets/{dateFormatter-Cdy8FmTT.js → dateFormatter-C1XlsLk2.js} +1 -1
  88. package/dist/assets/easyAiWorkflowUtils-CCJdF1g3.js +132 -0
  89. package/dist/assets/{global-link-actions-CfWIYTMM.js → global-link-actions-B6woWi9D.js} +1 -1
  90. package/dist/assets/{import-curl-DO7fae0m.js → import-curl-BlRUX0EU.js} +1 -1
  91. package/dist/assets/{index-D76xStxp.js → index-B-Y7sDIj.js} +672 -529
  92. package/dist/assets/{index-Bo3CExk-.js → index-BHGYFXFB.js} +1 -1
  93. package/dist/assets/{index-DJ205bL0.css → index-DwKuVkBg.css} +52 -52
  94. package/dist/assets/{pickBy-DdpxIwij.js → pickBy-BdN6wCB-.js} +1 -1
  95. package/dist/assets/{templateActions-BCMgItKi.js → templateActions-FAVGvEAM.js} +1 -1
  96. package/dist/assets/{useBeforeUnload-CDzomPGL.js → useBeforeUnload-oRTjaea2.js} +1 -1
  97. package/dist/assets/{useCanvasMapping-D1DfqsUU.js → useCanvasMapping-CmD2j75y.js} +3 -3
  98. package/dist/assets/{useCanvasOperations-CAthHfOB.js → useCanvasOperations-DYORubSM.js} +23 -16
  99. package/dist/assets/{useClearExecutionButtonVisible-CnDyjcGF.js → useClearExecutionButtonVisible-ReuF4PkZ.js} +2 -2
  100. package/dist/assets/{useExecutionDebugging-Bm9sy3W3.js → useExecutionDebugging-I7MLJdC1.js} +1 -1
  101. package/dist/assets/{useExecutionHelpers-C_yBGArA.js → useExecutionHelpers-CyZuZAQA.js} +2 -2
  102. package/dist/assets/{useImportCurlCommand-CK-lTdZr.js → useImportCurlCommand-DZVwxoke.js} +2 -2
  103. package/dist/assets/{usePushConnection-potv7eom.js → usePushConnection-SgX-5Lz6.js} +14 -15
  104. package/dist/assets/{useTestDefinitionForm-Dlzud2C-.js → useTestDefinitionForm-gWQ_zjEl.js} +1 -1
  105. package/dist/assets/{useWorkflowActivate-BvmFVCGP.js → useWorkflowActivate-CX21vkKl.js} +1 -1
  106. package/dist/index.html +2 -2
  107. package/package.json +1 -1
  108. package/dist/assets/CollectionParameter-14_bIMyy.js +0 -4
  109. package/dist/assets/InsightsDashboard-oe5QP-_0.js +0 -154
  110. package/dist/assets/easyAiWorkflowUtils-C5xkiwuo.js +0 -181
@@ -1,4 +1,4 @@
1
- import { f_ as Chart$1, d as defineComponent, f$ as shallowRef, as as h, g0 as LineController, g1 as version, r as ref, o as onMounted, y as onBeforeUnmount, I as watch, d5 as toRaw, g2 as isProxy, g3 as BarController } from "./index-D76xStxp.js";
1
+ import { f$ as Chart$1, d as defineComponent, g0 as shallowRef, as as h, g1 as LineController, g2 as version, r as ref, o as onMounted, y as onBeforeUnmount, I as watch, d4 as toRaw, g3 as isProxy, g4 as BarController } from "./index-B-Y7sDIj.js";
2
2
  const CommonProps = {
3
3
  data: {
4
4
  type: Object,
@@ -28774,30 +28774,30 @@ ul.user-stack-list li:hover {
28774
28774
  -------------------------- */
28775
28775
  /* BEM
28776
28776
  -------------------------- */
28777
- .n8n-data-table-server[data-v-a664ad0e] {
28777
+ .n8n-data-table-server[data-v-aec71a76] {
28778
28778
  height: 100%;
28779
28779
  font-size: var(--font-size-s);
28780
28780
  }
28781
- .n8n-data-table-server table[data-v-a664ad0e] {
28781
+ .n8n-data-table-server table[data-v-aec71a76] {
28782
28782
  width: 100%;
28783
28783
  border-collapse: separate;
28784
28784
  border-spacing: 0;
28785
28785
  white-space: nowrap;
28786
28786
  }
28787
- .n8n-data-table-server table > thead[data-v-a664ad0e] {
28787
+ .n8n-data-table-server table > thead[data-v-aec71a76] {
28788
28788
  position: sticky;
28789
28789
  top: 0;
28790
28790
  z-index: 2;
28791
28791
  }
28792
- .n8n-data-table-server th[data-v-a664ad0e] {
28792
+ .n8n-data-table-server th[data-v-aec71a76] {
28793
28793
  position: relative;
28794
28794
  text-align: left;
28795
28795
  }
28796
- .n8n-data-table-server thead[data-v-a664ad0e] {
28796
+ .n8n-data-table-server thead[data-v-aec71a76] {
28797
28797
  background-color: var(--color-background-light-base);
28798
28798
  border-bottom: 1px solid var(--color-foreground-base);
28799
28799
  }
28800
- .n8n-data-table-server th[data-v-a664ad0e] {
28800
+ .n8n-data-table-server th[data-v-aec71a76] {
28801
28801
  color: var(--color-text-base);
28802
28802
  font-weight: 600;
28803
28803
  font-size: 12px;
@@ -28806,67 +28806,67 @@ ul.user-stack-list li:hover {
28806
28806
  height: 36px;
28807
28807
  white-space: nowrap;
28808
28808
  }
28809
- .n8n-data-table-server th[data-v-a664ad0e]:first-child {
28809
+ .n8n-data-table-server th[data-v-aec71a76]:first-child {
28810
28810
  padding-left: 16px;
28811
28811
  }
28812
- .n8n-data-table-server th[data-v-a664ad0e]:last-child {
28812
+ .n8n-data-table-server th[data-v-aec71a76]:last-child {
28813
28813
  padding-right: 16px;
28814
28814
  }
28815
- .n8n-data-table-server tbody > tr[data-v-a664ad0e]:hover {
28815
+ .n8n-data-table-server tbody > tr[data-v-aec71a76]:hover {
28816
28816
  background-color: var(--color-background-light);
28817
28817
  }
28818
- .n8n-data-table-server tbody > tr:last-child > td[data-v-a664ad0e] {
28818
+ .n8n-data-table-server tbody > tr:last-child > td[data-v-aec71a76] {
28819
28819
  border-bottom: 0;
28820
28820
  }
28821
- .n8n-data-table-server tbody tr[data-v-a664ad0e] {
28821
+ .n8n-data-table-server tbody tr[data-v-aec71a76] {
28822
28822
  background-color: var(--color-background-xlight);
28823
28823
  border-bottom: 1px solid var(--color-foreground-base);
28824
28824
  }
28825
- .n8n-data-table-server td[data-v-a664ad0e] {
28825
+ .n8n-data-table-server td[data-v-aec71a76] {
28826
28826
  color: var(--color-text-dark);
28827
28827
  padding: 0 8px;
28828
28828
  height: 48px;
28829
28829
  }
28830
- .n8n-data-table-server td[data-v-a664ad0e]:first-child {
28830
+ .n8n-data-table-server td[data-v-aec71a76]:first-child {
28831
28831
  padding-left: 16px;
28832
28832
  }
28833
- .n8n-data-table-server td[data-v-a664ad0e]:last-child {
28833
+ .n8n-data-table-server td[data-v-aec71a76]:last-child {
28834
28834
  padding-right: 16px;
28835
28835
  }
28836
- .n8n-data-table-server-wrapper[data-v-a664ad0e] {
28836
+ .n8n-data-table-server-wrapper[data-v-aec71a76] {
28837
28837
  border-radius: 8px;
28838
28838
  border: 1px solid var(--color-foreground-base);
28839
28839
  overflow: hidden;
28840
28840
  }
28841
- .table-scroll[data-v-a664ad0e] {
28841
+ .table-scroll[data-v-aec71a76] {
28842
28842
  max-height: 100%;
28843
28843
  overflow: auto;
28844
28844
  position: relative;
28845
28845
  }
28846
- th.loading-row[data-v-a664ad0e] {
28846
+ th.loading-row[data-v-aec71a76] {
28847
28847
  background-color: transparent;
28848
28848
  padding: 0 !important;
28849
28849
  border: 0 !important;
28850
28850
  height: 0px;
28851
28851
  position: relative;
28852
28852
  }
28853
- .progress-bar[data-v-a664ad0e] {
28853
+ .progress-bar[data-v-aec71a76] {
28854
28854
  position: absolute;
28855
28855
  height: 2px;
28856
28856
  width: 100%;
28857
28857
  overflow: hidden;
28858
28858
  }
28859
- .progress-bar-value[data-v-a664ad0e] {
28859
+ .progress-bar-value[data-v-aec71a76] {
28860
28860
  width: 100%;
28861
28861
  height: 100%;
28862
28862
  background-color: var(--color-primary);
28863
- -webkit-animation: indeterminateAnimation-a664ad0e 1s infinite linear;
28864
- animation: indeterminateAnimation-a664ad0e 1s infinite linear;
28863
+ -webkit-animation: indeterminateAnimation-aec71a76 1s infinite linear;
28864
+ animation: indeterminateAnimation-aec71a76 1s infinite linear;
28865
28865
  -webkit-transform-origin: 0% 50%;
28866
28866
  transform-origin: 0% 50%;
28867
28867
  position: absolute;
28868
28868
  }
28869
- @-webkit-keyframes indeterminateAnimation-a664ad0e {
28869
+ @-webkit-keyframes indeterminateAnimation-aec71a76 {
28870
28870
  0% {
28871
28871
  -webkit-transform: translateX(0) scaleX(0);
28872
28872
  transform: translateX(0) scaleX(0);
@@ -28880,7 +28880,7 @@ th.loading-row[data-v-a664ad0e] {
28880
28880
  transform: translateX(100%) scaleX(0.5);
28881
28881
  }
28882
28882
  }
28883
- @keyframes indeterminateAnimation-a664ad0e {
28883
+ @keyframes indeterminateAnimation-aec71a76 {
28884
28884
  0% {
28885
28885
  -webkit-transform: translateX(0) scaleX(0);
28886
28886
  transform: translateX(0) scaleX(0);
@@ -28894,10 +28894,10 @@ th.loading-row[data-v-a664ad0e] {
28894
28894
  transform: translateX(100%) scaleX(0.5);
28895
28895
  }
28896
28896
  }
28897
- .table--loading td[data-v-a664ad0e] {
28897
+ .table--loading td[data-v-aec71a76] {
28898
28898
  opacity: 0.38;
28899
28899
  }
28900
- .table-pagination[data-v-a664ad0e] {
28900
+ .table-pagination[data-v-aec71a76] {
28901
28901
  margin-top: 10px;
28902
28902
  display: -webkit-box;
28903
28903
  display: -ms-flexbox;
@@ -28909,12 +28909,12 @@ th.loading-row[data-v-a664ad0e] {
28909
28909
  -ms-flex-align: center;
28910
28910
  align-items: center;
28911
28911
  }
28912
- .table-pagination__sizes[data-v-a664ad0e] {
28912
+ .table-pagination__sizes[data-v-aec71a76] {
28913
28913
  display: -webkit-box;
28914
28914
  display: -ms-flexbox;
28915
28915
  display: flex;
28916
28916
  }
28917
- .table-pagination__sizes__label[data-v-a664ad0e] {
28917
+ .table-pagination__sizes__label[data-v-aec71a76] {
28918
28918
  color: var(--color-text-base);
28919
28919
  background-color: var(--color-background-light);
28920
28920
  border: 1px solid var(--color-foreground-base);
@@ -28930,12 +28930,12 @@ th.loading-row[data-v-a664ad0e] {
28930
28930
  border-top-left-radius: var(--border-radius-base);
28931
28931
  border-bottom-left-radius: var(--border-radius-base);
28932
28932
  }
28933
- .table-pagination__sizes__select[data-v-a664ad0e] {
28933
+ .table-pagination__sizes__select[data-v-aec71a76] {
28934
28934
  --input-border-top-left-radius: 0;
28935
28935
  --input-border-bottom-left-radius: 0;
28936
28936
  width: 70px;
28937
28937
  }
28938
- .resizer[data-v-a664ad0e] {
28938
+ .resizer[data-v-aec71a76] {
28939
28939
  position: absolute;
28940
28940
  top: 0;
28941
28941
  height: 100%;
@@ -28952,19 +28952,19 @@ th.loading-row[data-v-a664ad0e] {
28952
28952
  display: none;
28953
28953
  z-index: 1;
28954
28954
  }
28955
- .resizer[data-v-a664ad0e]:hover {
28955
+ .resizer[data-v-aec71a76]:hover {
28956
28956
  display: block;
28957
28957
  }
28958
- .resizer.is-resizing[data-v-a664ad0e] {
28958
+ .resizer.is-resizing[data-v-aec71a76] {
28959
28959
  display: block;
28960
28960
  }
28961
- th:hover:not(:last-child) > .resizer[data-v-a664ad0e] {
28961
+ th:hover:not(:last-child) > .resizer[data-v-aec71a76] {
28962
28962
  display: block;
28963
28963
  }
28964
- .cell-align--end[data-v-a664ad0e] {
28964
+ .cell-align--end[data-v-aec71a76] {
28965
28965
  text-align: end;
28966
28966
  }
28967
- .cell-align--center[data-v-a664ad0e] {
28967
+ .cell-align--center[data-v-aec71a76] {
28968
28968
  text-align: center;
28969
28969
  }/* BEM support Func
28970
28970
  -------------------------- */
@@ -36567,17 +36567,17 @@ body:not([data-theme]) .pill--preview[data-v-5d2bfb89] {
36567
36567
  border-color: var(--color-primary-tint-1);
36568
36568
  background-color: var(--color-primary-tint-3);
36569
36569
  }.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.vue-recycle-scroller__slot{-webkit-box-flex:1;-ms-flex:auto 0 0px;flex:auto 0 0}.vue-recycle-scroller__item-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}
36570
- .full-height[data-v-645606aa] {
36570
+ .full-height[data-v-87c53cda] {
36571
36571
  height: 100%;
36572
36572
  }
36573
- .run-data-schema[data-v-645606aa] {
36573
+ .run-data-schema[data-v-87c53cda] {
36574
36574
  padding: 0;
36575
36575
  }
36576
- .scroller[data-v-645606aa] {
36576
+ .scroller[data-v-87c53cda] {
36577
36577
  padding: 0 var(--spacing-s);
36578
36578
  padding-bottom: var(--spacing-2xl);
36579
36579
  }
36580
- .no-results[data-v-645606aa] {
36580
+ .no-results[data-v-87c53cda] {
36581
36581
  display: flex;
36582
36582
  flex-direction: column;
36583
36583
  align-items: center;
@@ -36587,26 +36587,26 @@ body:not([data-theme]) .pill--preview[data-v-5d2bfb89] {
36587
36587
  gap: var(--spacing-2xs);
36588
36588
  padding: var(--spacing-s) var(--spacing-s) var(--spacing-xl) var(--spacing-s);
36589
36589
  }
36590
- .icon[data-v-645606aa] {
36590
+ .icon[data-v-87c53cda] {
36591
36591
  display: inline-flex;
36592
36592
  margin-left: var(--spacing-xl);
36593
36593
  color: var(--color-text-light);
36594
36594
  margin-bottom: var(--spacing-s);
36595
36595
  }
36596
- .notice[data-v-645606aa] {
36596
+ .notice[data-v-87c53cda] {
36597
36597
  padding-bottom: var(--spacing-xs);
36598
36598
  color: var(--color-text-base);
36599
36599
  font-size: var(--font-size-2xs);
36600
36600
  line-height: var(--font-line-height-loose);
36601
36601
  }
36602
- .notice[data-v-645606aa] {
36602
+ .notice[data-v-87c53cda] {
36603
36603
  margin-left: calc(var(--spacing-l) * var(--schema-level));
36604
36604
  }
36605
- .empty-schema[data-v-645606aa] {
36605
+ .empty-schema[data-v-87c53cda] {
36606
36606
  padding-bottom: var(--spacing-xs);
36607
36607
  margin-left: calc((var(--spacing-xl) * var(--schema-level)));
36608
36608
  }
36609
- .execute-button[data-v-645606aa] {
36609
+ .execute-button[data-v-87c53cda] {
36610
36610
  padding: 0;
36611
36611
  }
36612
36612
  /* BEM support Func
@@ -43739,34 +43739,34 @@ tr:hover ._ops_p819s_133:not(._disabled_p819s_123) {
43739
43739
  -------------------------- */
43740
43740
  /* BEM
43741
43741
  -------------------------- */
43742
- .workflow-settings[data-v-a47dcfad] {
43742
+ .workflow-settings[data-v-1564b8fa] {
43743
43743
  font-size: var(--font-size-s);
43744
43744
  }
43745
- .workflow-settings .el-row[data-v-a47dcfad] {
43745
+ .workflow-settings .el-row[data-v-1564b8fa] {
43746
43746
  padding: 0.25em 0;
43747
43747
  }
43748
- .setting-name[data-v-a47dcfad] {
43748
+ .setting-name[data-v-1564b8fa] {
43749
43749
  line-height: 32px;
43750
43750
  }
43751
- .setting-name svg[data-v-a47dcfad] {
43751
+ .setting-name svg[data-v-1564b8fa] {
43752
43752
  display: inline-flex;
43753
43753
  opacity: 0;
43754
43754
  transition: opacity 0.3s ease;
43755
43755
  }
43756
- .setting-name:hover svg[data-v-a47dcfad] {
43756
+ .setting-name:hover svg[data-v-1564b8fa] {
43757
43757
  opacity: 1;
43758
43758
  }
43759
- .timeout-input[data-v-a47dcfad] {
43759
+ .timeout-input[data-v-1564b8fa] {
43760
43760
  margin-left: 5px;
43761
43761
  }
43762
- .time-saved[data-v-a47dcfad] {
43762
+ .time-saved[data-v-1564b8fa] {
43763
43763
  display: flex;
43764
43764
  align-items: center;
43765
43765
  }
43766
- .time-saved[data-v-a47dcfad] .el-input {
43766
+ .time-saved[data-v-1564b8fa] .el-input {
43767
43767
  width: 64px;
43768
43768
  }
43769
- .time-saved span[data-v-a47dcfad] {
43769
+ .time-saved span[data-v-1564b8fa] {
43770
43770
  margin-left: var(--spacing-2xs);
43771
43771
  }/* BEM support Func
43772
43772
  -------------------------- */
@@ -1,4 +1,4 @@
1
- import { fW as arrayMap, fX as getAllKeysIn, fY as baseIteratee, fZ as basePickBy } from "./index-D76xStxp.js";
1
+ import { fX as arrayMap, fY as getAllKeysIn, fZ as baseIteratee, f_ as basePickBy } from "./index-B-Y7sDIj.js";
2
2
  function pickBy(object, predicate) {
3
3
  if (object == null) {
4
4
  return {};
@@ -1,4 +1,4 @@
1
- import { cM as assert, c$ as doesNodeHaveCredentialsToFill, V as VIEWS, c0 as tryToParseNumber, d0 as getNewWorkflow, d1 as replaceAllTemplateNodeCredentials, c4 as getNodesWithNormalizedPosition } from "./index-D76xStxp.js";
1
+ import { cL as assert, c_ as doesNodeHaveCredentialsToFill, V as VIEWS, b$ as tryToParseNumber, c$ as getNewWorkflow, d0 as replaceAllTemplateNodeCredentials, c3 as getNodesWithNormalizedPosition } from "./index-B-Y7sDIj.js";
2
2
  async function createWorkflowFromTemplate(opts) {
3
3
  const { credentialOverrides, nodeTypeProvider, rootStore, template, workflowsStore } = opts;
4
4
  const workflowData = await getNewWorkflow(rootStore.restApiContext, { name: template.name });
@@ -1,4 +1,4 @@
1
- import { L as useUIStore, a2 as useCanvasStore, r as ref, q as computed, V as VIEWS, c as useI18n } from "./index-D76xStxp.js";
1
+ import { L as useUIStore, a2 as useCanvasStore, r as ref, q as computed, V as VIEWS, c as useI18n } from "./index-B-Y7sDIj.js";
2
2
  function useBeforeUnload({ route }) {
3
3
  const uiStore = useUIStore();
4
4
  const canvasStore = useCanvasStore();
@@ -1,5 +1,5 @@
1
- import { d as defineComponent, fa as getCurrentScope, aZ as inject, fb as effectScope, I as watch, cN as getCurrentInstance, fc as useSlots, b7 as onUnmounted, i as createElementBlock, g as openBlock, j as createVNode, x as renderSlot, w as withCtx, k as createBaseVNode, m as unref, r as ref, fd as useAttrs, f as createCommentVNode, e as createBlock, b3 as mergeProps, F as Fragment, bI as toRef, fe as Teleport, ff as createPropsRestProxy, q as computed, o as onMounted, n as normalizeClass, bL as reactive, fg as onScopeDispose, aB as onBeforeMount, D as renderList, B as normalizeStyle, z as nextTick, y as onBeforeUnmount, fh as isMemoSame, t as toDisplayString, b2 as resolveDynamicComponent, l as createTextVNode, a_ as isRef, a$ as toRefs$1, fi as customRef, bd as provide, h as resolveComponent, as as h, fj as toValue$1, fk as markRaw, fl as readonly, _ as _export_sfc$1, c as useI18n, bK as KeyboardShortcutTooltip, bu as NodeConnectionTypes, fm as CanvasKey, a0 as useCssModule, L as useUIStore, bw as useNodeTypesStore, U as useWorkflowsStore, a3 as useSourceControlStore, a9 as getResourcePermissions, eX as isPresent, fn as getMousePosition$1, aA as STICKY_NODE_TYPE, bi as usePinnedData, fo as NOT_DUPLICATABLE_NODE_TYPES, fp as isExecutable, fq as N8nActionDropdown, cl as getDefaultExportFromCjs, f6 as NODE_SIZE, bR as CanvasNodeRenderType, f7 as GRID_SIZE, fr as useThrottleFn, fs as useActiveElement, ft as useDeviceSupport, fu as useEventListener$1, fv as onKeyDown, fw as onKeyUp, bc as watchEffect, b0 as normalizeProps, aW as createSlots, c1 as isValidNodeConnectionType, c2 as CanvasConnectionMode, fx as refThrottled, fy as CanvasNodeKey, fz as mergeModels, fA as useModel, bx as useNodeHelpers, fB as TitledList, aS as N8nTooltip, fC as CanvasNodeDirtiness, bC as _sfc_main$z, J as withModifiers, aj as nodeViewEventBus, c5 as NODE_CREATOR_OPEN_SOURCES, fD as CanvasNodeHandleKey, aC as withDirectives, aD as vShow, fE as Transition$2, b as useRouter, by as useRunWorkflow, bz as LOGS_PANEL_STATE, bv as CHAT_TRIGGER_NODE_TYPE, C as createEventBus, fF as isEqual, bY as Suspense, b1 as guardReactiveProps, fG as useNodeDirtiness, eS as CUSTOM_API_CALL_KEY, br as getNodeInputs, bt as getNodeOutputs, dx as getTriggerNodeServiceName, ci as sanitizeHtml, fH as nodeIssuesToString, fI as WAIT_NODE_TYPE, d$ as SEND_AND_WAIT_OPERATION, fJ as FORM_NODE_TYPE, fK as WAIT_INDEFINITELY, fL as SIMULATE_NODE_TYPE, fM as SIMULATE_TRIGGER_NODE_TYPE, fN as getNodeIconSource } from "./index-D76xStxp.js";
2
- import { p as parseCanvasConnectionHandleString, a as useNodeCreatorStore, b as useCanvasOperations, i as insertSpacersBetweenEndpoints, c as createCanvasConnectionHandleString, m as mapLegacyEndpointsToCanvasConnectionPort, e as checkOverlap, f as mapLegacyConnectionsToCanvasConnections } from "./useCanvasOperations-CAthHfOB.js";
1
+ import { d as defineComponent, fb as getCurrentScope, aZ as inject, fc as effectScope, I as watch, cM as getCurrentInstance, fd as useSlots, b7 as onUnmounted, i as createElementBlock, g as openBlock, j as createVNode, x as renderSlot, w as withCtx, k as createBaseVNode, m as unref, r as ref, fe as useAttrs, f as createCommentVNode, e as createBlock, b3 as mergeProps, F as Fragment, bI as toRef, ff as Teleport, fg as createPropsRestProxy, q as computed, o as onMounted, n as normalizeClass, bL as reactive, fh as onScopeDispose, aB as onBeforeMount, D as renderList, B as normalizeStyle, z as nextTick, y as onBeforeUnmount, fi as isMemoSame, t as toDisplayString, b2 as resolveDynamicComponent, l as createTextVNode, a_ as isRef, a$ as toRefs$1, fj as customRef, bd as provide, h as resolveComponent, as as h, fk as toValue$1, fl as markRaw, fm as readonly, _ as _export_sfc$1, c as useI18n, bK as KeyboardShortcutTooltip, bu as NodeConnectionTypes, fn as CanvasKey, a0 as useCssModule, L as useUIStore, bw as useNodeTypesStore, U as useWorkflowsStore, a3 as useSourceControlStore, a9 as getResourcePermissions, eY as isPresent, fo as getMousePosition$1, aA as STICKY_NODE_TYPE, bi as usePinnedData, fp as NOT_DUPLICATABLE_NODE_TYPES, fq as isExecutable, fr as N8nActionDropdown, ck as getDefaultExportFromCjs, f7 as NODE_SIZE, bR as CanvasNodeRenderType, f8 as GRID_SIZE, fs as useThrottleFn, ft as useActiveElement, fu as useDeviceSupport, fv as useEventListener$1, fw as onKeyDown, fx as onKeyUp, bc as watchEffect, b0 as normalizeProps, aW as createSlots, c0 as isValidNodeConnectionType, c1 as CanvasConnectionMode, fy as refThrottled, fz as CanvasNodeKey, fA as mergeModels, fB as useModel, bx as useNodeHelpers, fC as TitledList, aS as N8nTooltip, fD as CanvasNodeDirtiness, bC as _sfc_main$z, J as withModifiers, aj as nodeViewEventBus, c4 as NODE_CREATOR_OPEN_SOURCES, fE as CanvasNodeHandleKey, aC as withDirectives, aD as vShow, fF as Transition$2, b as useRouter, by as useRunWorkflow, bz as LOGS_PANEL_STATE, bv as CHAT_TRIGGER_NODE_TYPE, C as createEventBus, fG as isEqual, bY as Suspense, b1 as guardReactiveProps, fH as useNodeDirtiness, eS as CUSTOM_API_CALL_KEY, br as getNodeInputs, bt as getNodeOutputs, dw as getTriggerNodeServiceName, ch as sanitizeHtml, fI as nodeIssuesToString, fJ as WAIT_NODE_TYPE, d_ as SEND_AND_WAIT_OPERATION, fK as FORM_NODE_TYPE, fL as WAIT_INDEFINITELY, fM as SIMULATE_NODE_TYPE, fN as SIMULATE_TRIGGER_NODE_TYPE, fO as getNodeIconSource } from "./index-B-Y7sDIj.js";
2
+ import { p as parseCanvasConnectionHandleString, a as useNodeCreatorStore, b as useCanvasOperations, i as insertSpacersBetweenEndpoints, c as createCanvasConnectionHandleString, m as mapLegacyEndpointsToCanvasConnectionPort, e as checkOverlap, f as mapLegacyConnectionsToCanvasConnections } from "./useCanvasOperations-DYORubSM.js";
3
3
  function tryOnScopeDispose(fn) {
4
4
  if (getCurrentScope()) {
5
5
  onScopeDispose(fn);
@@ -17656,7 +17656,7 @@ function useCanvasNode() {
17656
17656
  const executionStatus = computed(() => data.value.execution.status);
17657
17657
  const executionWaiting = computed(() => data.value.execution.waiting);
17658
17658
  const executionRunning = computed(() => data.value.execution.running);
17659
- const executionRunningThrottled = refThrottled(executionRunning, 50);
17659
+ const executionRunningThrottled = refThrottled(executionRunning, 300);
17660
17660
  const runDataOutputMap = computed(() => data.value.runData.outputMap);
17661
17661
  const runDataIterations = computed(() => data.value.runData.iterations);
17662
17662
  const hasRunData = computed(() => data.value.runData.visible);
@@ -1,4 +1,4 @@
1
- import { dM as baseSlice, dN as toString, dO as createCompounder, dP as SetCache, dQ as arrayIncludes, dR as cacheHas, dS as baseRest, dT as isArrayLikeObject, dU as baseFlatten, dV as CORE_NODES_CATEGORY, dW as DEFAULT_SUBCATEGORY, bj as v4, p as useSettingsStore, dX as AI_TRANSFORM_NODE_TYPE, bn as AI_SUBCATEGORY, dY as HUMAN_IN_THE_LOOP_CATEGORY, bo as AI_CATEGORY_AGENTS, dZ as sortBy, de as i18n, d_ as AI_CATEGORY_OTHER_TOOLS, d$ as SEND_AND_WAIT_OPERATION, e0 as AI_CATEGORY_DOCUMENT_LOADERS, e1 as AI_CATEGORY_LANGUAGE_MODELS, e2 as AI_CATEGORY_MEMORY, e3 as AI_CATEGORY_OUTPUTPARSER, e4 as AI_CATEGORY_RETRIEVERS, e5 as AI_CATEGORY_TEXT_SPLITTERS, e6 as AI_WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, e7 as AI_CODE_TOOL_LANGCHAIN_NODE_TYPE, c as useI18n, e8 as AI_CATEGORY_TOOLS, e9 as AI_CATEGORY_EMBEDDING, ea as AI_CATEGORY_VECTOR_STORES, eb as AI_UNCATEGORIZED_CATEGORY, ec as AI_OTHERS_NODE_CREATOR_VIEW, bu as NodeConnectionTypes, bw as useNodeTypesStore, aP as useTemplatesStore, ed as AI_NODE_CREATOR_VIEW, ee as RSS_READ_NODE_TYPE, ef as EMAIL_SEND_NODE_TYPE, eg as SET_NODE_TYPE, eh as CODE_NODE_TYPE, ei as DATETIME_NODE_TYPE, ej as FILTER_NODE_TYPE, ek as REMOVE_DUPLICATES_NODE_TYPE, el as SPLIT_OUT_NODE_TYPE, em as LIMIT_NODE_TYPE, en as SUMMARIZE_NODE_TYPE, eo as AGGREGATE_NODE_TYPE, ep as MERGE_NODE_TYPE, eq as HTML_NODE_TYPE, er as MARKDOWN_NODE_TYPE, es as XML_NODE_TYPE, et as CRYPTO_NODE_TYPE, eu as EXTRACT_FROM_FILE_NODE_TYPE, ev as CONVERT_TO_FILE_NODE_TYPE, ew as COMPRESSION_NODE_TYPE, ex as EDIT_IMAGE_NODE_TYPE, ey as TRANSFORM_DATA_SUBCATEGORY, ez as IF_NODE_TYPE, eA as SPLIT_IN_BATCHES_NODE_TYPE, eB as FLOWS_CONTROL_SUBCATEGORY, eC as HTTP_REQUEST_NODE_TYPE, eD as WEBHOOK_NODE_TYPE, eE as HELPERS_SUBCATEGORY, eF as HITL_SUBCATEGORY, eG as TRIGGER_NODE_CREATOR_VIEW, eH as REGULAR_NODE_CREATOR_VIEW, eI as MANUAL_TRIGGER_NODE_TYPE, eJ as EMAIL_IMAP_NODE_TYPE, eK as SCHEDULE_TRIGGER_NODE_TYPE, eL as FORM_TRIGGER_NODE_TYPE, dB as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, bv as CHAT_TRIGGER_NODE_TYPE, eM as OTHER_TRIGGER_NODES_SUBCATEGORY, bp as AI_CATEGORY_CHAINS, S as defineStore, r as ref, q as computed, a2 as useCanvasStore, eN as AI_CATEGORY_ROOT_NODES, z as nextTick, eO as getThemedValue, L as useUIStore, bq as AI_CODE_NODE_TYPE, eP as AI_TRANSFORM_NODE_TYPE$1, eQ as isValidCanvasConnectionMode, c2 as CanvasConnectionMode, c1 as isValidNodeConnectionType, U as useWorkflowsStore, au as useNDVStore, aR as useExternalHooks, eR as isVueFlowConnection, br as getNodeInputs, eS as CUSTOM_API_CALL_KEY, Y as STORES, c5 as NODE_CREATOR_OPEN_SOURCES, ai as useTelemetry, a1 as useRootStore, bM as useCredentialsStore, bP as useHistoryStore, E as useTagsStore, av as useExecutionsStore, a4 as useProjectsStore, a as useToast, a7 as useWorkflowHelpers, bx as useNodeHelpers, ba as useClipboard, eT as UPDATE_WEBHOOK_ID_NODE_TYPES, dw as generateNodesGraph, eU as getNewNodePosition, eV as AddConnectionCommand, aA as STICKY_NODE_TYPE, bt as getNodeOutputs, eW as RemoveConnectionCommand, ac as EnterpriseEditionFeature, cb as deepCopy, eX as isPresent, eY as RemoveNodeCommand, eZ as RenameNodeCommand, bi as usePinnedData, e_ as useDataSchema, e$ as MoveNodeCommand, f0 as DEFAULT_NODE_SIZE, f1 as CONFIGURATION_NODE_SIZE, bs as getConnectionTypes, f2 as generateOffsets, f3 as CONFIGURABLE_NODE_SIZE, f4 as PUSH_NODES_OFFSET, f5 as AddNodeCommand, f6 as NODE_SIZE, f7 as GRID_SIZE, f8 as getNodeParameters } from "./index-D76xStxp.js";
1
+ import { dL as baseSlice, dM as toString, dN as createCompounder, dO as SetCache, dP as arrayIncludes, dQ as cacheHas, dR as baseRest, dS as isArrayLikeObject, dT as baseFlatten, dU as CORE_NODES_CATEGORY, dV as DEFAULT_SUBCATEGORY, bj as v4, p as useSettingsStore, dW as AI_TRANSFORM_NODE_TYPE, bn as AI_SUBCATEGORY, dX as HUMAN_IN_THE_LOOP_CATEGORY, bo as AI_CATEGORY_AGENTS, dY as sortBy, dd as i18n, dZ as AI_CATEGORY_OTHER_TOOLS, d_ as SEND_AND_WAIT_OPERATION, d$ as AI_CATEGORY_DOCUMENT_LOADERS, e0 as AI_CATEGORY_LANGUAGE_MODELS, e1 as AI_CATEGORY_MEMORY, e2 as AI_CATEGORY_OUTPUTPARSER, e3 as AI_CATEGORY_RETRIEVERS, e4 as AI_CATEGORY_TEXT_SPLITTERS, e5 as AI_WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, e6 as AI_CODE_TOOL_LANGCHAIN_NODE_TYPE, c as useI18n, e7 as AI_CATEGORY_TOOLS, e8 as AI_CATEGORY_EMBEDDING, e9 as AI_CATEGORY_VECTOR_STORES, ea as AI_UNCATEGORIZED_CATEGORY, eb as AI_OTHERS_NODE_CREATOR_VIEW, bu as NodeConnectionTypes, bw as useNodeTypesStore, aP as useTemplatesStore, ec as AI_NODE_CREATOR_VIEW, ed as RSS_READ_NODE_TYPE, ee as EMAIL_SEND_NODE_TYPE, ef as SET_NODE_TYPE, eg as CODE_NODE_TYPE, eh as DATETIME_NODE_TYPE, ei as FILTER_NODE_TYPE, ej as REMOVE_DUPLICATES_NODE_TYPE, ek as SPLIT_OUT_NODE_TYPE, el as LIMIT_NODE_TYPE, em as SUMMARIZE_NODE_TYPE, en as AGGREGATE_NODE_TYPE, eo as MERGE_NODE_TYPE, ep as HTML_NODE_TYPE, eq as MARKDOWN_NODE_TYPE, er as XML_NODE_TYPE, es as CRYPTO_NODE_TYPE, et as EXTRACT_FROM_FILE_NODE_TYPE, eu as CONVERT_TO_FILE_NODE_TYPE, ev as COMPRESSION_NODE_TYPE, ew as EDIT_IMAGE_NODE_TYPE, ex as TRANSFORM_DATA_SUBCATEGORY, ey as IF_NODE_TYPE, ez as SPLIT_IN_BATCHES_NODE_TYPE, eA as FLOWS_CONTROL_SUBCATEGORY, eB as HTTP_REQUEST_NODE_TYPE, eC as WEBHOOK_NODE_TYPE, eD as HELPERS_SUBCATEGORY, eE as HITL_SUBCATEGORY, eF as TRIGGER_NODE_CREATOR_VIEW, eG as REGULAR_NODE_CREATOR_VIEW, eH as MANUAL_TRIGGER_NODE_TYPE, eI as EMAIL_IMAP_NODE_TYPE, eJ as SCHEDULE_TRIGGER_NODE_TYPE, eK as FORM_TRIGGER_NODE_TYPE, dA as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, bv as CHAT_TRIGGER_NODE_TYPE, eL as OTHER_TRIGGER_NODES_SUBCATEGORY, bp as AI_CATEGORY_CHAINS, S as defineStore, r as ref, q as computed, a2 as useCanvasStore, eM as AI_CATEGORY_ROOT_NODES, eN as AI_CATEGORY_MCP_NODES, z as nextTick, eO as getThemedValue, L as useUIStore, bq as AI_CODE_NODE_TYPE, eP as AI_TRANSFORM_NODE_TYPE$1, eQ as isValidCanvasConnectionMode, c1 as CanvasConnectionMode, c0 as isValidNodeConnectionType, U as useWorkflowsStore, au as useNDVStore, aR as useExternalHooks, eR as isVueFlowConnection, br as getNodeInputs, eS as CUSTOM_API_CALL_KEY, Y as STORES, c4 as NODE_CREATOR_OPEN_SOURCES, ai as useTelemetry, a1 as useRootStore, bM as useCredentialsStore, bP as useHistoryStore, E as useTagsStore, av as useExecutionsStore, a4 as useProjectsStore, a as useToast, a7 as useWorkflowHelpers, bx as useNodeHelpers, ba as useClipboard, eT as MCP_TRIGGER_NODE_TYPE, eU as UPDATE_WEBHOOK_ID_NODE_TYPES, dv as generateNodesGraph, eV as getNewNodePosition, eW as AddConnectionCommand, aA as STICKY_NODE_TYPE, bt as getNodeOutputs, eX as RemoveConnectionCommand, ac as EnterpriseEditionFeature, ca as deepCopy, eY as isPresent, eZ as RemoveNodeCommand, e_ as RenameNodeCommand, bi as usePinnedData, e$ as useDataSchema, f0 as MoveNodeCommand, f1 as DEFAULT_NODE_SIZE, f2 as CONFIGURATION_NODE_SIZE, bs as getConnectionTypes, f3 as generateOffsets, f4 as CONFIGURABLE_NODE_SIZE, f5 as PUSH_NODES_OFFSET, f6 as AddNodeCommand, f7 as NODE_SIZE, f8 as GRID_SIZE, f9 as getNodeParameters } from "./index-B-Y7sDIj.js";
2
2
  function castSlice(array, start, end) {
3
3
  var length = array.length;
4
4
  end = end === void 0 ? length : end;
@@ -344,11 +344,15 @@ function subcategorizeItems(items) {
344
344
  ];
345
345
  return items.reduce((acc, item) => {
346
346
  let subcategories = [DEFAULT_SUBCATEGORY];
347
- WHITE_LISTED_SUBCATEGORIES.forEach((category) => {
347
+ const matchedSubcategories = WHITE_LISTED_SUBCATEGORIES.flatMap((category) => {
348
348
  if (item.codex?.categories?.includes(category)) {
349
- subcategories = item.codex?.subcategories?.[category] ?? [];
349
+ return item.codex?.subcategories?.[category] ?? [];
350
350
  }
351
+ return [];
351
352
  });
353
+ if (matchedSubcategories.length > 0) {
354
+ subcategories = matchedSubcategories;
355
+ }
352
356
  subcategories.forEach((subcategory) => {
353
357
  if (!acc[subcategory]) {
354
358
  acc[subcategory] = [];
@@ -446,10 +450,8 @@ const formatTriggerActionName = (actionPropertyName) => {
446
450
  }
447
451
  return noCase(name);
448
452
  };
449
- function getAiNodesBySubcategory(nodes, subcategory) {
450
- return nodes.filter(
451
- (node) => !node.hidden && node.codex?.subcategories?.[AI_SUBCATEGORY]?.includes(subcategory)
452
- ).map((node) => ({
453
+ function getNodeView(node) {
454
+ return {
453
455
  key: node.name,
454
456
  type: "node",
455
457
  properties: {
@@ -462,7 +464,12 @@ function getAiNodesBySubcategory(nodes, subcategory) {
462
464
  icon: node.icon,
463
465
  iconUrl: node.iconUrl
464
466
  }
465
- })).sort((a, b) => a.properties.displayName.localeCompare(b.properties.displayName));
467
+ };
468
+ }
469
+ function getAiNodesBySubcategory(nodes, subcategory) {
470
+ return nodes.filter(
471
+ (node) => !node.hidden && node.codex?.subcategories?.[AI_SUBCATEGORY]?.includes(subcategory)
472
+ ).map(getNodeView).sort((a, b) => a.properties.displayName.localeCompare(b.properties.displayName));
466
473
  }
467
474
  function AIView(_nodes) {
468
475
  const i18n2 = useI18n();
@@ -473,6 +480,8 @@ function AIView(_nodes) {
473
480
  const websiteCategoryURLParams = templatesStore.websiteTemplateRepositoryParameters;
474
481
  websiteCategoryURLParams.append("utm_user_role", "AdvancedAI");
475
482
  const websiteCategoryURL = templatesStore.constructTemplateRepositoryURL(websiteCategoryURLParams);
483
+ const aiTransformNode = nodeTypesStore.getNodeType(AI_TRANSFORM_NODE_TYPE);
484
+ const transformNode = aiTransformNode ? [getNodeView(aiTransformNode)] : [];
476
485
  return {
477
486
  value: AI_NODE_CREATOR_VIEW,
478
487
  title: i18n2.baseText("nodeCreator.aiPanel.aiNodes"),
@@ -495,6 +504,7 @@ function AIView(_nodes) {
495
504
  },
496
505
  ...agentNodes,
497
506
  ...chainNodes,
507
+ ...transformNode,
498
508
  {
499
509
  key: AI_OTHERS_NODE_CREATOR_VIEW,
500
510
  type: "view",
@@ -689,7 +699,6 @@ function TriggerView() {
689
699
  description: i18n2.baseText("nodeCreator.triggerHelperPanel.webhookTriggerDescription"),
690
700
  iconData: {
691
701
  type: "file",
692
- icon: "webhook",
693
702
  fileBuffer: "/static/webhook-icon.svg"
694
703
  }
695
704
  }
@@ -705,7 +714,6 @@ function TriggerView() {
705
714
  description: i18n2.baseText("nodeCreator.triggerHelperPanel.formTriggerDescription"),
706
715
  iconData: {
707
716
  type: "file",
708
- icon: "form",
709
717
  fileBuffer: "/static/form-grey.svg"
710
718
  }
711
719
  }
@@ -1119,14 +1127,13 @@ const useViewStacks = defineStore("nodeCreatorViewStacks", () => {
1119
1127
  const aiRootNodes = filterAiRootNodes(aiNodes);
1120
1128
  const aiSubNodes = difference(aiNodes, aiRootNodes);
1121
1129
  aiSubNodes.forEach((node) => {
1122
- const section = node.properties.codex?.subcategories?.[AI_SUBCATEGORY]?.[0];
1130
+ const subcategories = node.properties.codex?.subcategories ?? {};
1131
+ const section = subcategories[AI_SUBCATEGORY]?.[0];
1123
1132
  if (section) {
1124
- const subSection = node.properties.codex?.subcategories?.[section]?.[0];
1133
+ const subSection = subcategories[section]?.[0];
1125
1134
  const sectionKey = subSection ?? section;
1126
1135
  const currentItems = sectionsMap.get(sectionKey)?.items ?? [];
1127
- const isSubnodesSection = !node.properties.codex?.subcategories?.[AI_SUBCATEGORY].includes(
1128
- AI_CATEGORY_ROOT_NODES
1129
- );
1136
+ const isSubnodesSection = !(subcategories[AI_SUBCATEGORY].includes(AI_CATEGORY_ROOT_NODES) || subcategories[AI_SUBCATEGORY].includes(AI_CATEGORY_MCP_NODES));
1130
1137
  let title = section;
1131
1138
  if (isSubnodesSection) {
1132
1139
  title = `${section} (${i18n2.baseText("nodeCreator.subnodes")})`;
@@ -2499,7 +2506,7 @@ function useCanvasOperations({ router }) {
2499
2506
  if (nodeTypeDescription.webhooks?.length && !node.webhookId) {
2500
2507
  nodeHelpers.assignWebhookId(node);
2501
2508
  }
2502
- if ([WEBHOOK_NODE_TYPE, FORM_TRIGGER_NODE_TYPE].includes(node.type) && node.parameters.path === "") {
2509
+ if ([WEBHOOK_NODE_TYPE, FORM_TRIGGER_NODE_TYPE, MCP_TRIGGER_NODE_TYPE].includes(node.type) && node.parameters.path === "") {
2503
2510
  node.parameters.path = node.webhookId;
2504
2511
  }
2505
2512
  }
@@ -1,5 +1,5 @@
1
- import { W as useRoute, a3 as useSourceControlStore, U as useWorkflowsStore, q as computed, b as useRouter, bw as useNodeTypesStore, bS as START_NODE_TYPE } from "./index-D76xStxp.js";
2
- import { b as useCanvasOperations } from "./useCanvasOperations-CAthHfOB.js";
1
+ import { W as useRoute, a3 as useSourceControlStore, U as useWorkflowsStore, q as computed, b as useRouter, bw as useNodeTypesStore, bS as START_NODE_TYPE } from "./index-B-Y7sDIj.js";
2
+ import { b as useCanvasOperations } from "./useCanvasOperations-DYORubSM.js";
3
3
  function useClearExecutionButtonVisible() {
4
4
  const route = useRoute();
5
5
  const sourceControlStore = useSourceControlStore();
@@ -1,4 +1,4 @@
1
- import { b as useRouter, a as useToast, U as useWorkflowsStore, p as useSettingsStore, L as useUIStore, a8 as usePageRedirectionHelper, q as computed, ac as EnterpriseEditionFeature, c as useI18n, ch as DEBUG_PAYWALL_MODAL_KEY, as as h, ci as sanitizeHtml, ak as useMessage, al as MODAL_CONFIRM, V as VIEWS, ai as useTelemetry, a1 as useRootStore, cj as isFullExecutionResponse } from "./index-D76xStxp.js";
1
+ import { b as useRouter, a as useToast, U as useWorkflowsStore, p as useSettingsStore, L as useUIStore, a8 as usePageRedirectionHelper, q as computed, ac as EnterpriseEditionFeature, c as useI18n, cg as DEBUG_PAYWALL_MODAL_KEY, as as h, ch as sanitizeHtml, ak as useMessage, al as MODAL_CONFIRM, V as VIEWS, ai as useTelemetry, a1 as useRootStore, ci as isFullExecutionResponse } from "./index-B-Y7sDIj.js";
2
2
  const useExecutionDebugging = () => {
3
3
  const telemetry = useTelemetry();
4
4
  const router = useRouter();
@@ -1,5 +1,5 @@
1
- import { c as convertToDisplayDate } from "./dateFormatter-Cdy8FmTT.js";
2
- import { b as useRouter, V as VIEWS, ai as useTelemetry, c as useI18n } from "./index-D76xStxp.js";
1
+ import { c as convertToDisplayDate } from "./dateFormatter-C1XlsLk2.js";
2
+ import { b as useRouter, V as VIEWS, ai as useTelemetry, c as useI18n } from "./index-B-Y7sDIj.js";
3
3
  function useExecutionHelpers() {
4
4
  const i18n = useI18n();
5
5
  const router = useRouter();
@@ -1,6 +1,6 @@
1
- import { gP as require$$0, cl as getDefaultExportFromCjs, a as useToast, m as unref, cM as assert, gQ as CURL_IMPORT_NOT_SUPPORTED_PROTOCOLS, gR as CURL_IMPORT_NODES_PROTOCOLS, c as useI18n, gS as get } from "./index-D76xStxp.js";
1
+ import { gR as require$$0, ck as getDefaultExportFromCjs, a as useToast, m as unref, cL as assert, gS as CURL_IMPORT_NOT_SUPPORTED_PROTOCOLS, gT as CURL_IMPORT_NODES_PROTOCOLS, c as useI18n, gU as get } from "./index-B-Y7sDIj.js";
2
2
  import { c as commonjsRequire } from "./_commonjs-dynamic-modules-TGKdzP3c.js";
3
- import { i as importCurlEventBus } from "./import-curl-DO7fae0m.js";
3
+ import { i as importCurlEventBus } from "./import-curl-BlRUX0EU.js";
4
4
  class CCError extends Error {
5
5
  }
6
6
  const UTF8encoder = new TextEncoder();
@@ -1,6 +1,6 @@
1
- import { dq as makeRestApiRequest, S as defineStore, a1 as useRootStore, d as defineComponent, cc as resolveDirective, i as createElementBlock, g as openBlock, aC as withDirectives, k as createBaseVNode, t as toDisplayString, m as unref, c as useI18n, a7 as useWorkflowHelpers, bx as useNodeHelpers, a as useToast, bM as useCredentialsStore, bw as useNodeTypesStore, T as usePushConnectionStore, p as useSettingsStore, L as useUIStore, U as useWorkflowsStore, dr as useAssistantStore, aw as usePostHog, r as ref, ds as clearPopupWindowState, b$ as AI_CREDITS_EXPERIMENT, ai as useTelemetry, dt as parse, du as hasTrimmedItem, dv as codeNodeEditorEventBus, am as WORKFLOW_SETTINGS_MODAL_KEY, dw as generateNodesGraph, as as h, dx as getTriggerNodeServiceName, dy as hasTrimmedData, aR as useExternalHooks, dz as useSchemaPreviewStore } from "./index-D76xStxp.js";
2
- import { g as globalLinkActionsEventBus } from "./global-link-actions-CfWIYTMM.js";
3
- import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-C5xkiwuo.js";
1
+ import { dp as makeRestApiRequest, S as defineStore, a1 as useRootStore, d as defineComponent, cb as resolveDirective, i as createElementBlock, g as openBlock, aC as withDirectives, k as createBaseVNode, t as toDisplayString, m as unref, c as useI18n, a7 as useWorkflowHelpers, bx as useNodeHelpers, a as useToast, bM as useCredentialsStore, bw as useNodeTypesStore, T as usePushConnectionStore, p as useSettingsStore, L as useUIStore, U as useWorkflowsStore, dq as useAssistantStore, r as ref, dr as clearPopupWindowState, ai as useTelemetry, ds as parse, dt as hasTrimmedItem, du as codeNodeEditorEventBus, am as WORKFLOW_SETTINGS_MODAL_KEY, dv as generateNodesGraph, as as h, dw as getTriggerNodeServiceName, dx as hasTrimmedData, aR as useExternalHooks, dy as useSchemaPreviewStore } from "./index-B-Y7sDIj.js";
2
+ import { g as globalLinkActionsEventBus } from "./global-link-actions-B6woWi9D.js";
3
+ import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-CCJdF1g3.js";
4
4
  const GET_STATUS_ENDPOINT = "/orchestration/worker/status";
5
5
  const sendGetWorkerStatus = async (context) => {
6
6
  await makeRestApiRequest(context, "POST", GET_STATUS_ENDPOINT);
@@ -102,7 +102,6 @@ function usePushConnection({ router }) {
102
102
  const uiStore = useUIStore();
103
103
  const workflowsStore = useWorkflowsStore();
104
104
  const assistantStore = useAssistantStore();
105
- const posthogStore = usePostHog();
106
105
  const retryTimeout = ref(null);
107
106
  const pushMessageQueue = ref([]);
108
107
  const removeEventListener = ref(null);
@@ -159,6 +158,11 @@ function usePushConnection({ router }) {
159
158
  queuePushMessage(receivedData, retryAttempts);
160
159
  return false;
161
160
  }
161
+ if (receivedData.type === "executionStarted") {
162
+ if (!workflowsStore.activeExecutionId) {
163
+ workflowsStore.setActiveExecutionId(receivedData.data.executionId);
164
+ }
165
+ }
162
166
  if (receivedData.type === "nodeExecuteAfter" || receivedData.type === "nodeExecuteBefore" || receivedData.type === "executionStarted") {
163
167
  if (!uiStore.isActionActive.workflowRunning) {
164
168
  return false;
@@ -198,11 +202,7 @@ function usePushConnection({ router }) {
198
202
  clearPopupWindowState();
199
203
  const workflow2 = workflowsStore.getWorkflowById(receivedData.data.workflowId);
200
204
  if (workflow2?.meta?.templateId) {
201
- const isAiCreditsExperimentEnabled = posthogStore.getVariant(AI_CREDITS_EXPERIMENT.name) === AI_CREDITS_EXPERIMENT.variant;
202
- const easyAiWorkflowJson = getEasyAiWorkflowJson({
203
- isInstanceInAiFreeCreditsExperiment: isAiCreditsExperimentEnabled,
204
- withOpenAiFreeCredits: settingsStore.aiCreditsQuota
205
- });
205
+ const easyAiWorkflowJson = getEasyAiWorkflowJson();
206
206
  const isEasyAIWorkflow = workflow2.meta.templateId === easyAiWorkflowJson.meta.templateId;
207
207
  if (isEasyAIWorkflow) {
208
208
  telemetry.track(
@@ -216,8 +216,7 @@ function usePushConnection({ router }) {
216
216
  }
217
217
  }
218
218
  const { executionId } = receivedData.data;
219
- const { activeExecutionId } = workflowsStore;
220
- if (executionId !== activeExecutionId) {
219
+ if (executionId !== workflowsStore.activeExecutionId) {
221
220
  if (isRetry !== true) {
222
221
  queuePushMessage(receivedData, retryAttempts);
223
222
  }
@@ -289,7 +288,7 @@ function usePushConnection({ router }) {
289
288
  runDataExecutedErrorMessage = i18n.baseText(
290
289
  "executionsList.showMessage.stopExecution.message",
291
290
  {
292
- interpolate: { activeExecutionId }
291
+ interpolate: { activeExecutionId: workflowsStore.activeExecutionId }
293
292
  }
294
293
  );
295
294
  }
@@ -438,6 +437,7 @@ function usePushConnection({ router }) {
438
437
  if (lastNodeExecuted && iRunExecutionData.resultData.runData[lastNodeExecuted] && !runDataExecutedErrorMessage) {
439
438
  itemsCount = iRunExecutionData.resultData.runData[lastNodeExecuted][0].data.main[0].length;
440
439
  }
440
+ workflowsStore.setActiveExecutionId(null);
441
441
  void useExternalHooks().run("pushConnection.executionFinished", {
442
442
  itemsCount,
443
443
  nodeName: iRunExecutionData.resultData.lastNodeExecuted,
@@ -461,8 +461,7 @@ function usePushConnection({ router }) {
461
461
  void assistantStore.onNodeExecution(pushData);
462
462
  void useSchemaPreviewStore().trackSchemaPreviewExecution(pushData);
463
463
  } else if (receivedData.type === "nodeExecuteBefore") {
464
- const pushData = receivedData.data;
465
- workflowsStore.addExecutingNode(pushData.nodeName);
464
+ workflowsStore.setNodeExecuting(receivedData.data);
466
465
  } else if (receivedData.type === "testWebhookDeleted") {
467
466
  const pushData = receivedData.data;
468
467
  if (pushData.workflowId === workflowsStore.workflowId) {
@@ -473,7 +472,7 @@ function usePushConnection({ router }) {
473
472
  const pushData = receivedData.data;
474
473
  if (pushData.workflowId === workflowsStore.workflowId) {
475
474
  workflowsStore.executionWaitingForWebhook = false;
476
- workflowsStore.activeExecutionId = pushData.executionId;
475
+ workflowsStore.setActiveExecutionId(pushData.executionId);
477
476
  }
478
477
  void processWaitingPushMessages();
479
478
  } else if (receivedData.type === "reloadNodeType") {
@@ -1,4 +1,4 @@
1
- import { g5 as useTestDefinitionStore, r as ref, q as computed } from "./index-D76xStxp.js";
1
+ import { g6 as useTestDefinitionStore, r as ref, q as computed } from "./index-B-Y7sDIj.js";
2
2
  function useTestDefinitionForm() {
3
3
  const evaluationsStore = useTestDefinitionStore();
4
4
  const state = ref({
@@ -1,4 +1,4 @@
1
- import { r as ref, b as useRouter, a7 as useWorkflowHelpers, U as useWorkflowsStore, L as useUIStore, a as useToast, a5 as useNpsSurveyStore, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, ai as useTelemetry, aR as useExternalHooks, c as useI18n, aL as useStorage, dE as LOCAL_STORAGE_ACTIVATION_FLAG, dF as WORKFLOW_ACTIVE_MODAL_KEY } from "./index-D76xStxp.js";
1
+ import { r as ref, b as useRouter, a7 as useWorkflowHelpers, U as useWorkflowsStore, L as useUIStore, a as useToast, a5 as useNpsSurveyStore, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, ai as useTelemetry, aR as useExternalHooks, c as useI18n, aL as useStorage, dD as LOCAL_STORAGE_ACTIVATION_FLAG, dE as WORKFLOW_ACTIVE_MODAL_KEY } from "./index-B-Y7sDIj.js";
2
2
  function useWorkflowActivate() {
3
3
  const updatingWorkflowActivation = ref(false);
4
4
  const router = useRouter();
package/dist/index.html CHANGED
@@ -16,8 +16,8 @@
16
16
  <script>!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag onFeatureFlags reloadFeatureFlags".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[])</script>
17
17
 
18
18
  <title>n8n.io - Workflow Automation</title>
19
- <script type="module" crossorigin src="/{{BASE_PATH}}/assets/index-D76xStxp.js"></script>
20
- <link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-DJ205bL0.css">
19
+ <script type="module" crossorigin src="/{{BASE_PATH}}/assets/index-B-Y7sDIj.js"></script>
20
+ <link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-DwKuVkBg.css">
21
21
  </head>
22
22
  <body>
23
23
  <noscript>