@atom8n/n8n-editor-ui 2.2.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 (310) hide show
  1. package/.stylelintcache +1 -0
  2. package/README.md +59 -0
  3. package/biome.jsonc +8 -0
  4. package/build.log +55 -0
  5. package/data/node-popularity.json +3998 -0
  6. package/dist/assets/AddDataTableModal-UINkk54_.js +1555 -0
  7. package/dist/assets/AgentEditorModal-CVww87TJ.js +358 -0
  8. package/dist/assets/Alert-Dy86dyOr.js +102 -0
  9. package/dist/assets/AnimatedSpinner-DmPN4poP.js +15 -0
  10. package/dist/assets/AnnotationTagsDropdown.ee-BJ7N9lek.js +71 -0
  11. package/dist/assets/AuthView-D2LWHrMp.js +106 -0
  12. package/dist/assets/BottomMenu-CIQiK_dJ.js +532 -0
  13. package/dist/assets/CalendarDate-DgQUMbNo.js +875 -0
  14. package/dist/assets/ChangePasswordView-Z6tUkw0u.js +133 -0
  15. package/dist/assets/ChatAgentAvatar-50YBnv3N.js +67 -0
  16. package/dist/assets/ChatFile-xZxmc2nV.js +146 -0
  17. package/dist/assets/ChatLayout-CTE_5SiM.js +96 -0
  18. package/dist/assets/ChatPersonalAgentsView-BGpHk03K.js +149 -0
  19. package/dist/assets/ChatSidebar-BkVwIypC.js +528 -0
  20. package/dist/assets/ChatView-BbbdeU9x.js +1559 -0
  21. package/dist/assets/ChatWorkflowAgentsView-BtunOxlC.js +116 -0
  22. package/dist/assets/CollectionParameter-BdcPG1lu.js +52 -0
  23. package/dist/assets/CommitMonoVariable-ytizKI8U.woff2 +0 -0
  24. package/dist/assets/CommunityNodeUpdateInfo-C37kca4W.js +273 -0
  25. package/dist/assets/CopyInput-DDZVu2iU.js +74 -0
  26. package/dist/assets/CredentialIcon-8YdTTFZ1.js +80 -0
  27. package/dist/assets/CredentialPicker-DWtj314o.js +293 -0
  28. package/dist/assets/CredentialSelectorModal-DTW2fKh0.js +138 -0
  29. package/dist/assets/CredentialsView-BjUchcCu.js +480 -0
  30. package/dist/assets/DataTableActions-DpAkoxg_.js +95 -0
  31. package/dist/assets/DataTableDetailsView-Coq7zdW5.js +41922 -0
  32. package/dist/assets/DataTableView-Cs-BIkzw.js +293 -0
  33. package/dist/assets/DemoFooter-Cga3jvi-.js +65 -0
  34. package/dist/assets/Draggable-vfvXl9Sp.js +105 -0
  35. package/dist/assets/EmptySharedSectionActionBox-DOXZtTCv.js +36 -0
  36. package/dist/assets/EnterpriseEdition.ee-D_rCFexM.js +15 -0
  37. package/dist/assets/EntityNotFound-3dhTRWsE.js +85 -0
  38. package/dist/assets/EntityUnAuthorised-ChJYZakE.js +66 -0
  39. package/dist/assets/ErrorView-zT9cX76a.js +61 -0
  40. package/dist/assets/EvaluationsRootView-C-OVWYnY.js +523 -0
  41. package/dist/assets/EvaluationsView-CJwJTruc.js +469 -0
  42. package/dist/assets/ExecutionsTime-DEQiyozR.js +573 -0
  43. package/dist/assets/ExecutionsView-Bd5Oh8TH.js +791 -0
  44. package/dist/assets/ExternalSecretsProviderConnectionSwitch.ee-C7Ih-uRo.js +191 -0
  45. package/dist/assets/FixedCollectionParameter-CYuTDW9t.js +496 -0
  46. package/dist/assets/ForgotMyPasswordView-Bs_L9P27.js +102 -0
  47. package/dist/assets/InsightsChartAverageRuntime-Bp3VA8_7.js +62 -0
  48. package/dist/assets/InsightsChartFailed-KPaNWoEr.js +52 -0
  49. package/dist/assets/InsightsChartFailureRate-DE6kE3FM.js +54 -0
  50. package/dist/assets/InsightsChartTimeSaved-auABNZlc.js +68 -0
  51. package/dist/assets/InsightsChartTotal-BKzYRKE7.js +56 -0
  52. package/dist/assets/InsightsDashboard-JWx4W6Db.js +473 -0
  53. package/dist/assets/InsightsPaywall-C8zLLKe8.js +63 -0
  54. package/dist/assets/InsightsSummary-cmN1lHDm.js +210 -0
  55. package/dist/assets/InsightsTableWorkflows-CqcC3IbQ.js +203 -0
  56. package/dist/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
  57. package/dist/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
  58. package/dist/assets/ItemsRenderer-DC8WVyMv.js +922 -0
  59. package/dist/assets/KeyboardShortcutTooltip-D8PAK5JP.js +31 -0
  60. package/dist/assets/LogsPanel-BR06u9RK.js +52 -0
  61. package/dist/assets/LogsPanel-C-_acMHp.js +2325 -0
  62. package/dist/assets/MCPConnectWorkflowsModal-3g8_iUa4.js +303 -0
  63. package/dist/assets/MainHeader-DiQc1edn.js +2153 -0
  64. package/dist/assets/MainSidebar-CoPGG5Ea.js +804 -0
  65. package/dist/assets/MigrationRuleDetail-BAxk1Pvl.js +295 -0
  66. package/dist/assets/MigrationRules-IW9lZMpE.js +285 -0
  67. package/dist/assets/Modal-CIzXlZdZ.js +204 -0
  68. package/dist/assets/ModelByIdSelectorModal-DLvBjzJO.js +115 -0
  69. package/dist/assets/NDVEmptyState-33UoX00I.js +19743 -0
  70. package/dist/assets/NodeCreation-BNzbSWSB.js +240 -0
  71. package/dist/assets/NodeCreator-BftgCKx7.js +1288 -0
  72. package/dist/assets/NodeDetailsView-CsoQCpcF.js +1075 -0
  73. package/dist/assets/NodeDetailsViewV2-C_wNQR_3.js +981 -0
  74. package/dist/assets/NodeIcon-B9VW6tX6.js +87 -0
  75. package/dist/assets/NodeSettings-ZwVip6VR.js +1872 -0
  76. package/dist/assets/NodeView-D4WUEvLB.js +2452 -0
  77. package/dist/assets/OAuthConsentView-DlrUqZbT.js +230 -0
  78. package/dist/assets/PageViewLayout-NT1KPFgy.js +12 -0
  79. package/dist/assets/ParameterInputList-sG2nz-Jo.js +38091 -0
  80. package/dist/assets/PrebuiltAgentTemplatesView-Csi5U8dc.js +154 -0
  81. package/dist/assets/ProjectBreadcrumb-C_XiY7sc.js +98 -0
  82. package/dist/assets/ProjectCardBadge-t_hs7vzx.js +209 -0
  83. package/dist/assets/ProjectHeader-Dq5Ihb26.js +549 -0
  84. package/dist/assets/ProjectIcon-DY8gGuHX.js +64 -0
  85. package/dist/assets/ProjectRoleView-Du-KTrAC.js +435 -0
  86. package/dist/assets/ProjectRolesView-DjxM_y4u.js +239 -0
  87. package/dist/assets/ProjectSettings-C6kWuV21.js +966 -0
  88. package/dist/assets/ProjectSharing-CVUgNWAY.js +262 -0
  89. package/dist/assets/ProjectVariables-CJlAo3dv.js +467 -0
  90. package/dist/assets/ProviderSettingsModal-BUFC2ZLv.js +307 -0
  91. package/dist/assets/PushConnectionTracker-DPBnGV0v.js +27 -0
  92. package/dist/assets/ResolversView-3BdkvvYA.js +209 -0
  93. package/dist/assets/ResourceFiltersDropdown-dgyXpcEX.js +159 -0
  94. package/dist/assets/ResourcesListLayout-qBLtomK6.js +631 -0
  95. package/dist/assets/RunDataHtml-BrW0OQra.js +7 -0
  96. package/dist/assets/RunDataHtml-Cleia4Cj.js +40 -0
  97. package/dist/assets/RunDataJson-uxkrhYRK.js +227 -0
  98. package/dist/assets/RunDataJsonActions-DkPk7E8d.js +5007 -0
  99. package/dist/assets/RunDataParsedAiContent-CtPRjig-.js +26 -0
  100. package/dist/assets/RunDataParsedAiContent-WAuqLQ5M.js +192 -0
  101. package/dist/assets/RunDataSearch-YBWUr93C.js +141 -0
  102. package/dist/assets/RunDataTable-DcXaBynW.js +631 -0
  103. package/dist/assets/SamlOnboarding-BTdQ_hr3.js +78 -0
  104. package/dist/assets/SaveButton-D5sQSxIk.js +89 -0
  105. package/dist/assets/SelectedItemsInfo-BHZ-NvF5.js +58 -0
  106. package/dist/assets/SettingsApiView-IfZTMXx1.js +313 -0
  107. package/dist/assets/SettingsChatHubView-gWh2X6vX.js +285 -0
  108. package/dist/assets/SettingsCommunityNodesView-D8VQtpGY.js +349 -0
  109. package/dist/assets/SettingsExternalSecrets-CpMc7mkW.js +233 -0
  110. package/dist/assets/SettingsLdapView-CU5a2MAy.js +2553 -0
  111. package/dist/assets/SettingsLogStreamingView-uojTe-oX.js +375 -0
  112. package/dist/assets/SettingsMCPView-B5Swp1C_.js +1214 -0
  113. package/dist/assets/SettingsPersonalView-Cr3aGood.js +402 -0
  114. package/dist/assets/SettingsSourceControl-DXOvFDEY.js +547 -0
  115. package/dist/assets/SettingsSso-27MfU1HV.js +1032 -0
  116. package/dist/assets/SettingsUsageAndPlan-DqIO-G46.js +419 -0
  117. package/dist/assets/SettingsUsersView-DfHB4_Kh.js +833 -0
  118. package/dist/assets/SettingsView-C4sA7Uny.js +90 -0
  119. package/dist/assets/SetupTemplateFormStep-BmiSzZin.js +258 -0
  120. package/dist/assets/SetupView-VORZ-L_u.js +112 -0
  121. package/dist/assets/SetupWorkflowCredentialsButton-DTmkOAW5.js +73 -0
  122. package/dist/assets/SetupWorkflowFromTemplateView-B9NupdJE.js +286 -0
  123. package/dist/assets/SeverityTag-CX1qTTNA.js +45 -0
  124. package/dist/assets/SigninView-D9_Pm16j.js +358 -0
  125. package/dist/assets/SignoutView-BFsjEAGz.js +19 -0
  126. package/dist/assets/SignupView-Am4ot0QZ.js +137 -0
  127. package/dist/assets/SkeletonAgentCard-C5TL-h8F.js +191 -0
  128. package/dist/assets/TagsDropdown-Bvx_Hd6Q.js +230 -0
  129. package/dist/assets/TemplateCard-CyQ1GuVz.js +105 -0
  130. package/dist/assets/TemplateDetails-CZRusTxE.js +124 -0
  131. package/dist/assets/TemplateList-DKvbwuiY.js +333 -0
  132. package/dist/assets/TemplatesCollectionView-D8dxU8By.js +184 -0
  133. package/dist/assets/TemplatesSearchView-CebC_GLs.js +1230 -0
  134. package/dist/assets/TemplatesView-025CcmIY.js +57 -0
  135. package/dist/assets/TemplatesWorkflowView-C2JfwJAn.js +170 -0
  136. package/dist/assets/TestRunDetailView-Ck78TTWO.js +395 -0
  137. package/dist/assets/TextWithHighlights-BxumwGnv.js +57 -0
  138. package/dist/assets/TimeAgo-C6EN4lCs.js +123 -0
  139. package/dist/assets/ToolsSelectorModal-8QJoUvRL.js +368 -0
  140. package/dist/assets/TriggerPanel-B6pacLkk.js +1225 -0
  141. package/dist/assets/VirtualSchema-B3zGe_8b.js +2402 -0
  142. package/dist/assets/VirtualSchema-Dkh0Cu5z.js +37 -0
  143. package/dist/assets/VueMarkdown-CQqJL9vK.js +28 -0
  144. package/dist/assets/WorkerView-Caznsljo.js +563 -0
  145. package/dist/assets/WorkflowActivationErrorMessage-CGrfPi9O.js +17 -0
  146. package/dist/assets/WorkflowActivator-BINnz0f7.js +362 -0
  147. package/dist/assets/WorkflowExecutionsInfoAccordion-Dg37yEfT.js +166 -0
  148. package/dist/assets/WorkflowExecutionsLandingPage-V2wdubhK.js +93 -0
  149. package/dist/assets/WorkflowExecutionsPreview-DdJaqYV6.js +616 -0
  150. package/dist/assets/WorkflowExecutionsView-DV8ySTfn.js +808 -0
  151. package/dist/assets/WorkflowHistory-GtaBMzIM.js +973 -0
  152. package/dist/assets/WorkflowLocation-CQ9Sq-2y.js +164 -0
  153. package/dist/assets/WorkflowOnboardingView-C49gt0Jr.js +61 -0
  154. package/dist/assets/WorkflowPreview-CXdvv4Nq.js +186 -0
  155. package/dist/assets/WorkflowTagsDropdown-QwbICWjN.js +71 -0
  156. package/dist/assets/WorkflowsView-B-MWIECO.js +3253 -0
  157. package/dist/assets/_MapCache-CcdIl4Ae.js +363 -0
  158. package/dist/assets/_baseOrderBy-N8Be_6z6.js +2989 -0
  159. package/dist/assets/_initCloneObject-viQQyT6o.js +80 -0
  160. package/dist/assets/_plugin-vue_export-helper-BwBpWJRZ.js +6 -0
  161. package/dist/assets/aiTemplatesStarterCollection.store-nL9nePkK.js +656 -0
  162. package/dist/assets/apiKeys.store-BhOFmP2j.js +51 -0
  163. package/dist/assets/assistant.store-CNywgN4S.js +518 -0
  164. package/dist/assets/auth.eventBus-CWXS0Qp7.js +5 -0
  165. package/dist/assets/banners.store-CGEcBTDn.js +195 -0
  166. package/dist/assets/builder.store-Czk2ipDE.js +31417 -0
  167. package/dist/assets/buttons.esm-yintpW2E.js +364 -0
  168. package/dist/assets/chart-CNvyywtJ.js +10958 -0
  169. package/dist/assets/chartjs.utils-BAE52Cv9.js +155 -0
  170. package/dist/assets/chat.store-290YeyrQ.js +865 -0
  171. package/dist/assets/chatPanel.store-NDaawEZL.js +118 -0
  172. package/dist/assets/chunk-6z4oVpB-.js +36 -0
  173. package/dist/assets/col-Cmt4cmuS.js +158 -0
  174. package/dist/assets/constants-C8OH4tTq.js +106256 -0
  175. package/dist/assets/constants-DMrsrpD7.js +32 -0
  176. package/dist/assets/core-B9gt_4yk.js +4 -0
  177. package/dist/assets/core-CP5FY4aX.js +1202 -0
  178. package/dist/assets/core-CRbPymLT.js +9741 -0
  179. package/dist/assets/dataTable.store-DmipQsol.js +207 -0
  180. package/dist/assets/date-picker-2IDsBs2n.js +4115 -0
  181. package/dist/assets/dateFormatter-ik4-9_9r.js +33 -0
  182. package/dist/assets/dateformat-hG8NERse.js +181 -0
  183. package/dist/assets/dialog-lMho1TD8.js +425 -0
  184. package/dist/assets/dist-Cw46Is-h.js +151 -0
  185. package/dist/assets/doppler-B__k0MeW.webp +0 -0
  186. package/dist/assets/element-icons-B-tDfklg.woff +0 -0
  187. package/dist/assets/element-icons-_lZGOqcG.ttf +0 -0
  188. package/dist/assets/empty-BuGRxzl4.js +2210 -0
  189. package/dist/assets/en-CF30SCh2.js +95 -0
  190. package/dist/assets/en-DyO2pPiC.js +2 -0
  191. package/dist/assets/es-BkUFJVtD.js +43338 -0
  192. package/dist/assets/evaluation.constants-GYAwmJnh.js +284 -0
  193. package/dist/assets/executions.store-B9uRYwgv.js +205 -0
  194. package/dist/assets/exports-Crx_gvt_.js +1799 -0
  195. package/dist/assets/externalSecrets.ee.store-BJh4a_6G.js +118 -0
  196. package/dist/assets/fileUtils-CRWqOQje.js +20 -0
  197. package/dist/assets/folders.store-yAFj-5Vl.js +235 -0
  198. package/dist/assets/get-BcEmeOxn.js +2781 -0
  199. package/dist/assets/index-SL8542zQ.js +28372 -0
  200. package/dist/assets/insights.constants-BkJCYJTL.js +55 -0
  201. package/dist/assets/insights.store-BFc3kDUo.js +61 -0
  202. package/dist/assets/insights.utils-CcLXdrrz.js +77 -0
  203. package/dist/assets/isEmpty-C3XXoHqJ.js +35216 -0
  204. package/dist/assets/languageModules-9LyndCqU.js +13862 -0
  205. package/dist/assets/logStreaming.store-IZhWe_VK.js +190 -0
  206. package/dist/assets/mcp.constants-_Jcn7fPq.js +10 -0
  207. package/dist/assets/mcp.store-B9yfcAN9.js +116 -0
  208. package/dist/assets/merge-DhuTk1HM.js +564 -0
  209. package/dist/assets/nodeCreator.store-Bpnrwp2l.js +5444 -0
  210. package/dist/assets/nodeIcon-D6X-ENYt.js +102 -0
  211. package/dist/assets/nodeTransforms-RzcOM0v2.js +42 -0
  212. package/dist/assets/orderBy-Cu9F9DU_.js +15 -0
  213. package/dist/assets/path-browserify-RUt2u7iT.js +328 -0
  214. package/dist/assets/personalizedTemplatesV3.store-BGYp0YBN.js +334 -0
  215. package/dist/assets/pickBy-UI0Jt4wC.js +18 -0
  216. package/dist/assets/preload-helper-dyVz7ck7.js +59 -0
  217. package/dist/assets/radio-CSce3UT0.js +262 -0
  218. package/dist/assets/readyToRun.store-YEMvPUqo.js +626 -0
  219. package/dist/assets/readyToRunWorkflows.store-G3srgIze.js +1319 -0
  220. package/dist/assets/retry-BgHaYzbB.js +23 -0
  221. package/dist/assets/roles.store-CRf_zJTb.js +51 -0
  222. package/dist/assets/router-DNpzz3GH.js +2631 -0
  223. package/dist/assets/sanitize-html-CbW56HUN.js +10758 -0
  224. package/dist/assets/schemaPreview.store-DUgN1yVE.js +113 -0
  225. package/dist/assets/semver-Bk6DGseV.js +1306 -0
  226. package/dist/assets/smartDecimal-DAZl4HKA.js +6 -0
  227. package/dist/assets/sortByProperty-Cn7iGKYu.js +8 -0
  228. package/dist/assets/sourceControl.eventBus-D47xXSc_.js +3 -0
  229. package/dist/assets/sqlite3-DBpDb1lf.wasm +0 -0
  230. package/dist/assets/sqlite3-opfs-async-proxy-vVtmDGHX.js +461 -0
  231. package/dist/assets/sqlite3-worker1-bundler-friendly-DLarOZDL.js +9405 -0
  232. package/dist/assets/src-jviYSG25.js +55454 -0
  233. package/dist/assets/sso.store-DyApJwhx.js +139 -0
  234. package/dist/assets/style-E3CrYFV8.css +111829 -0
  235. package/dist/assets/table-we1DjFMV.js +3944 -0
  236. package/dist/assets/templateActions-bEDSARw2.js +65 -0
  237. package/dist/assets/templateTransforms-BHWiRbtR.js +43 -0
  238. package/dist/assets/truncate-C0KYt7i3.js +4176 -0
  239. package/dist/assets/typescript.worker-CYqLvLHh.js +152048 -0
  240. package/dist/assets/uniqBy-xDyuCRP0.js +10 -0
  241. package/dist/assets/usage.store-CU5J_nGm.js +100 -0
  242. package/dist/assets/useActions-B1JckIRj.js +255 -0
  243. package/dist/assets/useBeforeUnload-DiDkvI8p.js +40 -0
  244. package/dist/assets/useCanvasMapping-BXT7rGhC.js +12570 -0
  245. package/dist/assets/useCanvasOperations-8ULLtMkY.js +1765 -0
  246. package/dist/assets/useClipboard-DvjhVHqJ.js +39 -0
  247. package/dist/assets/useCommandBar-C4tLJbKt.js +2425 -0
  248. package/dist/assets/useCredentialResolvers-BKeFGJnY.js +78 -0
  249. package/dist/assets/useCustomAgent-DpILEt5e.js +471 -0
  250. package/dist/assets/useDebounce-Br5_1ug-.js +147 -0
  251. package/dist/assets/useExecutionData-M5iKsX6z.js +23 -0
  252. package/dist/assets/useExecutionDebugging-8azMzbnd.js +191 -0
  253. package/dist/assets/useExecutionHelpers-BgRRhpBM.js +91 -0
  254. package/dist/assets/useImportCurlCommand-CKiEmX5P.js +8891 -0
  255. package/dist/assets/useIntersectionObserver-BWMwOueh.js +33 -0
  256. package/dist/assets/useKeybindings-B2jfN6rd.js +62 -0
  257. package/dist/assets/useLogsTreeExpand-sZViUfdM.js +843 -0
  258. package/dist/assets/useMcp-DoMOIfqT.js +27 -0
  259. package/dist/assets/usePageRedirectionHelper-DjkznpX6.js +51 -0
  260. package/dist/assets/usePinnedData-BhZkqttf.js +203 -0
  261. package/dist/assets/usePushConnection-DMS-F_IW.js +513 -0
  262. package/dist/assets/useRecentResources-BVORr7eM.js +118 -0
  263. package/dist/assets/useRunWorkflow-LO7ffLp9.js +950 -0
  264. package/dist/assets/useSettingsItems-BhZXwMZn.js +144 -0
  265. package/dist/assets/useTelemetryContext-V6bv4YRq.js +34 -0
  266. package/dist/assets/useWorkflowActivate-DeSmDXjI.js +152 -0
  267. package/dist/assets/useWorkflowsCache-DtcEEAIR.js +179 -0
  268. package/dist/assets/userRoleProvisioning.store-kkSIdeTo.js +33 -0
  269. package/dist/assets/utils-DI7dLldp.js +54 -0
  270. package/dist/assets/versions.store-B1z2OrLE.js +191 -0
  271. package/dist/assets/vue-CydWIhxN.js +4378 -0
  272. package/dist/assets/vue-json-pretty-CsGX66mG.js +1130 -0
  273. package/dist/assets/vue.runtime.esm-bundler-tP5dCd7J.js +7325 -0
  274. package/dist/assets/xml-B_oj6Mle.js +2060 -0
  275. package/dist/favicon.ico +0 -0
  276. package/dist/index.html +157 -0
  277. package/dist/static/base-path.js +1 -0
  278. package/dist/static/community_package_tooltip_img.png +0 -0
  279. package/dist/static/data-mapping-gif.gif +0 -0
  280. package/dist/static/form-grey.svg +1 -0
  281. package/dist/static/google-auth/disabled.dark.png +0 -0
  282. package/dist/static/google-auth/disabled.png +0 -0
  283. package/dist/static/google-auth/focus.dark.png +0 -0
  284. package/dist/static/google-auth/focus.png +0 -0
  285. package/dist/static/google-auth/normal.dark.png +0 -0
  286. package/dist/static/google-auth/normal.png +0 -0
  287. package/dist/static/google-auth/pressed.dark.png +0 -0
  288. package/dist/static/google-auth/pressed.png +0 -0
  289. package/dist/static/n8n-logo.png +0 -0
  290. package/dist/static/og_image.png +0 -0
  291. package/dist/static/open-ai.svg +1 -0
  292. package/dist/static/openChat.png +0 -0
  293. package/dist/static/posthog.init.js +41 -0
  294. package/dist/static/prefers-color-scheme.css +5 -0
  295. package/dist/static/webhook-icon.svg +1 -0
  296. package/dist/tree-sitter-bash.wasm +0 -0
  297. package/dist/tree-sitter.wasm +0 -0
  298. package/eslint.config.mjs +59 -0
  299. package/index.html +45 -0
  300. package/index.js +0 -0
  301. package/package.json +147 -0
  302. package/postcss.config.cjs +6 -0
  303. package/scripts/fetch-node-popularity.mjs +102 -0
  304. package/stylelint.config.mjs +9 -0
  305. package/tailwind.config.js +8 -0
  306. package/tsconfig.json +36 -0
  307. package/vite/i18n-locales-hmr-helpers.ts +19 -0
  308. package/vite/source-map-js-shim.ts +1 -0
  309. package/vite/vite-plugin-node-popularity.mts +32 -0
  310. package/vite.config.mts +304 -0
@@ -0,0 +1,1555 @@
1
+ import { C as computed, Cn as toDisplayString, D as createElementBlock, E as createCommentVNode, Gt as unref, It as ref, J as onBeforeUnmount, Jt as NOOP, M as createVNode, P as defineComponent, T as createBlock, Vt as toRef, W as mergeProps, Z as onMounted, _ as Fragment, _t as watch, an as isFunction, at as renderSlot, bn as normalizeStyle, bt as withCtx, ct as resolveDynamicComponent, et as openBlock, h as withModifiers, it as renderList, j as createTextVNode, k as createSlots, m as withKeys, mn as isString, nn as isArray, nt as provide, r as TransitionGroup, tn as init_shared_esm_bundler, un as isPlainObject, vn as normalizeClass, w as createBaseVNode, z as inject, zt as shallowRef } from "./vue.runtime.esm-bundler-tP5dCd7J.js";
2
+ import { rt as useI18n } from "./core-CRbPymLT.js";
3
+ import { $ as N8nInputLabel_default, $t as _getSymbols_default, Cn as N8nIcon_default, J as N8nSelect_default, Q as N8nCheckbox_default, Qt as _baseGetAllKeys_default, Xt as _getTag_default, Y as N8nOption_default, Zt as _getAllKeys_default, an as keys_default, bn as N8nText_default, dn as isBuffer_default, en as stubArray_default, in as _arrayPush_default, ln as _nodeUtil_default, qt as isEqual_default, tn as _Stack_default, un as _baseUnary_default, xn as N8nButton_default, yt as N8nInput_default } from "./src-jviYSG25.js";
4
+ import "./en-CF30SCh2.js";
5
+ import "./preload-helper-dyVz7ck7.js";
6
+ import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BwBpWJRZ.js";
7
+ import { $ as buildProps, $t as _assignValue_default, A as useLocale, At as debugWarn, Ht as isNil_default, M as mutable, Mt as entriesOf, St as zoom_in_default, W as withInstall, cn as isObject_default, ct as circle_close_default, dn as isObjectLike_default, et as definePropType, h as useFormDisabled, jt as throwError, k as useNamespace, ln as isArray_default, mt as document_default, ot as check_default, pn as _Symbol_default, pt as delete_default, st as circle_check_default, ut as close_default, v as ElIcon, xn as useVModel, xt as warning_filled_default, y as _export_sfc } from "./truncate-C0KYt7i3.js";
8
+ import { a as _getPrototype_default, c as _copyArray_default, i as _cloneBuffer_default, n as _cloneTypedArray_default, o as keysIn_default, r as _cloneArrayBuffer_default, s as _copyObject_default, t as _initCloneObject_default } from "./_initCloneObject-viQQyT6o.js";
9
+ import { aa as useUIStore, k as useTelemetry, y as useToast } from "./builder.store-Czk2ipDE.js";
10
+ import "./empty-BuGRxzl4.js";
11
+ import { n as ElRadioGroup, t as ElRadio } from "./radio-CSce3UT0.js";
12
+ import "./dialog-lMho1TD8.js";
13
+ import { _ as useRoute, v as useRouter } from "./get-BcEmeOxn.js";
14
+ import "./sanitize-html-CbW56HUN.js";
15
+ import "./CalendarDate-DgQUMbNo.js";
16
+ import "./path-browserify-RUt2u7iT.js";
17
+ import "./_MapCache-CcdIl4Ae.js";
18
+ import { Gr as PROJECT_DATA_TABLES, Or as DATA_TABLE_DETAILS, Ui as DATA_TABLE_SYSTEM_COLUMNS, ti as dataTableColumnNameSchema } from "./constants-C8OH4tTq.js";
19
+ import "./merge-DhuTk1HM.js";
20
+ import "./_baseOrderBy-N8Be_6z6.js";
21
+ import "./dateformat-hG8NERse.js";
22
+ import "./useDebounce-Br5_1ug-.js";
23
+ import { t as useDataTableStore } from "./dataTable.store-DmipQsol.js";
24
+ import { t as Modal_default } from "./Modal-CIzXlZdZ.js";
25
+ function arrayEach(array, iteratee) {
26
+ var index = -1, length = array == null ? 0 : array.length;
27
+ while (++index < length) if (iteratee(array[index], index, array) === false) break;
28
+ return array;
29
+ }
30
+ var _arrayEach_default = arrayEach;
31
+ function baseAssign(object, source) {
32
+ return object && _copyObject_default(source, keys_default(source), object);
33
+ }
34
+ var _baseAssign_default = baseAssign;
35
+ function baseAssignIn(object, source) {
36
+ return object && _copyObject_default(source, keysIn_default(source), object);
37
+ }
38
+ var _baseAssignIn_default = baseAssignIn;
39
+ function copySymbols(source, object) {
40
+ return _copyObject_default(source, _getSymbols_default(source), object);
41
+ }
42
+ var _copySymbols_default = copySymbols;
43
+ var _getSymbolsIn_default = !Object.getOwnPropertySymbols ? stubArray_default : function(object) {
44
+ var result = [];
45
+ while (object) {
46
+ _arrayPush_default(result, _getSymbols_default(object));
47
+ object = _getPrototype_default(object);
48
+ }
49
+ return result;
50
+ };
51
+ function copySymbolsIn(source, object) {
52
+ return _copyObject_default(source, _getSymbolsIn_default(source), object);
53
+ }
54
+ var _copySymbolsIn_default = copySymbolsIn;
55
+ function getAllKeysIn(object) {
56
+ return _baseGetAllKeys_default(object, keysIn_default, _getSymbolsIn_default);
57
+ }
58
+ var _getAllKeysIn_default = getAllKeysIn;
59
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
60
+ function initCloneArray(array) {
61
+ var length = array.length, result = new array.constructor(length);
62
+ if (length && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) {
63
+ result.index = array.index;
64
+ result.input = array.input;
65
+ }
66
+ return result;
67
+ }
68
+ var _initCloneArray_default = initCloneArray;
69
+ function cloneDataView(dataView, isDeep) {
70
+ var buffer = isDeep ? _cloneArrayBuffer_default(dataView.buffer) : dataView.buffer;
71
+ return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
72
+ }
73
+ var _cloneDataView_default = cloneDataView;
74
+ var reFlags = /\w*$/;
75
+ function cloneRegExp(regexp) {
76
+ var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
77
+ result.lastIndex = regexp.lastIndex;
78
+ return result;
79
+ }
80
+ var _cloneRegExp_default = cloneRegExp;
81
+ var symbolProto = _Symbol_default ? _Symbol_default.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
82
+ function cloneSymbol(symbol) {
83
+ return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
84
+ }
85
+ var _cloneSymbol_default = cloneSymbol;
86
+ var boolTag$1 = "[object Boolean]", dateTag$1 = "[object Date]", mapTag$2 = "[object Map]", numberTag$1 = "[object Number]", regexpTag$1 = "[object RegExp]", setTag$2 = "[object Set]", stringTag$1 = "[object String]", symbolTag$1 = "[object Symbol]";
87
+ var arrayBufferTag$1 = "[object ArrayBuffer]", dataViewTag$1 = "[object DataView]", float32Tag$1 = "[object Float32Array]", float64Tag$1 = "[object Float64Array]", int8Tag$1 = "[object Int8Array]", int16Tag$1 = "[object Int16Array]", int32Tag$1 = "[object Int32Array]", uint8Tag$1 = "[object Uint8Array]", uint8ClampedTag$1 = "[object Uint8ClampedArray]", uint16Tag$1 = "[object Uint16Array]", uint32Tag$1 = "[object Uint32Array]";
88
+ function initCloneByTag(object, tag, isDeep) {
89
+ var Ctor = object.constructor;
90
+ switch (tag) {
91
+ case arrayBufferTag$1: return _cloneArrayBuffer_default(object);
92
+ case boolTag$1:
93
+ case dateTag$1: return new Ctor(+object);
94
+ case dataViewTag$1: return _cloneDataView_default(object, isDeep);
95
+ case float32Tag$1:
96
+ case float64Tag$1:
97
+ case int8Tag$1:
98
+ case int16Tag$1:
99
+ case int32Tag$1:
100
+ case uint8Tag$1:
101
+ case uint8ClampedTag$1:
102
+ case uint16Tag$1:
103
+ case uint32Tag$1: return _cloneTypedArray_default(object, isDeep);
104
+ case mapTag$2: return new Ctor();
105
+ case numberTag$1:
106
+ case stringTag$1: return new Ctor(object);
107
+ case regexpTag$1: return _cloneRegExp_default(object);
108
+ case setTag$2: return new Ctor();
109
+ case symbolTag$1: return _cloneSymbol_default(object);
110
+ }
111
+ }
112
+ var _initCloneByTag_default = initCloneByTag;
113
+ var mapTag$1 = "[object Map]";
114
+ function baseIsMap(value) {
115
+ return isObjectLike_default(value) && _getTag_default(value) == mapTag$1;
116
+ }
117
+ var _baseIsMap_default = baseIsMap;
118
+ var nodeIsMap = _nodeUtil_default && _nodeUtil_default.isMap;
119
+ var isMap_default = nodeIsMap ? _baseUnary_default(nodeIsMap) : _baseIsMap_default;
120
+ var setTag$1 = "[object Set]";
121
+ function baseIsSet(value) {
122
+ return isObjectLike_default(value) && _getTag_default(value) == setTag$1;
123
+ }
124
+ var _baseIsSet_default = baseIsSet;
125
+ var nodeIsSet = _nodeUtil_default && _nodeUtil_default.isSet;
126
+ var isSet_default = nodeIsSet ? _baseUnary_default(nodeIsSet) : _baseIsSet_default;
127
+ var CLONE_DEEP_FLAG$1 = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG$1 = 4;
128
+ var argsTag = "[object Arguments]", arrayTag = "[object Array]", boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", objectTag = "[object Object]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", weakMapTag = "[object WeakMap]";
129
+ var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
130
+ var cloneableTags = {};
131
+ cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
132
+ cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
133
+ function baseClone(value, bitmask, customizer, key, object, stack) {
134
+ var result, isDeep = bitmask & CLONE_DEEP_FLAG$1, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG$1;
135
+ if (customizer) result = object ? customizer(value, key, object, stack) : customizer(value);
136
+ if (result !== void 0) return result;
137
+ if (!isObject_default(value)) return value;
138
+ var isArr = isArray_default(value);
139
+ if (isArr) {
140
+ result = _initCloneArray_default(value);
141
+ if (!isDeep) return _copyArray_default(value, result);
142
+ } else {
143
+ var tag = _getTag_default(value), isFunc = tag == funcTag || tag == genTag;
144
+ if (isBuffer_default(value)) return _cloneBuffer_default(value, isDeep);
145
+ if (tag == objectTag || tag == argsTag || isFunc && !object) {
146
+ result = isFlat || isFunc ? {} : _initCloneObject_default(value);
147
+ if (!isDeep) return isFlat ? _copySymbolsIn_default(value, _baseAssignIn_default(result, value)) : _copySymbols_default(value, _baseAssign_default(result, value));
148
+ } else {
149
+ if (!cloneableTags[tag]) return object ? value : {};
150
+ result = _initCloneByTag_default(value, tag, isDeep);
151
+ }
152
+ }
153
+ stack || (stack = new _Stack_default());
154
+ var stacked = stack.get(value);
155
+ if (stacked) return stacked;
156
+ stack.set(value, result);
157
+ if (isSet_default(value)) value.forEach(function(subValue) {
158
+ result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
159
+ });
160
+ else if (isMap_default(value)) value.forEach(function(subValue, key$1) {
161
+ result.set(key$1, baseClone(subValue, bitmask, customizer, key$1, value, stack));
162
+ });
163
+ var props = isArr ? void 0 : (isFull ? isFlat ? _getAllKeysIn_default : _getAllKeys_default : isFlat ? keysIn_default : keys_default)(value);
164
+ _arrayEach_default(props || value, function(subValue, key$1) {
165
+ if (props) {
166
+ key$1 = subValue;
167
+ subValue = value[key$1];
168
+ }
169
+ _assignValue_default(result, key$1, baseClone(subValue, bitmask, customizer, key$1, value, stack));
170
+ });
171
+ return result;
172
+ }
173
+ var _baseClone_default = baseClone;
174
+ var CLONE_DEEP_FLAG = 1, CLONE_SYMBOLS_FLAG = 4;
175
+ function cloneDeep(value) {
176
+ return _baseClone_default(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
177
+ }
178
+ var cloneDeep_default = cloneDeep;
179
+ var progressProps = buildProps({
180
+ type: {
181
+ type: String,
182
+ default: "line",
183
+ values: [
184
+ "line",
185
+ "circle",
186
+ "dashboard"
187
+ ]
188
+ },
189
+ percentage: {
190
+ type: Number,
191
+ default: 0,
192
+ validator: (val) => val >= 0 && val <= 100
193
+ },
194
+ status: {
195
+ type: String,
196
+ default: "",
197
+ values: [
198
+ "",
199
+ "success",
200
+ "exception",
201
+ "warning"
202
+ ]
203
+ },
204
+ indeterminate: {
205
+ type: Boolean,
206
+ default: false
207
+ },
208
+ duration: {
209
+ type: Number,
210
+ default: 3
211
+ },
212
+ strokeWidth: {
213
+ type: Number,
214
+ default: 6
215
+ },
216
+ strokeLinecap: {
217
+ type: definePropType(String),
218
+ default: "round"
219
+ },
220
+ textInside: {
221
+ type: Boolean,
222
+ default: false
223
+ },
224
+ width: {
225
+ type: Number,
226
+ default: 126
227
+ },
228
+ showText: {
229
+ type: Boolean,
230
+ default: true
231
+ },
232
+ color: {
233
+ type: definePropType([
234
+ String,
235
+ Array,
236
+ Function
237
+ ]),
238
+ default: ""
239
+ },
240
+ striped: Boolean,
241
+ stripedFlow: Boolean,
242
+ format: {
243
+ type: definePropType(Function),
244
+ default: (percentage) => `${percentage}%`
245
+ }
246
+ });
247
+ init_shared_esm_bundler();
248
+ var _hoisted_1$3 = ["aria-valuenow"];
249
+ var _hoisted_2$2 = { viewBox: "0 0 100 100" };
250
+ var _hoisted_3$1 = [
251
+ "d",
252
+ "stroke",
253
+ "stroke-linecap",
254
+ "stroke-width"
255
+ ];
256
+ var _hoisted_4$1 = [
257
+ "d",
258
+ "stroke",
259
+ "opacity",
260
+ "stroke-linecap",
261
+ "stroke-width"
262
+ ];
263
+ var _hoisted_5$1 = { key: 0 };
264
+ var ElProgress = withInstall(/* @__PURE__ */ _export_sfc(/* @__PURE__ */ defineComponent({
265
+ ...defineComponent({ name: "ElProgress" }),
266
+ props: progressProps,
267
+ setup(__props) {
268
+ const props = __props;
269
+ const STATUS_COLOR_MAP = {
270
+ success: "#13ce66",
271
+ exception: "#ff4949",
272
+ warning: "#e6a23c",
273
+ default: "#20a0ff"
274
+ };
275
+ const ns = useNamespace("progress");
276
+ const barStyle = computed(() => ({
277
+ width: `${props.percentage}%`,
278
+ animationDuration: `${props.duration}s`,
279
+ backgroundColor: getCurrentColor(props.percentage)
280
+ }));
281
+ const relativeStrokeWidth = computed(() => (props.strokeWidth / props.width * 100).toFixed(1));
282
+ const radius = computed(() => {
283
+ if (["circle", "dashboard"].includes(props.type)) return Number.parseInt(`${50 - Number.parseFloat(relativeStrokeWidth.value) / 2}`, 10);
284
+ return 0;
285
+ });
286
+ const trackPath = computed(() => {
287
+ const r = radius.value;
288
+ const isDashboard = props.type === "dashboard";
289
+ return `
290
+ M 50 50
291
+ m 0 ${isDashboard ? "" : "-"}${r}
292
+ a ${r} ${r} 0 1 1 0 ${isDashboard ? "-" : ""}${r * 2}
293
+ a ${r} ${r} 0 1 1 0 ${isDashboard ? "" : "-"}${r * 2}
294
+ `;
295
+ });
296
+ const perimeter = computed(() => 2 * Math.PI * radius.value);
297
+ const rate = computed(() => props.type === "dashboard" ? .75 : 1);
298
+ const strokeDashoffset = computed(() => {
299
+ return `${-1 * perimeter.value * (1 - rate.value) / 2}px`;
300
+ });
301
+ const trailPathStyle = computed(() => ({
302
+ strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,
303
+ strokeDashoffset: strokeDashoffset.value
304
+ }));
305
+ const circlePathStyle = computed(() => ({
306
+ strokeDasharray: `${perimeter.value * rate.value * (props.percentage / 100)}px, ${perimeter.value}px`,
307
+ strokeDashoffset: strokeDashoffset.value,
308
+ transition: "stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"
309
+ }));
310
+ const stroke = computed(() => {
311
+ let ret;
312
+ if (props.color) ret = getCurrentColor(props.percentage);
313
+ else ret = STATUS_COLOR_MAP[props.status] || STATUS_COLOR_MAP.default;
314
+ return ret;
315
+ });
316
+ const statusIcon = computed(() => {
317
+ if (props.status === "warning") return warning_filled_default;
318
+ if (props.type === "line") return props.status === "success" ? circle_check_default : circle_close_default;
319
+ else return props.status === "success" ? check_default : close_default;
320
+ });
321
+ const progressTextSize = computed(() => {
322
+ return props.type === "line" ? 12 + props.strokeWidth * .4 : props.width * .111111 + 2;
323
+ });
324
+ const content$1 = computed(() => props.format(props.percentage));
325
+ function getColors(color) {
326
+ const span = 100 / color.length;
327
+ return color.map((seriesColor, index) => {
328
+ if (isString(seriesColor)) return {
329
+ color: seriesColor,
330
+ percentage: (index + 1) * span
331
+ };
332
+ return seriesColor;
333
+ }).sort((a, b) => a.percentage - b.percentage);
334
+ }
335
+ const getCurrentColor = (percentage) => {
336
+ var _a;
337
+ const { color } = props;
338
+ if (isFunction(color)) return color(percentage);
339
+ else if (isString(color)) return color;
340
+ else {
341
+ const colors = getColors(color);
342
+ for (const color2 of colors) if (color2.percentage > percentage) return color2.color;
343
+ return (_a = colors[colors.length - 1]) == null ? void 0 : _a.color;
344
+ }
345
+ };
346
+ return (_ctx, _cache) => {
347
+ return openBlock(), createElementBlock("div", {
348
+ class: normalizeClass([
349
+ unref(ns).b(),
350
+ unref(ns).m(_ctx.type),
351
+ unref(ns).is(_ctx.status),
352
+ {
353
+ [unref(ns).m("without-text")]: !_ctx.showText,
354
+ [unref(ns).m("text-inside")]: _ctx.textInside
355
+ }
356
+ ]),
357
+ role: "progressbar",
358
+ "aria-valuenow": _ctx.percentage,
359
+ "aria-valuemin": "0",
360
+ "aria-valuemax": "100"
361
+ }, [_ctx.type === "line" ? (openBlock(), createElementBlock("div", {
362
+ key: 0,
363
+ class: normalizeClass(unref(ns).b("bar"))
364
+ }, [createBaseVNode("div", {
365
+ class: normalizeClass(unref(ns).be("bar", "outer")),
366
+ style: normalizeStyle({ height: `${_ctx.strokeWidth}px` })
367
+ }, [createBaseVNode("div", {
368
+ class: normalizeClass([
369
+ unref(ns).be("bar", "inner"),
370
+ { [unref(ns).bem("bar", "inner", "indeterminate")]: _ctx.indeterminate },
371
+ { [unref(ns).bem("bar", "inner", "striped")]: _ctx.striped },
372
+ { [unref(ns).bem("bar", "inner", "striped-flow")]: _ctx.stripedFlow }
373
+ ]),
374
+ style: normalizeStyle(unref(barStyle))
375
+ }, [(_ctx.showText || _ctx.$slots.default) && _ctx.textInside ? (openBlock(), createElementBlock("div", {
376
+ key: 0,
377
+ class: normalizeClass(unref(ns).be("bar", "innerText"))
378
+ }, [renderSlot(_ctx.$slots, "default", { percentage: _ctx.percentage }, () => [createBaseVNode("span", null, toDisplayString(unref(content$1)), 1)])], 2)) : createCommentVNode("v-if", true)], 6)], 6)], 2)) : (openBlock(), createElementBlock("div", {
379
+ key: 1,
380
+ class: normalizeClass(unref(ns).b("circle")),
381
+ style: normalizeStyle({
382
+ height: `${_ctx.width}px`,
383
+ width: `${_ctx.width}px`
384
+ })
385
+ }, [(openBlock(), createElementBlock("svg", _hoisted_2$2, [createBaseVNode("path", {
386
+ class: normalizeClass(unref(ns).be("circle", "track")),
387
+ d: unref(trackPath),
388
+ stroke: `var(${unref(ns).cssVarName("fill-color-light")}, #e5e9f2)`,
389
+ "stroke-linecap": _ctx.strokeLinecap,
390
+ "stroke-width": unref(relativeStrokeWidth),
391
+ fill: "none",
392
+ style: normalizeStyle(unref(trailPathStyle))
393
+ }, null, 14, _hoisted_3$1), createBaseVNode("path", {
394
+ class: normalizeClass(unref(ns).be("circle", "path")),
395
+ d: unref(trackPath),
396
+ stroke: unref(stroke),
397
+ fill: "none",
398
+ opacity: _ctx.percentage ? 1 : 0,
399
+ "stroke-linecap": _ctx.strokeLinecap,
400
+ "stroke-width": unref(relativeStrokeWidth),
401
+ style: normalizeStyle(unref(circlePathStyle))
402
+ }, null, 14, _hoisted_4$1)]))], 6)), (_ctx.showText || _ctx.$slots.default) && !_ctx.textInside ? (openBlock(), createElementBlock("div", {
403
+ key: 2,
404
+ class: normalizeClass(unref(ns).e("text")),
405
+ style: normalizeStyle({ fontSize: `${unref(progressTextSize)}px` })
406
+ }, [renderSlot(_ctx.$slots, "default", { percentage: _ctx.percentage }, () => [!_ctx.status ? (openBlock(), createElementBlock("span", _hoisted_5$1, toDisplayString(unref(content$1)), 1)) : (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {
407
+ default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(unref(statusIcon))))]),
408
+ _: 1
409
+ }))])], 6)) : createCommentVNode("v-if", true)], 10, _hoisted_1$3);
410
+ };
411
+ }
412
+ }), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/progress/src/progress.vue"]]));
413
+ var uploadContextKey = Symbol("uploadContextKey");
414
+ init_shared_esm_bundler();
415
+ var SCOPE$1 = "ElUpload";
416
+ var UploadAjaxError = class extends Error {
417
+ constructor(message, status, method, url) {
418
+ super(message);
419
+ this.name = "UploadAjaxError";
420
+ this.status = status;
421
+ this.method = method;
422
+ this.url = url;
423
+ }
424
+ };
425
+ function getError(action, option, xhr) {
426
+ let msg;
427
+ if (xhr.response) msg = `${xhr.response.error || xhr.response}`;
428
+ else if (xhr.responseText) msg = `${xhr.responseText}`;
429
+ else msg = `fail to ${option.method} ${action} ${xhr.status}`;
430
+ return new UploadAjaxError(msg, xhr.status, option.method, action);
431
+ }
432
+ function getBody(xhr) {
433
+ const text = xhr.responseText || xhr.response;
434
+ if (!text) return text;
435
+ try {
436
+ return JSON.parse(text);
437
+ } catch (e) {
438
+ return text;
439
+ }
440
+ }
441
+ var ajaxUpload = (option) => {
442
+ if (typeof XMLHttpRequest === "undefined") throwError(SCOPE$1, "XMLHttpRequest is undefined");
443
+ const xhr = new XMLHttpRequest();
444
+ const action = option.action;
445
+ if (xhr.upload) xhr.upload.addEventListener("progress", (evt) => {
446
+ const progressEvt = evt;
447
+ progressEvt.percent = evt.total > 0 ? evt.loaded / evt.total * 100 : 0;
448
+ option.onProgress(progressEvt);
449
+ });
450
+ const formData = new FormData();
451
+ if (option.data) for (const [key, value] of Object.entries(option.data)) if (isArray(value) && value.length) formData.append(key, ...value);
452
+ else formData.append(key, value);
453
+ formData.append(option.filename, option.file, option.file.name);
454
+ xhr.addEventListener("error", () => {
455
+ option.onError(getError(action, option, xhr));
456
+ });
457
+ xhr.addEventListener("load", () => {
458
+ if (xhr.status < 200 || xhr.status >= 300) return option.onError(getError(action, option, xhr));
459
+ option.onSuccess(getBody(xhr));
460
+ });
461
+ xhr.open(option.method, action, true);
462
+ if (option.withCredentials && "withCredentials" in xhr) xhr.withCredentials = true;
463
+ const headers = option.headers || {};
464
+ if (headers instanceof Headers) headers.forEach((value, key) => xhr.setRequestHeader(key, value));
465
+ else for (const [key, value] of Object.entries(headers)) {
466
+ if (isNil_default(value)) continue;
467
+ xhr.setRequestHeader(key, String(value));
468
+ }
469
+ xhr.send(formData);
470
+ return xhr;
471
+ };
472
+ init_shared_esm_bundler();
473
+ var uploadListTypes = [
474
+ "text",
475
+ "picture",
476
+ "picture-card"
477
+ ];
478
+ var fileId = 1;
479
+ var genFileId = () => Date.now() + fileId++;
480
+ var uploadBaseProps = buildProps({
481
+ action: {
482
+ type: String,
483
+ default: "#"
484
+ },
485
+ headers: { type: definePropType(Object) },
486
+ method: {
487
+ type: String,
488
+ default: "post"
489
+ },
490
+ data: {
491
+ type: definePropType([
492
+ Object,
493
+ Function,
494
+ Promise
495
+ ]),
496
+ default: () => mutable({})
497
+ },
498
+ multiple: {
499
+ type: Boolean,
500
+ default: false
501
+ },
502
+ name: {
503
+ type: String,
504
+ default: "file"
505
+ },
506
+ drag: {
507
+ type: Boolean,
508
+ default: false
509
+ },
510
+ withCredentials: Boolean,
511
+ showFileList: {
512
+ type: Boolean,
513
+ default: true
514
+ },
515
+ accept: {
516
+ type: String,
517
+ default: ""
518
+ },
519
+ fileList: {
520
+ type: definePropType(Array),
521
+ default: () => mutable([])
522
+ },
523
+ autoUpload: {
524
+ type: Boolean,
525
+ default: true
526
+ },
527
+ listType: {
528
+ type: String,
529
+ values: uploadListTypes,
530
+ default: "text"
531
+ },
532
+ httpRequest: {
533
+ type: definePropType(Function),
534
+ default: ajaxUpload
535
+ },
536
+ disabled: Boolean,
537
+ limit: Number
538
+ });
539
+ var uploadProps = buildProps({
540
+ ...uploadBaseProps,
541
+ beforeUpload: {
542
+ type: definePropType(Function),
543
+ default: NOOP
544
+ },
545
+ beforeRemove: { type: definePropType(Function) },
546
+ onRemove: {
547
+ type: definePropType(Function),
548
+ default: NOOP
549
+ },
550
+ onChange: {
551
+ type: definePropType(Function),
552
+ default: NOOP
553
+ },
554
+ onPreview: {
555
+ type: definePropType(Function),
556
+ default: NOOP
557
+ },
558
+ onSuccess: {
559
+ type: definePropType(Function),
560
+ default: NOOP
561
+ },
562
+ onProgress: {
563
+ type: definePropType(Function),
564
+ default: NOOP
565
+ },
566
+ onError: {
567
+ type: definePropType(Function),
568
+ default: NOOP
569
+ },
570
+ onExceed: {
571
+ type: definePropType(Function),
572
+ default: NOOP
573
+ }
574
+ });
575
+ init_shared_esm_bundler();
576
+ var uploadListProps = buildProps({
577
+ files: {
578
+ type: definePropType(Array),
579
+ default: () => mutable([])
580
+ },
581
+ disabled: {
582
+ type: Boolean,
583
+ default: false
584
+ },
585
+ handlePreview: {
586
+ type: definePropType(Function),
587
+ default: NOOP
588
+ },
589
+ listType: {
590
+ type: String,
591
+ values: uploadListTypes,
592
+ default: "text"
593
+ }
594
+ });
595
+ var uploadListEmits = { remove: (file) => !!file };
596
+ var _hoisted_1$2 = ["onKeydown"];
597
+ var _hoisted_2$1 = ["src"];
598
+ var _hoisted_3 = ["onClick"];
599
+ var _hoisted_4 = ["title"];
600
+ var _hoisted_5 = ["onClick"];
601
+ var _hoisted_6 = ["onClick"];
602
+ var UploadList = /* @__PURE__ */ _export_sfc(/* @__PURE__ */ defineComponent({
603
+ ...defineComponent({ name: "ElUploadList" }),
604
+ props: uploadListProps,
605
+ emits: uploadListEmits,
606
+ setup(__props, { emit }) {
607
+ const props = __props;
608
+ const { t } = useLocale();
609
+ const nsUpload = useNamespace("upload");
610
+ const nsIcon = useNamespace("icon");
611
+ const nsList = useNamespace("list");
612
+ const disabled = useFormDisabled();
613
+ const focusing = ref(false);
614
+ const containerKls = computed(() => [
615
+ nsUpload.b("list"),
616
+ nsUpload.bm("list", props.listType),
617
+ nsUpload.is("disabled", props.disabled)
618
+ ]);
619
+ const handleRemove = (file) => {
620
+ emit("remove", file);
621
+ };
622
+ return (_ctx, _cache) => {
623
+ return openBlock(), createBlock(TransitionGroup, {
624
+ tag: "ul",
625
+ class: normalizeClass(unref(containerKls)),
626
+ name: unref(nsList).b()
627
+ }, {
628
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.files, (file) => {
629
+ return openBlock(), createElementBlock("li", {
630
+ key: file.uid || file.name,
631
+ class: normalizeClass([
632
+ unref(nsUpload).be("list", "item"),
633
+ unref(nsUpload).is(file.status),
634
+ { focusing: focusing.value }
635
+ ]),
636
+ tabindex: "0",
637
+ onKeydown: withKeys(($event) => !unref(disabled) && handleRemove(file), ["delete"]),
638
+ onFocus: _cache[0] || (_cache[0] = ($event) => focusing.value = true),
639
+ onBlur: _cache[1] || (_cache[1] = ($event) => focusing.value = false),
640
+ onClick: _cache[2] || (_cache[2] = ($event) => focusing.value = false)
641
+ }, [renderSlot(_ctx.$slots, "default", { file }, () => [
642
+ _ctx.listType === "picture" || file.status !== "uploading" && _ctx.listType === "picture-card" ? (openBlock(), createElementBlock("img", {
643
+ key: 0,
644
+ class: normalizeClass(unref(nsUpload).be("list", "item-thumbnail")),
645
+ src: file.url,
646
+ alt: ""
647
+ }, null, 10, _hoisted_2$1)) : createCommentVNode("v-if", true),
648
+ file.status === "uploading" || _ctx.listType !== "picture-card" ? (openBlock(), createElementBlock("div", {
649
+ key: 1,
650
+ class: normalizeClass(unref(nsUpload).be("list", "item-info"))
651
+ }, [createBaseVNode("a", {
652
+ class: normalizeClass(unref(nsUpload).be("list", "item-name")),
653
+ onClick: withModifiers(($event) => _ctx.handlePreview(file), ["prevent"])
654
+ }, [createVNode(unref(ElIcon), { class: normalizeClass(unref(nsIcon).m("document")) }, {
655
+ default: withCtx(() => [createVNode(unref(document_default))]),
656
+ _: 1
657
+ }, 8, ["class"]), createBaseVNode("span", {
658
+ class: normalizeClass(unref(nsUpload).be("list", "item-file-name")),
659
+ title: file.name
660
+ }, toDisplayString(file.name), 11, _hoisted_4)], 10, _hoisted_3), file.status === "uploading" ? (openBlock(), createBlock(unref(ElProgress), {
661
+ key: 0,
662
+ type: _ctx.listType === "picture-card" ? "circle" : "line",
663
+ "stroke-width": _ctx.listType === "picture-card" ? 6 : 2,
664
+ percentage: Number(file.percentage),
665
+ style: normalizeStyle(_ctx.listType === "picture-card" ? "" : "margin-top: 0.5rem")
666
+ }, null, 8, [
667
+ "type",
668
+ "stroke-width",
669
+ "percentage",
670
+ "style"
671
+ ])) : createCommentVNode("v-if", true)], 2)) : createCommentVNode("v-if", true),
672
+ createBaseVNode("label", { class: normalizeClass(unref(nsUpload).be("list", "item-status-label")) }, [_ctx.listType === "text" ? (openBlock(), createBlock(unref(ElIcon), {
673
+ key: 0,
674
+ class: normalizeClass([unref(nsIcon).m("upload-success"), unref(nsIcon).m("circle-check")])
675
+ }, {
676
+ default: withCtx(() => [createVNode(unref(circle_check_default))]),
677
+ _: 1
678
+ }, 8, ["class"])) : ["picture-card", "picture"].includes(_ctx.listType) ? (openBlock(), createBlock(unref(ElIcon), {
679
+ key: 1,
680
+ class: normalizeClass([unref(nsIcon).m("upload-success"), unref(nsIcon).m("check")])
681
+ }, {
682
+ default: withCtx(() => [createVNode(unref(check_default))]),
683
+ _: 1
684
+ }, 8, ["class"])) : createCommentVNode("v-if", true)], 2),
685
+ !unref(disabled) ? (openBlock(), createBlock(unref(ElIcon), {
686
+ key: 2,
687
+ class: normalizeClass(unref(nsIcon).m("close")),
688
+ onClick: ($event) => handleRemove(file)
689
+ }, {
690
+ default: withCtx(() => [createVNode(unref(close_default))]),
691
+ _: 2
692
+ }, 1032, ["class", "onClick"])) : createCommentVNode("v-if", true),
693
+ createCommentVNode(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"),
694
+ createCommentVNode(" This is a bug which needs to be fixed "),
695
+ createCommentVNode(" TODO: Fix the incorrect navigation interaction "),
696
+ !unref(disabled) ? (openBlock(), createElementBlock("i", {
697
+ key: 3,
698
+ class: normalizeClass(unref(nsIcon).m("close-tip"))
699
+ }, toDisplayString(unref(t)("el.upload.deleteTip")), 3)) : createCommentVNode("v-if", true),
700
+ _ctx.listType === "picture-card" ? (openBlock(), createElementBlock("span", {
701
+ key: 4,
702
+ class: normalizeClass(unref(nsUpload).be("list", "item-actions"))
703
+ }, [createBaseVNode("span", {
704
+ class: normalizeClass(unref(nsUpload).be("list", "item-preview")),
705
+ onClick: ($event) => _ctx.handlePreview(file)
706
+ }, [createVNode(unref(ElIcon), { class: normalizeClass(unref(nsIcon).m("zoom-in")) }, {
707
+ default: withCtx(() => [createVNode(unref(zoom_in_default))]),
708
+ _: 1
709
+ }, 8, ["class"])], 10, _hoisted_5), !unref(disabled) ? (openBlock(), createElementBlock("span", {
710
+ key: 0,
711
+ class: normalizeClass(unref(nsUpload).be("list", "item-delete")),
712
+ onClick: ($event) => handleRemove(file)
713
+ }, [createVNode(unref(ElIcon), { class: normalizeClass(unref(nsIcon).m("delete")) }, {
714
+ default: withCtx(() => [createVNode(unref(delete_default))]),
715
+ _: 1
716
+ }, 8, ["class"])], 10, _hoisted_6)) : createCommentVNode("v-if", true)], 2)) : createCommentVNode("v-if", true)
717
+ ])], 42, _hoisted_1$2);
718
+ }), 128)), renderSlot(_ctx.$slots, "append")]),
719
+ _: 3
720
+ }, 8, ["class", "name"]);
721
+ };
722
+ }
723
+ }), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-list.vue"]]);
724
+ init_shared_esm_bundler();
725
+ var uploadDraggerProps = buildProps({ disabled: {
726
+ type: Boolean,
727
+ default: false
728
+ } });
729
+ var uploadDraggerEmits = { file: (file) => isArray(file) };
730
+ var _hoisted_1$1 = ["onDrop", "onDragover"];
731
+ var COMPONENT_NAME = "ElUploadDrag";
732
+ var UploadDragger = /* @__PURE__ */ _export_sfc(/* @__PURE__ */ defineComponent({
733
+ ...defineComponent({ name: COMPONENT_NAME }),
734
+ props: uploadDraggerProps,
735
+ emits: uploadDraggerEmits,
736
+ setup(__props, { emit }) {
737
+ const uploaderContext = inject(uploadContextKey);
738
+ if (!uploaderContext) throwError(COMPONENT_NAME, "usage: <el-upload><el-upload-dragger /></el-upload>");
739
+ const ns = useNamespace("upload");
740
+ const dragover = ref(false);
741
+ const disabled = useFormDisabled();
742
+ const onDrop = (e) => {
743
+ if (disabled.value) return;
744
+ dragover.value = false;
745
+ e.stopPropagation();
746
+ const files = Array.from(e.dataTransfer.files);
747
+ const accept = uploaderContext.accept.value;
748
+ if (!accept) {
749
+ emit("file", files);
750
+ return;
751
+ }
752
+ emit("file", files.filter((file) => {
753
+ const { type, name } = file;
754
+ const extension = name.includes(".") ? `.${name.split(".").pop()}` : "";
755
+ const baseType = type.replace(/\/.*$/, "");
756
+ return accept.split(",").map((type2) => type2.trim()).filter((type2) => type2).some((acceptedType) => {
757
+ if (acceptedType.startsWith(".")) return extension === acceptedType;
758
+ if (/\/\*$/.test(acceptedType)) return baseType === acceptedType.replace(/\/\*$/, "");
759
+ if (/^[^/]+\/[^/]+$/.test(acceptedType)) return type === acceptedType;
760
+ return false;
761
+ });
762
+ }));
763
+ };
764
+ const onDragover = () => {
765
+ if (!disabled.value) dragover.value = true;
766
+ };
767
+ return (_ctx, _cache) => {
768
+ return openBlock(), createElementBlock("div", {
769
+ class: normalizeClass([unref(ns).b("dragger"), unref(ns).is("dragover", dragover.value)]),
770
+ onDrop: withModifiers(onDrop, ["prevent"]),
771
+ onDragover: withModifiers(onDragover, ["prevent"]),
772
+ onDragleave: _cache[0] || (_cache[0] = withModifiers(($event) => dragover.value = false, ["prevent"]))
773
+ }, [renderSlot(_ctx.$slots, "default")], 42, _hoisted_1$1);
774
+ };
775
+ }
776
+ }), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-dragger.vue"]]);
777
+ init_shared_esm_bundler();
778
+ var uploadContentProps = buildProps({
779
+ ...uploadBaseProps,
780
+ beforeUpload: {
781
+ type: definePropType(Function),
782
+ default: NOOP
783
+ },
784
+ onRemove: {
785
+ type: definePropType(Function),
786
+ default: NOOP
787
+ },
788
+ onStart: {
789
+ type: definePropType(Function),
790
+ default: NOOP
791
+ },
792
+ onSuccess: {
793
+ type: definePropType(Function),
794
+ default: NOOP
795
+ },
796
+ onProgress: {
797
+ type: definePropType(Function),
798
+ default: NOOP
799
+ },
800
+ onError: {
801
+ type: definePropType(Function),
802
+ default: NOOP
803
+ },
804
+ onExceed: {
805
+ type: definePropType(Function),
806
+ default: NOOP
807
+ }
808
+ });
809
+ init_shared_esm_bundler();
810
+ var _hoisted_1 = ["onKeydown"];
811
+ var _hoisted_2 = [
812
+ "name",
813
+ "multiple",
814
+ "accept"
815
+ ];
816
+ var UploadContent = /* @__PURE__ */ _export_sfc(/* @__PURE__ */ defineComponent({
817
+ ...defineComponent({
818
+ name: "ElUploadContent",
819
+ inheritAttrs: false
820
+ }),
821
+ props: uploadContentProps,
822
+ setup(__props, { expose }) {
823
+ const props = __props;
824
+ const ns = useNamespace("upload");
825
+ const disabled = useFormDisabled();
826
+ const requests = shallowRef({});
827
+ const inputRef = shallowRef();
828
+ const uploadFiles = (files) => {
829
+ if (files.length === 0) return;
830
+ const { autoUpload, limit, fileList, multiple, onStart, onExceed } = props;
831
+ if (limit && fileList.length + files.length > limit) {
832
+ onExceed(files, fileList);
833
+ return;
834
+ }
835
+ if (!multiple) files = files.slice(0, 1);
836
+ for (const file of files) {
837
+ const rawFile = file;
838
+ rawFile.uid = genFileId();
839
+ onStart(rawFile);
840
+ if (autoUpload) upload(rawFile);
841
+ }
842
+ };
843
+ const upload = async (rawFile) => {
844
+ inputRef.value.value = "";
845
+ if (!props.beforeUpload) return doUpload(rawFile);
846
+ let hookResult;
847
+ let beforeData = {};
848
+ try {
849
+ const originData = props.data;
850
+ const beforeUploadPromise = props.beforeUpload(rawFile);
851
+ beforeData = isPlainObject(props.data) ? cloneDeep_default(props.data) : props.data;
852
+ hookResult = await beforeUploadPromise;
853
+ if (isPlainObject(props.data) && isEqual_default(originData, beforeData)) beforeData = cloneDeep_default(props.data);
854
+ } catch (e) {
855
+ hookResult = false;
856
+ }
857
+ if (hookResult === false) {
858
+ props.onRemove(rawFile);
859
+ return;
860
+ }
861
+ let file = rawFile;
862
+ if (hookResult instanceof Blob) if (hookResult instanceof File) file = hookResult;
863
+ else file = new File([hookResult], rawFile.name, { type: rawFile.type });
864
+ doUpload(Object.assign(file, { uid: rawFile.uid }), beforeData);
865
+ };
866
+ const resolveData = async (data, rawFile) => {
867
+ if (isFunction(data)) return data(rawFile);
868
+ return data;
869
+ };
870
+ const doUpload = async (rawFile, beforeData) => {
871
+ const { headers, data, method, withCredentials, name: filename, action, onProgress, onSuccess, onError, httpRequest } = props;
872
+ try {
873
+ beforeData = await resolveData(beforeData != null ? beforeData : data, rawFile);
874
+ } catch (e) {
875
+ props.onRemove(rawFile);
876
+ return;
877
+ }
878
+ const { uid } = rawFile;
879
+ const options = {
880
+ headers: headers || {},
881
+ withCredentials,
882
+ file: rawFile,
883
+ data: beforeData,
884
+ method,
885
+ filename,
886
+ action,
887
+ onProgress: (evt) => {
888
+ onProgress(evt, rawFile);
889
+ },
890
+ onSuccess: (res) => {
891
+ onSuccess(res, rawFile);
892
+ delete requests.value[uid];
893
+ },
894
+ onError: (err) => {
895
+ onError(err, rawFile);
896
+ delete requests.value[uid];
897
+ }
898
+ };
899
+ const request = httpRequest(options);
900
+ requests.value[uid] = request;
901
+ if (request instanceof Promise) request.then(options.onSuccess, options.onError);
902
+ };
903
+ const handleChange = (e) => {
904
+ const files = e.target.files;
905
+ if (!files) return;
906
+ uploadFiles(Array.from(files));
907
+ };
908
+ const handleClick = () => {
909
+ if (!disabled.value) {
910
+ inputRef.value.value = "";
911
+ inputRef.value.click();
912
+ }
913
+ };
914
+ const handleKeydown = () => {
915
+ handleClick();
916
+ };
917
+ const abort = (file) => {
918
+ entriesOf(requests.value).filter(file ? ([uid]) => String(file.uid) === uid : () => true).forEach(([uid, req]) => {
919
+ if (req instanceof XMLHttpRequest) req.abort();
920
+ delete requests.value[uid];
921
+ });
922
+ };
923
+ expose({
924
+ abort,
925
+ upload
926
+ });
927
+ return (_ctx, _cache) => {
928
+ return openBlock(), createElementBlock("div", {
929
+ class: normalizeClass([
930
+ unref(ns).b(),
931
+ unref(ns).m(_ctx.listType),
932
+ unref(ns).is("drag", _ctx.drag)
933
+ ]),
934
+ tabindex: "0",
935
+ onClick: handleClick,
936
+ onKeydown: withKeys(withModifiers(handleKeydown, ["self"]), ["enter", "space"])
937
+ }, [_ctx.drag ? (openBlock(), createBlock(UploadDragger, {
938
+ key: 0,
939
+ disabled: unref(disabled),
940
+ onFile: uploadFiles
941
+ }, {
942
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
943
+ _: 3
944
+ }, 8, ["disabled"])) : renderSlot(_ctx.$slots, "default", { key: 1 }), createBaseVNode("input", {
945
+ ref_key: "inputRef",
946
+ ref: inputRef,
947
+ class: normalizeClass(unref(ns).e("input")),
948
+ name: _ctx.name,
949
+ multiple: _ctx.multiple,
950
+ accept: _ctx.accept,
951
+ type: "file",
952
+ onChange: handleChange,
953
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"]))
954
+ }, null, 42, _hoisted_2)], 42, _hoisted_1);
955
+ };
956
+ }
957
+ }), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-content.vue"]]);
958
+ var SCOPE = "ElUpload";
959
+ var revokeFileObjectURL = (file) => {
960
+ var _a;
961
+ if ((_a = file.url) == null ? void 0 : _a.startsWith("blob:")) URL.revokeObjectURL(file.url);
962
+ };
963
+ var useHandlers = (props, uploadRef) => {
964
+ const uploadFiles = useVModel(props, "fileList", void 0, { passive: true });
965
+ const getFile = (rawFile) => uploadFiles.value.find((file) => file.uid === rawFile.uid);
966
+ function abort(file) {
967
+ var _a;
968
+ (_a = uploadRef.value) == null || _a.abort(file);
969
+ }
970
+ function clearFiles(states = [
971
+ "ready",
972
+ "uploading",
973
+ "success",
974
+ "fail"
975
+ ]) {
976
+ uploadFiles.value = uploadFiles.value.filter((row) => !states.includes(row.status));
977
+ }
978
+ const handleError = (err, rawFile) => {
979
+ const file = getFile(rawFile);
980
+ if (!file) return;
981
+ console.error(err);
982
+ file.status = "fail";
983
+ uploadFiles.value.splice(uploadFiles.value.indexOf(file), 1);
984
+ props.onError(err, file, uploadFiles.value);
985
+ props.onChange(file, uploadFiles.value);
986
+ };
987
+ const handleProgress = (evt, rawFile) => {
988
+ const file = getFile(rawFile);
989
+ if (!file) return;
990
+ props.onProgress(evt, file, uploadFiles.value);
991
+ file.status = "uploading";
992
+ file.percentage = Math.round(evt.percent);
993
+ };
994
+ const handleSuccess = (response, rawFile) => {
995
+ const file = getFile(rawFile);
996
+ if (!file) return;
997
+ file.status = "success";
998
+ file.response = response;
999
+ props.onSuccess(response, file, uploadFiles.value);
1000
+ props.onChange(file, uploadFiles.value);
1001
+ };
1002
+ const handleStart = (file) => {
1003
+ if (isNil_default(file.uid)) file.uid = genFileId();
1004
+ const uploadFile = {
1005
+ name: file.name,
1006
+ percentage: 0,
1007
+ status: "ready",
1008
+ size: file.size,
1009
+ raw: file,
1010
+ uid: file.uid
1011
+ };
1012
+ if (props.listType === "picture-card" || props.listType === "picture") try {
1013
+ uploadFile.url = URL.createObjectURL(file);
1014
+ } catch (err) {
1015
+ debugWarn(SCOPE, err.message);
1016
+ props.onError(err, uploadFile, uploadFiles.value);
1017
+ }
1018
+ uploadFiles.value = [...uploadFiles.value, uploadFile];
1019
+ props.onChange(uploadFile, uploadFiles.value);
1020
+ };
1021
+ const handleRemove = async (file) => {
1022
+ const uploadFile = file instanceof File ? getFile(file) : file;
1023
+ if (!uploadFile) throwError(SCOPE, "file to be removed not found");
1024
+ const doRemove = (file2) => {
1025
+ abort(file2);
1026
+ const fileList = uploadFiles.value;
1027
+ fileList.splice(fileList.indexOf(file2), 1);
1028
+ props.onRemove(file2, fileList);
1029
+ revokeFileObjectURL(file2);
1030
+ };
1031
+ if (props.beforeRemove) {
1032
+ if (await props.beforeRemove(uploadFile, uploadFiles.value) !== false) doRemove(uploadFile);
1033
+ } else doRemove(uploadFile);
1034
+ };
1035
+ function submit() {
1036
+ uploadFiles.value.filter(({ status }) => status === "ready").forEach(({ raw }) => {
1037
+ var _a;
1038
+ return raw && ((_a = uploadRef.value) == null ? void 0 : _a.upload(raw));
1039
+ });
1040
+ }
1041
+ watch(() => props.listType, (val) => {
1042
+ if (val !== "picture-card" && val !== "picture") return;
1043
+ uploadFiles.value = uploadFiles.value.map((file) => {
1044
+ const { raw, url } = file;
1045
+ if (!url && raw) try {
1046
+ file.url = URL.createObjectURL(raw);
1047
+ } catch (err) {
1048
+ props.onError(err, file, uploadFiles.value);
1049
+ }
1050
+ return file;
1051
+ });
1052
+ });
1053
+ watch(uploadFiles, (files) => {
1054
+ for (const file of files) {
1055
+ file.uid || (file.uid = genFileId());
1056
+ file.status || (file.status = "success");
1057
+ }
1058
+ }, {
1059
+ immediate: true,
1060
+ deep: true
1061
+ });
1062
+ return {
1063
+ uploadFiles,
1064
+ abort,
1065
+ clearFiles,
1066
+ handleError,
1067
+ handleProgress,
1068
+ handleStart,
1069
+ handleSuccess,
1070
+ handleRemove,
1071
+ submit,
1072
+ revokeFileObjectURL
1073
+ };
1074
+ };
1075
+ var ElUpload = withInstall(/* @__PURE__ */ _export_sfc(/* @__PURE__ */ defineComponent({
1076
+ ...defineComponent({ name: "ElUpload" }),
1077
+ props: uploadProps,
1078
+ setup(__props, { expose }) {
1079
+ const props = __props;
1080
+ const disabled = useFormDisabled();
1081
+ const uploadRef = shallowRef();
1082
+ const { abort, submit, clearFiles, uploadFiles, handleStart, handleError, handleRemove, handleSuccess, handleProgress, revokeFileObjectURL: revokeFileObjectURL$1 } = useHandlers(props, uploadRef);
1083
+ const isPictureCard = computed(() => props.listType === "picture-card");
1084
+ const uploadContentProps$1 = computed(() => ({
1085
+ ...props,
1086
+ fileList: uploadFiles.value,
1087
+ onStart: handleStart,
1088
+ onProgress: handleProgress,
1089
+ onSuccess: handleSuccess,
1090
+ onError: handleError,
1091
+ onRemove: handleRemove
1092
+ }));
1093
+ onBeforeUnmount(() => {
1094
+ uploadFiles.value.forEach(revokeFileObjectURL$1);
1095
+ });
1096
+ provide(uploadContextKey, { accept: toRef(props, "accept") });
1097
+ expose({
1098
+ abort,
1099
+ submit,
1100
+ clearFiles,
1101
+ handleStart,
1102
+ handleRemove
1103
+ });
1104
+ return (_ctx, _cache) => {
1105
+ return openBlock(), createElementBlock("div", null, [
1106
+ unref(isPictureCard) && _ctx.showFileList ? (openBlock(), createBlock(UploadList, {
1107
+ key: 0,
1108
+ disabled: unref(disabled),
1109
+ "list-type": _ctx.listType,
1110
+ files: unref(uploadFiles),
1111
+ "handle-preview": _ctx.onPreview,
1112
+ onRemove: unref(handleRemove)
1113
+ }, createSlots({
1114
+ append: withCtx(() => [createVNode(UploadContent, mergeProps({
1115
+ ref_key: "uploadRef",
1116
+ ref: uploadRef
1117
+ }, unref(uploadContentProps$1)), {
1118
+ default: withCtx(() => [_ctx.$slots.trigger ? renderSlot(_ctx.$slots, "trigger", { key: 0 }) : createCommentVNode("v-if", true), !_ctx.$slots.trigger && _ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 1 }) : createCommentVNode("v-if", true)]),
1119
+ _: 3
1120
+ }, 16)]),
1121
+ _: 2
1122
+ }, [_ctx.$slots.file ? {
1123
+ name: "default",
1124
+ fn: withCtx(({ file }) => [renderSlot(_ctx.$slots, "file", { file })])
1125
+ } : void 0]), 1032, [
1126
+ "disabled",
1127
+ "list-type",
1128
+ "files",
1129
+ "handle-preview",
1130
+ "onRemove"
1131
+ ])) : createCommentVNode("v-if", true),
1132
+ !unref(isPictureCard) || unref(isPictureCard) && !_ctx.showFileList ? (openBlock(), createBlock(UploadContent, mergeProps({
1133
+ key: 1,
1134
+ ref_key: "uploadRef",
1135
+ ref: uploadRef
1136
+ }, unref(uploadContentProps$1)), {
1137
+ default: withCtx(() => [_ctx.$slots.trigger ? renderSlot(_ctx.$slots, "trigger", { key: 0 }) : createCommentVNode("v-if", true), !_ctx.$slots.trigger && _ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 1 }) : createCommentVNode("v-if", true)]),
1138
+ _: 3
1139
+ }, 16)) : createCommentVNode("v-if", true),
1140
+ _ctx.$slots.trigger ? renderSlot(_ctx.$slots, "default", { key: 2 }) : createCommentVNode("v-if", true),
1141
+ renderSlot(_ctx.$slots, "tip"),
1142
+ !unref(isPictureCard) && _ctx.showFileList ? (openBlock(), createBlock(UploadList, {
1143
+ key: 3,
1144
+ disabled: unref(disabled),
1145
+ "list-type": _ctx.listType,
1146
+ files: unref(uploadFiles),
1147
+ "handle-preview": _ctx.onPreview,
1148
+ onRemove: unref(handleRemove)
1149
+ }, createSlots({ _: 2 }, [_ctx.$slots.file ? {
1150
+ name: "default",
1151
+ fn: withCtx(({ file }) => [renderSlot(_ctx.$slots, "file", { file })])
1152
+ } : void 0]), 1032, [
1153
+ "disabled",
1154
+ "list-type",
1155
+ "files",
1156
+ "handle-preview",
1157
+ "onRemove"
1158
+ ])) : createCommentVNode("v-if", true)
1159
+ ]);
1160
+ };
1161
+ }
1162
+ }), [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload.vue"]]));
1163
+ var AddDataTableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
1164
+ __name: "AddDataTableModal",
1165
+ props: { modalName: {} },
1166
+ setup(__props) {
1167
+ const props = __props;
1168
+ const dataTableStore = useDataTableStore();
1169
+ const uiStore = useUIStore();
1170
+ const route = useRoute();
1171
+ const router = useRouter();
1172
+ const i18n = useI18n();
1173
+ const toast = useToast();
1174
+ const telemetry = useTelemetry();
1175
+ const creationMode = ref("select");
1176
+ const dataTableName = ref("");
1177
+ const inputRef = ref(null);
1178
+ const selectedFile = ref(null);
1179
+ const uploadedFileId = ref(null);
1180
+ const uploadedFileName = ref("");
1181
+ const csvColumns = ref([]);
1182
+ const csvRowCount = ref(0);
1183
+ const csvColumnCount = ref(0);
1184
+ const isUploading = ref(false);
1185
+ const hasHeaders = ref(true);
1186
+ const isUploadHovered = ref(false);
1187
+ const allColumnTypeOptions = [
1188
+ {
1189
+ label: "String",
1190
+ value: "string"
1191
+ },
1192
+ {
1193
+ label: "Number",
1194
+ value: "number"
1195
+ },
1196
+ {
1197
+ label: "Boolean",
1198
+ value: "boolean"
1199
+ },
1200
+ {
1201
+ label: "Datetime",
1202
+ value: "date"
1203
+ }
1204
+ ];
1205
+ const isColumnType = (value) => {
1206
+ return allColumnTypeOptions.some((option) => option.value === value);
1207
+ };
1208
+ const getColumnTypeOptions = (compatibleTypes) => {
1209
+ if (!compatibleTypes || compatibleTypes.length === 0) return allColumnTypeOptions;
1210
+ return allColumnTypeOptions.filter((option) => compatibleTypes.includes(option.value));
1211
+ };
1212
+ const validateColumnName = (columnName) => {
1213
+ if (DATA_TABLE_SYSTEM_COLUMNS.includes(columnName)) return i18n.baseText("dataTable.import.systemColumnName", { interpolate: { columnName } });
1214
+ if (!dataTableColumnNameSchema.safeParse(columnName).success) return i18n.baseText("dataTable.import.invalidColumnName");
1215
+ };
1216
+ const hasValidationErrors = computed(() => {
1217
+ if (creationMode.value !== "import") return false;
1218
+ return csvColumns.value.some((column) => column.error !== void 0);
1219
+ });
1220
+ const hasDuplicateNames = computed(() => {
1221
+ if (creationMode.value !== "import") return false;
1222
+ const names = csvColumns.value.map((col) => col.name.toLowerCase());
1223
+ return names.length !== new Set(names).size;
1224
+ });
1225
+ const modalTitle = computed(() => {
1226
+ if (creationMode.value === "import") return "Set data table columns";
1227
+ return i18n.baseText("dataTable.add.title");
1228
+ });
1229
+ const isCreateDisabled = computed(() => {
1230
+ if (creationMode.value === "import") return !dataTableName.value || !uploadedFileId.value || hasValidationErrors.value || hasDuplicateNames.value;
1231
+ return true;
1232
+ });
1233
+ onMounted(() => {
1234
+ setTimeout(() => {
1235
+ inputRef.value?.focus();
1236
+ inputRef.value?.select();
1237
+ }, 0);
1238
+ });
1239
+ const selectedOption = ref("scratch");
1240
+ const proceedFromSelect = async () => {
1241
+ if (!selectedOption.value || !dataTableName.value) return;
1242
+ if (selectedOption.value === "scratch") await onSubmit();
1243
+ else if (selectedOption.value === "import") {
1244
+ if (!selectedFile.value) return;
1245
+ await uploadFile();
1246
+ }
1247
+ };
1248
+ const onColumnNameChange = (index) => {
1249
+ const column = csvColumns.value[index];
1250
+ if (!column) return;
1251
+ column.error = validateColumnName(column.name);
1252
+ if (csvColumns.value.some((col, idx) => idx !== index && col.name.toLowerCase() === column.name.toLowerCase()) && !column.error) column.error = i18n.baseText("dataTable.import.duplicateColumnName");
1253
+ csvColumns.value.forEach((col, idx) => {
1254
+ if (idx !== index) {
1255
+ const otherIsDuplicate = csvColumns.value.some((c, i) => i !== idx && c.name.toLowerCase() === col.name.toLowerCase());
1256
+ const validationError = validateColumnName(col.name);
1257
+ if (otherIsDuplicate && !validationError) col.error = i18n.baseText("dataTable.import.duplicateColumnName");
1258
+ else col.error = validationError;
1259
+ }
1260
+ });
1261
+ };
1262
+ const reset = (clearTableName = false) => {
1263
+ if (clearTableName) dataTableName.value = "";
1264
+ selectedFile.value = null;
1265
+ uploadedFileId.value = null;
1266
+ uploadedFileName.value = "";
1267
+ csvColumns.value = [];
1268
+ csvRowCount.value = 0;
1269
+ csvColumnCount.value = 0;
1270
+ selectedOption.value = "scratch";
1271
+ creationMode.value = "select";
1272
+ };
1273
+ const handleFileChange = (uploadFile$1) => {
1274
+ if (uploadFile$1.raw) selectedFile.value = uploadFile$1.raw;
1275
+ };
1276
+ const uploadFile = async () => {
1277
+ if (!selectedFile.value) return;
1278
+ isUploading.value = true;
1279
+ creationMode.value = "import";
1280
+ try {
1281
+ const uploadResponse = await dataTableStore.uploadCsvFile(selectedFile.value, hasHeaders.value);
1282
+ uploadedFileId.value = uploadResponse.id;
1283
+ uploadedFileName.value = uploadResponse.originalName;
1284
+ csvRowCount.value = uploadResponse.rowCount;
1285
+ csvColumnCount.value = uploadResponse.columnCount;
1286
+ csvColumns.value = uploadResponse.columns.map((col) => {
1287
+ const compatibleTypes = (col.compatibleTypes || [col.type]).filter(isColumnType);
1288
+ const sanitizedName = col.name.replace(/\s+/g, "_");
1289
+ return {
1290
+ name: sanitizedName,
1291
+ type: isColumnType(col.type) ? col.type : "string",
1292
+ compatibleTypes,
1293
+ typeOptions: getColumnTypeOptions(compatibleTypes),
1294
+ error: validateColumnName(sanitizedName)
1295
+ };
1296
+ });
1297
+ if (!dataTableName.value) dataTableName.value = selectedFile.value.name.replace(/\.csv$/i, "");
1298
+ } catch (error) {
1299
+ toast.showError(error, i18n.baseText("dataTable.upload.error"));
1300
+ reset();
1301
+ } finally {
1302
+ isUploading.value = false;
1303
+ }
1304
+ };
1305
+ const onSubmit = async () => {
1306
+ try {
1307
+ let newDataTable;
1308
+ if (selectedOption.value === "scratch") newDataTable = await dataTableStore.createDataTable(dataTableName.value, route.params.projectId);
1309
+ else if (creationMode.value === "import" && uploadedFileId.value) newDataTable = await dataTableStore.createDataTable(dataTableName.value, route.params.projectId, csvColumns.value.map((col) => ({
1310
+ name: col.name,
1311
+ type: col.type
1312
+ })), uploadedFileId.value, hasHeaders.value);
1313
+ if (newDataTable) {
1314
+ telemetry.track("User created data table", {
1315
+ data_table_id: newDataTable.id,
1316
+ data_table_project_id: newDataTable.project?.id,
1317
+ creation_mode: selectedOption.value
1318
+ });
1319
+ reset(true);
1320
+ uiStore.closeModal(props.modalName);
1321
+ router.push({
1322
+ name: DATA_TABLE_DETAILS,
1323
+ params: { id: newDataTable.id }
1324
+ });
1325
+ }
1326
+ } catch (error) {
1327
+ toast.showError(error, i18n.baseText("dataTable.add.error"));
1328
+ }
1329
+ };
1330
+ const goBack = () => {
1331
+ creationMode.value = "select";
1332
+ };
1333
+ const redirectToDataTables = () => {
1334
+ router.replace({ name: PROJECT_DATA_TABLES });
1335
+ };
1336
+ return (_ctx, _cache) => {
1337
+ return openBlock(), createBlock(Modal_default, {
1338
+ name: props.modalName,
1339
+ center: true,
1340
+ width: creationMode.value === "import" ? "700px" : "540px",
1341
+ "min-height": creationMode.value === "import" ? "600px" : void 0,
1342
+ "before-close": redirectToDataTables
1343
+ }, {
1344
+ header: withCtx(() => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.header) }, [createBaseVNode("h2", null, toDisplayString(modalTitle.value), 1)], 2)]),
1345
+ content: withCtx(() => [creationMode.value === "select" ? (openBlock(), createElementBlock("div", {
1346
+ key: 0,
1347
+ class: normalizeClass(_ctx.$style.selectionContent)
1348
+ }, [
1349
+ createVNode(unref(N8nInputLabel_default), {
1350
+ label: unref(i18n).baseText("dataTable.add.input.name.label"),
1351
+ required: true,
1352
+ "input-name": "dataTableNameSelect"
1353
+ }, {
1354
+ default: withCtx(() => [createVNode(unref(N8nInput_default), {
1355
+ ref_key: "inputRef",
1356
+ ref: inputRef,
1357
+ modelValue: dataTableName.value,
1358
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => dataTableName.value = $event),
1359
+ type: "text",
1360
+ placeholder: unref(i18n).baseText("dataTable.add.input.name.placeholder"),
1361
+ "data-test-id": "data-table-name-input-select",
1362
+ name: "dataTableNameSelect"
1363
+ }, null, 8, ["modelValue", "placeholder"])]),
1364
+ _: 1
1365
+ }, 8, ["label"]),
1366
+ createVNode(unref(ElRadioGroup), {
1367
+ modelValue: selectedOption.value,
1368
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => selectedOption.value = $event),
1369
+ class: normalizeClass(_ctx.$style.radioGroup)
1370
+ }, {
1371
+ default: withCtx(() => [createVNode(unref(ElRadio), {
1372
+ label: "scratch",
1373
+ "data-test-id": "create-from-scratch-option"
1374
+ }, {
1375
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("dataTable.add.fromScratch")), 1)]),
1376
+ _: 1
1377
+ }), createVNode(unref(ElRadio), {
1378
+ label: "import",
1379
+ "data-test-id": "import-csv-option"
1380
+ }, {
1381
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("dataTable.add.importCsv")), 1)]),
1382
+ _: 1
1383
+ })]),
1384
+ _: 1
1385
+ }, 8, ["modelValue", "class"]),
1386
+ selectedOption.value === "import" ? (openBlock(), createElementBlock("div", {
1387
+ key: 0,
1388
+ class: normalizeClass(_ctx.$style.uploadSection)
1389
+ }, [createVNode(unref(ElUpload), {
1390
+ class: normalizeClass(_ctx.$style.uploadDemo),
1391
+ drag: "",
1392
+ "auto-upload": false,
1393
+ "show-file-list": false,
1394
+ accept: ".csv",
1395
+ "on-change": handleFileChange,
1396
+ onMouseenter: _cache[2] || (_cache[2] = ($event) => isUploadHovered.value = true),
1397
+ onMouseleave: _cache[3] || (_cache[3] = ($event) => isUploadHovered.value = false)
1398
+ }, {
1399
+ default: withCtx(() => [createVNode(unref(N8nIcon_default), {
1400
+ icon: "file",
1401
+ size: 24,
1402
+ color: isUploadHovered.value ? "text-dark" : "text-light",
1403
+ class: normalizeClass(_ctx.$style.uploadIcon)
1404
+ }, null, 8, ["color", "class"]), selectedFile.value ? (openBlock(), createBlock(unref(N8nText_default), {
1405
+ key: 0,
1406
+ color: isUploadHovered.value ? "text-dark" : "text-light"
1407
+ }, {
1408
+ default: withCtx(() => [createTextVNode(toDisplayString(selectedFile.value?.name), 1)]),
1409
+ _: 1
1410
+ }, 8, ["color"])) : (openBlock(), createBlock(unref(N8nText_default), {
1411
+ key: 1,
1412
+ size: "medium",
1413
+ color: isUploadHovered.value ? "text-dark" : "text-light"
1414
+ }, {
1415
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("dataTable.upload.dropOrClick")), 1)]),
1416
+ _: 1
1417
+ }, 8, ["color"]))]),
1418
+ _: 1
1419
+ }, 8, ["class"]), createVNode(unref(N8nCheckbox_default), {
1420
+ modelValue: hasHeaders.value,
1421
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => hasHeaders.value = $event),
1422
+ label: unref(i18n).baseText("dataTable.upload.hasHeaders"),
1423
+ "data-test-id": "has-headers-checkbox"
1424
+ }, null, 8, ["modelValue", "label"])], 2)) : createCommentVNode("", true)
1425
+ ], 2)) : creationMode.value === "import" ? (openBlock(), createElementBlock("div", {
1426
+ key: 1,
1427
+ class: normalizeClass(_ctx.$style.content)
1428
+ }, [isUploading.value ? (openBlock(), createElementBlock("div", {
1429
+ key: 0,
1430
+ class: normalizeClass(_ctx.$style.uploadingMessage)
1431
+ }, toDisplayString(unref(i18n).baseText("dataTable.upload.uploading")), 3)) : !uploadedFileId.value ? (openBlock(), createElementBlock("div", {
1432
+ key: 1,
1433
+ class: normalizeClass(_ctx.$style.uploadingMessage)
1434
+ }, toDisplayString(unref(i18n).baseText("dataTable.upload.selectFile")), 3)) : uploadedFileId.value && csvColumns.value.length > 0 ? (openBlock(), createElementBlock("div", {
1435
+ key: 2,
1436
+ class: normalizeClass(_ctx.$style.importContent)
1437
+ }, [
1438
+ createBaseVNode("div", { class: normalizeClass(_ctx.$style.successNotice) }, toDisplayString(unref(i18n).baseText("dataTable.upload.success", {
1439
+ adjustToNumber: csvRowCount.value,
1440
+ interpolate: {
1441
+ fileName: uploadedFileName.value,
1442
+ columnCount: csvColumnCount.value,
1443
+ rowCount: csvRowCount.value
1444
+ }
1445
+ })), 3),
1446
+ createBaseVNode("div", { class: normalizeClass(_ctx.$style.columnHeaders) }, [createBaseVNode("div", { class: normalizeClass(_ctx.$style.columnHeaderLabel) }, toDisplayString(unref(i18n).baseText("dataTable.import.columnName")), 3), createBaseVNode("div", { class: normalizeClass(_ctx.$style.columnHeaderLabel) }, toDisplayString(unref(i18n).baseText("dataTable.import.columnType")), 3)], 2),
1447
+ createBaseVNode("div", { class: normalizeClass(_ctx.$style.columnsContainer) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(csvColumns.value, (column, index) => {
1448
+ return openBlock(), createElementBlock("div", {
1449
+ key: index,
1450
+ class: normalizeClass(_ctx.$style.columnItem)
1451
+ }, [createBaseVNode("div", { class: normalizeClass(_ctx.$style.columnInputWrapper) }, [createVNode(unref(N8nInput_default), {
1452
+ modelValue: column.name,
1453
+ "onUpdate:modelValue": [($event) => column.name = $event, ($event) => onColumnNameChange(index)],
1454
+ placeholder: unref(i18n).baseText("dataTable.import.columnNamePlaceholder"),
1455
+ "data-test-id": `column-name-${index}`,
1456
+ class: normalizeClass({ [_ctx.$style.inputError]: column.error })
1457
+ }, null, 8, [
1458
+ "modelValue",
1459
+ "onUpdate:modelValue",
1460
+ "placeholder",
1461
+ "data-test-id",
1462
+ "class"
1463
+ ]), column.error ? (openBlock(), createElementBlock("div", {
1464
+ key: 0,
1465
+ class: normalizeClass(_ctx.$style.columnErrorMessage)
1466
+ }, toDisplayString(column.error), 3)) : createCommentVNode("", true)], 2), createBaseVNode("div", { class: normalizeClass(_ctx.$style.columnTypeWrapper) }, [createVNode(unref(N8nSelect_default), {
1467
+ modelValue: column.type,
1468
+ "onUpdate:modelValue": ($event) => column.type = $event,
1469
+ disabled: column.typeOptions.length === 1,
1470
+ "data-test-id": `column-type-${index}`
1471
+ }, {
1472
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(column.typeOptions, (option) => {
1473
+ return openBlock(), createBlock(unref(N8nOption_default), {
1474
+ key: option.value,
1475
+ value: option.value,
1476
+ label: option.label
1477
+ }, null, 8, ["value", "label"]);
1478
+ }), 128))]),
1479
+ _: 2
1480
+ }, 1032, [
1481
+ "modelValue",
1482
+ "onUpdate:modelValue",
1483
+ "disabled",
1484
+ "data-test-id"
1485
+ ])], 2)], 2);
1486
+ }), 128))], 2)
1487
+ ], 2)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true)]),
1488
+ footer: withCtx(() => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.footer) }, [
1489
+ creationMode.value === "select" ? (openBlock(), createBlock(unref(N8nButton_default), {
1490
+ key: 0,
1491
+ type: "secondary",
1492
+ size: "large",
1493
+ label: unref(i18n).baseText("generic.cancel"),
1494
+ "data-test-id": "cancel-select-button",
1495
+ onClick: redirectToDataTables
1496
+ }, null, 8, ["label"])) : createCommentVNode("", true),
1497
+ creationMode.value === "select" ? (openBlock(), createBlock(unref(N8nButton_default), {
1498
+ key: 1,
1499
+ size: "large",
1500
+ disabled: !dataTableName.value || !selectedOption.value || selectedOption.value === "import" && !selectedFile.value,
1501
+ label: unref(i18n).baseText("generic.create"),
1502
+ "data-test-id": "proceed-from-select-button",
1503
+ onClick: proceedFromSelect
1504
+ }, null, 8, ["disabled", "label"])) : createCommentVNode("", true),
1505
+ creationMode.value === "import" ? (openBlock(), createBlock(unref(N8nButton_default), {
1506
+ key: 2,
1507
+ type: "secondary",
1508
+ size: "large",
1509
+ label: unref(i18n).baseText("generic.back"),
1510
+ "data-test-id": "back-button",
1511
+ onClick: goBack
1512
+ }, null, 8, ["label"])) : createCommentVNode("", true),
1513
+ creationMode.value === "import" ? (openBlock(), createBlock(unref(N8nButton_default), {
1514
+ key: 3,
1515
+ size: "large",
1516
+ disabled: isCreateDisabled.value,
1517
+ label: unref(i18n).baseText("generic.create"),
1518
+ "data-test-id": "confirm-add-data-table-button",
1519
+ onClick: onSubmit
1520
+ }, null, 8, ["disabled", "label"])) : createCommentVNode("", true)
1521
+ ], 2)]),
1522
+ _: 1
1523
+ }, 8, [
1524
+ "name",
1525
+ "width",
1526
+ "min-height"
1527
+ ]);
1528
+ };
1529
+ }
1530
+ });
1531
+ var AddDataTableModal_vue_vue_type_style_index_0_lang_module_default = {
1532
+ header: "_header_1p7kw_123",
1533
+ content: "_content_1p7kw_127",
1534
+ selectionContent: "_selectionContent_1p7kw_132",
1535
+ radioGroup: "_radioGroup_1p7kw_138",
1536
+ uploadSection: "_uploadSection_1p7kw_170",
1537
+ uploadingMessage: "_uploadingMessage_1p7kw_176",
1538
+ importContent: "_importContent_1p7kw_182",
1539
+ successNotice: "_successNotice_1p7kw_188",
1540
+ columnHeaders: "_columnHeaders_1p7kw_197",
1541
+ columnHeaderLabel: "_columnHeaderLabel_1p7kw_204",
1542
+ columnsContainer: "_columnsContainer_1p7kw_210",
1543
+ columnItem: "_columnItem_1p7kw_219",
1544
+ columnInputWrapper: "_columnInputWrapper_1p7kw_226",
1545
+ columnTypeWrapper: "_columnTypeWrapper_1p7kw_232",
1546
+ inputError: "_inputError_1p7kw_237",
1547
+ columnErrorMessage: "_columnErrorMessage_1p7kw_244",
1548
+ footer: "_footer_1p7kw_250",
1549
+ fileSelectedContainer: "_fileSelectedContainer_1p7kw_257",
1550
+ uploadDemo: "_uploadDemo_1p7kw_264",
1551
+ uploadIcon: "_uploadIcon_1p7kw_290",
1552
+ fileName: "_fileName_1p7kw_294"
1553
+ };
1554
+ var AddDataTableModal_default = /* @__PURE__ */ __plugin_vue_export_helper_default(AddDataTableModal_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": AddDataTableModal_vue_vue_type_style_index_0_lang_module_default }]]);
1555
+ export { AddDataTableModal_default as default };